emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master d61145cc8cf: More changes for treesitter support of outline-minor


From: Juri Linkov
Subject: master d61145cc8cf: More changes for treesitter support of outline-minor-mode (bug#68824)
Date: Tue, 13 Feb 2024 12:03:50 -0500 (EST)

branch: master
commit d61145cc8cfb31ca170cd1b5deab59f0a5cbea63
Author: Juri Linkov <juri@linkov.net>
Commit: Juri Linkov <juri@linkov.net>

    More changes for treesitter support of outline-minor-mode (bug#68824)
    
    * lisp/treesit.el (treesit-outline-level): Set NAMED arg of
    'treesit-node-at' to t.  Don't set IGNORE-MISSING arg of
    'treesit-node-match-p' to t.
    
    * lisp/progmodes/ruby-ts-mode.el (ruby-ts-mode):
    Add "singleton_method" to 'treesit-thing-settings'.
    Set 'treesit-outline-predicate'.  Kill local variables
    'outline-regexp' and 'outline-level'.
---
 lisp/progmodes/ruby-ts-mode.el | 14 ++++++++++++++
 lisp/treesit.el                |  4 ++--
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/lisp/progmodes/ruby-ts-mode.el b/lisp/progmodes/ruby-ts-mode.el
index 598eaa461ff..426ae248cac 100644
--- a/lisp/progmodes/ruby-ts-mode.el
+++ b/lisp/progmodes/ruby-ts-mode.el
@@ -1133,6 +1133,7 @@ leading double colon is not added."
                                 "singleton_class"
                                 "module"
                                 "method"
+                                "singleton_method"
                                 "array"
                                 "hash"
                                 "parenthesized_statements"
@@ -1178,6 +1179,19 @@ leading double colon is not added."
   ;; Imenu.
   (setq-local imenu-create-index-function #'ruby-ts--imenu)
 
+  ;; Outline minor mode.
+  (setq-local treesit-outline-predicate
+              (rx bos (or "singleton_method"
+                          "method"
+                          "alias"
+                          "class"
+                          "module")
+                  eos))
+  ;; Restore default values of outline variables
+  ;; to use `treesit-outline-predicate'.
+  (kill-local-variable 'outline-regexp)
+  (kill-local-variable 'outline-level)
+
   (setq-local treesit-simple-indent-rules (ruby-ts--indent-rules))
 
   ;; Font-lock.
diff --git a/lisp/treesit.el b/lisp/treesit.el
index 25ac582276b..f811b8090bc 100644
--- a/lisp/treesit.el
+++ b/lisp/treesit.el
@@ -2918,8 +2918,8 @@ See the descriptions of arguments in 
`outline-search-function'."
 
 (defun treesit-outline-level ()
   "Return the depth of the current outline heading."
-  (let* ((node (treesit-node-at (point)))
-         (level (if (treesit-node-match-p node treesit-outline-predicate t)
+  (let* ((node (treesit-node-at (point) nil t))
+         (level (if (treesit-node-match-p node treesit-outline-predicate)
                     1 0)))
     (while (setq node (treesit-parent-until node treesit-outline-predicate))
       (setq level (1+ level)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]