aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvgeni Kolev2023-02-08 17:16:02 +0200
committerEli Zaretskii2023-03-26 15:02:52 +0300
commit1671e2db8a8d43da58c2f250c314a70aba199e09 (patch)
tree64d3de67cd49b68254ccff1a81f68ddd3fb2d1f0
parent28db56d5f04879675aabb3fb2195ef2dd27716ba (diff)
downloademacs-1671e2db8a8d43da58c2f250c314a70aba199e09.tar.gz
emacs-1671e2db8a8d43da58c2f250c314a70aba199e09.zip
Fix 'go-ts-mode's incorrect docstring inserted for methods
The docstring inserted with go-ts-mode's C-c C-d was incorrectly prefixed with the receiver "(myStruct).": // (myStruct).act func (m *myStruct) act () {...} The above docstring is not correct because the receiver "myStruct" should not be in the docstring. This commit fixes the incorrect behavior. * lisp/progmodes/go-ts-mode.el (go-ts-mode--defun-name): New optional argument SKIP-PREFIX. (go-ts-mode-docstring): Call (go-ts-mode--defun-name t) instead of (treesit-defun-name). (Bug#62371)
-rw-r--r--lisp/progmodes/go-ts-mode.el16
1 files changed, 8 insertions, 8 deletions
diff --git a/lisp/progmodes/go-ts-mode.el b/lisp/progmodes/go-ts-mode.el
index e6e8abd6445..fda6a36e42d 100644
--- a/lisp/progmodes/go-ts-mode.el
+++ b/lisp/progmodes/go-ts-mode.el
@@ -255,9 +255,10 @@
255(if (treesit-ready-p 'go) 255(if (treesit-ready-p 'go)
256 (add-to-list 'auto-mode-alist '("\\.go\\'" . go-ts-mode))) 256 (add-to-list 'auto-mode-alist '("\\.go\\'" . go-ts-mode)))
257 257
258(defun go-ts-mode--defun-name (node) 258(defun go-ts-mode--defun-name (node &optional skip-prefix)
259 "Return the defun name of NODE. 259 "Return the defun name of NODE.
260Return nil if there is no name or if NODE is not a defun node." 260Return nil if there is no name or if NODE is not a defun node.
261Methods are prefixed with the receiver name, unless SKIP-PREFIX is t."
261 (pcase (treesit-node-type node) 262 (pcase (treesit-node-type node)
262 ("function_declaration" 263 ("function_declaration"
263 (treesit-node-text 264 (treesit-node-text
@@ -266,11 +267,10 @@ Return nil if there is no name or if NODE is not a defun node."
266 t)) 267 t))
267 ("method_declaration" 268 ("method_declaration"
268 (let* ((receiver-node (treesit-node-child-by-field-name node "receiver")) 269 (let* ((receiver-node (treesit-node-child-by-field-name node "receiver"))
269 (type-node (treesit-search-subtree receiver-node "type_identifier")) 270 (receiver (treesit-node-text (treesit-search-subtree receiver-node "type_identifier")))
270 (name-node (treesit-node-child-by-field-name node "name"))) 271 (method (treesit-node-text (treesit-node-child-by-field-name node "name"))))
271 (concat 272 (if skip-prefix method
272 "(" (treesit-node-text type-node) ")." 273 (concat "(" receiver ")." method))))
273 (treesit-node-text name-node))))
274 ("type_declaration" 274 ("type_declaration"
275 (treesit-node-text 275 (treesit-node-text
276 (treesit-node-child-by-field-name 276 (treesit-node-child-by-field-name
@@ -314,7 +314,7 @@ comment already exists, jump to it."
314 ;; go to top comment line 314 ;; go to top comment line
315 (while (go-ts-mode--comment-on-previous-line-p) 315 (while (go-ts-mode--comment-on-previous-line-p)
316 (forward-line -1)) 316 (forward-line -1))
317 (insert "// " (treesit-defun-name defun-node)) 317 (insert "// " (go-ts-mode--defun-name defun-node t))
318 (newline) 318 (newline)
319 (backward-char)))) 319 (backward-char))))
320 320