Emacsの括弧補完をElectricPairからautopairに変更してみたよ

Emacsの括弧などなどを補完してくれるマイナーモードでElectricPairがあります。
Emacs24かなんかからか忘れましたがデフォルトで入っているはずなので、設定を追加してあげれば使えます。

    (defun electric-pair ()
      "If at end of line, insert character pair without surrounding spaces.
    Otherwise, just insert the typed character."
      (interactive)
      (if (eolp) (let (parens-require-spaces) (insert-pair)) (self-insert-command 1)))

これを書いたうえで。

(add-hook 'php-mode-hook
              (lambda ()
                (define-key php-mode-map "\"" 'electric-pair)
                (define-key php-mode-map "\'" 'electric-pair)
                (define-key php-mode-map "(" 'electric-pair)
                (define-key php-mode-map "[" 'electric-pair)
                (define-key php-mode-map "{" 'electric-pair)))

こう書いてあげれば動きます。
でもPHPモードで動かすと「()」の括弧の中にもう一度「()」を入れたいときに補完されないことに気がつく。
こーゆーやつね。

if(isset($value)){
...
}

うん。
たいした問題じゃないんだよね。
でも一度ハマると気になってしかたない。

これもちょっと設定変えれば、なんとでもできるんだろうけど、Emacs Lispが絶望的に分からない。
ということで便利なパッケージを探してみることに。

そんな時にこの記事を発見。

Emacsパッケージ特集 – Qiita [キータ] Emacsパッケージ特集 - Qiita [キータ]

括弧の補完にオススメのパッケージも紹介されていましたよ。
これね。

Fuco1/smartparens · GitHub

なにやら、いろいろな補完パッケージのいいとこどりをしたようなパッケージらしいです。
サクッとダウンロードしてつかってみました。

(require 'smartparens-config)
(smartparens-global-mode t)

これ書いたら使えます。
括弧の中の括弧も問題なく補完できるし、選択範囲の前後に括弧をあとから挿入することもできます。

こいつは便利だ!と思って使っていたのですが。またしても問題発生。

「DDSKK」と相性が悪いようです。(詳しくはわかりません)

ddskkで日本語入力で変換するとき例えば、「大変」だったら「▽たいへん」と打つと思いますが、この最初の「▽た」が表示されません。
「Shift → t → a」と押しているのに「▽あ」と表示されてしまいます。

母音がだめでみたいです。

これではかえって手間増えるだけなので、「Smartparens」はやめて、別のパッケージを探すことに。
そこでSmartparensがいいとこ取りをしているもとになっているパッケージをいれたらどうだろうかと思い「autopair.el」をインストールすることに

capitaomorte/autopair · GitHub

設定も

(add-to-list 'load-path "/path/to/autopair") ;; comment if autopair.el is in standard load path 
(require 'autopair)
(autopair-global-mode) ;; enable autopair in all buffers

とりあえずこれでオッケー。
動かしてみたら、ちょっと動作がモサッとしている感じはしますが無事に補完できています。
DDSKKとも干渉してないようです

ちょっと快適になったので、しばらく様子をみます。

追記:DDSKKとの干渉
ダメでした。やっぱり干渉します。症状はかな入力モードでC-hコマンドが効かなくなること。
困ったな。

スポンサードリンク

RSS購読のススメ

RSS

定期的に読んでいただけるかたはRSS登録しておくと便利です。RSS登録はこちら!!

びーおーぷんどっとねっとのRSS登録

Twitterでも情報をつぶやいているので、フォローしてみるといいかもしれません。

コメントを残す

サブコンテンツ

Profile

twitter

google+
@beopener12on Google+

Facebook

サイト内検索

記事を検索したいときはここにキーワードを入れて検索ボタンをクリックすれば見つかるかも・・・

スポンサードリンク

おすすめ

このページの先頭へ