とりあえず、覚書です。
xyzzyエディターとは、亀井さん作成の、Emacsエディターに似たWindows用エディターです。
Comman LISPによく似たマクロ言語を使用しており、
またMeadowよりもWindows風味が強いです。
亀井さんのホームページ
http://www.jsdlab.co.jp/~kamei/
から入手可能です。
xyzzyのキー定義は、基本的にEmacs19(Mule2)のキー定義と似ています。
文字コード名がわからなければ、tabキーを押して補完機能を使ってみてください。
文字コードを指定してファイルを開く(find-file, C-x C-f)には
ファイルの保存時文字コード(バッファの文字コード)を変更するには
クリップボードの文字コードを変更するには
M-x grep やM-x grep-dialogによる検索結果一覧で、 目的のファイル(バッファ)の目的の行を表示したい時の方法。 カーソル行の検索結果に移動したい時、
尚、MeadowでのM-x grepに対応するのは xyzzyでのM-x grep-dialogです。 共に、directory内のファイルに対して検索します。
他方、xyzzyでのM-x grepは xyzzy内の全バッファに対して検索します。
Meadow(Emacs、Mule)では、LISPファイルにハングルを使っていても、 iso-2022-7bitで保存しておけば、load時に文字コードを load時に文字コードを自動選択してくれます。 あるいはファイルの先頭や末尾に文字コードを明記しておけば 正しく文字コードを選択してくれます。 (ファイルの先頭に
-*- coding: euc-kr; -*-と書くとか、ファイルの末尾に
;;; Local Variables: *** ;;; coding: euc-kr *** ;;; End: ***と書くとか。)
xyzzyではどうかというと、
-*- encoding: utf-8 -*-のように書けばよいそうです。
xyzzyの場合、C-x C-f でファイルを開く時は 文字コードの自動判定をしてくれますが、 lispファイルのload時は、実は、文字コードの判定をしてくれません。 Shift-JISコードと決めつけてしまいます。
xyzzyでeuc-krコードで書かれたlispファイルをロードする時は、 次のように頭に"mc-"がついた関数を使います。
mc-autoload mc-byte-compile-file mc-byte-recompile-directory mc-compile-file mc-load-file mc-load-library mc-requireM-x describe-function で引数を調べればわかるように、 文字コードを指定することもできます。
xyzzyからIMEやキーボードレイアウトを変更できます。
(list-kbd-layout)を評価すると (つまり*scratch*バッファに記入して、最後の閉括弧の後でC-jを押す)
( (69075998 . "Thai Kedmanee") (-536738799 . "kWnn4 (kWnn)") (-536804334 . "kWnn4 (KS)") (-536673263 . "Microsoft IME 98") )といったリストが返ってきます。 この結果を参考にして、
(select-kbd-layout -536804334)もしくは
(select-kbd-layout "kWnn4 (KS)")を評価すると、使っているIME(キーボードレイアウト)が 変更されます。
このIMEの番号を得るもう一つの方法は、 IMEを変更した後で
(current-kbd-layout)を評価することです。すると、現在のIME(キーボードレイアウト) の番号が返ってきます。
以上を組合せると、たとえば
;;;C-tで、ハングルIMEとトグルする。
(defun toggle-ks-kbd-layout ()
(interactive)
(if (string= (cdr (current-kbd-layout)) "kWnn98 R3.0 (KS)")
(select-kbd-layout "Microsoft IME 98")
(select-kbd-layout "kWnn98 R3.0 (KS)"))
)
(global-set-key #\C-t 'toggle-ks-kbd-layout)
と.xyzzyファイルに書けば、
C-tで日本語のIME98と韓国語のkWnn(KS)とを
切り替えることができます。
ちなみに、 日本語IMEのオン・オフを切り替えるには
(toggle-ime) ;on/off切替 (toggle-ime t) ;onにする (toggle-ime nil) ;offにするを使えばよいです。