• ベストアンサー

xyzzyで拡張子がcgiやpl, pmのファイルを開くとタブが効きません。

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

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.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=set%2Dtab%2Dcolumns tab-columns - refwiki http://xyzzy.s53.xrea.com/reference/wiki.cgi?p=tab-columns モードが Fundamentalになっているのでperlモードそのものが 無効になっているんじゃないでしょうか。 まあ目的が果たせたというのならいいですけど。

その他の回答 (3)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

訂正 (setq *auto-mode-alist (remove-if (lambda (x) (string-equal "\\.cgi$" (car x))) *auto-mode-alist*)) の (setq *auto-mode-alist は (setq *auto-mode-alist* の間違いです。

Lusaka1
質問者

お礼

;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* と表示されます。 運良く動いているだけで、正しい設定ではないようです。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

> 拡張子が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*)) とでもしておくと良いでしょう。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

タブキーが自動のインデント調整のキーになっているんですけど その機能を殺して良いということなら .xyzzy に (setq *c-tab-always-indent* nil) (define-key ed::*perl-mode-map* #\tab 'self-insert-command) の2行を追加してxyzzy再起動で多分OK。

Lusaka1
質問者

お礼

回答ありがとうございます。 拡張子がpl,pmの場合は、タブが有効になりましたが、拡張子が cgiの場合は、タブが有効になりません。 拡張子で判断している所が知りたいです。

関連するQ&A

  • cgiとplとpm

    掲示板ソースをダウンロードするとplやpmという拡張子のものがありました。中身はPerlでした。 拡張子の使い分けを教えてください。 適当に4つのルールを書いてみましたので、間違っていたり、追加するルールがありましたから教えてください。 1 ブラウザがそれ自身にアクセスし、ブラウザのアドレスバーに表示させるならcgiにするべき。 2 Perlのpackageの機能を使うなら、パッケージファイルはplかpmでなくてはならない。 3 Perlのrequireの機能を使うなら、その外部ファイルはplでなくてはいけない。 4 Perlのuseの機能を使うなら、その外部ファイルはpmでなくてはならない。

    • ベストアンサー
    • Perl
  • .plの拡張子のファイルについて

    .plの拡張子のファイルって何に使うのでしょうか? CGIから呼び出して使うのでしょうか? 初心者で馬鹿な質問かもしれませんが、お願いします。

    • ベストアンサー
    • Perl
  • cgi.pmとcgi-lib.pl

    こんばんは。 cgi-lib.plを引用したCGIが動かないので、cgi.pmでためしにやろうと思っています。 そこでひとつ調べてもわからないのですが、cgi-lib.plのReadParseでは%inにフォームで送信したデータが全て入るのに対し、cgi.pmではいったいどこに全てのデータが格納されているのでしょうか?要素ごとに取り出す方法は調べることができましたが、配列ごとまとまって入っているところがわかりません。 ご存知のかた教えてください。よろしくお願いします。

  • CGI.pmとcgi-lib.plの差異について・・・

    formで送信したデータをCGI.pmで受け取った場合と、 cgi-lib.plで受け取った場合に差異があるのでしょうか? cgi-lib.pl内で「\0」を組み込む処理があるのが気になります。

    • ベストアンサー
    • CGI
  • 拡張子 .pl のパーミッションについて

    とあるCGIを設置したところ、随分あとになって以下のような記述を見つけました。 設定ファイルの拡張子が .pl でパーミッションが755だとファイル内を閲覧される可能性がある。 (PWなどがわかってしまう) 対策) 設定ファイルの拡張子を .cgi にする。同時にメインのCGIの方のファイル設定も設定ファイル名を変更する。 たしかに外から覗けることが確認されました。ただどこでPWがわかるかはわかりません。 1.これはやはり変更したほうがいいのでしょうか?現在PWがやぶられなどの事実はありません。 2.これを変更することによって、ログ喪失などの心配はないでしょうか? (これが怖くて安易にいじれません) 3.ファイル名を変更する代わりに、パーミッションを644や666などに変更する などの対処でできないのでしょうか? なにせCGIはあまり詳しくないため困っております。 対策を取りすぎなのかもしれませんが、よろしくお願いします。

    • ベストアンサー
    • CGI
  • .cgi拡張子のままCGIファイルを開きたい

    CGIファイルを編集したり、修正したりするのに、 毎回、.cgiを.txtに変えて、notepadで開き、また、 .cgiに戻し・・する作業が、面倒です(みんなこう しているのかな)。 拡張子をcgiのままで、コードが開けるような方法は、 ないでしょうか。 もしあれば、教えてください。お願いします。

    • ベストアンサー
    • Perl
  • CGIファイルとplファイル

    私はウィンドウ2000を使用していますがCGIファイルとplファイルを開こうとすると『ファイルを開くアプリケーションの選択』が出てしまい開くことができません。 何がいけないのでしょうか?教えてください。

    • ベストアンサー
    • CGI
  • 拡張子について

    ファイルをリネームして拡張子を変更する場合、自分で設定したい拡張子が選択できません jcodeなんですが、plという拡張子を選択できないため、cgiアップできずに困っています jcode.pl.txtをjcode.plという拡張子にするためにはリネームして拡張子plを選択すればいいことまで分かっています 拡張子pl自体が選択できないので、設定方法を教えてください。お願いいたします

  • 拡張子をcgiにしたい。

    こんにちは、namerinです。 とあるサイトからcgiファイルを「対象をファイルに保存」し、そのサイトの説明で「ダウンロード後は拡張子をcgiんに直してほしい」と書いてありました。 拡張子をcgiに直す方法を教えて下さい。 (ちなみに現在CGI設置中です) サイトにはこんな風にかいてありました。 ダウンロード後は、拡張子を.cgiに変更してください。 次に、設置したnicky.cgiと同じフォルダに上記5つのファイルをFTPのバイナリモードで転送します。 転送した5つのファイルのパーミッションを666(-rw-rw-rw-)に設定します。

    • ベストアンサー
    • CGI
  • pm 拡張子ファイルの編集

    基本的な質問ですいません。 [.pm] 拡張子のついたファイルを開くことができなくなりました。これまで、プログラマーだった弟がいろんなモノをPCに入れていたのですが、再インストールしたら何もできなくなって、困っています。 適当なアプリケーションをインストールするなどして編集できるようにしたいのですが。 オススメのソフトを教えていただけませんでしょうか?