]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/progmodes/ruby-ts-mode.el (ruby-ts-mode): Add 'text' (bug#67036).
authorJuri Linkov <juri@linkov.net>
Thu, 2 May 2024 06:28:53 +0000 (09:28 +0300)
committerEshel Yaron <me@eshelyaron.com>
Mon, 6 May 2024 16:32:43 +0000 (18:32 +0200)
Add 'text' lambda to 'treesit-thing-settings' that should fall back
to the default functions for sentence/sexp navigation.

(cherry picked from commit a1613505e24e8d5eae79b130809d217b1db23065)

lisp/progmodes/ruby-ts-mode.el

index 7133cb0b5b0a1e4c634975d04612d6fa717fa3e3..5f4e11e0b4cc389f2430ba4f7affd64de7e57a72 100644 (file)
@@ -1171,7 +1171,22 @@ leading double colon is not added."
                                 "global_variable"
                                 )
                                eol)
-                              #'ruby-ts--sexp-p)))))
+                              #'ruby-ts--sexp-p))
+                 (text ,(lambda (node)
+                          (or (member (treesit-node-type node)
+                                      '("comment" "string_content" "heredoc_content"))
+                              ;; for C-M-f in hash[:key] and hash['key']
+                              (and (member (treesit-node-text node)
+                                           '("[" "]"))
+                                   (equal (treesit-node-type
+                                           (treesit-node-parent node))
+                                          "element_reference"))
+                              ;; for C-M-f in "abc #{ghi} def"
+                              (and (member (treesit-node-text node)
+                                           '("#{" "}"))
+                                   (equal (treesit-node-type
+                                           (treesit-node-parent node))
+                                          "interpolation"))))))))
 
   ;; AFAIK, Ruby can not nest methods
   (setq-local treesit-defun-prefer-top-level nil)