Allow to go back to using 'ruby-mode' after loading 'ruby-ts-mode'
authorEli Zaretskii <eliz@gnu.org>
Thu, 28 Nov 2024 14:55:26 +0000 (16:55 +0200)
committerEli Zaretskii <eliz@gnu.org>
Thu, 28 Nov 2024 14:55:26 +0000 (16:55 +0200)
* lisp/progmodes/ruby-ts-mode.el (major-mode-remap-defaults):
Remap 'ruby-mode' to 'ruby-ts-mode'.  Add commentary.
* lisp/progmodes/ruby-mode.el (major-mode-remap-defaults): Remove
any remappings of ruby-mode'.
* lisp/progmodes/c-ts-mode.el: Fix a typo in a comment.  (Bug#74339)

lisp/progmodes/c-ts-mode.el
lisp/progmodes/ruby-mode.el
lisp/progmodes/ruby-ts-mode.el

index 73c1411ad0f7798980aa30524d905e35130d2e4c..31f822b219d74582f1573f753ee617e167afec92 100644 (file)
@@ -35,7 +35,7 @@
 ;; To use these modes by default, assuming you have the respective
 ;; tree-sitter grammars available, do one of the following:
 ;;
-;; - Add one or mode of the following to your init file:
+;; - Add one or more of the following lines to your init file:
 ;;
 ;;    (add-to-list 'major-mode-remap-alist '(c-mode . c-ts-mode))
 ;;    (add-to-list 'major-mode-remap-alist '(c++-mode . c++-ts-mode))
index d953ec8b25c476d7ab1bb2db368ce170c7b4eede..4c37ef45ddf3ece06080e5d77faea983eb6f81f1 100644 (file)
@@ -2748,6 +2748,10 @@ Currently there are `ruby-mode' and `ruby-ts-mode'."
 (dolist (name (list "ruby" "rbx" "jruby" "j?ruby\\(?:[0-9.]+\\)"))
   (add-to-list 'interpreter-mode-alist (cons (purecopy name) 'ruby-mode)))
 
+;; See ruby-ts-mode.el for why we do this.
+(setq major-mode-remap-defaults
+      (assq-delete-all 'ruby-mode major-mode-remap-defaults))
+
 (provide 'ruby-mode)
 
 ;;; ruby-mode.el ends here
index 7c1c07ac5b620a14e3a20a91ab021d61e26f9d42..c86ef7e0a3e016b50701c0d8a90947ea27e501e4 100644 (file)
 ;; put somewhere Emacs can find it.  See the docstring of
 ;; `treesit-extra-load-path'.
 
-;; This mode doesn't associate itself with .rb files automatically.
-;; You can do that either by prepending to the value of
-;; `auto-mode-alist', or using `major-mode-remap-alist'.
+;; This mode doesn't associate itself with .rb files automatically.  To
+;; use this mode by default, assuming you have the tree-sitter grammar
+;; available, do one of the following:
+;;
+;; - Add the following to your init file:
+;;
+;;    (add-to-list 'major-mode-remap-alist '(ruby-mode . ruby-ts-mode))
+;;
+;; - Customize 'auto-mode-alist' to turn ruby-ts-mode automatically.
+;;   For example:
+;;
+;;    (add-to-list 'auto-mode-alist
+;;                 (cons (concat "\\(?:\\.\\(?:"
+;;                               "rbw?\\|ru\\|rake\\|thor\\|axlsx"
+;;                               "\\|jbuilder\\|rabl\\|gemspec\\|podspec"
+;;                               "\\)"
+;;                               "\\|/"
+;;                               "\\(?:Gem\\|Rake\\|Cap\\|Thor"
+;;                               "\\|Puppet\\|Berks\\|Brew\\|Fast"
+;;                               "\\|Vagrant\\|Guard\\|Pod\\)file"
+;;                               "\\)\\'")
+;;                       'ruby-ts-mode))
+;;
+;;   will turn on the ruby-ts-mode for Ruby source files.
+;;
+;; - If you have the Ruby grammar installed, add
+;;
+;;     (load "ruby-ts-mode")
+;;
+;;   to your init file.
+;;
+;; You can also turn on this mode manually in a buffer.
 
 ;; Tree Sitter brings a lot of power and versitility which can be
 ;; broken into these features.
@@ -1234,8 +1263,10 @@ leading double colon is not added."
 
 (derived-mode-add-parents 'ruby-ts-mode '(ruby-mode))
 
-(if (treesit-ready-p 'ruby)
-    (add-to-list 'major-mode-remap-defaults
+(when (treesit-ready-p 'ruby)
+  (setq major-mode-remap-defaults
+        (assq-delete-all 'ruby-mode major-mode-remap-defaults))
+  (add-to-list 'major-mode-remap-defaults
                  '(ruby-mode . ruby-ts-mode)))
 
 (provide 'ruby-ts-mode)