2011-02-12

delete-selection-mode が効かない場合

delete-selection-mode は選択範囲がある時に文字を入力すれば、その範囲を消すというマイナーモード。
(delete-selection-mode 1)
と ~/.emacs.el や ~/.emacs.d/init.el に書けば有効になる。

ただし、文字列を入力する自作のコマンドを定義した場合、プロパティを追加しないと選択範囲を消してくれません。
プロパティについてはこちら プロパティリストを調べる describe-plist

例えば insert-lambda という文字列入力コマンドを定義した場合、このように設定します。
(defun insert-lambda ()
  (interactive "*")
  (insert "lambda"))

(put 'insert-lambda 'delete-selection t)

t 以外に 'yank, 'supersede, 'kill 等を設定できる。
詳しくはソースを参照。
M-x find-function RET delete-selection-mode RET