[Date Prev] [Date Index] [Date Next]
[Thread Prev] [Thread Index] [Thread Next]

[xyzzy:03282] Re: c++-mode で TAB -> タブ文字 , C-i -> インデント , タブ幅 4 にしたい (続き )



サイトウです。

亀井さん、
> じゃ、こう?
> 
> (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

Index Home