diff --git a/modules/lang/ruby/config.el b/modules/lang/ruby/config.el index 1420363c5..0721167aa 100644 --- a/modules/lang/ruby/config.el +++ b/modules/lang/ruby/config.el @@ -22,9 +22,6 @@ (when (modulep! +lsp) (add-hook 'ruby-mode-local-vars-hook #'lsp! 'append)) - (when (modulep! +tree-sitter) - (add-hook 'ruby-mode-local-vars-hook #'tree-sitter! 'append)) - (after! inf-ruby (add-hook 'inf-ruby-mode-hook #'doom-mark-buffer-as-real-h) ;; switch to inf-ruby from compile if we detect a breakpoint has been hit @@ -39,6 +36,20 @@ "{" #'ruby-toggle-block)) +(use-package! ruby-ts-mode + :when (modulep! +tree-sitter) + :when (fboundp 'ruby-ts-mode) ; 29.1+ only + :defer t + :init + (set-tree-sitter! 'ruby-mode 'ruby-ts-mode + '((ruby :url "https://github.com/tree-sitter/tree-sitter-ruby"))) + :config + (set-electric! 'ruby-ts-mode :words '("else" "end" "elsif")) + (set-repl-handler! 'ruby-ts-mode #'inf-ruby) + (when (modulep! +lsp) + (add-hook 'ruby-ts-mode-local-vars-hook #'lsp! 'append))) + + (use-package! yard-mode :hook ruby-mode) diff --git a/modules/lang/ruby/doctor.el b/modules/lang/ruby/doctor.el index dfc0ecd66..1ab28a7ac 100644 --- a/modules/lang/ruby/doctor.el +++ b/modules/lang/ruby/doctor.el @@ -8,6 +8,10 @@ (modulep! :tools tree-sitter)) "This module requires (:tools tree-sitter)") +(assert! (or (not (modulep! +tree-sitter)) + (fboundp 'ruby-ts-mode)) + "Can't find `ruby-ts-mode'; Emacs 29.1+ is required") + (unless (executable-find "ruby") (warn! "Ruby isn't installed.")) diff --git a/modules/tools/tree-sitter/config.el b/modules/tools/tree-sitter/config.el index f8d32059a..3d18325de 100644 --- a/modules/tools/tree-sitter/config.el +++ b/modules/tools/tree-sitter/config.el @@ -49,7 +49,6 @@ (perl "https://github.com/ganezdragon/tree-sitter-perl" nil nil nil nil) (proto "https://github.com/mitchellh/tree-sitter-proto" nil nil nil nil) (r "https://github.com/r-lib/tree-sitter-r" nil nil nil nil) - (ruby "https://github.com/tree-sitter/tree-sitter-ruby" nil nil nil nil) (rust "https://github.com/tree-sitter/tree-sitter-rust" nil nil nil nil) (scala "https://github.com/tree-sitter/tree-sitter-scala" nil nil nil nil) (sql "https://github.com/DerekStride/tree-sitter-sql" "gh-pages" nil nil nil)