* 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'.
(cherry picked from commit
d61145cc8cfb31ca170cd1b5deab59f0a5cbea63)
"singleton_class"
"module"
"method"
+ "singleton_method"
"array"
"hash"
"parenthesized_statements"
;; 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.
(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)))