smartchrの設定例

Emacs Advent Calendar jp: 2011 : ATNDに初参加です。そして遅れてすみませんでした...。

28日目はd:id:k1Lowさんの空気のようなEmacs Lisp -2011 冬-です。

自分が書く内容はsmartchr.elの設定例が出来上がってしまいましたので、smartchr.elの設定を記事にしました。かなり大きくてちょっと申し訳ないですが...。

しかしこの新しい2つの良さそうなものが出てきたのでこの設定は使われない可能性も大ですが、本当に使われなくなる前に書いておこうと思います。

このsmartchr.elの設定はweb上の設定をかき集めたり、こう入力してくれたらいいのにをかなり詰め込んでいます。

以下自分のsmartchrの設定


この設定の一部をとりだして表にするとこんな風になります。

"=" "=" " = " " == "
"+" "+" " + " "++" " += "
"-" "-" " - " "--" " -= "
"(" "(`!!')" "("
"[" "[`!!']" "`!!'" "["
"{" my-smartchr-braces "{" "{`!!'}"
"`" バッククォート "\``!!''" "\`"
"\"" ダブルクォート "\"`!!'\"" "\""
"\'" シングルクォート "\'`!!'\'" "\'"
">" ">" " > " " => " " >> "
"<" "<" " < " " << " "<`!!'>"
"," ", " ","
"." "." " . "
"?" "?" "? `!!' " "< ?`!!'? >"
"!" "!" " != "
"&" "&" " && "
"|" "|" " || "
"/" "/" "/* `!!' */" my-smartchr-comment
";" ";" my-smartchr-semicolon

参考にしたリンク

dolistを使ったadd-hookの設定をまとめるやり方はsakitoさんの設定を参考にしました。

この設定で一番取り上げたいことは

  • my-smartchr-braces
  • my-smartchr-comment
  • my-smartchr-semicolon

の3つの関数です。それぞれどんな関数かというと...

my-smartchr-braces {}を展開してくれて、さらにインデントしてくれる
my-smartchr-comment 複数行コメントのテンプレートを作ってれる
my-smartchr-semicolon セミコロンを行の最後の挿入してくれる


と、こういうわけなんですが、例を書くとこういう感じです。

  • my-smartchr-braces
{
    !! //←!!の場所にカーソルがインデントした状態で配置される
}
  • my-smartchr-comment
/*
 *  !!  //←!!の場所にカーソルが移動
 */
  • my-smartchr-semicolon
test.TestMethod();    //←カーソルが現在の行にあれば、どこにカーソルがあっても行の最後に
                          //配置してくれる

これがあればかなり快適にEmacsの補助を受けれる設定が整うんじゃないかと思います。

あと設定例ではダブルクォートとか()とかをちゃんと設定しているので良かったら使ってください。使う場合はコピペか、ここ(github:gist)でダウンロードしてください。それか下の式を*scratch*で評価してください。(auto-install.elが必要です。)

(auto-install-from-url "https://raw.github.com/gist/1378885/ae9df80f5625d15cc06006763874a0070db5d1d9/init-smartchr.el")

ダウンロードしたらinit.elなどの設定ファイルで

(require 'init-smartchr)

を追加すれば設定が有効になります。

最後はFINAPさんのrc-vstudio.elで、VisualStudioをEmacsの手中に収める - ハンバーグステーキ -> BAKUNETSU VICTORYです。

>>> 2012/1/2
見にくいところとか、間違ってるところを修正。auto-installの式とかも追加
>>>2012/1/14
requireのことを書くのを忘れていたのでその設定を追加

追記 2012/4/4

  • my-smartchr-braces
  • my-smartchr-comment
  • my-smartchr-semicolon

この関数は

を参照しています。