xyzzyのページ


xyzzyとは

個人的に気に入っているxyzzyの特徴は


リンク

xyzzyのページ
xyzzyの作者 亀井さん のページ.
xyzzyの機能
xyzzyの全機能リストアップというとんでもないプロジェクト.すばらしい.
xyzzyリファレンス
お世話になってます.
xyzzy Mailing List Archive
メーリングリストのアーカイブ.検索も出来る.超便利.

勝手にDocstringプロジェクト


lispたち

わたしのsiteinit.lです.

my-kill-lineがみそかな.行頭なら改行までまとめて削除,行頭でなければ行末まで削除.ようするに1行まるまる削除したいときに,普段なら行頭で\C-k\C-kとするところを,\C-k一発でOKにするだけ.そんだけだけど,結構便利です.

2001年3月15日
goal-columnを保存していないというクレームがxyzzy MLであった.goal-columnを保存するようparen.l,flex-fill.lを修正.ご指摘ありがとうございます.>中西さん
  1. help.l(2001/03/20)
  2. ldoc.l(2001/03/18)
  3. paren.l(2001/03/18)
  4. flex-fill.l
  5. auto-time-stamp.l
  6. isearch.l

newhelp.l

これは標準のlisp/help.lと置き換えて使うことを想定してます.ファイルを置き換えてbyte-compileしてxyzzyをダンプしなおして下さい.

標準のhelp.lとの違いは次のとおり.

  1. 標準のdescribe-*とかaproposは,自分でバッファ消去やウィンドウの消去をやらないといけないのが鬱陶しい.そこでhelp-modeというのをでっち上げてみた.使い方は今まで同様\M-x aproposとか\M-x describe-functionでよい.「もうこの説明は要らない」と思ったら`q'を押すだけで,*Help*バッファを消去してapropos等を呼び出す前のwindows-configurationを復元してくれる.describe-functionしている状態でさらにdescribe-functionとかしても問題ない.`q'を何回か押せば元通りになる.ただし,FIFOの要領で消去していかないとうまく動かないかも.
  2. Docstring中で`\\[function]',`\\<keymap>',`\\{keymap}'という記述が使えるようになる.describe-variableやdescribe-functionでDocstringを表示する際にそれぞれ次のような機能を提供する.
    1. `\\[function]'は,functionにbindされているキーに展開される.検索は*global-keymap*と`\\<keymap>'で指定したローカルキーマップから行う.
    2. `\\<keymap>'は,それ以降`\\[function]'で検索するローカルキーマップをkeymapにする.
    3. `\\{keymap}'はkeymapで定義されているキーと関数の組に展開される.(M-x describe-bindingsの出力のような感じ)
    exportされていないfunctionやkeymapをDocstring中で参照する場合,`パッケージ::シンボル'と書く必要があることに注意.

Docstringプロジェクトのページもどうぞ.


ldoc.l

2001年3月16日
動作するモードを指定する変数を追加
2001年3月17日
ミニバッファでは動作しないよう変更
2001年3月18日
*this-command*がeval-last-sexpの時は動作しないよう変更.存在しないパッケージを表示しようとしてもエラーにならないように修正.

Emacsのeldocを真似してldocというのを作ってみた.かなり手抜きだけどそれなりに使える.

eldocを知らない人のための簡単な機能説明.

ldocを有効にしてあると,lispの関数名の上にカーソルを持っていけばステータスライン(とでも言うのだろうか? ミニバッファの下のこと)にその関数が取るべき引数を表示するし,lispの変数名の上にカーソルを持っていけばその変数のdocstring(defvarの3番目の引数で指定できる変数を解説するための文字列)を表示する.

設定方法

使用方法はいたって簡単.site-lispなどにldoc.lをコピーして

(require "ldoc")
(turn-on-ldoc)

するだけ.lispのプログラムを書くときに,わざわざlispリファレンスを見なくても引数が分かって便利だと思う.

カスタマイズ変数
変数名 解説 デフォルト値
*ldoc-activated-mode-list* ここで指定したモードでのみldocが有効になる '(lisp-mode lisp-interaction-mode)

paren.l

