Skip to content

JA06_入力終結時の改行

HAYAMA_Kaoru edited this page Oct 11, 2023 · 1 revision

.LineFeedWriter はEnterキーなどを押下して、入力を終結した時に行う改行出力のフックです。

※ 以前は .LineFeed というフィールドでしたが、v1.0.0 になるタイミングで廃止されました。

デフォルトでは LF を出力するだけですが、

  • 改行してもらいたくない場合(特に少し凝った画面レイアウトをとる場合など)
  • 入力終了時に特定の動作をさせたい場合

などはここに代わりに実行する関数を設定します。

var editor readline.Editor
editor.LineFeedWriter = func(rc readline.Result, w io.Writer) (int, error) {
	if rc != readline.ENTER {
		return fmt.Fprintln(w)
	}
	return 0, nil
}

引数の rc は呼ばれる状況が入ります。readline.ENTER ならば Enter キーを入力した場合、readline.ABORT ならば Ctrl-D が入力された場合、readline.INTR ならば Ctrl-C が押された場合になります。上の場合だと、Enter キーが押された時以外だけ LF を出力するという動作になります。

戻り値の (int,error) は .PromptWriter 同様使われません。