diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2017-03-11 16:36:23 -0500 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2017-03-11 16:36:23 -0500 |
commit | 46fcaf3361b56306c288f2ddf4dd8a7dfab7ce2f (patch) | |
tree | e5410fd7960b55e431121d5d21d1b889b1b34cd3 /lisp/emacs-lisp/lisp-mode.el | |
parent | 4086d850dc02c95615095adddd1e798377f03cec (diff) | |
download | emacs-46fcaf3361b56306c288f2ddf4dd8a7dfab7ce2f.tar.gz |
Improve last change
* lisp/emacs-lisp/lisp-mode.el (lisp-el-font-lock-keywords-2):
Use ppss to check escaping and add help-echo.
Diffstat (limited to 'lisp/emacs-lisp/lisp-mode.el')
-rw-r--r-- | lisp/emacs-lisp/lisp-mode.el | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el index 3ed0d062e34..c2f5f42ace8 100644 --- a/lisp/emacs-lisp/lisp-mode.el +++ b/lisp/emacs-lisp/lisp-mode.el @@ -412,13 +412,17 @@ This will generate compile-time constants from BINDINGS." (,(concat "\\\\\\\\\\[\\(" lisp-mode-symbol-regexp "\\)\\]") (1 font-lock-constant-face prepend)) ;; Ineffective backslashes (typically in need of doubling). - ("\\(?:[^\\]\\|^\\)\\(?:\\\\\\\\\\)*\\(\\(\\\\\\)\\([^\"\\]\\)\\)" - (2 (and (nth 3 (syntax-ppss)) - (equal (ignore-errors - (car (read-from-string - (format "\"%s\"" (match-string 1))))) - (match-string 3)) - font-lock-warning-face) + ("\\(\\\\\\)\\([^\"\\]\\)" + (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)) ;; Words inside ‘’ and `' tend to be symbol names. (,(concat "[`‘]\\(\\(?:\\sw\\|\\s_\\|\\\\.\\)" |