xtal-mode は Xtal 言語を編集するためのメジャーモードです。
以下の機能を提供します。
ni-autoload を利用していない場合は、 ~/.xyzzy または $XYZZY/site-lisp/siteinit.l に以下のコードを追加してください。
;; xtal-mode
(require "xtal-mode")
(pushnew '("\\.xtal$" . xtal-mode) *auto-mode-alist* :test 'equal)
ni-autoload を利用している場合は追加する必要はありません。
同じように xtal のインストールディレクトリを設定してください。
;; xtal のインストール先 (setf *xtal-install-path* "c:/Program Files/xtal/")
設定を反映させるため xyzzy を再起動してください。
※siteinit.l に記述した場合には再ダンプが必要です。
アーカイブをダウンロードします。
<URL:http://miyamuko.s56.xrea.com/xyzzy/archives/xtal-mode.zip>
~/.xyzzy または $XYZZY/site-lisp/siteinit.l に以下のコードを追加します。
;; xtal-mode
(require "xtal-mode")
(pushnew '("\\.xtal$" . xtal-mode) *auto-mode-alist* :test 'equal)
;; xtal のインストール先
(setf *xtal-install-path* "c:/Program Files/xtal/")設定を反映させるため xyzzy を再起動してください。
※siteinit.l に記述した場合には再ダンプが必要です。
xtal-mode は以下のパッケージを利用しています。
xtal-mode パッケージからは以下の変数・関数を export しています。
また、xtal-mode パッケージはデフォルトで user および editor パッケージから use されます。
*xtal-mode-map**xtal-mode-syntax-table**xtal-mode-hook**xtal-create-output-buffer-hook**xtal-before-run-xtal-hook**xtal-run-xtal-hook**xtal-after-run-xtal-hook**xtal-comment-column**xtal-indent-level*インデントレベル (デフォルト: 4)
;; インデントレベルを 2 にする (setf *xtal-indent-level* 2)
*xtal-electric-insert-close-parentheses**xtal-electric-insert-close-string**xtal-keyword-file*キーワードファイル名 (デフォルト: Xtal)。
$XYZZY/etc 配下のファイル名を指定。
*xtal-install-path*Xtal のインストールパス。
この値は必ず設定してください。
(setf *xtal-install-path* "d:/usr/local/xtal")
*xtal-command-xtal*xtal.exe のパス (デフォルト: "xtal.exe")。
相対パスの場合 *xtal-install-path* から探します。
*xtal-command-ix*ix.exe のパス (デフォルト: "ix.exe")。
相対パスの場合 *xtal-install-path* から探します。
*xtal-mode-output-buffer-name**xtal-command-output-window-height**xtal-ix-buffer-name**xtal-ix-window-height**xtal-online-reference-url**xtal-home-url*xtal-modextal-completionデフォルトキーバインド: M-TAB
Xtal のキーワード、メソッド名を補完します。
xtal-indent-bufferデフォルトキーバインド: C-c C-\
バッファ全体をインデントします。
xtal-comment-regionデフォルトキーバインド: C-c C-9
リージョンをコメントアウトします。
xtal-uncomment-regionデフォルトキーバインド: C-c C-8
リージョンをコメントを解除します。
xtal-toggle-comment-lineデフォルトキーバインド: C-c C-/
カーソル行の 1 行コメントを切り替えます。
xtal-run-with-current-bufferデフォルトキーバインド: C-c C-x
編集中のバッファを xtal で実行します。
xtal-first-errorデフォルトキーバインド: F10
Xtal を実行結果の最初のエラーに移動します。
その後、F11 を押すことで次のエラーに移動できます。
xtal-close-output-bufferデフォルトキーバインド: C-c 0
Xtal の実行結果をバッファを削除します。
ixデフォルトキーバインド: C-c 1
ix を xyzzy 内部で実行します。 ix バッファの操作方法は ix-mode を参照してください。
ix-consoleデフォルトキーバインド: C-c !
コマンドプロンプトで ix を起動します。
xtal-mark-statementデフォルトキーバインド: M-SPC
カーソルがある行の文全体をマークします。
例:
●Hello: class {
▲ world: method() {
say("World!");
}
say: method(name) {
print("Hello, " ~ name);
}
}
xtal-forward-statementデフォルトキーバインド: C-M-n
次の文に移動します。
例:
Hello: class {
●world: method() {
▲say("World!");
}
■say: method(name) {
print("Hello, " ~ name);
}
}
xtal-backward-statementデフォルトキーバインド: C-M-p
前の文に移動します。
xtal-forward-statement-in-scopeデフォルトキーバインド: C-M-j
同一のスコープ内で次の文に移動します。
例:
Hello: class {
●world: method() {
say("World!");
}
▲say: method(name) {
print("Hello, " ~ name);
}
}
xtal-backward-statement-in-scopeデフォルトキーバインド: C-M-k
同一のスコープ内で前の文に移動します。
xtal-up-statementデフォルトキーバインド: C-M-u
ひとつ上のスコープに移動します。
例:
■Hello: class {
world: method() {
say("World!");
}
▲say: method(name) {
●print("Hello, " ~ name);
}
}
xtal-down-statementデフォルトキーバインド: C-c 0
ひとつ下のスコープに移動します。
例:
●Hello: class {
▲world: method() {
■say("World!");
}
say: method(name) {
print("Hello, " ~ name);
}
}
xtal-transpose-statementデフォルトキーバインド: C-M-t
文と文の間で実行すると文を入れ替えます。 クラスやメソッド単位で入れ替えることができます。
文内部で実行するとカーソル前後の式を入れ替えます (通常の transpose-sexp ど同じ)。
例:
Hello: class {
world: method() {
say("World!");
}
●
say: method(name) {
print("Hello,"▲ ~ name);
}
}
例 2:
xtal-transpose-statement は if と else if のみ特別な処理をします (if と else の入れ替えは何も考えず入れ替えるだけ)。
if (a == 1) {
hello();
}●else if (a == 2) {
world();
}
●にカーソルを置いて実行すると以下のようになります。
if (a == 2) {
world();
} else if (a == 1) {
hello();
}xtal-open-install-path-by-command-promptxtal-open-install-path-by-explorerxtal-track-popup-menuxtal-mode-show-creditxtal-add-bookmark-menu tag name file-or-url指定したファイルや URL を開くメニュー項目を Xtal メニューに追加する関数です。
メニュー項目はバージョン番号の上に追加されます。
例:
;; Xtgl の HTML ヘルプをメニューに追加。
;; xtal.chm は xtal.exe と同じ場所においておく。
(xtal-add-bookmark-menu :chm "Xtal リファレンス (&C)"
(merge-pathnames "xtal.chm" *xtal-install-path*))goto-matched-multi-line-commentgoto-beginning-of-multi-line-commentgoto-end-of-multi-line-commentxtal-comment-line-pxtal-in-comment-pxtal-in-multiline-comment-pxtal-in-shebang-comment-pxtal-parse-point-syntaxxtal-mode-versionxtal-mode のバージョンを返します。
バージョンは major.minor.teeny という形式です。 それぞれの番号は必ず 1 桁にするので、以下のように比較することができます
(if (string<= "1.1.0" (xtal-mode-version))
(1.1.0 以降で有効な処理)
(1.1.0 より前のバージョンでの処理))xyzzy のバッファ内で ix を起動 (ix) すると ix-mode になります。
ix-mode では以下のキーが定義されています。
一つ前のプロンプトに移動します。
過去のプロンプトで Enter を押すとそのコマンドを再実行できます。 入力中のコマンドは保存されます (M-q と同じ)。
現在入力中のコマンドを保存して入力行をクリアします。
他のコマンドを実行すると次のプロンプトには保存した入力行が自動的に挿入されます。
なし。
みやむこ かつゆき (<URL:mailto:miyamuko@gmail.com>)
xtal-mode は MIT/X ライセンスに基づいて利用可能です。
See xtal-mode/docs/MIT-LICENSE for full license.
xtal-mode 0.0.5 リリース!
xtal-mode 0.0.4 リリース!
before
n.times {
■
} ← 自動挿入after
n.times {■
} ← 自動挿入xtal-mode 0.0.3 リリース!
対応する閉じ括弧を自動的に挿入するようにした
この機能は *xtal-electric-insert-close-parentheses* に nil を設定することで off にできます。
文字列を自動的に挿入するようにした
この機能は *xtal-electric-insert-close-string* に nil を設定することで off にできます。
xtal-mode 0.0.2 リリース!
Xtal メニューに指定されたファイル・URL を開く項目を追加する関数を定義
(xtal-add-bookmark-menu :chm "Xtal リファレンス (&C)"
(merge-pathnames "xtal.chm" *xtal-install-path*))xtal-mode 0.0.1 リリース!