]> git.eshelyaron.com Git - emacs.git/commitdiff
(js-json-mode): Don't derive from `js-mode` (bug#67463)
authorStefan Monnier <monnier@iro.umontreal.ca>
Mon, 15 Jan 2024 03:17:13 +0000 (22:17 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Mon, 15 Jan 2024 03:17:13 +0000 (22:17 -0500)
* lisp/progmodes/js.el (js--mode-setup): New function, extracted from
`js-mode`.
(js-mode): Use it.
(js-json-mode): Use it instead of inheriting from `js-mode`.

etc/NEWS
lisp/progmodes/js.el

index da0253e97dc9d44cfec68f59dcafb4b15a7d3347..03b8c3b517a94f7fba1d7b5f640e9258a74d410d 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1002,6 +1002,11 @@ which calls 'xref-find-definitions'.  If the previous one worked
 better for you, use 'define-key' in your init script to bind
 'js-find-symbol' to that combination again.
 
+** Json mode
+`js-json-mode` does not derive from `js-mode` any more so as not
+to confuse tools like Eglot or YASnippet into thinking that those
+buffers contain Javascript code.
+
 ** Python mode
 
 ---
index 0115feb0e97d3574a0fa6c4d841d2b868a2b68dd..947d91c9b1a4aee9de7c3bebe08ba18ac1110840 100644 (file)
@@ -3702,6 +3702,9 @@ Currently there are `js-mode' and `js-ts-mode'."
 (define-derived-mode js-mode js-base-mode "JavaScript"
   "Major mode for editing JavaScript."
   :group 'js
+  (js--mode-setup))
+
+(defun js--mode-setup ()
   ;; 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)
@@ -3924,7 +3927,9 @@ See `treesit-thing-settings' for more information.")
         (put-text-property (1- ne) ne 'syntax-table syntax)))))
 
 ;;;###autoload
-(define-derived-mode js-json-mode js-mode "JSON"
+(define-derived-mode js-json-mode prog-mode "JSON"
+  :syntax-table js-mode-syntax-table
+  (js--mode-setup) ;Reuse most of `js-mode', but not as parent (bug#67463).
   (setq-local js-enabled-frameworks nil)
   ;; Speed up `syntax-ppss': JSON files can be big but can't hold
   ;; regexp matchers nor #! thingies (and `js-enabled-frameworks' is nil).