From ef7f3c6388be1299e3834f7c96889f0e17745c24 Mon Sep 17 00:00:00 2001 From: Yuan Fu Date: Sat, 7 Jan 2023 17:26:26 -0800 Subject: [PATCH] Fix use of treesit-ready-p in c/c++-ts-mode * lisp/progmodes/c-ts-mode.el: (c-ts-mode) (c++-ts-mode): Put setup code in a when form. --- lisp/progmodes/c-ts-mode.el | 52 ++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 30 deletions(-) diff --git a/lisp/progmodes/c-ts-mode.el b/lisp/progmodes/c-ts-mode.el index ae50c0ef991..d2280f1d382 100644 --- a/lisp/progmodes/c-ts-mode.el +++ b/lisp/progmodes/c-ts-mode.el @@ -805,22 +805,17 @@ This mode is independent from the classic cc-mode.el based `c-basic-offset', don't affect this mode." :group 'c - (unless (treesit-ready-p 'c) - (error "Tree-sitter for C isn't available")) - - (treesit-parser-create 'c) - - ;; Comments. - (setq-local comment-start "/* ") - (setq-local comment-end " */") - - (setq-local treesit-simple-indent-rules - (c-ts-mode--set-indent-style 'c)) - - ;; Font-lock. - (setq-local treesit-font-lock-settings (c-ts-mode--font-lock-settings 'c)) - - (treesit-major-mode-setup)) + (when (treesit-ready-p 'c) + (treesit-parser-create 'c) + ;; Comments. + (setq-local comment-start "/* ") + (setq-local comment-end " */") + ;; Indent. + (setq-local treesit-simple-indent-rules + (c-ts-mode--set-indent-style 'c)) + ;; Font-lock. + (setq-local treesit-font-lock-settings (c-ts-mode--font-lock-settings 'c)) + (treesit-major-mode-setup))) ;;;###autoload (define-derived-mode c++-ts-mode c-ts-base-mode "C++" @@ -831,20 +826,17 @@ This mode is independent from the classic cc-mode.el based `c-basic-offset', don't affect this mode." :group 'c++ - (unless (treesit-ready-p 'cpp) - (error "Tree-sitter for C++ isn't available")) - - (treesit-parser-create 'cpp) - (setq-local syntax-propertize-function - #'c-ts-mode--syntax-propertize) - - (setq-local treesit-simple-indent-rules - (c-ts-mode--set-indent-style 'cpp)) - - ;; Font-lock. - (setq-local treesit-font-lock-settings (c-ts-mode--font-lock-settings 'cpp)) - - (treesit-major-mode-setup)) + (when (treesit-ready-p 'cpp) + (treesit-parser-create 'cpp) + ;; Syntax. + (setq-local syntax-propertize-function + #'c-ts-mode--syntax-propertize) + ;; Indent. + (setq-local treesit-simple-indent-rules + (c-ts-mode--set-indent-style 'cpp)) + ;; Font-lock. + (setq-local treesit-font-lock-settings (c-ts-mode--font-lock-settings 'cpp)) + (treesit-major-mode-setup))) ;; We could alternatively use parsers, but if this works well, I don't ;; see the need to change. This is copied verbatim from cc-guess.el. -- 2.39.2