[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
emacs-29 a42b20dd95 5/5: ; * lisp/progmodes/c-ts-mode.el: Add outline se
From: |
Yuan Fu |
Subject: |
emacs-29 a42b20dd95 5/5: ; * lisp/progmodes/c-ts-mode.el: Add outline section headers. |
Date: |
Sat, 24 Dec 2022 03:33:28 -0500 (EST) |
branch: emacs-29
commit a42b20dd95e4ca522c090f9edf110dcd132b616f
Author: Yuan Fu <casouri@gmail.com>
Commit: Yuan Fu <casouri@gmail.com>
; * lisp/progmodes/c-ts-mode.el: Add outline section headers.
---
lisp/progmodes/c-ts-mode.el | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/lisp/progmodes/c-ts-mode.el b/lisp/progmodes/c-ts-mode.el
index 10f7bf5840..471d9a3dec 100644
--- a/lisp/progmodes/c-ts-mode.el
+++ b/lisp/progmodes/c-ts-mode.el
@@ -39,6 +39,8 @@
(declare-function treesit-node-child-by-field-name "treesit.c")
(declare-function treesit-node-type "treesit.c")
+;;; Custom variables
+
(defcustom c-ts-mode-indent-offset 2
"Number of spaces for each indentation step in `c-ts-mode'."
:version "29.1"
@@ -91,6 +93,8 @@ follows the form of `treesit-simple-indent-rules'."
table)
"Syntax table for `c++-ts-mode'.")
+;;; Indent
+
(defun c-ts-mode--indent-styles (mode)
"Indent rules supported by `c-ts-mode'.
MODE is either `c' or `cpp'."
@@ -381,6 +385,8 @@ MODE is either `c' or `cpp'."
@c-ts-mode--fontify-defun)
(:match "^DEFUN$" @fn)))))
+;;; Font-lock helpers
+
(defun c-ts-mode--fontify-declarator (node override start end &rest args)
"Fontify a declarator (whatever under the \"declarator\" field).
For NODE, OVERRIDE, START, END, and ARGS, see
@@ -473,6 +479,8 @@ For NODE, OVERRIDE, START, and END, see
(t 'font-lock-warning-face))
override start end)))
+;;; Imenu
+
(defun c-ts-mode--imenu-1 (node)
"Helper for `c-ts-mode--imenu'.
Find string representation for NODE and set marker, then recurse
@@ -537,6 +545,8 @@ the subtrees."
(when var-index `(("Variable" . ,var-index)))
(when func-index `(("Function" . ,func-index))))))
+;;; Defun navigation
+
(defun c-ts-mode--end-of-defun ()
"`end-of-defun-function' of `c-ts-mode'."
;; A struct/enum/union_specifier node doesn't include the ; at the
@@ -582,6 +592,8 @@ the semicolon. This function skips the semicolon."
(treesit-node-end node))
(goto-char orig-point)))
+;;; Filling
+
(defun c-ts-mode--fill-paragraph (&optional arg)
"Fillling function for `c-ts-mode'.
ARG is passed to `fill-paragraph'."
@@ -646,6 +658,8 @@ ARG is passed to `fill-paragraph'."
;; itself.
t)))
+;;; Modes
+
(defvar-keymap c-ts-mode-map
:doc "Keymap for the C language with tree-sitter"
:parent prog-mode-map