Home Gen390 @ 2024-10-28-22:44
This commit is contained in:
parent
d5a799977a
commit
a89183c8c8
@ -118,6 +118,9 @@ in {
|
|||||||
"doom-config/config.el" = {
|
"doom-config/config.el" = {
|
||||||
source = ./static/config.el;
|
source = ./static/config.el;
|
||||||
};
|
};
|
||||||
|
"doom-config/packages/treesit-docgen.el" = {
|
||||||
|
source = ./static/packages/treesit-docgen.el;
|
||||||
|
};
|
||||||
"doom-config/init.el" = {
|
"doom-config/init.el" = {
|
||||||
source = ./static/init.el;
|
source = ./static/init.el;
|
||||||
onChange = "${doom-setup} sync --force -e";
|
onChange = "${doom-setup} sync --force -e";
|
||||||
|
|||||||
@ -151,6 +151,7 @@
|
|||||||
|
|
||||||
;;Use TS-modes
|
;;Use TS-modes
|
||||||
(after! treesit
|
(after! treesit
|
||||||
|
(load! "packages/treesit-docgen.el")
|
||||||
(setq treesit-font-lock-level 4))
|
(setq treesit-font-lock-level 4))
|
||||||
|
|
||||||
(defconst mode-ts-mode-mapping
|
(defconst mode-ts-mode-mapping
|
||||||
@ -194,6 +195,7 @@
|
|||||||
|
|
||||||
;; Integrate with legacy tree-sitter mode
|
;; Integrate with legacy tree-sitter mode
|
||||||
(after! tree-sitter
|
(after! tree-sitter
|
||||||
|
(add-hook! 'c++-ts-mode-hook #'tree-sitter-mode)
|
||||||
(add-hook! 'tree-sitter-mode-hook #'tree-sitter-hl-mode)
|
(add-hook! 'tree-sitter-mode-hook #'tree-sitter-hl-mode)
|
||||||
(dolist (mapping tree-sitter-major-mode-language-alist)
|
(dolist (mapping tree-sitter-major-mode-language-alist)
|
||||||
(let* ((pre-mode (car mapping))
|
(let* ((pre-mode (car mapping))
|
||||||
|
|||||||
50
modules/home/doom/static/packages/treesit-docgen.el
Normal file
50
modules/home/doom/static/packages/treesit-docgen.el
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
(defun treesit-docgen--get-function-node (node)
|
||||||
|
"Get the function node the given NODE belongs to. Or nil"
|
||||||
|
(treesit-parent-until node
|
||||||
|
(lambda (n)
|
||||||
|
(or (equal (treesit-node-type n) "function_definition")
|
||||||
|
(and (equal (treesit-node-type n) "declaration"))
|
||||||
|
(equal (treesit-node-type (treesit-node-child-by-field-name n "declarator"))
|
||||||
|
"function_declarator")))
|
||||||
|
t)
|
||||||
|
)
|
||||||
|
|
||||||
|
(defun treesit-docgen--fn-template-node (fn-node)
|
||||||
|
"Get the template node of a function or nil"
|
||||||
|
(let* ((par (treesit-node-parent fn-node))
|
||||||
|
(par-t (treesit-node-type par)))
|
||||||
|
(when (string= par-t "template_declaration") par)
|
||||||
|
))
|
||||||
|
|
||||||
|
(defun treesit-docgen--fn-tpars (fn-node)
|
||||||
|
"Get the template parameters of the function node or nil"
|
||||||
|
(let* ((template (treesit-docgen--fn-template-node fn-node))
|
||||||
|
(tpars (treesit-node-child-by-field-name template "parameters")))
|
||||||
|
(when tpars
|
||||||
|
(mapcar (lambda (tpar) (treesit-node-text tpar)) (treesit-node-children tpars)))
|
||||||
|
))
|
||||||
|
|
||||||
|
(defun treesit-docgen--fn-type (fn-node)
|
||||||
|
"Get the return type of the function node"
|
||||||
|
(let ((fn-type-node (treesit-node-child-by-field-name fn-node "type")))
|
||||||
|
(treesit-node-text fn-type-node)))
|
||||||
|
|
||||||
|
(defun treesit-docgen--fn-pars (fn-node)
|
||||||
|
"Get the parameter names of the function node"
|
||||||
|
(let* ((fn-node-decl (treesit-node-child-by-field-name fn-node "declarator"))
|
||||||
|
(fn-node-pars (treesit-node-child-by-field-name fn-node-decl "parameters"))
|
||||||
|
)
|
||||||
|
(mapcar (lambda (par) (treesit-node-text par)) (treesit-node-children fn-node-pars))))
|
||||||
|
|
||||||
|
(defun treesit-docgen-insert-doc ()
|
||||||
|
"Insert a documentation template for the function at point"
|
||||||
|
(interactive)
|
||||||
|
(let* ((node (treesit-node-at (point)))
|
||||||
|
(fn-node (treesit-docgen--get-function-node node))
|
||||||
|
)
|
||||||
|
(when fn-node
|
||||||
|
(message "FN-Type: %s, FN-Pars: %s, FN-TPars: %s"
|
||||||
|
(or (treesit-docgen--fn-type fn-node) "none")
|
||||||
|
(or (treesit-docgen--fn-pars fn-node) "none")
|
||||||
|
(or (treesit-docgen--fn-tpars fn-node) "none")
|
||||||
|
))))
|
||||||
Loading…
x
Reference in New Issue
Block a user