Improve errors & warnings due to fancy quoted vars (Bug#32939)
Add some hints to the message for byte compiler free & unused variable warnings, and 'void-variable' errors where the variable has confusable quote characters in it. * lisp/help.el (uni-confusables), uni-confusables-regexp): New constants. (help-command-error-confusable-suggestions): New function, added to `command-error-function'. (help-uni-confusable-suggestions): New function. * lisp/emacs-lisp/bytecomp.el (byte-compile-variable-ref): * lisp/emacs-lisp/cconv.el (cconv--analyze-use): Use it. * lisp/emacs-lisp/lisp-mode.el (lisp--match-confusable-symbol-character): New function. (lisp-fdefs): Use it to fontify confusable characters with font-lock-warning-face when they occur in symbol names. * doc/lispref/modes.texi (Faces for Font Lock): * doc/lispref/objects.texi (Basic Char Syntax): Recommend backslash escaping of confusable characters, and mention new fontification. * etc/NEWS: Announce the new fontification behavior. * test/lisp/emacs-lisp/lisp-mode-tests.el (lisp-fontify-confusables): New test.
This commit is contained in:
parent
85f586f3ce
commit
b2790db049
8 changed files with 116 additions and 7 deletions
|
@ -20,6 +20,10 @@
|
|||
(require 'ert)
|
||||
(require 'cl-lib)
|
||||
(require 'lisp-mode)
|
||||
(require 'faceup)
|
||||
|
||||
|
||||
;;; Indentation
|
||||
|
||||
(defconst lisp-mode-tests--correctly-indented-sexp "\
|
||||
\(a
|
||||
|
@ -290,5 +294,27 @@ Expected initialization file: `%s'\"
|
|||
(insert "\"\n")
|
||||
(lisp-indent-region (point-min) (point-max))))
|
||||
|
||||
|
||||
;;; Fontification
|
||||
|
||||
(ert-deftest lisp-fontify-confusables ()
|
||||
"Unescaped 'smart quotes' should be fontified in `font-lock-warning-face'."
|
||||
(with-temp-buffer
|
||||
(dolist (ch
|
||||
'(#x2018 ;; LEFT SINGLE QUOTATION MARK
|
||||
#x2019 ;; RIGHT SINGLE QUOTATION MARK
|
||||
#x201B ;; SINGLE HIGH-REVERSED-9 QUOTATION MARK
|
||||
#x201C ;; LEFT DOUBLE QUOTATION MARK
|
||||
#x201D ;; RIGHT DOUBLE QUOTATION MARK
|
||||
#x201F ;; DOUBLE HIGH-REVERSED-9 QUOTATION MARK
|
||||
#x301E ;; DOUBLE PRIME QUOTATION MARK
|
||||
#xFF02 ;; FULLWIDTH QUOTATION MARK
|
||||
#xFF07 ;; FULLWIDTH APOSTROPHE
|
||||
))
|
||||
(insert (format "«w:%c»foo \\%cfoo\n" ch ch)))
|
||||
(let ((faceup (buffer-string)))
|
||||
(faceup-clean-buffer)
|
||||
(should (faceup-test-font-lock-buffer 'emacs-lisp-mode faceup)))))
|
||||
|
||||
(provide 'lisp-mode-tests)
|
||||
;;; lisp-mode-tests.el ends here
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue