Commit a9bc137f authored by Stefan Monnier's avatar Stefan Monnier
Browse files

(perl-font-lock-syntactic-keywords): Try to be

yet a bit more clever at distinguishing / from /.
parent acc12ef7
2008-06-03 Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/perl-mode.el (perl-font-lock-syntactic-keywords): Try to be
yet a bit more clever at distinguishing / from /.
2008-06-03 Kenichi Handa <handa@m17n.org>
* Makefile.in (ELCFILES): Add $(lisp)/language/hanja-util.elc.
......
......@@ -252,7 +252,7 @@ The expansion is entirely correct because it uses the C preprocessor."
;; <file*glob>
(defvar perl-font-lock-syntactic-keywords
;; TODO: here-documents ("<<\\(\\sw\\|['\"]\\)")
'(;; Turn POD into b-style comments
`(;; Turn POD into b-style comments
("^\\(=\\)\\sw" (1 "< b"))
("^=cut[ \t]*\\(\n\\)" (1 "> b"))
;; Catch ${ so that ${var} doesn't screw up indentation.
......@@ -267,12 +267,27 @@ The expansion is entirely correct because it uses the C preprocessor."
;; Be careful not to match "sub { (...) ... }".
("\\<sub\\(?:[[:space:]]+[^{}[:punct:][:space:]]+\\)?[[:space:]]*(\\([^)]+\\))"
1 '(1))
;; Regexp and funny quotes.
("\\(?:[?:.,;=!~({[]\\|\\(^\\)\\)[ \t\n]*\\(/\\)"
;; Regexp and funny quotes. Distinguishing a / that starts a regexp
;; match from the division operator is ...interesting.
;; Basically, / is a regexp match if it's preceded by an infix operator
;; (or some similar separator), or by one of the special keywords
;; corresponding to builtin functions that can take their first arg
;; without parentheses. Of course, that presume we're looking at the
;; *opening* slash. We can mis-match the closing ones, because they are
;; treated separately later in
;; perl-font-lock-special-syntactic-constructs.
(,(concat "\\(?:\\(?:\\(?:^\\|[^$@&%[:word:]]\\)"
(regexp-opt '("split" "if" "unless" "until" "while" "split"
"grep" "map" "not" "or" "and"))
"\\)\\|[?:.,;=!~({[]\\|\\(^\\)\\)[ \t\n]*\\(/\\)")
(2 (if (and (match-end 1)
(save-excursion
(goto-char (match-end 1))
(skip-chars-backward " \t\n")
;; Not 100% correct since we haven't finished setting up
;; the syntax-table before point, but better than nothing.
(forward-comment (- (point-max)))
(put-text-property (point) (match-end 2)
'jit-lock-multiline t)
(not (memq (char-before)
'(?? ?: ?. ?, ?\; ?= ?! ?~ ?\( ?\[)))))
nil ;; A division sign instead of a regexp-match.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment