From 46ac426920306edc2d646f32995b333ff8a8aa0f Mon Sep 17 00:00:00 2001 From: Koichi Murase Date: Mon, 6 Feb 2023 20:39:48 +0900 Subject: [PATCH] main: fix a bug of BLE_SESSION_ID in bash-3.2 --- ble.pp | 1 + contrib | 2 +- docs/ChangeLog.md | 3 +- note.txt | 92 ++++++++++++++++++++++++++++++++--------------- 4 files changed, 67 insertions(+), 31 deletions(-) diff --git a/ble.pp b/ble.pp index bd9cb654..2c45044a 100644 --- a/ble.pp +++ b/ble.pp @@ -1947,6 +1947,7 @@ function ble/base/initialize-session { ((start_time*=1000000)) else ble/util/assign start_time 'ble/bin/date +%s' + ((start_time*=1000000)) fi ((start_time-=SECONDS*1000000)) diff --git a/contrib b/contrib index 4885403b..0dd12b72 160000 --- a/contrib +++ b/contrib @@ -1 +1 @@ -Subproject commit 4885403ba4a137fe1256a7004c94e79be4cf7847 +Subproject commit 0dd12b72e84a92ff3c28ae83f51ff9e04b297a75 diff --git a/docs/ChangeLog.md b/docs/ChangeLog.md index 71596f20..d687c468 100644 --- a/docs/ChangeLog.md +++ b/docs/ChangeLog.md @@ -117,7 +117,7 @@ - auto-complete: cancel auto-complete for `magic-space` `#D1913` 01b4f67 - complete: support ambiguous completion for command paths `#D1922` 8a716ad - complete: preserve original path segments as long as possible `#D1923` `#D1924` e3cdb9d -- main: support `BLE_SESSION_ID` and `BLE_COMMAND_ID` `#D1925` 44d9e10 +- main: support `BLE_SESSION_ID` and `BLE_COMMAND_ID` `#D1925` 44d9e10 `#D1947` xxxxxxx - main: support an option `--inputrc={diff,all,user,none}` `#D1926` 92f2006 - util (`ble/builtin/trap`): support Bash 5.2 `trap -P` `#D1937` xxxxxxx @@ -549,6 +549,7 @@ - histdb: handle multiple exec lines for `histdb_ignore` `#D1942` xxxxxxx - histdb: kill orphan `sqlite3` processes `#D1943` xxxxxxx - histdb: back up the database `#D1944` xxxxxxx + - histdb: fix miscellaneous SQL query errors `#D1947` xxxxxxx - integration: move `fzf` and `bash-preexec` integrations to subdir `#D1939` xxxxxxx diff --git a/note.txt b/note.txt index 366977d1..ba3f228a 100644 --- a/note.txt +++ b/note.txt @@ -1928,38 +1928,21 @@ bash_tips - leakvars - keymap の移動 (これは別 commit にする?) -2023-02-03 - - * contrib: ble-import で contrib/ は不要なのではないか? - -2023-01-26 - - * [保留] histdb: 現在の有効なファイル名をコマンドに紐づけて記録する可能性について - - * コマンドが前提としているファイルの存在を確認して history を skip する。 +2023-02-06 - ファイル名着色などの情報を参照したい。そうすればファイル名と偶々一致してい - る単語を誤って登録してしまうという事もなくなる。chroma を充実させる動機にも - なる。 + * auto-complete: cd 等簡単に成否が分かる物については判定して除外する可能性 - 複数のファイル名が考えられるので別テーブルに記録する事も考えたが、それだと - データベースサイズが大きくなる気がする。或いは、別テーブルにファイル名だけ - 記録しておいて但し id リストを command_history の entry の中に保存するとい - う事にすれば良いのかもしれない。 + 然し cd を上書きしている場合等にはやはり問題になる。またコマンド毎に対応す + るのは大変なのでこれも progcomp, chroma の様に判定するシェル関数を用意する + 可能性。ただ、問題なのは、単純コマンドでない時にコマンドの位置などの判定を + 行う必要があるという事。そしてその為には構文解析を各項目に対して回す必要が + ある。という事を考えると重くて現実的でない気がする。 - 余り形式を複雑にしても仕方がないしデータベース上でファイル名を操作するとも - 思えない。後で特定のファイル名を指定しているコマンドを探るとしても、ファイ - ルの相対パスを解決しなければ使えない。 +2023-02-03 - 然し改めて考えたら、既にファイルが存在しているかどうかに関わらず実行するコ - マンドもあるのだからファイル名と一致するかどうかで候補として生成するかどう - かを変えるのは余り良いアイディアではない様な気もする。どうなのだろう。 + * contrib: ble-import で contrib/ は不要なのではないか? - * 更に改めて考えてみると本当に fish がここまでの情報を記録しているのかも不 - 明である。oil の zulip ではその様な事を言っている人がいたが、実は単に - fish は cwd だけを見て判定している可能性もある。実際検索しても其処まで積 - 極的に履歴を記録している訳でもない様だ。2016に初めて cwd を一緒に記録し始 - めた程度である。 +2023-01-26 * histdb: history の中から情報を取り出してそれを使って何かする機能 @@ -1976,7 +1959,7 @@ bash_tips histdb -d [.|dir] ディレクトリ指定 histdb -t [.|dir] ディレクトリ指定(サブディレクトリも含める) histdb -g glob コマンドをパターンで絞り込み - hsitdb -r command_id コマンド削除 + histdb -r command_id コマンド削除 2023-01-25 @@ -6720,6 +6703,57 @@ bash_tips 2023-02-06 + * [棄却] histdb: 現在の有効なファイル名をコマンドに紐づけて記録する可能性について [#D1948] + + * コマンドが前提としているファイルの存在を確認して history を skip する。 + + ファイル名着色などの情報を参照したい。そうすればファイル名と偶々一致してい + る単語を誤って登録してしまうという事もなくなる。chroma を充実させる動機にも + なる。 + + 複数のファイル名が考えられるので別テーブルに記録する事も考えたが、それだと + データベースサイズが大きくなる気がする。或いは、別テーブルにファイル名だけ + 記録しておいて但し id リストを command_history の entry の中に保存するとい + う事にすれば良いのかもしれない。 + + 余り形式を複雑にしても仕方がないしデータベース上でファイル名を操作するとも + 思えない。後で特定のファイル名を指定しているコマンドを探るとしても、ファイ + ルの相対パスを解決しなければ使えない。 + + 然し改めて考えたら、既にファイルが存在しているかどうかに関わらず実行するコ + マンドもあるのだからファイル名と一致するかどうかで候補として生成するかどう + かを変えるのは余り良いアイディアではない様な気もする。どうなのだろう。 + + * 更に改めて考えてみると本当に fish がここまでの情報を記録しているのかも不 + 明である。oil の zulip ではその様な事を言っている人がいたが、実は単に + fish は cwd だけを見て判定している可能性もある。実際検索しても其処まで積 + 極的に履歴を記録している訳でもない様だ。2016に初めて cwd を一緒に記録し始 + めた程度である。 + + →今 fish の振る舞いを試してみたが、コマンド実行時に存在したファイルを消し + ても、同じディレクトリで同じファイルが autosuggestion の候補として表示され + る。つまり、(少なくともデフォルトの設定では) fish は別にコマンドライン中に + 含まれるファイル名について記録して存在を照合しているという訳ではない様だ。 + + 逆に cd 等の既知のコマンドについてそれが成功するかどうかをその場で判定して + いるというだけの事なのかもしれない。 + + うーん。これについては棄却する事にする。代わりにコマンドが成功するかどうか + を高速に判定できればそのコマンドをスキップするという機能を項目として残す。 + + * histdb: 様々の sql query エラーの修正 [#D1947] + + * main: bash-3.2 で BLE_SESSION_ID の時刻決定が誤っている。 + + bash-3.2 でちゃんと words を登録できていない気がする何故? 或いは、もっと + 前から駄目だった? と思ったらどうやら時刻が誤っている様だ。そし + て_ble_base_session の時刻を見ると何故か 1000000 分の1の少数にされている。 + うーん。結局これは ble/base/initialize-session の初期化が問題だった。 + + 更に bash-3.2 で session が登録されていない。うーん。調べてみた所様々なエラー + が出ていた。bash-3.2 に限らず bash-4.0+ でも sqlite がエラーメッセージを出 + しているのを捨てていた。直した。 + * 2022-01-08 term: prompt_status_line でずれが生じる端末がやはり存在している。何故だろうか [#D1946] Ref https://github.com/borisfaure/terminology/pull/115 @@ -7054,7 +7088,7 @@ bash_tips きでは。→実際にやってみたら timestamp で比較してちゃんと rule が発火するの で ln -sf で上書きしてしまえばOK。 - * histdb: 今までに入力した単語を記録する機能。単語自動補完 [#D1938] + * histdb: 今までに入力した単語を記録する機能。単語自動補完 (histdb-word) [#D1938] 当初は対応する session_id, exec_id と紐づけて管理する事を考えていたが、其処 までする必要性はあるだろうか。そもそも何故単語を記録するのかというと、補完