Feb 12, 2025
- 補完で一候補しかない時に単語の後にスペースが挿入されなかった問題を修正
- 2番目以降の引用符が使用されない不具合を修正した
- 新しい補完機能 complete.CmdCompletionList2 と CmdCompletion2 を追加
Feb 9, 2025
- OS のクリップボードの読み書きをデフォルトではしないようにし、コピペ用のバッファは Editor型の Clipboard フィールドで差し替えられるようにした #9
- internal だったパッケージ
Moji
と型を公開
Jan 28, 2025
- 実験的仕様変更: シンタックスハイライト構造体の Pattern フィールドの
FindAllStringIndex
を呼び出す時、第二引数に-1
ではなく、-1 - (カーソルのバイト数位置
の値を与えるようにした。
Jan 23, 2025
- シンタックスハイライトの評価関数の呼び出し回数を削減し、評価関数が遅い場合の処理時間を改善した。
Jan 22, 2025
- go-multiline-ny のために以下の変更を行った
- 各コマンドが動作した後に呼ばれるフック:
Editor.AfterCommand
を追加 - 非公開であった型・関数を公開: NewEscapeSequenceId, EscapeSequenceId, HighlightToColoring, HighlightColorSequence, and ColorInterface
- 各コマンドが動作した後に呼ばれるフック:
Jan 18, 2025
- go-readline-skk を使って日本語を入力した時、シンタックスハイライトを表示するコードでパニックが発生する問題を修正
- 関数 GetKey を非推奨関数とした(廃止予定)
- 関数 GetKeys, GetRawKey を非公開とした
Jan 12, 2025
- シンタックスハイライトの新しいインターフェイスを用意した。
Pattern
はハイライトを適用する範囲を指定する。regexp.Regexp
でよいが、FindAllStringIndex(string, int) [][]int
を持つ型なら何でもよいSequence
はPattern
の部分に適用するエスケープシーケンスを指定するDefaultColor
はハイライトが適用されていない部分に使うシーケンスを指定するResetColor
は入力テキスト出力を終える時に使うシーケンスを指定する- 従来のシンタックスハイライトのインターフェイス:
Coloring
は廃止予定です
editor := &readline.Editor{
// :
Highlight: []readline.Highlight{
{Pattern: regexp.MustCompile("&"), Sequence: "\x1B[33;49;22m"},
{Pattern: regexp.MustCompile(`"[^"]*"`), Sequence: "\x1B[35;49;22m"},
{Pattern: regexp.MustCompile(`%[^%]*%`), Sequence: "\x1B[36;49;1m"},
{Pattern: regexp.MustCompile("\u3000"), Sequence: "\x1B[37;41;22m"},
},
ResetColor: "\x1B[0m",
DefaultColor: "\x1B[33;49;1m",
}
Jan 7, 2025
- bufio.Writer の過剰なネストをさせないようにした
- デフォルトの色設定が誤って太字に設定されていた問題を修正 #8
Thanks to @brammeleman
Nov 20, 2024
- UNIX系プラットフォームでのインクリメンタルサーチで Backspace キー
\x7F
が直前の文字を削除しない不具合を修正 (Ctrl-H は機能していた)
Nov 8, 2024
- UNIX系デスクトップのターミナルの機能で、複数行を貼り付けた時、一部のテキストをとりこぼす不具合を修正 (hymkor/go-multiline-ny v0.16.2 向け修正)
Nov 4, 2024
- 入力予想機能の予想関数を差し替えられるようにした(
(*Editor) Predictor = ...
)
Oct 6, 2024
- PowerShell 7 風の入力予測機能の実装
次のように表示部分の表示開始・終了時のエスケープシーケンスを設定することで有効化される
editor := &readline.Editor{
PredictColor: [...]string{"\x1B[3;22;34m", "\x1B[23;39m"},
}
Oct 2, 2024
- WindowsTerminal 1.22 向けに、Zero Width Join Sequence の文字幅の計算関数を差し替えられるようにした(SetZWJSWidthGetter)
Jun 16, 2024
- Ctrl-P/N: 履歴を切り替えるときに変更したエントリを保存し、(Enterが入力されるまでは)再度切り替えたときに復元するようにした
Apr 21, 2024
Apr 17, 2024
- 定数追加: keys.ShiftTAB = "\x1B[Z"
- 端末のインターフェイスと実装を簡素化 (
ITty
周辺の互換性破壊)
Feb 29, 2024
- "keys": キーの名前定数は型無しとした (元々は
keys.Code
だった)
Feb 27, 2024
- "completion": 1候補に絞れた時に空白を追加していたが、空白のかわりに CmdCompletion.Postfix や CmdCompletionOrList.Postfix で指定できるようにした (デフォルトは0文字)
Oct 08, 2023
- 合字や異体字など単純なコードポイントでない文字位置で色を変えられなかった問題を修正
Oct 06, 2023
- バージョンを v1.0.0 にしました。
Oct 02, 2023
- カーソルが末尾にある時、
Coloring.Next
が CursorPositionDummyRune(U+E000) を受けとれない問題を修正 (ColorSequence) Chain
を追加 (二つのColorSequenceを連結する)
Oct 01, 2023
(ColorSequence) Add
を作成- カーソル位置で、
Coloring.Next
は CursorPositionDummyRune(U+E000) を受けとるようにした
Sep 29, 2023
- v1.0.0 に向けて、非推奨としていたフィールド、メソッド、関数を削除しました
KeyGoFuncT
.GoCommand
をかわりに使ってくださいmoji.GetCharWidth
GetFunc
.nameutils.GetFunc
をかわりに使ってください(*Editor) LineFeed
.(*Editor) LineFeedWriter
をかわりに使ってください(*Editor) Prompt
.(*Editor) PromptWriter
をかわりに使ってください(*Editor) GetBindKey
(*KeyMap) BindKeyFunc
.nameutils.BindKeyFunc()
をかわりに使ってください(*KeyMap) BindKeyClosure
(*KeyMap) GetBindKey
(*KeyMap) BindKeySymbol
.nameutils.BindKeySymbol
をかわりに使ってください
Sep 13 2023
- 関数
GetKey(tty) string
を公開- 内部的には前からあった関数でしたが、利用パッケージで同等の関数を再実装することが多かったので、ユーティリティー関数として公開しました。
- GetKey は
(*TTY) ReadRune
と違って、"[\x1B[A"
のような一連のキー入力シーケンスを1文字列といて返します - 引数 tty は go-tty.TTY もしくは、その互換型を想定。メソッド Raw(), ReadRune(), Buffered() を実装していなければいけません
Editor.Prompt
フィールドに Deprecated コメントをセットしました
Aug 28 2023
(*Editor) PromptWriter
がCtrl-H
やESC]...\007
を出力した場合でも、プロンプトの幅を正しくカウントするようになった- プロンプトの最後の行とユーザ入力テキストだけを再表示する
(*Buffer) RepaintLastLine()
を実装した。- プロンプト中の
\n
を\r
に置換して出力する - 再表示の際に不必要に行が改められるのを避けるために実装した。
- 利用するには PromptWriter フィールドが設定されていることが必要になります
- プロンプト中の
Jul 29 2023
- keys/code.go で
\x
と書くべきものが0x
になっていたリテラルを修正 - カーソルオフの状態で呼ばれると、そのままカーソルがオンにならず、表示されない不具合を修正
May 28 2023
- メソッド
(*KeyMap) Lookup
追加
May 19 2023
- タブ文字を
^I
の代わりに4桁ごとの位置までの空白で表現できるようになった。
May 16 2023
- 新メソッド
(*Editor) Init
を追加- nil なフィールドをデフォルト値へ置き換える。
(*Editor) Readline
を呼び出す前にEditor
のフィールドを参照する時、明示的に(*Editor) Init
を呼ばなくてはいけない。主に go-readline-ny のアドオンパッケージ向け
- nil なフィールドをデフォルト値へ置き換える。
May 15 2023
- パスがディレクトリをまったく含まないとき、
completion.File
が失敗する問題を修正
May 15 2023
CmdCompletion
andCmdCompletionOrList
で候補の絞り込みをするようにしたので、Completion
interface 側で絞り込みをしなくてもよくなったCompletion.List
は basenames に nil を設定して省略できるようになった。completion.File
で、ファイル名の中に./
が含まれている時にひとつもマッチしなかった問題を修正(filepath パッケージが./
を削除してしまうため)
May 13 2023
- nyagos の補完のサブセットを、サブパッケージ
completion
として逆輸入した。 - サブパッケージ
completion
を使用するようexamples/example2.go
を書き換えた。 - LineFeed に io.Writer パラメーターを追加した新フィールド
LineFeedWriter
を追加。
May 12 2023
- グローバルな sync.Mutex 変数を
Editor
インスタンスの変数に変更した。キーに割り当てられたコマンド内で、新たなEditor
インスタンスを生成して、(*Editor) ReadLine
を呼ぶことができない問題があった。 - インスタンスのテーブル・グローバルなテーブルの双方から、キーに割り当てられたコマンドを探す
(*Editor) loolup(KEY)
をLookUp
に改名(公開) (*KeyMap) BindKey(KEY,nil)
で KEY に割り当てられた機能を削除できるようにした。b:=&strings.Builder{};c.Moji.WriteTo(b);b.String()
と等価な動作をする(c Cell) String
を実装(*Buffer) GetKey
で(*Buffer).Out.Flush
を呼ぶようにしたので、ユーザは明示的にFlush
を呼ぶ必要はなくなった。
May 8 2023
- 関数
StringToMoji
とGetStringWidth
のメモリアローケーション回数を削減した - 新関数
MojiCountInString
を追加(len(StringToMoji(s))
よりコストが低い)
May 7 2023
- TeraTerm で Ubuntu に接続して
make demo
を実行したときに色がおかしい不具合を修正- カラーサンプルの
coloring/vimbatch.go
が初期化する際にESC[0m
ではなく、ESC[1;39;40m
を使っていた。 - リセット用のカラーコード
ESC[0m
に相当する定数値readline.ColorReset
を用意
- カラーサンプルの
May 6 2023
- Windows以外で桁数と行数が取り違えられる問題 を修正するため、go-tty を v0.0.5 へ更新しました。
May 5 2023
- 改行やエスケープシーケンス、絵文字が含まれていても出力する幅を正しく計測できるプロンプトフックとして、
Editor
型に新しいフィールドPromptWriter
を追加しました。
May 2 2023
無駄に複雑化している内部構造を簡素化しました。
- (使われている場所がなかった)
(*Buffer) Write
メソッドを削除 - (外部からは使いどころがない)
(*Buffer) RefreshColor()
メソッドを非公開化 - サブパッケージの
tty10
の goroutine リークを修正(デフォルトでは未使用) AnonymousCommand
(匿名のキー割り当てコマンド型)とSelfInserter
(文字挿入コマンド型)を追加
- キーコードを定義するサブパッケージ
keys
を作成 - 型
KeyGoFuncT
をGoCommand
へ改名 - 型
KeyFuncT
をCommand
へ改名 - 関数
GetKey(ITty)
を隠蔽 - キー名定数
K_*****
を削除。かわりにキーコードそのものであるkeys.*
を直接ご利用ください - コマンド名定数
F_*****
を削除。かわりに(Command) String()
メソッドの結果をご利用ください - (使われている場所がなかった)
(Result) String()
を削除
Apr 26 2023
- 以下のテストで動作確認ができており、fork 原因のWindowsTerminal の不具合が修正されているようなので、go-tty の独自forkバージョンを削除し、オリジナルの v0.0.4 を使用するようにした。
- ① OK: CIRCLE DIGIT ONE: U+2460
- 👨🌾 OK: FARMER: MAN(U+1F468)+ZERO WIDTH JOINER(U+200D)+EAR OF RICE(U+1F33E)
- 邊󠄄 OK: KANJI with VARIATION SELECTOR(U+908A U+E0104)
- go-tty のかわりに golang.org/x/term を使うための内部スイッチを用意(現行は従来どおり go-tty を使用)
- go-runewidth のかわりに golang.org/x/text/width を使うための内部スイッチを用意(現行は従来どおり go-runewidth を使用)
- 変数SurrogatePairOkを削除した。関数 EnableSurrogatePair() and IsSurrogatePairEnabled() を使用のこと
- 関数NewDefaultTtyを削除した。 golang.org/x/term もしくは go-tty を使用のこと
Apr 14 2023
- v0.10.0
Coloring
interface を変更Init()
とNext()
は int のかわりにColorSequence
(=int64) 型を返すものとしたESC[0m
で出力属性をリセットできるようになった
- v0.10.1
- v0.10.0 で色用の定数が壊れていたのを修正
Apr 10 2023
Coloring.Init()
/.Next()
が 0 を返した時、m
というゴミ文字列が表示されるのを修正
Apr 9 2023
- 非公開の型
_Cell
をCell
に改名(公開)。Cell
のインスタンスは1文字を表すコードポイント群(=Moji
)と非公開の色情報を含んでいます。 Moji
型の配列を文字列に変換する非公開の関数string2moji
をStringToMoji
に改名(公開)。Moji
のインスタンスは1文字を表すコードポイント群を保持しています。
例
農夫の絵文字(👨🌾)は3つのコードポイント (U+0001F468, U+200D , and U+0001F33E)で表されますが、Moji
は1インスタンスでそれらを格納します。
Apr 2 2023
- v0.8.4 の非互換性を修正しました。v0.8.4 は nyagos でリンクできなくなってしまっており、削除したメソッド
(*KeyMap)GetBindKey(string)
を復元しました。
Mar 25 2023
- キーのマッピングを返す関数の
(*KeyMap) GetBindKey
が nil を返すのは都合が悪いので、 かわりに(*Editor)GetBindKey
を作成し、(*KeyMap) GetBindKey
は削除した
Sep 24 2022
- サンプルの色プラグイン
vimbatch
の文字色をESC[37m
(白) からESC[39m
(端末の標準文字色) へ変更
Aug 12 2022
- 最初の文字を表示する前に色をリセット (以前は省略されていた)
Aug 12 2022
- Ctrl-E がタイプされたとき、カーソル上に
- Fix: On Ctrl-E typed, sometimes non-space character remains on the cursor.
Apr 29 2022
- WezTerm で Surrogate-pair を有効にした。
- Contour Terminal で Surrogate-pair を有効にした。
- 出力にバックスペース(\b)を使わないようにした。
( 本バージョンは nyagos 4.4.12_0 で使用 )
Feb 26 2022
Windows Terminal での透明色に対応
Coloring.Init()
でデフォルト色を戻さなくてはいけなくなった (この interface の互換性は壊れた)- デフォルト背景色で
ESC[40m
ではなくESC[49m
を使うようにした
Dec 29 2021
- #2,#3 フラグフィールド
Editor.HistoryCycling
を追加 - Color: Multi SelectGraphcReition Parameters をサポート(v0.6.2)
- 色設定のために小関数
SGR1
,SGR2
,SGR3
,SGR4
を実装
Thanks to @ram-on
Dec 10 2021
カラー対応
See example2.go and coloring/vimbatch.go
Sep 12 2021
レポジトリオーナーを zetamatta から nyaosorg へ変更
Aug 27 2021
- Windows10 の、WindowsTerminal でない端末で、罫線キャラクターの幅が不正確になっていた
( East Asian Ambiguous Character · Issue #412 · zetamatta/nyagos )
May 3 2021
- Windows Terminal で数学向けボールド文字 (U+1D400 - U+1D7FF) をサポートした。
May 3 2021
- Visual Studio Code のターミナルではサロゲートペアがサポートされていないので強制オフにするようにした。
この問題は VSCode を WindowsTerminal より起動すると表面化します。
Apr 14 2021
- Emoji Moifier Sequence (skin tone) をサポート: 🏻(U+1F3FB)~ 🏿 (U+1F3FF)
Apr 14 2021
- ReadLine メソッドを呼ばれる前から押されていて、呼ばれてからキーが離されたコードが入力される不具合を修正した
Apr 14 2021
- RAINBOW FLAG をサポート:(U+1F3F3 U+200D U+1F308 🏳🌈)
Apr 14 2021
- WAVING WHITE FLAG と異体字をサポート (U+1F3F3 & U+1F3F3 U+FE0F / 🏳 & 🏳️)