[xyzzy:03282] Re: c++-mode で TAB -> タブ文字 , C-i -> インデント , タブ幅 4 にしたい (続き )
- Subject: [xyzzy:03282] Re: c++-mode で TAB -> タブ文字 , C-i -> インデント , タブ幅 4 にしたい (続き )
- From: Hiroshi Saito <HiroshiSaito@xxxxxxx>
- X-mailer: Becky! ver 1.23
サイトウです。
亀井さん、
> じゃ、こう?
>
> (global-set-key #\F18
> #'(lambda ()
> (interactive)
> (let ((command (or (lookup-keymap (local-keymap) #\TAB)
> (lookup-keymap *global-keymap* #\TAB)))
> (*last-command-char* #\TAB))
> (command-execute (if (eq command mode-specific-indent-command)
> 'self-insert-command
> command)))))
>
> (set-extended-key-translate-table exkey-tab #\F18)
これなんですけれど、lisp-mode ではうまく行きましたが、
c++-mode では 期待していた動きになってくれませんでした。
調べてみたら、
<lispmode.l>
(setq mode-specific-indent-command 'lisp-indent-line)
<cc-mode.l>
(setq mode-specific-indent-command #'c-indent-line)
ここんところの違いで動かなかったみたいです。
ためしに、
(add-hook '*c++-mode-hook* #'(lambda ()
(setq mode-specific-indent-command 'c-indent-line)))
としてみたら、きちんと tab と C-i の使い分けが出来ました。
cc-mode.lでも、
関数定義でなく記号を与える方式でよいのではないでしょうか?
(setq mode-specific-indent-command 'c-indent-line)
ちなみに、
java.l ,perl.l ,c-mode.l でも同じでした。
-----------------------------------
サイトウ ヒロシ
HiroshiSaito@xxxxxxx