summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorRandy Taylor <dev@rjt.dev>2022-12-11 20:50:54 -0500
committerYuan Fu <casouri@gmail.com>2022-12-12 15:08:55 -0800
commitc0fe6c72cec477fdd2494bf3d26ab75790d2f720 (patch)
tree806225574ab7931e1b268b8f74b12b8fc6b23980 /lisp
parent631908f70172a117f83596936abe7f042005b57a (diff)
downloademacs-c0fe6c72cec477fdd2494bf3d26ab75790d2f720.tar.gz
emacs-c0fe6c72cec477fdd2494bf3d26ab75790d2f720.tar.bz2
emacs-c0fe6c72cec477fdd2494bf3d26ab75790d2f720.zip
Improve dockerfile-ts-mode imenu generation (Bug#59979)
* lisp/progmodes/dockerfile-ts-mode.el (treesit-node-child-by-field-name): Declare. (dockerfile-ts-mode--imenu-1): Use stage name if available.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/progmodes/dockerfile-ts-mode.el7
1 files changed, 5 insertions, 2 deletions
diff --git a/lisp/progmodes/dockerfile-ts-mode.el b/lisp/progmodes/dockerfile-ts-mode.el
index 544e0f82d6d..40d90cc2dfc 100644
--- a/lisp/progmodes/dockerfile-ts-mode.el
+++ b/lisp/progmodes/dockerfile-ts-mode.el
@@ -33,6 +33,7 @@
(declare-function treesit-parser-create "treesit.c")
(declare-function treesit-induce-sparse-tree "treesit.c")
(declare-function treesit-node-child "treesit.c")
+(declare-function treesit-node-child-by-field-name "treesit.c")
(declare-function treesit-node-start "treesit.c")
(declare-function treesit-node-type "treesit.c")
@@ -117,8 +118,10 @@ the subtrees."
children))
(name (when ts-node
(pcase (treesit-node-type ts-node)
- ("from_instruction" (treesit-node-text
- (treesit-node-child ts-node 1) t)))))
+ ("from_instruction"
+ (treesit-node-text
+ (or (treesit-node-child-by-field-name ts-node "as")
+ (treesit-node-child ts-node 1)) t)))))
(marker (when ts-node
(set-marker (make-marker)
(treesit-node-start ts-node)))))