Life is very short

2014-02-11

M-(の挙動を改善する

| 12:02

insert-parenthesesというデフォルトで "M-("にバインドされている

コマンドがあります. "M-("と入力すると "()"を挿入, "M-1 M-("の

ようにすると現在位置と 1単語分進んだ位置を括弧で囲うという挙動です.

M-2, M-3とするとそれだけの単語分進んだ位置を囲んでくれます.


"M-1 M-("の実行例

|foo

"|"にカーソルがある際, M-(を押すと

(|foo)

のようになります.


気になる点

paredit-modeを使っている人はわかると思うのですが, "M-("が

"M-1 M-("の挙動であって欲しいところです. ただ単に対となる

括弧が挿入したければ, autopairや smartparensを使えば済む

だけの話なので, それと "M-("を同じ挙動にしておくのはもったい

ないと思います.


修正

なので, "M-("を "M-1 M-("相当にしておくと便利だと思うので

そのような関数を作成してみました.

(custom-set-variables
 '(parens-require-spaces nil))

(defun my/insert-parentheses (arg)
  (interactive "P")
  (insert-parentheses (or arg 1)))
(global-set-key (kbd "M-(") 'my/insert-parentheses)

余分な空白を挿入しないように parens-require-spacesは nil

設定しておくとなおよいと思います.


おわりに

"M-("の改善案について示しました.

トラックバック - http://d.hatena.ne.jp/syohex/20140211/1392087767