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

[xyzzy:06599] Re: Perl.I は、 TAB が効かない ?



こんばんは、高安さん。

> 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

Index Home