Hatena::ブログ(Diary)

ひだちのいろの日記 RSSフィード

2010/10/28

[]TABを押したとき状況に応じてインデントしたり補完したり

debbrev を用いた補完は便利なんだけどデフォルトキーバインドが押しにくい。

補完機能のキーバインドは C-SPC が VisualStudioeclipse などで 使われているけど、emacs ではマーク設定に使用するので衝突してしまう。

そこでシェルで補完機能に使われている TAB に白羽の矢が立つのだが、こちらもインデントで使用済。

でもインデントと補完なら住み分けができるんじゃない? ってことでカーソルが行頭にあるかカーソル前が空白のときはインデント、そうでなければ補完を行う Emacsスニペットを書いてみた。C++ モードの挙動を変更する形で。

(add-hook 'c++-mode-hook 
  '(lambda ()
    (define-key c++-mode-map "\t" 
      (lambda ()
	(interactive)
	(if (looking-back "\s\\|^") (c-indent-command) (command-execute 'dabbrev-expand))))))

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/mugaki/20101028/1288249223
Connection: close