[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 4ad6c93: Add a full set of CC Mode language variables to js.el.
From: |
Alan Mackenzie |
Subject: |
master 4ad6c93: Add a full set of CC Mode language variables to js.el. |
Date: |
Wed, 6 Nov 2019 14:37:21 -0500 (EST) |
branch: master
commit 4ad6c932a826c2928ac82e56e5ae541eff7e5ca7
Author: Alan Mackenzie <address@hidden>
Commit: Alan Mackenzie <address@hidden>
Add a full set of CC Mode language variables to js.el.
This will allow js.el to work after maintenance changes in CC Mode, e.g. the
fix to bug #11165.
* lisp/progmodes/js.el (top level): Create a CC Mode derived language called
js-mode and based on Java Mode.
(js-mode): call c-init-language-vars for js-mode. Remove the direct
settings
of several CC Mode language variables which are now defined through the
derived language mechanism. Call c-set-style and set up the needed style
variables c-block-comment-prefix and c-comment-prefix-regexp.
---
lisp/progmodes/js.el | 29 +++++++++++++++++++++--------
1 file changed, 21 insertions(+), 8 deletions(-)
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index 599923d..5f09134 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -46,6 +46,9 @@
;;; Code:
(require 'cc-mode)
+(eval-when-compile
+ (require 'cc-langs)
+ (require 'cc-fonts))
(require 'newcomment)
(require 'imenu)
(require 'moz nil t)
@@ -4529,12 +4532,22 @@ This function is intended for use in
`after-change-functions'."
(when (js-jsx--detect-and-enable 'arbitrarily)
(remove-hook 'after-change-functions #'js-jsx--detect-after-change
t))))))
+;; Ensure all CC Mode "lang variables" are set to valid values.
+;; js-mode, however, currently uses only those needed for filling.
+(eval-and-compile
+ (c-add-language 'js-mode 'java-mode))
+
+(c-lang-defconst c-paragraph-start
+ js-mode "\\(@[[:alpha:]]+\\>\\|$\\)")
+
;;; Main Function
;;;###autoload
(define-derived-mode js-mode prog-mode "JavaScript"
"Major mode for editing JavaScript."
:group 'js
+ ;; Ensure all CC Mode "lang variables" are set to valid values.
+ (c-init-language-vars js-mode)
(setq-local indent-line-function #'js-indent-line)
(setq-local beginning-of-defun-function #'js-beginning-of-defun)
(setq-local end-of-defun-function #'js-end-of-defun)
@@ -4576,16 +4589,9 @@ This function is intended for use in
`after-change-functions'."
(setq imenu-create-index-function #'js--imenu-create-index)
;; for filling, pretend we're cc-mode
- (setq c-comment-prefix-regexp "//+\\|\\**"
- c-paragraph-start "\\(@[[:alpha:]]+\\>\\|$\\)"
- c-paragraph-separate "$"
- c-block-comment-prefix "* "
- c-line-comment-starter "//"
- c-comment-start-regexp "/[*/]\\|\\s!")
+ (c-init-language-vars js-mode)
(setq-local comment-line-break-function #'c-indent-new-comment-line)
- (setq-local c-block-comment-start-regexp "/\\*")
(setq-local comment-multi-line t)
-
(setq-local electric-indent-chars
(append "{}():;," electric-indent-chars)) ;FIXME: js2-mode adds
"[]*".
(setq-local electric-layout-rules
@@ -4599,6 +4605,13 @@ This function is intended for use in
`after-change-functions'."
(make-local-variable 'paragraph-ignore-fill-prefix)
(make-local-variable 'adaptive-fill-mode)
(make-local-variable 'adaptive-fill-regexp)
+ ;; While the full CC Mode style system is not yet in use, set the
+ ;; pertinent style variables manually.
+ (c-initialize-builtin-style)
+ (let ((style (cc-choose-style-for-mode 'js-mode c-default-style)))
+ (c-set-style style))
+ (setq c-block-comment-prefix "* "
+ c-comment-prefix-regexp "//+\\|\\**")
(c-setup-paragraph-variables))
;; Important to fontify the whole buffer syntactically! If we don't,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 4ad6c93: Add a full set of CC Mode language variables to js.el.,
Alan Mackenzie <=