Files

44 lines
1.5 KiB
EmacsLisp

;;; development/cpp.el -*- lexical-binding: t; -*-
;; 4. Optional: Fine-tuning Clangd
;; These arguments are passed directly to the clangd binary.
(setq lsp-clients-clangd-args
'("-j=4"
"--background-index"
"--clang-tidy"
"--completion-style=detailed"
"--header-insertion=never"
"--header-insertion-decorators=0"))
(after! lsp-clangd
(set-lsp-priority! 'clangd 2)) ; Ensure clangd is preferred over ccls
;; Formatting for c++
;; This tells Doom to use the LSP server (clangd) for formatting instead of
;; a separate clang-format call via apheleia.
(setq-hook! '(c-mode-hook c++-mode-hook) +format-with-lsp t)
;; Formatting as I type
;; This enables real-time formatting as you type trigger characters like ; or }
(after! lsp-mode
(setq lsp-enable-on-type-formatting t))
;; Ensure cc-mode settings align with clangd/clang-format
;; While clangd handles most things, basic Emacs indentation settings are
;; still useful as a fallback or for initial indentation.
(after! cc-mode
(setq-default c-basic-offset 2)
(c-add-style "doom-cpp"
'("llvm"
(c-basic-offset . 2)
(c-offsets-alist . ((innamespace . 0)
(access-label . -)
(arglist-intro . +)
(arglist-cont-nonempty . +)))))
(add-hook! '(c-mode-hook c++-mode-hook)
(c-set-style "doom-cpp")))
;; Add C++ documentation support
(set-docsets! 'c++-mode "C++")
(set-docsets! 'c-mode "C")