diff --git a/README-ja_JP.md b/README-ja_JP.md
index 2e4bf0f2..b09ec685 100644
--- a/README-ja_JP.md
+++ b/README-ja_JP.md
@@ -57,20 +57,20 @@ $ make INSDIR=/path/to/blesh install
`wget` を使う場合:
```console
-$ wget https://github.com/akinomyoga/ble.sh/releases/download/v0.3.0/ble-0.3.0.tar.xz
-$ tar xJf ble-0.3.0.tar.xz
-$ source ble-0.3.0/ble.sh
+$ wget https://github.com/akinomyoga/ble.sh/releases/download/v0.3.1/ble-0.3.1.tar.xz
+$ tar xJf ble-0.3.1.tar.xz
+$ source ble-0.3.1/ble.sh
```
`curl` を使う場合:
```console
-$ curl -LO https://github.com/akinomyoga/ble.sh/releases/download/v0.3.0/ble-0.3.0.tar.xz
-$ tar xJf ble-0.3.0.tar.xz
-$ source ble-0.3.0/ble.sh
+$ curl -LO https://github.com/akinomyoga/ble.sh/releases/download/v0.3.1/ble-0.3.1.tar.xz
+$ tar xJf ble-0.3.1.tar.xz
+$ source ble-0.3.1/ble.sh
```
指定したディレクトリに `ble.sh` を配置するには単に `ble-0.1.7` ディレクトリをコピーします。
```console
-$ cp -r ble-0.3.0 /path/to/blesh
+$ cp -r ble-0.3.1 /path/to/blesh
```
## `.bashrc` に設定する
@@ -204,37 +204,46 @@ bleopt edit_abell=
構文に従った着色で使用される、各文法要素の色と属性は `ble-color-setface` シェル関数で設定します。
既定の設定は以下のコードに対応します:
```bash
-ble-color-setface region bg=60,fg=white
-ble-color-setface region_target bg=153,fg=black
-ble-color-setface region_match bg=55,fg=white
-ble-color-setface region_insert fg=12,bg=252
-ble-color-setface disabled fg=242
-ble-color-setface overwrite_mode fg=black,bg=51
-ble-color-setface syntax_default none
-ble-color-setface syntax_command fg=brown
-ble-color-setface syntax_quoted fg=green
-ble-color-setface syntax_quotation fg=green,bold
-ble-color-setface syntax_expr fg=26
-ble-color-setface syntax_error bg=203,fg=231
-ble-color-setface syntax_varname fg=202
-ble-color-setface syntax_delimiter bold
-ble-color-setface syntax_param_expansion fg=purple
-ble-color-setface syntax_history_expansion bg=94,fg=231
-ble-color-setface syntax_function_name fg=92,bold
-ble-color-setface syntax_comment fg=242
-ble-color-setface syntax_glob fg=198,bold
-ble-color-setface syntax_brace fg=37,bold
-ble-color-setface syntax_tilde fg=navy,bold
-ble-color-setface syntax_document fg=94
-ble-color-setface syntax_document_begin fg=94,bold
-ble-color-setface command_builtin_dot fg=red,bold
-ble-color-setface command_builtin fg=red
-ble-color-setface command_alias fg=teal
-ble-color-setface command_function fg=92
-ble-color-setface command_file fg=green
-ble-color-setface command_keyword fg=blue
-ble-color-setface command_jobs fg=red
-ble-color-setface command_directory fg=26,underline
+# 編集に関連する着色の設定
+ble-color-setface region bg=60,fg=white
+ble-color-setface region_target bg=153,fg=black
+ble-color-setface region_match bg=55,fg=white
+ble-color-setface region_insert fg=12,bg=252
+ble-color-setface disabled fg=242
+ble-color-setface overwrite_mode fg=black,bg=51
+ble-color-setface auto_complete fg=238,bg=254
+ble-color-setface menu_filter_fixed bold
+ble-color-setface menu_filter_input fg=16,bg=229
+ble-color-setface vbell reverse
+ble-color-setface vbell_erase bg=252
+ble-color-setface vbell_flash fg=green,reverse
+
+# 構文着色の設定
+ble-color-setface syntax_default none
+ble-color-setface syntax_command fg=brown
+ble-color-setface syntax_quoted fg=green
+ble-color-setface syntax_quotation fg=green,bold
+ble-color-setface syntax_expr fg=26
+ble-color-setface syntax_error bg=203,fg=231
+ble-color-setface syntax_varname fg=202
+ble-color-setface syntax_delimiter bold
+ble-color-setface syntax_param_expansion fg=purple
+ble-color-setface syntax_history_expansion bg=94,fg=231
+ble-color-setface syntax_function_name fg=92,bold
+ble-color-setface syntax_comment fg=242
+ble-color-setface syntax_glob fg=198,bold
+ble-color-setface syntax_brace fg=37,bold
+ble-color-setface syntax_tilde fg=navy,bold
+ble-color-setface syntax_document fg=94
+ble-color-setface syntax_document_begin fg=94,bold
+ble-color-setface command_builtin_dot fg=red,bold
+ble-color-setface command_builtin fg=red
+ble-color-setface command_alias fg=teal
+ble-color-setface command_function fg=92
+ble-color-setface command_file fg=green
+ble-color-setface command_keyword fg=blue
+ble-color-setface command_jobs fg=red
+ble-color-setface command_directory fg=26,underline
ble-color-setface filename_directory underline,fg=26
ble-color-setface filename_directory_sticky underline,fg=white,bg=26
ble-color-setface filename_link underline,fg=teal
@@ -250,12 +259,15 @@ ble-color-setface filename_block underline,fg=yellow,bg=black
ble-color-setface filename_warning underline,fg=red
ble-color-setface filename_url underline,fg=blue
ble-color-setface filename_ls_colors underline
-ble-color-setface auto_complete fg=238,bg=254
-ble-color-setface menu_filter_fixed bold
-ble-color-setface menu_filter_input fg=16,bg=229
-ble-color-setface vbell reverse
-ble-color-setface vbell_erase bg=252
-ble-color-setface vbell_flash fg=green,reverse
+ble-color-setface varname_array fg=orange,bold
+ble-color-setface varname_empty fg=31
+ble-color-setface varname_export fg=200,bold
+ble-color-setface varname_expr fg=92,bold
+ble-color-setface varname_hash fg=70,bold
+ble-color-setface varname_number fg=64
+ble-color-setface varname_readonly fg=200
+ble-color-setface varname_transform fg=29,bold
+ble-color-setface varname_unset fg=124
```
現在の描画設定の一覧は以下のコマンドでも確認できます (`ble-color-setface` を無引数で呼び出す)。
diff --git a/README.md b/README.md
index 6006baf0..9489158d 100644
--- a/README.md
+++ b/README.md
@@ -54,20 +54,20 @@ $ make INSDIR=/path/to/blesh install
With `wget`:
```console
-$ wget https://github.com/akinomyoga/ble.sh/releases/download/v0.3.0/ble-0.3.0.tar.xz
-$ tar xJf ble-0.3.0.tar.xz
-$ source ble-0.3.0/ble.sh
+$ wget https://github.com/akinomyoga/ble.sh/releases/download/v0.3.1/ble-0.3.1.tar.xz
+$ tar xJf ble-0.3.1.tar.xz
+$ source ble-0.3.1/ble.sh
```
With `curl`:
```console
-$ curl -LO https://github.com/akinomyoga/ble.sh/releases/download/v0.3.0/ble-0.3.0.tar.xz
-$ tar xJf ble-0.3.0.tar.xz
-$ source ble-0.3.0/ble.sh
+$ curl -LO https://github.com/akinomyoga/ble.sh/releases/download/v0.3.1/ble-0.3.1.tar.xz
+$ tar xJf ble-0.3.1.tar.xz
+$ source ble-0.3.1/ble.sh
```
If you want to place `ble.sh` in a specific directory, just copy the directory:
```console
-$ cp -r ble-0.3.0 /path/to/blesh
+$ cp -r ble-0.3.1 /path/to/blesh
```
## Setup `.bashrc`
@@ -192,37 +192,46 @@ bleopt edit_abell=
The colors and attributes used in the syntax highlighting are controlled by `ble-color-setface` function. The following code reproduces the default configuration:
```bash
-ble-color-setface region bg=60,fg=white
-ble-color-setface region_target bg=153,fg=black
-ble-color-setface region_match bg=55,fg=white
-ble-color-setface region_insert fg=12,bg=252
-ble-color-setface disabled fg=242
-ble-color-setface overwrite_mode fg=black,bg=51
-ble-color-setface syntax_default none
-ble-color-setface syntax_command fg=brown
-ble-color-setface syntax_quoted fg=green
-ble-color-setface syntax_quotation fg=green,bold
-ble-color-setface syntax_expr fg=26
-ble-color-setface syntax_error bg=203,fg=231
-ble-color-setface syntax_varname fg=202
-ble-color-setface syntax_delimiter bold
-ble-color-setface syntax_param_expansion fg=purple
-ble-color-setface syntax_history_expansion bg=94,fg=231
-ble-color-setface syntax_function_name fg=92,bold
-ble-color-setface syntax_comment fg=242
-ble-color-setface syntax_glob fg=198,bold
-ble-color-setface syntax_brace fg=37,bold
-ble-color-setface syntax_tilde fg=navy,bold
-ble-color-setface syntax_document fg=94
-ble-color-setface syntax_document_begin fg=94,bold
-ble-color-setface command_builtin_dot fg=red,bold
-ble-color-setface command_builtin fg=red
-ble-color-setface command_alias fg=teal
-ble-color-setface command_function fg=92
-ble-color-setface command_file fg=green
-ble-color-setface command_keyword fg=blue
-ble-color-setface command_jobs fg=red
-ble-color-setface command_directory fg=26,underline
+# highlighting related to editing
+ble-color-setface region bg=60,fg=white
+ble-color-setface region_target bg=153,fg=black
+ble-color-setface region_match bg=55,fg=white
+ble-color-setface region_insert fg=12,bg=252
+ble-color-setface disabled fg=242
+ble-color-setface overwrite_mode fg=black,bg=51
+ble-color-setface auto_complete fg=238,bg=254
+ble-color-setface menu_filter_fixed bold
+ble-color-setface menu_filter_input fg=16,bg=229
+ble-color-setface vbell reverse
+ble-color-setface vbell_erase bg=252
+ble-color-setface vbell_flash fg=green,reverse
+
+# syntax highlighting
+ble-color-setface syntax_default none
+ble-color-setface syntax_command fg=brown
+ble-color-setface syntax_quoted fg=green
+ble-color-setface syntax_quotation fg=green,bold
+ble-color-setface syntax_expr fg=26
+ble-color-setface syntax_error bg=203,fg=231
+ble-color-setface syntax_varname fg=202
+ble-color-setface syntax_delimiter bold
+ble-color-setface syntax_param_expansion fg=purple
+ble-color-setface syntax_history_expansion bg=94,fg=231
+ble-color-setface syntax_function_name fg=92,bold
+ble-color-setface syntax_comment fg=242
+ble-color-setface syntax_glob fg=198,bold
+ble-color-setface syntax_brace fg=37,bold
+ble-color-setface syntax_tilde fg=navy,bold
+ble-color-setface syntax_document fg=94
+ble-color-setface syntax_document_begin fg=94,bold
+ble-color-setface command_builtin_dot fg=red,bold
+ble-color-setface command_builtin fg=red
+ble-color-setface command_alias fg=teal
+ble-color-setface command_function fg=92
+ble-color-setface command_file fg=green
+ble-color-setface command_keyword fg=blue
+ble-color-setface command_jobs fg=red
+ble-color-setface command_directory fg=26,underline
ble-color-setface filename_directory underline,fg=26
ble-color-setface filename_directory_sticky underline,fg=white,bg=26
ble-color-setface filename_link underline,fg=teal
@@ -238,12 +247,15 @@ ble-color-setface filename_block underline,fg=yellow,bg=black
ble-color-setface filename_warning underline,fg=red
ble-color-setface filename_url underline,fg=blue
ble-color-setface filename_ls_colors underline
-ble-color-setface auto_complete fg=238,bg=254
-ble-color-setface menu_filter_fixed bold
-ble-color-setface menu_filter_input fg=16,bg=229
-ble-color-setface vbell reverse
-ble-color-setface vbell_erase bg=252
-ble-color-setface vbell_flash fg=green,reverse
+ble-color-setface varname_array fg=orange,bold
+ble-color-setface varname_empty fg=31
+ble-color-setface varname_export fg=200,bold
+ble-color-setface varname_expr fg=92,bold
+ble-color-setface varname_hash fg=70,bold
+ble-color-setface varname_number fg=64
+ble-color-setface varname_readonly fg=200
+ble-color-setface varname_transform fg=29,bold
+ble-color-setface varname_unset fg=124
```
The current list of faces can be obtained by the following command (`ble-color-setface` without arguments):
diff --git a/blerc b/blerc
index 5e3ffbcf..3f670caf 100644
--- a/blerc
+++ b/blerc
@@ -372,12 +372,12 @@
# ble-color-setface syntax_quoted fg=green
# ble-color-setface syntax_quotation fg=green,bold
# ble-color-setface syntax_expr fg=navy
-# ble-color-setface syntax_error bg=203,fg=231 # bg=224
+# ble-color-setface syntax_error bg=203,fg=231
# ble-color-setface syntax_varname fg=202
# ble-color-setface syntax_delimiter bold
# ble-color-setface syntax_param_expansion fg=purple
# ble-color-setface syntax_history_expansion bg=94,fg=231
-# ble-color-setface syntax_function_name fg=92,bold # fg=purple
+# ble-color-setface syntax_function_name fg=92,bold
# ble-color-setface syntax_comment fg=gray
# ble-color-setface syntax_glob fg=198,bold
# ble-color-setface syntax_brace fg=37,bold
@@ -407,6 +407,15 @@
# ble-color-setface filename_warning underline,fg=red
# ble-color-setface filename_url underline,fg=blue
# ble-color-setface filename_ls_colors underline
+# ble-color-setface varname_array fg=orange,bold
+# ble-color-setface varname_empty fg=31
+# ble-color-setface varname_export fg=200,bold
+# ble-color-setface varname_expr fg=92,bold
+# ble-color-setface varname_hash fg=70,bold
+# ble-color-setface varname_number fg=64
+# ble-color-setface varname_readonly fg=200
+# ble-color-setface varname_transform fg=29,bold
+# ble-color-setface varname_unset fg=124
##-----------------------------------------------------------------------------
diff --git a/generate-release-note.sh b/generate-release-note.sh
index c89eb006..0137fa3c 100755
--- a/generate-release-note.sh
+++ b/generate-release-note.sh
@@ -1,4 +1,22 @@
-#!/bin/bash
+#!/usr/bin/env bash
+
+fname_changelog=changelog.txt
+
+function read-arguments {
+ while (($#)); do
+ local arg=$1; shift 1
+ case $arg in
+ (--changelog)
+ if (($#)); then
+ fname_changelog=$1; shift
+ else
+ flags=E$flags
+ echo "release-note: missing option argument for '$arg'." >&2
+ fi ;;
+ esac
+ done
+}
+read-arguments "$@"
function process {
## @arr commits
@@ -7,44 +25,56 @@ function process {
## そして before は after に対応する master における commit である。
local -a commits; commits=("$@")
+ local commit_pair
for commit_pair in "${commits[@]}"; do
- local b=${commit_pair#*:}
- local a=${commit_pair%:*}
+ local a=${commit_pair%%:*}
+ commit_pair=${commit_pair:${#a}+1}
+ local b=${commit_pair%%:*}
+ local c=${commit_pair#*:}
- local result=$(sed -n "s/$b/$a (master: $b)/p" changelog.txt)
+ local result=
+ [[ $b ]] && result=$(sed -n "s/$b/$a (master: $b)/p" "$fname_changelog")
if [[ $result ]]; then
echo "$result"
+ elif [[ $c ]]; then
+ echo "- $c $a (master: ${b:-N/A}) @@@NOT-FOUND@@@"
else
echo "@@@not found $a"
fi
done
}
-# ble-0.3.0
-#
-# 232767a:30cc31c
-# 244205f:3f1f472
-# 655fbaa:2e6f44c
-# 1bc9934:b29f248
-# 910313e:309b9e4
-# e6ae0be:ab8dad2
-# a235aa4:467b7a4
-# d2aa2d2:1666ec2
-# 8926704:4ce2753
-# 7b15550:d94f691
-# f8bdf9d:376bfe7
-# 45db2ec:b52da28
-
-# ble-0.2.0
-#
-process \
- 6713766:f199215 \
- b109b46:88a1b0f \
- 73a191d:36b9a8f \
- ae72dc3:ae176b2 \
- 50fbadf:8e4180c \
- 7109acf:4efe1a9 \
- 637ec53:f20f840 \
- 6f5058d:a46ada0 \
- 6c931fd:9290adb \
- 6ad206a:9892d63
+function find-commit-pairs {
+ {
+ echo __MODE_HEAD__
+ git log --format=format:'%h%s' --date-order --abbrev-commit "$1"..HEAD; echo
+ echo __MODE_MASTER__
+ git log --format=format:'%h%s' --date-order --abbrev-commit "${2:-master}"; echo
+ } | awk -F '' '
+ /^__MODE_HEAD__$/ {
+ mode = "head";
+ nlist = 0;
+ next;
+ }
+ /^__MODE_MASTER__$/ { mode = "master"; next; }
+
+ mode == "head" {
+ i = nlist++;
+ titles[i] = $2
+ commit_head[i] = $1;
+ title2index[$2] = i;
+ }
+ mode == "master" && (i = title2index[$2]) != "" && commit_master[i] == "" {
+ commit_master[i] = $1;
+ }
+
+ END {
+ for (i = 0; i < nlist; i++) {
+ print commit_head[i] ":" commit_master[i] ":" titles[i];
+ }
+ }
+ '
+}
+
+IFS=$'\n' eval 'commit_pairs=($(find-commit-pairs "$@"))'
+process "${commit_pairs[@]}"
diff --git a/make_command.sh b/make_command.sh
index a4d436d4..f17887cd 100755
--- a/make_command.sh
+++ b/make_command.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
function mkd {
[[ -d $1 ]] || mkdir -p "$1"
@@ -283,6 +283,18 @@ function sub:list-functions {
sed -n 's/^[[:space:]]*function \('"$rex_function_name"'\)[[:space:]].*/\1/p' "${files[@]}" | sort -u
}
+function sub:first-defined {
+ local name dir
+ for name; do
+ for dir in ../ble-0.{1..3} ../ble.sh; do
+ (cd "$dir"; grc "$name" &>/dev/null) || continue
+ echo "$name $dir"
+ return
+ done
+ done
+ echo "$name not found"
+}
+
#------------------------------------------------------------------------------
if (($#==0)); then
diff --git a/memo.txt b/memo.txt
index 07f6886a..8f1d8715 100644
--- a/memo.txt
+++ b/memo.txt
@@ -2613,8 +2613,8 @@ bash_tips
- decode: remove debug messages for `ble-bind -s` 64a17c3
- syntax: fix highlighting of `${!var@}` `#D1176` 161ed80
- term: fix `Ss` (`DECSCUSR`) 0c773da
- - term: workaround linux console CSI \>, CSI M, CSI L `#D1213` `#D1214` 0000000
- - edit: fix exit status of Bash by key binding C-d `#D1215` 0000000
+ - term: workaround linux console CSI \>, CSI M, CSI L `#D1213` `#D1214` 0ec6f0c
+ - edit: fix exit status of Bash by key binding C-d `#D1215` a9756e9
Support macOS, FreeBSD, Arch Linux, Solaris, Haiku, Minix
- util: fix the error message "usage: sleep seconds" on macOS bash 3.2 `#D1194` 6ff4d2b
@@ -3619,27 +3619,42 @@ bash_tips
もし ANSI に反していないのだとしても修正しても良いのではないだろうか?
(然し、他のプログラム vim や emacs はこれをどの様に取り扱っているのだろうか。)
- % Linux に対する修正を考える場合どの様にしたら良いのだろうか。
- % 様々な文書に目を通さなければならないらしい。
- % https://github.com/torvalds/linux/blob/master/Documentation/translations/ja_JP/howto.rst
- %
- % そもそも問題の linux console は linux に含まれているのかという所から謎。
- % https://elixir.bootlin.com/linux/latest/source/include/linux/console.h#L145 これは多分違う。
- % /dev/console 的な意味でのコンソールである。うーん。clone する?
- % 実のところどれだけの容量があるのか分からない。実際に clone を試みると712万のファイルがある。
- % 例によって github の connection は 30KiB/s と低速である。
- % 1/1000コピーした時点で 4MiB になっている。つまり合計で 4GiB ぐらいある?
- %
- % 調べると github は単なるミラーで本家は kernel.org にあるそうだ。
- % という訳で github は遅いので kernel.org からクローンする事にする。
- % と思ったら kernel.org は github にも増して遅い。駄目だ。
-
- うーん。cygwin でも同じ振る舞いになるという事は、まあ許容するしかないのだろうか。
- 後で興味があれば該当部分のコードを確認する事にする。
-
- * 取り敢えず ble.sh 側で対策を考える。
- というかこの振る舞いは cygwin コンソールと同じ? #D1147 に記録がある。
- うーん。最終行に於ける DL は信用できない物なのか。
+ * Linux console を調べる
+ % Linux に対する修正を考える場合どの様にしたら良いのだろうか。
+ % 様々な文書に目を通さなければならないらしい。
+ % https://github.com/torvalds/linux/blob/master/Documentation/translations/ja_JP/howto.rst
+ %
+ % そもそも問題の linux console は linux に含まれているのかという所から謎。
+ % https://elixir.bootlin.com/linux/latest/source/include/linux/console.h#L145 これは多分違う。
+ % /dev/console 的な意味でのコンソールである。うーん。clone する?
+ % 実のところどれだけの容量があるのか分からない。実際に clone を試みると712万のファイルがある。
+ % 例によって github の connection は 30KiB/s と低速である。
+ % 1/1000コピーした時点で 4MiB になっている。つまり合計で 4GiB ぐらいある?
+ %
+ % 調べると github は単なるミラーで本家は kernel.org にあるそうだ。
+ % という訳で github は遅いので kernel.org からクローンする事にする。
+ % と思ったら kernel.org は github にも増して遅い。駄目だ。
+
+ うーん。cygwin でも同じ振る舞いになるという事は、まあ許容するしかないのだろうか。
+ 後で興味があれば該当部分のコードを確認する事にする。
+
+ * 後で見たらダウンロードが終わっていた。結局 1.2GiB 程度だった様だ。
+ また時間帯によるのだろうか平均で 52KiB という事だった。
+ 20秒で1MiB,1分で3MiB,100分で300MiB,400分で1.2GiBである。約6時間。
+ * grc '\bSGR\b' で検索するとどうやら linux/drivers/tty/vt/vt.c に console の機能がある。
+ * CSI M, L の機能は csi_{M,L} という関数で実装されていて、
+ 実際の処理は con_scroll という関数で実行している。この con_scroll が怪しい。
+ * 因みに 2;R;G;B にも対応している様だ (表示できるかどうかは別なのだろうが)。
+ →調べてみると rgb_{fore,back}ground という関数で色相を元にして 16 色コードに変換している。
+
+ 取り敢えず ble.sh 側で対策を考える。
+ というかこの振る舞いは cygwin コンソールと同じ? #D1147 に記録がある。
+ うーん。最終行に於ける DL は信用できない物なのか。
+
+ * そもそも最終行の時にだけ注意すれば良いのだろうか?
+ 以前 cygwin の console を観察した時には丁度ぴったり
+ 下にある行が消える時には必ず動かないという事だった。
+ →今確認した所そういう問題は発生していない様だ。
* linux console での振る舞いが怪しい [#D1213]
調べると arch では発生していない。arch の kernel は 5.4.8-arch-1 である。