Skip to content

JA04_プロンプト

HAYAMA_Kaoru edited this page Oct 11, 2023 · 1 revision

.PromptWriter フィールドで、プロンプトで出力すべき文字列を作成する関数を設定することができます。

※ 以前はPromptというフィールドで指定していましたが、廃止されました。

editor := &readline.Editor{
	// ;
	PromptWriter: func(w io.Writer) (int, error) {
		return io.WriteString(w, "\x1B[1;36m$ \x1B[0m") // print `$ ` with cyan
	},
	// ;
}

.PromptWriter で設定された関数はプロンプトを表示されるたびに評価されます。 パラメータに設定された io.Writer に対して、fmt.Fprintf などで行うのと同様にプロンプトを出力してください。 戻り値の (int,error) は現状使用されていません。

もともとは プロンプトの文字幅をユーザ側から提供してもらう意図で設けましたが、バイト数 != 文字幅の場合が多く、実質、無意味であったため、その後、出力された文字列を strings.Builder でバッファリングした後、go-runewidth ライブラリなどで正確な文字列を go-readline-ny 側で計測するようにしました。そのため、不要です。