branch: elpa/haskell-ts-mode
commit 5fc77d428ddace423c0106a8fdf17f7b0a2c6abc
Author: Pranshu Sharma <[email protected]>
Commit: Pranshu Sharma <[email protected]>
Imenu changes
imenu now detects newtype + type decleratoins as well. The type
declarations used to be inside a recurisve imenu thing, but I removed
it because haskell doesn't allow functions and types to have same name
in first place.
---
haskell-ts-mode.el | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/haskell-ts-mode.el b/haskell-ts-mode.el
index fba6dc07e84..e417435dda1 100644
--- a/haskell-ts-mode.el
+++ b/haskell-ts-mode.el
@@ -470,6 +470,7 @@ when `haskell-ts-prettify-words' is non-nil.")
(text "string")))
"`treesit-thing-settings' for `haskell-ts-mode'.")
+;; TODO make into a currying function
(defmacro haskell-ts-imenu-name-function (check-func)
`(lambda (node)
(let ((nn (treesit-node-child node 0 node)))
@@ -529,9 +530,12 @@ when `haskell-ts-prettify-words' is non-nil.")
,(haskell-ts-imenu-name-function
#'haskell-ts-imenu-func-node-p))
("Signatures.." haskell-ts-imenu-sig-node-p nil
,(haskell-ts-imenu-name-function
#'haskell-ts-imenu-sig-node-p))
- ("Data..." haskell-ts-imenu-data-type-p nil
- (lambda (node)
- (treesit-node-text (treesit-node-child node 1))))))
+ (nil haskell-ts-imenu-data-type-p nil
+ (lambda (node)
+ (treesit-node-text (treesit-node-child node 1) t)))
+ (nil haskell-ts-imenu-typealias-type-p nil
+ (lambda (node)
+ (treesit-node-text (treesit-node-child node 1) t)))))
;; font-lock
(setq-local treesit-font-lock-level haskell-ts-font-lock-level)
(setq-local treesit-font-lock-settings haskell-ts-font-lock)
@@ -583,7 +587,10 @@ when `haskell-ts-prettify-words' is non-nil.")
(haskell-ts-imenu-node-p "signature" node))
(defun haskell-ts-imenu-data-type-p (node)
- (haskell-ts-imenu-node-p "data_type" node))
+ (haskell-ts-imenu-node-p "data_type\\|newtype" node))
+
+(defun haskell-ts-imenu-typealias-type-p (node)
+ (haskell-ts-imenu-node-p "type_synomym" node))
(defun haskell-ts-defun-name (node)
(treesit-node-text (treesit-node-child node 0)))