Add c-ts-mode-indent-defun (bug#59662)
Add in this function to mimic 'c-indent-defun'. * lisp/progmodes/c-ts-mode.el (c-ts-mode-indent-defun): New function. (c-ts-mode-map): New mode map that uses said function.
This commit is contained in:
parent
6479691cf0
commit
c83c95634e
1 changed files with 22 additions and 1 deletions
|
@ -520,9 +520,30 @@ the subtrees."
|
|||
(if (looking-at "\\s<\\|\n")
|
||||
(forward-line 1)))))
|
||||
|
||||
(defun c-ts-mode-indent-defun ()
|
||||
"Indent the current top-level declaration syntactically.
|
||||
|
||||
`treesit-defun-type-regexp' defines what constructs to indent."
|
||||
(interactive "*")
|
||||
(let ((orig-point (point-marker)))
|
||||
;; If `treesit-beginning-of-defun' returns nil, we are not in a
|
||||
;; defun, so don't indent anything.
|
||||
(when (treesit-beginning-of-defun)
|
||||
(let ((start (point)))
|
||||
(treesit-end-of-defun)
|
||||
(indent-region start (point))))
|
||||
(goto-char orig-point)))
|
||||
|
||||
(defvar-keymap c-ts-mode-map
|
||||
:doc "Keymap for the C language with tree-sitter"
|
||||
:parent prog-mode-map
|
||||
"C-c C-q" #'c-ts-mode-indent-defun)
|
||||
|
||||
;;;###autoload
|
||||
(define-derived-mode c-ts-base-mode prog-mode "C"
|
||||
"Major mode for editing C, powered by tree-sitter."
|
||||
"Major mode for editing C, powered by tree-sitter.
|
||||
|
||||
\\{c-ts-mode-map}"
|
||||
:syntax-table c-ts-mode--syntax-table
|
||||
|
||||
;; Navigation.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue