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 で宣言する。