2001年7月23日
c-modeにおける設定方法の記述が間違っていた.Thanks 門田さん.
2000年8月20日
対応する括弧が画面内に無いときの不具合を修正.Thanks なかださん.
2001年3月15日
goal-columnを保存するよう変更
2001年3月17日
括弧だけをハイライトできるようにオプションを追加(*paren-highlight-only-paren*)
2001年3月18日
ハイライトの状態をバッファごとに持つことにしたので,モード毎に違うハイライトの方法を設定できるようになった.

lispプログラミングをしていて,閉じ括弧や開き括弧の対応付けに苦労している人向け.開き括弧や閉じ括弧にカーソルをあわせると,対応する括弧間をハイライトします.対応する括弧がない場合,その括弧を赤くハイライトします.本当は現在のポインタの直後の開き括弧や直前の閉じ括弧に反応します).また,対応する括弧が画面内に無いときは,対応する括弧のある行をミニバッファに表示します.

設定方法

全てのバッファ,全てのモードで必ずparenを有効にしたい場合はこれだけ.

(require "paren")
(turn-on-global-paren)

さらに「c-modeの時は括弧だけハイライト,ハイライトの方法はアンダーラインで」というのを追加したい場合はこんな感じ.

(setq *c-mode-hook* '(lambda ()
                      (setq *paren-highlight-only-paren* t)
                      (setq *paren-paren-attribute* '(:underline t :bold t))))

ちなみにc-modeの時だけparenを有効にしたい場合はこんな感じ

(require "paren")
(setq *c-mode-hook* '(lambda ()
                      (setq *paren-highlight-only-paren* t)
                      (setq *paren-paren-attribute* '(:underline t :bold t))
                      (turn-on-paren))))

カスタマイズ変数
変数名 解説 デフォルト値
*paren-highlight-only-paren* non-nilなら括弧だけをハイライト nil
*paren-attribute* ハイライトのアトリビュート '(:bold t)
*paren-paren-attribute* 括弧をハイライトする際のアトリビュート *paren-attribute*
*paren-invalid-attribute* 対応する括弧が無い場合のハイライトのアトリビュート '(:bold t :background 1)
*paren-show-not-visible-matched-paren* 対応する括弧が画面内に無い場合,その括弧が含まれる行をステータスラインに表示 t

flex-fill.l

2000年9月7日 バグを修正.
2001年3月15日 goal-columnを保存するよう変更

勝手にflexible-fillというたいそうな名前を付けました.何をするものかというと,行頭を見て適当にfill-prefixを変更するものです.これだけだとわかりにくいというあなたのために,図解です.

私はメールの本文書きにxyzzyを使っていますが,コメントを書くときよく'# 'を行頭に追加します.

# こめんとやで

さらにコメントを追加していくと,auto-fillでは

# こめんとやで.まだまだコメント
追加やで.

こんな感じになってしまいます.flex-fillを使えば,こんな場合でも自動的に

# こめんとやで.まだまだコメント
# 追加やで.

こんな感じにしてくれます.もちろん\M-q(fill-paragraph)も不完全ながら可能です.ほかにも

   行頭にスペースを入れて字下げ
   しているときも自動的にfill-prefix
   を調整してくれたり,

・こういう風に,行頭に'・'付き
  の文とか

01)こんな感じの番号付きリスト
   なんかも字下げできます.

ほんとはfill.lなんかをいじろうかとも思ったんですが,よく分からなかったのでpost-command-hookをいじって適当に作ってしまいました.実はちょっとだけ不具合があるけど,まあ使えるからよしとしました.


auto-time-stamp.l

ファイルをセーブするたびにファイル中のタイムスタンプを更新する.タイムスタンプの書式やタイムスタンプの場所は変数で変更可能.


isearch.l

標準添付のisearch.lにEmacsのisearch-yank-wordを追加したもの.使い方は簡単で,\C-sでインクリメンタルサーチモードに入ったらおもむろに\C-wを押すだけ.\C-wを押すたびに次の単語を検索語句に追加できる.

xyzzyに正式に採用されたのでここからは削除.

設定方法
(require "isearch")