diff --git a/README-ja_JP.md b/README-ja_JP.md index 655d2813..2ee01e8a 100644 --- a/README-ja_JP.md +++ b/README-ja_JP.md @@ -22,7 +22,7 @@ `~/.bashrc` の設定に関しては [節1.3](#set-up-bashrc) を御覧ください。 ```bash -# インストール & .bashrc 簡単設定 +# インストール & .bashrc 簡単設定 (動かない場合は節1.3を御参照下さい) git clone --recursive https://github.com/akinomyoga/ble.sh.git make -C ble.sh install PREFIX=~/.local @@ -113,25 +113,27 @@ Make 変数 `DESTDIR` または `PREFIX` が指定されている時、`ble.sh` `wget` を使う場合: ```console -$ wget https://github.com/akinomyoga/ble.sh/releases/download/v0.3.2/ble-0.3.2.tar.xz -$ tar xJf ble-0.3.2.tar.xz -$ source ble-0.3.2/ble.sh +$ wget https://github.com/akinomyoga/ble.sh/releases/download/v0.3.3/ble-0.3.3.tar.xz +$ tar xJf ble-0.3.3.tar.xz +$ source ble-0.3.3/ble.sh ``` `curl` を使う場合: ```console -$ curl -LO https://github.com/akinomyoga/ble.sh/releases/download/v0.3.2/ble-0.3.2.tar.xz -$ tar xJf ble-0.3.2.tar.xz -$ source ble-0.3.2/ble.sh +$ curl -LO https://github.com/akinomyoga/ble.sh/releases/download/v0.3.3/ble-0.3.3.tar.xz +$ tar xJf ble-0.3.3.tar.xz +$ source ble-0.3.3/ble.sh ``` 指定したディレクトリに `ble.sh` を配置するには単に `ble-0.1.7` ディレクトリをコピーします。 ```console -$ cp -r ble-0.3.2 /path/to/blesh +$ cp -r ble-0.3.3 /path/to/blesh ``` ## 1.3 `.bashrc` に設定する -対話シェルで常用する場合には `.bashrc` に設定を行います。以下の様にコードを追加して下さい。 +対話シェルで常用する場合には `.bashrc` に設定を行います。 +単に `ble.sh` を `source` して頂くだけでも大抵の場合動作しますが、 +より確実に動作させる為には以下の様にコードを記述します。 ```bash # bashrc diff --git a/README.md b/README.md index 50384f9c..02fce414 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ For detailed descriptions, see [Sec 1.1](#get-from-source) and [Sec 1.2](#get-fr [Sec 1.3](#set-up-bashrc) for the setup of your `~/.bashrc`. ```bash -# Quick INSTALL to BASHRC +# Quick INSTALL to BASHRC (If this doesn't work, please follow Sec 1.3) git clone --recursive https://github.com/akinomyoga/ble.sh.git make -C ble.sh install PREFIX=~/.local @@ -113,25 +113,26 @@ To set up `.bashrc` see [Sec. 1.3](#set-up-bashrc). With `wget`: ```bash -wget https://github.com/akinomyoga/ble.sh/releases/download/v0.3.2/ble-0.3.2.tar.xz -tar xJf ble-0.3.2.tar.xz -source ble-0.3.2/ble.sh +wget https://github.com/akinomyoga/ble.sh/releases/download/v0.3.3/ble-0.3.3.tar.xz +tar xJf ble-0.3.3.tar.xz +source ble-0.3.3/ble.sh ``` With `curl`: ```bash -curl -LO https://github.com/akinomyoga/ble.sh/releases/download/v0.3.2/ble-0.3.2.tar.xz -tar xJf ble-0.3.2.tar.xz -source ble-0.3.2/ble.sh +curl -LO https://github.com/akinomyoga/ble.sh/releases/download/v0.3.3/ble-0.3.3.tar.xz +tar xJf ble-0.3.3.tar.xz +source ble-0.3.3/ble.sh ``` If you want to place `ble.sh` in a specific directory, just copy the directory: ```bash -cp -r ble-0.3.2 /path/to/blesh +cp -r ble-0.3.3 /path/to/blesh ``` ## 1.3 Set up `.bashrc` -If you want to load `ble.sh` by default in interactive sessions of `bash`, add the following codes to your `.bashrc` file: +If you want to load `ble.sh` by default in interactive sessions of `bash`, usually one can just source `ble.sh` in `~/.bashrc`, +but more reliable way is to add the following codes to your `.bashrc` file: ```bash # bashrc diff --git a/generate-release-note.sh b/generate-release-note.sh index 4f44155d..1cb06e20 100755 --- a/generate-release-note.sh +++ b/generate-release-note.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -fname_changelog=changelog.txt +fname_changelog=memo/ChangeLog.md function read-arguments { while (($#)); do @@ -33,7 +33,10 @@ function process { local c=${commit_pair#*:} local result= - [[ $b ]] && result=$(sed -n "s/$b/$a (master: $b)/p" "$fname_changelog") + [[ $b ]] && result=$(awk ' + sub(/^##+ +/, "") { heading = "[" $1 "] "; next; } + sub(/\y'"$b"'\y/, "'"$a (master: $b)"'") {print heading $0;} + ' "$fname_changelog") if [[ $result ]]; then echo "$result" elif [[ $c ]]; then @@ -41,15 +44,15 @@ function process { else echo "■not found $a" fi - done + done | tac } function find-commit-pairs { { echo __MODE_HEAD__ - git log --format=format:'%h%s' --date-order --abbrev-commit "$1"..HEAD; echo + git log --format=format:'%h%s' --date-order --abbrev-commit "$1"; echo echo __MODE_MASTER__ - git log --format=format:'%h%s' --date-order --abbrev-commit "${2:-master}"; echo + git log --format=format:'%h%s' --date-order --abbrev-commit master; echo } | awk -F '' ' /^__MODE_HEAD__$/ { mode = "head"; @@ -78,3 +81,7 @@ function find-commit-pairs { IFS=$'\n' eval 'commit_pairs=($(find-commit-pairs "$@"))' process "${commit_pairs[@]}" + +# 使い方 +# ./generate-release-note.sh v0.3.2..v0.3.3 +# diff --git a/lib/core-complete.sh b/lib/core-complete.sh index cde6a0d4..4849c5bd 100644 --- a/lib/core-complete.sh +++ b/lib/core-complete.sh @@ -6168,9 +6168,9 @@ function ble/complete/action:cdpath/init-menu-item { function ble/complete/action:cdpath/get-desc { local sgr0=$_ble_term_sgr0 sgr1= sgr2= local g ret g1 g2 - ble/syntax/highlight/getg-from-filename "$DATA$CAND"; local g1=$g + ble/syntax/highlight/getg-from-filename "$DATA$CAND"; g1=$g [[ $g1 ]] || { ble/color/face2g filename_warning; g1=$ret; } - ((g2=g^_ble_color_gflags_Revert)) + ((g2=g1^_ble_color_gflags_Revert)) ble/color/g2sgr "$g1"; sgr1=$ret ble/color/g2sgr "$g2"; sgr2=$ret ble/string#escape-for-display "$DATA$CAND" sgr1="$sgr2":sgr0="$sgr1" diff --git a/lib/core-syntax.sh b/lib/core-syntax.sh index afba168c..1a512d3c 100644 --- a/lib/core-syntax.sh +++ b/lib/core-syntax.sh @@ -2,6 +2,16 @@ #%[release = 0] #%m main ( +function ble/syntax/util/is-directory { + local path=$1 + # Note: #D1168 Cygwin では // で始まるパスの判定は遅い + if [[ ( $OSTYPE == cygwin || $OSTYPE == msys ) && $path == //* ]]; then + [[ $path == // ]] + else + [[ -d $path ]] + fi +} + ## 関数 ble/syntax/urange#update prefix p1 p2 ## 関数 ble/syntax/wrange#update prefix p1 [p2] ## @param[in] prefix @@ -5873,7 +5883,7 @@ function ble/syntax/highlight/cmdtype1 { ((type=ATTR_ERR)) fi ;; (*) - if [[ -d "$cmd" ]] && shopt -q autocd &>/dev/null; then + if [[ -d $cmd ]] && shopt -q autocd &>/dev/null; then ((type=ATTR_CMD_DIR)) else ((type=ATTR_ERR)) @@ -6326,7 +6336,7 @@ function ble/syntax/progcolor/word:default/.highlight-pathspec { local epath=${path[ipath]} espec=${spec[ipath]} local g=d - if [[ -d $epath ]]; then + if ble/syntax/util/is-directory "$epath"; then local type ble/syntax/highlight/filetype "$epath" && ble/syntax/attr2g "$type" diff --git a/memo/ChangeLog.md b/memo/ChangeLog.md index e40ebd64..4a0fc1f2 100644 --- a/memo/ChangeLog.md +++ b/memo/ChangeLog.md @@ -1,7 +1,7 @@ # ble-0.4.0-devel2 -2020-01-12 -- (#D1215... ) c74abc5... +2020-01-12 -- 2020-12-02 (`#D1215`...`#D1426`) c74abc5... ## New features @@ -125,6 +125,7 @@ - global: work around Bash-4.4 `return` in trap handlers `#D1334` aa09d15 - util (`ble-stackdump`): fix a shift of line numbers `#D1337` a14b72f d785b64 - edit (`ble-bind -x`): check range of `READLINE_{POINT,MARK}` `#D1339` efe1e81 +- main: fix a bug that `~/.config/blesh/init.sh` is not detected (GitHub #53 by rux616) 61f9e10 - util (`ble/string#to{upper,lower}`): work around `LC_COLLATE=en_US.utf8` (test-util) `#D1341` 1f6b44e `#D1355` 4da6103 5f0d49f - util (encoding, keyseq): fix miscelleneous encoding bugs (test-util) 435bd16 - `ble/util/c2keyseq`: work around bash ambiguous keyseq `\M-\C-\\` diff --git a/memo/D1405.extract-man.sh b/memo/D1405.extract-man.sh new file mode 100755 index 00000000..b418de4b --- /dev/null +++ b/memo/D1405.extract-man.sh @@ -0,0 +1,151 @@ +#!/bin/bash + +function ble/complete/mandb/search-file/.check { + local path=$1 + if [[ $path && -s $path ]]; then + ret=$path + return 0 + else + return 1 + fi +} +function ble/complete/mandb/search-file { + local command=$1 + + # Try "man -w" first + ble/complete/mandb/search-file/.check "$(man -w "$command" 2>/dev/null)" && return + + local manpath=${MANPATH:-/usr/share/man:/usr/local/share/man:/usr/local/man} + ble/string#split manpath : "$manpath" + local path + for path in "${manpath[@]}"; do + ble/complete/mandb/search-file/.check "$path/man1/$man.1.gz" && return + ble/complete/mandb/search-file/.check "$path/man1/$man.1" && return + ble/complete/mandb/search-file/.check "$path/man1/$man.8.gz" && return + ble/complete/mandb/search-file/.check "$path/man1/$man.8" && return + done + return 1 +} + +ble/complete/mandb/search-file "${1:-grep}" || return 1 +path=$ret + +if [[ $ret == *.gz ]]; then + gzip -cd "$path" #/usr/share/man/man1/grep.1.gz +else + cat "$path" +fi | + awk ' + BEGIN { + g_key = ""; + g_desc = ""; + print ".TH __ble_ignore__ 1 __ble_ignore__ __ble_ignore__"; + print ".ll 9999" + } + function flush_topic() { + if (g_key == "") return; + print "__ble_key__"; + print ".TP"; + print g_key; + print ""; + print "__ble_desc__"; + print ""; + print g_desc; + print ""; + + g_key = ""; + g_desc = ""; + } + + /^\.TP\y/ { flush_topic(); mode = "key"; next; } + /^\.(SS|SH)\y/ { flush_topic(); next; } + + mode == "key" { + g_key = $0; + g_desc = ""; + mode = "desc"; + next; + } + mode == "desc" { + if (g_desc != "") g_desc = g_desc "\n"; + g_desc = g_desc $0; + } + + END { flush_topic(); } + ' | groff -Tutf8 -man | awk ' + function process_pair(name, desc) { + if (!(g_name ~ /^-/)) return; + + # FS (\034) は ble.sh で内部使用の為除外する。 + sep = "\x1b[1;91m:\x1b[m"; + #sep = "\034"; + if (g_name ~ /\034/) return; + gsub(/\034/, "\x1b[7m^\\\x1b[27m", desc); + + n = split(name, names, /,[[:space:]]*/); + sub(/(\. |; ).*/, ".", desc); + for (i = 1; i <= n; i++) { + name = names[i]; + insert_suffix = " "; + menu_suffix = ""; + if (match(name, /[[ =]/)) { + m = substr(name, RSTART, 1); + if (m == "=") { + insert_suffix = "="; + } else if (m == "[") { + insert_suffix = ""; + } + menu_suffix = substr(name, RSTART); + name = substr(name, 1, RSTART - 1); + } + printf("%s" sep "%s" sep "%s" sep "%s\n", name, menu_suffix, insert_suffix, desc); + } + } + + function flush_pair() { + if (g_name == "") return; + if (g_name ~ /^-/) { + process_pair(g_name, g_desc); + #print "\x1b[1;94m" g_name "\x1b[0m"; + #print g_desc; + #print ""; + } + g_name = ""; + g_desc = ""; + } + + sub(/^[[:space:]]*__ble_key__/, "", $0) { + flush_pair(); + mode = "key"; + } + sub(/^[[:space:]]*__ble_desc__/, "", $0) { + mode = "desc"; + } + + mode == "key" { + line = $0; + gsub(/\x1b\[[ -?]*[@-~]/, "", line); # CSI seq + gsub(/\x1b[ -/]*[0-~]/, "", line); # ESC seq + gsub(/\x0E/, "", line); + gsub(/\x0F/, "", line); + gsub(/^[[:space:]]*|[[:space:]]*$/, "", line); + #gsub(/[[:space:]]+/, " ", line); + if (line == "") next; + if (g_name != "") g_name = g_name " "; + g_name = g_name line; + } + + mode == "desc" { + line = $0; + gsub(/^[[:space:]]*|[[:space:]]*$/, "", line); + #gsub(/[[:space:]]+/, " ", line); + if (line == "") { + if (g_desc != "") mode = ""; + next; + } + if (g_desc != "") g_desc = g_desc " "; + g_desc = g_desc line; + } + + END { flush_pair(); } + ' | sort -k 1 diff --git a/memo/Release.md b/memo/Release.md new file mode 100644 index 00000000..bd6b56b5 --- /dev/null +++ b/memo/Release.md @@ -0,0 +1,164 @@ +# ble-0.3.3 + +## New + +- prompt: fix a bug that rprompt is not cleared when `bleopt prompt_rps1` is reset `#D1377` c736bd5 (master: 1904b1d) +- syntax: allow unquoted `[!` and `[^` in `simple-word` (reported by cmplstofB) `#D1303` 4bf8b86 (master: 1efe833) +- highlight: fix unhighlighted tilde expansions `~+` (reported by cmplstofB) `#D1424` 1f9abf6 (master: a32962e) + +## Changes + +- auto-complete: bind `insert-on-end` to `C-e` `#D1250` 1070aba (master: 90b45eb) +- util (`bleopt`): fail when a specified bleopt variable does not exist (test-util) 0a51044 (master: 5966f22) +- edit: preserve `PS1` when `internal_suppress_bash_output` is set `#D1344` 537acf2 (master: 6ede0c7) +- complete: change to generate filenames starting from `.` by default `#D1425` e26867d (master: 987436d) + +## Fix + +- [ble-0.3] reload: fix a bug that the state is broken by `ble-reload` `#D1266` f2f30d1 (master: N/A) +- decode (`ble/builtin/bind`): remove comment from bind argument `#D1267` 82f4aaa (master: 880bb2c) +- complete: clear menu on history move `#D1248` 04fddd6 (master: 06cc7de) +- syntax: fix a bug that arguments of `eval` are not highlighted `#D1254` 38a7fc7 (master: 5046d14) +- decode: use `BRE` instead of `ERE` for `POSIX sed` (reported by dylankb) `#D1283` a577ec4 (master: 2184739) +- vi (vi-command/nth-column): fix a bug in arithmetic expansion (reported by andychu) `#D1292` ea2fa8e (master: da6cc47) +- complete: fix a bug that menu-filter is only partially turned off by `complete_menu_filter` `#D1298` 7278e27 (master: b3654e2) +- syntax: fix failglob errors of heredocs of the form `<<$(echo A)` `#D1308` 5ba9400 (master: 3212fd2) +- util (`bleopt`): fix a bug that a new setting is not defined with `name:=` (test-util) `#D1312` f2dbad0 (master: c757b92) +- util (`ble/util/{save,restore}-vars`): fix a bug that `name` and `prefix` cannot be saved/restored (test-util) f91f7ed (master: 5f2480c) +- util (`ble/path#remove{,-glob}`): fix corner cases (test-util) 2ba1d42 (master: ccbc9f8) +- util (`ble/variable#get-attr`): fix an error message with special variable names such as `?` and `*` `#D1321` b58f006 (master: 557b774) +- edit: fix a bug that `set +H` is cancelled on command execution `#D1332` bc454a2 (master: 02bdf4e) +- syntax (`ble/syntax/parse/shift`): fix a bug of shift skip in nested words `#D1333` 78e2170 (master: 65fbba0) +- util (`ble-stackdump`): fix a shift of line numbers `#D1337` 1505a5b (master: a14b72f) +- edit (`ble-bind -x`): check range of `READLINE_{POINT,MARK}` `#D1339` 1bc1ff6 (master: efe1e81) +- main: fix a bug that `~/.config/blesh/init.sh` is not detected (GitHub #53 by rux616) 9f74da6 (master: 61f9e10) +- util (`ble/string#to{upper,lower}`): work around `LC_COLLATE=en_US.utf8` (test-util) `#D1341` 5d9aa64 (master: 1f6b44e) `#D1355` 4e67719 (master: 4da6103) + - fixup 5d9aa64 fef40eb (master: N/A) +- util (encoding, keyseq): fix miscelleneous encoding bugs (test-util) 6d72d2a (master: 435bd16) +- edit: work around `WINCH` not updating `COLUMNS`/`LINES` after `ble-reload` `#D1345` e2d54a2 (master: a190455) +- complete: initialize `bleopt complete_menu_style` options before `complete_load` hook (reported by rux616) `#D1352` 15ba24f (master: 8a9a386) +- main: fix problems caused by multiple `source ble.sh` in bashrc `#D1354` 983e8a9 (master: 5476933) +- syntax: allow single-character variable name in named redirections `{a}<>` `#D1360` 52de342 (master: 4760409) +- decode (`bind`): work around `shopt -s nocasematch` (reported by tigger04) `#D1372` b34ad58 (master: 855cacf) +- complete: fix a bug of duplicated completions of filenames with spaces `#D1390` 048f17e (master: 98576c7) +- complete: fix bugs that quotation disappears on ambiguous completion `#D1387` 048f17e (master: 98576c7) +- complete: fix a bug that progcomp retry by 124 caused the default completion again `#D1386` 048f17e (master: 98576c7) +- syntax (tree-enumerate): fix unmodified `wtype` of reconstructed words at the end `#D1385` 048f17e (master: 98576c7) +- complete: fix superlinear performace of ambiguous matching globpat `#D1389` bd4657a (master: 71afaba) +- prompt: fix a bug that lonig rps1 is not correctly turned off `#D1401` 9266961 (master: d84bcd8) +- prompt: fix extra spaces on line folding before double width character `#D1400` 9266961 (master: d84bcd8) +- syntax (glob bracket expression): fix a bug of unsupported POSIX brackets `#D1402` e1eca65 (master: 6fd9e22) +- syntax (`ble/syntax:bash/simple-word/evaluate-path-spec`): fix a bug of unrecognized `[!...]` and `[^...]` `#D1403` 50fcd03 (master: 0b842f5) +- highlight: fix remaininig highlighting of vanishing words `#D1421` `#D1422` 0f85719 (master: 1066653) +- complete: fix a problem that the user setting `dotglob` is changed `#D1425` e26867d (master: 987436d) +- complete: fix a problem of redundant unmatched ambiguous part with tilde expansions in the common prefix `#D1417` 20cb6af (master: 5777d7f) +- complete (`source:file`): fix a bug that tilde expansion candidates are always filtered out `#D1416` 20cb6af (master: 5777d7f) +- complete (`cd`): fix duplicate candidates by `CDPATH` (reported by Lennart00 at `oh-my-bash`) `#D1415` 20cb6af (master: 5777d7f) + +## Compatibility + +- msys2: support2 MSYS (motivated by SUCHMOKUO) `#D1264` 500e051 (master: 47e2863) + - edit: support `\$` in `PS1` for MSYS2 `#D1265` b8c2ca6 (master: f6f8956) + - edit: fixup b8c2ca6 fe78bd6 (master: N/A) + - msys2: work around MSYS2 Bash bug of missing CR `#D1270` 8c09190 (master: 71f3498) +- edit (`ble/widget/bracketed-paste`): fix error messages on `paste_end` in older version of Bash (test-util) 1631069 (master: b2c7d1c) +- decode: work around Bash-3.1 bug of `declare -f` rejecting special characters in function names (test-util) 1631069 (master: b2c7d1c) +- util (`ble/variable#get-attr`): fix a bug that attributes are not obtained in Bash <= 4.3 (test-util) 1631069 (master: b2c7d1c) +- decode: work around Bash-4.1 bug that locale not applied with `LC_CTYPE=C eval command` (test-util) 1631069 (master: b2c7d1c) +- complete: follow Bash-5.1 change of arithmetic literal `10#` `#D1322` b58f006 (master: 557b774) +- decode: work around Bash-4.1 arithmetic bug of array subscripts evaluated in discarded branches `#D1320` b58f006 (master: 557b774) +- decode: fix a bug of broken cmap cache found in ble-0.3 `#D1327` 4b15993 (master: 16b56bf) +- util (strftime): fix a bug not working with `-v var` option in Bash <= 4.1 (test-util) 360211c (master: f1a2818) +- complete: work around slow `compgen -c` in Cygwin `#D1329` 185a443 (master: 5327f5d) +- edit: work around problems with `mc` (reported by onelittlehope) `#D1392` 4d534b4 (master: e97aa07) + - highlight: fix a problem that the attribute of the last character is applied till EOL `#D1393` f47a5b8 (master: 2ddb1ba) `#D1395` 8c1e17c (master: ef09932) + +## Internal + +- global: check isolated identifiers and leak variables `#D1246` f92ba5c (master: 19cc99d) 9461953 (master: 2e74b6d) +- main: unset `BLE_VERSION`, `_ble_bash`, etc. on `ble-unload` `#D1382` 2bbd0fb (master: 6b615b6) + - complete: fix unfiltered tilde expansions `#D1414` 20cb6af (master: 5777d7f) + +------------------------------------------------------------------------------- +# ble-0.2.6 + +## New + +- syntax: allow unquoted `[!` and `[^` in `simple-word` (reported by cmplstofB) `#D1303` 5cff40f (master: 1efe833) +- highlight: fix unhighlighted tilde expansions `~+` (reported by cmplstofB) `#D1424` 3f7f044 (master: a32962e) + +## Changes + +- edit: preserve `PS1` when `internal_suppress_bash_output` is set `#D1344` 72ae9c6 (master: 6ede0c7) + +## Fix + +- decode: use `BRE` instead of `ERE` for `POSIX sed` (reported by dylankb) `#D1283` bca4598 (master: 2184739) +- vi (vi-command/nth-column): fix a bug in arithmetic expansion (reported by andychu) `#D1292` 4260bc2 (master: da6cc47) +- syntax: fix failglob errors of heredocs of the form `<<$(echo A)` `#D1308` 1f874ba (master: 3212fd2) +- util (`bleopt`): fix a bug that a new setting is not defined with `name:=` (test-util) `#D1312` a9eb0e9 (master: c757b92) +- util (`ble/util/{save,restore}-vars`): fix a bug that `name` and `prefix` cannot be saved/restored (test-util) 49841db (master: 5f2480c) +- edit: fix a bug that `set +H` is cancelled on command execution `#D1332` 2ff6d06 (master: 02bdf4e) +- syntax (`ble/syntax/parse/shift`): fix a bug of shift skip in nested words `#D1333` bc935bd (master: 65fbba0) +- util (`ble-stackdump`): fix a shift of line numbers `#D1337` b597e90 (master: a14b72f) +- edit (`ble-bind -x`): check range of `READLINE_{POINT,MARK}` `#D1339` 47a93e8 (master: efe1e81) +- util (`ble/string#to{upper,lower}`): work around `LC_COLLATE=en_US.utf8` (test-util) `#D1341` 5b32621 (master: 1f6b44e) `#D1355` b38ef10 (master: 4da6103) +- util (encoding, keyseq): fix miscelleneous encoding bugs (test-util) 03c0b44 (master: 435bd16) +- edit: work around `WINCH` not updating `COLUMNS`/`LINES` after `ble-reload` `#D1345` 50af6a5 (master: a190455) +- syntax: allow single-character variable name in named redirections `{a}<>` `#D1360` f81734f (master: 4760409) +- syntax (glob bracket expression): fix a bug of unsupported POSIX brackets `#D1402` b7ea892 (master: 6fd9e22) +- highlight: fix remaininig highlighting of vanishing words `#D1421` `#D1422` cc5e4d1 (master: 1066653) + +## Compatibility + +- msys2: support2 MSYS (motivated by SUCHMOKUO) `#D1264` 7cf81c0 (master: 47e2863) + - edit: support `\$` in `PS1` for MSYS2 `#D1265` 8f44624 (master: f6f8956) + - msys2: work around MSYS2 Bash bug of missing CR `#D1270` bbe1b61 (master: 71f3498) +- edit (`ble/widget/bracketed-paste`): fix error messages on `paste_end` in older version of Bash (test-util) a80f1d1 (master: b2c7d1c) +- decode: work around Bash-3.1 bug of `declare -f` rejecting special characters in function names (test-util) a80f1d1 (master: b2c7d1c) +- util (`ble/variable#get-attr`): fix a bug that attributes are not obtained in Bash <= 4.3 (test-util) a80f1d1 (master: b2c7d1c) +- decode: work around Bash-4.1 bug that locale not applied with `LC_CTYPE=C eval command` (test-util) a80f1d1 (master: b2c7d1c) +- decode: fix a bug of broken cmap cache found in ble-0.3 `#D1327` 366e8c1 (master: 16b56bf) +- util (strftime): fix a bug not working with `-v var` option in Bash <= 4.1 (test-util) 4f11463 (master: f1a2818) +- complete: work around slow `compgen -c` in Cygwin `#D1329` 887be6e (master: 5327f5d) +- edit: work around problems with `mc` (reported by onelittlehope) `#D1392` a2d6099 (master: e97aa07) + +## Internal + +- global: check isolated identifiers and leak variables `#D1246` 146c98b (master: 19cc99d) + +------------------------------------------------------------------------------- +# ble-0.1.14 + +## Change + +- edit: preserve `PS1` when `internal_suppress_bash_output` is set `#D1344` 549f8f5 (master: 6ede0c7) + +## Fix + +- fixup ab01ceb 8129816 (v0.2: 51bde60) +- decode: use `BRE` instead of `ERE` for `POSIX sed` (reported by dylankb) `#D1283` 1244d86 (master: 2184739) +- edit: fix a bug that `set +H` is cancelled on command execution `#D1332` ba3687a (master: 02bdf4e) +- syntax (`ble/syntax/parse/shift`): fix a bug of shift skip in nested words `#D1333` 16fb351 (master: 65fbba0) +- util (`ble-stackdump`): fix a shift of line numbers `#D1337` 5d5b86b (master: a14b72f) +- edit (`ble-bind -x`): check range of `READLINE_{POINT,MARK}` `#D1339` 6909cc0 (master: efe1e81) +- util (`ble/string#to{upper,lower}`): work around `LC_COLLATE=en_US.utf8` (test-util) `#D1341` 31476cc (master: 1f6b44e) `#D1355` 65cab5c (master: 4da6103) +- util (encoding, keyseq): fix miscelleneous encoding bugs (test-util) 11d8db7 (master: 435bd16) +- edit: work around `WINCH` not updating `COLUMNS`/`LINES` after `ble-reload` `#D1345` e15c5a6 (master: a190455) +- syntax: allow single-character variable name in named redirections `{a}<>` `#D1360` 6bbed24 (master: 4760409) +- highlight: fix remaininig highlighting of vanishing words `#D1421` `#D1422` bf8fdc8 (master: 1066653) + +## Compatibility + +- global: work around Bash 3.2 bug of array initialization with SOH/DEL `#D1238` 566f53e (master: defdbd4) `#D1241` +- msys2: support2 MSYS (motivated by SUCHMOKUO) `#D1264` 19a36ea (master: 47e2863) + - edit: support `\$` in `PS1` for MSYS2 `#D1265` 8658738 (master: f6f8956) + - msys2: work around MSYS2 Bash bug of missing CR `#D1270` b72c063 (master: 71f3498) +- decode: fix a bug of broken cmap cache found in ble-0.3 `#D1327` fc6ded3 (master: 16b56bf) +- util (strftime): fix a bug not working with `-v var` option in Bash <= 4.1 (test-util) cb2389c (master: f1a2818) +- complete: work around slow `compgen -c` in Cygwin `#D1329` d6d49cc (master: 5327f5d) +- edit: work around problems with `mc` (reported by onelittlehope) `#D1392` 15111cf (master: e97aa07) + +## Internal + +- global: check isolated identifiers and leak variables `#D1246` 03b3204 (master: 19cc99d) 2e74b6d diff --git a/note.txt b/note.txt index da1f5ab9..0b9ac447 100644 --- a/note.txt +++ b/note.txt @@ -1197,6 +1197,11 @@ bash_tips ToDo ------------------------------------------------------------------------------- +2020-11-30 + + * color: face editor の TUI の様な物を作っても良いのかもしれない。 + というより fish の Web interface の様な物を TUI で提供しても良いのでは。 + 2020-11-20 * bash: declare -c や ${var~} 等は 5.2 で削除するとしているが本当だろうか @@ -1222,6 +1227,11 @@ bash_tips 或いは ble.sh に特化した設定も builtin complete 経由で呼び出す様にする? しかしそうすると ble.sh から ble-detach した時に動作しなくなってしまう。 + attach/detach の際に設定を保存・復元するという方向性も考えられる。 + + complete を上書きして両方の設定を行える様にするという手もある。この場合には + attach/detach する時に既に設定した内容を読み取る等の工夫が必要になる? + 2020-11-11 * syntax: $HOME 等の変数展開があるパスに対して simple-word/eval が重い問題 @@ -1275,6 +1285,15 @@ bash_tips ずしも空白で単語が区切られる訳ではない様なので、これに関しては文法解釈のレベ ルで修正が必要になる。 + 今試すと ; も途中に現れると区切りとして取り扱われてエラーになる。 + + * |&;<>() は特別に取り扱う必要があるという事。単体の < と > に関しても正し + い演算子の文脈に現れれば大丈夫だが、二項演算子の現れない場所で使うと構文 + エラーになる。この様な構文エラーまでチェックする必要があるだろうか。或い + は演算子の結合まではチェックしない事にするか。 + + * 括弧の途中で ]] が現れた場合にもエラーになる。 + 2020-11-06 * complete/mandb: progcomp で生成したオプションに関してもできれば desc を表示する様にしたい。 @@ -1302,14 +1321,14 @@ bash_tips 2020-11-02 - * source:file において substr を実装する。 + * done: source:file において substr を実装する。 - * filter を自前で実行する場合には cand/yield 内部での filter は不要。 + * done: filter を自前で実行する場合には cand/yield 内部での filter は不要。 これは flag_source_filter=1 を設定して実行する事にした。 - * done: timjrd を README/acknowledgement に追加する。 + * patch: timjrd を README/acknowledgement に追加する。 - * complete_limit_reached にリークが存在している。 + * patch: complete_limit_reached にリークが存在している。 ちゃんと source:* や candidates/generate などのコメントに使う変数を記述して、 それから auto-complete の中で candidates/generate を呼び出す前に local で宣言する。