* Menu
page 0 - << : 0 : >>
* memo : asdf を使う
さくらのサーバにインストールした clisp で asdf を使うための一連の作業をメモ。
clisp には asdf が付属していないのでソースを取得する。
ついでにコンパイルしておく。
ここからしばらく clisp での作業。
$HOME/local/lisp/ を lisp ファイル置き場にすることにしたので、ここをロードパスに追加する。
asdf.lisp をロード。
asdf:*central-registry* にパスを追加。$HOME/local/lisp/systems/ にした。
ここに *.asd ファイルへのシンボリックリンクを置くようにする。
この状態でGUESSを使えるようにする。
ソースをダウンロードして、展開、シンボリックリンクを張る。
clisp でロード。初回はコンパイルした上でロードしてくれる。
clisp での作業は初期化ファイルにでも書いておく。clispの場合は $HOME/.clisprc 辺り。
clisp には asdf が付属していないのでソースを取得する。
$ cd $HOME/local/lisp $ wget "http://cclan.cvs.sourceforge.net/*checkout*/cclan/asdf/asdf.lisp" $ clisp -c asdf.lisp
ついでにコンパイルしておく。
ここからしばらく clisp での作業。
$HOME/local/lisp/ を lisp ファイル置き場にすることにしたので、ここをロードパスに追加する。
[1]> (push (merge-pathnames "local/lisp/" (user-homedir-pathname)) custom:*load-paths*) (#P"/home/raido/local/lisp/" #P"./" "~/lisp/**/")
asdf.lisp をロード。
[2]> (load '#:asdf) ;; Loading file /home/raido/local/lisp/asdf.fas ... ;; Loaded file /home/raido/local/lisp/asdf.fas T
asdf:*central-registry* にパスを追加。$HOME/local/lisp/systems/ にした。
ここに *.asd ファイルへのシンボリックリンクを置くようにする。
[3]> (push (merge-pathnames "local/lisp/systems/" (user-homedir-pathname)) asdf:*central-registry*) (#P"/home/raido/local/lisp/systems/" *DEFAULT-PATHNAME-DEFAULTS*)
この状態でGUESSを使えるようにする。
ソースをダウンロードして、展開、シンボリックリンクを張る。
$ cd $HOME/local/src/lisp $ wget http://lispuser.net/files/guess.tar.gz $ tar xf guess.tar.gz $ cd ../../lisp/systems/ $ ln -s $HOME/local/src/lisp/guess_0.1.0/guess.asd .
clisp でロード。初回はコンパイルした上でロードしてくれる。
[4]> (asdf:oos 'asdf:load-op :guess) ; loading system definition from /home/raido/local/lisp/systems/guess.asd into #<PACKAGE ASDF0> ;; Loading file /home/raido/local/lisp/systems/guess.asd ... ; registering #<SYSTEM :GUESS #x20538B31> as GUESS ;; Loaded file /home/raido/local/lisp/systems/guess.asd ;; Compiling file /home/raido/local/src/lisp/guess_0.1.0/guess.lisp ... ;; Wrote file /home/raido/local/src/lisp/guess_0.1.0/guess.fas ;; Loading file /home/raido/local/src/lisp/guess_0.1.0/guess.fas ... ;; Loaded file /home/raido/local/src/lisp/guess_0.1.0/guess.fas 0 errors, 0 warnings NIL以上。
clisp での作業は初期化ファイルにでも書いておく。clispの場合は $HOME/.clisprc 辺り。
(push (merge-pathnames "local/lisp/" (user-homedir-pathname)) custom:*load-paths*) (load '#:asdf) (push (merge-pathnames "local/lisp/systems/" (user-homedir-pathname)) asdf:*central-registry*) (asdf:oos 'asdf:load-op :guess)ロードするものが多くなって起動に時間がかかるようになったら、メモリイメージを保存して起動時にこっちを読み込むようにする。
* 2007-05-31
- 宿題を果たすために、とりあえずsf.jpに場所取りしてみた。
- winkey+GatesとNetInstallerと起動スクリプトぐらいで作ってみるかな。
* そこそこまとまっていて役に立つかもしれないもの
- xyzzyのformatまとめ
- WSHでxyzzy起動
- clispインストールのまとめ
- コマンドプロンプト周りの環境改善 Cygwin無しでそれなりの環境を作る。
- 候補の絞込みをするpopup-list
- その他
* xyzzy : WSHでxyzzy起動
の情報をまとめてみる。
まず起動用のスクリプト。起動時にやることは
一度起動した後のことは考えていませんので注意。
さらに、
煮るなり焼くなりご自由に。
(ReadMore...)
まず起動用のスクリプト。起動時にやることは
- XYZZYHOMEに$XYZZYを設定
- ダンプファイルファイルその他をおくフォルダをTMPに作成
- そのフォルダをXYZZYCONFIGPATHに登録
- もしあればxyzzy.iniと.xyzzy.historyをそのフォルダにコピー(探す場所は$XYZZY/usr/以下)
- Pathとかいじりたい場合はご自由に
// xyzzy.js var shell = WScript.CreateObject("Wscript.Shell"); var fs = WScript.CreateObject("Scripting.FileSystemObject"); var env = shell.Environment("PROCESS"); var dir = env("TMP") + "\\xyzzy"; var path = fs.GetParentFolderName(WScript.ScriptFullName); if (! fs.FolderExists(dir)) { fs.CreateFolder(dir); } env("XYZZYHOME") = path; env("XYZZYCONFIGPATH") = dir; if (fs.FileExists(path + "\\usr\\xyzzy.ini")) { fs.CopyFile(path + "\\usr\\xyzzy.ini", dir + "\\xyzzy.ini"); } if (fs.FileExists(path + "\\usr\\.xyzzy.history")) { fs.CopyFile(path + "\\usr\\.xyzzy.history", dir + "\\.xyzzy.history"); } shell.Exec("xyzzy -image " + dir + "\\xyzzy.dump");
一度起動した後のことは考えていませんので注意。
さらに、
- siteinit.lでDOCの書き出しパスを設定
- *kill-xyzzy-hook*で設定ファイルの削除
(setq lisp::*documentation-path* (merge-pathnames "XYZZYDOC" (directory-namestring (si:dump-image-path)))) (delete-hook '*kill-xyzzy-hook* 'ed::save-history-file) (add-hook '*kill-xyzzy-hook* #'(lambda () (ed::save-history-file) (let ((ini (merge-pathnames "xyzzy.ini" (user-config-path))) (his (merge-pathnames ".xyzzy.history" (user-config-path)))) (copy-file ini (merge-pathnames "usr/xyzzy.ini" (si:system-root)) :if-exists :overwrite :if-access-denied :skip) (copy-file his (merge-pathnames "usr/.xyzzy.history" (si:system-root)) :if-exists :overwrite :if-access-denied :skip) (delete-file ini :if-does-not-exist :skip :if-access-denied :skip) (delete-file his :if-does-not-exist :skip :if-access-denied :skip) (delete-file (si:dump-image-path) :if-does-not-exist :skip :if-access-denied :skip) (delete-file (merge-pathnames "XYZZYDOC" (user-config-path)) :if-does-not-exist :skip :if-access-denied :skip))) t)ただ、*kill-xyzzy-hook*の実行よりも後にxyzzy.iniへ書き込まれる設定があるため、xyzzy.iniの削除は完全ではありません。
煮るなり焼くなりご自由に。
(ReadMore...)
* xyzzy lisp : clone-buffer
とりあえずこんなところか。
主だったところはsession.lから。
outline-tree2をバッファバーの代わりにしつつ、rename-bufferを良く使う人向け。
もしくは*compilation*バッファとかでうっかりそのまま編集して、undoができず残念な思いをする人向け。
メモ:
undo情報をそっくり写せるとうれしいかも。
(ReadMore...)
主だったところはsession.lから。
outline-tree2をバッファバーの代わりにしつつ、rename-bufferを良く使う人向け。
もしくは*compilation*バッファとかでうっかりそのまま編集して、undoができず残念な思いをする人向け。
(defun clone-buffer (buffer-name &optional (buffer (selected-buffer))) (interactive "sClone Buffer: ") (let ((major buffer-mode) (minor (mapcan #'(lambda (mode) (let ((var (and (consp mode) (car mode)))) (and (symbolp var) (boundp var) (symbol-value var) (list var)))) *minor-mode-alist*)) (locals (mapcar #'(lambda (var) (and (symbolp var) (local-variable-p var) (cons var (symbol-value var)))) *buffer-info-variable-list*)) (point (point))) (set-buffer (create-new-buffer buffer-name)) (insert-buffer buffer) (funcall major) (mapc #'(lambda (f) (and (fboundp f) (funcall f))) minor) (mapc #'(lambda (x) (when (and (car x) (symbolp (car x))) (make-local-variable (car x)) (set (car x) (cdr x)))) locals) (goto-char point)))
メモ:
undo情報をそっくり写せるとうれしいかも。
(ReadMore...)
* memo : コマンドプロンプト周りの環境改善
* Scrapbook : nDiki: xyzzy を WSHで起動できるように (2004-07-29)
* xyzzy topic : USBメモリからの起動に特化したxyzzy
http://blog.2310.net/contents/individual/000047.php
(2006-04-09)
- xyzzy.iniを$XYZZY/usrに保存(ユーザ名やOS名でフォルダ分けしない)
- ダンプファイルをシステムのTempフォルダへ保存/読込
- unlha32.dll等、各種アーカイバDLLがシステムフォルダや$XYZZY内に存在しない場合は$XYZZY/libも探してもらう
* xyzzy topic : bufbar2, popup-key, www-search更新
page 0 - << : 0 : >>