diff --git a/lisp/init-built-in.el b/lisp/init-built-in.el index b387417..cda8736 100644 --- a/lisp/init-built-in.el +++ b/lisp/init-built-in.el @@ -115,6 +115,7 @@ (setq fill-column 80))) (add-hook 'c-mode-common-hook #'display-fill-column-indicator-mode) +(add-hook 'c-ts-base-mode-hook #'display-fill-column-indicator-mode) (unless (featurep 'server) (require 'server)) (unless (server-running-p) (server-start)) diff --git a/lisp/init-eglot.el b/lisp/init-eglot.el index 849145a..fc81cc9 100644 --- a/lisp/init-eglot.el +++ b/lisp/init-eglot.el @@ -29,6 +29,13 @@ (eglot--highlight-piggyback cb) t))) +(defun creature/eglot-c-mode-keybinding () + (when (derived-mode-p 'c-mode 'c++-mode 'c-ts-mode 'c++-ts-mode) + (make-local-variable 'eglot-mode-map) + (lazy-load-set-keys + '(("C-M-\\" . eglot-format)) + eglot-mode-map))) + (with-eval-after-load 'eglot (setq eglot-events-buffer-size 0) (setq eglot-confirm-server-initiated-edits nil) @@ -36,6 +43,7 @@ (add-to-list 'eglot-ignored-server-capabilities :inlayHintProvider) (add-hook 'eglot-managed-mode-hook #'creature/eglot-load-markdown-for-doc) + (add-hook 'eglot-managed-mode-hook #'creature/eglot-c-mode-keybinding) ;; variable `eglot-prefer-plaintext' invoked in eglot-1.14 ;; and document only show one line by eldoc since eglot-1.14 @@ -63,7 +71,8 @@ bash-ts-mode cmake-mode-hook c-mode-hook - c++-mode-hook)) + c++-mode-hook + c-ts-base-mode-hook)) (add-hook hook #'eglot-ensure)) diff --git a/lisp/init-treesit.el b/lisp/init-treesit.el index 414b71a..5d17616 100644 --- a/lisp/init-treesit.el +++ b/lisp/init-treesit.el @@ -10,6 +10,11 @@ (add-to-list 'major-mode-remap-alist '(js-mode . js-ts-mode)) (add-to-list 'major-mode-remap-alist '(javascript-mode . js-ts-mode))) + (when (treesit-ready-p 'c) + (add-to-list 'major-mode-remap-alist '(c-mode . c-ts-mode))) + (when (treesit-ready-p 'cpp) + (add-to-list 'major-mode-remap-alist '(c++-mode . c++-ts-mode))) + (when (treesit-ready-p 'cmake) (add-to-list 'major-mode-remap-alist '(cmake-mode . cmake-ts-mode))))