新人プログラマには「プログラムを組むんだから、とりあえずテキストエディタを何か入れておけ」と言うのだが、実際のところ自分が今仕事で使っている Windows BOX にはテキストエディタがインストールされていない。
「メモ帳」ですよ。
ちゃんと編集する時は Linux BOX 上の Emacs を使ってしまうので、Windows BOX では力を入れて環境構築していなかったり。 しかし、やっぱり何かテキストエディタがないと不便といえば不便。 ということで久しぶりに何か入れてみることにした。
最近は「インストール不要のソフトを USB メモリに入れて相手先で利用できるようにする」環境作りをぽちぽちしているので、エディタもそのようにできるのを選びたい。
というのが主な条件。
書き込み禁止にした USB メモリや、read only な Samba 公開ディレクトリ上(あるいは CD-R 上)から直接起動できるようにするのが目的。
以前にもちょっと使ったことがある。 Meadow はヘビーだし設定が面倒なので xyzzy が良い。
で実験。
アーカイブを展開してすぐ xyzzy.exe を実行できるのだが、
を書き出せる必要がある。etc/DOC 以外の位置はコマンドライン引数や環境変数で指定できる。が etc/DOC だけ変更する方法がわからない。
保留。
同僚が使っているサクラエディタも試してみる。 インストーラを使用したくないので、実行可能ファイル・ヘルプファイルそれから必要な補助ファイルをそれぞれ取得して、同じディレクトリへ。
こちらは read only でも特に問題なく起動した。 ただし、
なので躊躇。
xyzzy の設定をいじってみる。
site-lisp/siteinit.l を
(setq lisp::*documentation-path* (merge-pathnames "xyzzy-DOC" (directory-namestring (si:dump-image-path))))
として etc/DOC をかわりにダンプイメージファイルと同じディレクトリに xyzzy-DOC として生成するように変更。
それから起動用に
mkdir %TMP%\xyzzy xyzzy -image %TMP%\xyzzy\xyzzy.dump -config %TMP%\xyzzy
というバッチファイルを作成。ダンプイメージファイル、設定ファイルを置くディレクトリを環境変数TMPの下の xyzzy サブディレクトリに出力するようにする。
これで書き込み禁止ディレクトリから起動できるようになった。
必要があれば書き込みディレクトリはアカウント毎に変えた方がいいかな。 Windows 98 SE だとユーザ名やホームディレクトリとして使える環境変数は標準状態では存在しないようなので一工夫が必要になるか。
昨日作った読み取り専用メディア上のxyzzyを起動するバッチファイルであるが、UNC 上にある場合に標準状態では(cmd.exe が)起動できないため動かない。
ということで WSH で起動するように JScript を書いておく。 JScriptもWSHもあまり触ってないので適当に。
var shell = WScript.CreateObject("Wscript.Shell"); var fs = WScript.CreateObject("Scripting.FileSystemObject"); var vardir = shell.Environment("PROCESS")("TMP") + "\\xyzzy"; if (! fs.FolderExists(vardir)) { fs.CreateFolder(vardir); } shell.Exec("xyzzy -image " + vardir + "\\xyzzy.dump " + "-config " + vardir);
@echo off set XYZZYHOME=%1\home\naney set XYZZYCONFIGPATH=%1\home\naney set XYZZYEXE=%1\app\xyzzy\xyzzycli.exe shift start %XYZZYEXE% %1 %2 %3 %4 %5 %6 %7 %8 %9
というバッチファイルを作成して、PStart からこのバッチファイルを第1引数に %pdrive% を指定して実行するように設定。
以前試した read only なネットワークドライブからの起動ほどトリッキーな設定はしないで OK。 PStart に環境変数を設定する機能があればいいのだけれど。
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。