アプリ版:「スタンプのみでお礼する」機能のリリースについて

xyzzyで拡張子がcgiやpl, pmのファイルを編集しているのですが、そのファイルを開くとタブが効きません。
新規で開いたファイルはタブが効きますが、xyzzyでどのように設定すればよいのでしょうか?

A 回答 (4件)

> (set-tab-columns 2 (selected-buffer))


> (setq *perl-indent-column* (tab-columns > (selected-buffer)))
> (setq indent-tabs-mode t)

これで動いているってのが不思議です。
set-tab-columns ってのはタブコードを最大何個のスペースと
見なすかという設定ですし、
indent-tabs-modeにtを設定したときは、インデントに使うキャラクタを
可能なところではタブキャラクタにするという指定です。
tab-columnsは指定したバッファでのタブ幅です。


set-tab-columns - refwiki
http://xyzzy.s53.xrea.com/reference/wiki.cgi?p=s …
tab-columns - refwiki
http://xyzzy.s53.xrea.com/reference/wiki.cgi?p=t …


モードが Fundamentalになっているのでperlモードそのものが
無効になっているんじゃないでしょうか。

まあ目的が果たせたというのならいいですけど。
    • good
    • 0

訂正



(setq *auto-mode-alist (remove-if (lambda (x) (string-equal "\\.cgi$" (car x))) *auto-mode-alist*))


(setq *auto-mode-alist は
(setq *auto-mode-alist* の間違いです。
    • good
    • 0
この回答へのお礼

;Perlモードでタブを有効にする
(add-hook '*perl-mode-hook*
#'(lambda ()
(set-tab-columns 2 (selected-buffer))
(setq *perl-indent-column* (tab-columns (selected-buffer)))
(setq indent-tabs-mode t)
))

で動作しました。
最初に教えていただいた方法で、 (Perl)となっていますがタブは聞きません。上の方法では、(fundamental)となり、タブが有効になりました。しかし、その前に

名前が衝突するためにexportできません:editor::*perl-mode-hook*
と表示されます。

運良く動いているだけで、正しい設定ではないようです。

お礼日時:2007/05/10 15:48

> 拡張子がpl,pmの場合は、タブが有効になりましたが、拡張子が


> cgiの場合は、タブが有効になりません。

本当ですか?
---- ファイル名(....)[sjis:crlf]
とかいう行が下のほうにあると思うのですが、
.cgiファイルを開いたときにカッコの中はなんという文字列になっていますか?
Perl が入っていれば設定が利くはずなんですが。

それはともかく拡張仕事の判定と設定は

files.l というファイルの中にある
(unless auto-mode
(let ((filename (get-buffer-file-name))
(*auto-mode-last-buffer* last-buffer))
(dolist (x *auto-mode-alist*)
(when (string-matchp (car x) filename)
(funcall (cdr x))
(return)))))))

この部分で、*auto-mode-alist* という変数の中身を参照しながらやっています。

この変数は defs.l の中で

(defvar *auto-mode-alist* '(("\\.c$" . c-mode)
("\\.h$" . detect-c-or-c++-mode)
(略)
("\\.pl$" . perl-mode)
("\\.pm$" . perl-mode)
("\\.cgi$" . perl-mode)
(略)
("\\.css$" . css-mode)
("\\.cs$" . csharp-mode)
))

で設定しています。
このファイルの中身を直接書き換えるのはお勧めできないので、
もし取り除くなら

.xyzzy で

(setq *auto-mode-alist (remove-if (lambda (x) (string-equal "\\.cgi$" (car x))) *auto-mode-alist*))

とでもしておくと良いでしょう。
    • good
    • 0

タブキーが自動のインデント調整のキーになっているんですけど


その機能を殺して良いということなら

.xyzzy に

(setq *c-tab-always-indent* nil)
(define-key ed::*perl-mode-map* #\tab 'self-insert-command)

の2行を追加してxyzzy再起動で多分OK。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

拡張子がpl,pmの場合は、タブが有効になりましたが、拡張子が
cgiの場合は、タブが有効になりません。

拡張子で判断している所が知りたいです。

お礼日時:2007/05/10 13:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!