|  |  | 
 |  |  | **** Clang-format
 | 
 |  |  | Automatically format buffer on save.
 | 
 |  |  | #+BEGIN_SRC emacs-lisp
 | 
 |  |  |   (when (file-exists-p "/usr/share/clang/clang-format.el")
 | 
 |  |  |     (load "/usr/share/clang/clang-format.el")
 | 
 |  |  |     (setq clang-format-linux-style (concat "{BasedOnStyle: LLVM,"
 | 
 |  |  |                                            "IndentWidth: 8,"
 | 
 |  |  |                                            "UseTab: Always,"
 | 
 |  |  |                                            "BreakBeforeBraces: Linux,"
 | 
 |  |  |                                            "AllowShortIfStatementsOnASingleLine: false,"
 | 
 |  |  |                                            "IndentCaseLabels: false}"))
 | 
 |  |  |     (setq-default clang-format-style clang-format-linux-style)
 | 
 |  |  |     (defun clang-format-on-save ()
 | 
 |  |  |       (add-hook 'before-save-hook 'clang-format-buffer nil t))
 | 
 |  |  |     (add-hook 'c-mode-hook 'clang-format-on-save nil t)
 | 
 |  |  |     (add-hook 'c++-mode-hook 'clang-format-on-save nil t))
 | 
 |  |  |       (defun set-clang-format-style ()
 | 
 |  |  |           (if (file-exists-p (concat
 | 
 |  |  |                               (projectile-project-root)
 | 
 |  |  |                               ".clang-format"))
 | 
 |  |  |               (setq-local clang-format-style nil)
 | 
 |  |  |             (setq-local clang-format-style (concat "{BasedOnStyle: LLVM,"
 | 
 |  |  |                                                    "IndentWidth: " (format "%s" tab-width) ","
 | 
 |  |  |                                                    "UseTab: " (if (eq indent-tabs-mode nil)
 | 
 |  |  |                                                                   "Never"
 | 
 |  |  |                                                                 "AlignWithSpaces")
 | 
 |  |  |   ","
 | 
 |  |  |                                                    "BreakBeforeBraces: Linux,"
 | 
 |  |  |                                                    "AllowShortIfStatementsOnASingleLine: false,"
 | 
 |  |  |                                                    "IndentCaseLabels: false}"))))
 | 
 |  |  | 
 | 
 |  |  |       (use-package clang-format
 | 
 |  |  |         :ensure t
 | 
 |  |  |         :hook (c-mode-common . (set-clang-format-style)))
 | 
 |  |  | 
 | 
 |  |  |       ;;   (defun clang-format-on-save ()
 | 
 |  |  |       ;;     (add-hook 'before-save-hook 'clang-format-buffer nil t))
 | 
 |  |  |       ;;   (add-hook 'c-mode-hook 'clang-format-on-save nil t)
 | 
 |  |  |       ;;   (add-hook 'c++-mode-hook 'clang-format-on-save nil t))
 | 
 |  |  | #+END_SRC
 | 
 |  |  | *** emacs-lisp
 | 
 |  |  | **** COMMENT Company
 |