Highlight useless backslashes in Elisp strings

* lisp/emacs-lisp/lisp-mode.el (lisp-el-font-lock-keywords-2):
Put warning face on backslashes that have no effect.
This commit is contained in:
Stefan Monnier 2017-03-11 11:35:14 -05:00
parent ee51550c39
commit 4086d850dc

View file

@ -411,6 +411,15 @@ This will generate compile-time constants from BINDINGS."
;; Words inside \\[] tend to be for `substitute-command-keys'.
(,(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)
prepend))
;; Words inside and `' tend to be symbol names.
(,(concat "[`]\\(\\(?:\\sw\\|\\s_\\|\\\\.\\)"
lisp-mode-symbol-regexp "\\)[']")