#author("2020-07-11T05:00:24+00:00","","")
#author("2020-07-17T11:03:01+00:00","","")
#topicpath

////////////////////////////////////////////////////////////////////////////////
* 目次 [#xdc7c37e]
#contents();
#ls2(Editor/emacsen/);


////////////////////////////////////////////////////////////////////////////////
* 編集関連 [#d174f0d4]
//==============================================================================
** 矩形選択 [#h1d64252]
- rectangle-mark-mode を使う。
|~Key           |~Operation  |
|C-x SPC        |矩形選択の開始                                     |
|C-w/M-w/C-y    |選択した箇所をカット/コピー/ヤンク                |
|C-o            |矩形選択した箇所に空行を挿入                        |
|C-t CHAR       |矩形選択した箇所を CHAR で置換                      |
|C-SPC → (region選択) → C-x SPC |選択したリージョンを矩形選択に変更 |


////////////////////////////////////////////////////////////////////////////////
* 設定関連 [#l0e4033f]
 (setq frame-title-format (format "emacs@%s : %%f" (system-name)))	; タイトルバーの表示書式にファイル名を入れる

//==============================================================================
** lisp の場所を設定する [#sa55267e]
- load-path : 指定したディレクトリを lisp を走査する場所として設定する
-- 書式:
 (load-path <path-to-lisp-dir>)
-- 書式例:
 (load-path (expand-file-name "~/.emacs.d/lisp")) ; ${HOME}/.emacs.d/lisp 相当の絶対パスに変換される
- normal-top-level-add-subdirs-to-load-path : load-path に登録されたディレクトリの下位ディレクトリも lisp を走査の対象に含める
-- 書式:
 (normal-top-level-add-subdirs-to-load-path)
-- 環境によってはアクセス権の問題等でエラーになる場合があるので注意すること。

//==============================================================================
** タイトルバーの表示書式にファイル名を入れる [#h8aae4c1]
 (setq frame-title-format (format "emacs@%s : %%f" (system-name)))

//==============================================================================
** 文字色の変更 [#j1818f18]
- emacs 上で指定された文字色を変更する方法について。
- magit, xcscope などのパッケージで、文字色の制御を行っているものがある。これらは端末の background color などの関係で、場合によって却って見難くなることがある。

//------------------------------------------------------------------------------
*** terinal 上で動作させる場合 [#q0925a19]
- 方法1
 $ cat ${HOME}/.bashrc
 alias emacsd='env TERM=xterm emacs --daemon'
 alias emacs='emacsclient -t'
- 方法2
 $ TERM=xterm-256color emacs -nw
- 方法3 init.elに以下を追加する
 (defun terminal-init-gnome ()
   "Terminal initialization function for gnome-terminal."
 
   ;; This is a dirty hack that I accidentally stumbled across:
   ;;  initializing "rxvt" first and _then_ "xterm" seems
   ;;  to make the colors work... although I have no idea why.
   (tty-run-terminal-initialization (selected-frame) "rxvt")
   (tty-run-terminal-initialization (selected-frame) "xterm"))
- 方法4 init.elに以下を追加する
 (add-hook 'tty-setup-hook
           '(lambda ()
              (set-terminal-parameter nil 'background-mode 'dark)))



//------------------------------------------------------------------------------
*** どの変数で色定義されているかを調べる [#eefe35f4]
+ 対象となる文字列にカーソルを合わせた上で、以下を実行する:
 M-x: describe-face
すると、ミニバッファに以下のように表示される:
 Describe face (default `cscope-file-face'): 
+ ここで決定(return キーを押す)と、以下のように表示される:
 Face: cscope-file-face (sample) (customize this face)
 
 Documentation:
 Face used to highlight file name in the *cscope* buffer.
 
 Defined in `xcscope.el'.
 
            Family: unspecified
           Foundry: unspecified
             Width: unspecified
            Height: unspecified
            Weight: unspecified
             Slant: unspecified
        Foreground: yellow
 DistantForeground: unspecified
        Background: unspecified
         Underline: unspecified
          Overline: unspecified
    Strike-through: unspecified
               Box: unspecified
           Inverse: unspecified
           Stipple: unspecified
              Font: unspecified
           Fontset: unspecified
           Inherit: unspecified

//------------------------------------------------------------------------------
*** 色変更の定義 [#v3047709]
+ 上記を元に、以下のように設定してやれば、色を変えることが出来る
 (set-face-foreground 'cscope-file-face "#d54e53")  ; yellow → (RGB)=(0xd5,0x4e,0x53)


//==============================================================================
** 色設定 [#uf6d738d]
- ${HOME}/.bashrc での、emacs/XEmacs の色設定
 alias emacsk='emacs -bg "#303030" -fg white'
 alias emacsb='emacs -bg azure'
 alias emacsy='emacs -bg lightyellow'
 alias emacsg='emacs -bg "#e0ffe0"'
 alias emacsr='emacs -bg "#fff5f5"'
 
 alias xemacs='/usr/bin/xemacs21'
 alias xemacsb='xemacs -bg azure'
 alias xemacsy='xemacs -bg lightyellow'
 alias xemacsg='xemacs -bg "#e0ffe0"'
 alias xemacsr='xemacs -bg "#fff5f5"'

//==============================================================================
** {menu|tool}-barを消す [#y7f4f9fe]
 (tool-bar-mode 0)		; tool bar を表示しない
 (menu-bar-mode 0)		; menu bar を表示しない
 (which-function-mode 1)	; 現在の関数名をモードラインに表示

//==============================================================================
** 行頭に行番号を表示する(モード行ではなく) [#hd23498b]
- linum-mode を使用する(Emacs23以降で有効)
 M-x: linum-mode
- Toggle する関数
 ; 行番号表示をトグル
 ; http://qiita.com/yyamamot/items/df430d4e725ea38ffc9f
 (defun toggle-linum-mode ()
   "toggle display line number"
   (interactive)
   (setq linum-format "%4d ")
   (linum-mode
    (if linum-mode -1 1)))
 (global-set-key [f5]  'toggle-linum-mode)			; linum-mode
- 参考:[[Emacsで行番号表示をトグルする>http://qiita.com/yyamamot/items/df430d4e725ea38ffc9f]]

//==============================================================================
** モードラインに現在カーソルが位置している関数の関数名を表示する [#h095036c]
- モードラインに、現在カーソルがある位置の関数名を動的に表示することが出来る。
 M-x: which-function-mode
- .emacs に設定するには、
 (setq which-function-mode t)
 

////////////////////////////////////////////////////////////////////////////////
* Time-stamp [#m59e6eee]
 ; Time-stamp
 ; http://homepage.mac.com/zenitani/elisp-j.html#time-stamp
 (require 'time-stamp)
 (setq time-stamp-start "Last updated: <")	; 開始文字列の設定。通常は "Time-stamp: <>"
 ;; 日本語で日付を入れたくないのでlocaleをCにする
 (defun time-stamp-with-locale-c ()
   (let ((system-time-locale "C"))
     (time-stamp)
     nil))
 (if (not (memq 'time-stamp-with-locale-c write-file-hooks))
     (add-hook 'write-file-hooks 'time-stamp-with-locale-c))
 ; (setq time-stamp-format "%3a %3b %02d %02H:%02M:%02S %Z %:y")
 (setq time-stamp-format "%04y/%02m/%02d %02H:%02M:%02S %Z")	; YYYY/MM/DD HH:MM:SS JST

////////////////////////////////////////////////////////////////////////////////
* 文字数を数える [#t87cae47]
- 対象領域を選択し、
 M-x: count-lines-region
または
 M-=
とする。
- 行数と文字数が表示される。文字数は、全角も半角もそれぞれ1文字として扱われる。

////////////////////////////////////////////////////////////////////////////////
* isearch で、カーソルの位置にある単語を検索対象にする [#t5442189]
- isearch時に、 C-w と打てばOK

////////////////////////////////////////////////////////////////////////////////
* shell-mode で制御文字を処理する [#s805f2e5]
 ; shell-mode で制御文字を処理する。
 (autoload 'ansi-color-for-comint-mode-on "ansi-color"
           "Set `ansi-color-for-comint-mode' to t." t)
 (add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)

////////////////////////////////////////////////////////////////////////////////
* ファイルを read-only で開く [#sd5faa53]
 C-x C-r

////////////////////////////////////////////////////////////////////////////////
* バックアップファイルを作らないようにする [#d7ff8fd4]
 (setq make-backup-files nil)  ; *.~ とかのバックアップファイルを作らない
 (setq auto-save-default nil)  ; .#* とかのバックアップファイルを作らない


////////////////////////////////////////////////////////////////////////////////
* 選択領域を [DEL] で一気に消せるようにする [#y95ca8b8]
 ; (setq delete-selection-mode t)
 (delete-selection-mode)


////////////////////////////////////////////////////////////////////////////////
* HTML文書編集での自動補完 [#d02f9e86]
- yahtmlを使う(yahtmlは、YaTeXに付属しているもの)。
- [[参考リンク>http://www.namazu.org/~tsuchiya/elisp/yahtml-mode.html]]


////////////////////////////////////////////////////////////////////////////////
* scroll を1行単位にする [#l150a348]
 (setq scroll-step 1)


////////////////////////////////////////////////////////////////////////////////
* 分割した window のサイズを変える [#y029a37e]
|~command |~description |~remark |
|M-x: enlarge-window |縦方向にサイズを大きくする | |
|M-x: shrink-window  |縦方向にサイズを小さくする | |
|M-x: enlarge-window-horizontally |横方向にサイズを大きくする | |
|M-x: shrink-window-horizontally |横方向にサイズを小さくする | |

- 参考: emacs25.1.1 では以下のように設定することで、キー割り当てが出来た
 (global-set-key (kbd "M-<up>")    'enlarge-window)
 (global-set-key (kbd "M-<down>")  'shrink-window)
 (global-set-key (kbd "M-<right>") 'enlarge-window-horizontally)
 (global-set-key (kbd "M-<left>")  'shrink-window-horizontally)

- 参考: emacs23 では以下のように設定することで、キー割り当てが出来た
 (global-set-key "M-<up>"    'enlarge-window)
 (global-set-key "M-<down>"  'shrink-window)
 (global-set-key "M-<right>" 'enlarge-window-horizontally)
 (global-set-key "M-<left>"  'shrink-window-horizontally)


////////////////////////////////////////////////////////////////////////////////
* ウインドウ自動分割時の制御 [#k8d8ac5a]
- ウインドウが自動分割される際の、垂直分割・水平分割の制御
- 垂直分割を防ぐには、下記を設定する:
 (setq split-width-threshold nil)
- 挙動としては、
++ split-height-threshold の値が選択したウィンドウより小さい場合、下側にウィンドウを分割する。
++ そうでない場合、 split-width-threshold がウィンドウの横幅より小さい場合は、右側に分割する。
++ どちらも満たさず、既にウィンドウが分割されてない場合は、下側にウィンドウを分割することを試みる。


////////////////////////////////////////////////////////////////////////////////
* beep 音を消す [#oe941343]
- 以下を設定することで、beep が一切無効になる
 (setq ring-bell-function 'ignore) ; beep を一切無効にする

- 嘗ては、以下の設定でカスタマイズすることが出来たが、emacs 24.4.1 では効かないようである。
-- Visible bell にする
 (setq visible-bell t);; Visual Bell有効(エラー時画面反転)
 ;(setq visible-bell nil);; Visual Bell無効(エラー時ブザー音)
-- beep を鳴らさないようにする
 ; (setq message-beep 'silent)



////////////////////////////////////////////////////////////////////////////////
* 前のウインドウに戻る [#ia6f365e]
 ; XEmacsにはあるが、emacsにはない(!)
 ; http://matome.replore.com/index.php?title=Emacs_Lisp%E3%81%BE%E3%81%A8%E3%82%81
 ; xemacsに合わせて、関数名を backward-other-window に変更。
 ; (defun other-window-backward (&optional n)
 (defun backward-other-window (&optional n)
   "Select nth previous window."
   (interactive "P")
   (other-window (- (prefix-numeric-value n))))

////////////////////////////////////////////////////////////////////////////////
* 起動済みのemacs にファイルを渡す (emacsclient) [#ob79c7cd]
- emacs起動時に、emacs-serverが起動するようにしておく必要がある。
-- .emacs に以下の行がなければ追記する:
 (server-start)
- 起動済みのemacsに、コマンドラインからファイルを渡す方法
 $ emacsclient <file-name> &
-- ファイルを送っただけのようで、実際には送り先のemacsとは別プロセスとして稼働するらしい。 '&' を付けないと、コマンドを打った端末のフォアグラウンドジョブになってしまう。
-- 上記コマンドを打った端末を終了すると、送り先のemacsからも、送られたファイルのエントリが消えてしまうので注意すること。
-- どうしてもemacsclientを起動した端末が死んでも構わないようにしたいなら、nohupコマンドから起動すればよい。
 $ nohup emacslient <file-name> &
→[[System/Process#never-kill]]

////////////////////////////////////////////////////////////////////////////////
* 検索時に大文字・小文字を区別するかしないかの設定 [#case-fold-search]
 (setq default-case-fold-search nil)  ; 大文字・小文字を区別させる(〜emacs23.1)
 (setq case-fold-search nil)          ; 大文字・小文字を区別させる (emacs23.2〜)
- emacs23.2 以降では default-case-fold-search ではなく case-fold-search を使うように推奨されている&br;(see also M-x describe-variable case-fold-search)


////////////////////////////////////////////////////////////////////////////////
* ediff [#ediff]
//==============================================================================
** control window を別ウインドウにしないようにする [#s0475775]
- X11 環境では、デフォルトではコントロールウインドウが別のウインドウとして表示される。これをコンソール内で ediff を起動したときと同様、同じウインドウ内に表示するには、以下の設定を行う:
- 方法1
++ M-x: customize-group
++ [Ediff Window Setup Function] 行頭の三角をクリックし、詳細を表示する
++ [Value Menu] をクリックし、プルダウンから [Single Frame] を選択
++ バッファ先頭付近の [Apply and Save] をクリックして設定・保存する
- 方法2:以下を設定する:
 ;; コントロール用のバッファを同一フレーム内に表示
 (setq ediff-window-setup-function 'ediff-setup-windows-plain)
 ;; diffのバッファを上下ではなく左右に並べる
 (setq ediff-split-window-function 'split-window-horizontally)
 (provide 'ediff.conf)
//------------------------------------------------------------------------------
*** 参考リンク [#qd6e9c5e]
- [[同一フレーム内にediffのコントロールバッファを表示>https://yamadawindsurf.blogspot.com/2016/07/ediff.html]]



////////////////////////////////////////////////////////////////////////////////
* カレンダーで日本の祝日を表示する [#u4db1263]
- M-x: calendar で表示するカレンダーで日本の祝日を表示する方法。
- japanese-holidays.el を入手する
-- 入手先: https://github.com/emacs-jp/japanese-holidays/blob/master/japanese-holidays.el
- 設定
-- 参考: http://blog.livedoor.jp/tek_nishi/archives/3027665.html
- enmacs 起動時に cl-lib が見つからないと怒られた場合
-- cl-lib.el を入手し、load-path の通っているところに配置する。ちなみに Debian7 では相当するファイルはリポジトリにない模様。自分で取ってきて仕込むこと。
-- 入手先: http://elpa.gnu.org/packages/cl-lib.html


////////////////////////////////////////////////////////////////////////////////
* gdb-mode [#gdb-mode]
- 設定(${HOME}/.emacs.d/site-lisp/gdb.conf.el)
 ;; http://d.hatena.ne.jp/kobapan/20090506/1241593531
 ;;; GDB 関連
 ;;; 有用なバッファを開くモード
 (setq gdb-many-windows t)
 
 ;;; 変数の上にマウスカーソルを置くと値を表示
 (add-hook 'gdb-mode-hook '(lambda () (gud-tooltip-mode t)))
 
 ;;; I/O バッファを表示
 (setq gdb-use-separate-io-buffer t)
 
 ;;; t にすると mini buffer に値が表示される
 (setq gud-tooltip-echo-area nil)

- gdb-mode のコマンド
|~bindings |~description |~remark |
|C-x C-a C-t |ソースコードの現在のカーソル位置に break point を設定する | |
|C-h m |EmacsのGDBモードの機能に関する説明を表示 | |
|M-s |Step実行。関数なら入って止まる | |
|C-x C-a C-s |~|~|
|M-n |GDBのnextコマンドのように、 関数呼び出しをすべてスキップして、 現在の関数内の次のソース行まで実行 | |
|C-x C-a C-s |~|~|
|M-i |GDBのstepiコマンドのように、 1命令を実行 | |
|C-x C-a C-i |~|~|
|M-x gdb-nexti |GDBのnextiコマンドを使って、 次の命令まで実行 | |
|C-c C-f |GDBのfinishコマンドのように、 選択されたスタック・フレームを終了するまで実行を継続 | |
|M-c |GDBのcontinueコマンドのように、 ユーザ・プログラムの実行を継続 | |
|M-u |GDBのupコマンドのように、 数値引数によって示される数だけ上位のフレームに移動 | |
|M-d |GDBのdownコマンドのように、 数値引数によって示される数だけ下位のフレームに移動 | |
|C-x &amp; |カーソルの位置にある数値を読み取り、 GDBのI/Oバッファの末尾に挿入 | |
|C-x C-a C-r |次の break point まで実行 | |
|C-x C-a C-f |現在のカーソル位置まで実行 | |


////////////////////////////////////////////////////////////////////////////////
* helm [#helm]

** 入手先 [#s31bbdeb]
- [[GitHub: emacs-helm/helm>https://github.com/emacs-helm/helm]]

** 参考リンク [#g7fffd17]
- [[初心者〜初級者のためのEmacs-Helm事始め : 前編>https://qiita.com/jabberwocky0139/items/86df1d3108e147c69e2c]]
- [[【Emacs】helmを使う>https://www.yokoweb.net/2017/01/20/emacs-helm-mode/]]


////////////////////////////////////////////////////////////////////////////////
* clang-format [#o04f0607]
//==============================================================================
** 環境構築 [#qeac0163]
+ パッケージをインストールする
 apt-get install clang-tools-7 clang-format
+ clang-tools のパスを通す
 export PATH=/usr/lib/llvm-7/bin:${PATH}
+ emacs 向けパッケージの設定
-- package-install を使う場合
 M-x package-install lsp-mode lsp-ui company-lsp dash-el elpa-f s-el elpa-markdown-mode dash-el
--- これとは別途、パッケージが存在しない ht.el を、下記と同様に取得する。
-- 個別に lisp を取ってくる場合
+++ 以下のリポジトリを取得する:
|~package name |~package repository URI                         |~remark |
|lsp-mode      |http://github.com/emacs-lsp/lsp-mode.git        |各種LSPの言語モードを実装している。 C/C++ の設定もここに含まれる。 |
|lsp-ui        |https://github.com/emacs-lsp/lsp-ui.git         |補完を担うcompany-modeのLSP向け設定 |
|company-lsp   |https://github.com/tigersoldier/company-lsp.git |ドキュメントの表示など各種アクションを実装している。 |
|elpa          |https://git.savannah.gnu.org/git/emacs/elpa.git |elpa/packages/cl-generic 等を使用する為に取得する。サイズが大きいので注意。 |
|ht            |https://github.com/Wilfred/ht.el.git            |debian9のパッケージには存在しない。lsp-mode の動作に必要 |
|dash          |https://github.com/magnars/dash.el              | |
|f             |https://github.com/rejeep/f.el                  | |
|s             |https://github.com/magnars/s.el                 | |
|markdown-mode |https://github.com/jrblevin/markdown-mode.git   | |
|clang-format  |https://github.com/sonatard/clang-format.git    |clang-format-<version> package に含まれる |
|flycheck-mode |https://github.com/flycheck/flycheck            | |
|projectile    |https://github.com/bbatsov/projectile           | |
~
+++ 上記各リポジトリを tag で checkout する
|~package name |~tag            |~remark |
|lsp-mode      |refs/tags/7.0   | |
|lsp-ui        |refs/tags/7.0   | |
|company-lsp   |refs/tags/2.1.0 | |
|elpa          |(HEAD)          |tagは試行中。動かなかったら検討する。 |
~
+++ 上記各リポジトリのファイルが emacs から見える場所に配置する。~
${HOME}/.emacs.d/init.el への記述例
 ;;; ~/.emacs/init.el
 ;;; ~/.emacs.d/site-lisp 配下に各リポジトリを配置した場合の設定例
 (setq load-path (cons (expand-file-name "~/.emacs.d/site-lisp/dash") load-path))                     ; dash
 (setq load-path (cons (expand-file-name "~/.emacs.d/site-lisp/elpa/packages/cl-generic") load-path)) ; cl-generic
 (setq load-path (cons (expand-file-name "~/.emacs.d/site-lisp/ht") load-path))                       ; ht.el
 (setq load-path (cons (expand-file-name "~/.emacs.d/site-lisp/elpa/packages/hydra") load-path))      ; lv.el
 (setq load-path (cons (expand-file-name "~/.emacs.d/site-lisp/elpa/packages/spinner") load-path))    ; spinner.el
 (setq load-path (cons (expand-file-name "~/.emacs.d/site-lisp/elpa/packages/company") load-path))    ; company.el
 (setq load-path (cons (expand-file-name "~/.emacs.d/site-lisp/markdown-mode") load-path))            ; markdown-mode
 (setq load-path (cons (expand-file-name "~/.emacs.d/site-lisp/flycheck") load-path))                 ; flycheck
 
 (setq load-path (cons (expand-file-name "~/.emacs.d/site-lisp/projectile") load-path))               ; projectile
 (require 'projectile)
 
 (setq load-path (cons (expand-file-name "~/.emacs.d/site-lisp/lsp-mode") load-path))
 (require 'lsp-mode)
 
 (setq load-path (cons (expand-file-name "~/.emacs.d/site-lisp/lsp-ui") load-path))
 (require 'lsp-ui)
 
 (setq load-path (cons (expand-file-name "~/.emacs.d/site-lisp/company-lsp") load-path))
 (require 'company-lsp)
 
 (setq load-path (cons (expand-file-name "~/.emacs.d/site-lisp/clang-format") load-path))
 (require 'clang-format)
~
+ 設定を記載する
 ;;; .clang-firmat を読み込ませる関数を定義
 ;; https://eklitzke.org/smarter-emacs-clang-format
 (defun clang-format-buffer-smart ()
   "Reformat buffer if .clang-format exists in the projectile root."
   (interactive)
   (when (f-exists? (expand-file-name ".clang-format" (projectile-project-root)))
     (clang-format-buffer)))
 
 ;; https://eklitzke.org/smarter-emacs-clang-format
 ;(defun clang-format-buffer-smart-on-save ()
 ;  "Add auto-save hook for clang-format-buffer-smart."
 ;  (add-hook 'before-save-hook 'clang-format-buffer-smart nil t))
 
 
 ;;; hooks
 (add-hook 'c++-mode-hook 'company-mode)  ; 補完用
 (add-hook 'c-mode-hook   'company-mode)  ; 補完用
 (add-hook 'c++-mode-hook 'flycheck-mode) ; チェック用
 (add-hook 'c-mode-hook   'flycheck-mode) ; チェック用
 (add-hook 'c++-mode-hook #'lsp)
 (add-hook 'c-mode-hook   #'lsp)
 
 
 ;;; 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-smart)
 ; (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 が通っている場所に、バージョン番号を含むファイル名で配置されている)場合がある。
 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 に手を加えて、独自のフォーマットルール設定を作ることが出来る。


//==============================================================================
** 参考 URI [#sb5f0ebe]
- [[EmacsでC/C++用にclangdとclang-formatを使う - Qiita>https://qiita.com/kari_tech/items/4754fac39504dccfd7be]]
- [[EmacsのC/C++開発環境を整える [lsp-mode, ccls] | | meda-log>https://blog.medalotte.net/archives/473]]
- [[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/]]
- f.el
-- [[モダンなファイル、ディレクトリを扱うAPIのf-elのインストールと設定>https://emacs.tsutomuonoda.com/f-el/]]
-- [[Emacsのモダンなライブラリ4+1選 (2013年版)>https://qiita.com/pogin503/items/01005402dc7cfd375b55]]
- ht.el
-- [[Emacsのハッシュテーブルライブラリht-elのインストールと設定>https://emacs.tsutomuonoda.com/ht-el/]]
-- [[Emacsのモダンなライブラリ4+1選 (2013年版)>https://qiita.com/pogin503/items/01005402dc7cfd375b55]]
-- [[ht.el : 【Rubyist歓喜】ハッシュテーブルを超絶使いやすくするライブラリ>http://emacs.rubikitch.com/ht/]]
- markdown-mode
-- [[markdown-modeで“GitHub Flavored Markdown”を実現する>https://qiita.com/ybiquitous/items/34a4c3cb33f26136f670]]
- [[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 | |





////////////////////////////////////////////////////////////////////////////////
* 参考リンク [#links]
- [[るびきち「日刊Emacs」>http://rubikitch.com/]]
- [[Programming in Emacs Lisp [ja]>http://www.math.s.chiba-u.ac.jp/~matsu/lisp/emacs-lisp-intro-jp.html]]
- [[Meadow/Emacs memo>http://www.bookshelf.jp/soft/meadow.html#SEC_Top]]
- [[Emacs 活用法>http://www.math.s.chiba-u.ac.jp/~matsu/emacs/emacs21/index.html]]
- [[navi.el(関数の一覧表示とジャンプ)>http://www.ne.jp/asahi/love/suna/pub/soft/navi.el/index.html]]
-- fume-mode.el は XEmacsでしか使えないが、これはemacsで使える。
- [[Emacs Lispまとめ>http://matome.replore.com/index.php?title=Emacs_Lisp%E3%81%BE%E3%81%A8%E3%82%81]]

- [[CEDET>http://sourceforge.jp/projects/sfnet_cedet/]]
-- [[Undo-tree.el>http://www.emacswiki.org/emacs/UndoTree]]


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS