括弧の自動挿入を改善する skeleton-pair-dwim.elをリリース
注意
アクセスありがとござます。申し訳ありませんが、このelispはメンテが困難になってしまったため、アップデートは行わない予定です。後継の、より柔軟で強力なflex-autopair.el(動画とドキュメント括弧の自動挿入の挙動をオレオレ設定できるflex-autopair.elで夢を叶える - むしゃくしゃしてやった)をお使いください。
vallog: Emacs: 「次の単語(というかS式)を指定した文字で囲む」 earmuff.el
に影響を受けて、今までの括弧の自動挿入系elispに対して不満をもっていたので作ってみました。
特徴
- 括弧などのペアになる文字を挿入します
- 例:(を押すと()が挿入され、カーソルがその間に移動します
- 誤って自分でペアを閉じようとした場合にカーソルを移動するだけにします
- カーソルを_で表す。
- 例:(_)の場合に)を押すと()_となります
- 自動挿入を抑制するフィルタを設定できます
- 例:文字列内にカーソルがある"_"の場合に(を押すと"(_"となります
- リージョンの前後をペアになる文字で連続して囲うことができます
- リージョンを[]で表す。
- 例:[aaa]の場合に(を押すと[(aaa)]となります。さらに{を押すと[{(aaa)}]となります。
- 自動挿入なしでリージョンを囲う機能のみをつかうことができます
- 例:リージョン選択をせずに<を押すと<のみが挿入され、[aaa]のときに<を押すと[
]となります
- 例:リージョン選択をせずに<を押すと<のみが挿入され、[aaa]のときに<を押すと[
- リージョン囲うときに押すキーに応じてカーソルの移動ができます
- 例:[aaa]_の場合に(を押すと_[(aaa)]となります
- マイナーモードを使わないので行儀が良い
- キーバインド設定用の関数が豊富
- ソースの量が少なく手を入れやすい?
インストール方法
GitHub - uk-ar/skeleton-pair-dwim
からダウンロードしてloadpathが通ったところにおくか、
emacsから
(auto-install-from-url "https://github.com/uk-ar/skeleton-pair-dwim/raw/master/skeleton-pair-dwim.el")
を評価してください
とりあえずの設定方法
とりあえず
(require 'skeleton-pair-dwim) (skeleton-pair-dwim-load-default)
で使用できます。
デフォルトの設定だと、
- { ( " ' ` [ が自動挿入ありでリージョンも囲める設定。
- < « が自動挿入なしでリージョンを囲める設定。
- 記号以外の文字の直前にカーソルがあるがある時には自動挿入なし。
- 記号以外の文字の直後にカーソルがあるがある時には自動挿入なし。
- 文字列内""にカーソルがある時には自動挿入なし。
- カーソルの直前が押した文字の時には自動挿入なし。
です。
詳細設定
モードによってキーをかえたり、フィルタを変えたりするには以下を行ってください
- 自動挿入ありでリージョンも囲めるキーを変更するには
(skeleton-pair-dwim-global-set-key '("{" "(" "\"" "'" "`" "[") 'self-insert-command);;unload default (skeleton-pair-dwim-define-key '(global-map emacs-lisp-mode-map) '("{" "(" "\"" ) 'skeleton-pair-insert-dwim)
とすることで、global-mapとemacs-lisp-mode-mapで{ ( "が有効になります。
(eval-after-load "ruby-mode"
- 自動挿入なしでリージョンを囲めるキーを変更するには
(skeleton-pair-dwim-global-set-key (skeleton-pair-dwim-default-alist-to-keys) 'self-insert-command);;unload default (skeleton-pair-dwim-define-key global-map "+" 'skeleton-pair-insert-dwim-earmuff)
- ペアを追加するには
><
><