diff options
author | Tom Tromey <tom@tromey.com> | 2017-02-25 10:27:48 -0700 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2017-02-25 14:02:37 -0700 |
commit | 8db75f0ef9ad821bab0a2613bb8e549edbf14eb6 (patch) | |
tree | 4a40206bb0fdbc574953d8936342426c443d422f | |
parent | 546d30ed1400d5a434886790a102bd37ec852919 (diff) | |
download | emacs-8db75f0ef9ad821bab0a2613bb8e549edbf14eb6.tar.gz |
Use font-lock-doc-face in js-mode
Bug#25858:
* lisp/progmodes/js.el (js-font-lock-syntactic-face-function): New
defun.
(js-mode): Use it.
* test/lisp/progmodes/js-tests.el (js-mode-doc-comment-face): New
test.
-rw-r--r-- | lisp/progmodes/js.el | 15 | ||||
-rw-r--r-- | test/lisp/progmodes/js-tests.el | 12 |
2 files changed, 26 insertions, 1 deletions
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el index 65325a8ffad..aed42a85076 100644 --- a/lisp/progmodes/js.el +++ b/lisp/progmodes/js.el @@ -1687,6 +1687,16 @@ This performs fontification according to `js--class-styles'." js--font-lock-keywords-3) "Font lock keywords for `js-mode'. See `font-lock-keywords'.") +(defun js-font-lock-syntactic-face-function (state) + "Return syntactic face given STATE." + (if (nth 3 state) + font-lock-string-face + (if (save-excursion + (goto-char (nth 8 state)) + (looking-at "/\\*\\*")) + font-lock-doc-face + font-lock-comment-face))) + (defconst js--syntax-propertize-regexp-regexp (rx ;; Start of regexp. @@ -3828,7 +3838,10 @@ If one hasn't been set, or if it's stale, prompt for a new one." (setq-local beginning-of-defun-function #'js-beginning-of-defun) (setq-local end-of-defun-function #'js-end-of-defun) (setq-local open-paren-in-column-0-is-defun-start nil) - (setq-local font-lock-defaults (list js--font-lock-keywords)) + (setq-local font-lock-defaults + (list js--font-lock-keywords nil nil nil nil + '(font-lock-syntactic-face-function + . js-font-lock-syntactic-face-function))) (setq-local syntax-propertize-function #'js-syntax-propertize) (setq-local prettify-symbols-alist js--prettify-symbols-alist) diff --git a/test/lisp/progmodes/js-tests.el b/test/lisp/progmodes/js-tests.el index 07e659af605..e030675e07c 100644 --- a/test/lisp/progmodes/js-tests.el +++ b/test/lisp/progmodes/js-tests.el @@ -128,6 +128,18 @@ if (!/[ (:,='\"]/.test(value)) { ;; Any success is ok here. (should t))) +(ert-deftest js-mode-doc-comment-face () + (dolist (test '(("/*" "*/" font-lock-comment-face) + ("//" "\n" font-lock-comment-face) + ("/**" "*/" font-lock-doc-face) + ("\"" "\"" font-lock-string-face))) + (with-temp-buffer + (js-mode) + (insert (car test) " he") + (save-excursion (insert "llo " (cadr test))) + (font-lock-ensure) + (should (eq (get-text-property (point) 'face) (caddr test)))))) + (provide 'js-tests) ;;; js-tests.el ends here |