diff options
Diffstat (limited to 'lisp/cpp.el')
| -rw-r--r-- | lisp/cpp.el | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/lisp/cpp.el b/lisp/cpp.el index c22f771..d6b1cad 100644 --- a/lisp/cpp.el +++ b/lisp/cpp.el @@ -1,4 +1,9 @@ +(use-package clang-format + :ensure t) +(use-package projectile + :ensure t) + ;;; Code: (defun setup-c() "Set up c common mode." @@ -26,10 +31,23 @@ (shell-command (format "cd %s && cmake -S . -B build -D CMAKE_EXPORT_COMPILE_COMMANDS=1" (projectile-project-root))) ) -(defun maybe-regenerate-compile-commands() +(defun mk/cpp/maybe-regenerate-compile-commands() (if (string= (buffer-file-name) "CMakeLists.txt") (mk/cpp/generate-compile-commands-cmake))) +(defun mk/clang-format-buffer-if-project-file () + "Run clang-format-buffer only if a .clang-format exists in the Projectile project." + (when (and (projectile-project-p) ; inside a projectile project + (locate-dominating-file (buffer-file-name) ".clang-format")) + (clang-format-buffer))) + +;; Add this hook to C/C++/ObjC modes +(add-hook 'c-mode-common-hook + (lambda () + (add-hook 'before-save-hook + #'mk/clang-format-buffer-if-project-file + nil 'local))) + (add-hook 'after-save-hook 'maybe-regenerate-compile-commands) (provide 'cpp) |
