]> git.eshelyaron.com Git - emacs.git/commitdiff
Propertize only perl prototype chars `][$%&*;+@\' as punctuation
authorEvgeni Kolev <evgenysw@gmail.com>
Mon, 27 Mar 2017 06:30:10 +0000 (09:30 +0300)
committerNoam Postavsky <npostavs@gmail.com>
Sat, 1 Apr 2017 21:32:18 +0000 (17:32 -0400)
This prevents variables in signatures such as `sub add ($a, $b)' from
being treated as punctuation.
* lisp/progmodes/perl-mode.el (perl-syntax-propertize-function):
Strictly match only prototype characters as punctuation.  (Bug#26037)

Copyright-paperwork-exempt: yes

lisp/progmodes/perl-mode.el

index a516f07e72fafd0140222124bf5440143624a5f3..b75f32ee200d10a9557359018e4fbc4f01689e0f 100644 (file)
       ;; format statements
       ("^[ \t]*format.*=[ \t]*\\(\n\\)"
        (1 (prog1 "\"" (perl-syntax-propertize-special-constructs end))))
-      ;; Funny things in `sub' arg-specs like `sub myfun ($)' or `sub ($)'.
-      ;; Be careful not to match "sub { (...) ... }".
-      ("\\<sub\\(?:[\s\t\n]+\\(?:\\sw\\|\\s_\\)+\\)?[\s\t\n]*(\\([^)]+\\))"
+      ;; Propertize perl prototype chars `$%&*;+@\[]' as punctuation
+      ;; in `sub' arg-specs like `sub myfun ($)' and `sub ($)'.  But
+      ;; don't match subroutine signatures like `sub add ($a, $b)', or
+      ;; anonymous subs like "sub { (...) ... }".
+      ("\\<sub\\(?:[\s\t\n]+\\(?:\\sw\\|\\s_\\)+\\)?[\s\t\n]*(\\([][$%&*;+@\\]+\\))"
        (1 "."))
       ;; Turn __DATA__ trailer into a comment.
       ("^\\(_\\)_\\(?:DATA\\|END\\)__[ \t]*\\(?:\\(\n\\)#.-\\*-.*perl.*-\\*-\\|\n.*\\)"