by shigemk2

当面は技術的なことしか書かない

改行後すぐにインデントを行う

改行したあとにC-iとかでインデントかますのは結構しんどいよね。

というわけで、改行後すぐにインデントを行うemacs lispがありました。
【Emacs】 改行時のインデント: 日々此精進

以下を設定ファイルに追加するだけ。

;; 改行後インデント
(global-set-key "\C-m" 'newline-and-indent)

なお、newline-and-indentについて、mode-infoで調べてみたら…

-- コマンド: newline-and-indent
この関数は、改行を挿入してから、(改行を挿入したばかりの行に続く)
新たな行をメジャーモードに基づいて字下げする。

現在の`indent-line-function'を呼び出して字下げを行う。プログラム言
語向けのモードでは、これはTABが行うことと同じであるが、TABがタブを
挿入するテキスト向けのモードの一部では、`newline-and-indent'は
`left-margin'で指定されたコラムに字下げする。

と書いてあった。つまり、メジャーモードによってインデントの具合が違うとな。こりゃあ便利だ。

なお、普通のnewlineはインデントしないみたいっす。

-- コマンド: newline &optional NUMBER-OF-NEWLINES
このコマンドは、カレントバッファのポイントのまえに改行を挿入する。
NUMBER-OF-NEWLINESを指定すると、その個数だけ改行文字を挿入する。

この関数は、現在のコラム番号が`fill-column'の値よりも大きく
NUMBER-OF-NEWLINESが`nil'であると`auto-fill-function'を呼び出す。
`auto-fill-function'の典型的な仕事は改行を挿入することである。ここ
での全体としての効果は、改行を2つの異なる位置、つまり、ポイント位置
と行のまえの箇所に挿入することである。`newline'は、
NUMBER-OF-NEWLINESが`nil'以外であると自動詰め込みを行わない。

このコマンドは、左端の余白が0以外であるとその分だけ字下げする。
*Note Margins::。

戻り値は`nil'である。対話的に呼ばれると、COUNTは数値前置引数である。

あれ、今調べてみたら、C-jがnewline-and-indentになっている。
ところが、僕はSKKの切り替えをC-jにしているので、
あんま意味なかったりする。

難しいね、Emacs