#author("2022-10-27T00:48:48+09:00","","") #topicpath /////////////////////////////////////////////////////////////////////////////// * 目次 [#eeefac0c] #contents(); //////////////////////////////////////////////////////////////////////////////// * clang-format [#o04f0607] //============================================================================== ** 環境構築 [#qeac0163] + パッケージをインストールする apt-get install clang-tools-7 clang-format ~ + 設定を記載する (require 'clang-format) ;;; key bindings ;;; 以下は clang-format の README.md の記載より転記した。 (global-set-key (kbd "C-c i") 'clang-format-region) (global-set-key (kbd "C-c u") 'clang-format-buffer) ; (global-unset-key "\C-\M-q") ; (global-set-key (kbd "C-M q") 'clang-format-region) ~ -- clangd を呼び出せるようにする --- clangd は、PATH が通ってない(または、PATH が通っている場所に、バージョン番号を含むファイル名で SymLink が配置されている)場合がある。 debian9 の場合は、以下にある: $ locate clangd /usr/bin/clangd-7 # 下記の SymLink /usr/lib/llvm-7/bin/clangd この場合、以下のように設定する: ;;; lsp-mode ;; https://qiita.com/false-git@github/items/3cb6ebd7f4d6f77acc54 (setq lsp-clients-clangd-executable "clangd-7") ; または ; (setq lsp-clients-clangd-executable "/usr/bin/clangd-7") //============================================================================== ** フォーマットルールを設定する [#fbad4231] //------------------------------------------------------------------------------ *** 用意されたフォーマットルールを利用する [#t4ca6625] ;;; ~/.emacs/init.el ;;; format-style (setq clang-format-style-option "llvm") ; llvm スタイルのフォーマットルールを利用する場合 //------------------------------------------------------------------------------ *** 個別に設定を行う [#xe3b81ee] - .clang-format にルールを記載すると、それが読み込まれて適用される。 -- .clang-format は再帰的に上位ディレクトリを探しに行くようになっているので、どんな場合でも適用したい書式が決まっている場合は、 ${HOME} 直下に .clang-format を配置すると良い。 - .clang-format は、規定の書式から dump して作成することが出来る。 -- google スタイルのフォーマットルールを .clang-format に出力する例: $ clang-format -style=google -dump-config > .clang-format -- 出力された .clang-format に手を加えて、独自のフォーマットルール設定を作ることが出来る。 //============================================================================== ** clangd にオプションを認識させる [#pa8a1963] - compiledb を使う - インストール $ pip3 install compiledb - パスを通す -- compiledb は ~/.local/bin にインストールされる。 ${HOME}/.local/bin - compiledb に json を吐かせる $ compiledb make //============================================================================== ** 参考 URI [#sb5f0ebe] - [[EmacsでC/C++用にclangdとclang-formatを使う - Qiita>https://qiita.com/kari_tech/items/4754fac39504dccfd7be]] - [[clang-format を導入してカスタマイズした :: プログラマになりたい人生 — プログラマになりたいおじさんの日記>https://blog.takuchalle.dev/post/2018/04/26/setup_clang_format/]] - [[ClangFormat — Clang 11 documentation>https://clang.llvm.org/docs/ClangFormat.html]] - [[GNU Emacs Lisp Package Archive>https://elpa.gnu.org/]] - [[Smarter clang-format In Emacs>https://eklitzke.org/smarter-emacs-clang-format]] --- .clang-firmat を読み込ませるための設定 //////////////////////////////////////////////////////////////////////////////// * clang-format-plus [#e58e4cc6] - clang-format の機能拡張版 - clang-format に依存する |~package name |~package repository URI |~remark | |clang-format+ |https://github.com/SavchenkoValeriy/emacs-clang-format-plus | |