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

[xyzzy:08437] Re: 終了状態復元とcvs-mode



岩月さん、こんにちは。
立石と申します。みなさん、はじめまして。

IWATSUKI Hiroyuki wrote:
>xyzzy に cvs-mode が有効になるファイルをいくつか読みこませた状態
>で xyzzy を終了し、再び xyzzy を起動しますと cvs-mode が無効な状
>態で読みこまれていました。なおその状態から手で cvs:cvs-mode コマ
>ンドを実行すれば cvs-mode になります。

私もKaTeX-modeにかんして似た状況になっていました。
「終了時の状態を保存する」で開かれたTeXファイルには、
メニューとハイライトが適用されないのです。

ちょっと調べたところ、KaTeX-modeの場合、
この状況だとメニューを初期化する前に
ローカルメニューを追加することになってしまい、
そこで止まっているのが原因だとわかりました。

今のところ、以下の関数をkatex-reload.lとして作って、.xyzzyで
(autoload 'katex-reload "katex-reload" t)
(add-hook '*init-app-menus-hook* 'katex-reload)
して使っています(ほんとにひどいコードですみません)

(defun katex-reload ()
  (katex-reload-run (buffer-list)))

(defun katex-reload-run (list)
  (let ((buffer (car list)))
    (if (not (null buffer))
        (progn
          (set-buffer buffer)
          (if (eq buffer-mode 'elisp::katex-mode)
              (elisp::katex-mode))
          (katex-reload-run (cdr list))))))

cvs-modeは使ったことがないので、
同じように行くかどうかはわかりませんが、
要するに「終了時の状態を保存する」で開かれるファイルは、
通常ファイルを開くときのプロセスを経ないことが問題でしょうから、
どこか適当なhook、たとえば *init-app-menus-hook* にひっかけて
自前の関数を呼び出して(この時点で前回の状態は復元されている)、
そのなかで全バッファを検索して、該当するバッファを
強制的にモード変更してしまえば、うまくいくと思います。

すみません、csv-modeにかんしては具体的にはわからないです。
参考にならなそうですが・・・

立石裕二
y_ttis@xxxxxxxxxxx

Index Home