EmcasのC-mを便利にするsmart-newline.elを公開した
昨日の記事(EmacsのC-mを便利にしてキーバインド先を増やすハック - ainameの日記)で公開した設定を使ってくれたっぽい人が何人かいたので、ちょっと直してgithubに公開した。
https://github.com/ainame/smart-newline.el
詳細は、昨日の記事や短いのでソースコード参照だけど、要するにC-mだけでC-oとC-jをまかなって、その2つのキーを別の拡張用に割り当てようという試みです。(indentなしのnewlineは使わない前提だけど) まだ使い始めたばかりなので快適かどうかよくわからない。
使い方は、git cloneするか、el-get用に
(setq el-get-sources '( (:name smart-newline :type github :website "https://github.com/ainame/smart-newline.el" :pkgname "ainame/smart-newline.el") ) )
こんな感じでレシピを追加してインストールして、一行設定を書く。
(define-key global-map (kbd "C-m") 'smart-newline)
昨日公開した物のままだと以下の様な時に困ったので仕様を修正してる。
↓にカーソルがある状態 |def foo xxx end
↓[C-m]
| ←にカーソルが来て新しいメソッドを書き始める def foo xxx end
↓def[SPC]
def |←defまで打つとendが補完される end def foo xxx end
↓bar[C-m]
def bar | ←barというメソッド名書いて改行したけど、endと次のdefの間に改行なくて気持ち悪い。 end def foo xxx end
上の様な場合が気持ち悪いので、最初にfooメソッドのdefの前で改行を入れた後に2回改行叩くと、↓の状態になるように修正した。
↓にカーソルがある状態 |def foo xxx end
↓[C-m][C-m]
| ←def fooの行の先頭から2連続で改行したらopen-line2回実行できて気持よくメソッド書き始められる def foo xxx end
あと他に、S式の途中みたいな箇所で改行する時に、open-line使われておかしい感じだったのを、newline-and-indent使うようにした。 かなり適当な拡張の割にsmartって名前付けてしまって名前負けしてる気がするのでMELPA等への公開は予定しておりません。