[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master e69a5f5: * lisp/emacs-lisp/lisp-mode.el: Don't high
From: |
Stefan Monnier |
Subject: |
[Emacs-diffs] master e69a5f5: * lisp/emacs-lisp/lisp-mode.el: Don't highlight \( at BOL |
Date: |
Fri, 24 Mar 2017 09:39:39 -0400 (EDT) |
branch: master
commit e69a5f5e456b39ad37f7d622386063548bea8208
Author: Stefan Monnier <address@hidden>
Commit: Stefan Monnier <address@hidden>
* 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.
---
lisp/emacs-lisp/lisp-mode.el | 30 +++++++++++++++++++-----------
1 file changed, 19 insertions(+), 11 deletions(-)
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el
index d6293c0..b7a5eb7 100644
--- a/lisp/emacs-lisp/lisp-mode.el
+++ b/lisp/emacs-lisp/lisp-mode.el
@@ -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 "\\)['’]")
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master e69a5f5: * lisp/emacs-lisp/lisp-mode.el: Don't highlight \( at BOL,
Stefan Monnier <=