In Perl, you can use a backslash before a quoted string to obtain a scalar reference. But Kate's higlighting engine seems to think the backslash-quote is an escaped single quote, and messes subsequent syntax highlighting Reproducible: Always Steps to Reproduce: 1.Put Kate in Perl syntax highlighting mode (for example, by saving the current file with with a .pl extension) 2. Create a scalar reference, with something like my $x = \'string'; 3. Keep writing valid code afterwards Actual Results: The first backslash-quote in \'string' is treated as a single-quote escape, therefore the single quote ending \'string' is not recognized as an actual end of string. All subsequent code is wrongly highlighted, as if the string declared weren't properly end-quoted. Expected Results: The last single quote character in \'string' should be properly recognized as an end of string. I had used scalar references in Perl with previous versions of Kate, and this wrong highlighting had not appeared before
Confirmed. Arch Linux 64-bit Kate 16.04.2 KDE Frameworks 5.23.0 Qt 5.7 xcb wm
Reassigning to syntax highlighting framework.
Git commit d0c698198ec8abc2245ee3d2ab38eabf8f62f444 by Nibaldo González. Committed on 10/09/2018 at 08:19. Pushed by ngonzalez into branch 'master'. Perl: fix brackets, variables, string references and others Summary: ### Fix incorrect bracket closures in RegExp patterns Related: bug 364866, bug 355300, bug 391577 Recursive subgroups are added inside brackets `{}` and `()`, to avoid incorrect closures in RegExp patterns. This correction is in accordance with other text editors (VS Code, Atom, gedit & Sublime Text), which highlight the RegExp patterns in that way. {F6247870} ### Allow strings as scalar references Previously, the characters `"` and `'` were escaped, which caused an erroneous highlight when using references such as `\'string'` (see ref. [1] and [2]). {F6247874} ### Fix incorrect highlighting of variables that start with underscores This error was caused by the order of the RegExpr rules to detect variables: `[@\$][\+\-_]` had priority over `\$[#_][\w_]` (`$_` is a special variable) (ref. [3] & [4]). {F6247872} ### Fix incorrect highlighting of characters in variables Previously, characters such as `()[]}` were highlighted after `*` in some variables, such as `@*)`, causing incorrect closures of brackets. {F6247871} ### Other fixes: * Add variables with carret, such as: `${^Foo}` or `$^V` (ref. [3]). * Add special variables: `%+`, `%-`, `%!` & `%^H` (ref. [3]). * Missing escapes are added, such as `\x{NN..}`, `\o{NN..}` (full list in ref. [5]). **References:** * [1] Perl References: https://gist.github.com/afair/2402068 * [2] PerlMonks. Constant string reference: https://www.perlmonks.org/?node_id=413500 * [3] Perl Programming Documentation. perlvar: https://perldoc.perl.org/perlvar.html * [4] PerlMonks. Perl Special Variables Quick Reference: https://www.perlmonks.org/?node_id=353259 * [5] Perl Programming Documentation. perlrebackslash: https://perldoc.perl.org/perlrebackslash.html FIXED-IN: 5.51.0 Reviewers: cullmann, dhaumann, #framework_syntax_highlighting Reviewed By: cullmann, #framework_syntax_highlighting Subscribers: kwrite-devel, kde-frameworks-devel Tags: #kate, #frameworks Differential Revision: https://phabricator.kde.org/D15397 M +20 -0 autotests/folding/highlight.pl.fold M +20 -0 autotests/html/highlight.pl.html M +20 -0 autotests/input/highlight.pl M +20 -0 autotests/reference/highlight.pl.ref M +58 -13 data/syntax/perl.xml https://commits.kde.org/syntax-highlighting/d0c698198ec8abc2245ee3d2ab38eabf8f62f444