mapcar で perform-string を使って文字列置換しようと思ってかなりハマったのでメモって置きます。

ダメな例

これだと “foo1 bar2” は削除できるけど “bar2” と2個めの検索要素だけしかないときに削除できない

良い例

perform-replaceの最後の引数NOERRORtに設定しておけば該当する文字列がなくてもスムーズに次に進んでくれます。


機能

xyzzyで”wŏ shì rìbĕn rén” などが、そこそこ簡単に打てるようになります。

インストール方法

NetInstallerで以下のパッケージを追加して、”ton input”をインストールして下さい。
http://ironsand.net/xyzzy/packages.l

再起動すると有効になってます。
再起動せずに有効にできそうですが、よくわかりませんでした。

NetInstallerが何かわからない人はこちらを読んでください。
http://xyzzy.s53.xrea.com/wiki/index.php?QuickTour%2Fext%2FNetInstaller

使い方

C-F9 (Controlキーを押しながらF9キーを押す)で Ton Input モードに入ります。
“wo” を打った時点で数字の”3″を押すと “wŏ” になります。
1,2,3,4 でそれぞれの声調に、”0″で声調無しに変化します。

“xian” の最後でキーを押せば一番最後に入力された母音の “a” に声調がつきます。

Ton Input モードを終了させるには、もう一度 C-F9 を入力します。

注意点

Ton Input モード中は数字(0~4)を入力しようとしても入りません。

謝辞

ありがとうございます。 ありがとうございます。

マイナーモードの作り方 [silog]
http://white.s151.xrea.com/wiki/index.php?memo%2Fxyzzy%2Fminor-mode

netinstaller 対応メモ
http://d.hatena.ne.jp/bowbow99/20090710/1247182818

そして、lispでわからないことを教えてくれた2chのxyzzyの名無しさん達がいなければ途中で作るのを諦めてたと思います。 みなさんに感謝を。


xyzzy の lisp の関数 backward-word, previous-word, forward-word, next-word の動作の違いがよくわからなかったので、試してみた。

黒背景白文字が移動前のカーソルの位置で、灰色背景太字が移動後の場所。

backward-word
123 456 789
123 456 789
123 456 789

previous-word
123 456 789
123 456 789
123 456 789

forward-word
123 456 789
123 456 789
123 456 789

next-word
123 456 789
123 456 789
123 456 789

backward-word と previous-word は同じ動作で forward-word と next-word は動作が異なるらしい。 あってんのかな、これ。


Xyzzy Wiki の ソースからビルドしてみる3 を参考に xyzzy をソースからビルドしてみました。 ファイルを取ってきたり、めんどくさいことが多かったので以下のステップでできるように簡略化。

xyzzysrc-0.2.2.235-pack
これをダウンロードしてあとは01README.txtを見てください。

1 Microsoft Visual C++ 2008 Express Edition インストール
2 env.vbs を叩く (環境変数のセットとafxres.hのコピー)
3 cd xyzzy/src
4 nmake (デバッグ版は nmake CFG=d)
5 ぽけーと待つ
6 できあがり

以上です。 何かおかしいところあったら連絡ださい。 俺は何もわかっていませんので。

Unicode Consortium のファイルも同封してますが、ライセンスの確認はとってます。

2011/05/28追記

2chで指摘されて気づいたのですが、env.vbs で c:\Program Files\ 配下にファイルの移動を行ってるので UAC が入っているとエラーになります。 UACを一時的に切ってenv.vbs を実行してください。

一度実行してしまえば次回以降ビルドするときにはUAC がオンでも問題ありません。


Xyzzy上で新規作成した javascript とか ruby のバッファに毎回モード設定をするのがめんどくさかったので書いた。 siteinit.l か ~/.xyzzy のどこかに貼りつけて使ってください。

※同じ拡張子に複数のモードが紐付けられていると、古い方に設定されるようになっていたので修正


テキスト形式でUMLが書けるPlantUML

PlantUMLはテキスト形式でUMLを記述して画像に出力できるオープンソースのソフトウェアです。 UMLが書けるフリーソフトはいくつかありますが、テキストベースで記述できるのは大変ありがたいですね。

PlantUMLの具体例

サンプルをPlantUMLのサイト内から引用します。
http://plantuml.sourceforge.net/classes.html

 
こんなUMLが以下の記述で作れちゃいます。

PlantUMLのインストール

http://plantuml.sourceforge.net/download.html
から plantuml.jar をダウンロードしてください。
plantumlの実行にはJavaが必要になりますので、もしJavaがインストールされていなければ
http://www.java.com/ja/download/
からインストールを行ってください。

“Sequence Diagram” 以外の画像の出力、つまり普通に使うのであれば Graphviz もインストールする必要があります。
http://graphviz.org/Download_windows.php
からダウンロードしてインストールしてください。

以上でインストールは終了です。

xyzzyからPlantUMLを使う方法

さて、次は以下のコードを siteinit.l か .xyzzy に記述してください。

*plant-uml* と *graphvizdot* の値は適宜変更してください。
これでテキストファイルにUMLを記述して M-x plant-uml と入力すれば画像ファイルが出力されているはずです。


xyzzyから直接javascriptを使う

今回の記事はRhinoのインストールが行われてる事と xyzzy で jscript-mode がインストールされている事が前提条件になります。 RhinoのWindowsでのインストール方法については前回の記事『Windows(cygwin+zsh)環境でRhinoを使う』を参考にしてください。 今回の記事の設定を行うと xyzzy から直接Rhinoを呼び出して下の画像のように簡単なスクリプトを気軽に書けるようになります。

下記のlispはruby-modeから引っ張ってきて少し修正を加えたもので、これを ~/.xyzzy や siteinitl. に貼りつければjscript-mode で C-c C-x すれば現在編集中のバッファの javascript が実行されます。

*js-classpath* と define-key は好みに合わせて適宜変更の事。