Emacs で Ruby-mode を使ってコードを書いていると括弧やダブルクォーテンションの閉じるのが補完されて便利だなって思ってたんです。Perl を書く時ってメソッド呼び出す時の括弧とか、リファレンスの括弧とか結構括弧を多用しますよね。だからこれが他の言語モードでも使えればって思ったのです。
どうやら補完の Elisp は ruby-electric.el らしいってことがわかりました。これを Perl 使うときも On にしておけば補完される、しめしめ。とか思って使ってみると困ったことにループとか書いたあとに end まで補完されちゃって美しくない、end なんて Perl にはいらなし...
しかたなく ruby-electric.el のコードを眺めつつ、括弧を補完するのには必要な関数などを残しつつ、end などを補完する関数を削除してっとやってたら目的の物が出来ました。出来たはいいけど、cperl-mode に依存してて (僕が Elisp に詳しければちゃんとしたコードが書けるんですが) ちょっとコードとしては不恰好。もっと便利そうな Elisp がありそうなんですが、まぁ使えるからいいかなっと晒してみます。
perl-electric.el
cperl-mode に依存してるので、便宜上 perl-electric とかしてますが、あまり Perl とは関係ありません。ただ単に括弧などを補完して自動で閉じてくれるだけです。javascript-mode とかでも使えるはずです。
使い方
(require 'perl-electric)
.emacs に上記のように書いておけば読み込み OK !使う時は
M-x perl-electric
っとすればマイナーモードが起動する。
(add-hook 'cperl-mode-hook
'(lambda()
(progn
(perl-electric-mode t)
)))
.emacs で使いたいモードにフックしておけば、いちいち On/Off を切り替えなくていいのでちょっと便利。
自分は試していないんですが
http://d.hatena.ne.jp/buzztaiki/20061204/1165207521
というのもあるみたいです。
>xcezxさん
そうなんですよ。Elisp 書いたあとにそれ見つけて試したんですよ。
Emacs22 で試したんですが、エラーが出てうまく起動しないので諦めました。
もっと Emacs Lisp がわかってたら修正なり出来るんでしょうけど、
勉強が足りないので、今のところ自分ので妥協してるところですw
こめん、☆、付けてみました。でも僕が☆付けただけじゃ、コメントは書けない? みたいだね。じゃまた!(笑)
>gintacat
なんか僕の側の設定がおかしかったみたいです。
っで★消えちゃいましたw
ちょっと修正して様子見です。