Next: text.gap-buffer - ギャップバッファ, Previous: text.edn - EDNのパーズと構築, Up: ライブラリモジュール - ユーティリティ [Contents][Index]
text.external-editor - 外部エディタの起動外部エディタプログラムを起動するための便利なモジュールです。 もともとREPLで使われることを意図していましたが、他の目的にも有用かもしれません。
{text.external-editor} 外部エディタを起動します。起動するエディタのパスは次のように決められます。
*editor*が定義されていれば、その値。
GAUCHE_EDITORが定義されていれば、その値。
EDITORが定義されていれば、その値。
#f単に#fを返します。
errorエラーを投げます。
askユーザに尋ねます。(デフォルト)
messageメッセージを出して#fを返します。
エディタを起動して、それが終了した場合は#tを返します。
エディタプログラムは次のどちらかの形で呼ばれます:
EDITOR filename EDITOR +lineno filename
後者の場合、エディタはfilenameをオープンした後、 linenoで示される行にカーソルを移動することが期待されます。
オープンするファイル名は、ジェネリックファンクションed-pick-fileを
path-or-procを引数として起動することで決定されます。
ed-pick-fileは(filename lineno)を返すか、
オープンすべきファイル名が決定できない場合は#fを返します。
<string>と<procedure>に対するメソッドは既に定義されています。
詳しくは下のed-pick-fileを見てください。
load-after引数は、ファイルが変更された後でそれを 自動的にロードするかどうかを指定します。以下の値のいずれかでなければなりません。
#tエディタが終了し、その時点でファイルが変更されていた場合は、それをロードします。
#fファイルをロードしません。
askファイルが変更されていた場合に、ロードすべきかどうかをユーザに尋ねます。(デフォルト)
註: Common Lispのedは引数なしで呼び出すこともできます。
しかし我々の用途ではそれはあまり有用でないと判断しました。REPLを走らせている場合、
それが既にエディタの中である可能性は高く、
それなら指定ファイルをバッファで開けばいいわけです。
また、emacsclientはファイル名を取るので、
ファイル名無しの場合の処理が煩雑になります。なので今のところ、ファイル名を必須としました。
{text.external-editor}
stringを一時ファイルに書き出して、それをオープンするエディタを起動します
(エディタがどう起動されるかについてはedのエントリを参照)。
エディタが終了したら、編集済の内容を文字列として返します。
{text.external-editor}
何を編集するかを決めるジェネリックファンクションです。
ファイル名と行番号からなるリストか、編集すべきファイル名が見つからなければ#fを
返します。
文字列、<procedure>、そして<top>に対するメソッドが既に定義されています。
objが文字列なら、それがファイル名です。
objが手続きでそのソース位置が分かっていれば、ソースファイル名と定義行を返します。
objがそれ以外なら#fを返します。
Next: text.gap-buffer - ギャップバッファ, Previous: text.edn - EDNのパーズと構築, Up: ライブラリモジュール - ユーティリティ [Contents][Index]