#author("2022-10-27T00:48:48+09:00","","")
#author("2023-04-08T12:21:28+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 (→[[Prog/formatter/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 | |

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS