[xyzzy:06599] Re: Perl.I は、 TAB が効かない ?
- Subject: [xyzzy:06599] Re: Perl.I は、 TAB が効かない ?
- From: Hiroshi Saito <HiroshiSaito@xxxxxxx>
- X-mailer: Becky! ver. 2.00.03
こんばんは、高安さん。
> xyzzyを使って現在Perlの勉強中で、服部さまの上記Lispを使用しております。
> さてそこで気がついた事なんですが、私の環境ですと
> TABキーが受けつけなくなってしまいました。
> スペースキーは大丈夫なんですが、これはこういった仕様なのでしょうか。
> また、回避する方法(TABキーを使えるようにしたい)があるのなら、
> ご伝授いただけますでしょうか。
私もむかしに同じような質問メールを出したことがあります。
解決方法から言いいますと、とりあえずこれ↓を
.xyzzy に書いとけば TAB キーでタブ文字が入力できるようになります。
; インデントキャンセル用仮想キー
(set-extended-key-translate-table exkey-tab #\F18)
(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)))))
perl-mode,c-mode などのプログラム言語モードにはたいてい
(define-key *perl-mode-map* #\TAB 'c-indent-line)
のようになっているのでデフォルトでは indent-lineが働いてしまいます。
> もしかすると違う類いのご質問になるかもしれませんが、
> いわゆる自動インデントをxyxxyで実現できますでしょうか。
Xyzzyは基本的には TabキーとC-iを同じ入力として受け取るらしいのですが、
上記の設定ならば、C-iは独立して indent-line にすることができるので、
if( $_ ){
$i++; ##ここで、C-iを押す
}
と、
if( $_ ){
$i++; ##ここで、C-iを押す
}
ということができます。
> # スペース、TABをいれた後改行すると、
> # 新しい行の最初にスペースが入る機能の事…
> # なんですけど言葉あってましたっけ(^^ゞ??)
そっちのことならば、
たぶん、C-jで期待の効果が出ると思いますよ。
> もう今さら従来のテキストエディターには戻れません…
メモ帳?
-----------------------------------
サイトウ ヒロシ
HiroshiSaito@xxxxxxx