* lisp/emacs-lisp/lisp-mode.el: Don't highlight \( at BOL
(elisp--font-lock-backslash): Extract from lisp-el-font-lock-keywords-2. Don't highlight \ at BOL. Don't assume syntax-ppss preserves match-data.
This commit is contained in:
parent
4fbd330fae
commit
e69a5f5e45
1 changed files with 19 additions and 11 deletions
|
@ -259,6 +259,24 @@ This will generate compile-time constants from BINDINGS."
|
|||
(funcall loop bindings)))))))
|
||||
(funcall loop bindings)))
|
||||
|
||||
(defun elisp--font-lock-backslash ()
|
||||
(let* ((beg0 (match-beginning 0))
|
||||
(end0 (match-end 0))
|
||||
(ppss (save-excursion (syntax-ppss beg0))))
|
||||
(and (nth 3 ppss) ;Inside a string.
|
||||
(not (nth 5 ppss)) ;The \ is not itself \-escaped.
|
||||
;; Don't highlight the \( introduced because of
|
||||
;; `open-paren-in-column-0-is-defun-start'.
|
||||
(not (eq ?\n (char-before beg0)))
|
||||
(equal (ignore-errors
|
||||
(car (read-from-string
|
||||
(format "\"%s\""
|
||||
(buffer-substring-no-properties
|
||||
beg0 end0)))))
|
||||
(buffer-substring-no-properties (1+ beg0) end0))
|
||||
`(face ,font-lock-warning-face
|
||||
help-echo "This \\ has no effect"))))
|
||||
|
||||
(let-when-compile
|
||||
((lisp-fdefs '("defmacro" "defun"))
|
||||
(lisp-vdefs '("defvar"))
|
||||
|
@ -413,17 +431,7 @@ This will generate compile-time constants from BINDINGS."
|
|||
(1 font-lock-constant-face prepend))
|
||||
;; Ineffective backslashes (typically in need of doubling).
|
||||
("\\(\\\\\\)\\([^\"\\]\\)"
|
||||
(1 (let ((ppss (save-excursion (syntax-ppss (match-beginning 0)))))
|
||||
(and (nth 3 ppss) ;Inside a string.
|
||||
(not (nth 5 ppss)) ;The \ is not itself \-escaped.
|
||||
(equal (ignore-errors
|
||||
(car (read-from-string
|
||||
(format "\"%s\""
|
||||
(match-string-no-properties 0)))))
|
||||
(match-string-no-properties 2))
|
||||
`(face ,font-lock-warning-face
|
||||
help-echo "This \\ has no effect")))
|
||||
prepend))
|
||||
(1 (elisp--font-lock-backslash) prepend))
|
||||
;; Words inside ‘’ and `' tend to be symbol names.
|
||||
(,(concat "[`‘]\\(\\(?:\\sw\\|\\s_\\|\\\\.\\)"
|
||||
lisp-mode-symbol-regexp "\\)['’]")
|
||||
|
|
Loading…
Add table
Reference in a new issue