| ◇xyzzyの設定の仕方 |
| xyzzyの初期設定ファイルは2つ .xyzzy (xyzzy起動時に毎回読込む。ので起動が少し遅くなるかも。でも書替は簡単) siteinit.l (バイトコンパイルされてる&ダンプファイルに読み込まれるので起動は速い。 でも書替える度にダンプファイル消して再起動しなければいけないので面倒) よく書替えるものは.xyzzy、あまり書替えないもの(キー割当とか)はsiteinit.lとか使い分けると便利かと。 ・優先順位は .xyzzy>siteinit.l>メニューの共通設定>初期設定 ・設定ファイルの中でキー割当などが重複してる場合、後に書いたもので上書される。 ・設定ファイルに(load-library "hsp-mode")などと書いて読み込ませる場合 hsp-mode.lc (バイトコンパイルしたもの) hsp-mode.l (してないもの) の二つがある時は hsp-mode.lc の方が読み込まれます。 (書き替えた時は .lcを消しておかないと、変更が反映されなくて「何故!?」ってなります…) ◆使い方◆ ◇.xyzzy(ピリオドxyzzyです) xyzzy.exeと同じディレクトリに置く 1.使いたいマクロとかを書いて保存 2.xyzzy.exeを再起動 ◇siteinit.l xyzzy/site-lisp/に置く 1.使いたいマクロとかを書いて保存 2.バイトコンパイルする(ファイラでB) 3.ダンプファイル消す(xyzzy.exeと同じディレクトリにある。Win98なら、XYZZY.w98) 4.xyzzy.exeを再起動 WinNT系(NT/2000/XP)の場合は、環境変数 XYZZYHOME の設定が必須です。 XPの場合は、Mycomputer>プロパティ>詳細設定>環境変数>新規で、 変数名:XYZZYHOME 値:C:\xyzzy(homeにしたいディレクトリ) |
| ◇キー割当をWindows風にする |
| xyzzyは標準ではemacs風のキー割当になっているので、WindowsのC-c(コピー)やC-v(貼付)などが 使えずイラッとするのですが、これをWindows風にするには |
| (load-library "winkey") |
| とすると、C-z(undo)、C-v(貼付)、範囲選択してる時だけ、C-c(コピー)、C-x(切取) の4つが使えるようになります(他は標準のまま) |
| ; よりWindows ちっくなキーバインド (load-library "Gates") |
| だと、C-z(undo)、C-v(貼付)、C-c(コピー)、C-x(切取)、C-n(新規作成)、C-s(保存)、Alt-F4(終了) などの他、Home,Endなどの動作もWin風になります(が、C-x ? などが使えなくなります) このwinkey.lやGates.lのファイルは、xyzzy/lisp/にあります。 で、この二つをあわせて、Win風だけど(C-x ?)なキー割当も使えるようなmyキー割当ファイルを作って それを(load-library "mywinkey")して使えるようにしてしまいます。 ◆mywinkey.l xyzzy 0.2.2.213版(2001/10/20) ◆使えるようになったキー割当一覧 xyzzy 0.2.2.213版(2001/10/20) このサイトはこのキー割当を基準に説明してます |
| こんなに沢山キーに割り当てなくてもマウスとツールバーで出来るじゃん、と思うでしょうが、キーボードマクロを使う時とかにキーだけで操作出来た方が便利だったりします(だってキーボードマクロだし) |
| これでもxyzzy本来のキー割当をいくつか潰してしまってます。(lispやcss-modeのESC-TAB補完とか、C-s検索とか) そういうもので使いたいものは以下のやり方で適当なキーに割り当てることが出来ます。 |
| ◇キー割当を自分好みに変える |
|
全てのモードでのキー割当を変える場合(*global-keymap*) (define-key *global-keymap* [キー] [関数]) 特定のモードでのキー割当を変える場合(*???-mode-map*を使う) (define-key ed::*hsp-mode-map* [キー] [関数]) ファイラーの場合(filer-keymap) (define-key filer-keymap [キー] [関数]) ・優先順位 各モードのキー割当>すべてのモードでのキー割当 |
| ;例)全てのモードで、Ctrl-o キーに、other-window(別窓に移動)割当(GatesのC-oは上書される) (define-key *global-keymap* #\C-o 'other-window) |
| ;例) lisp-modeで、TABに、lisp-complete-symbol(補完)を割当(TAB本来の動作はなくなる) (define-key ed::*lisp-mode-map* #\TAB 'lisp-complete-symbol) |
| 但し、html-modeやcss-modeはxyzzy起動時ではなく、htmlファイルやcssファイルが読み込まれた時に読み込まれるので 設定もmodeが呼ばれた時に有効になるように書きます。 |
| ;例) css-modeで、TABに、css-completion(補完)を割当 (add-hook 'ed::*css-mode-hook* #'(lambda () (define-key ed::*css-mode-map* #\TAB 'ed::css-completion))) |
| キー割当の書き方 #\M-v (ESC押して離してからv 或いはAltとv同時押し) #\S-C-F2 (ShiftとCtrlとF2同時押し) 書く順番はどうでもいい '(#\C-c #\C-c) (Ctrlとc同時押し2回) '(#\C-c #\c) (Ctrlとc同時押し、その後Ctrl離してc) |
| ◇*kill-ring*を利用する |
| キー割当でkillとかregionとか付いてる命令(例
(C-k) kill-line 行末まで削除 とか)で削除されたバッファ(文字)が、 クリップボードの履歴みたく*kill-ring*にストックされます。 (ツール>共通設定>さまざま の"削除バッファとクリップボードを中途半端に同期する"をonにすると クリップボードにもコピーされます。offの時はしない) 取り出す時は (C-y) yank *kill-ring*から貼付 (M-y) yank-pop (C-yの後で)それまでの*kill-ring*の内容が次々出てくる これを(C-v)に割り当てれば、クリップボードから貼付感覚で*kill-ring*も使えるようになる訳です。 (C-y)のままだと他のWinアプリでも無意識に使ってしまうので(C-v)に統一しときたいです。 ついでに *kill-ring*の一覧ダイアログから貼付 (C-c)クリップボードへコピー、(C-x)クリップボードへ切取の時も*kill-ring*へ入れる (メリットは連続切取して*kill-ring*にストック出来るくらいしか) ◆my-kill-ring.l (2002/11/09) ダイアログから貼付の後yank-popが使えるように修正。 |
| ;*kill-ring*の最大値設定40に。デフォルトは16 (setq *kill-ring-max* 40) |
| *kill-ring*の何番目に入っているか分かっている場合は M-1 C-y(yank)とかで取り出せます。 (番号は新しいものから順番に0〜。M-1なら1番目。yank-popでさかのぼった場合は最後に貼り付けたものが 0番目。 ダイアログの3番目を貼り付けたらそれが 0番目になります) |
| ◇lispを少し書き替えてみる |
| ◆my-filer.zip (2001/07/20) filer (M-e) フォルダを作ってその中に解凍 filer (O) 圧縮する時,最初に選択したファイル名をデフォルト&拡張子はzip xyzzy/lisp/filer.lを見てみると、解凍(E)はfiler-extract-archive、フォルダを作る(K)はfiler-create-directory という関数だと分かるのでその辺をコピぺしてくる(笑) で解凍の前にフォルダを作るように書き替える。 そんだけなんだけど、filer-extract-archiveの中の関数や変数がexportされてないものだとエラーになります。 (export:そのパッケージで定義した関数や変数を他のパッケージからも使えるようにすること。 ファイルの初めの方に(export '(・・・))で記されてる) 「関数が定義されていません」などのエラーが出る時は、関数や変数の前にed::とか付けてやると使えるようになります。 (ed::はeditorパッケージ。KaMailはkm:: www-modeはwww:: とか) 或いは作ったファイルの先頭に |
|
(provide "my-filer")
;このモジュール名。requireがチェックする為のもの (in-package "editor") ;これ以降は"editor"パッケージ内に作られる |
| と書いておくと、ed::を付けなくても大丈夫なようになります。 |
| ◇いろいろ変えてみる |
| xyzzy/lisp/ ディレクトリにxyzzyが使ってるlispコードが沢山入ってます。 ファイラならfiler.lとか、html-mode.lとか。自分のやりたいことをやってそうなファイルを見てみて、 コピペして改造してみるとかすると、いろいろ変更出来ます。 xyzzy 0.2.2.213からのカレンダーは祝祭日の上にマウスを持ってくと「春分の日」などとポップアップしてくれますが (カーソル合わせて"?"でもいける) これを少し改造すれば自分の誕生日やスケジュールメモ付けて日付の色を変えたり出来ます。 |