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

[xyzzy:08116] Re: ユーザーごとの設定ファイルとか (/usr/)



nha-candyさん、こんにちは。 OHKUBO Hiroshi です。

        2002年2月23日(土)[14:09:45]の、
        [xyzzy:08115] ユーザーごとの設定ファイルとか(/usr/)
        への返事です。

> 能についてなんですが、自分の不注意でsiteinit.lへの記述を間違って、
> xyzzyを再起動したら、ツールバーがすべて消えて表示からツールバーを
> 追加しようとしてもメニューの文字が選択できない状態のグレー色にな
> っていて途方に暮れていました。xyzzy.w2kやxyzzy.wxpを消したり
....
> 
> で、ふと思い立って、/usrごとゴッソリ消したら復帰できたんです!(思
> わぬところに落とし穴でした)

起動時にツールバーが表示されない不具合は、恐らくヒストリーファイルに
解釈できない記述がある場合に起こります。

例えば普通は

  1. "browserex.l" をロード。

    1.1. browserex パッケージが作成される。

    1.2. (define-history-variable browserex::*browser-position* ...)
         によって、次回 xyzzy 起動時にも browserex::*browser-position*
         の値を保持するよう指定される。

  2. xyzzy は終了時にヒストリーファイル $XYZZY/usr/username/os/.xyzzy.history
     にシンボル browserex::*browser-position* とその値を書きこみ、その
     後終了。

  3. 次回 xyzzy 起動時、ヒストリーファイルからシンボルと値を読み込み
     browserex::*browser-position* の値の復元。その後起動完了。

となるのですが、

  A. "browserex.l" をロードする記述を設定ファイルから削除などして
     起動時に "browserex.l" が読みこまれないと、browserex
     パッケージが存在しないにも関わらず、ヒストリーファイルに記述され
     ている browserex パッケージのシンボル browserex::*browser-position* を
     xyzzy が解釈しようとすることになり、結局解釈できずエラーが生じる。

  B. パッケージに限らず、例えば (find-buffer "*scratch*") を
     評価した結果の表示である #<buffer: *scratch*> は、xyzzy が
     読みとって解釈できる形式ではないため、そんな値が
     (define-history-variable) してあるシンボルの値として
     ヒストリーファイルに書き出されていると、次回起動時に読みこめず、
     エラーとなる。

A. B. のようにエラーが生じると(多分)その影響でツールバーなどが
表示されなくなります。

問題はヒストリーファイル(普通は $XYZZY/usr/username/os/.xyzzy.history)に
解釈できないものが書かれていることなので、

  a. ヒストリーファイルから怪しい部分を消す。

  b. ヒストリーファイルを消す。

  c. 原因がパッケージが存在しないことならば、初期設定ファイルに、
     不足しているパッケージを作成するライブラリを読みこむ記述を
     メモ帳などで追加。
     xyzzy 起動後 (unregister-history-variable ...) などして、
     問題のシンボルがヒストリーファイルに書き出されないようにし、
     パッケージを使用していた痕跡をなくす。

上記 a. b. c. のいずれかを行えば xyzzy は普通に起動するようになり、
問題は解決すると思います。

---
OHKUBO Hiroshi
konata_o@xxxxxxxxxxx
http://members.tripod.co.jp/ohkubo/xyzzy/index.html

Index Home