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 である。