summaryrefslogtreecommitdiff
path: root/lisp/progmodes/c-ts-mode.el
diff options
context:
space:
mode:
authorDaniel Martín <mardani29@yahoo.es>2022-12-13 22:28:13 +0100
committerYuan Fu <casouri@gmail.com>2022-12-14 11:42:58 -0800
commit480f41c7deb4d3a45a862a5308950b35085f835d (patch)
tree5bbd9de42ee9c2f93f375ef0cb2444857852533b /lisp/progmodes/c-ts-mode.el
parentfbf0d3b796ac1b891be35b642878a1fd412ee5ea (diff)
downloademacs-480f41c7deb4d3a45a862a5308950b35085f835d.tar.gz
emacs-480f41c7deb4d3a45a862a5308950b35085f835d.tar.bz2
emacs-480f41c7deb4d3a45a862a5308950b35085f835d.zip
Add < and > to the syntax table in c++-ts-mode (bug#60049)
* lisp/progmodes/c-ts-mode.el (c++-ts-mode--syntax-table): Add a specific syntax table for C++. Consider "<" and ">" open/close delimiters (C++ templates). (c++-ts-mode): Use the new syntax table.
Diffstat (limited to 'lisp/progmodes/c-ts-mode.el')
-rw-r--r--lisp/progmodes/c-ts-mode.el9
1 files changed, 9 insertions, 0 deletions
diff --git a/lisp/progmodes/c-ts-mode.el b/lisp/progmodes/c-ts-mode.el
index 4cf06e10ebf..821e8f5fd96 100644
--- a/lisp/progmodes/c-ts-mode.el
+++ b/lisp/progmodes/c-ts-mode.el
@@ -83,6 +83,14 @@ follows the form of `treesit-simple-indent-rules'."
table)
"Syntax table for `c-ts-mode'.")
+(defvar c++-ts-mode--syntax-table
+ (let ((table (make-syntax-table c-ts-mode--syntax-table)))
+ ;; Template delimiters.
+ (modify-syntax-entry ?< "(" table)
+ (modify-syntax-entry ?> ")" table)
+ table)
+ "Syntax table for `c++-ts-mode'.")
+
(defun c-ts-mode--indent-styles (mode)
"Indent rules supported by `c-ts-mode'.
MODE is either `c' or `cpp'."
@@ -616,6 +624,7 @@ the subtrees."
(define-derived-mode c++-ts-mode c-ts-base-mode "C++"
"Major mode for editing C++, powered by tree-sitter."
:group 'c++
+ :syntax-table c++-ts-mode--syntax-table
(unless (treesit-ready-p 'cpp)
(error "Tree-sitter for C++ isn't available"))