sistema_progs

Programas para customizar o meu entorno de traballo nos meus equipos persoais
Log | Files | Refs

ChangeLog.md (208856B)


      1 <!---------------------------------------------------------------------------->
      2 # ble-0.4.0-devel4
      3 
      4 2023-04-03... (`#D2030`...) 1a5c451c...
      5 
      6 ## New features
      7 
      8 - bgproc: support opts `kill9-timeout=TIMEOUT` `#D2034` 3ab41652
      9 - progcomp(cd): change display name and support mandb desc (requested by EmilySeville7cfg) `#D2039` 74402098
     10 - cmdspec: add completion options for builtins (motivated by EmilySeville7cfg) `#D2040` 9bd24691
     11 - syntax: support bash-5.3 function subst `${ list; }` `#2045` 0906fd95 71272a4b
     12 - complete: support `bleopt complete_requote_threshold` (requested by rauldipeas) `#2048` bb7e118e
     13 - menu (`ble/widget/menu/append-arg`): add option `bell` (motivated by bkerin) `#D2066` 3f31be18 bbf3fed3
     14 - make: support `make uninstall` `#D2068` a39a4a89
     15 
     16 ## Changes
     17 
     18 - edit: clear character highlighting for overwriting mode (requested by mozirilla213) `#D2052` 1afc616b
     19 - history (`ble/builtin/history -w`): write file even without any new entries (requested by Jai-JAP) `#D2053` c78e5c9f
     20 - auto-complete: overwrite subsequent characters with self-insert in overwrite mode `#D2059` 7044b2db
     21 - complete: move face definitions `menu_filter_*` to `core-complete-def.sh` `#D2060` af022266
     22 - make: add `INSDIR_LICENSE` for install location of licenses (reported by willemw) `#D2064` d39998f0 acf3b091
     23 - prompt: show prompt ruler after markers (motivated by U-Labs) `#D2067` e4a90378
     24 
     25 ## Fixes
     26 
     27 - util (`conditional-sync`): fix bugs when `pid=PID` is specified (contributed by bkerin) `#D2031` 09f5cec2 `#D2034` 09f5cec2
     28 - bgproc: return status of bgproc process `#D2036` 887d92dd
     29 - mandb: replace TAB with 4 spaces before removing control characters (reported by EmilySeville7cfg) `#D2038` 313cfb25
     30 - menu(desc): fix a bug that prefix is not shown with menu-filter `#D2039` e92b78d6
     31 - progcomp: make option unique after applying mandb description `#D2042` 308ceeed
     32 - util (`ble/util/idle`): fix an infinite loop `#D2043` 5f4c0afd
     33 - main: fix `--inputrc=TYPE` not applied on startup `#D2044` 1b15b851 0adce7c9
     34 - stty: suggest `stty sane` after exiting from bash >= 5.2 to non-ble session `#D2046` b57ab2d6
     35 - util (`ble/builtin/readonly`): adjust bash options (reported by dongxi8) `#D2050` 1f3cbc01
     36 - history (`ble/builtin/history`): fix error message on the empty `HISTFILE` `#D2061` a2e2c4b6
     37 - complete: exit auto-complete mode on complete self-insert `#D2075` 2783d3d0
     38 
     39 ## Compatibility
     40 
     41 - main: check `nawk` version explicitly `#D2037` 0ff7bca1
     42 - mandb: inject in bash-completion-2.12 interfaces `#D2041` dabc8553
     43 - complete: determine comp prefix from `COMPS` when `ble/syntax-raw` is specified (reported by teutat3s) `#D2049` f16c0d80
     44 - syntax: allow double-quotes in `$(())` in bash-4.4 (requested by mozirilla213) `#D2051` 611c1d93
     45 - syntax: support version-dependent arithmetic backslash `#D2051` 611c1d93
     46 - util: work around mawk 1.3.3-20090705 regex (reported by dongxi8, Frezrik) `#D2055` 4089c4e1
     47 - complete: update a workaround for cobra-1.5.0 (reported by 3ximus) `#D2057` a24435d3
     48 - make: work around ecryptfs bug (reported by juanejot) `#D2058` 969a763e dc0cdb30
     49 - edit: update mc-4.8.29 integration (reported by mooreye) `#D2062` 2c4194a2 68c5c5c4
     50 - make: work around `make-3.81` bug of pattern rules `#D2065` f7ec170b
     51 - decode: work around `convert-meta on` in bash >= 5.2 with broken locale (reported by 3ximus) `#D2069` 226f9718
     52 - canvas: adjust GraphemeClusterBreak of hankaku-kana voiced marks `#D2077` 31d168cc
     53 - canvas: update tables and grapheme clusters for Unicode 15.1.0 `#D2078` xxxxxxxx xxxxxxxx
     54 
     55 ## Contrib
     56 
     57 - fix(histdb): show error message only when bgproc crashed `#D2036` 887d92dd
     58 - contrib/fzf-git: update to be consistent with the upstream (motivated by arnoldmashava) `#D2054` c78e5c9f
     59 - contrib/layer/pattern: add `{pattern}` layer `#D2074` 449d92ca
     60 
     61 ## Documentation
     62 
     63 - docs(CONTRIBUTING): add styleguide (motivated by bkerin) `#D2056` 44cf6756
     64 - docs(README): fix dead links to blerc.template (fixed by weskeiser) e0f3ac28
     65 
     66 ## Test
     67 
     68 - test(bash): fix condition for bash bug of history expansion `#D2071` aacf1462
     69 - test(main): fix delimiter of `MSYS` in adding `winsymlinks` `#D2071` aacf1462
     70 
     71 ## Internal changes
     72 
     73 - refactor: move files `{keymap/ => lib/keymap.}*` f4c973b8
     74 - global: fix coding style `#D2072` bdcecbbf
     75 - memo: add recent configs and create directories `#D2073` 99cb5e81
     76 - highlight: generalize `region` layer `#D2074` 449d92ca
     77 
     78 <!---------------------------------------------------------------------------->
     79 # ble-0.4.0-devel3
     80 
     81 2020-12-02...2023-04-03 (`#D1427`...`#D2030`) 276baf2...1a5c451c
     82 
     83 ## New features
     84 
     85 - decode (`ble-decode-kbd`): support various specifications of key sequences `#D1439` 0f01cab
     86 - edit: support new options `bleopt edit_line_type={logical,graphical}` (motivated by 3ximus) `#D1442` 40ae242
     87 - complete: support new options `bleopt complete_limit{,_auto}` (contributed by timjrd) `#D1445` b13f114 5504bbc
     88   - complete: update the default value of `bleopt complete_limit{,auto}` `#D1500` aae553c
     89   - complete: inject user interruption and complete limits into `bash-completion` through `read` (motivated by timjrd) `#D1504` 856cec2 `#D1507` 4fc51ae
     90 - edit (kill/copy): combine multiple kills and copies (suggested by 3ximus) `#D1443` 66564e1
     91   - edit (`{kill,copy}-region-or`): fix unconditionally combined kills/copies (reported by 3ximus) `#D1447` 1631751
     92 - canvas: update emoji database and support `bleopt emoji_version` (motivated by endorfina) `#D1454` d1f8c27
     93   - emoji: unify emoji tables of different versions `#D1671` af82662
     94 - canvas, edit: support `bleopt info_display` (suggested by 0neGuyDev) `#D1458` 69228fa
     95   - canvas (panel): always call `panel::render` to update height `#D1472` 51d2c05
     96   - util (visible-bell): work around coordinate mismatches in subshells `#D1495` 01cfb10
     97   - canvas: work around kitty's quirk not recognizing <kbd>DECSTBM</kbd> (<kbd>CSI ; r</kbd>) `#D1503` eca2976
     98 - prompt: support `bleopt prompt_status_{line,align}` and `face prompt_status_line` `#D1462` cca1cbc
     99   - prompt: fix missing height allocation for status line `#D1487` b424fa5
    100   - prompt: support `bleopt prompt_status_align=justify` `#D1494` c30a0db
    101 - syntax: properly support case patterns `#D1474` `#D1475` `#D1476` 64b55b7
    102 - keymap/vi: add `ble/keymap:vi/script/get-mode` for user-defined mode strings `#D1488` f25a6e8 462918d
    103 - prompt: support multiline `prompt_rps1` `#D1502` 4fa139a
    104   - canvas: fix wrong coordinate calculation on linefolding (reported by telometto) `#D1602` 9badb5f
    105   - prompt: fix coordinates after `prompt_rps1` `#D1972` e128801
    106   - prompt: clear remaining SGR after `prompt_rps1` (reported by linwaytin) `#D2003` ea99d944
    107 - syntax: support tilde expansions in parameter expansions `#D1513` 0506df2
    108 - decode: support `ble-bind -m KEYMAP --cursor DECSCUSR` (motivated by jmederosalvarado) `#D1514` `#D1515` `#D1516` 79d671d
    109   - decode: reflect changes after `ble-bind --cursor` `#D1873` 39efcf9
    110 - edit: support `nsearch` options (motivated by Alyetama, rashil2000, carv-silva) `#D1517` 9125795
    111   - edit: support `nsearch` opts `empty=emulate-readline` (motivated by jainpratik163) `#D1661` d68ba61
    112   - edit: support bash-5.2 binding of `prior/next` to `history-search-{for,back}ward` `#D1661` d26a6e1
    113 - syntax: support the deprecated redirection `>& file` `#D1539` b9b0de4
    114 - complete: complete file descriptors and heredoc words after redirections `#D1539` b9b0de4
    115 - main: support `blehook ATTACH DETACH`, `BLE_ONLOAD`, `BLE_ATTACHED` `#D1543` 750ca38
    116 - main: support `ble` `#D1544` 750ca38
    117 - main (`ble-update`): support package updates and `sudo` updates (motivated by huresche, oc1024) `#D1548` 0bc2660
    118   - main (`ble-update`): fix help message (contributed by NoahGorny) 50288bf
    119 - syntax: support undocumented `${a~}` and `${a~~}` `#D1561` 4df29a6
    120 - lib: support `lib/vim-airline` (motivated by huresche) `#D1565` da1d0ff
    121   - util (`ble/gdict`): refactor `#D1569` 7732eed
    122   - vim-airline: support `bleopt vim_airline_theme` `#D1589` 73b037f
    123   - prompt: track dependencies and detect changes `#D1590` `#D1591` cf8d949
    124   - prompt: preserve `LINES` and `COLUMNS` for custom sequences `#D1592` 040016d
    125   - color: fix the face initialiation order for uses in prompts (motivated by jmederosalvarado) `#D1593` 321371f
    126   - prompt (`contrib/prompt-git`): support dirty checking `#D1601` b2713d9
    127   - prompt (`contrib/prompt-git`): do not use `ble/util/idle` in Bash 3 `#D1606` 959cf27
    128   - util (`bleopt`): add new option `-I` to reinitialize user settings on reload `#D1607` 959cf27
    129   - vi (vi_cmap): fix wrong prompt calculations by the outdated initial values `#D1653` 2710b23
    130   - vim-airline: measure separator widths and fix layout of status line `#D1999` 1ce0d1ad 478c9a10
    131 - util, color: refactor configuration interfaces (`bleopt`, `blehook`, `ble-face`) `#D1568` c94d292
    132   - color: support new face setting function `ble-face`
    133   - util (`bleopt`): support option `-r` and `-u` and wildcards in option names
    134   - util (`blehook`): hide internal hooks by default and support option `-a`
    135   - util, color: fix argument analysis of `bleopt`, `blehook`, and `ble-face` (fixup c94d292) `#D1571` bb53271
    136   - util (`blehook`): show explicitly specified internal hooks `#D1594` f4312df
    137   - util (`bleopt`): do no select obsoleted options by wildcards `#D1595` f4312df
    138   - util (`bleopt`): fix error messages for unknown options `#D1610` 66df3e2
    139   - util (`bleopt`, `bind`): fix error message and exit status, respectively `#D1640` b663cee
    140   - util (`blehook`): support wildcards `#D1861` 480b7b3
    141 - progcomp: support quoted commands and better `progcomp_alias` `#D1581` `#D1583` dbe87c3
    142   - progcomp: fix a bug that command names may stray into completer function names `#D1611` 1f2d45f
    143 - syntax: highlight quotes of the `\?` form `#D1584` 5076a03
    144   - syntax: recognize escape \" in double-quoted strings `#D1641` 4b71449
    145 - prompt: support a new backslash sequence `\g{...}` `#D1609` be31391
    146   - prompt: accept more general `[TYPE:]SPEC` in `\g{...}` like `ble-face` `#D1963` 81b3b0e
    147   - prompt: fix non-working 24-bit color in `\g{...}` `#D1977` 881ec25
    148 - complete: add a new option `bleopt complete_limit_auto_menu` `#D1618` 1829d80
    149 - canvas: support grapheme clusters (motivated by huresche) `#D1619` c0d997b
    150   - canvas (`ble/util/c2w`): use `EastAsianWidth` and `GeneralCategory` to mimic `wcwidth` `#D1645` 9a132b7
    151   - canvas (c2w:auto): work around combining chars applied to the previous line `#D1649` 1cbbecb
    152   - canvas (c2w:auto): avoid duplicate requests `#D1649` 1cbbecb a3047f56
    153   - canvas (c2w:auto): send <kbd>DSR(6)</kbd> in the internal state `#D1664` a3047f5
    154   - canvas (c2w): support `bleopt char_width_mode=musl` `#D1668` 05b258f `#D1672` af82662
    155   - canvas (c2w:auto): detect `emacs` and `musl` `#D1668` 05b258f
    156 - rlfunc: support vi word operations in `emacs` keymap (requested by SolarAquarion) `#D1624` 21d636a
    157 - edit: support `TMOUT` for the session timeout `#D1631` 0e16dbd
    158 - edit: support bash-5.2 `READLINE_ARGUMENT` `#D1638` d347fb3
    159 - complete: support `complete [-DI]` in old versions of Bash through `_DefaultCmD_` and `_InitialWorD_` `#D1639` 925b2cd
    160 - rlfunc: support nsearch widgets in `vi_nmap` keymap (requested by cornfeedhobo) `#D1651` 9a7c8b1
    161 - prompt: support `bleopt prompt_ruler` (motivated by Barbarossa93) `#D1666` 05cf638
    162   - prompt: fix hanging by a zero-width `prompt_ruler` `#D1673` 9033f29
    163 - edit: support `bleopt canvas_winch_action` (requested by Johann-Goncalves-Pereira, guptapriyanshu7) `#D1679` 2243e91
    164   - blerc: fix the name of the option `bleopt canvas_winch_action` (reported by Knusper) b1be640
    165   - edit: go back to the previous lines with `redraw-here` more aggressively `#D1966` a125187
    166 - menu (menu-style:desc): improve descriptions (motivated by Shahabaz-Bagwan) `#D1685` 4de1b45
    167 - menu (menu-style:desc): support multicolumns (motivated by Shahabaz-Bagwan) `#D1686` 231dc39
    168   - menu (menu-style:desc): fix not working `bleopt menu_desc_multicolumn_width=` `#D1727` 2140d1e
    169 - term: let <kbd>DECSCUSR</kbd> pass through terminal multiplexers (motivated by cmplstofB) `#D1697` a3349e4
    170   - util: refactor `_ble_term_TERM` `#D1746` 63fba6b
    171 - complete: requote for more compact representations on full completions `#D1700` a1859b6
    172   - complete (requote): requote from optarg/rhs starting point `#D1786` 93c2786
    173 - complete: improve support for `declare` and `[[ ... ]]` `#D1701` da38404
    174   - syntax: fix completion and highlighting of `declare` with assignment arguments `#D1704` `#D1705` e12bae4
    175   - cmdspec: refactor `{mandb => cmdspec}_opts` `#D1706` `#D1707` 0786e92
    176 - complete (menu-style:align): refactor `complete_menu_align => menu_align_{min,max}` (motivated by banoris) `#D1717` 22a2449
    177 - prompt: support `bleopt prompt_command_changes_layout` `#D1750` e199bee
    178 - exec: measure execution times `#D1756` 2b28bec
    179   - edit: work around a bash-4.4..5.1 bug of `exit` outputting time to stderr of exit context `#D1765` 3de751e e61dbaa
    180   - edit (`exec_elapsed_mark`): show hours and days `#D1793` 699dabb
    181 - util: preserve original traps and restore them on unload `#D1775` `#D1776` `#D1777` 398e404
    182   - util (trap): fix a bug of restoring original traps `#D1850` 8d918b6
    183 - progcomp: support `compopt -o ble/no-default` to suppress default completions `#D1789` 7b70a0e
    184 - sabbrev: support options `-r` and `--reset` to remove entries `#D1790` 29b8be3
    185 - util (blehook): support `hook!=handler` and `hook+-=handler` `#D1791` 0b8c097
    186 - prompt: escape control characters in `\w` and `\W` `#D1798` 8940434 a9551e5
    187   - prompt: fix wrongly escaped UTF-8 chars in `\w` and `\W` `#D1806` d340233
    188   - prompt: fix a bug that `\u` is expanded to the shell name `#D1975` fe339c3
    189 - emacs: support `bleopt keymap_emacs_mode_string_multiline` (motivated by ArianaAsl) `#D1818` 8e9d273
    190 - util: synchronize rlvars with `bleopt complete_{menu_color{,_match},skip_matched} term_bracketed_paste_mode` (motivated by ArianaAsl) `#D1819` 6d20f51
    191   - util: suppress false warnings of `bind` inside non-interactive shells (reported by wukuan405) `#D1823` 1e19a67
    192 - history: support `bleopt history_erasedups_limit` (motivated by SuperSandro2000) `#D1822` e4afb5a 3110967
    193 - prompt: support `bleopt prompt_{emacs,vi}_mode_indicator` (motivated by ferdinandyb) `#D1843` 2b905f8
    194 - util (`ble-import`): support option `-q` `#D1859` 1ca87a9
    195 - history: support extension `HISTCONTROL=strip` (motivated by aiotter) `#D1874` 021e033
    196 - benchmark (ble-measure): support an option `-V` `#D1881` 571ecec
    197 - color: allow setting color filter by `_ble_color_color2sgr_filter` `#D1902` 88e74cc
    198 - auto-complete: add `bleopt complete_auto_complete_opts` (motivated by DUOLabs333) `#D1901` `#D1911` 1478a04 6a21ebb
    199 - menu-complete: add `bleopt complete_menu_complete_opts` (requested by DUOLabs333) `#D1911` 6a21ebb
    200 - edit (`magic-space`): support `bleopt edit_magic_expand=...:alias` (requested by telometto) `#D1912` 63da2ac
    201   - auto-complete: cancel auto-complete for `magic-space` `#D1913` 01b4f67
    202 - complete: support ambiguous completion for command paths `#D1922` 8a716ad
    203 - complete: preserve original path segments as long as possible `#D1923` `#D1924` e3cdb9d
    204 - main: support `BLE_SESSION_ID` and `BLE_COMMAND_ID` `#D1925` 44d9e10 `#D1947` 46ac426 `#D1954` 651c70c
    205 - main: support an option `--inputrc={diff,all,user,none}` `#D1926` 92f2006
    206 - util (`ble/builtin/trap`): support Bash 5.2 `trap -P` `#D1937` 826a275
    207 - syntax: highlight `\?` in here documents `#D1959` e619e73
    208 - syntax: recognize history expansion in here documents, `"...!"` (bash <= 4.2), and `$!` (bash <= 4.1) `#D1959` e619e73
    209 - syntax: support context after `((...))` and `[[ ... ]]` in bash-5.2 `#D1962` 67cb967
    210 - edit: support the readline variable `search-ignore-case` of bash-5.3 `#D1976` e3ad110
    211 - menu-complete: add `insert_unique` option to the `complete` widget `#D1995` 36efbb7
    212 - syntax: check alias expansions of `coproc` variable names `#D1996` 92ce433
    213 - syntax: support new parameter transformation `"${arr@k}"` `#D1998` 1dd7e385
    214 - edit: support a user command `ble append-line` (requested by mozirilla213) `#D2001` 2a524f34
    215 - decode: accept isolated <kbd>ESC \<char\></kbd> (requested by mozirilla213) `#D2004` d7210494
    216 - sabbrev: add widget `magic-slash` to approximate Zsh named directories (motivated by mozirilla213) `#D2008` e6b9581c
    217 - sabbrev: support inline and linewise sabbre with `ble-sabbrev -il` `#D2012` 56208534
    218 - complete: add `bleopt complete_source_sabbrev_{opts,ignore}` (motivated by mozirilla213) `#D2013` f95eb0cc `#D2016` 45c76746
    219 - util.bgproc: separate `ble/util/bgproc` from `histdb` (motivated by bkerin) `#D2017` 7803305f
    220   - util.bgproc: fix use of `ble/util/idle` in bash-3 `#D2026` 79a6bd41
    221   - util.bgproc: increase frequency of bgproc termination check (motivated by bkerin) `#D2027` 8d623c19
    222   - util.bgproc: fix an `fd#alloc` failure in bash-4.2 `#D2029` 7c4ff7bc
    223 - menu-complete: support selection by index (requested by bkerin) `#D2023` b91b8bc8
    224 
    225 ## Changes
    226 
    227 - syntax: exclude <code>\\ + LF</code> at the word beginning from words (motivated by cmplstofB) `#D1431` 67e62d6
    228 - complete: do not quote `:` and `=` in non-filename completions generated by progcomp (reported by 3ximus) `#D1434` d82535e
    229 - edit: preserve the state of `READLINE_{LINE,POINT,MARK}` `#D1437` 8379d4a
    230 - edit: change default behavior of <kbd>C-w</kbd> and <kbd>M-w</kbd> to operate on backward words `#D1448` 47a3301
    231 - prompt: rename `bleopt prompt_{status_line => term_status}` `#D1462` cca1cbc
    232 - edit (`ble/builtin/read`): cancel by <kbd>C-d</kbd> on an empty line `#D1473` ecb8888
    233 - syntax: change syntax context after `time ;` and `! ;` for Bash 4.4 `#D1477` 4628370
    234 - decode (rlfunc): update mapping `vi-replace` in `imap` and `vi-editing-mode` in `nmap` (reported by onelittlehope) `#D1484` f2ca811
    235 - prompt: invalidate prompt and textarea on prompt setting changes `#D1492` 1f55913
    236 - README: update informations on stable versions `#D1509` c8e658e
    237 - README: update the description of how to uninstall `#D1510` c8e658e
    238 - util (`bleopt`): validate initial user settings `#D1511` 82c5ece
    239   - util (`bleopt`): fix a bug that old values are double-expanded on init (fixup 82c5ece) `#D1521` f795c07
    240   - util (`bleopt`): do not validate obsoleted initial settings `#D1527` 032f6b2
    241 - main: preserve user-space overridden builtins `#D1519` 0860be0
    242   - util (`ble/util/type`): fix a bug that aliases are not properly highlighted (reported by 3ximus) `#D1526` 45b30a7
    243   - main: preserve user's `expand_aliases` and allow aliases in internal space (fixup 0860be0) `#D1574` afc4112
    244   - main: main: fix expand_aliases unset on ble-reload (fixup afc4112) `#D1577` 3417388
    245 - main: accept non-regular files as `blerc` and add option `--norc` `#D1530` 7244e2f
    246 - prompt: let `stderr` pass through to tty in evaluating `PS0` (reported by tycho-kirchner) `#D1541` 24a88ce
    247 - prompt: adjust behavior of `LINENO` and prompt sequence `\#` (reported by tycho-kirchner) `#D1542` 8b0257e
    248   - prompt: update `PS0` between multiple commands (motivated by tycho-kirchner) `#D1560` 8f29203
    249 - edit (`widget:display-shell-version`): include `ble.sh` version `#D1545` 750ca38
    250   - edit (`display-shell-version`): detect configurations and print details `#D1781` 5015cb56
    251   - edit (`display-shell-version`): show information of the OS distribution and properly handle saved locales `#D1854` 066ec63 bdb7dd6
    252   - edit (`display-shell-version`): show `gawk`, `make`, and `git` versions of the build time `#D1892` e618133
    253   - edit (`display-shell-version`): support running as a user command (reported by DhruvaG2000) `#D1893` e618133
    254   - edit (`display-shell-version`): show warnings for fzf-integration `#D1907` 3bc3bea
    255   - edit (`display-shell-version`): show the `zoxide` version `#D1907` 3bc3bea
    256 - complete (`ble-sabbrev`): support colored output `#D1546` 750ca38
    257 - decode (`ble-bind`): support colored output `#D1547` 750ca38
    258   - decode (`ble-bind`): output bindings of the specified keymaps with `ble-bind -m KEYMAP` (fixup 750ca38) `#D1559` 6e0245a
    259 - keymap/vi: update mode names on change of `bleopt keymap_vi_mode_name_*` (motivated by huresche) `#D1565` 11ac106
    260 - main: show notifications against debug versions of Bash `#D1612` 8f974aa
    261 - term: terminal identification
    262   - term (`_ble_term_TERM`): update `vte` identification `#D1620` 00e74d8
    263   - term (`_ble_term_TERM`): detect wezterm-20220408 `#D1909` 486564a
    264   - term (`_ble_term_TERM`): detect konsole `#D1988` 600e845 ed53858
    265 - edit: suppress only `stderr` with `internal_suppress_bash_output` (motivated by rashil2000) `#D1646` a30887f
    266 - prompt: do not evaluate `PROMPT_COMMAND` for subprompts `#D1654` 08e903e
    267 - Makefile: work around the case the repository is cloned without `--recursive` `#D1655` 22ace5f
    268 - repo: add subdirectories `make` and `docs` `#D1657` 75bd04c
    269 - util: time out <kbd>CPR</kbd> requests `#D1669` 1481d48
    270   - util (CPR): fix the problem of always timing out (fixup 1481d48) `#D1792` 9b331c4
    271 - main: suppress non-interactive warnings from manually sourced startup files (reported by andreclerigo) `#D1676` 0525528 88e2df5
    272 - mandb: integrate `mandb` with `bash-completion` (motivated by Shahabaz-Bagwan, bbyfacekiller and EmilySeville7cfg) `#D1688` c1cd666
    273 - syntax: do not start argument completions immediately after previous word (reported by EmilySeville7cfg) `#D1690` 371a5a4
    274   - syntax: revert 371a5a4 and generate empty completion source on syntax error `#D1609` e09fcab
    275 - syntax: strictly check variable names of `for`-statements `#D1692` d056547
    276 - widget `self-insert`: untranslate control chars and insert the last character `#D1696` 5ff3021
    277 - complete (`source:command`): exclude inactive aliases `#D1715` d6242a7
    278 - complete (`source:command`): not quote aliases and keywords `#D1715` d6242a7
    279 - highlight (`wtype=CTX_CMDI`): check alias names before shell expansions `#D1715` d6242a7
    280   - util (`ble/is-alias`): fix a bug of unredirected error messages for bash-3.2 (fixup d6242a7) `#D1730` 31372cb
    281 - edit (`history_share`): update history on `discard-line` (reported by SuperSandro2000) `#D1742` 8dbefe0
    282 - canvas: do not insert explicit newlines on line folding if possible (reported by banoris) `#D1745` 02b9da6 dc3827b
    283   - edit: fix layout with `prompt_rps1` caused by missing `opts=relative` for `ble/textmap#update` `#D1769` f6af802
    284 - edit (`ble-bind -x`): preserve multiline prompts on execution of `bind -x` commands (requested by SuperSandro2000) `#D1755` 7d05a28
    285 - util (`ble/util/buffer`): hide cursor in rendering `#D1758` e332dc5
    286 - complete (`action:file`): always suffix `/` to complete symlinked directory names (reported by SuperSandro2000) `#D1759` 397ac1f
    287 - edit (command-help): show source files for functions `#D1779` 7683ab9
    288 - edit (`ble/builtin/exit`): defer exit in trap handlers (motivated by SuperSandro2000) `#D1782` f62fc04 6fdabf3
    289   - util (`blehook`): fix a bug that the the hook arguments are lost (reported by SuperSandro2000) `#D1804` 479795d
    290   - edit: fix a bug of `ble/builtin/exit` inside subshells in the `EXIT` trap `#D1973` 0451521
    291 - complete (`source:command/get-desc`): show function location and body `#D1788` 496e798
    292 - edit (`ble-detach`): prepend a space to `stty sane` for `HISTIGNORE=' *'` `#D1796` 26b532e
    293 - decode (`bind`): do not treat non-beginning `#` as comments `#D1820` 65c4138
    294 - history: disable the history file when `HISTFILE` is empty `#D1836` 9549e83
    295 - complete: generate options by empty-word copmletion after filenames (reported by geekscrapy) `#D1846` 6954b13
    296   - complete: do not show option descriptions for the empty-word completion (requested by geekscrapy) `#D1846` 1c7f7a1
    297 - syntax (`extract-command`): extract unexpected command names as commands `#D1848` 5b63459
    298 - main (`ble-reload`): preserve the original initialization options `#D1852` d8c92cc
    299  - main (`ble-reload`): fix a bug that the default rcfile is not loaded `#D1914` 85b5828
    300 - blehook: print reusable code to restore the user hooks `#D1857` b763677
    301   - blehook: separate internal and user hooks `#D1856` b763677
    302   - blehook: prefer the uniq  `!=` to the addition `+=` `#D1871` fe7abd4
    303   - blehook: print hooks with `--color=auto` by default `#D1875` 3953afe
    304 - util (`ble/builtin/trap`): refactor
    305   - trap,blehook: rename `ERR{ => EXEC}` and separate from the `ERR` trap `#D1858` 94d1371
    306   - trap: remove the support for the shell function `TRAPERR` `#D1858` 94d1371
    307   - trap: preserve `BASH_COMMAND` in trap handlers `#D1858` 94d1371
    308   - util (`ble/builtin/trap`): run EXIT trap in subshells `#D1862` 5b351e8
    309   - util (`ble/builtin/trap`): fix the RETURN trap `#D1863` 793dfad
    310   - trap,blehook: move to a new file `util.hook.sh` `#D1864` 55a182b
    311   - trap (`trap -p`): fix unprinted existing user traps `#D1864` 55a182b
    312   - trap (`ble/builtin/trap/finalize`): fix a failure of restoring the original trap `#D1864` 55a182b
    313   - trap (`trap -p`): print also custom traps `#D1864` 55a182b
    314   - trap: preserve positional parameters for user trap handlers `#D1865` 9e2963c
    315   - trap: suppress `INT` processing with user traps `#D1866` 5c28387
    316   - trap: unify handling of `DEBUG` and the other traps `#D1867` a22c25b
    317   - trap: work around possible interferences by recursive traps `#D1867` a22c25b
    318   - trap: ignore `RETURN` for `ble/builtin/trap/.handler` `#D1867` a22c25b
    319   - trap: fix a bug that `DEBUG` for internal commands clears `$?` `#D1867` a22c25b
    320   - trap: use `ble/util/assign/.mktmp` to read the `DEBUG` trap `#D1910` 1de9a1e
    321 - progcomp: reproduce arguments of completion functions passed by Bash `#D1872` 4d2dd35
    322 - prompt: preserve transient prompt with `same-dir` after `clear-screen` `#D1876` 69013d9
    323 - color: let `bleopt term_index_colors` override the default if specified `#D1878` 7d238c0
    324 - canvas: update Unicode version 15.0.0 `#D1880` 49e55f4
    325 - decode (`vi_imap-rlfunc.txt`): update the widget for `backward-kill-word` as `kill-backward-{u => c}word` `#D1896` e19b796
    326 - color: rearrange color table by `ble palette` (suggested by stackoverflow/caoanan) `#D1961` bb8541d
    327 - util (`ble/util/idle`): process events before idle sleep `#D1980` 559d64b
    328 - keymap/vi (`decompose-meta`): translate <kbd>S-a</kbd> to <kbd>A</kbd> `#D1988` 600e845
    329 - sabbrev: apply sabbrev to right-hand sides of variable assignments `#D2006` 41faa494
    330 - complete (`source:argument`): fallback to rhs completion also for `name+=rhs` `#D2006` 41faa494
    331 - auto-complete: limit the line length for auto-complete `#D2009` 5bfbd6f2
    332 - complete (`source:argument`): generate sabbrev completions after normal completions (motivated by mozirilla213) `#D2011` a6f168d0
    333 - complete (`source:option`): carve out `ble/complete/source:option/generate-for-command` (requested by mozirilla213) `#D2014` 54ace59c
    334 
    335 ## Fixes
    336 
    337 - term: fix a bug that VTE based terminals are not recognized `#D1427` 7e16d9d
    338 - complete: fix a problem that candidates are not updated after menu-filter (reported by 3ximus) `#D1428` 98fbc1c
    339 - complete/mandb-related fixes
    340   - mandb: support mandb in FreeBSD `#D1432` 6c54f79
    341   - mandb: fix BS contamination used by nroff to represent bold (reported by rlnore) `#D1429` b5c875a
    342   - mandb: fix an encoding prpblem of utf8 manuals `#D1446` 7a4a480
    343   - mandb: improve extraction and cache for each locale `#D1480` 3588158
    344   - mandb: fix an infinite loop by a leak variable (reported by rlanore, riblo) `#D1550` 0efcb65
    345   - mandb: work around old groff in macOS (reported by killermoehre) `#D1551` d4f816b
    346   - mandb: use `manpath` and `man -w`, and read `/etc/man_db.conf` and `~/.manpath` `#D1637` 2365e09
    347   - mandb: support the formats of the man pages of `awk` and `sed` (reported by bbyfacekiller) `#D1687` 6932018
    348   - mandb: generate completions of options also for the empty word `#D1689` b90ac78
    349   - mandb: support the man-page formats of `wget`, `fish`, and `ping` (reported by bbyfacekiller) `#D1687` a79280e
    350   - mandb: carry optarg for e.g. `-a, --accept=LIST` `#D1687` 23d5657
    351   - mandb: parse `--help` for specified commands `#D1693` e1ad2f1
    352   - mandb: fix small issues of man-page analysis `#D1708` caa77bc
    353   - mandb: insert a comma in brace expansions instead of a space `#D1719` 0ac7f03
    354   - mandb: support man-page format of `rsync` `#D1733` 7900144
    355   - mandb: fix a bug that the description is inserted for `--no-OPTION` `#D1761` 88614b8
    356   - mandb: fix a bug that the man page is not correctly searched (fixup 2365e09) `#D1794` 65ffe70
    357   - mandb: support the man-page formats of `man ls` in coreutils/Japanese and in macOS `#D1847` fa32829
    358   - mandb: include short name in the longname description `#D1879` 60b6989
    359 - edit: work around the wrong job information of Bash in trap handlers (reported by 3ximus) `#D1435` `#D1436` bc4735e
    360 - edit (command-help): work around the Bash bug that tempenv vanishes with `builtin eval` `#D1438` 8379d4a
    361 - global: suppress missing locale errors (reported by 3ximus) `#D1440` 4d3c595
    362 - edit (sword): fix definition of `sword` (shell words) `#D1441` f923388
    363 - edit (`kill-forward-logical-line`): fix a bug not deleting newline at the end of the line `#D1443` 09cf7f1
    364 - util (`ble/util/msleep`): fix hang in Cygwin by swithing from `/dev/udp/0.0.0.0/80` to `/dev/zero` `#D1452` d4d718a
    365   - util (`ble/util/msleep`): work around the bash-4.3 bug of `read -t` (reported by 3ximus) `#D1468` `#D1469` 4ca9b2e
    366 - syntax: fix broken AST with `[[` keyword `#D1454` 69658ef
    367 - benchmark (`ble-measure`): work around a locale-dependent decimal point of `EPOCHREALTIME` (reported by 3ximus) `#D1460` 1aa471b
    368 - global: work around bash-4.2 bug of `declare -gA` (reported by 0xC0ncord) `#D1470` 8856a04
    369   - global: fix declaration of associative arrays for `ble-reload` (reported by 0xC0ncord) `#D1471` 3cae6e4
    370   - global: use a better workaround of bash-4.2 `declare -gA` by separating assignment `#D1567` 2408a20
    371 - bind: work around broken `cmd_xmap` after switching the editing mode `#D1478` 8d354c1
    372   - decode (`encoding:C`): fix initialization for isolated ESC `#D1839` c3bba5b
    373 - edit: clear graphic rendition on newlines and external commands `#D1479` 18bb2d5
    374 - decode (rlfunc): work around incomplete bytes in keyseq (reported by onelittlehope) `#D1483` 3559658 beb0383 37363be
    375 - main: fix a bug that unset `IFS` is not correctly restored `#D1489` 808f6f7
    376   - edit: fix error messages on accessing undo records in emacs mode (reported by rux616) `#D1497`  61a57c0 e9be69e
    377 - canvas: fix a glitch that SGR at the end of command line is applied to new lines `#D1498` 4bdfdbf
    378 - syntax: fix a bug that `eval() { :; }`, `declare() { :; }` are not treated as function definition `#D1529` b429095
    379 - decode: fix a hang on attach failure by cache corruption `#D1531` 24ea379
    380 - edit, etc: add workarounds for `localvar_inherit` `#D1532` 7b63c60
    381   - edit: fix a bug that `command-help` doesn't work `#D1635` 0f6a083
    382 - progcomp: fix non-working `complete -C prog` (reported by Archehandoro) `#D1535` 026432d
    383 - bind: fix a problem that `bind '"seq":"key"'` causes a loop macro `bind -s key key` (reported by thanosz) `#D1536` ea05fc5
    384   - bind: fix errors on readline macros (reported by RakibFiha) `#D1537` c257299
    385 - main: work around sourcing `ble.sh` inside subshells `#D1554` bbc2a90
    386   - main: fix exit status for `bash ble.sh --test` (fixup bbc2a90) `#D1558` 641238a
    387   - main: fix reloading after ble-update (fixup bbc2a90) (fixed by oc1024) `#D1558` 9372670
    388 - main: work around `. ble.sh --{test,update,clear-cache}` in intereactive sessions `#D1555` bbc2a90
    389 - Makefile: create `run` directory instead of `tmp` `#D1557` 9bdb37d
    390 - main: fix the workaround for `set -e` `#D1564` ab2f70b
    391   - main: fix the workaround for `set -u` `#D1575` 76073a9
    392   - main: fix the workaround for `set -eu` and refactor `#D1743` 6a946f0
    393   - decode: fix the workaround for `set -e` with `--prompt=attach` `#D1832` 5111323
    394 - util: work around bash-3.0 bug `"${scal[@]/xxx}"` `#D1570` 24f79da
    395 - sabbrev (`ble-sabbrev`): fix delayed output before the initialization `#D1573` 5d85238
    396 - history: fix the workaround for bash-3.0 bug of reducing histories `#D1576` 15c9133
    397 - syntax: fix a bug that argument completion is attempted in nested commands (reported by huresche) `#D1579` 301d40f
    398 - edit (brackated-paste): fix incomplete `CR => LF` conversion (reported by alborotogarcia) `#D1587` 8d6da16
    399 - main (adjust-bash-options): adjust `LC_COLLATE=C` `#D1588` e87ac21
    400 - highlight (`layer:region`): fix blocked lower-layer changes without selection changes `#D1596` 5ede3c6
    401 - complete (`auto-menu`): fix sleep loops by clock/sclock difference `#D1597` 53dd018
    402 - history: fix a bug that history data is cleared on `history -r` `#D1605` 72c274e
    403 - util (`ble/string#quote-command`): remove redundant trailing spaces for single word command `#D1613` 94556b4
    404 - util: work around the Bash 3 bug of array assignments with `^A` and `^?` in Bash 3.2 `#D1614` b9f7611
    405 - benchmark (`ble-measure`): fix a bug that the result is always 0 in Bash 3 and 4 (fixup bbc2a904) `#D1615` a034c91
    406 - complete: fix a bug that the shopt settings are not restored correctly (reported by Lun4m) `#D1623` 899c114
    407 - decode, canvas, etc.: explicitly treat CSI arguments as decimal numbers (reported by GorrillaRibs) `#D1625` c6473b7 2ea48d7
    408 - history: fix the vanishing history entry used for `ble-attach` `#D1629` eb34061
    409 - global: work around readonly `TMOUT` (reported by farmerbobathan) `#D1630` 44e6ec1
    410 - complete: fix a task scheduling bug of referencing two different clocks (reported by rashil2000) `#D1636` fea5f5b
    411 - canvas: update prompt trace on `char_width_mode` change (reported by Barbarossa93) `#D1642` 68ee111
    412 - decode (`cmap/initialize`): fix unquoted special chars in the cmap cache `#D1647` 7434d2d
    413 - decode: fix a bug that the characters input while initialization are delayed `#D1670` 430f449
    414 - util (`ble/util/readfile`): fix a bug of always exiting with 1 in `bash <= 3.2` (reported by laoshaw) `#D1678` 61705bf
    415 - trace: fix wrong positioning of the ellipses on overflow `#D1684` b90ac78
    416 - complete: do not generate keywords for quoted command names `#D1691` 60d244f
    417 - menu (menu-style:align): fix the failure of delaying `ble/canvas/trace` on items (motivated by banoris) `#D1710` acc9661
    418 - complete: fix empty completions with `FIGNORE` (reported by seanfarley) `#D1711` 144ea5d
    419 - main: fix the message of owner errors of cache directories (reported by zim0369) `#D1712` b547a41
    420 - util (`ble/string#escape-for-bash-specialchars`): fix escaping of TAB `#D1713` 7db3d2b
    421 - complete: fix failglob messages while progcomp for commands containing globchars `#D1716` e26a3a8
    422   - complete: fix a bug that the default progcomp does not work properly `#D1722` 01643fa
    423 - highlight: fix a bug that arrays without the element `0` is not highlighted `#D1721` b0a0b6f
    424 - util (visible-bell): erase visible-bell before running external commands `#D1723` 0da0c1c
    425   - util(`ble/util/eval-pathname-expansion`): fix restoring shopt options in bash-4.0 `#D1825` 736f4da
    426 - util (`ble/function`): work around `shopt -u extglob` `#D1725` 952c388
    427 - syntax: fix uninitialized syntax-highlighting in bash-3.2 `#D1731` e3f5bf7
    428 - make: fix a bug that config update messages are removed on install `#D1736` 72d968f
    429 - util: fix bugs in conversions from `'` to `\''` `#D1739` 6d15782
    430 - canvas: fix unupdated prompt on async wcwidth resolution `#D1740` e14fa5d
    431 - progcomp: retry completions on `$? == 124` also for non-default completions (reported by SuperSandro2000) `#D1759` 82b9c01
    432 - app: work around data corruption by WINCH on intermediate state `#D1762` 5065fda
    433 - util (`ble/util/import`): work around filenames with bash special characters `#D1763` b27f758
    434 - edit: fix the restore failure of `PS1` and `PROMPT_COMMAND` on `ble-detach` `#D1784` b9fdaab
    435 - complete: do not attempt an independent rhs completion for arguments (reported by rsteube) `#D1787` f8bbe2c
    436 - history: fix the unsaved history in the detached state `#D1795` 344168e
    437 - edit: fix an unexpected leave from the command layout on `read` `#D1800` 4dbf16f
    438   - edit: fix the command layout remaining after job information (reported by mozirilla213) `#D1991` dcfb067
    439 - history: work around possible dirty prefix `*` in the history output `#D1808` 64a740d
    440 - decode (`ble-bind`): fix the printed definition of `-c`/`-x` bindings `#D1821` 94de078
    441 - command-help (`.read-man`): add missing `ble/util/assign/.rmtmp` `#D1840` 937a164
    442 - complete: fix wrong `COMP_POINT` with `progcomp_alias` `#D1841` 369f7c0
    443 - main (`ble-update`): fix error message with system-wide installation of `ble.sh` (fixed by tars0x9752) 1d2a9c1 a450775
    444 - main. util: fix problems of readlink etc. found by test in macOS (reported by aiotter) `#D1849` fa955c1 `#D1855` a22e145
    445 - progcomp: fix a bug that `COMP_WORDBREAKS` is ignored `#D1872` 4d2dd35
    446 - global: quote `return $?` `#D1884` 801d14a
    447 - canvas (`ble/canvas/trace`): fix text justification for empty lines (reported by rashil2000) `#D1894` cdf74c2
    448 - main: fix adjustments of bash options (reported by rashil2000) `#D1895` 138c476
    449 - complete: suppress error messages for non-bash_completion `_parse_help` (reported by nik312123) `#D1900` 267de7f
    450 - prompt: fix the marker position for the readline variable `show-mode-in-prompt` (reported by Strykar) `#D1903` 09bb4d3
    451 - highlight: fix a bug that `bleopt filename_ls_colors` is not working (reported by qoreQyaS) `#D1919` b568ade
    452 - bind: fix <kbd>M-C-@</kbd>, <kbd>C-x C-@</kbd>, and <kbd>M-C-x</kbd> (`bash-4.2 -o emacs`) `#D1920` a410b03
    453 - complete (action:file): support `ble/syntax-raw` in the filename extraction (reported by qoreQyaS) `#D1921` 32277da
    454 - decode: fix a bug that the tab completion do not work with bash-4.4 and lower `#D1928` 7da9bce
    455 - complete: fix non-working ambiguous path completion with `..` and `.` in the path `#D1930` 632e90a
    456 - main (`ble-reload`): fix failure by non-existent rcfile `#D1931` b7ae2fa
    457 - syntax (`ble/syntax/highlight/vartype`): check variable in global scope `#D1932` b7026de
    458 - menu (linewise): fix layout calculation with variable width of line prefix (reported by bkerin) `#D1979` cc852dc
    459 - edit (`ble/textarea#render`): fix interleaving outputs to `_ble_util_buffer` and `DRAW_BUFF` `#D1987` 6d61388
    460 - keymap/vi (`expand-range-for-linewise-operator`): fix the end point being not extended `#D1994` bce2033
    461 - keymap/vi (`operator:filter`): do not append newline at the end of line `#D1994` bce2033
    462 - highlight: fix shifted error marks after delayed `core-syntax` `#D2000` f4145f16
    463 - syntax: fix unrecognized variable assignment of the form `echo arr[i]+=rhs` `#D2007` 41faa494
    464 - menu (linewise): fix clipping of long line (reported by bkerin) `#D2025` 4c6a4775
    465 
    466 ## Documentation
    467 
    468 - blerc: add all the missing options `#D1667` 0228d76
    469 - blerc: add missing faces `argument_option` and `cmdinfo_cd_cdpath` (reported by Prikalel) `#D1675` 26aaf87
    470 - README: describe how to invoke multiple widgets with a keybinding (motivated by michaelmob) `#D1699` 6123551
    471 - README: add links to `bash-it` and `oh-my-bash` `#D1724` 4a2575f
    472 - README: mention the Guix package (motivated by kiasoc5) `#D1888` 0f7c04b
    473 - blerc: add frequently used keybindings (motivated by KiaraGrouwstra, micimize) `#D1896` `#D1897` e19b796
    474 - wiki/Q&A: add item for defining a widget calling multiple widgets (motivated by micimize) `#D1898` e19b796
    475 - blerc: rename from `blerc` to `blerc.template` `#D1899` e19b796
    476 - README: add a link to the explanation on the "more reliable setup" of bashrc (motivated by telometto) `#D1905` 09bb4d3
    477 - README: describe `contrib/fzf` integration (reported by SuperSandro2000, tbagrel1) `#D1907` 3bc3bea b568ade
    478 - README: add links to Manual pages for *kspec* and `modifyOtherKeys` `#D1917` fb7bd0b1 b568ade
    479 - README: explain the build process `#D1964` `#D1965` 14ca1e5
    480 
    481 ## Optimization
    482 
    483 - syntax (`layer:syntax/word`): perform pathname expansions in background subshells (motivated by 3ximus) `#D1449` 13e7bdd
    484   - syntax (`simple-word/is-simple-noglob`): suppress error messages on expansions `#D1461` a56873f
    485   - syntax (`simple-word/eval`): fix unperformed tilde expansions in the background (reported by 3ximus) `#D1463` 6ebec48
    486   - syntax (`simple-word/eval`): propagate timeouts in sync highlighting (reported by 3ximus) `#D1465` c2555e2
    487   - edit: change the priority of `render-defer` and `menu-filter` `#D1501` aae553c
    488 - complete: perform pathname expansions in subshells (motivated by 3ximus) `#D1450` d511896
    489 - complete: support `bleopt complete_timeout_compvar` to time out pathname expansions for `COMP_WORDS` / `COMP_LINE` `#D1457` cc2881a
    490 - complete (`ble/complete/source:file`): remove slow old codes (reported by timjrd) `#D1512` e5be0c1
    491 - syntax (`ble/syntax:bash/simple-word/eval`): optimize large array passing (motivated by timjrd) `#D1522` c89aa23
    492   - syntax (`ble/syntax:bash/simple-word/eval`): use `mapfile -d ''` for Bash 5.2 `#D1604` 72c274e
    493 - main: prefer `nawk` over `mawk` and `gawk` `#D1523` `#D1524` c89aa23
    494   - main (`ble/bin/.freeze-utility-path`): fix unupdated temporary implementations `#D1528` c70a3b4
    495   - util (`ble/util/assign`): work around subshell conflicts `#D1578` 6e4bb12
    496 - history: use `mapfile -d ''` to load history in Bash 5.2 `#D1603` 72c274e
    497 - prompt: use `${PS1@P}` when the prompt contains only safe prompt sequences `#D1617` 8b5da08
    498   - prompt: fix not properly set `$?` in `${PS1@P}` evaluation (reported by nihilismus) `#D1644` 521aff9
    499   - prompt: fix a bug that the special treatment of `\$` in Cygwin/MSYS is disabled `#D1741` 4782a33
    500 - decode: cache `inputrc` translations `#D1652` 994e2a5
    501 - complete: use `awk` for batch `quote-insert` (motivated by banoris) `#D1714` a0b2ad2 92d9734
    502   - complete (quote-insert.batch): fix regex escaping in bracket expr of awk (reported by telometto) `#D1729` 8039b77
    503 - prompt: reduce redundant evaluation of `PROMPT_COMMAND` on the startup `#D1778` 042376b
    504 - main: run `ble/base/unload` directly at the end of `EXIT` handler `#D1797` 115baec
    505 - util: optimize `ble/util/writearray` `#D1816` 96e9bf8
    506 - history: optimize processing of `erasedups` (motivated by SuperSandro2000) `#D1817` 944d48e
    507 - debug: add `ble/debug/profiler` (motivated by SuperSandro2000) `#D1824` f629698 11aa4ab 7bb10a7
    508   - util (`ble/string#split`): optimize `#D1826` 7bb10a7
    509   - global: avoid passing arbitrary strings through `awk -v var=value` `#D1827` 82232de
    510   - edit: properly set `LINENO` for `PS1`, `PROMPT_COMMAND`, and `DEBUG` `#D1830` 4d24f84
    511 
    512 ## Compatibility
    513 
    514 - term: work around quirks of Solaris xpg4 awk `#D1481` 6ca0b8c
    515 - term: support key sequences and control sequences of Solaris console `#D1481` 6ca0b8c
    516 - term: work around Cygwin-console bug of bottom `IL`/`DL` `#D1482` 5dce0b8
    517 - term: work around leaked <kbd>DA2R</kbd> in screen from outside terminal `#D1485` e130619
    518 - complete: work around `fzf` completion settings loaded automatically `#D1508` 4fc51ae
    519 - complete: work around `bash-completion` bugs (reported by oc1024) `#D1533` 9d4ad56
    520 - main: work around MSYS2 .inputrc (reported by n1kk) `#D1534` 9e786ae
    521 - util (`modifyOtherKeys`): work around a quirk of kitty (reported by NoahGorny) `#D1549` f599525
    522   - util (`modifyOtherKeys`): update the workaround for a new quiark of kitty `#D1627` 3e4ecf5
    523   - util (`modifyOtherKeys`): use the kitty protocol for kitty 0.23+ which removes the support of `modifyOtherKeys` (reported by kovidgoyal) `#D1681` ec91574
    524   - util (`modifyOtherKeys`): set up `modifyOtherKeys` only after `DA2` (reported by dongxi8) `#D1885` 149eee9
    525 - global: work around empty `vi_imap` cache by `tmux-resurrect` `#D1562` 560160b
    526 - decode: identify `kitty` and treat `\e[27u` as isolated ESC (reported by lyiriyah) `#D1585` c2a84a2
    527 - complete: suppress known error messages of `bash-completion` (reported by oc1024, Lun4m) `#D1622` d117973
    528 - decode: work around kitty keypad keys in modifyOtherKeys (reported by Nudin) `#D1626` 27c80f9
    529 - main: work around `set -B` and `set -k` `#D1628` a860769
    530 - term: disable `modifyOtherKeys` and do not send `DA2` for `st` (requested by Shahabaz-Bagwan) `#D1632` 92c7b26
    531 - cmap: add `st`-specific escape sequences for cursor keys `#D1633` acfb879
    532 - cmap: distinguish <kbd>find</kbd>/<kbd>select</kbd> from <kbd>home</kbd>/<kbd>end</kbd> for openSUSE `inputrc.keys` (reported by cornfeedhobo) `#D1648` c4d28f4
    533   - cmap: freeze the internal codes of <kbd>find</kbd>/<kbd>select</kbd> and kitty special keys `#D1674` fdfe62a
    534 - main: work around self-modifying `PROMPT_COMMAND` by `bash-preexec` (reported by cornfeedhobo) `#D1650` 39ebf53
    535   - main: fix an infinite loop on `ble-reload` with externally saved `PROMPT_COMMAND` (reported by tars0x9752) `#D1851` 53af663
    536 - decode: work around openSUSE broken `/etc/inputrc` `#D1662` e5b0c86
    537 - decode: work around the overwritten builtin `set` (reported by eadmaster) `#D1680` a6b4e2c
    538 - complete: work around the variable leaks by `virsh` completion from `libvirt` (reported by telometto) `#D1682` f985b9a
    539 - stty: do not remove keydefs for <kbd>C-u</kbd>, <kbd>C-v</kbd>, <kbd>C-w</kbd>, and <kbd>C-?</kbd> (reported by laoshaw) `#D1683` 82f74f0
    540 - builtin: print usages of emulated builtins on option errors `#D1694` 6f74021
    541 - decode (`ble/builtin/bind`): improve compatibility of the deprecated form `bind key:rlfunc` (motivated by cmplstofB) `#D1698` b6fc4f0
    542   - decode (`ble/builtin/bind`): fix a bug that only lowercase is accepted for deprecated form `bind key:rlfunc` (reported by returntrip) `#D1726` a67458e e363f1b
    543 - complete: work around a false warning messages of gawk-4.0.2 `#D1709` 9771693
    544 - main: work around `XDG_RUNTIME_DIR` of a different user by `su` (reported by zim0369) `#D1712` 8d37048
    545 - main (`ble/util/readlink`): work around non-standard or missing `readlink` (motivated by peterzky) `#D1720` a41279e
    546   - util (`ble/function#pop`): allow popping unset function `#D1834` c0abc95
    547 - menu (`menu-style:desc`): work around xenl quirks for relative cursor movements (reported by telometto) `#D1728` 3e136a6
    548 - global: work around the arithmetic syntax error of `10#` in Bash-5.1 `#D1734` 7545ea3
    549 - global: adjust implementations for Bash 5.2 `patsub_replacement` `#D1738` 4590997
    550   - global: work around `compat42` quoting of `"${v/pat/"$rep"}"` `#D1751` a75bb25
    551   - prompt: fix a bug of `ble/prompt/print` redundantly quoting `$` `#D1752` a75bb25
    552   - global: identify bash-4.2 bug that internal quoting of `${v/%$empty/"$rep"}` remains `#D1753` a75bb25
    553   - global: work around `shopt -s compat42` `#D1754` a75bb25
    554 - global (`ble/builtin/*`): work around `set -eu` in NixOS initialization (reported by SuperSandro2000) `#D1743` 001c595
    555 - util, edit, contrib: add support for `bash-preexec` (motivated by SuperSandro2000) `#D1744` e85f52c
    556   - util (`ble/builtin/trap`): fix resetting `$?` and `$_` (reported by SuperSandro2000) `#D1757` dfc6221
    557   - util (`ble/builtin/trap`): fix a failure of setting the trap-handler exit status (reported by SuperSandro2000) `#D1771` c513ed4
    558   - edit (`TRAPDEBUG`): partially restore `$_` after `DEBUG` trap (reported by aiotter) `#D1853` 0b95d5d
    559 - main: check `IN_NIX_SHELL` to inactivate ble.sh in nix-shell (suggested by SuperSandro2000) `#D1747` b4bd955
    560   - main: force prompt-attach inside the nix-shell `rc` `#D1766` ceb2e7c
    561 - canvas: test the terminal for the sequence of clearing `DECSTBM` `#D1748` 4b1601d
    562 - main: check `/dev/tty` on startup (reported by andychu) `#D1749` 711c69f
    563   - main: fix the check of tty on stdin/stdout `#D1833` 80f09c9
    564 - util: add identification of Windows Terminal `wt` `#D1758` e332dc5
    565 - complete: evaluate words for `noquote` (motivated by SuperSandro2000) `#D1767` 0a42299
    566 - edit (TRAPDEBUG): preserve original `DEBUG` trap and enabled it in `PROMPT_COMMAND` (motivated by ammarooo) `#D1772` `#D1773` ec2a67a
    567   - main, trap: fix initialization order of `{save,restore}-BASH_REMATCH` (reported by SuperSandro2000) `#D1780` 689534d
    568 - global: work around bash-3.0 bug that single quotes remains for `"${v-$''}"` `#D1774` 9b96578
    569 - util: work around old `vte` not supporting `DECSCUSR` yet setting `TERM=xterm` (reported by dongxi8) `#D1785` 70277d0
    570 - progcomp: work around the cobra V2 description hack (reported by SuperSandro2000) `#D1803` 71d0736
    571 - complete: work around blocking `_scp_remote_files` and `_dnf` (reported by iantra) `#D1807` a4a779e 46f5c13
    572 - history: work around broken timestamps in `HISTFILE` (reported by johnyaku) `#D1831` 5ef28eb
    573 - progcomp: disable `command_not_found_handle` (reported by telometto, wisnoskij) `#D1834` 64d471a d5fe1d1 973ae8c
    574 - util (`modifyOtherKeys`): work around delayed terminal identification `#D1842` 14f3c81
    575   - util (`modifyOtherKeys`): fix a bug that kitty protocol is never activated `#D1842` 14f3c81
    576 - util (`modifyOtherKeys`): pass-through kitty protocol sequences (motivated by ferdinandyb) `#D1845` f66e0c1
    577 - main: show warning for empty locale (movivated by Ultra980) `#D1927` 92f2006
    578 - main: never load `/etc/inputrc` in openSUSE (motivated by Ultra980) `#D1926` 92f2006 0ceb0cb
    579 - canvas: refine detection of `bleopt char_width_mode=musl` `#D1929` b0c16dd
    580 - term (`terminology`): work around terminal glitches `#D1946` 9a1b4f9
    581 - main (`ble/bin/awk`): add workaround for macOS `awk-32` `#D1974` e2ec89c
    582 - util.hook: workaround bash-5.2 bug of nested read by `WINCH` `#D1981` a5b10e8
    583   - main (`ble/base/adjust-builtin-wrappers`): fix persistent tempenv `IFS=` in bash-5.0 (reported by pt12lol) `#D2030` 5baf6f63
    584 - edit: always adjust the terminal states with `bind -x` (reported by linwaytin) `#D1983` 5d14cf1
    585   - edit: restore `PS1` while processing `bind -x` (reported by adoyle-h) `#D2024` 2eadcd5b
    586 - syntax: suppress brace expansions in designated array initialization in Bash 5.3 `#D1989` 1e7b884
    587 - progcomp: work around slow `nix` completion `#D1997` 2c1aacf
    588 - complete: suppress error messages from `_adb` (reported by mozirilla213) `#D2005` f2aa32b0
    589 
    590 ## Test
    591 
    592 - github/workflows: add CI checks in macOS and msys2 (requested by aiotter) `##D1881` c5ddacc
    593   - github/workflows (nightly): add check for macOS (contributed by aiotter) `#D1881` 4cb0baa
    594   - github/workflows (nightly, test): interchange setup `#D1881` 4cb0baa
    595   - github/workflows: add `test.yml` `#D1881` 824dc53
    596   - fix for macOS tests
    597     - test (ble/util/c2s): fix locale settings in tests `#D1881` 26ed622
    598     - test (ble/util/msleep): loosen the condition `#D1881` 26ed622
    599     - test (ble/util/msleep): skip test in CI `#D1881` 26ed622
    600   - fix for msys2 tests
    601     - test: ensure a non-empty locale `#D1881` c5d1b82
    602     - test (ble/util/readlink): work around msys symlinks `#D1881` c5d1b82
    603     - test (ble/util/declare-print-definitions): skip array assignments involing CR in msys `#D1881` c5d1b82
    604     - test (ble/util/is-stdin-ready): skip test in the CI msys `#D1881` c5d1b82
    605     - main (bind): suppress non-interactive warning in msys `#D1881` c5d1b82
    606     - canvas (GraphemeClusterBreak): handle surrogate pairs for UCS-2 `wchar_t` `#D1881` 18bf121
    607     - util (ble/encoding:UTF-8/b2c): fix interpretation of leading byte `#D1881` 2e1a7c1
    608     - util (ble/util/s2c): work around intermediate mbstate of bash <= 5.2 `#D1881` 2e1a7c1
    609     - util (ble/util/s2bytes): clear locale cache `#D1881` 2e1a7c1
    610   - complete: fix syntax error for bash-3.0 `#D1881` 0b3e611
    611   - github/workflows: work around grep-3.0 which crashes in windows-latest `#D1915` fb7bd0b
    612 - test (ble/util/writearray): use `ble/file#hash` instead of `sha256sum` `#D1882` b76e21e
    613 - test (ble/util/readlink): work around external aliases `#D1890` 0c6291f
    614 
    615 ## Internal changes and fixes
    616 
    617 - main: include hostname in local runtime directory `#D1444` 6494836
    618 - global: update the style of document comments ff4c4e7
    619 - util: add function `ble/string#quote-words` `#D1451` f03b87b
    620 - syntax (`ble/syntax:bash/simple-word/eval`): cache `#D1453` 6d8311e
    621   - syntax (`simple-word/eval`): support `opts=single` for a better cache performance (motivated by 3ximus) `#D1464` 10caaa4
    622 - global: refactor `setup => set up / set-up` `#D1456` c37a9dd
    623 - global: clean up helps of user functions `#D1459` 33c283e
    624 - benchmark (`ble-measure`): support `-T TIME` and `-B TIME` option `#D1460` 1aa471b
    625 - util, color (`bleopt`, `blehook`, `ble-color-setface`): support `--color` and fix `sgr0` contamination in non-color output `#D1466` 69248ff
    626 - global: fix status check for read timeout `#D1467` e886883
    627 - decode: move `{keymap/*. => lib/core-decode.*-}rlfunc.txt` and clean up files `#D1486` f7323b4
    628   - Makefile: fix up f7323b4: restore rule for `keymap/*.txt` `#D1496` 054e5c1
    629 - util, etc: ensure each function to work with arbitrary `IFS` `#D1490` `#D1491` 5f9adfe
    630 - tui, canvas (`ble/canvas/trace`): support `opts=clip` `#D1493` 61ce90c
    631 - tui, edit: add a new render mode for full-screen applications 817889d
    632 - test (`test-canvas`): fix dependency on `ext/contra` `#D1525` c89aa23
    633 - util: inherit special file descriptors `#D1552` 98835b5
    634   - util: fix a bug that old tty is used in new sessions `#D1586` 0e55b8e
    635 - global: use `_ble_term_IFS` `#D1557` d23ad3c
    636 - global: work around `localvar_inherit` for varname-list init `#D1566` 5c2edfc
    637 - util: fix `ble/util/dense-array#fill-range` a46fdaf
    638 - util: fix leak variables `buff`, `trap`, `{x,y}{1,2}` `#D1572` 5967d6c
    639 - util: fix leak variables `#D1643` fcf634b
    640 - edit (`command-help`): use `ble/util/assign/.mktmp` to determine the temporary filename `#D1663` 1af0800
    641 - make: update lint check `#D1709` 7e26dcd
    642 - test: save the test log to a file `#D1735` d8e6ea7
    643 - benchmark: improve determination of the base time `#D1737` ad866c1
    644 - make: add fallback Makefile for BSD make `#D1805` e5d8d00c
    645 - main: support `bleopt debug_xtrace` (requested by SuperSandro2000) `#D1810` 022d38b
    646 - test: clean up check failures by `make check` and `make scan` `#D1812` bb3e0a3
    647 - util (`fd#alloc`): limit the search range of free fds `#D1813` 43be0e4 4c90072
    648 - github/workflows: define an action for the nightly builds (contributed by uyha) `#D1814` a3082a0
    649 - global: quote numbers for unexpected `IFS` `#D1835` 0179afc
    650 - history: refactor hooks `history_{{delete,clear,insert} => change}` `#D1860` c393c93
    651 - history: rename the hook `history_{on => }leave` `#D1860` c393c93
    652 - make: check necessary `.git` `#D1887` 0f7c04b
    653 - benchmark (zsh): fix for `KSH_ARRAYS` `#D1886` a144ffa 8cb9b84
    654 - benchmark: support for ksh as `benchmark.ksh` `#D1886` 5dae4da
    655 - github/workflows (build): rename directory in `ble-nightly.tar.xz` to `ble-nightly` (reported by Harduex) `#D1891` f20854f 4ea2e23 43c6d4b
    656 - edit: update prompts on g2sgr change `#D1906` 40625ac
    657 - util, decode, vi: fix leak variables `#D1933` 8d5cab8
    658 - util: support `bleopt debug_idle` `#D1945` fa10184
    659 - global: work around bash-4.4 no-argument return in trap `#D1970` eb4ffce
    660 - util: replace builtin `readonly` with a shell function (requested by mozirilla213) `#D1985` 8683c84 e4758db
    661   - util (`ble/builtin/readonly`): show file and line in warnings `#D2015` 467fa448 2c9b56d7
    662 - global: avoid directly using `/dev/tty` `#D1986` a835b83
    663 - util: add `ble/util/message` `#D2001` 2a524f34
    664 - global: normalize bracket expressions to `_a-zA-Z` / `_a-zA-Z0-9` `#D2006` 41faa494
    665 - global: fix leak variables `#D2018` 6f5604de
    666 - edit: handle nested WINCH properly `#D2020` a6b2c078
    667 - make: include the source filenames in the installed files (suggested by bkerin) `#D2027` 610fab39
    668 
    669 ## Contrib
    670 
    671 - prompt-git: detect staged changes `#D1718` 2b48e31
    672 - prompt-git: fix a bug that information is not updated on reload `#D1732` 361e9c5
    673 - config/execmark: show exit status in a separate line `#D1828` 4d24f84
    674   - config/execmark: add names of exit statuses `#D2019` a6b2c078
    675 - prompt-git: ignore untracked files in submodules `#D1829` 4d24f84
    676 - integration/fzf
    677   - fzf-completion: fix integration (reported by ferdinandyb) `#D1837` 12c022b
    678   - fzf-completion: remove `noquote` (reported by MK-Alias) `#D1889` 0c6291f
    679   - fzf-initialize: check directory existence before adding it to `PATH` (reported by Strykar) `#D1904` 09bb4d3
    680   - fzf-key-bindings: fix a problem that `modifyOtherKeys` is not reflected (reported by SuperSandro2000) `#D1908` 486564a
    681   - fzf-completion: quote only with `filenames` when `ble/syntax-raw` is specified (reported by christianknauer) `#D1978` 8965b61
    682 - integration/zoxide
    683   - complete, contrib: add completion integration with `zoxide` (reported by ferdinandyb) `#D1838` a96bafe
    684   - zoxide: update `contrib/integration/zoxide` for zoxide v0.8.1 `#D1907` 3bc3bea
    685   - zoxide: adjust `zoxide icanon` (reported by linwaytin) `#D1993` dc7de6b
    686 - README: update description on `_ble_contrib_fzf_base` (reported by Strykar) `#D1904` 09bb4d3
    687 - colorglass: add color filter `#D1902` 88e74cc
    688   - colorglass: add `bleopt colorglass_{saturation,brightness}` (motivated by auwsom) `#D1906` 40625ac
    689 - add `histdb` `#D1925` 44d9e10
    690   - histdb: support auto-complete source `histdb-word` `#D1938` 00cae74
    691   - histdb: automatically upgrade histdb version `#D1940` 4fac1e3
    692   - histdb: support auto-complete source `histdb-history` `#D1941` 4fac1e3
    693   - histdb: handle multiple exec lines for `histdb_ignore` `#D1942` 36e1c89
    694   - histdb: kill orphan `sqlite3` processes `#D1943` 36e1c89
    695   - histdb: back up the database `#D1944` 36e1c89
    696   - histdb: fix miscellaneous SQL query errors `#D1947` 46ac426
    697   - histdb: output error messages to tty `#D1952` 651c70c
    698   - histdb: fix remaining debug function name "assign{2 => }" in bash <= 3.2 `#D1953` 651c70c
    699   - histdb: fix a problem that the background process fails to start in bash-3.0 `#D1956` 651c70c
    700   - histdb: fix a bug that history search fails with a single quote in the commandline `#D1957` 651c70c
    701   - histdb: fix `histdb-word` completions in the middle of the commandline `#D1968` adaec05
    702   - histdb: support `bleopt histdb_remarks` `#D1968` adaec05
    703   - histdb: support timeout of background processes `#D1971` e0566bd
    704   - histdb: enable database timeout for transactions `#D1982` a5b10e8
    705   - histdb: fix `.timeout` not set for background `sqlite3` `#D1982` 20b42fa
    706   - histdb: suppress color codes in the default `histdb_remarks` `#D1968` 20b42fa
    707   - histdb: disable timeout of background processes in Bash 3.2 `#D1992` 20b42fa
    708   - histdb: rewrite to use `ble/util/bgproc` `#D2017` 7803305f
    709 - integration: move `fzf` and `bash-preexec` integrations to subdir `#D1939` 86d9467
    710 
    711 <!---------------------------------------------------------------------------->
    712 # ble-0.4.0-devel2
    713 
    714 2020-01-12 -- 2020-12-02 (`#D1215`...`#D1426`) c74abc5...276baf2
    715 
    716 ## New features
    717 
    718 - complete: support `bleopt complete_auto_wordbreaks` (suggestion by dylankb) `#D1219` c294e31
    719 - main: check `~/.config/blesh/init.sh` `#D1224` a82f961
    720 - progcolor: support programmable highlighting `#D1218` 0770234 `#D1244` 9cb3583 `#D1245` 8e8a296 `#D1247` 154f638 `#D1269` fa0036c
    721 - decode/kbd: support <kbd>U+XXXX</kbd>, <kbd>@ESC</kbd> and <kbd>@NUL</kbd> for keynames `#D1251` 441117c ef23ad1
    722 - syntax: support `coproc` `#D1252` 7ff68d2
    723 - vi/nmap: support readline widgets for <kbd>M-left</kbd>, <kbd>M-right</kbd>, <kbd>C-delete</kbd>, <kbd>#</kbd> and <kbd>&</kbd> `#D1258` 846e0be
    724 - complete: add `compopt -o quote/default` for `fzf` (motivated by dylankb) `#D1275` 58e1be4
    725 - util (`ble-import`): support an option `-d` (`--delay`) `#D1285` 9673e4e
    726 - syntax: support parameter expansion of the form `${var/#pat}`, `${var/%pat}` `#D1286` e2f4809
    727 - edit: support `bleopt editor line_limit_{type,length} history_limit_length` `#D1295` 2f9a000
    728 - edit: support widgets `{vi,emacs}-editing-mode` `#D1301` 0c6c76e
    729 - syntax: allow unquoted `[!` and `[^` in `simple-word` (reported by cmplstofB) `#D1303` 1efe833
    730 - util (`ble/util/print-global-definitions`): support arrays and unset variables (test-util) 6e85f1c
    731 - util (`ble/util/cat`): support NUL and multiple files (test-util) d19a9af
    732 - edit: support Bash 5.1 `READLINE_MARK` and `PROMPT_COMMANDS` `#D1328` e97a858 `#D1338` 657bea5
    733   - edit, main: support array PROMPT_COMMAND in bash-5.1 `#D1380` b852a4f
    734 - syntax: support confusing parameter expansions like `${#@}`, etc. `#D1330` b7b42eb
    735 - contrib: add contrib for user settings `#D1335` f290115
    736 - syntax: support `${var@UuLK}` in Bash 5.1 `#D1336` 04da4dd
    737 - main: add an option `--test` `#D1340` 1410c72
    738 - util (`ble/builtin/trap`): support `return` in `INT`/`EXIT`/`WINCH` `#D1347` `#D1348` 3865488
    739 - history: support timestamp (reported by rux616) `#D1351` 4bcbd71 `#D1356` 350bb15 `#D1364` 1d8adf9
    740 - edit: support Bash 4.4 `PS0` `#D1357` 23a1ac5
    741 - vi: support `bleopt keymap_vi_mode_{update_prompt,show,name_*}` (suggested by Dave-Elec) `#D1365` 76be6f1
    742 - prompt: support prompt sequence `\q{...}` `#D1365` 76be6f1
    743 - edit: support `bind 'set show-mode-in-prompt'` `#D1365` 76be6f1
    744   - prompt: fix a bug that mode string is not shown in `auto_complete` and other sub-modes (reported by tigger04) `#D1371` f6fc7ff
    745   - prompt: redraw prompts on the prompt content change (reported by tigger04) `#D1371` 1954a1e
    746 - prompt: support `bleopt prompt_{{ps1,rps1}{_final,_transient}}` (suggested by Dave-Elec) `#D1366` 06381c9
    747   - prompt: fix a bug that prompt are always re-insntiated for every rendering `#D1374` 0770cda
    748   - prompt: fix a bug that rprompt is not cleared when `bleopt prompt_rps1` is reset `#D1377` 1904b1d
    749   - prompt: fix a bug that prompts updated by `PROMPT_COMMAND` are not reflected immediately (reported by 3ximus) `#D1426` bbda197
    750 - edit: support Bash 5.1 widgets `#D1368` e747ee3
    751 - color: support `TERM=*-direct` `#D1369` 0d38897 `#D1370` f7dc477
    752 - complete: support `bleopt complete_auto_menu` `#D1373` 77bfabd
    753   - complete: fix a problem of frequent bells with auto-menu activated `#D1381` 3b1d8ac
    754 - complete: support `bleopt complete_menu_maxlines` `#D1375` 8e81cd7
    755 - prompt: support `_ble_prompt_update` `#D1376` 0fa8739
    756 - prompt: support `bleopt prompt_{xterm_title,screen_title,status_line}` `#D1378` 5c3f6fe
    757   - prompt: check `TERM` for prompt window titles when `_ble_term_TERM` is unavailable `#D1388` 3c88869
    758 - syntax: support options `bleopt highlight_{syntax,filename,vartype}` to turn off highlighting (requested by pjmp) `#D1379` 0116f8b
    759 - complete: support `shopt progcomp_alias` `#D1397` d68afa5
    760 - complete: generate completions of options based on man pages `#D1405` 8183455
    761   - complete (mandb): fix a bug that `bleopt complete_menu_style` is globally changed `#D1412` b91fd10
    762 - highlight: support colon separated lists of paths `#D1409` 2f40422
    763   - highlight: fix a bug that non-simple words are always highlighted as `syntax_error` (reported by cmplstofB) `#D1411` 46e2ac6
    764   - highlight: fix a bug that words are sometimes unhighlighted `#D1418` 4395484
    765   - highlight: fix a bug that non-existent directories are not highlighted in the command name context `#D1419` 4395484
    766 - highlight: support options `#D1410` 2f40422
    767   - highlight: support highlighting of `declare` command options `#D1420` f0df481
    768   - highlight: fix unhighlighted tilde expansions `~+` (reported by cmplstofB) `#D1424` a32962e
    769 
    770 ## Changes
    771 
    772 - highlight: highlight symlink directories as symlinks `#D1249` 25e8a72
    773 - auto-complete: bind `insert-on-end` to `C-e` `#D1250` 90b45eb
    774 - edit (`widget/shell-expand-line`): not quote expanded results by default `#D1255` a9b7810
    775 - decode: refactor
    776   - decode: delay bind until keymap initialization `#D1258` 0beac33
    777   - decode: read user settings from `bind -Xsp` `#D1259` eef14d0
    778   - decode: fix a bug of `ble-bind` with uninitialized cmap `#D1260` 5d98210
    779   - decode: fix error messages of BSD `sed` rejecting unencoded bytes from `bind -p` (reported by dylankb) `#D1277` 0cc9160
    780 - edit: provide proper `$BASH_COMMAND` and `$_` for PS1, PROMPT_COMMAND, PRECMD, etc. `#D1276` 7db48dc
    781 - edit (quoted-insert): insert literal key sequence `#D1291` 420c933
    782 - decode: support `decode_abort_char` for `modifyOtherKeys` `#D1293` ad98416
    783 - edit (edit-and-execute): disable highlighting of old command line content `#D1295` 2f9a000
    784 - util (`bleopt`): fail when a specified bleopt variable does not exist (test-util) 5966f22
    785 - builtin: let redefined builtins return 2 for `--help` `#D1323` 731896c
    786 - edit: preserve `PS1` when `internal_suppress_bash_output` is set `#D1344` 6ede0c7
    787 - complete: complete param expan in additional contexts `#D1358` 3683305
    788 - main: reload on ble-update when ble.sh is already updated `#D1359` a441d4d
    789 - main (`ble-update`): clone github repository if the original repository is not found `#D1363` 6e3b3b5
    790 - util (bleopt): change output format d4b12cd
    791 - syntax: allow `time -- command` for Bash 5.1 `#D1367` 00d0e93
    792 - menu: preserve columns with `{forward,backward}-line` `#D1396` 3d5a341
    793 - syntax: rename `ble_debug` to `bleopt syntax_debug` `#D1398` 3cda58b
    794 - syntax: change a style of buffer contents in `bleopt syntax_debug` `#D1399` 3cda58b
    795 - complete: change to generate filenames starting from `.` by default (motivated by cmplstofB) `#D1425` 987436d
    796 
    797 ## Fix
    798 
    799 - util (ble/builtin/trap): fix argument analysis for the form `trap INT` (reported by dylankb) `#D1221` db8b0c2
    800 - main: fix an error message on ristricted shells `#D1220` b726225
    801 - edit: fix a bug that the shell hangs with `source ble.sh --noattach && ble-attach` (reported by dylankb) `#D1223` 59c1ce4 3031007
    802 - edit: fix a bug that the textarea state is not properly saved (reported by cmplstofB) `#D1227` 06ae2b1
    803 - syntax: support hexadecimal literals for arithmetic expression (reported by cmplstofB) `#D1228` 90e4f35
    804 - history: fix a bug that history append does not work with `set -C` (reported by cmplstofB) `#D1229` 604bb8b
    805 - decode (`ble/builtin/bind`): fix widget mapping for `default_keymap=safe` `#D1234` 750a9f5
    806 - main (ble-update): fix a bug that the check of `make` does not work in Bash 3.2 `#D1236` 08ced81
    807 - syntax: fix a infinite loop for variable assignments and parameter expansions `#D1239` 327661f
    808 - complete: clear menu on history move `#D1248` 06cc7de
    809 - syntax: fix a bug that arguments of `eval` are not highlighted `#D1254` 5046d14
    810 - decode: fix error message `command=${[key]-}` for mouse input `#D1263` 09bb274
    811 - [ble-0.3] reload: fix a bug that the state is broken by `ble-reload` `#D1266` f2f30d1
    812 - decode (`ble/builtin/bind`): remove comment from bind argument `#D1267` 880bb2c
    813 - decode: use `BRE` instead of `ERE` for `POSIX sed` (reported by dylankb) `#D1283` 2184739
    814 - decode: fix strange behaviors after `fzf` (convert <kbd>DEL</kbd> to <kbd>C-?</kbd>) `#D1281` 744c8e8
    815 - edit: work around Bash rebinding on `TERM` change `#D1287` ac7ab55 7a99bf3
    816 - term: work around terminfo/termcap entry collisions in `tput` (reported by killermoehre) `#D1289` f8c54ef 
    817 - complete: clear menu on discard-line (reported by animecyc) `#D1290` fb794b3 `#D1315` 99880ef
    818 - vi (vi-command/nth-column): fix a bug in arithmetic expansion (reported by andychu) `#D1292` da6cc47
    819 - complete: fix a bug that insert-word does not for with ambiguous candidates `#D1295` 2f9a000
    820 - complete: fix a bug that menu-filter is only partially turned off by `complete_menu_filter` `#D1298` b3654e2
    821 - decode: fix error messages for unsupported readline functions `#D1301` 91bdb64
    822 - global: work around `shopt -s assoc_expand_once` `#D1305` 31908e1
    823 - global: work around `TMOUT` for `builtin read` `#D1306` 1c22a9d
    824 - syntax: fix failglob errors of heredocs of the form `<<$(echo A)` `#D1308` 3212fd2
    825 - decode (`ble-bind`): fix an error message `#D1311` c868b6d
    826 - util (`bleopt`): fix a bug that a new setting is not defined with `name:=` (test-util) `#D1312` c757b92
    827 - util (`ble/util/{save,restore}-vars`): fix a bug that `name` and `prefix` cannot be saved/restored (test-util) 5f2480c
    828 - util: fix `ble/is-{inttype,readonly,transformed}` (test-util) 485e1ac
    829 - util (`ble/path#remove{,-glob}`): fix corner cases (test-util) ccbc9f8
    830 - history: fix a problem that the history is doubled by `history -a` in `bashrc` `#D1314` 34821fe
    831 - util (`ble/variable#get-attr`): fix an error message with special variable names such as `?` and `*` `#D1321` 557b774
    832 - util (has-glob-pattern): fix abort in subshells (test-util) `#D1326` dc292a2
    833 - edit: fix a bug that `set +H` is cancelled on command execution `#D1332` 02bdf4e
    834 - syntax (`ble/syntax/parse/shift`): fix a bug of shift skip in nested words `#D1333` 65fbba0
    835 - global: work around Bash-4.4 `return` in trap handlers `#D1334` aa09d15
    836 - util (`ble-stackdump`): fix a shift of line numbers `#D1337` a14b72f d785b64
    837 - edit (`ble-bind -x`): check range of `READLINE_{POINT,MARK}` `#D1339` efe1e81
    838 - main: fix a bug that `~/.config/blesh/init.sh` is not detected (GitHub #53 by rux616) 61f9e10
    839 - util (`ble/string#to{upper,lower}`): work around `LC_COLLATE=en_US.utf8` (test-util) `#D1341` 1f6b44e `#D1355` 4da6103 5f0d49f
    840 - util (encoding, keyseq): fix miscelleneous encoding bugs (test-util) 435bd16
    841   - `ble/util/c2keyseq`: work around bash ambiguous keyseq `\M-\C-\\`
    842   - `ble/util/c2keyseq`: fix a bug that `C1` characters are not properly encoded
    843   - `ble/util/keyseq2chars`: fix a bug that `\xHH` is not properly processed
    844   - `ble/encoding:UTF-8/b2c`: work around Bash-4.2 arithmetic crash
    845   - `ble/encoding:UTF-8/b2c`: fix a bug that `G0` characters lose its seventh bit
    846   - `ble/encoding:UTF-8/c2b`: fix a bug that the first byte gets redundant bits
    847 - edit: work around `WINCH` not updating `COLUMNS`/`LINES` after `ble-reload` `#D1345` a190455
    848 - complete: initialize `bleopt complete_menu_style` options before `complete_load` hook (reported by rux616) `#D1352` 8a9a386
    849 - main: fix problems caused by multiple `source ble.sh` in bashrc `#D1354` 5476933
    850 - syntax: allow single-character variable name in named redirections `{a}<>` `#D1360` 4760409
    851 - complete: quote `#` and `~` at the beginning of word `#D1362` f62fe54
    852 - decode (`bind`): work around `shopt -s nocasematch` (reported by tigger04) `#D1372` 855cacf
    853 - syntax (tree-enumerate): fix unmodified `wtype` of reconstructed words at the end `#D1385` 98576c7
    854 - complete: fix a bug that progcomp retry by 124 caused the default completion again `#D1386` 98576c7
    855 - complete: fix bugs that quotation disappears on ambiguous completion `#D1387` 98576c7
    856 - complete: fix a bug of duplicated completions of filenames with spaces `#D1390` 98576c7
    857 - complete: fix superlinear performace of ambiguous matching globpat `#D1389` 71afaba
    858 - prompt: fix extra spaces on line folding before double width character `#D1400` d84bcd8
    859 - prompt: fix a bug that lonig rps1 is not correctly turned off `#D1401` d84bcd8
    860 - syntax (glob bracket expression): fix a bug of unsupported POSIX brackets `#D1402` 6fd9e22
    861 - syntax (`ble/syntax:bash/simple-word/evaluate-path-spec`): fix a bug of unrecognized `[!...]` and `[^...]` `#D1403` 0b842f5
    862 - complete (`cd`): fix duplicate candidates by `CDPATH` (reported by Lennart00 at `oh-my-bash`) `#D1415` 5777d7f
    863 - complete (`source:file`): fix a bug that tilde expansion candidates are always filtered out `#D1416` 5777d7f
    864 - complete: fix a problem of redundant unmatched ambiguous part with tilde expansions in the common prefix `#D1417` 5777d7f
    865 - highlight: fix remaininig highlighting of vanishing words `#D1421` `#D1422` 1066653
    866 - complete: fix a problem that the user setting `dotglob` is changed `#D1425` 987436d
    867 
    868 ## Compatibility
    869 
    870 - main: work around cygwin uninitialized environment `#D1225` `#D1226` b9278bc
    871 - global: work around Bash 3.2 bug of array initialization with <kbd>SOH</kbd>/<kbd>DEL</kbd> `#D1238` defdbd4 `#D1241` 1720ec0
    872 - term: support `TERM=minix` `#D1262` ae0b80f
    873 - msys2: support2 MSYS (motivated by SUCHMOKUO) `#D1264` 47e2863
    874   - edit: support `\$` in `PS1` for MSYS2 `#D1265` f6f8956
    875   - msys2: work around MSYS2 Bash bug of missing <kbd>CR</kbd> `#D1270` 71f3498
    876   - cygwin, msys2: support widget `paste-from-clipboard` `#D1271` cd26c65
    877 - msys1: support MSYS1 `#D1272` 630d659
    878   - msys1: work around missing named pipes in MSYS1 `#D1273` 6f6c2e5
    879 - term: support contra `SPD` `#D1288` 1e65f2c
    880 - decode: work around Bash-4.1 bug that locale not applied with `LC_CTYPE=C eval command` (test-util) b2c7d1c
    881 - util (`ble/variable#get-attr`): fix a bug that attributes are not obtained in Bash <= 4.3 (test-util) b2c7d1c
    882 - decode: work around Bash-3.1 bug of `declare -f` rejecting special characters in function names (test-util) b2c7d1c
    883 - edit (`ble/widget/bracketed-paste`): fix error messages on `paste_end` in older version of Bash (test-util) b2c7d1c
    884 - decode: work around Bash-4.1 arithmetic bug of array subscripts evaluated in discarded branches `#D1320` 557b774
    885 - complete: follow Bash-5.1 change of arithmetic literal `10#` `#D1322` 557b774
    886 - decode: fix a bug of broken cmap cache found in ble-0.3 `#D1327` 16b56bf
    887 - util (strftime): fix a bug not working with `-v var` option in Bash <= 4.1 (test-util) f1a2818
    888 - complete: work around slow `compgen -c` in Cygwin `#D1329` 5327f5d
    889 - edit: work around problems with `mc` (reported by onelittlehope) `#D1392` e97aa07
    890   - highlight: fix a problem that the attribute of the last character is applied till EOL `#D1393` 2ddb1ba `#D1395` ef09932
    891 
    892 ## Internal changes and fixes
    893 
    894 - util: merge `ble/util/{save,restore}-{arrs => vars}` `#D1217` 6acb9a3
    895 - internal: merge subdir `test` into `memo` `#D1230` f0c38b6
    896 - ble-measure: improve calibration `DD1231` d3a7a52
    897 - vi_test: fix a bug that test fails to restore the original state `#D1232` 4b882fb
    898 - decode (ble/builtin/bind): skip checking stdin in parsing the keyseq `#D1235` 5f949e8
    899 - syntax: delay load of `ble/syntax/parse` for syntax highlighting `#D1237` bb31b11
    900 - memo: split `memo.txt` -> `note.txt`, `done.txt` and `ChangeLog.md` `#D1243` 31bc9aa 8b0fe34 419155e
    901 - global: check isolated identifiers and leak variables `#D1246` 19cc99d 2e74b6d
    902 - util: add `ble/function#{advice,push,pop}` to patch functions (motivated by dylankb) `#D1275` fbe531a
    903 - util (`ble/util/stackdump`): output to `stdout` instead of `stderr` `#D1279` 9d3c50d
    904 - complete (`ble-sabbrev`): delay initialization `#D1282` dfc4f66
    905 - test: update `lib/test-{core => util}.sh` (reported by andychu) `#D1294` e835b0d
    906 - edit: improve performance of bracketed-paste `#D1296` 0a45596 `#D1300` 3f33dab `#D1302` 5ee06c8 10ad274
    907 - decode: improve performance of `ble-decode-char` `#D1297` 0d9d867
    908 - ext: update `mwg_pp.awk` (for branch osh) 978ea32
    909 - test: add `lib/core-test.sh` `#D1309` 68f8077
    910 - global: do not use `local -i` `#D1310` f9f0f9b
    911 - global: normalize calls of builtins `#D1313` b3b06f7
    912 - test: refactor test `#D1316` `#D1317` 6c2f863
    913 - util (`ble/util/openat`): change to open unused fds `#D1318` 6c2f863
    914 - util: rename `ble/{util/openat => fd#alloc}` `#D1319` 6c2f863
    915 - util (`ble/function#advice remove`): restore original command 149a640
    916 - edit: rename `ble-edit/prompt/*` -> `ble/prompt/*` `#D1365` 76be6f1
    917 - main: use `PROMPT_COMMAND` in bash-5.1 for prompt attach `#D1380` b852a4f
    918 - main: unset `BLE_VERSION`, `_ble_bash`, etc. on `ble-unload` `#D1382` 6b615b6
    919 - util: revisit `ble/variable#is-global` implementation `#D1383` 6b5468f
    920 - cmap: recognize <kbd>SS3 O</kbd> as <kbd>blur</kbd> `#D1384` 445a5ad
    921 - edit (`ble/widget/{accept-line,newline}`): automatically switch widgets by the keymap `#D1391` 5bed6e6
    922 - complete: perform filter in `ble/complete/cand/yield` `#D1404` 7c6b67b 83fa830
    923   - complete: fix a bug that `ble/cmdinfo/complete:cd` candidates are unfiltered (reported by cmplstofB) `#D1413` 5c17a31
    924   - complete: fix unfiltered tilde expansions `#D1414` 5777d7f
    925   - complete: fix candidate filter failure in dynamic sabbrev expansion (reported by darrSonik) `#D1423` dabc515
    926 - syntax, edit: use `type -a -t -- cmd` to get command types hidden by keywords `#D1406` ef2d912
    927 - edit, complete: replace some external commands with Bash builtin `#D1407` 5386e93
    928 
    929 <!---------------------------------------------------------------------------->
    930 # ble-0.4.0-devel1
    931 
    932 2019-03-21 -- 2020-01-12 (#D1015...#D1215) df4feaa...c74abc5
    933 
    934 ## New features
    935 
    936 - emacs: support widgets `forward-byte` and `backward-byte` `#D1017` b2951ef
    937 - emacs: support arguments of word wise operations `#D1020` 719092c
    938 - emacs: support widgets `{capitalize,downcase,upcase}-xword` `#D1019` 719092c
    939 - emacs: support widgets `alias-expand-line` and `history-and-alias-expand-line` `#D1024` fdaf579
    940 - emacs: support keyboard macros `#D1028` 284668a
    941   - decode: workaround recursive charlog/keylog `#D1030` ea421a3
    942 - complete: define `menu` keymap `#D1033` abfd060
    943 - emacs: support widgets `kill{,-graphical,-logical}-line` `#D1037` 3bb3d33
    944 - emacs: support a widget `re-read-init-file` `#D1038` ebe2928
    945 - emacs: support widgets `readline-dump-{functions,macros,variables}` `#D1039` 49256a9
    946 - emacs: support widgets `character-search-{for,back}ward` and `delete-forward-char-or-list` `#D1040` 2b20c88
    947 - emacs: support widgets `insert-comment` and `do-lowercase-version` `#D1041` 7aae37b
    948 - main: support options `--version` and `--help` `#D1042` b5ab789
    949 - main: read `.inputrc` as `ble.sh` settings `#D1042` b5ab789
    950   - decode: fix a bug of error messages on reading `.inputrc` `#D1062` e163b9a
    951 - complete: support widget `menu-complete insert_braces` `#D1043` 3d29c8d
    952   - complete (insert_braces): reimplement range contraction `#D1044` dc586da
    953   - complete (insert_braces): remove empty quotations `#D1045` `#D1046` dc586da
    954   - complete (insert_braces): fix support of replacement of existing part `#D1047` dc586da
    955 - complete: support `complete context=dynamic-history` `#D1048` 4f7b284
    956 - emacs: support a widget `edit-and-execute-command` `#D1050` ca5fe08
    957 - emacs: support widgets `insert-{last,nth}-argument` `#D1051` 24458be
    958 - complete: support `menu-complete backward` `#D1052` 2b0c7e8
    959 - emacs: `history-nsearch-{for,back}ward-again` `#D1053` 60dde2c
    960 - emacs: support widgets `tab-insert`, `tilde-expand` and `shell-expand-line` `#D1054` 156b76e
    961 - emacs: support a widget `transpose-{c,u,s,f,e}words` `#D1055` d72c2d4
    962 - emacs: support `bleopt decode_error_cseq_{abell,vbell,discard}` `#D1056` ab1b8b0
    963   - decode: fix a bug that cmap cache update is not triggered for `#D1073` f1e7674
    964 - emacs: support a widget `universal-arg` `#D1057` 8b1dd07
    965 - emacs: support kill ring and a widget `yank-pop` `#D1059` 8c9b6e8
    966 - highlight: support job names by `auto_resume` `#D1065` ce46024
    967 - decode: add support for `S8C1T` key sequences `#D1083` 9b7939b
    968 - history: support `bleopt history_share` `#D1100` `#D1099` 305b89f `#D1193` 4838a46
    969 - history: support full multiline history `#D1120` 8cf17f7
    970   - history: do not synchronize multiline resolution on "history -p" `#D1121` 9e56b7b
    971   - history.mlfix: suppress errors on Bash 3 `#D1122` 4fe7a0c
    972   - history: suppress error messages trying to kill background worker on reattach `#D1125` f045fec
    973 - highlight: support dirname colors with pathname expansion, failglob and command names `#D1134` edaf495
    974 - util: introduce `blehook` `#D1139` d1a78fb
    975   - blehook: support `blehook PRECMD PREEXEC POSTEXEC CHPWD ADDHISTORY` `#D1142` bedc2ba
    976   - blehook: add `blehook/eval-after-load` `#D1145` c1f7aa9
    977   - blehook: fix a bug that the definition of specified hooks are not printed `#D1146` a4a7cbc
    978 - highlight: highlight word with the form of URL `#D1150` f48f2d7
    979 - syntax: support syntax/globpat in param expansions `#D1157` `#D1158` 051222e `#D1160` 57b42ba
    980   - syntax: fix attr of nested extglob in param expansions `#D1159` 2d019f0
    981 - decode: support `ble-bind -T kspecs timeout` for timeout and `lib/vim-arpeggio.sh` (request by divramod) `#D1174` 272344e
    982 - complete: use `WORD*` pathname expansion for candidates on failglob with `WORD` `#D1177` c1b0532
    983 - edit: support `bleopt accept_line_threshold` `#D1178` a3385f6 82a1e0b
    984 - complete: support `bleopt complete_allow_reduction` `#D1181` 03040b7
    985 - edit: support `bleopt exec_errexit_mark` `#D1182` 6adc2df
    986 - color: support true colors `#D1184` bd631ce 5dd6b03
    987 - color (`ble-color-setface`): support reference to another face (reported by cmplstofB) `#D1188` 1885b54 `#D1206` 7e31ad3
    988 - edit: support `shopt -u promptvars` `#D1189` 269ba09
    989 - highlight: highlight variable names and numbers according to its state `#D1210` `#D1211` 93dab7b
    990 - highlight: support `${var@op}` (for bash 4.4) `#D1212` a85bdb8
    991 
    992 ## Changes
    993 
    994 - edit: erase in page on `SIGWINCH` `#D1016` 7625ebe
    995 - edit: the widgets `{kill,copy,delete}-region-or` now receives widgets as arguments `#D1021` bbbd155
    996 - edit: disable aliases for builtins and keywords `#D1023` 61da093
    997 - edit: disable `rps1` in secondary textareas `#D1027` b86709a
    998 - edit: support `$?` in `PROMPT_COMMAND` and `PS1` evaluation `#D1074` 43f2967
    999 - main: change default attach strategy to `--attach=prompt` `#D1076` 197f752
   1000 - main: change exit status of `ble-update` when it is already up to date `#D1081` d94f691
   1001 - progcomp: improve treatment of `COMP_WORDBREAKS` `#D1094` f6740b5 `#D1098` 6c6bae5
   1002 - history: replace builtin `history` `#D1101` 655d73e
   1003   - history: synchronize undo/mark/dirty data with history changes `#D1102` `#D1103` `#D1104` 5367360
   1004   - history: improve performance of `history -r` `#D1105` `#D1106` f204bc7
   1005   - history: fix a problem that history file is doubled with `history -cr` in `PROMPT_COMMAND` `#D1110` e64edb7
   1006   - history: suppress errors on new history file `#D1111` e64edb7 `#D1113` 91f07b6
   1007   - history: fix a problem that `_ble_edit_history` is not synchronized with `history -r` `#D1112` e64edb7
   1008   - history: do not process `_ble_edit_history` in detached state `#D1115` bf3b014
   1009   - history: move history item on delete of current item with `history -d` `#D1114` bf3b014
   1010   - history: fix a problem that history before load of ble.sh is lost `#D1126` 37cd154
   1011   - history: fix problems of history output after `ble-reload` `#D1129` 9c8d858
   1012 - history: improve performance of `erasedups` `#D1107` 518e2ee
   1013 - history: correctly handle `HISTSIZE` overflow `#D1108` 7be255c
   1014 - sabbrev: support sabbrev expansion in wider contexts (reported by cmplstofB) `#D1117` ca6e03d
   1015 - main: change loading point of `.inputrc` `#D1127` af758e5
   1016 - highlight: do not split command names with `:` and `=` `#D1133` 8a1bd8f
   1017 - decode: support DA1 responses sent by some terminals (reported by miba072) `#D1135` 362ab05
   1018 - highlight: make brace expansions active for RHS of variable-assignment-form arguments `#D1138` 93cc8da
   1019 - main: adjust readline variables for `ble.sh` `#D1148` 36312f7
   1020 - edit: update prompt after execution of command through `ble-bind` `#D1151` 27208ea
   1021 - blehook: replace builtin `trap` `#D1152` d6c555e 7d4fd03
   1022   - blehook: suppress extra `DEBUG` trap calls `#D1155` 25c3e19
   1023 - syntax: allow `},fi,done,esac,then,...` after subshell `()` `#D1165` fdb49f3
   1024 - edit: support options `--help` for `read` and `exit` `#D1173` faccc6b
   1025 - color (`ble-color-{set,def}face`): list faces without arguments `#D1180` 50327c3
   1026 - complete: search completion settings through alias expansion `#D1187` c472809
   1027 - history (`ble/builtin/history`): support an option `--help` `#D1192` d4c26c5
   1028 
   1029 ## Fixes
   1030 
   1031 - decode: workaround Poderosa that returns `DSR` instead of `CPR` in reply to `DSR(6)` `#D1018` 8e22c17
   1032 - isearch: fix a bug to match with the old content of the current line `#D1025` 605dcd0
   1033 - vi: fix a bug that quoted-insert is not properly recorded with `qx...q` `#D1026` 06698a4
   1034 - decode: fix a bug that chars from nested widgets are not processed immediately `#D1028` c79d89b
   1035 - menu: fix a bug that fails to retrieve menu item description `#D1031` c936db8
   1036 - menu: fix a bug that menu item color is disabled `#D1032` c936db8
   1037 - vbell: fix a bug that persistent vbell is not erased before next vbell `#D1034` a3af6c0
   1038 - menu-complete: fix a bug that candidates from menu only contained visible ones `#D1036` 275779f
   1039 - menu-complete: fix a bug that original texts were lost on cancel `#D1049` 3bbfef6
   1040 - edit: fix a bug that rendering is caused twice `#D1053` c7599a2
   1041 - color (layer:region): fix a bug that highlighting is cleared without dirty ranges `#D1053` 23796bc
   1042 - edit (nsearch): fix a bug that the search range is narrowed after fail `#D1053` 3b2237e
   1043 - edit (nsearch): fix a bug of messages on search fail `#D1053` 3b2237e
   1044 - util: fix a bug that SGR of visible-bell remains 799f6d3
   1045 - decode: fix a bug of infinite loops on `ble-reload` `#D1077` 0f01bcf `#D1079` fee22b1
   1046 - decode: workaround a bash-5.0 bug of `bind -p` `#D1078` b52da28
   1047 - complete: workaround slow command candidates generation in Cygwin `#D1080` 376bfe7
   1048 - syntax: fix false error highlighting of commands after `}`, `fi`, `done` or `esac` `#D1082` 4ce2753
   1049 - decode: fix a bug that modifyOtherKeys did not work at all 1666ec2
   1050 - edit: fix a problem that status line vanishes on window resize `#D1085` 467b7a4
   1051   - edit: recalculate prompts after resize `#D1088` b29f248
   1052   - edit: fix the position of cursor after resize `#D1089` b29f248
   1053 - decode: fix a bug that `ble-update` breaks keymap cache `#D1086` ab8dad2
   1054 - edit (`ble/builtin/read`): suppress noisy job messages and delay caused by vbell `#D1087` 309b9e4
   1055 - edit (`ble/builtin/read`): workaround failglob crash on vbell inside `read` `#D1090` 2e6f44c
   1056 - edit: workaround a bash bug that history entries are removed by `history -p` `#D1091` 146f9e7
   1057 - edit (self-insert): workaround Bash-3.0 bug that ^? cannot be handled properly `#D1093` e09c7b5
   1058 - highlight: fix a bug that quoted tilde expansions are processed for filename highlighting `#D1095` 3f1f472
   1059 - menu-complete: fix a bug that word is expanded on cancel `#D1097` 001b914
   1060 - highlight: fix a problem that empty arguments are highlighted as errors `#D1116` 64ae8ce
   1061 - sabbrev: fix a bug that menu-filter is not canceled on some sabbrev expansion `#D1118` 30cc31c
   1062 - main: fix a bug that `source ble.sh --noattach` in `ble.sh` sessions hangs `#D1130` d35682a caa46c2 `#D1199`
   1063 - syntax: workaround bashbug 3.1/3.2 that `eval` ending with <kbd>\ + LF</kbd> causes error messages `#D1132` a4b7e00
   1064 - term: workaround `cygwin` console glitches `#D1143` b79c35f `#D1144` ef19d17
   1065 - main: fix a bug that error messages for unsupported shells are not printed `#D1149` 34bd6f8
   1066 - main: workaround `set -ex` `#D1153` 06ebf9f
   1067 - main: workaround shell variable `FUNCNEST` `#D1154` fa2aa47
   1068 - highlight: fix error messages on the command line `a=[` `#D1156` b159ea2
   1069 - util: fix a bug of "ble/builtin/trap" not recognizing "-" `#D1161` 11fddba
   1070 - init-bind: workaround a bash-5.0 bug that `bind '"\C-\\": ...'` does not work `#D1162` 80edf44
   1071 - init-bind: do not use workaround of `C-x` in vi mode `#D1163` e6a3d33
   1072 - vi_test: fix test for the macro playing `#D1164` 636517c
   1073 - exec: fix a problem that the shell hangs with failglob in pipe `#D1166` ac8ba6e
   1074 - complete: fix a problem of delay with path `//` in Cygwin `#D1168` 2cf8cc7
   1075 - prompt: fix the expansion of `\w` and `\W` in `PS1` for working directories with double slashes `#D1169` d1288dd
   1076 - exec: workaround termination of command execution on syntax error in array subscripts `#D1170` 4f442d0
   1077 - history: fix a bug that garbage `__ble_edt__` is added in front of history entries 61f4bd1
   1078 - decode: remove debug messages for `ble-bind -s` 64a17c3
   1079 - syntax: fix highlighting of `${!var@}` `#D1176` 161ed80
   1080 - term: fix `Ss` (`DECSCUSR`) 0c773da
   1081 - term: workaround linux console <kbd>CSI \></kbd>, <kbd>CSI M</kbd>, <kbd>CSI L</kbd> `#D1213` `#D1214` 0ec6f0c
   1082 - edit: fix exit status of Bash by key binding <kbd>C-d</kbd> `#D1215` a9756e9
   1083 
   1084 ## Support macOS, FreeBSD, Arch Linux, Solaris, Haiku, Minix
   1085 
   1086 - util: fix the error message "usage: sleep seconds" on macOS bash 3.2 `#D1194` (reported by dylankb) 6ff4d2b
   1087 - decode: recover the terminal states after failing the default keymap initialization `#D1195` (reported by dylankb) 846f284
   1088 - main (`ble-update`): use shallow clone `#D1196` 2a20d9c
   1089 - main (`$_ble_base_cache`): use different directories for different ble versions `#D1197` 55951d1
   1090 - edit (`ble/builtin/read`): fix argument analysis with user-provided `IFS` in Bash 3.2 (reported by dylankb) `#D1198` 7411f06
   1091 - global: fix subshell detection in Bash 3.2 `#D1200` ca8df8a
   1092 - syntax: workaround Bash-4.1 arithmetic bug `#D1201` f248c52
   1093 - Makefile: fix "install" for BSD sed `#D1202` 32c2e1a
   1094 - term: support "tput" based on termcap `#D1203` `#D1204` 161af07
   1095 - global: adjust for FreeBSD and Arch Linux `#D1205` 6ac5b8c
   1096 - global: workaround Solaris awk `#D1207` 74d438d
   1097 - util: support Haiku `#D1208` e3de373
   1098   - ble/util/msleep: do not use `read -t time` for Haiku
   1099   - ble/term/stty: check available character settings
   1100   - init-cmap: check termcap settings for <kbd>home</kbd>
   1101 - util: support Minix `#D1209` 49e6457
   1102   - ble/util/msleep: do not use `read -t time -u FD` in Minix
   1103   - ble-edit/prompt: does not abbreviate IPv4 address for `\h`
   1104   - Makefile: create directory `dist` for `make dist`
   1105 
   1106 ## Internal changes
   1107 
   1108 - complete: isolate menu related codes `#D1029` 43bb074
   1109 - global: use `builtin echo` explicitly `#D1035` a6232c2
   1110 - decode: re-implement rlfunc2widget without fork `#D1063` d2e7dbe
   1111 - blerc: add descriptions `#D1064` d61b6af
   1112 - decode: decode mouse events `#D1084` 51fae67
   1113 - history: move history related codes to `src/history.sh` `#D1119` 1bfc8eb e5b1980
   1114   - history: move codes related to history prefixes and history searches to `history.sh` `#D1136` 1cda6ff 20024d2
   1115   - history: use common "_ble_history_onleave" for different histories `#D1137` ec19d51
   1116 - keymap/vi: deal with textarea local data properly `#D1123` 2ea7cfd
   1117 - edit: remove `ble-edit/exec:exec` `#D1131` 0cb9c6d
   1118 - global: distinguish exit status 147 and 148 `#D1141` d1a78fb
   1119 - global: follow bash syntactic changes on arithmetic command 16e0f0e
   1120 - decode: check `bind -X` first to store the original bindings `#D1179` 4057ff0
   1121 - complete: resolve collision of flag chars with `shopt -s nocaseglob` `#D1186` 550fb14
   1122 - color: change return variable of `ble/color/{,i}face2{g,sgr}` to `ret` `#D1188` 1885b54
   1123 - global: workaround `shopt -s xpg_echo` `#D1191` e46f9a3
   1124 
   1125 <!---------------------------------------------------------------------------->
   1126 # 2019-03-21
   1127 
   1128 2019-02-09..2019-03-21 (#D0915...#D1015) 949e9a8...df4feaa
   1129 
   1130 ## New features
   1131 
   1132 - auto-complete: support <kbd>end</kbd> at the end of line a374635
   1133 - decode: replace builtin `bind` for `ble.sh` settings `#D0915`  90ca3be `#D0918` e0cdd15
   1134   - decode: update mapping of rl-functions and widgets for vi_imap and vi_nmap `#D1012` 7fec4b6
   1135   - decode: support `bind [-psPSX] [-quf arg]` `#D1013` 9265f8a
   1136 - edit: support <kbd>C-x C-g</kbd>, <kbd>C-M-g</kbd> for `bell` and `cancel` `#D0919` 2e83120
   1137 - syntax: support `set +B` `#D0931` 12f80dd
   1138 - syntax: support aliased keywords `#D0936` 7054e28
   1139 - complete: support `ble-sabbrev -m key=function` `#D0942` bcdf843
   1140 - complete: support description of candidates `#D0945` `#D0946` 0fa73bf `#D0977` 96fe498
   1141   - canvas: use ... instead of … when unicode is not available `#D0979` 51e600a
   1142   - canvas (`ble/canvas/trace`): support `opts=truncate:confine` `#D0981` 79916d2
   1143 - complete: support insertion of ambiguous common part `#D0947` 3644a8e
   1144 - complete: support three levels of ambiguous matching `#D0948` 3644a8e
   1145 - complete: support menu item highlight of ambiguous matching `#D0949` 3644a8e
   1146 - complete: support menu pages `#D0958` ff43e01 a488e01 `#D0990` 32aeef0
   1147   - menu-complete: show page numbers with `visible-bell` `#D0980` 6297e65
   1148   - menu-complete: fix a bug that height of `menu` is too large (<= bash-4.1) `#D0983` 129a1f0
   1149 - edit: support `bleopt rps1=` for the right prompt `#D0959` 90a8915 `#D0964` fa2a874 `#D0970` 87c8348
   1150   - rps1: fix coordinate calculations for rps1 `#D0982` 129a1f0
   1151   - canvas (`ble/canvas/trace`): fix a bug that `measure-bbox` does not work (<= bash-3.1) `#D0988` 7f880de
   1152   - canvas (`ble/canvas/trace`): fix a bug that `x1` and `y1` is not properly updated `#D0988` 7f880de
   1153   - edit: support `bleopt rps1_transient` `#D0993` 44edd38
   1154   - edit: fix a bug that `rps1` is cleared on execution of the command `#D1003` 5780154
   1155   - edit: erase trailing spaces after newlines when `rps1_transient` is enabled `#D1004` 5780154
   1156   - edit: support multiline `rps1` (Note: still restricted to fit in lines of `PS1`) `#D1005` 5780154
   1157 - complete: support "bleopt complete_menu_style=desc-raw" `#D0965` 1fd7a3e
   1158 - complete: support <kbd>prior</kbd>, <kbd>next</kbd>, <kbd>home</kbd>, <kbd>end</kbd> in `menu_complete` keymap `#D0966` b729d23
   1159 - edit: support `bleopt prompt_eol_mark=$'\e[94m[ble: EOF]\e[m'` `#D0968` 6c8b52a
   1160 - complete: highlight active ranges of `menu-filter` `#D0969` 500f702 `#D0971` aae8b26
   1161   - menu-filter: cancel `menu-filter` when the word ends `#D0974` 6ce2ad2
   1162   - menu-filter: improve highlight `#D0975` b89f39f
   1163 - isearch: show progress bar using unicode chars `#D0978` 51e600a
   1164 - main: support `ble-reload` ef51490
   1165 - complete: support `source:sabbrev` `#D0994` 5c9e579
   1166 - complete: clear menu on <kbd>C-g</kbd> `#D0995` e0f93a2
   1167 - vi_imap: support `bleopt keymap_vi_imap_undo=more` `#D0996` 50f8ad2
   1168 - util: support `bleopt vbell_align` and `ble-color-setface vbell{,_flash,_erase}` for vbell `#D0997` 325883e
   1169   - vbell: fix a bug that garbages remain on short messages just after longer messages `#D1010` 3e9ff85
   1170 - decode: support "bleopt decode_abort_char=28" `#D0998` b110cb9
   1171 - complete: support `visible-stats` and `mark-directories` `#D1006` b389b3b
   1172 - complete: support `mark-symlinked-directories`, `match-hidden-files` and `menu-complete-display-prefix` `#D1007` fd66194
   1173 - canvas: support `bleopt char_width_mode=auto` `#D1011` 3978df3
   1174 
   1175 ## Changes
   1176 
   1177 - prompt: support correct handling of escapes `#D0923` 22f9b56
   1178 - util (`ble/util/sleep`): adjust delay `#D0934` `#D0935` 5fd5cd6 ad1208b 188cd98
   1179 - complete: use candidates in menu if present `#D0939` 52eaf01
   1180   - complete: fix a bug that menu-complete is disabled after `menu-filter` `#D0951` 08cba07
   1181   - complete: fix a bug that wrong action is performed after `menu-filter` `#D0952` 08cba07
   1182   - complete: fix a bug that extra <kbd>TAB</kbd> is needed to enter `menu-complete` `#D0956` aa6bd73
   1183   - complete: fix a bug that candidates are not regenerated on function name completions `#D0961` bbea72e
   1184   - complete: fix a problem that the menu style is reset on `menu-complete` `#D0972` 47c28ff
   1185   - menu-filter: explicitly call `ble/complete/menu-filter` (<= bash-3.2) `#D0986` 1b14b11
   1186 - syntax: allow variable assignment in arguments of `eval` `#D0941` 2f2f0eb
   1187 - highlight: do not highlight overwrite modes when mark is active `#D0950` 4efe1a9
   1188   - highlight: disable `layer:menu_filter` (<= bash-3.2) `#D0987` 1b14b11
   1189 - complete: disable `auto-complete` inside the active range of `menu-filter` `#D0957`
   1190 - util (visible-bell): truncate long messages to fit into a line `#D0973` e55ff86
   1191 - edit: render prompt immediately on newline `#D0991` cdb8acb `#D1003` 5780154
   1192 - syntax: detect syntax errors of `CTX_CMDX1` immediately followed by terminating keywords `#D1001` 7ea02b7
   1193 - complete: improve support of `bind 'completion-ignore-case on'` `#D1002` 25ebc55
   1194 - complete: preserve original path specifications on ambiguous completion `#D1014` a39d1ac
   1195 - complete: append `,` instead of ` ` after completion in brace expansions `#D1015` df4feaa
   1196 
   1197 ## Fixes
   1198 
   1199 - main: workaround `set -evx` `#D0930` 698517d
   1200 - edit (widget `delete-horizontal-space`): fix a bug that spaces before the cursor is not removed `#D0932` 9290adb
   1201 - bleopt: fix a bug that false error messages are output on reload when `failglob` is set `#D0933` 64cdcba c62db26
   1202 - decode: fix a bug that <kbd>\\</kbd> cannot be input after reattach `#D0937` a46ada0
   1203 - reload: fix a bug that `PS1` is lost on reload with `--attach=prompt` `#D0938` 1107ca8
   1204 - main (`--attach=prompt`): workaround rewrite of `PROMPT_COMMAND` `#D0940` 863fd7b
   1205 - vi_nmap (`/`, `?`, `n`, `N`): fix search progress `#D0944` f20f840
   1206 - complete: fix a problem of slow ambiguous filename matching in nested directories `#D0960` 7b3ee55
   1207 - util: improve performance of `ble/{util/{mapfile,assign-array},string#split-lines}` (<= bash-3.2) `#D0985` ae176b2 `#D0989` 36b9a8f f199215
   1208 - sabbrev: fix a bug that sabbrev is disabled (<= bash-3.2) `#D0985` 840af29
   1209 - util (ble/util/msleep): suppress warnings from `usleep` `#D0984` 8e4180c
   1210 - util: fix a problem that <kbd>C-d</kbd> cannot be input in nested Bash 3.1 `#D0992` 88a1b0f
   1211 - edit: fix a bug of a redundant newline on `read -e` `#D0999` 700bc91
   1212 
   1213 ## Internal changes
   1214 
   1215 - [refactor] info: rename info type `raw` -> `esc` `#D0954` ac86f10
   1216 - [refactor] do not use brace expansions for `VARNAMES` `#D0955` 711e7df
   1217 - [refactor] `ble-{highlight,complete,syntax}` -> `ble/*` 7aaa660 ae6be66 8ea903c
   1218 - [refactor] `ble-edit/info/.construct-text` -> `ble/canvas/trace-text` `#D0973` e55ff86
   1219 - rename `ble/complete/action:*/getg` -> `ble/complete/action:*/init-menu-item` `#D1006` b389b3b
   1220 
   1221 <!---------------------------------------------------------------------------->
   1222 # 2019-02-09
   1223 
   1224 2018-10-05 -- 2019-02-09 (#D0858..#D0914) 6ed51e7..949e9a8
   1225 
   1226 ## New features
   1227 
   1228 - color (`ble-color-setface`): support various spec such as SGR params `#D0860` 82fe96d `#D0861` 257c16d `#D0864` 2eaf2a9
   1229 - syntax: `bleopt filename_ls_colors` に対応 `#D0862` c7ff302 `#D0863` 3c5bacf ec31aab
   1230 - vi_omap: support <kbd>v</kbd>, <kbd>V</kbd>, <kbd>C-v</kbd> `#D0865` 54942e0 `#D0866` a9a1638 `#D0867` d3d8ea3 `#D0868` eb848dc
   1231 - main: improve support of `[[ -o posix ]]` `#D0871` 07ae3cc `#D0872` 513c543
   1232 - main: do not load ble.sh when bash is started by `bash -i -c command` `#D0873` fc23a6d
   1233 - main: support `ble-update` `#D0874` fc45be6 `#D0875` 0b50974 `#D0891` d010300 `#D0910` 4743c00 2dc3a3f
   1234 - vi_nmap: support <kbd>C-d</kbd>, <kbd>C-u</kbd>, <kbd>C-e</kbd>, <kbd>C-y</kbd>, <kbd>C-f</kbd>, <kbd>next</kbd>, <kbd>C-b</kbd>, <kbd>prior</kbd> `#D0886`
   1235 - isearch: use previous needle for empty string search `#D0889` 362fce3
   1236 - vi_imap: add a function `ble-decode/keymap:vi_imap/define-meta-bindings` `#D0892` a21d22f
   1237 - progcomp: support `complete -I` for Bash 5.0 `#D0895` `#D0896`
   1238 - progcomp: support candidates which replace the original text before the cursor `#D0897` 41b8cbb
   1239 - progcomp: support `compopt -o nosort|noquote|plusdirs` `#D0898` cc48539
   1240 - edit: support <kbd>M-*</kbd> `#D0899` 3fd7d6e
   1241 - edit: support <kbd>M-g</kbd>, <kbd>C-x *</kbd>, <kbd>C-x g</kbd> `#D0902` 41797c6
   1242 - progcomp: support `COMP_WORDBREAKS` `#D0903` 7cfe425
   1243 - complete: support completion of tilde expansion `#D0907` b4fc40c `#D0908` 9fafdb3
   1244 - main: support `BLE_VERSION` and `BLE_VERSINFO` (suggested by cmplstofB) `#D0909`
   1245 - global: support `--help` for public functions `ble-*` (suggested by cmplstofB) `#D0911` 77d459d f4d03f6 1d191c7 1209ac6 `#D0913` 92d9038
   1246 
   1247 ## Changes
   1248 
   1249 - edit: change cursor position after <kbd>u</kbd> `#D0877` 9d5c945
   1250 - edit: handle panel layouts `#D0878`--`D0882` 6a26894 `#D0888` c8e0d28
   1251 - vi_nmap: support <kbd>z z</kbd>, <kbd>z t</kbd>, <kbd>z b</kbd>, <kbd>z .</kbd>, <kbd>z RET</kbd>, <kbd>z C-m</kbd>, <kbd>z +</kbd>, <kbd>z -</kbd> `#D0886`
   1252 - emacs: change M-m M-S-m from `beginning-of-line` to `non-space-beginning-of-line` f77f1aa
   1253 - bleopt: rename internal settings to `internal_{ignore_trap,suppress_bash_output,exec_type,stackdump_enabled}` fd042d8
   1254 - vi_nmap: change the behavior of <kbd>C-home</kbd>, <kbd>C-end</kbd> to match with those of vim 8682f98
   1255 - util (`ble/util/unlocal`): add workaround for Bash-5.0 `localvar_unset` `#D0904` 8677a71
   1256 - sabbrev: quote key in printing definitions by `ble-sabbrev` `#D0912` 2994d80
   1257 
   1258 ### Fixes
   1259 
   1260 - info: fix a bug that coordinates calculation breaks with Japanese text `#D0858` 67c77dc
   1261 - syntax (`extract-command`): fix a bug that extraction of nested commands always fails `#D0859` c3270f6
   1262 - complete: fix a bug that the settings `complete -c` does not work `#D0870` 1ca5386 82bb154
   1263 - main: fix a bug that the determination of `_ble_base` fails when loaded as `source ble.sh` without specifying the directory of `ble.sh` 201deae
   1264 - util: `ble/util/assign` が正しい戻り値を返さないバグの修正 bd14982
   1265 - util: `ble/util/assign-array` の入れ子の呼び出しで内容が混ざり合う問題の修正 bd14982
   1266 - progcomp: fix a bug that bash-completion does not work properly due to wrong `COMP_POINT` `#D0897` 41b8cbb
   1267 - global: fix leak variables `#D0900` 244f965 `#D0906` b8dcbfe 9892d63
   1268 - progcomp: fix a problem that completion functions can consume stdin `#D0903` 7cfe425
   1269 
   1270 ## Internal changes
   1271 
   1272 - global: properly quote rhs of `[[ lhs == rhs ]]` f1c56ab
   1273 - syntax: rename variables `BLE_{ATTR,CTX,SYNTAX}_*` -> `_ble_{attr,ctx,syntax}_*` 1fbcd8b (ref #D0909)
   1274 
   1275 <!---------------------------------------------------------------------------->
   1276 # 2018-10-05
   1277 
   1278 2018-09-24 -- 2018-10-05 (#D0825..#D0857 6ed51e7)
   1279 
   1280 ## 新機能
   1281   - highlight: 変数代入の右辺及び配列要素の着色に対応 `#D0839` 854c3b4
   1282   - nsearch: (非インクリメンタル)履歴検索に対応 <kbd>C-x {C-,}{p,n}</kbd> `history-{,substring-,n}search-{for,back}ward` `#D0843` e3b7d8b 0d31cd9 253b52e
   1283   - isearch: 検索前に選択状態でがあれば検索後に復元する `#D0845` 93f3a0f
   1284   - decode: 貼り付け時など大量の入力があった時に処理の進行状況を表示 `#D0848` c2d6100
   1285   - decode: 貼り付け時などの高速化の為に一括の文字列挿入に対応 (`batch-insert`) `#D0849` 48eeb03
   1286   - decode: `bleopt decode_isolated_esc=auto` でキーマップに応じて単独 <kbd>ESC</kbd> の取扱を切り替え `#D0852` 9b20b45 edd481c
   1287   - complete: `bleopt complete_{auto_complete,menu_filter}=` で自動補完・候補絞り込みの無効化に対応 `#D0852` 4425d12
   1288   - vi: テキストオブジェクト単語の再実装 (reported by cmplstofB) `#D0855` 9f2a973 ad308ae 3a5c456 6ebcb35
   1289   - vi: オペレータ `d` の特殊ルールに対応 `#D0855` fa0d3d3
   1290 
   1291 ## バグ・問題修正
   1292   - decode: `ble-bind -d` に於いて `-c` 及び `-x` の引数の引用符が二重になっている問題の修正 `#D0850`
   1293   - auto-complete: 構文エラーが自動補完により解決される時 <kbd>RET</kbd> でコマンド実行が抑止されない問題の修正 `#D0827` daf360e
   1294   - highlight: `shopt -s failglob` で配列の指示初期化子がエラー着色される問題の修正 (reported by cmplstofB) `#D0838` d6fe413
   1295   - complete: プログラム補完に対して曖昧補完が効かない時の対策 `#D0841` 713e95d
   1296   - isearch: ユーザ入力による割り込みで検索位置の記録に失敗していたバグの修正 `#D0843`
   1297   - isearch: キャンセル時に位置とマークが正確に復元されない問題の修正 `#D0847`
   1298   - isearch, dabbrev: 検索処理中にユーザが何か入力するまで現在行が更新されない問題の修正 `#D0847`
   1299   - decode: 未ロードのキーマップに対して `ble-bind -m -P` `ble-bind -m kmap -f kspecs -` が使えない問題の修正 66e202a
   1300   - auto-complete: <kbd>C-j</kbd> が単なる "確定" になっていたのを "確定して実行" に修正 `#D0852` 01476a7
   1301   - edit: <kbd>M-S-f</kbd>, <kbd>M-S-b</kbd> を束縛するべきところ <kbd>M-C-f</kbd>, <kbd>M-C-b</kbd> を束縛している箇所を修正 `#D0852` c68e7d7
   1302   - color: Bash 3.0 で算術式内の `<()` がプロセス置換と解釈される問題の対策 `#D0853` 520184d
   1303   - syntax: コメント上の単語が何故か除去されないバグの修正 (reported by cmplstofB) `#D0854` 641583f
   1304   - vi: Bash 3.1 及び 3.2 で <kbd>C-d</kbd> 受信の為のリダイレクトに失敗する問題の修正 `#D0857` d4b39b3
   1305 
   1306 ## 動作変更
   1307   - sabbrev, vi_imap: `sabbrev-expand` を <kbd>C-x '</kbd> ではなく <kbd>C-]</kbd> から束縛 `#D0825` e5969b7
   1308   - core: `bleopt` に設定名を指定子て設定内容を表示させる時、設定名の存在を確認する `#D0850` 725d09c
   1309   - isearch: <kbd>C-d</kbd> で現在の選択範囲を削除する様に変更 `#D0826` c3bb69e `#D0852` db28f74
   1310   - isearch: <kbd>C-m</kbd> (<kbd>RET</kbd>) で確定した時は選択範囲を解除する様に変更 `#D0826` c3bb69e
   1311   - decode: `ble-bind` のオプションを再構成 `#D0850` f7f1ec8 64ad962
   1312   - decode: 組み込みコマンド `bind` を上書きして `ble.sh` の動作が阻害されない様に引数をチェックして実行 `#D0850`
   1313   - complete: autoload `ble-sabbrev` (`core-complete.sh`), `ble-syntax:bash/is-complete` (`core-syntax.sh`) `#D0842` df0b769
   1314   - isearch: 編集関数 `isearch/accept-line` が <kbd>RET</kbd> 以外から束縛されていても <kbd>RET</kbd> を実行する様に変更 `#D0843`
   1315   - vi, [in]search: mark 名を整理 (`char`/`line`/`block`/`search` に接頭辞 `vi_` 付加し、新しい mark 名を `search` とする) `#D0843`
   1316   - edit: 関数名変更 `ble/widget/accept-single-line-or/accepts` → `ble-edit/is-single-complete-line` `#D0844`
   1317   - isearch: 空文字列で検索した時の振る舞いを再考 `#D0847` d05705e
   1318   - decode: 入力のキー復号の各種調整 `#D0850` dc013ad
   1319   - dabbrev: <kbd>C-m</kbd>, <kbd>RET</kbd> で展開終了、<kbd>C-j</kbd>, <kbd>C-RET</kbd> でコマンド実行 `#D0852` 01476a7
   1320 
   1321 ## 内部的変更
   1322   - isearch, dabbrev: `ble/util/fiberchain` による再実装 `#D0843`, `#D0846` 2c695cf bdf8072 95268c1
   1323   - edit, vi: 選択範囲の種類を表す mark 名を整理 a1a6272
   1324   - edit: 関数名変更 `ble/widget/accept-single-line-or/accepts` → `ble-edit/is-single-complete-line` `#D0844` 63ec9fe
   1325   - refactor: ファイルの整理 5e07e7f 1a03da2 673bd1d 55c4224 9ce944c 9a47c57 25487a7 5679ffc b7291a7
   1326   - refactor: 関数名・変数名の整理 `#D0851` d1b780c 9129c47 4d1181a
   1327 
   1328 <!---------------------------------------------------------------------------->
   1329 # 2018-09-23
   1330 
   1331 2018-09-03 -- 2018-09-23 (#D0766..#D0824 8584e82)
   1332 
   1333 ### 補完: 新機能
   1334   - complete: 自動補完において履歴からの検索に対応 `#D0766`, `#D0769` `#D0784` (fix)
   1335   - complete: 自動補完時の <kbd>M-f</kbd> <kbd>C-f</kbd> 等に対応 `#D0767`
   1336   - complete: `"$hello"` などの引用符中のパラメータ展開がある場合でも補完に対応 `#D0768`
   1337   - complete: 配列要素代入の右辺での補完に対応 `#D0773`
   1338   - complete: ブレース展開の途中での補完に対応 `#D0774`
   1339   - auto-complete: `ble/widget/auto_complete/accept-and-execute` 対応 `#D0811`
   1340   - complete: 補完関係の設定をする為の load hook の追加 `#D0812`
   1341   - complete: 種類を指定した補完に対応 `#D0820` `#D0819` (fix)
   1342   - complete: 静的略語展開に対応 (`ble-sabbrev key=value` で設定) `#D0820`
   1343   - complete: 動的略語展開に対応 `#D0820`
   1344 
   1345 ## 補完: バグ・問題点修正
   1346   - complete: 一意確定した直後の補完ですぐにメニュー補完に入るバグの修正 `#D0771`
   1347   - complete: `function fun [` 直後の補完で `[\[` が挿入される問題の修正 `#D0772`
   1348   - complete: 曖昧補完で補完を実行しようとすると入力済みの部分が削除されるバグの修正 `#D0775`
   1349   - complete: 自動補完が起動しなくなっているバグの修正 `#D0776`
   1350   - complete: プログラム補完関数が `failglob` で失敗するとシェルが終了する問題の対策 (reported by cmplstofB) `#D0781`
   1351   - complete: `failglob` の時コマンド補完候補に `*` が含まれてしまう問題の修正 (reported by cmplstofB) `#D0783`
   1352   - complete: 候補一覧にて入力済み範囲の強調が絞り込みにより無効化されるバグの修正 `#D0790`
   1353   - complete: 自動補完を抜けた後のマーク位置が誤っているバグの修正 `#D0798`
   1354   - complete: `for a in @` や `do @` の位置の補完でエラーメッセージが表示されるバグの修正 `#D0810`
   1355 
   1356 ## 補完: 動作変更
   1357   - complete: 入力済み部分の評価方法の内部変更 `#D0777`
   1358   - complete: 自動補完の着色の変更 `#D0780` `#D0792`
   1359   - complete: プログラム補完で提供するコマンドライン (`COMP_*`) にて、補完開始点に単語の切れ目を入れる様に変更 `#D0793`
   1360   - auto-complete: <kbd>C-RET</kbd> で補完を確定してコマンド実行 `#D0822`
   1361 
   1362 ## 他: 新機能
   1363   - edit: `IGNOREEOF` に対応 `#D0787`
   1364   - edit: コマンド `exit` にて、ジョブが残っている場合はユーザに尋ねて終了 `#D0789`, `#D0805` (bugfix)
   1365   - term: 256色対応のない端末での減色の実装 `#D0824`
   1366 
   1367 ## 他: バグ・問題点修正
   1368   - isearch: 非同期検索ができなくなっていたバグの修正
   1369   - color: `ble-color-setface` の遅延初期化順序のバグを修正 (reported by cmplstofB) `#D0779`
   1370   - decode: CentOS 7 で `LC_ALL=C.UTF-8` に対してエラーメッセージが出る問題の対策 `#D0785`
   1371   - edit: ジョブがある時の終了 <kbd>C-d</kbd> について `bleopt allow_exit_with_jobs` 対応 (request by cmplstofB) `#D0786`
   1372   - edit: Bash 3.* で <kbd>C-d</kbd> によるプログラム実行 (`ble-edit/exec:gexec`) が遅延するバグの修正
   1373   - syntax: Bash 3.2--4.1 の算術式バグによる関数定義の構文解析に失敗する問題の対策 `#D0788`
   1374   - highlight: `region` レイヤーの着色範囲が改行を跨ぐ場合に既定の着色になるバグの修正 `#D0791`
   1375   - isearch: 空の検索文字列による一致に <kbd>C-h</kbd> で戻った時に全体が選択されるバグの修正 `#D0794`
   1376   - decode: `failglob` の時 `ble-bind -d` に失敗する問題の修正 `#D0795`
   1377   - edit: `command-help` のコマンド名抽出に失敗するバグの修正 (reported by cmplstofB) `#D0799`
   1378   - syntax: 履歴展開の置換指示子の解析が正確でない問題の修正 (report by cmplstofB) `#D0800`
   1379   - edit: Bash 3.0 で履歴展開 `:&` が使えない問題の修正 `#D0801`
   1380   - idle: 負の `sleep` を試みてエラーメッセージが出る問題の修正 `#D0802`
   1381   - bind: `ble-detach` 時に、Bash 3.0 の <kbd>"</kbd> のバインディングを破壊するバグの修正 `#D0803`
   1382   - edit: `ble-detach` 直後にコマンドラインに設定される `stty sane` が表示されない問題の対策 `#D0804`
   1383   - core: Bash-3.0 で補完候補がない場合にエラーメッセージが表示されるバグの修正 `#D0807`
   1384   - edit: コマンド実行中にウィンドウサイズが変更された時にプロンプトが表示されてしまう問題の解消 `#D0809`
   1385   - edit: widget 内で `read -e` を使用した時・`read -e` がタイムアウトした時に表示が乱れる問題の解消 `#D0809`
   1386   - edit: `read -e` でタイムアウトが効かないバグの修正 `#D0809`
   1387   - term: 16色の端末で色が化けるバグの修正 `#D0823`
   1388 
   1389 ## 他: 動作変更
   1390   - edit: `read -e` がキャンセル・タイムアウトによって終了した時に入力文字列を灰色で再表示 `#D0809`
   1391   - decode: キーマップの既定の初期化を最初の `ble-bind` 時に確認する様に変更 `#D0813`
   1392   - core: `ble/util/clock` 導入 `#D0814`
   1393   - edit: `ble-edit/read -e -t timeout` において、タイムアウトをより高精度で処理 (`ble/util/clock`) `#D0814`
   1394   - color: `face` が定義されていない時のエラーメッセージの表示方法を変更 `#D0815`
   1395   - edit: コマンド実行時に現在のカーソル位置より下に表示されている端末の内容を上書きする様に変更 `#D0816`
   1396   - edit: `accept-line` において、ちらつき防止の為、実際のコマンド実行が伴わない時は info の再描画を行わない `#D0816`
   1397   - edit: `ble/widget/history-expand-line` は <kbd>C-RET</kbd> ではなく <kbd>M-^</kbd> から束縛される様に変更 `#D0820`
   1398   - edit: `ble/widget/magic-space` で履歴展開が行われなかった時、現在位置で静的略語展開を試みる様に変更 `#D0820`
   1399   - isearch: <kbd>RET</kbd> でコマンド実行ではなく検索を終了するだけに変更。<kbd>C-RET</kbd> でコマンド実行 `#D0822`
   1400 
   1401 ## 他
   1402   - Makefile: 依存ファイルを `.PHONY` target として出力 `#D0778`
   1403   - core: `ble/util/assign` をリエントラントに修正 `#D0782`
   1404   - 議論 complete: `#D0770` edit: `#D0796` vi: `#D0796`
   1405   - `blerc` の更新
   1406 
   1407 ## 以下は widget 名変更の一覧
   1408   - `menu_complete/accept`              → `menu_complete/exit`
   1409   - `auto_complete/accept`              → `auto_complete/insert`
   1410   - `auto_complete/accept-on-end`       → `auto_complete/insert-on-end`
   1411   - `auto_complete/accept-word`         → `auto_complete/insert-word`
   1412   - `auto_complete/accept-and-execute`  → `auto_complete/accept-line`
   1413   - `isearch/accept`                    → `isearch/accept-line`
   1414 
   1415 <!---------------------------------------------------------------------------->
   1416 # 2018-09-02
   1417 
   1418 2018-07-29 - 2018-09-02 (#D0684..#D0765 0c28ed9)
   1419 
   1420 ## 補完: 新機能
   1421   - complete: 曖昧補完 `#D0707` `#D0708` `#D0710` `#D0713` `#D0743` (fix)
   1422   - complete: Readline 設定 `completion-ignore-case` に対応 `#D0709` `#D0710`
   1423   - complete: `ble/cmdinfo/complete:$command_name` 対応 `#D0711`
   1424   - complete: `path:...` などと入力した時の続きの補完に対応 `#D0715`
   1425   - complete: 引用符内のエスケープなどを適切に処理する `#D0717`
   1426   - complete: 自動補完に対応 `#D0724`, `#D0728`, `#D0734` & `#D0735` (vim-mode), `#D0766` (history)
   1427   - complete: カーソルの右側に補完結果の一部が含まれる時にスキップする機能 (`bind set skip-completed-text`) `#D0736`
   1428   - complete: 引用符の中で補完した時に引用符を閉じる機能 `#D0738`
   1429   - complete: 算術式内部での変数名の補完に対応 `#D0742`
   1430   - complete: 候補一覧表示の整列と着色 `#D0746` `#D0747` `#D0762` `#D0765`
   1431   - complete: menu-completion (メニュー補完) 対応 `#D0749` `#D0757` `#D0764`
   1432   - complete: menu-filter (候補絞り込み) 対応 `#D0751`
   1433   - complete: vi_cmap に於ける補完 `#D0761`
   1434 
   1435 ## 補完: バグ修正・対策
   1436   - complete: Cygwin でのコマンド名補完に於いて `.exe` の途中まで入力した時に正しく補完できない問題の修正 `#D0703`
   1437   - complete: `complete` によって登録されたプログラム補完に対して変数 `COMP_*` が正しく設定されない問題の修正 `#D0711`
   1438   - complete: `"` や `'` を含むファイル名の補完が正しくできない問題の修正 `#D0712` `#D0714`
   1439   - complete: 補完中に特殊キーを入力しても中断しない問題の解消 `#D0729`
   1440   - complete: クォートを認識しないプログラム補完関数に対する対策 `#D0739`
   1441   - complete: 引数の途中からのプログラム補完の不整合の修正 `#D0742` `#D0744`
   1442   - complete: パラメータ展開 `${var}` 直後からの補完が正しく実行できる様に修正 `#D0742`
   1443 
   1444 ## 補完: 動作変更
   1445   - complete: 補完候補生成直前の `shopt -s force_fignore` を参照して候補を制限する様に変更 `#D0704`
   1446   - complete: `FIGNORE` はエスケープされた挿入文字列に対してではなくて、候補文字列に対して判定する様に変更 `#D0704`
   1447   - complete: 関数名補完を `/` で区切られた単位で行う `#D0706` `#D0724` (曖昧一致の時は抑制)
   1448   - complete: パラメータ展開で厳密一致で一意確定の時は他の補完文脈を使うように変更 `#D0740`
   1449   - complete: パラメータ展開の補完後に挿入する文字を文脈に依存して変更 `#D0741`
   1450   - complete: パラメータ展開の直後に補完で挿入する際のエスケープを文脈に依存して変更
   1451   - complete: プログラム補完による生成候補でディレクトリ名を省略 `#D0755`
   1452 
   1453 ## 他: 新機能
   1454   - edit (`RET`): 文法的に不完全のときに改行を挿入 `#D0684`
   1455   - core (`ble/util/idle`): 簡易タスクスケジューラの実装 `#D0721`
   1456   - core: add a function `ble/function#try` `#D0725`
   1457   - idle: `ble/util/idle` でバックグラウンドジョブ待ち機能を実装 `#D0731` `#D0745` (history bugfix)
   1458   - base: `--attach=prompt` 対応 `#D0737`
   1459   - base: 初回初期化時の順序の変更と過程の info による表示
   1460   - decode: modifyOtherKeys 対応の改善 `#D0752` `#D0756` `#D0758` `#D0759`
   1461   - core (`ble/util/assing`): 第3引数以降にコマンドに対する引数を指定できるように変更 `#D763`
   1462 
   1463 ## 他: バグ修正・対策
   1464   - highlight: 単語着色が乱れるバグの修正 `#D0686`
   1465   - syntax: bash-3.2 以下で `_ble_syntax_attr: bad array subscript` のエラーが出るバグの修正 `#D0687`
   1466   - prompt: PS1 で \v が空文字列になるバグの修正 `#D0688`
   1467   - highlight: 上書きモードにおいてコマンドをキャンセルしても `disabled` レイヤーの着色が無視されるバグの修正 `#D0689`
   1468   - core (ble/term/visible-bell): 横幅の計算を誤っているバグの修正 `#D0690`
   1469   - decode: "set -o vi/emacs" で編集モードを切り替えた直後に "stty" が変になる問題の修正 `D0691`
   1470   - core: LANG=C とすると動かなくなる問題の対処 `#D0698` `#D0699` `#D0700`
   1471   - history: Cygwin で履歴の初期化に時間がかかる問題の対策 `#D0701`
   1472   - history: bashrc 読み込み直後に謎の待ち時間が発生する問題の対策 `#D0702`
   1473   - emacs: 貼り付け (bracketed paste) で文字列が二重に挿入されるバグの修正 `#D0720`
   1474   - main: POSIXLY_CORRECT が設定されている時の対策 `#D0722` `#D0726` `#D0727`
   1475   - edit: POSIXLY_CORRECT を用いた組み込みコマンド上書き対策 `#D0722`
   1476   - decode: 連想配列に依る実装のバグを修正し bash-4.0, 4.1 においても連想配列を使用 '#D0730'
   1477   - decode: `ble-bind -c` でシェルの特殊文字を含むコマンドが正しく実行できないバグの修正
   1478   - edit: 履歴項目の数が倍増するバグの修正 `#D0732`
   1479   - vi: キーボードマクロで特殊キーが再生されないバグの修正 `#D0733`
   1480   - isearch: 現在位置の表示時の 0 除算のバグの修正
   1481   - vi: `!!` をキャンセルしても操作範囲を示す着色が消えないバグの修正 `#D0760`
   1482 
   1483 ## 他
   1484   - refactor: `#D0725` `#D0750` `#D0753` `#D0754`
   1485   - bash-bug: Bash に対するバグ報告 `#D0692` `D0695` `D0697`
   1486 
   1487 <!---------------------------------------------------------------------------->
   1488 # 2018-03-15
   1489 
   1490 2018-03-15 (#D0644..#D0683 7d365d5)
   1491 
   1492 ## 新機能
   1493   - undo: vi-mode `u` `<C-r>` `U` (`#D0644` `#D0648`); emacs `#D0649`; `#D0662`
   1494   - vi-mode (nmap/xmap): `f1` で `command-help` 呼び出し
   1495   - vi-mode (nmap): `C-a` `C-x` 対応 (nmap `#D0650`, xmap `#D0661`)
   1496   - vi-mode (operator): 各種オペレータ対応 `#D0655` (`gq`, `gw` `#D0652`; `!` `#D0653`; `g@` `#D0654`)
   1497   - vi-mode (operator): 追加入力のあるオペレータで作用対象を着色 `#D0656`
   1498   - vi-mode (registers): registers `"[0-9%:-]` `#D0666` `#D0668`, `:reg` `#D0665`
   1499   - vi-mode (smap): 選択モード `#D0672`
   1500   - emacs: 主要なコマンドで引数に対応 `#D0646`
   1501   - emacs: 複数行モードの時にモード名を表示。引数も表示。 `#D0683`
   1502   - edit: `safe` keymap
   1503   - edit: 絵文字の文字幅 `bleopt emoji_width=2` `#D0645`
   1504   - core: 誤った `PATH` に対する対策 `#D0651`
   1505 
   1506 ## 動作修正
   1507   - vi-mode (nmap/xmap/omap `<paste>`): 引数を無視するように変更
   1508   - vi-mode (map `/` `?` `n` `N`): 検索の一致の仕方を vim と同様のものに変更 `#D0658`
   1509   - vi-mode (omap): `g~?` で検索して一致した範囲まで大文字・小文字を切り替えるように変更 `#D0659`
   1510   - vi-mode (map): 最終行付近で `+` `_` `g_` などを呼び出したときの振る舞いを vim と同様のものに変更 `#D0663`
   1511   - vi-mode (xmap): テキストオブジェクト `[ia]['"]` の xmap での正しい振る舞い `#D0670`
   1512   - vi-mode (nmap): `Y` で行頭に動かないように変更 `#D0673`
   1513   - vi-mode (xmap): 矩形範囲抽出の効率化 `#D0677`
   1514   - core: `ble.sh` ロード時間の改善 `#D0675`, `#D0682`, (遅延読込 `#D0678` `#D0679` `#D0680`, 裏で履歴読込 `#D0681`)
   1515 
   1516 ## バグ修正
   1517   - vi-mode (omap): `cw` や `y?` が動かなくなっていたバグの修正
   1518   - vi-mode: マクロで記録される内容に空白が挿入されるバグの修正 `#D0667` (テスト追加 `#D0669`)
   1519   - vi-mode: 行指向の貼り付けが動かなくなっていたバグの修正 `#D0674`
   1520   - complete: コマンド名によって第一引数の補完が正しく実行されないことがあるバグの修正 `#D0664`
   1521   - syntax: ヒアストリングで $ret を指定するとエラーメッセージが現れたバグの修正 `#D0660`
   1522   - syntax: bash-3.0 でコマンドの着色が常にエラーになっていたバグの修正 `#D0676`
   1523   - decode: ble-decode-unkbd があらゆる文字について ESC を返す様になっていたバグの修正 `#D0657`
   1524   - Makefile: 削除したファイル isearch.sh が要求されるバグの修正
   1525   - Makefile: 最新の gawk で動かないバグの修正
   1526 
   1527 <!---------------------------------------------------------------------------->
   1528 # 2017-12-03
   1529 
   1530 ## 新機能
   1531   - edit, vi-mode: bracketed paste mode に対応 `#D0639`
   1532 
   1533 ## 動作修正
   1534   - core: 端末の状態設定・復元とカーソル形状の内部管理 `#D0638`
   1535     - 外部コマンドを呼び出すときに既定のカーソル形状にする
   1536     - 外部コマンドから戻ったときにカーソル形状を復元する
   1537   - syntax (extract-command): より下の構文階層にいてもコマンドを見つけられるように修正 `#D0635`
   1538     これによりリダイレクトの単語などの上でも `command-help` (nmap `K`, emacs `f1`) が動くように。
   1539   - syntax (チルダ展開): 変数代入の形式を持つ通常単語内部でのチルダ展開に対応 `#D0636`
   1540   - syntax: [...] 内部でチルダ展開が起こったとき [...] は意味を失う `#D0637`
   1541   - vi-mode (cmap `<C-w>`): imap `<C-w>` と同様に vim の動きに変更
   1542 
   1543 ## バグ修正
   1544   - complete: 補完候補がない時に空文字列で確定するバグの修正 `#D0631`
   1545   - complete, highlight: `failglob` 周りのバグの修正 (3) `#D0633` `#D0634`
   1546   - vi-mode: `ret` グローバル変数が汚染されていたバグの修正 `#D0632`
   1547   - highlight: 読み取り専用の変数名を入力するとエラーメッセージが出るバグの修正
   1548   - decode: `__defchar__` から呼び出された widget が 125 を返したとき
   1549     `__default__` から呼び出された widget にキー列が渡されないバグの修正
   1550   - core: set -u にすると全く動かないバグの修正 `#D0642`
   1551   - edit: ble.sh ロード中に `read -e` が動かないバグの修正 `#D0643`
   1552 
   1553 <!---------------------------------------------------------------------------->
   1554 # 2017-11-26
   1555 
   1556 ## バグ修正
   1557   - general: failglob で問題が生じるバグの修正 `#D0630`
   1558   - keymap/vi (nmap q): bash-3.0 で動かなかったバグの修正
   1559   - keymap/vi (cmap): C-d で終了してしまうバグを修正 `#D0629`
   1560   - edit (ble/widget/command-help): エイリアスの上でヘルプを実行しようとすると無限ループになるバグを修正
   1561   - edit (ble/util/type): "-" で始まる名前のコマンドの種類の判定に失敗し着色されなかったバグの修正
   1562   - complete: 変数代入の右辺やリダイレクト先で補完できないことがあるバグの修正 `#D0627`
   1563   - complete: 補完する単語にパラメータ展開が含まれるとき ble.sh のローカル変数の値を参照している問題の修正 `#D0628`
   1564 
   1565 ## 動作変更
   1566   - bind/decode: 孤立 ESC の読み取り方法を変更。<C-q><C-[> で単体 <C-[> が入力されるように修正
   1567   - bind/decode: input_encoding=C の時の孤立 ESC および C-@ の読み取りに対応
   1568   - complete: 重複して列挙される候補を統合する `#D0606`
   1569   - complete: 厳密一致するディレクトリ名が何故かコマンド候補に現れる問題の修正 `#D0608`
   1570   - edit (command-help): 幾つかの組み込みコマンド・予約語について man bash の正しい位置に移動するように修正 `#D0609`
   1571   - edit (command-help): クォートなどを除去してからコマンドのヘルプを探索するように変更 `#D0610`
   1572   - core: 条件コマンドの比較で右辺をクォートし忘れていた箇所を修正 `#D0618`
   1573   - highlight: `shopt -s failglob` の時、失敗する単語にエラー着色をする `#D0630`
   1574 
   1575 ## 構文解析変更
   1576   - syntax: `> a.txt; echo` は構文エラーではないことに対応 `#D0591`
   1577   - syntax: 変数代入・リダイレクトの後では予約語は意味を失いコマンドとして扱われることに対応 `#D0592`
   1578   - syntax: `time` や `time -p` は構文的に正しいことに対応 `#D0593`
   1579   - syntax: `echo $(echo > )` などの `>` の引数がない構文エラーにより `$()` が閉じず別の構文エラーを引き起こしていたのを抑制 `#D0601`
   1580   - syntax: `function hello (())` は bash-4.2 未満では構文エラーとして扱うように変更 `#D0603`
   1581   - syntax: `time -p -- command` を独立した文脈で解析するように変更 `#D0604`
   1582     - complete: これにより `time` の引数のコマンド補完ができなかった問題は解消した `#D0605`
   1583   - syntax: extglob 内部のプロセス置換 `@(<(echo))` に対応 `#D0611`
   1584   - syntax: `[...]` によるパターンの解析に対応 `#D0612`
   1585   - syntax: 変数代入の右辺にある不活性になった extglob の入れ子 `@(@())` も不活性にする `#D0613`
   1586   - syntax: `shopt -u extglob` の時でも `*` や `?` を着色する `#D0616`
   1587   - syntax: ブレース展開の着色に対応 `#D0622`
   1588   - syntax: チルダ展開の着色に対応 `#D0626`
   1589   - syntax: `for var in args...` の `args` におけるリダイレクトの禁止 `#D0623`
   1590   - highlight: ヒアストリングの場合はパス名展開・ブレース展開を行わない `#D0624`
   1591   - highlight: リダイレクト先ファイル名が複数語に展開されたらエラー着色 `#D0625`
   1592 
   1593 ## 構文解析修正
   1594   - syntax: `$({ echo; })` や `$(while false; do :; done)` において `}`, `done` 等の後にコマンドがないと構文エラーになっていたバグの修正 `#D0593`
   1595   - syntax: `-` で始まる名前のコマンド・関数名が正しく着色されないバグの修正 `#D0595`
   1596   - syntax: `if :; then :; fi $(echo)` などの構文エラー着色が実行されないバグの修正 `#D0597`
   1597   - syntax: 先読みによる不整合が起こるバグの修正・先読みの枠組みの整備 `#D0601`
   1598     - プロセス置換周りで部分更新により不整合が生じるバグを修正
   1599     - `function hello (())` としておいて `) (` を挿入して `function hello () (())` にすると不整合が生じるバグを修正 `#D0602`
   1600   - syntax: 途中で `shopt -u extglob` にしても `_ble_syntax_bashc` が更新されないバグの修正 `#D0615`
   1601 
   1602 <!---------------------------------------------------------------------------->
   1603 # 2017-11-09
   1604 
   1605 ## 新機能
   1606   - vi-mode (nmap): `*` `#` `qx...q` `@x`
   1607   - vi-mode (cmap): 履歴
   1608   - core: bleopt 変数 `pager` (既定値 `''`) に対応。`ble.sh` の使うページャとして `${bleopt_pager:-${PAGER:-適当に探索}}` を使用する。
   1609   - vi-mode (nmap `K`): `ble/cmdinfo/help:$cmd`, `ble/cmdinfo/help` に対応。
   1610 
   1611 ## バグ修正
   1612   - vi-mode (cmap `<C-[>`): コマンドラインモードをキャンセルするキーマップが `bell` で上書きされていたバグの修正
   1613   - decode: `shopt -s failglob`, `shopt -s nullglob` で `unset` が正しく動かないバグの修正
   1614   - vi-mode (nmap `K`): `MANOPT=-a` で操作できなくなるバグの修正
   1615 
   1616 ## 動作変更
   1617   - edit (`ble/widget/command-help`), vi-mode (nmap `K`): カーソル位置のコマンドの `man` を表示するように変更
   1618   - base: キャッシュディレクトリ・一時ディレクトリの決定で、それぞれ `XDG_CACHE_HOME`, `XDG_RUNTIME_DIR` を参照するように変更
   1619   - Makefile: インストール先ディレクトリで、`XDG_DATA_DIR` を参照するように変更
   1620   - isearch: 実際に必要になるまでコマンド履歴のロードを遅延するように変更
   1621   - vi-mode (nmap `K`): 組み込みコマンド・キーワードは `man bash` を表示する。
   1622   - vi-mode (nmap `K`): シェル関数は関数定義を表示する。
   1623 
   1624 <!---------------------------------------------------------------------------->
   1625 # 2017-11-05
   1626 
   1627 ## 新機能
   1628   - vi-mode (exclusive motion): `:help exclusive-linewise` 特別規則 (exclusive -> inclusive, exclusive -> linewise) に対応
   1629   - vi-mode (omap): `C-c` `C-[` で明示的にキャンセル
   1630   - vi-mode: keymap/vi_test.sh 追加。regression が酷いので vi-mode の動作テストを自動化
   1631   - complete: bleopt 変数 `complete_stdin_frequency` (既定値 `50`) 追加
   1632 
   1633 ## 動作変更
   1634   - vi-mode (nmap `e`, `E`): 移動先が最終行の最後の文字の空白のとき、omap なら bell を鳴らさないように変更
   1635   - vi-mode (omap/xmap `<space>`, `<back>`, `<C-h>`): 改行の数え方を変更
   1636   - vi-mode (nmap `cw`, `cW`): 単語の最後の文字、および空白の上にいるときの振る舞いの変更
   1637   - decode (ble-bind): `ble-bind -D` でキーマップの内部状態も出力するように変更
   1638   - term: `_ble_term_SS` の既定値を空文字列に変更
   1639   - complete: `shopt -s no_empty_cmd_completion` では補完を (コマンドの補完以外も) 全く行わないように変更
   1640   - edit (ble/widget/exit): 編集中の文字列が残っているとき、灰色で再描画してから exit するように変更
   1641 
   1642 <!---------------------------------------------------------------------------->
   1643 # 2017-11-03
   1644 
   1645 ## 破壊的変更
   1646   - vi-mode (widget): 名称変更 blw/widget/vi-insert/* → ble/widget/vi_imap/*
   1647   - vi-mode (bleopt 変数): 名称変更 bleopt keymap_vi_normal_mode_name → keymap_vi_nmap_name
   1648   - vi-mode (imap): vi-insert/magic-space 廃止。代わりに magic-space を直接用いる。
   1649 
   1650 ## 新機能
   1651   - vi-mode (xmap): `o` `O`
   1652   - vi-mode (nmap): `.` 取り敢えず完成?
   1653   - vi-mode (xmap/nmap): `gv`
   1654 
   1655 ## バグ修正
   1656   - vi-mode (mark `` `x `` `'x`): オペレータが呼び出されないバグの修正
   1657   - vi-mode (txtobj `[ia]w`): 英数字と _ の連続ではなく英字と _ だけの連続を単語としていたバグの修正
   1658   - vi-mode (imap): `{count}i...<C-[>` において `<C-q>x` `<C-v>x` が正しく繰り返されなかったバグの修正
   1659   - vi-mode (imap): `{count}i...<C-c>` において繰り返しが有効になっていたバグの修正
   1660   - vi-mode (nmap `{N}%`): 目的の行に移動しなくなっていたバグの修正
   1661   - vi-mode (nmap `_`): `d_` 及び `d1_` が linewise になっていないバグの修正
   1662   - vi-mode (xmap `I` `A`): 動かなくなっていたバグの修正
   1663   - vi-mode (xmap `I` `A`): 実行後のカーソル位置がずれていたバグの修正
   1664   - vi-mode (xmap `I` `A` `c` `s` `C`): 矩形挿入の後の編集範囲 `` `[`] `` から1行目が抜けているバグの修正
   1665   - vi-mode (xmap `?`): 検索 `?` が operator `g?` になっているバグの修正
   1666   - vi-mode (xmap `/` `?` `n` `N`): ビジュアルモードの選択範囲が検索の一致範囲で上書きされるバグの修正
   1667   - vi-mode (xmap `/` `?` `n` `N`): 現在の履歴項目の中で一致しない時、別の履歴項目にビジュアルモードのまま移動するバグの修正
   1668   - lib/vim-surround (nmap `cs` `cS`): nmap `.` 対応時に引数とレジスタが効かなくなっていたバグの修正
   1669   - lib/vim-surround (xmap `S`): `v` によるビジュアルモードで改行が前後に挿入されていたバグの修正
   1670 
   1671 ## 動作変更
   1672   - vi-mode (imap `<C-w>`): vim の単語区切り (`w`) による削除に変更
   1673   - vi-mode (nmap `[rRfFtT]x`): `<C-[>` でキャンセルするように変更
   1674   - vi-mode (nmap `w` `b` `e` `ge`): 非英数字 ASCII の連続と、Unicode 文字の連続 をそれぞれ別の単語と扱うように変更
   1675   - vi-mode (xmap `c` `s` `C`): `I`, `A` と同様の矩形挿入に対応
   1676 
   1677 <!---------------------------------------------------------------------------->
   1678 # 2017-10-30
   1679 
   1680 ## 破壊的変更
   1681   - vi-mode: キーマップの名称変更 vi_command -> vi_nmap, vi_insert -> vi_imap
   1682   - vi-mode: 一部の widget の名称変更
   1683     - ble/widget/{no,}marked -> ble/widget/@{no,}marked
   1684     - ble/widget/vi-command/* (一部) -> ble/widget/vi_nmap/*
   1685   - vi-mode: ble/widget/vi-insert/@norepeat 廃止。別の方法 (_ble_keymap_vi_imap_white_list) を用いる。
   1686 
   1687 ## 新しい機能
   1688   - vi-mode (nmap): . は実装途中 (現状 nmap/omap におけるオペレータ経由の変更のみ記録)
   1689   - vi-mode (mode): bleopt 変数 `term_vi_[inoxc]map`
   1690   - decode: 孤立 ESC のタイムアウトに対応
   1691   - edit: shopt -s histverify, shopt -s histreedit に対応 #D0548
   1692 
   1693 ## バグ修正
   1694   - vi-mode (xmap): `p`, `P` が正しく動作しないバグを修正
   1695   - vi-mode (imap): 挿入モードに入るときに指定した引数 (繰り返し回数) が常にキャンセルされていたバグの修正
   1696   - vi-mode (txtobj; nmap `gg`, `G`): レジスター指定が消失していたバグの修正
   1697   - lib/vim-surround (nmap ds): 引数が内部使用のオペレータ `y`, `d` に正しく渡っていなかったバグの修正
   1698   - prompt: `PROMPT_COMMAND` で設定された `PS1` が永続化されていなかったバグの修正
   1699   - decode: bind -x で曖昧な登録があって bash_execute_unix_command エラーになっていた問題の修正 #D0545
   1700   - decode: `vi.sh`, `emacs.sh` において `default.sh` が多重に呼び出されていた無駄の修正 #D0546
   1701   - core: bash-3.0 において ble/util/assign が壊れていたバグの修正
   1702 
   1703 ## 動作変更
   1704   - vi-mode (nmap `x`, `<delete>`, `s`, `X`, `C`, `D`): support registers
   1705   - source ble.sh において無事にロードされたときに終了ステータス 0 を返すことを保証
   1706   - widget marked, nomarked を @marked, @nomarked に改名。元の widget は非推奨 (削除予定)
   1707   - ble.sh: Linux 以外でも (`readlink -f` が動かないときも) シンボリックリンクを通したロードに対応 #D0544
   1708 
   1709 <!---------------------------------------------------------------------------->
   1710 # 2017-10-22
   1711 
   1712 ## 新機能
   1713   - vi-mode (mark): `mx` <code>`x</code> <code>'x</code> (`x` = <code>[][<>`'a-zA-Z"^.]</code>)
   1714   - vi-mode (nmap): `gi` `<C-d>` (空文字列のとき exit) `"x` (registers)
   1715   - vi-mode (xmap): `I` `A` `p` `P` `J` `gJ` `aw` `iw`
   1716   - lib/vim-surround.sh: nmap `yS` `ySS` `ySs` `cS`, xmap `S` `gS`
   1717   - タブ・インデントの制御
   1718     - bleopt tab_width= (タブの表示幅)
   1719     - bleopt indent_offset=4 (`>` や `<` のインデントの幅)
   1720     - bleopt indent_tabs=1 (`>` や `<` のインデントにタブを用いるかどうか)
   1721     - 既定のインデントの幅は 8 から 4 に変更
   1722 
   1723 ## バグ修正
   1724   - vi-mode: 挿入モードに繰り返し回数を指定したとき `ESC ?` も一緒に繰り返されていたバグの修正
   1725   - vi-mode: オペレータ `g?` が動かなくなっていたのを修正
   1726   - vi-mode (nmap `/` `?`): 検索対象の入力中に `C-c` してもキャンセルされないバグの修正
   1727   - vi-mode (xmap `r` (visual char/line)): 全体を置換したものが選択範囲に挿入されていたバグの修正
   1728   - vi-mode (xmap `$`): 行末で `$` をしたときに表示が更新されないバグの修正
   1729   - vi-mode (motion `0`): オペレータを認識していなかったバグを修正
   1730   - isearch: 一度一致したら同じものに一致し続けるバグを前回の `/` `?` `n` `N` 対応の際に埋め込んでいたので修正
   1731   - complete: `complete -F something -D` で登録されている補完関数が正しく実行されていなかったのを修正
   1732   - prompt: PROMPT_COMMAND によって設定された PS1 を拾っていなかったバグを修正
   1733   - textarea: 端末の下部で複数行編集時に `C-z` (`fz`) すると描画高さを正しく確保できていないバグの修正
   1734 
   1735 ## 動作変更
   1736   - vi-mode (operator `<` `>`): Visual block での正しい振る舞い
   1737   - vi-mode (nmap `:` `/` `?`): 文字列入力中に空文字列で DEL or C-h することでキャンセルできるように修正
   1738   - vi-mode (nmap `J`, `gJ`): 引数に対応
   1739   - vi-mode (nmap `p`): 最後の行で挿入するときに余分な行が入らないように修正
   1740   - vi-mode (xmap `Y` `D` `R`): 記録するビジュアルモードの種類を修正
   1741   - lib/vim-surround.sh: タグ名入力中に '>' で確定するように修正
   1742   - widget (.SHELL_COMMAND): 実行しないコマンドに色がついているのはややこしいのでグレーアウトする様に変更
   1743 
   1744 ## 他の変更
   1745   - magic-space: 空白を挿入してから履歴展開していた順番を逆転
   1746 
   1747 ----
   1748 
   1749 # 2015-03-06..2017-10-09 (Git Commit Log)
   1750 
   1751 ## 2017-10-09
   1752 * keymap/vi: support specialized handling of keys for cmap
   1753   - vi (nmap / ?): treatment of C-h and DEL on input of search targets
   1754   - vim-surround.sh (nmap ys cs): treatment of > on input of tag names
   1755 
   1756 ## 2017-10-07
   1757 * keymap/vi_xmap: add tentative text object implementation
   1758 * lib/vim-surround: accept user input of tag names with the replacement being t, T, <
   1759 * keymap/vi_command: support search / ? n N
   1760 
   1761 ## 2017-10-05
   1762 * keymap/vi_command: fix behavior of yy, dd, D, etc. on the last line with count arg
   1763 * keymap/vi_xmap: support x <delete> C D X R Y
   1764 * keymap/vi_xmap: support r s
   1765 * keymap/vi-command: support : and few commands
   1766 * ble-core: fix a bug that conditions for assotiative arrays are inverted
   1767 
   1768 ## 2017-10-04
   1769 * [refactor] ble-edit (ble-edit/render -> ble/textarea): support "ble/textarea#{save,restore,clear}-state"
   1770 * [refactor] ble-edit (text/update/positions -> ble/textmap): support any time updates of text positions
   1771 * keymap/vi_command: support _ g0 g<home> g^ g$ g<end> gm go g_ ge gE
   1772 * check: fix "local lines=()" in vi_digraph.sh and update "check"
   1773 * (ble-highlight-layer:region): fix a bug that the "region" face is sometimes applied to intervals between selections
   1774 
   1775 ## 2017-10-03
   1776 * keymap/vi (visual mode): support previous selections
   1777 * keymap/vi (nmap p, P for block): convert HTs under inserting points to spaces
   1778 * (ble-decode-key/dump): fix a bug that pathname expansions internally occurred
   1779 * ble-core: add ble/string#split-lines
   1780 * keymap/vi (visual block): improve performance of block extraction
   1781 * keymap/vi_command (linewise operator d): go to the previous line on deleting the last line
   1782 * keymap/vi (operator d c g~ gu gU g?): support block
   1783 * keymap/vi (nmap p, operator y): support block
   1784 
   1785 ## 2017-10-02
   1786 * keymap/vi_xmap: support count arg for operators
   1787 * keymap/vi_command: fix a bug that linewise < > operators produce an error
   1788 * keymap/vi_command: perform EOL fix on history traveling with normal mode
   1789 * keymap/vi_xmap: support block selection
   1790 
   1791 ## 2017-10-01
   1792 * keymap/vi_xmap: support visual mode swithing
   1793 * keymap/vi: support visual mode
   1794 
   1795 ## 2017-09-28
   1796 * ble-edit: add a condition to accept-single-line-or
   1797 * keymap/vi_command: support gj gk
   1798 
   1799 ## 2017-09-27
   1800 * ble-edit: restore BASH_REMATCH
   1801 * ble-edit: do not execute pasted multiline texts
   1802 * ble-edit: support scrolling
   1803 * bleopt: implement value checking on assignment
   1804 
   1805 ## 2017-09-24
   1806 * ilb/vim-surround.sh: do not refer bleopt "vim_surruond_{char}" for digit replacement char
   1807 * keymap/vi: show configurable string (defaulted to be ~) on the normal mode
   1808 * keymap/vi_command: support % N%
   1809 * keymap/vi_command: support indentation for o O
   1810 * keymap/vi_command: reimplement text object is as
   1811 * keymap/vi (linewise-range.impl): fix a bug that the line ranges are reverted, fix behavior to go to nol
   1812 
   1813 ## 2017-09-23
   1814 * keymap/vi_command: support text object ip ap
   1815 * keymap/vi_command: support text object is as
   1816 * keymap/vi_insert: support indentation for C-m, C-h, DEL
   1817 * ble-edit: erase garbage input echo during initialization of ble.sh
   1818 * ble-edit (bleopt char_width=emacs): fix a bug that U+2000 - U+2600 are always treated as width 1
   1819 * keymap/vi: fix a bug that selection is not cleared on entering the normal mode during isearch
   1820 
   1821 ## 2017-09-22
   1822 * keymap/vi_command (r, gr): highlight on waiting replacement
   1823 * keymap/vi_command: support text object it at
   1824 
   1825 ## 2017-09-20
   1826 * ble-edit/exec: fix handling of $? and $_ and add a workaround for "set -o verbose"
   1827 
   1828 ## 2017-09-18
   1829 * lib/vim-surround: support configurable replacements with bleopt vi_surround_45:=tmpl vi_surround_q:=tmpl
   1830 * (bleopt): support the form "var:=value" which skips existence checks of variables
   1831 * lib/vim-surround: support ds cs
   1832 * ble-decode: fix stty settings for command execution
   1833 * keymap/vi_omap: fix mode transition from vi_omap to vi_insert
   1834 * [m] lib/vim-surround: remove redundant codes
   1835 
   1836 ## 2017-09-17
   1837 * keymap/vi (text object i[bB]): exclude newlines around the range and transform to linewise
   1838 * [m] keymap/vi (text object i"): behave the same as a" with arg >= 2 specified
   1839 * [m] keymap/vi: rename functions
   1840 * keymap/vi_insert: change the default of C-k to kill-forward-line
   1841 * keymap/vi_command: support digraphs for arg of f, F, t, T, r, gr
   1842 * keymap/vi: support digraph
   1843 * (ble-bind): support "ble-bind -@f kspec command"
   1844 * (ble-decode-kbd): fix a bug that keys "*" and "?" cannot be properly encoded
   1845 
   1846 ## 2017-09-16
   1847 * keymap/vi_command (operators): fix a bug that arg is cleared before the use
   1848 * lib/vim-surround: support b B r a C-] C-} as replacements
   1849 * keymap/vi: rename operator flag for < and >
   1850 * (ble/widget/self-insert): explicitly return 0
   1851 * ble-decode (ble-decode-key/.invoke-command): propagate exit status of widgets
   1852 * keymap/vi_omap: decompose M-*
   1853 * add ilb/vim-surround.sh, support operator "ys" and "yss"
   1854 * keymap/vi: add new keymap "vi_omap"
   1855 
   1856 ## 2017-09-15
   1857 * keymap/vi_command: support operators < >
   1858 * keymap/vi_command: support g~~ guu gUU g??
   1859 * keymap/vi_command: handle meta flags of input keys
   1860 * keymap/vi_command: support ~
   1861 * keymap/vi_command: fix the text object "aw"
   1862 * keymap/vi_command: rename widgets
   1863 
   1864 ## 2017-09-13
   1865 * ble-edit/info: fix cursor position calculations in rendering
   1866 * (ble-form/panel#set-height-and-clear.draw): fix to add lines on an increased height
   1867 * keymap/vi_command: support text objects [ia][][{}()<>bBwW'"`]
   1868 
   1869 ## 2017-09-12
   1870 * add ble-form.sh and introduce ble-form/panel
   1871 * ble-edit: rename functions
   1872 * keymap/vi_command: support text object iw
   1873 * ble-edit/info: show default contents at the end of bind
   1874 * ble.pp: fix PATH if standard utilities are not found on load
   1875 * keymap/vi_command: add operators g~ gu gU g?
   1876 * keymap/vi_command: refactor ydc operators
   1877 * ble-decode (ble-bind): fix check of redundant "ble/widget" prefix
   1878 
   1879 ## 2017-09-11
   1880 * ble-edit (ble/widget/clear-screen): show info after the clear
   1881 * keymap/vi_command (C-o): fix cusor positions after first-non-space commands
   1882 * keymap/vi: fix the initial position of "-- INSERT --"
   1883 * keymap/vi_command: support C-o
   1884 * ble-core: add string functions
   1885 * keymap/vi_insert: change mode names on "insert"
   1886 * keymap/vi: show current modes in the info area
   1887 * ble-edit: support ble-edit/info/set-default
   1888 * ble-edit: clear info on exit
   1889 * memo.txt: add comments from @B-bar
   1890 * ble-decode: check existence of keymaps
   1891 
   1892 ## 2017-09-10
   1893 * keymap/vi_command: fix C D
   1894 * keymap/vi_command: support arg for insert modes
   1895 * ble-decode: fix ble-decode-key and support __before_command__ and __after_command__
   1896 * keymap/vi_command: update bindings and support z{char} clear screens
   1897 
   1898 ## 2017-09-09
   1899 * keymap/vi_command: fix R and support gR
   1900 * keymap/vi_command: support f F t T ; ,
   1901 * ble-edit: suppress unnecessary history loads on history-next
   1902 * ble.pp: support loading ble.sh from inside of functions
   1903 * keymap/vi_command: support J gJ o O
   1904 * fix leak variables
   1905 * keymap/vi_command: support r gr
   1906 
   1907 ## 2017-09-08
   1908 * keymap/vi_command: fix mode change widgets and support gI
   1909 * keymap/vi_command: support G H L gg
   1910 * keymap/vi_command: fix behavior of [dcy][-+jk]
   1911 * keymap/vi_command: update memo.txt and support K
   1912 * keymap/vi_command (RET, C-m): fix to behave as + if the line contains LF
   1913 * keymap/vi_command: support w W b B e E
   1914 
   1915 ## 2017-09-07
   1916 * keymap/vi_command: support s S
   1917 * ble-edit: rename ble-edit/text/getxy -> ble-edit/text/getxy.out
   1918 * keymap/vi_command: support C-h DEL SP
   1919 * (ble/widget/vi-command/{forward,backward}-line): fix
   1920 * keymap/vi_command: return to insert mode on accept-line
   1921 * keymap/vi_command: support |
   1922 * keymap/vi_command: clear arg on mode changes
   1923 * keymap/vi_command: support I
   1924 * keymap/vi_command: support Y D C
   1925 * keymap/vi_command: support x X
   1926 * keymap/vi_command: support p P
   1927 * keymap/vi_command: check unknown flags
   1928 * keymap/vi_command: support A
   1929 * keymap/vi_command: add basic bash operations
   1930 * keymap/vi_command (+ -): travel history
   1931 * keymap/vi_command: support ^ + - $
   1932 * keymap/vi_command: fix behavior of "yh" and "yl"
   1933 * keymap/vi_command: support dd yy cc 0
   1934 * ble-edit: partial revert 35098f0 where necessary ble-edit/history/load calls were removed
   1935 * ble-edit (ble/widget/{for,back}ward-line, etc): fix a bug that the destination cursor pos was based on possible old layout
   1936 * keymap/vi.sh: support hjkl
   1937 * ble-edit: remove redundant ble-edit/history/load calls
   1938 * (ble/widget/.bell): fix exit status
   1939 
   1940 ## 2017-09-06
   1941 * check: add check codes for bashbug workarounds
   1942 * (ble-edit/text/get*): check if the cached text positions are up to date
   1943 
   1944 ## 2017-09-05
   1945 * keymap/vi: support mode switching
   1946 * (ble/widget/.goto-char): simplify
   1947 * (ble-edit/load-keymap-definition): workaround for bash-3.0
   1948 * (ble-decode-key): accept multiple keys
   1949 * ble-edit: support the value bleopt_default_keymap=vi
   1950 
   1951 ## 2017-09-04
   1952 * add keymap/vi.sh and switch keymap on editing mode change
   1953 * ble-decode: split and refactor external settings
   1954 * ble-decode: support bleopt_default_keymap=auto
   1955 
   1956 ## 2017-09-03
   1957 * ble.pp: remove the check enforcing "set -o emacs"
   1958 * ble-decode (ble-decode-{attach,detach}): support attached editing modes
   1959 * ble-decode: update spacing of an awk script
   1960 * ble.pp: fix "set -o emacs" checks
   1961 * ble-syntax: fix a bug that here strings are interpreted as here documents
   1962 * complete.sh: suppress error messages on internal compgen calls
   1963 
   1964 ## 2017-08-30
   1965 * ble-edit: check editing mode
   1966 
   1967 ## 2017-08-19
   1968 * cmap/default.sh: disable modifier keys "CAN @ ?" which is ambiguous with "C-x C-x"
   1969 * ble-edit: support "bleopt delete_selection_mode=1"
   1970 
   1971 ## 2017-06-09
   1972 * ble-syntax: workaround for the bash-4.2 arithmetic bug resulting in segfaults
   1973 
   1974 ## 2017-05-20
   1975 * ble.pp: guard double ble-attach
   1976 
   1977 ## 2017-04-21
   1978 * bind.sh: bash-4.4 workaroud: fix a bug C-x ? is not bound
   1979 
   1980 ## 2017-03-17
   1981 * README: update color settings and translate tips
   1982 * README: add a hint on editing multiline commands
   1983 
   1984 ## 2017-03-16
   1985 * (ble-color-gspec2g): change to recognize 0 padded color indices as decimal numbers
   1986 * README: bump release 0.1.7
   1987 
   1988 ## 2017-03-15
   1989 * README: update heading syntax of GitHub flavored markdown
   1990 
   1991 ## 2017-03-13
   1992 * suppress error messages caused by incorrect user LC_*/LANG values
   1993 
   1994 ## 2017-03-06
   1995 * complete: fix a bug that backquotes, newlines and tabs in completed words were not escaped
   1996 
   1997 ## 2017-03-05
   1998 * ble.pp ($_ble_init_original_IFS): \minor, fix unset
   1999 * ble-core.sh ($ble_util_upvar_setup): add "local ret" declartion
   2000 * (ble-syntax:bash/ctx-heredoc-word): use ctx-redirect to read keyword of here documents
   2001 * ble-color: move deprecated "ble-highlight-layer:adapter" codes to layer/adapter.sh as a sample
   2002 * save/restore IFS to protect ble functions from user's IFS
   2003 * memo.txt: assign numbers of the form "#D????" to old items
   2004 * (ble-syntax:bash): :new: support "select var in ..."
   2005 * (ble-syntax:bash): fix a recent bug that semicolons after "for (())" was not allowed
   2006 * (ble-syntax:bash): :new: support here documents
   2007 
   2008 ## 2017-03-04
   2009 * (ble-syntax:bash): fix a bug that semicolons are not allowed after "}", "fi", "done", etc.
   2010 * (ble-syntax:bash): support the construct with the form "for name do ...; done"
   2011 * (ble-syntax:bash): accept "do" immediately after "for (())" without semicolons
   2012 * Makefile: add a prerequisite "install"
   2013 * (ble-edit-attach): output CR before showing prompt
   2014 
   2015 ## 2017-03-02
   2016 * (ble-syntax:bash): allow `then, elif, else, do' after `}, etc.'
   2017 * (ble-syntax:bash): improve checks of quotes in parameter expansion and arithmetic expansion
   2018   - change so that quotes are processed always in the syntax level
   2019   - introduce new nest-types, ntype='$((' and ntype='$[', for CTX_EXPR (arithmetic expressions)
   2020   - introduce a new nest-type ntype='NQ(' to support nesting in quote-removal-less contexts
   2021   - fix so that quotes '...' in parameter expansions such as `${var#text}' are always enabled
   2022 * \clean: format memo.txt and document comments, etc.
   2023 * (ble-syntax:bash): add a work around of a bash-4.2 bug in arithmetic expressions
   2024 
   2025 ## 2017-03-01
   2026 * (ble-edit/info/draw-text): change to truncate overflow contents
   2027 * ble-edit: fix bugs that line representation is broken at the last line of terminals
   2028   - \fix, use IND to ensure size of the edit area
   2029   - \fix, clear _ble_line_{beg,end}{x,y} on newline
   2030   - ble-edit.sh: add a function ble-edit/draw/put.ind
   2031   - ble-edit.sh: add a function ble/widget/.insert-newline
   2032   - (ble/widget/redraw-line): \clean, 無駄な _ble_line_cur 初期化を削除。ble-edit/render/invalidate を呼び出すだけで充分。
   2033   - (ble-edit/exec/.adjust-eol): \clean, 無駄な _ble_line_x=0 _ble_line_y=0 を消去。元からそうなっている前提である。
   2034   - (ble-edit/exec/.adjust-eol): \fix, 直接 stderr に出力していたのを ble/util/buffer に出す様に変更。
   2035 * (ble-syntax:bash): support `} }', etc.
   2036 * (ble-syntax:bash): :new: support `for ((;;)) { ... }'
   2037 * (ble-syntax:bash): support `((echo)>/dev/null)' and `$((echo)>/dev/null)'
   2038 * complete: support completion of "in" keywords for "for var in"/"case arg in"
   2039 * (ble-syntax:bash): :new: support `for var in ...' and `case arg in'
   2040 * (ble-syntax:bash/ctx-command): [refactor] split into functions, use arrays for ctx settings
   2041 * (ble-syntax:bash): fix a bug that redirection accepted comments
   2042 * (ble-highlight-layer:syntax): fix a bug that causes error on a word beginning with #
   2043   - Note: words beginning with '#' can be formed when `shopt -u interactive_comments'
   2044 * (ble-syntax:bash): fix a bug that beginning of process substitutions splitted words
   2045 
   2046 ## 2017-02-28
   2047 * ble-edit: [refact] rename ble/edit/prompt/update/update-cache_wd -> ble-edit/prompt/update/update-cache_wd
   2048 * ble-edit: [refact] rename ble/widget functions
   2049 * ble-edit: [refact] rename ble-edit functions
   2050 * ble-edit: use ble/util/buffer to suppress flicker
   2051 * ble-core: add variable "ble_util_upvar{,_setup}"
   2052 
   2053 ## 2017-02-25
   2054 * (ble-syntax/parse/shift): fix a bug that caused duplicated shifts
   2055 * (ble-syntax/print-status/.dump-arrays): add consistency checks
   2056 
   2057 ## 2017-02-14
   2058 * ble-syntax.sh: fix a bug that attempts "continue" out side of loop
   2059 
   2060 ## 2017-02-13
   2061 * ble-edit (ble/widget/isearch): fix a bug that isearch does not work in bash-4.4
   2062 
   2063 ## 2016-12-21
   2064 * ble-edit (exec): default value of the parameter "$_" is "$BASH"
   2065 * ble-edit (exec): support parameter "$_"
   2066 
   2067 ## 2016-12-06
   2068 * ble-core (ble/string#split): add a work around for "shopt -s nullglob"
   2069 
   2070 ## 2016-11-08
   2071 * Makefile: detect correct path of gawk for mwg_pp.awk
   2072 
   2073 ## 2016-11-07
   2074 * ble-core.sh: add a work around of bashbug to accept inputs of hankaku kana
   2075 
   2076 ## 2016-09-20
   2077 * (ble/util/sleep in Cygwin): check parent processes of blocking process substitutions
   2078 
   2079 ## 2016-09-16
   2080 * README: update
   2081 * (ble/util/upvar): fixed a bug that array elements cannot be exported
   2082 
   2083 ## 2016-09-14
   2084 * ble-core: add a function ble/util/upvar
   2085 * _ble_edit_str.replace: improve error correction of _ble_edit_ind and _ble_edit_mark
   2086 
   2087 ## 2016-09-11
   2088 * (ble/widget/isearch/cancel): return to the original position, i.e. restore _ble_edit_{ind,mark}
   2089 * (ble-syntax:bash/check-dollar): fixed a bug that isolated dollars generate syntax errors
   2090 * (ble/widget/accept-and-next): fixed a bug that the next line is not loaded on accepting the last histentry
   2091 * ble.sh (ble-edit/history/add): fixed a bug that erasedups is performed even if a new entry is rejected by ignorespace
   2092 * isearch: fixed a bug that words in the current line is not matched incrementally
   2093 
   2094 ## 2016-08-24
   2095 * complete.sh: recognize dangling symbolic links in completion and syntax-highlighting
   2096 
   2097 ## 2016-08-08
   2098 * term.sh: fixed a bug that xenl cap was always disabled.
   2099 
   2100 ## 2016-08-07
   2101 * ble-edit/prompt: improved admin privileges checks on Cygwin
   2102 
   2103 ## 2016-08-05
   2104 * (ble-edit/history/add): fixed a bug that history entries are not registered after certain operations.
   2105 * syntax: fixed a bug that causes an fatal error for param expansions with offset in quotes like "${v:1}"
   2106 * (ble/util/sleep): do not use /dev/tcp which generates error messages on Win10 Cygwin.
   2107 
   2108 ## 2016-07-16
   2109 * (ble/util/array-push): \refactor, rename, support multiple elements to append.
   2110   - rename ble/util/array-push -> ble/array#push
   2111   - rename ble/util/array-reverse -> ble/array#reverse
   2112 
   2113 ## 2016-07-15
   2114 * complete: enable completion of variable names in "..." and ${...}.
   2115 * complete.sh: insert '=' after the completion of variable name of assignment.
   2116   - (ble/widget/complete):
   2117     completion-context にて source の引数をコロン区切で指定できるように拡張する。
   2118   - ble-complete/source/variable:
   2119     引数に応じて確定時に挿入する接尾辞を選択する様に変更する。
   2120   - ble-syntax.sh (ble-syntax/completion-context):
   2121     文脈に応じて variable 候補源に引数 '=' を指定して、補完確定時に何を挿入するべきか指定する。
   2122 * complete.sh: fixes and clean up; a new fn ble/string#split.
   2123   - ble-core.sh: a new function ble/string#split to replace "GLOBIGNORE=* IFS=... eval 'arr=(...)'".
   2124   - complete.sh: (ble-complete/.fignore/filter): fixed a bug that local variable pat was leaked.
   2125   - complete.sh: (ble/widget/complete): fixed a bug that "shopt -s force_fignore" was ineffective.
   2126 
   2127 ## 2016-07-14
   2128 * (ble/util/sleep): add fallbacks to sleepenh and usleep for bash-3.*.
   2129 * isearch: fixed a bug that a new range overlapped with the current match cannot be matched incrementally.
   2130 * (bleopt): fixed a bug in printing variables.
   2131 
   2132 ## 2016-07-09
   2133 * (ble/history/add): work around for bash-3.0 to add history entries to bash command history.
   2134 * (ble/history/add): fixed a bug that command history was always disabled under bash-3.2.
   2135 
   2136 ## 2016-07-08
   2137 * ble-syntax.sh, complete.sh (shopt -q autocd): fixed a bug that error messages were output to stderr on completions in bash-3.*.
   2138 * ble-edit (prompt): :new: support shell variable PROMPT_DIRTRIM for PS1 instantiation.
   2139 * ble-edit: Now, the history index \! in PS1 is the index of the editted line.
   2140   - isearch: also, the position shown while isearch is changed to the history index.
   2141 
   2142 ## 2016-07-07
   2143 * README: move language options to the top. add icons of the languages.
   2144 * update README and LICENSE
   2145 * ble-edit.sh (ble-edit/isearch/backward): improve the performance (work around for slow bash arrays).
   2146 
   2147 ## 2016-07-06
   2148 * ble-edit.sh (_ble_edit_history_edit): changed to hold the whole editted history data.
   2149 * ble-syntax: glob patterns are not active in variable assignments.
   2150 * ble-edit.sh: 修正: ジョブ状態の変更を標準出力に確実に出力
   2151   - fixed a bug that job state changes are not output when PS1 contains '\j'.
   2152   - fixed a bug that the changes are not output immediately.
   2153 * minor fixes in visible-bell and check-stderr.
   2154   - ble-core.sh (ble-term/visible-bell): fixed a bug in subsecond treatment.
   2155   - ble-edit.sh (.ble-edit/stdout/check-stderr): fixed a bug that lines without LF were not processed.
   2156 
   2157 * (ble/util/joblist): use ble/util/joblist for internal usage of jobs.
   2158   - ble-core.sh (ble/util/joblist): bugfix:
   2159     誤って _ble_util_joblist_jobs を _ble_util_joblist_list として使用している箇所が 4 箇所。
   2160   - ble-core.sh (ble/util/joblist): bugfix:
   2161     - (直前のジョブ) や - (一つ前のジョブ) の変化も変化として検知していた。
   2162     - これはジョブ状態の本質的な変化とは言いがたいので無視する。
   2163   - ble-core.sh (ble/util/joblist): bugfix: add ble/util/joblist.clear
   2164     bash 自身によってジョブ状態の変化が報告された後に、
   2165     二重に状態変化が報告される場合があるので、その様な場合にはキャッシュを消去する。
   2166   - ble-edit.sh の各 jobs を呼び出すところで、ble/util/joblist を代わりに呼び出す。
   2167   - ble-syntax.sh, ble-color.sh で jobs を使用してジョブの存在確認している箇所では、
   2168     先に ble/util/joblist を呼び出してジョブの状態変更を確認してから目的の jobs 呼び出しを行う。
   2169 * ble-core.sh: add a new function ble/util/joblist.
   2170 
   2171 ## 2016-07-05
   2172 * ble-core: add option bleopt_stackdump_enabled
   2173   - bleopt_stackdump_enabled が非零の値に設定されている時にだけ
   2174     stackdump を出力する様にする。既定では 0 (出力しない) とする。
   2175 
   2176 ## 2016-07-04
   2177 * ble-decode.sh (ble-decode-attach): fixed a bug that makes C-{u,v,w,?} ineffective after the second ble-attach.
   2178   - 2回目以降の ble-attach でも ble-decode-bind/uvw が動作する様に
   2179     ble-decode-attach で source "~.bind" した直後に _ble_decode_bind__uvwflag をクリアする。
   2180 
   2181 ## 2016-06-27
   2182 * ble-core.sh ($_ble_base/cache): move to _ble_base_cache="$_ble_base/cache.d/$UID" for user separation.
   2183 * ble-core.sh ($_ble_base_tmp): change to use /tmp/blesh/$UID if it is available.
   2184   - 今迄は ble.sh と同じディレクトリに一時ファイルを配置していた。
   2185     しかし、ble_util_assign.tmp などのファイルは速度を考えれば tmpfs (RAM上) に配置したい。
   2186     従って、一時ファイルは /tmp の上に配置するように変更する。
   2187 * ble-core.sh: add ble/util/sleep to provide subsecond sleep.
   2188 
   2189 ## 2016-06-25
   2190 * ble-edit.sh (_ble_edit_str.replace debug codes): resume from wrong state.
   2191 
   2192 ## 2016-06-23
   2193 * ble-core.sh (ble/util/array-reverse): improve performance.
   2194 
   2195 ## 2016-06-22
   2196 * ble-edit/isearch: show progress of search.
   2197 
   2198 ## 2016-06-19
   2199 * ble-edit/isearch: ble/widget/isearch/prev cancel a task in que, ble/widget/isearch/accept is not effective while a search.
   2200   - ble/widget/isearch/prev: 現在実行中のタスク (_ble_edit_isearch_que) がある場合には一つずつキャンセルする。
   2201   - ble/widget/isearch/accept: 現在実行中のタスクがある場合には bell を鳴らすだけで動作をスキップする。
   2202   - ble-edit/isearch/.goto-match: 一致があった場合には is-stdin-ready でも強制的に描画を実行する。
   2203 * ble-edit/isearch: check is-stdin-ready on history search to suspend.
   2204 
   2205 ## 2016-05-21
   2206 * update README.md for v0.1.5
   2207 * ble-edit.sh: bugfix, incorrect _ble_edit_ind caused by the inconsistensy of history/isearch targets.
   2208   - _ble_edit_history を履歴検索して _ble_edit_history_edit をロードしていた事による _ble_edit_ind 不整合
   2209     これにより、dirty-range の不整合が生じエラーが発生していた。長年の謎のバグがこれで潰れたと思われる。
   2210 
   2211 ## 2016-04-07
   2212 * ble-syntax.sh (ble-syntax/parse/shift.impl2): bugfix 制御構造の欠陥による shift 漏れ。
   2213 
   2214 ## 2016-01-24
   2215 * ble-syntax.sh: \debug add debug codes for dirty-range bug
   2216   - ble-edit.sh: dirty range checks
   2217   - ble-syntax.sh (ble-syntax/parse): remove readonly flag of `beg' and `end' for dirty-range bug
   2218 
   2219 ## 2015-12-30
   2220 * modify README: use -O option for curl; release v0.1.4.
   2221 
   2222 ## 2015-12-26
   2223 * (ble-color/faces): preserve orders of addhook-onload, and ble-color-{def,set}face.
   2224   - ble-color/faces 初期化前に呼び出した ble-color/faces/addhook-onload,
   2225     ble-color-defface, ble-color-setface を独立に記録していた為、
   2226     実際に呼び出された順序と異なる順序で処理が実行されてしまっていた。
   2227     記録を一つの配列 _ble_faces_lazy_loader にまとめ、順序が保存される様にした。
   2228 
   2229 ## 2015-12-25
   2230 * (ble-color) \change ble-color-{def,set}face の処理も遅延する。
   2231 * functions/getopt.sh: \add description.
   2232 
   2233 ## 2015-12-24
   2234 * (ble-syntax:bash): :new:, support option `-p` for keyword `time`.
   2235 * (ble-syntax:bash): \new, support `a=([key]=value)` and `a+=([key]+=delta)`.
   2236   * (ble-syntax): \new local variable `parse_suppressNextStat` in ble-syntax/parse.
   2237   * (ble-syntax:bash): \bugfix, correct resume for `var+`, `arr[...]+` -> `var+=`, `arr[...]+=`.
   2238   * (ble-syntax:bash): \new, support `a=([key]=value)` and `a+=([key]+=delta)`.
   2239 * (ble-syntax:bash): \new context CTX_CASE.
   2240 * (ble-syntax:bash): \new CTX_COND{X,I}; \change unexpected '(' is treated as extglob '@(' instead of sub-shell '(';
   2241   * ble-syntax.sh: `CTX_VAL{X,I}` から `CTX_COND{X,I}` を分離。
   2242   * ble-syntax.sh: コマンド中に現れる '(' を extglob の括弧として取り扱う事にする。
   2243     今迄は暫定的に sub-shell として取り扱っていたが、
   2244     エラーが多く出てうるさいのでエラーの少ない extglob 括弧として取り扱う事にする。
   2245 * ble-edit.sh: \bugfix histexpand condition [[ -o histexpand ]] inverted.
   2246   * \bugfix 履歴展開が効かなくなっていた。
   2247     条件判定の誤りだった: [[ -o histexpand ]] → [[ ! -o histexpand ]]
   2248   * \bugfix 履歴展開に失敗した時に : が実行される。
   2249     履歴展開が失敗すると history -p は標準出力に何も出力しないためであった。
   2250     失敗した時は echo "$BASH_COMMAND" により手動で出力する。
   2251 * (ble-syntax:bash): \support shopt -s extglob; \bugfix error on {delimiter after redirect,'<' redirect};
   2252   * extglob 対応: `CTX_GLOB`, `ATTR_GLOB`, `ctx-glob`, `check-glob` 追加。
   2253   * \bugfix redirect 直後に redirect/delimiter があった時に解析データ書き込み違反。
   2254   * \cleanup: 共通の正規表現の整理:
   2255     `$_ble_syntax_bash_rex_spaces`,
   2256     `$_ble_syntax_bash_rex_IFSs`,
   2257     `$_ble_syntax_bash_rex_delimiters`.
   2258   * \bugfix `$_ble_syntax_bash_rex_redirect`: < が抜けていた。
   2259 
   2260 ## 2015-12-23
   2261 * (ble-syntax:bash): special treatment of arguments of `declare`.
   2262   * (ble-syntax:bash): declare, typeset, local, export, alias コマンドの引数を文法的に特別に扱う。特に配列構文 =() を許容する。
   2263     その為に新しい文脈値 `CTX_ARGVX`, `CTX_ARGVI` を追加する。
   2264   * (ble-syntax:bash): `CTX_ARGVI` に対する補完候補は変数名。等号 '=' 以降の部分についてはファイル名の補完候補を列挙する。
   2265   * (ble-syntax:bash): 通常の代入構文における配列構文の動作を変更。
   2266     今迄は a=(1 2 3)echo などとすると a=(1 2 3) を配列代入と解釈し echo の部分をコマンドと解釈する様にしていた。
   2267     その為に配列構文の nest-pop 時にすぐに単語を抜けて cxt==CTX_CMDXV になる様に構成していた。
   2268     しかし、実際の bash の動作を確認してみると、a=(1 2 3)echo は a='(1 2 3)echo' の様に、全体が代入文の右辺と解釈される様である。
   2269     実際の bash の動作に合わせて、nest-pop 時に特別な動作を特にしない様に変更した。
   2270 
   2271 ## 2015-12-21
   2272 * (ble-syntax:bash): 算術式終了条件修正、bash-3.0 で += 無効; (completion-context): a+= 直後の補完候補生成。
   2273   * ble-syntax.sh (ble-syntax:bash): 算術式の終了条件を修正する。
   2274     $((...)) ((...)) の中では '(', ')' を数えて終了判定を行う。
   2275     $[...]、${arr[...]} arr[...]= の中では '[', ']' を数えて終了判定を行う。
   2276     ${var:...:...} では '}' が来たらすぐに終了する。
   2277   * ble-syntax.sh (completion-context): a+= の直後でも補完候補生成を行う。
   2278   * ble-syntax.sh (ble-syntax:bash): disable += under bash-3.1.
   2279 * ble-edit.sh: bugfix failure of catch C-d in bash-3.0.
   2280 
   2281 ## 2015-12-20
   2282 * (ble-highlight-layer:syntax): color of special files, permission of files in redirection.
   2283   - ble-syntax.sh: bugfix of assertion test in ble-syntax/parse/tree-append.
   2284   - ble-syntax.sh (ble-highlight-layer:syntax): color filenames of block device, character device, pipe, and socket.
   2285   - ble-syntax.sh (ble-highlight-layer:syntax): redirection: check permissions.
   2286 * (ble-syntax:bash): bugfix, tree-structure corruption on edit of array subscripts in array-element assignment.
   2287   - ble-syntax.sh: 配列添字の書き換え時に解析木の破壊が起こる。
   2288     配列添字の終了 ']=' において nest-pop を先頭位置で行っていた。
   2289     これが為に、過去の解析結果を書き換えている事になっていた為に、
   2290     shift の際に設置した情報が消滅したりしていた。
   2291 * ble-edit.sh: add support `set +o history`; ble-syntax.sh: check file existence on '<' redirection.
   2292   - ble-edit.sh: add support `set +o history`
   2293   - ble-syntax.sh (ble-highlight-layer:syntax): check filename of `<` redirections.
   2294   - ble-syntax.sh (constants): refact,
   2295     definition of `local rex_redirect` -> global `_ble_syntax_bash_rex_redirect`.
   2296     rename `_BLE_SYNTAX_CSPACE` -> `_ble_syntax_bash_cspace`.
   2297   - ble-edit.sh: refact, rename functions `.ble-edit[./]history[./]*` -> `ble-edit/history/*`.
   2298 * complete: 候補生成箇所の追加・修正、コマンド補完候補としてサブディレクトリも列挙
   2299   - ble-syntax.sh (complete): bugfix, 単語の間の空白で complete を実行しようとしても候補が生成されなかった。
   2300   - ble-syntax.sh (complete): generate filenames after `VAR='.
   2301   - ble-syntax.sh (complete): generate filenames just after the redirection.
   2302   - complete.sh: コマンドの補完候補として現在のディレクトリのサブディレクトリも列挙する様に修正する。
   2303     サブディレクトリにある実行属性のファイルを実行したい場合がある為である。
   2304 
   2305 ## 2015-12-19
   2306 * complete.sh: support `FIGNORE`, `shopt -s force_fignore`.
   2307   - Makefile: bugfix, remove `ble-getopt.sh` from the required files to generate ble.sh.
   2308   - complete.sh: support `FIGNORE` and `shopt -s force_fignore`.
   2309 * functions/*: move unused file ble-getopt.sh to `functions/`. Add new impl of getopt.
   2310 * ble-syntax.sh (ble-syntax:bash): redirections: bugfix '<<<', support '>|', overwrite check of files, etc.
   2311   - ble-syntax.sh (ble-highlight-layer:syntax): Support `set -o noclobber`; Check overwrites of target files of redirections for '>', '&>', and '<>' redirect.
   2312   - ble-{core,decode,edit}.sh, bind.sh, term.sh, emacs.sh: change redirection '>' -> '>|' for the case of the noclobber option on.
   2313   - ble-syntax.sh (ble-syntax:bash): support the redirect using `>|`.
   2314   - ble-syntax.sh (ble-syntax:bash): bugfix false syntax error of `<<<`.
   2315   - ble-syntax.sh (ble-syntax:bash): bugfix redundant skip on unexpected termination of redirect by an end of command or another redirection.
   2316   - ble-syntax.sh (ble-syntax:bash): bugfix, do not allow newline after the redirection introducers.
   2317 * ble.pp, ble-core.sh: Check and modify dependencies on external commands.
   2318   - ble.pp (ble/.check-environment): Remove tput (POSIX UP option) which is not necessarily required.
   2319   - ble-core.sh (ble-term/visible-bell): Add a function `ble/util/getmtime` to get modified time of files in a compatible way.
   2320   - ble-edit.sh (ble/widget/command-help): Select available pager from any of $PAGER, less, more, and cat.
   2321 * ble-syntax.sh: syntax: quotations in words in parameter expansion (shopt -u extquote, etc.).
   2322   - ble-syntax.sh: support single quotation in parameter expansion.
   2323   - ble-syntax.sh: support shopt -u extquote.
   2324 * clean up & minor behavior change: Check bash opts --{posix,noediting,restricted}, Unset mark on accept-line.
   2325   * bug fix
   2326     - ble-syntax.sh (ble-syntax:bash/extract-command/.construct-proc): remove a debug code which prints the message "clear words".
   2327   * minor behavior change
   2328     - ble-edit.sh (ble/widget/accept-line): redraw without mark.
   2329     - ble.pp (startup check): do not load ble.sh for bash --posix, --noediting, or --restricted.
   2330   * clean up
   2331     - ble-decode.sh (ble-decode-byte:bind/EPILOGUE): use ble/util/is-stdin-ready instead of the direct use of `read`.
   2332     - ble-core.sh (ble/util/is-stdin-ready): use LANG instead of LC_ALL.
   2333     - ble-edit.sh, ble-syntax.sh: use [[ -o histexpand ]] rather than [[ $- == *H* ]].
   2334     - ble-syntax.sh (test): remove unused functions `.ble-shopt-extglob-push`, and `.ble-shopt-extglob-pop` for test.
   2335     - ble-edit.sh: remove old complete functions:
   2336       - .ble-edit-comp.initialize-vars
   2337       - .ble-edit-comp.common-part
   2338       - .ble-edit-comp.complete-filename
   2339       - ble/widget/complete
   2340       - ble/widget/complete-F
   2341     - ble-syntax.sh, complete.sh: no need of redirection for `shopt -q optname`.
   2342 
   2343 ## 2015-12-09
   2344 * Refactoring ble-edit.sh/ble-line-prompt.
   2345   * .ble-line-prompt -> ble-edit/prompt.
   2346   * `_ble_cursor_prompt`, `_ble_line_prompt` -> `_ble_edit_prompt`.
   2347 * Refactoring ble-core.sh, ble-color.sh, cmap/xterm.sh.
   2348   * ble-core.sh: .ble-text.* -> ble/util/*.
   2349   * ble-color.sh: .ble-color.* -> ble-color/.*.
   2350   * cmap/xterm.sh: .ble-bind.function-key.* -> ble-bind/cmap:xterm/*.
   2351 * Refactoring ble-decode.sh.
   2352   * ble-core.sh: .ble-term.{visible,audible}-bell -> ble-term/{visible,audible}-bell.
   2353   * ble-decode.sh: .ble-stty.* -> ble-stty/*.
   2354   * ble-decode.sh: .ble-decode-* -> 適切な名称に変更。
   2355 * Refactoring and clean up.
   2356   * ble-edit.sh, etc: 'ble-edit+' -> 'ble/widget/.
   2357   * 'ble-edit.sh: ble-edit/exec 関数名整理。
   2358   * ble-decode.sh: ble-decode-byte 関数名整理、ble-edit 依存性分離。
   2359   * README-ja_JP.md: 日本語説明修正。
   2360   * README.md: 英語修正。
   2361   * ble-syntax.sh: コードコメント @fn -> 関数 に統一。
   2362 
   2363 ## 2015-12-06
   2364 * ble-core.sh: Add function ble/util/cat to replace /bin/cat.
   2365   - ble-core.sh: 関数 ble/util/cat。command cat の単純な呼出と同じ機能を builtin read で実装。
   2366   - ble-decode.sh (ble-bind --help): 外部コマンドの cat を呼び出していたが、bash の組込コマンドで実現できるので置き換え。
   2367   - README.md: gmake/make について説明を追加。
   2368 * Update README-ja_JP.md
   2369 * ble-bind: New option `-L, --list-functions`, ble-color.sh bugfix initialization of faces:region,disabled,overwrite_mode.
   2370   - ble-color.sh: bugfix, 色初期化 (region disabled overwrite_mode) 遅延ロードに登録していなかった。
   2371   - ble-decode.sh (ble-bind): New option `-L, --list-functions` to list edit functions.
   2372 
   2373 ## 2015-12-03
   2374 * Changed default value of bleopt_char_width_mode from `emacs` to `east`.
   2375 * Update README-ja_JP.md.
   2376 * Add README-ja_JP.md. 日本語の説明。
   2377 * optimization: lazy init of faces (ble-{syntax,color}.sh), removal of temporary files (ble-core.sh).
   2378   * ble-syntax.sh, ble-core.sh: lazy initialization of `_ble_faces_*`.
   2379   * minor: modify messgese: initialization message, the header of the script ble.sh.
   2380   * ble.pp: Add pp switch `measure_load_time` to identify the initialization bottle neck.
   2381   * ble-core.sh (`_ble_base_tmp.wipe`): optimization, use parameter expansion instead of regex captures.
   2382 * Support here string, shopt -q progcomp; Bugfix ble-syntax/parse/nest-equals.
   2383   * ble-syntax.sh: support here string.
   2384   * ble.htm: comment out outdated descriptions.
   2385   * ble-syntax.sh (ble-syntax/parse/nest-equals): bugfix, 前回の bugfix で onest[3]<0 の場合を考えていなかった。
   2386   * complete.sh: shopt -q progcomp によるプログラム補完の有効・無効の切り替え。
   2387 * update version numbers.
   2388 * ble-syntax.sh (ble-syntax/parse/nest-equals): fatal bugfix, misjudge on nest equality test causing nest structure corruption.
   2389   * Note: _ble_syntax_nest の要素に含まれている nest 開始位置は相対位置で記録されているにも拘わらず、絶対位置の変数に直接代入していた事が原因であった。
   2390   * 他 ble-syntax.sh, ble-color.sh: compatibility fix., fgrep to command grep -F.
   2391 * README.md: correct download links.
   2392 * `*.sh`: Add `command` for external command execution.
   2393 * (ble-edit/stderr for bash-3.0): Add ignoreeof-message.txt for C-d message i18n.
   2394 * `*.sh`: New marker `__ENCODING__` for 文字コード依存部分
   2395 
   2396 ## 2015-11-30
   2397 * complete.sh (ble-complete/source/argument): minor bugfix, default behavior using comp_opts exported by func .../.compgen.
   2398   * 他 ble.pp: check chmod.
   2399 * Makefile: a phony target `dist`.
   2400 * memo.txt: todo 整理.
   2401 * complete.sh: bugfix, completion doesn't work on an argument without complete -D spec.
   2402 * ble-edit.sh (ble-edit+isearch/next): bugfix, didn't match locally on self-insert of forward isearch.
   2403 * ble-decode.sh (generate-source-to-unbind-default): bugfix, need of LANG=C.
   2404   * LANG=C を設定しないと bind -sp の出力に変なバイトが含まれている為に解釈に失敗する。
   2405     (utf-8 の様な ASCII 文字を含まない様な文字コード体系の場合にはこれで問題ないが。
   2406     memo.txt に Note(2015-11-30) として追加する。)
   2407 * Update README.md
   2408 * ble-edit.sh: remove dependency on GNU awk.
   2409   * ble.pp: 念の為 gawk に戻す事ができる様に use_gawk (PP変数) を用意する。
   2410   * ble.pp (ble/.check-environment): check awk.
   2411   * ble-core.sh (ble/util/array-reverse):(awk scripts):
   2412     + uninitialized variable `decl` を初期化する。
   2413     + locale dependent な /[a-z]/ の類を POSIX 括弧 (/[[:alpha:]]/, /[[:alnum:]]/) に置き換え。
   2414   * ble-edit.sh (.ble-edit/history/generate-source-to-load-history):(awk scripts): uninitialized variable `n`.
   2415   * ble-decode.sh (.ble-decode-bind/generate-source-to-unbind-default):(awk scripts):
   2416     + 引数名と大域変数が被らない様にする。
   2417     + gawk 特有の機能 (/\y/, match 第三引数) を使わない。
   2418     + bugfix, gsub の対象の変数が指定されていない箇所があった。
   2419   * それぞれ gawk --lint 及び nawk でも動作を確認した。
   2420 
   2421 ## 2015-11-29
   2422 * ble-edit/isearch: 現在のコマンド内も検索対象に。
   2423   * 旧来の履歴項目検索機能を改名:
   2424     - ble-edit+isearch/forward -> ble-edit+isearch/history-forward,
   2425     - ble-edit+isearch/backward -> ble-edit+isearch/history-backward,
   2426     - ble-edit+isearch/self-insert -> ble-edit+isearch/history-self-insert.
   2427   * 検索履歴 (_ble_edit_isearch_arr) に一致範囲も記録する様に変更
   2428   * 現在の位置からコマンド内を検索する関数を追加・旧関数を置換:
   2429     - ble-edit+isearch/forward,
   2430     - ble-edit+isearch/backward,
   2431     - ble-edit+isearch/self-insert.
   2432 * ble-edit.sh (+isearch/next): 一致範囲を囲む。
   2433   * ble-edit.sh (+isearch/next), set region to matched range.
   2434   * ble-edit.sh: pattern matching using [[ text == pattern ]] instead of case statement.
   2435   * ble-color.sh (ble-syntax-layer:region/update): bugfix, PREV_UMIN/PREV_UMAX out of range due to the shift failure of omin/omax.
   2436 * ble-core.sh: full support for bleopt_input_encoding=C
   2437   * ble-core.sh: Add functions: ble-text-b2c+C, and ble-text-c2b+C.
   2438   * ble-core.sh (.ble-text.c2bc): rename .ble-text.c2bc -> ble-text-c2bc.
   2439   * .gitignore: 古い物を整理。/wiki 追加。
   2440 
   2441 ## 2015-11-28
   2442 * Update README.md
   2443 * ble-decode.sh, ble-edit.sh: support `bind -xf`.
   2444   * ble-core.sh: Add functions ble/string#common-{prefix,suffix}.
   2445   * ble-decode.sh, ble-edit.sh: support `bind -xf COMMAND`.
   2446   * ble-edit.sh:714: ^M が直接埋め込まれていると GitHub が改行位置を勘違いする様なので $'\r' に修正する。
   2447   * complete.sh: embedded sed scripts, POSIX compliance.
   2448 * ble-color.sh: Add a function ble-color-show.
   2449 * README.md: Add animation gif.
   2450 * README.md: settings for syntax highlighting.
   2451 * README.md: Add some description of settings.
   2452 
   2453 ## 2015-11-27
   2454 * Create LICENSE.md
   2455 * Update README.md
   2456 
   2457 ## 2015-11-24
   2458 * ble-edit.sh (+magic-space): bugfix, 現在のカーソル位置よりも前の部分に対して履歴展開する。
   2459 * complete.sh: behavior of source/argument, compopt -o/+o, bugfix.
   2460   - complete.sh (ble-complete/source/argument): complete -o ..., compopt -o option +o option の読み取り。
   2461   - complete.sh (ble-complete/util/escape-regexchars): bugfix.
   2462   - complete.sh: Add action/plain, action/argument, action/argument-nospace.
   2463   - complete.sh: Add source/dir.
   2464   - complete.sh (ble-complete/source/argument): support -o nospace, -o dirnames.
   2465 * complete.sh (ble-complete/source/argument): bugfixes.
   2466   * ble-complete/source/argument/.compgen-helper-prog: Export `COMP_LINE` `COMP_POINT` `COMP_KEY` `COMP_TYPE`
   2467   * ble-complete/source/argument/.compgen-helper-{prog,func}: Pass arguments `command`, `cur`, and `prev` for program/function.
   2468   * ble-complete/source/argument: Fix option -F, -C interruption failure.
   2469   * ble-complete/source/argument: Fix -F <-> -C miss arrangement.
   2470   * ble-complete/source/argument: Correct IFS when compgen is called.
   2471   * ble-complete/source/argument: `return 1` if no candidates are generated.
   2472   * ble-complete/source/argument: Evaluate `compgen` in the original shell (i.e., not in a sub-shell).
   2473   * ble-complete/source/argument: Filter and modify candidates generated by `compgen` using `sed`.
   2474 
   2475 ## 2015-11-23
   2476 * ble-edit.sh (ble-decode): show the message to run "stty sane" after "ble-detach".
   2477 * ble-syntax (ble-syntax:bash/extract-command): bugfix, 出力用の変数が local 指定になっていたのを削除。
   2478   - 他: complete.sh: compgen -F prog -C cmd の際に compgen が警告を出すので compgen 2>/dev/null とする。
   2479 * complete.sh: complete -p による補完の基本実装。
   2480   * ble-core.sh: Create function ble/util/array-reverse.
   2481   * ble-decode.sh (.ble-decode-keys, .ble-decode-key/invoke-command): bash-3.0 workaround, local -a keys=(), local -a KEYS=() を2行に分ける。
   2482   * ble-syntax.sh: complete 用の整備。
   2483     * 関数追加 ble-syntax/tree-enumerate-break: "((tprev=-1))" は意図が分かりにくいので。
   2484     * 関数追加 ble-syntax:bash/extract-command:
   2485     * ble-syntax/tree-enumerate: シェル変数 iN の既定値を _ble_syntax_text の末端に。
   2486     * ble-syntax/completion-context: CTX_VALI, CTX_VALX に対応。
   2487     * ble-syntax/completion-context: 一部の補完文脈を file から argument に変更。
   2488   * complete.sh: complete -p 設定に基づく補完。
   2489     * ble-complete/source/argument: 追加
   2490     
   2491 ## 2015-11-22
   2492 * ble-syntax.sh: bash 文法関連の関数名整理。
   2493   * ble-decode.sh (ble-bind): error message に . を追加。古いコメントを削除。
   2494   * ble-syntax.sh (ble-syntax/parse/{check,ctx}-*): bash 文法特有の関数の名称を整理。
   2495 
   2496 ## 2015-11-21
   2497 * cmap/cmap+*.sh: Update for current ble-decode.sh.
   2498 * ble-edit.sh (ble-edit+magic-space): Add edit function magic-space.
   2499 
   2500 ## 2015-11-19
   2501 * Support of PROMPT_COMMAND, and function bleopt.
   2502   * ble-edit.sh: easy support of PROMT_COMMAND.
   2503   * ble-core.sh: bleopt 関数追加。
   2504   * ble-decode.sh (.ble-decode-initialize-cmap): POSIX sed BRE does not support the quantifiers: \+, \?.
   2505 * ble-syntax.sh: 履歴展開をより正確に。
   2506   * histchars に応じた履歴展開の解析
   2507   * extglob が設定されている時は !( は履歴展開と解釈しない
   2508   * 文字列 "~" 中の履歴展開は " の直前で終わる
   2509 * ble-core.sh: workaround for bash-3.0 regex in _ble_base_tmp.wipe.
   2510 
   2511 ## 2015-11-17
   2512 * `ext/mwg_pp.awk`: Include mwg_pp.awk in ext; Makefile (listf): renamed to list-functions and modified.
   2513 * ble-syntax.sh (ble-syntax/parse/nest-equals): bugfix (operater associativity), incorrect break of loops.
   2514 
   2515 ## 2015-11-09
   2516 * ble-core.sh (_ble_base_tmp.wipe): bugfix, correct iteration of old tmp files.
   2517 
   2518 ## 2015-11-08
   2519 * complete.sh: ユーザ入力があった時の候補列挙の中断に対応 (bash-4.0 以降); ble-syntax.sh: コメント判定の修正。
   2520   * ble-core.sh (ble/util/is-stdin-ready): 関数追加。標準入力に未処理の文字が残っているかどうかを判定。ユーザの入力が待ち状態になっているかどうかを判定する為の物。
   2521   * ble-syntax.sh (ble-syntax/parse/check-comment): コマンドライン解析時 shopt -u interactive_comments の時にはコメントは無効とする。
   2522   * ble-syntax.sh (ble-syntax/parse/check-comment): bugfix コメント開始判定(単語頭)。単語開始の判定が単語頭ではなく「単語頭または単語内部の解析開始点の位置」という事になっていた。
   2523   * complete.sh (ble-complete/source/command/gen, ble-edit+complete): コマンド候補の列挙・一致判定には時間が掛かるので ble/util/is-stdin-ready を用いて中断の判定を実行する。
   2524 
   2525 ## 2015-11-07
   2526 * Update README.md
   2527 * ble.pp: check environment for required commands, ble-edit.sh: 'M-\'.
   2528   * ble.pp: check required commands.
   2529   * ble-core.sh: remove dependencies on `touch' command.
   2530   * ble-edit.sh, keymap/emacs.sh: Add edit function: delete-horizontal-space ('M-\').
   2531 
   2532 ## 2015-11-06
   2533 * ble-syntax.sh: cleanup debug codes.
   2534 * ble-syntax.sh (ble-syntax/parse/shift.nest): bugfix, parse error by shift failure of _ble_syntax_nest.
   2535 
   2536 ## 2015-11-25
   2537 * Create README.md
   2538 
   2539 ## 2015-08-25
   2540 * m, bugfixes.
   2541   * PS1 の '!' の処理、
   2542   * PS1 の \w の処理、
   2543   * (bash-3.0) history '!1' &>/dev/null によるチェックでエラーメッセージが漏れていた。
   2544 * bugfix, specify explicit collation order for regs and globs.
   2545   * Character ranges in regular expressions and glob patterns are dependent on collation order.
   2546   * To obtain the desired results for ascii characters, `local LC_COLLATE=C' should be explicitly specified.
   2547 
   2548 ## 2015-08-24
   2549 * ble-edit.sh (.ble-edit.history-add): bugfix, handling of HISTCONTROL.
   2550 
   2551 ## 2015-08-19
   2552 * bin/ble-edit.sh: bugfix for bash-3.0, history -s が正しく動作しないので修正。
   2553 
   2554 ## 2015-08-18
   2555 * bugfix and cleanups.
   2556   * ble-core.sh (ble-assert): bugfix, correct return value.
   2557   * ble-edit.sh, ble-synta.sh: bash-3.0 bugfix, `local arr=(...)' form cannot be used in bash-3.0.
   2558   * ble-edit.sh (hist_expanded.initialize): renamed to `ble-edit/hist_expanded.initialize'.
   2559 
   2560 ## 2015-08-16
   2561 * 消滅単語に対する色解除の対策(暫定)。
   2562   * ble-syntax.sh (ble-syntax/parse): 消滅単語の範囲集計。
   2563   * ble-syntax.sh: 範囲更新・並進の整理。関数 ble/util/[uw]range#{update,shift} の追加。
   2564 * 表示系統 bug fixes.
   2565   * ble-edit.sh (ble-edit/dirty-range/update): bugfix, endA0 の読み出しに誤り、変数名 delta/del に誤り。
   2566   * ble-syntax.sh (ble-highlight-layer:syntax/update-attribute-table): bugfix in umin/umax update, umax の更新に使う変数名を誤っていた。
   2567 * 組込コマンド上書き対策。ble-syntax shift bufgix for bash-4.2 算術式。
   2568   * ble-syntax.sh (bash-4.2): bugfix, ble-syntax/parse/shift.{tree1,nest} の算術式で bash-4.2 をクラッシュされる形式の物が見付かった。
   2569   * ble-core.sh: ble/util/set 関数を追加。
   2570   * ble-edit.sh: builtin 上書きを防ぐ為に unset -f builtin を実行 (builtin, unset 両方上書きされると駄目だが)。
   2571   * ble-edit.sh: return/break/continue も上書きを禁止する。
   2572   * ble-*.sh: test の代わりに [[ ]] を使用。
   2573 * 貼付時の再描画抑制 (read -t 0 による判定)。\x80-\x9F を M-^? で表示。
   2574   * ble-edit.sh: 編集文字列内の \x80-\x9F の表示を M-^? に。表示が乱れていた。
   2575   * ble-edit.sh (ble-decode-byte:bind): 次の文字が来ている時に再描画を抑制。
   2576   * ble-edit.sh: exec/gexec 周りの関数名を整理。
   2577   * ble-edit.sh: 関数削除 .ble-edit-isearch.create-visible-text
   2578 
   2579 ## 2015-08-14
   2580 * 構文 function ... に対応、履歴展開 bugfix.
   2581   * ble/src: .srcoption 追加。
   2582   * ble-syntax.sh: defface 関数の色の変更。
   2583   * ble-syntax.sh: 構文 `function ...` に対応。
   2584   * ble-syntax.sh: `function ...`, `hoge ()` の直後に来るコマンドを compound-commands に制限。
   2585   * ble-edit.sh: bugfix, set +H の時も履歴展開が有効になっていた。history -p は set +H と関係なく展開を行う。
   2586   * ble-edit.sh: bugfix, 関数 echo を定義するとコマンドがそれ以上実行できなくなる。echo/printf を builtin を介して呼び出す様に変更。
   2587 * ble/util/assign cleanup, ble/util/type add, .ble-line-prompt/update bugfix.
   2588   * ble-core.sh (ble/util/assign): cleanup, ble/util/sprintf, ble/util/type, ble/util/isfunction でも仕様,
   2589   * ble-core.sh: ble/util/type 追加。$(type -t) はこれを用いて処理する様に変更,
   2590   * ble-edit.sh (.ble-line-prompt/update): bugfix, 地の文の '$' や '`' が escape されてしまい展開されない.
   2591 * ble-edit.sh: プロンプト更新最適化。
   2592 * ble-core.sh (ble/util/assign): $(...) 高速化用関数。
   2593 * shift 高速化、入れ子構造を考慮に入れた単語着色に対応。
   2594   * ble-syntax.sh (ble-syntax/parse/shift): 入れ子構造を考慮に入れた shift,
   2595   * ble-syntax.sh (_ble_syntax_tree): 単語毎の着色情報をデータ配列内に保持するように変更,
   2596   * ble-syntax.sh (ble-highlight-layer:syntax/update-word-table): 入れ子構造を考慮に入れた着色.
   2597 * leak variables: g cs
   2598 * cleanup, leak variables 処置.
   2599 * ble-syntax.sh: 終端していない節も列挙対象に含める。他整理。
   2600   * ble-syntax.sh (ble-syntax/print-status): prints unterminated nodes.
   2601   * ble-syntax.sh: add new functions ble-syntax/tree-enumerate, ble-syntax/tree-enumerate-children.
   2602   * ble-syntax.sh: rename shell variable: _ble_syntax_word -> _ble_syntax_tree.
   2603   * ble-syntax.sh: cleanup.
   2604 
   2605 ## 2015-08-13
   2606 * ble-syntax.sh: clenup, print-status/dump-tree.
   2607 * ble-syntax.sh (_ble_syntax_stat): 解析状態に tchild, tprev (兄・子へのoffset情報) を追加。
   2608 * ble-syntax.sh (_ble_syntax_word): 形式変更。兄・子へのoffset情報はその場で計算する暫定方式。
   2609 
   2610 ## 2015-08-12
   2611 * memo.txt: _ble_syntax_word 形式変更の計画, ble-syntax.sh: clean up
   2612 
   2613 ## 2015-08-11
   2614 * ble-syntax.sh (`_ble_syntax_nest[]`): 形式変更 → "ctx wlen wtype nlen type"
   2615 * ble-syntax.sh (`_ble_syntax_stat[]`): 形式の変更 → "ctx wlen wtype nlen"
   2616 * ble-syntax.sh (`_ble_syntax_word[i]`): 要素の形式を wtype wbegin から wtype wlen に変更
   2617 * ble-edit.sh (.ble-line-info.draw): 制御文字も入れられる様に,
   2618 * ble-syntax.sh (ble-syntax/print-status): Added,
   2619 * ble.pp: 二重起動対策,
   2620 * ble-edit.sh: history load.
   2621 
   2622 ## 2015-08-08
   2623 * ble-syntex.sh (ble-syntax/completion-context/check-prefix): completion at redirect filenames.
   2624 
   2625 ## 2015-07-10
   2626 * memo.txt: Added todos.
   2627 
   2628 ## 2015-06-15
   2629 * modified complete.sh
   2630 
   2631 ## 2015-03-22
   2632 * ble-decode.sh: bugfix, bash-4.1 でも ESC [ を翻訳しないと駄目
   2633 * ble-decode.sh: bugfix, bash-4.1 でも ESC * に登録しないと駄目
   2634 * ble-core.sh, etc.: 一時ファイルを tmp/$UID に置く事にする。
   2635 
   2636 ## 2015-03-12
   2637 * ble-syntax.sh (ble-syntax/parse): stat の設定されていない箇所に word があり、shift されていなかった。
   2638 
   2639 ## 2015-03-08
   2640 * ble-edit.sh (ble-edit/draw/trace): bugfix, LC_COLLATE を設定して正規表現を使用する様に修正。
   2641 * bashbug related bugfix: 幾つかの bugfix, 全て bash のバグが関係していた…。
   2642   - `<bug>` bash-4.1 以下でカーソルの表示位置がずれている。
   2643   - `<bug>` bash-4.2, 4.0, 3.2, 不完全な編集内容に対してエラーが出る
   2644   - `<bug>` bash-4.0, 4.1 でプロンプトが表示されない
   2645   - `<bug>` bash-4.1 以下でプロンプトの色が着かない
   2646 * ble-decode.sh (.ble-decode-char): control/alter/meta/shift/super/hyper prefix が、
   2647   その場で自身に適用されて出力されていた。
   2648 * ble-core.sh (ble/util/declare-print-definitions): 連想配列に対応
   2649 * ble-decode.sh, 他: オプション名 ble_opt を bleopt に統一
   2650 * ble-decode.sh: .ble-decode-char 再実装
   2651   - 修飾機能を send-modified-key (旧 sendkey-mod) に合流
   2652   - C-x @ S 等、ESC 以外の修飾にも対応
   2653   - .ble-decode-char/csi/* による CSI sequence の解釈
   2654   - 新実装に対応する様に cmap/default.sh を書き直し
   2655 
   2656 ## 2015-03-06
   2657 * ble-decode.sh (stty): -icanon の設定。
   2658 * ble-edit.sh (PS1): bugfix, job count, 時刻その他の更新。
   2659 * ble-edit.sh (.ble-line-text/update/postion)
   2660   - bugfix: ascii printable characters の行末で \n を付加した時 ichg に登録していなかった。
   2661   - bugfix: _ble_util_string_prototype の長さ指定に 0 を指定していた
   2662   - bugfix, 行末付近での tab の取り扱い
   2663   - 制御文字も追い出しの対象に。
   2664   - xenl の時、行末で必ず \n を追加する (追い出しの場合なども含め)。
   2665   - 追い出しがあった場合にそれを記録する。
   2666 * ble-edit.sh (.ble-line-text/getxy.cur): カーソル位置を取得する為の getxy を新規作成。
   2667 * ble-edit.sh (ble-edit/draw/trace): 描画属性
   2668   - term.sh: 描画属性について terminfo から読み取る様に。
   2669   - ble-color.sh: 描画属性の点滅、不可視、イタリック、打ち消し線に対応。
   2670   - ble-color.sh: sgr 構築で term.sh の結果を利用する様に変更。
   2671   - ble-edit.sh (.ble-line-prompt): ble-color-g2sgr で端末に依存しない PS1 を書ける様に変更。
   2672 * ble-decode.sh (ble-decode-kbd): bugfix, 複数キーがある場合に正しく処理できていなかった
   2673 * overwrite-mode に対応
   2674 * ble-syntax.sh, ble-color.sh: layer:syntax による色付けを face を介した物に変更。
   2675 * ble-decode.sh, ble-edit.sh: 条件コマンドの統一。test や [ 等を [[ に統一。
   2676 
   2677 ----
   2678 
   2679 <!---------------------------------------------------------------------------->
   2680 # Old ChangeLog
   2681 
   2682 ## 2015-03-03
   2683 
   2684   * ble-edit.sh, ble-edit.color: discard-line の際に着色
   2685   * ble-edit.sh, ble-core.sh, etc: echo を builtin echo に。
   2686   * ble-edit.sh: bugfix, 複数行で上に行けない
   2687   * ble-edit.sh: bugfix, 複数行なのに空行の accept-line でのずれ量が1行になっている
   2688   * プロンプト再実装
   2689     - ble-edit.sh (ble-edit/draw/trace): escape sequences が含まれている文字列の位置追跡。
   2690     - ble-edit.sh (.ble-line-prompt/update): プロンプトの構築を再実装。$() がある場合なども正しい計算。
   2691   * ble-complete.sh (source/command): shopt -s autocd の時にディレクトリ名も候補として列挙。
   2692   * ble-complete.sh: 補完候補の選択の方法を変更。より近くの開始点の物を優先。
   2693 
   2694 ## 2015-03-01
   2695 
   2696   * ble-edit.sh: .ble-edit-draw.goto-xy, .ble-edit-draw.put 廃止
   2697   * complete.sh: 関数名に / が入っていると compgen -c で列挙されないので、別に列挙する。
   2698 
   2699 ## 2015-02-28
   2700 
   2701   * 初期化の最適化
   2702     - ble-decode.sh: ble-decode-kbd 書き直し、ble-bind 書き直し
   2703     - ble-getopt.sh: 多少最適化
   2704     - ble-decode.sh: bash-4.3 でも ESC [ を utf-8 2-byte code で受信する様に変更。
   2705     - ble-decode.sh (.ble-decode-bind/generate-source-to-unbind-default): awk 呼出を一回に統合。
   2706     - ble-decode.sh (.ble-decode-key.bind/unbind): [[ ]] による書き換え、bugfix。
   2707     - ble-decode.sh, bind.sh: bind -x を生成する為のコードを bind.sh に分離。
   2708     - ble-edit.sh, keymap.emacs.sh: keymap 初期化部分の分離、キャッシュ化。
   2709     - ble-edit.sh: history 遅延ロード対応
   2710   * ble-core.sh, ble-color.sh: .ble-shopt-extglob-push/pop/pop-all 廃止
   2711   * ble-edit.sh: bugfix, .ble-line-info.clear で位置がずれる
   2712   * ble-edit.sh: ble-edit/draw/put.il, ble-edit/draw/put.dl
   2713   * ble-color.sh (ble-highlight-layer/update/shift): 長さが変わらない場合でも shift する。
   2714   * ble.pp (include ble-getopt.sh): 現在使っている所がないので取り敢えず外す。
   2715   * ble-syntax.sh (completion-context): 簡単なパラメータ展開に対する対応。
   2716 
   2717 ## 2015-02-27
   2718 
   2719   * [bug] TAB 等の変更文字があった場合に文字列が表示されなくなる
   2720   * bash-3.0, 3.1 対応
   2721     "[bug] bash-3.1 日本語の色付け・描画が変だ"
   2722     - ble-edit.sh, 他: @bash-3.1 bashbug workaround, ${param//%d/x} などは効かないので %d を '' で囲む。
   2723     - ble-syntax.sh, 他: @bash-3.1 bashbug workaround, x${#arr[n]} はバイト数を返す様なので一旦通常変数に入れて ${#var} とする。
   2724     - *.sh: @bash-3.0: += 演算子の置き換え、配列宣言の修正。
   2725     - term.sh: @bash-3.0: bashbug workaround, declare -p で出力すると誤った物になる。
   2726   * ble-edit.sh (.ble-line-text/update/slice): bugfix, 変更文字がある時にもう存在しないローカル変数を参照していた。
   2727   * ble-core.sh: ble-load, ble-autoload
   2728   * complete.sh:, ble-syntax.sh, ble-edit.sh: 文脈依存補完の実装
   2729 
   2730 ## 2015-02-26
   2731 
   2732   * ble-syntax.sh: a+=( a=( に対応
   2733 
   2734 ## 2015-02-25
   2735 
   2736   * ble/term.sh: TERM 依存の部分を分離。キャッシュ化。完全移行ではないが徐々に。
   2737   * ble-decode.sh:
   2738     - [bug] $_ble_base/cache の代わりに $_ble_bash/cache を作成していた
   2739     - [bug] accept-single-line-or-newline が二回目以降常に accept
   2740   * ble-edit.sh:
   2741     - [bug] 複数行の編集時に履歴移動をすると表示が乱れる
   2742     - printf %()T を用いた実装の導入、PS1 \D{...} に対応
   2743     - [bug] 表示の属性の更新がうまく行かない事がある。
   2744     - [bug] 編集文字列の行数が変わった時に info.draw の内容がずれる
   2745   * カーソル移動
   2746     - ble-edit: 複数行編集と項目内でのカーソル移動に対応
   2747     - ble-edit.sh: 複数行コマンドの履歴に対応。
   2748   * ble-syntax.sh: ble-syntax-highlight+syntax を ble-highlight-layer:syntax に書き換え
   2749   * ble-syntax.sh:
   2750     - 関数定義 func() の形式に対応、
   2751     - 条件式 [[ ... ]] と配列初期化子内の文脈に対応。
   2752     - コメントに対応。
   2753     - $[...] の形式に対応 (何故か bash の説明には一切載っていないが使える)。
   2754     - [bug] invalid nest " $()" の先頭に for を挿入した時
   2755 
   2756 ## 2015-02-24
   2757 
   2758   * ble-edit.sh 出力の部分更新に対応 (描画ちらつき対策)
   2759   * ble-syntax.sh: _ble_syntax_word, _ble_syntax_stat の形式の変更
   2760   * ble-syntax.sh: 今迄行っていた dirty-range 拡大の方法を止めて、単に stat の削除を行う。
   2761   * ble-syntax.sh: 及び上記の変更に伴う数々の bugfix
   2762     - [bug] 文字削除時 invalid nest の assertion に引っかかる。
   2763     - [bug] 編集内容が零文字になった瞬間に改行が起こって表示が消える。
   2764     - [bug] 改行しても先頭がコマンドになっていない
   2765     - [bug] _ble_region_highlight_table で空欄になっている箇所がある。
   2766     - [bug] 単語の属性適用が後ろに続く単語にも続いている。
   2767     - [bug] _ble_syntax_attr の中に "BLE_ATTR_ERR" の文字列が混入している。
   2768     - 残っている dirty 拡大と _ble_syntax_word[] の廃止された形式に対する処理の
   2769       コメントアウトされた部分を削除。dirty 拡大の変更に伴う効率化の確認と、
   2770       shift が遅いという事の ToDo 項目の追加。
   2771   * ble-decode.sh: [bug] $_ble_base/cache の代わりに $_ble_bash/cache を作成していた
   2772   * ble-edit.sh: ble-edit+delete-backward-xword の類の動作を変更。
   2773 
   2774 ## 2015-02-23
   2775 
   2776   * ble-core.sh: ble-stackdump, ble-assert
   2777   * [bug] update-positions で dend-dbeg が負になると警告が出る
   2778   * [bug] info.draw で特殊文字が改行に跨っている時の座標計算
   2779 
   2780 ## 2015-02-22
   2781 
   2782   * ble-edit.sh: [bug] .ble-line-info.draw を使った時行がずれる
   2783   * ble-syntax.sh: [bug] for や do に色が着かない?
   2784   * レイヤー化
   2785     - ble-color.sh: レイヤーの仕組み、レイヤ region, adapter, plain + RandomColor
   2786     - ble-edit.sh: レイヤーに対応した表示文字列構築関数。古い構築関数の削除。出力関数の変更。
   2787     - ble-syntax.sh: 多少の変更。
   2788 
   2789 ## 2015-02-21
   2790 
   2791   * 描画の高速化
   2792     - ble-syntax.sh: 属性値の変更範囲に応じて適用を行い、変更範囲を LAYER_MIN, LAYER_MAX に返す様に。
   2793     - ble-edit.sh: 表示用の文字列の構築部分を書き直して部分更新に対応。
   2794     - ble-syntax.sh: 内容に変化のあった word の範囲も記録する様に変更。
   2795     - ble-syntax.sh (parse): _ble_syntax_attr_umin (属性値の変更範囲),
   2796       _ble_syntax_word_umin (word の変更範囲) の累積に対応する為に、これらについても shift を実行する。
   2797 
   2798 ## 2015-02-20
   2799 
   2800   * ble-decode.sh: bind 周り
   2801     - bash-4.3 C-@ を utf-8 2-byte code で受信する様に変更
   2802     - bash-3.1 ESC [ を utf-8 2-byte code で受信する様に変更
   2803     - bugfix, \C-\\ \C-_ \C-^ \C-] に bind できなくなっていた。
   2804     - bind の version 分岐について整理。
   2805     - 既存の bind を ESC に関係なく bind -r する。
   2806   * ble-decode.sh: .ble-decode-key 部分一致探索の処理の再実装。変な動作だった。
   2807   * ble-decode.sh: bugfix, 8bit 文字を正しく bind できていない。c2s で8bit文字が符号化されていた。
   2808   * ble-syntax.sh: 履歴展開は $- に H がある時のみ有効に。
   2809   * ble-syntax.sh: bugfix, bash-4.2 のバグの work around。配列を参照する算術式の書き換え。
   2810   * ble-core.sh: c2s を bash の機能だけで実装できたので fallback を replace。
   2811   * ble-core.sh: bash-4.0 で .ble-text.s2c を連想配列でメモ化
   2812   * ble-edit.sh: bugfix, bash-4.0 で ret に予め特定の値が入っていると c2w に失敗する。
   2813   * ble-edit.sh: bugfix, bind -x 直前のプロンプトの取り扱いは bash-4.0 では bash-3 系と同じ。
   2814   * ble-edit.sh (.ble-line-text.construct 周り): lc lg を後で計算する様に変更。一区切り。一旦 commit する。
   2815 
   2816 ## 2015-02-19
   2817   * ble-syntax.sh: 履歴展開に対応。
   2818   * ble-decode.sh: bugfix, bind -X から bind -x を生成するコード。
   2819     bind -X の出力する形式は再利用不可能な形式でエスケープされているのでこれを変換。
   2820   * ble.pp, etc: noattach 引数に対応。ble-attach/ble-detach 関数の定義。detach の bugfix。
   2821   * ble-edit.sh: bug, bleopt_suppress_bash_output= にした時にプロンプトが二重になる
   2822 
   2823 ## 2015-02-18
   2824 
   2825   * ble.pp, ...: ディレクトリの構成を変更
   2826   * ble-syntax.sh: 文法の対応
   2827     - プロセス置換を単語として扱う様に変更
   2828     - リダイレクトの後の引数に対応
   2829     - リダイレクトの前の fd 部分に対応
   2830   * bash-3.1 対応
   2831     - ble-edit.sh: bash-3.1 で C-d を捕捉できる様に(結構無理のある方法だが)。
   2832     - ble-edit.sh, ble-decode.sh: bugfix, bash-3 でカーソルキーの類が動かない。履歴が読み込まれていない。
   2833     - ble-edis.sh: bash-3.1, bleopt_suppress_bash_output=1 の方が安定して動いているのでこちらで行く。
   2834     - ble-edit.sh: bash-3.1, カーソルキーが効かない。例によって ESC [ ... に関係するコマンドで
   2835       keymap が見付からないエラーになっている。これは ESC [ を CSI (utf-8) に変換してから読み取る事にした。
   2836     - ble-syntax.sh: bash-3.2.48 のバグの work-around, (()) 内で配列要素を参照すると制御が無条件に其処に跳ぶ。
   2837 
   2838 ## 2015-02-17
   2839   * ble-edit.sh (ble-edit/dirty-range): 範囲更新の仕組みを追加。
   2840       _ble_edit_dirty はプロンプト再描画の判定も兼ねているので取り敢えず残す。
   2841   * ble-edit.sh: 変数リーク (グローバル変数の汚染) の修正。line i
   2842   * ble-syntax.sh (ctx-command/check-word-end): 単語終了判定の処理タイミングを変更。
   2843   * ble-syntax.sh: context の追加。CTX_CMDXF CTX_CMDX1 CTX_CMDXV CTX_ARGX0
   2844     より正確な文脈判定・エラー検知。
   2845   * ble-syntax.sh: 他にも多くの修正がある。未だ修正が続きそうなので一旦 commit する。
   2846 
   2847   * ble-edit.sh (accept-line): bug, - で始まるコマンドを実行できない。
   2848   * ble-color.sh: [bug] bg=black を設定しても反映されない。
   2849     "未設定" と "黒" を区別する様に修正。
   2850   * ble-syntax (ble-syntax-highlight+syntax): 入れ子エラーの色の範囲
   2851   * ble-syntax: m, ;& は ;; ;;& 等と同じ取り扱い
   2852   * ble-syntax, etc: bash-3 正規表現対策。bash-3/4 の正規表現の違いに依存しない書き方に変更。
   2853 
   2854 ## 2015-02-16
   2855   * ble-syntax.sh: bugfix, incremental に更新した時に word の長さが更新されない。
   2856     _ble_syntax_word への格納の際に失敗していた。
   2857 
   2858 ## 2015-02-15
   2859   * ble-synatax.sh: bash の文法に従った incremental な解析と色付け。
   2860 
   2861 ## 2015-02-14
   2862   * ble-edit.sh (.ble-line-info.draw): 表示が遅いので修正。
   2863     ASCII 文字は特別扱いする様に改良。劇的に速くなった。
   2864 
   2865 ## 2015-02-13
   2866   * ble-edit.sh (keymap emacs): 既定の keymap に emacs の名を付与。
   2867   * ble-edit.sh (accept-line.exec): bugfix, C-c で再帰呼び出しのループから抜けられない。
   2868     trap DEBUG を用いて再帰呼び出しから抜けられる様に exec 周りを整理・実装し直し。
   2869   * ble-edit.sh: オプション名の変更、各オプションの整理・説明の追加。
   2870   * ble-edit.sh (.ble-edit/gexec): グローバルな文脈でコマンドを実行する仕組み。
   2871     再帰呼出に対する C-c にも対応。bleopt_exec_type で実行の方法を切り替えられる様に。
   2872     exec が従来の方法で gexec がこの新しい方法。
   2873 
   2874 ## 2015-02-12
   2875   * ble-decode.sh: bugfix, exit 後に stty が壊れているのを修正
   2876     これに伴って ble の detach 機能の実装も行った。
   2877   * ble-decode.sh: bugfix, bash-4.3 で三文字以上のシーケンスが悉く聞かない。
   2878     keymap が見付からないエラーになってしまうので全てのシーケンスについて bind -x する事にした。
   2879   * ble-core.sh: bugfix, builtin printf \U.... の使えない環境で command printf fallback が働かない。
   2880     printf のパスを修正。また ASCII に対しては printf は使わない様に変更。
   2881   * ble-color.sh (ble-syntax-highlight+default):
   2882     追加・修正。また選択範囲の反転を ble-syntax-highlight+region として実装し、それを呼び出す形に。
   2883   * ble.pp: 起動時に interactive モードかどうかのチェックを行う様に。
   2884 
   2885 ## 2015-02-11
   2886   * ble-edit.sh (_ble_edit_io_*): ちらつきを抑える為に stdout/stderr を切り替える事にした。
   2887     ちらつくのは bash の既定の出力によって ble の表示がクリアされ、bash の表示したい物が表示されるから。
   2888     これに対抗して ble は bash の出力の直後に上書き再描画して何とか表示していた。
   2889     bash の既定の出力を抑える為に、exec で出力先を切り替える事にした。
   2890     bash の出力はファイルに書き込まれる様にし向ける。出力先ファイルを逐次確認して、
   2891     エラーが出力されていれば visible-bell で表示する事にした。
   2892     `bleopt_suppress_bash_output=1` の時にこの新しい方法を実験的に用いる。
   2893     `bleopt_suppress_bash_output=` の時は従来のちらつく方法。
   2894 
   2895 ## 2015-02-10
   2896   * ble-edit.sh (accept-line.exec): bash-4.3 で内部からグローバル変数を定義できる様に
   2897     declare 及び typeset を上書きして -g オプションを指定する様に変更。
   2898     また、これに関係する注意点を ble.htm に記述。
   2899   * ble-edit.sh (history): ロードに時間が掛かるので最適化。
   2900   * 全般: bugfix, 文字列分割で GLOBIGNORE='*' を設定していないとパス名展開されて危険
   2901   * ble-color.sh (ble-syntax-highlight+default): より良い色づけ。
   2902   * ble-edit.sh (accept-line.exec): ble-bind -cf で bind されたコマンドの実行コンテキストを変更。
   2903     accept-line で実行されるのと同じコンテキストで実行する。
   2904   * ble-edit.sh (keymap default): C-z M-z を fg に bind。
   2905 
   2906 ## 2015-02-09
   2907   * git repos
   2908   * ble-edit: bugfix, locate-xword マクロが展開されていなかった
   2909   * ble-decode: bash-4.3 に対応する為に色々変更
   2910     - bind 指定の場合分けを整理
   2911     - bugfix, ESC ?, ESC [ ? に対して全て bind
   2912     - bugfix, 場合によって全く bind -r できていない
   2913       →"bind -sp | fgrep" が "バイナリ" という結果になる事がある様だ。
   2914         fgrep に -a を指定する。
   2915     - bugfix, 日本語が入力できない。8bit 文字が認識されない。
   2916       →8bit 文字はエスケープシーケンスで bind に指定する様に変更。
   2917 
   2918 ## 2013-06-12
   2919   * ble-edit: history-beginning, history-end, accept-and-next
   2920 
   2921 ## 2013-06-12
   2922   * ble-edit:
   2923     kill-forward-fword, kill-backward-fword, kill-fword,
   2924     copy-forward-fword, copy-backward-fword, copy-fword,
   2925     delete-forward-fword, delete-backward-fword, delete-fword,
   2926     forward-fword, backward-fword
   2927   * ble-edit: history-expand-line, display-shell-version
   2928 
   2929 ## 2013-06-10
   2930   * ble-edit:
   2931     kill-forward-uword, kill-backward-uword, kill-uword, kill-region-or-uword,
   2932     copy-forward-uword, copy-backward-uword, copy-uword, copy-region-or-uword,
   2933     forward-uword, backward-uword
   2934 
   2935   * ble-edit:
   2936     delete-forward-uword, delete-backward-uword, delete-uword, delete-region-or-uword,
   2937     delete-forward-sword, delete-backward-sword, delete-sword, delete-region-or-sword,
   2938     delete-forward-cword, delete-backward-cword, delete-cword, delete-region-or-cword
   2939 
   2940   * ble-edit:
   2941     以下の編集関数を廃止:
   2942       delete-region-or-uword, kill-region-or-uword, copy-region-or-uword,
   2943       delete-region-or-sword, kill-region-or-sword, copy-region-or-sword,
   2944       delete-region-or-cword, kill-region-or-cword, copy-region-or-cword.
   2945     代わりに以下の編集関数を用いる:
   2946       delete-region-or type, kill-region-or type, copy-region-or type.
   2947 
   2948 ## 2013-06-09
   2949   * ble-edit: kill-region, copy-region
   2950   * ble-edit:
   2951     kill-forward-sword, kill-backward-sword, kill-sword, kill-region-or-sword,
   2952     copy-forward-sword, copy-backward-sword, copy-sword, copy-region-or-sword
   2953   * ble-edit:
   2954     kill-forward-cword, kill-backward-cword, kill-cword, kill-region-or-cword,
   2955     copy-forward-cword, copy-backward-cword, copy-cword, copy-region-or-cword
   2956   * ble-edit: forward-sword, backward-sword, forward-cword, backward-cword
   2957 
   2958 ## 2013-06-06
   2959   * ble-edit-bind: 全ての文字・キーが入力可能に。
   2960   * complete: 候補一覧の表示 (簡易版)
   2961   * ble-color.sh: 色付け機能を highlight.sh から移植
   2962 
   2963 ## 2013-06-05
   2964   * ble-edit: history-isearch-backward, history-isearch-forward,
   2965     isearch/self-insert,
   2966     isearch/next, isearch/forward, isearch/backward,
   2967     isearch/exit, isearch/cancel, isearch/default,
   2968     isearch/prev, isearch/accept
   2969   * ble-edit: yank
   2970   * ble-bind -d で今迄に bind した物を表示できる様に。
   2971   * ble-edit: complete, 取り敢えずファイル名補完だけ
   2972   * ble-edit: command-help
   2973 
   2974 ## 2013-06-04
   2975   * ble-edit: discard-line, accept-line
   2976   * ble-edit: history-prev, history-next
   2977   * ble-edit: set-mark, kill-line, kill-backward-line, exchange-point-and-mark
   2978   * ble-edit: clear-screen
   2979   * ble-edit: transpose-chars
   2980   * ble-edit: insert-string
   2981 
   2982 ## 2013-06-03
   2983   * ble-edit: bell, self-insert, redraw-line,
   2984   * ble-edit: delete-char, delete-backward-char, delete-char-or-exit,
   2985     delete-forward-backward-char
   2986   * ble-edit: forward-char, backward-char, end-of-line, beginning-of-line
   2987   * ble-edit: quoted-insert
   2988   * ble.sh: 取り敢えず簡単に文字列を入力できる程度までは完成
   2989 
   2990 ## 2013-06-02
   2991   * ble-getopt.sh: bugfixes
   2992   * ble-getopt.sh: 無事に完了した場合に OPTARGS を unset する様に変更
   2993   * ble-decode-kbd, ble-decode-unkbd
   2994 
   2995 ## 2013-05-31
   2996   * ble-getopt.sh: created
   2997   * ble-decode: 大枠が完成
   2998 
   2999 ## 2013-05-30
   3000   * highlight.sh: 取り敢えず簡単な色付け
   3001   * ble.sh:
   3002 
   3003     -- 経緯 --
   3004     highlight.sh の方針だと bash が表示する編集中の内容を消す事が出来ないし、
   3005     カーソルの位置も bash が表示する物の場所を指している。
   3006     色を付けて表示した物は、補助的に bash が表示する物の下に並べて表示する
   3007     ぐらいしか方法がない。
   3008 
   3009     また readline 関数をスクリプトから呼び出す事が出来ないので、
   3010     結局、色付けを更新したいタイミングで READLINE_LINE や READLINE_POINT の動作を
   3011     スクリプトの側で全て模倣して再現しなければならない。
   3012     READLINE_LINE, READLINE_POINT の bash の仕様が変な所為で、日本語など
   3013     のマルチバイトで正しく処理する為に、色々と汚い事をしなければならない。
   3014 
   3015     以上の事から、文字列の編集などの操作からスクリプトの実行まで
   3016     全部自分で好きな様に実装して bash readline の機能を全て上書きする事にした。
   3017     その為に、スクリプトを新しく書き直す。zle を真似て ble (bash line editor)
   3018     と名付ける。
   3019 
   3020     -- 方針としては --
   3021     a. read -n 1 を用いて 1 文字ずつ標準入力から文字を取り出してそれを処理していく
   3022     b. bash の bind で全ての文字に ble のバイト受信関数を繋げて、
   3023        バイト列を受信しながら処理する。
   3024 
   3025     highlight.sh の延長線上で b. の方針にしたが、
   3026     もしかすると a. の方針も可能かも知れない。
   3027 
   3028 ## 2013-05-29
   3029   * highlight.sh: 作成