From eb4ffceefb236edfef72ffc1c387efb3222da9cd Mon Sep 17 00:00:00 2001 From: Koichi Murase Date: Tue, 14 Feb 2023 20:09:24 +0900 Subject: [PATCH] global: work around bash-4.4 no-argument return in trap --- ble.pp | 2 +- blerc.template | 2 +- contrib | 2 +- docs/ChangeLog.md | 1 + lib/core-complete.sh | 2 +- lib/core-syntax.sh | 6 ++-- make_command.sh | 57 ++++++++++++++++++------------ memo/D1405.extract-man.sh | 10 +++--- memo/D1589-ConvertAirlineThemes.sh | 8 ++--- memo/D1645.check-c2w-table.sh | 4 +-- memo/D1782.test.sh | 4 +-- note.txt | 11 +++--- src/canvas.sh | 6 ++-- src/decode.sh | 8 ++--- src/edit.sh | 5 +-- src/util.hook.sh | 2 +- src/util.sh | 10 +++--- 17 files changed, 77 insertions(+), 63 deletions(-) diff --git a/ble.pp b/ble.pp index dd0d9009..c933b41e 100644 --- a/ble.pp +++ b/ble.pp @@ -2337,7 +2337,7 @@ function ble/base/attach-from-PROMPT_COMMAND { # #D1354: 入れ子の ble/base/attach-from-PROMPT_COMMAND の時は一番 # 外側で ble-attach を実行する様にする。3>&2 2>/dev/null のリダ # イレクトにより stdout.off の効果が巻き戻されるのを防ぐ為。 - [[ ${ble_base_attach_from_prompt_command-} != processing ]] || return + [[ ${ble_base_attach_from_prompt_command-} != processing ]] || return 0 fi # 既に attach 状態の時は処理はスキップ diff --git a/blerc.template b/blerc.template index 8e2e6db4..9d70bd7e 100644 --- a/blerc.template +++ b/blerc.template @@ -932,7 +932,7 @@ function blerc/emacs-load-hook { #ble-bind -f 'M-C-h' kill-backward-cword #ble-bind -f 'M-BS' kill-backward-cword - return + return 0 } blehook/eval-after-load keymap_emacs blerc/emacs-load-hook diff --git a/contrib b/contrib index b365f5dd..1444569b 160000 --- a/contrib +++ b/contrib @@ -1 +1 @@ -Subproject commit b365f5dd75121b4259d5080d03a2d868f45305d3 +Subproject commit 1444569b50e150b6101bea578b60895682c53469 diff --git a/docs/ChangeLog.md b/docs/ChangeLog.md index 161abcf1..4b6303e3 100644 --- a/docs/ChangeLog.md +++ b/docs/ChangeLog.md @@ -535,6 +535,7 @@ - edit: update prompts on g2sgr change `#D1906` 40625ac - util, decode, vi: fix leak variables `#D1933` 8d5cab8 - util: support `bleopt debug_idle` `#D1945` fa10184 +- global: work around bash-4.4 no-argument return in trap `#D1970` xxxxxxx ## Contrib diff --git a/lib/core-complete.sh b/lib/core-complete.sh index 78d81df3..39b52bd2 100644 --- a/lib/core-complete.sh +++ b/lib/core-complete.sh @@ -4048,7 +4048,7 @@ function ble/complete/mandb/search-file { local path ble/complete/mandb/search-file/.extract-path "$command" - ble/complete/mandb/search-file/.check "$path" && return + ble/complete/mandb/search-file/.check "$path" && return 0 # Get manpaths ble/string#split ret : "$MANPATH" diff --git a/lib/core-syntax.sh b/lib/core-syntax.sh index 4503a99e..eb0f14e2 100644 --- a/lib/core-syntax.sh +++ b/lib/core-syntax.sh @@ -5584,7 +5584,7 @@ function ble/syntax/completion-context/.check-prefix/ctx:quote/.check-container- ble/syntax/completion-context/.add argument "$wbeg2" elif ((wt==CTX_CPATI)); then # case pattern の内部 #ble/syntax/completion-context/.add file "$wbeg2" - return + return 0 fi fi } @@ -7436,7 +7436,7 @@ function ble/highlight/layer:syntax/update { _ble_highlight_layer_syntax_active= PREV_UMIN=0 PREV_UMAX=${#1} fi - return + return 0 fi # 前回 layer:syntax が無効だった時 @@ -7532,7 +7532,7 @@ function ble/highlight/layer:syntax/update { } function ble/highlight/layer:syntax/getg { - [[ ! $bleopt_highlight_syntax ]] && return + [[ $bleopt_highlight_syntax ]] || return 1 local i=$1 if [[ ${_ble_highlight_layer_syntax3_table[i]} ]]; then g=${_ble_highlight_layer_syntax3_table[i]} diff --git a/make_command.sh b/make_command.sh index 92b139e4..dbad1ffc 100755 --- a/make_command.sh +++ b/make_command.sh @@ -1074,6 +1074,8 @@ function sub:check-all { #------------------------------------------------------------------------------ # sub:scan +_make_rex_escseq='(\[[ -?]*[@-~])*' + function sub:scan/grc-source { local -a options=(--color --exclude=./{test,memo,ext,wiki,contrib,[TD]????.*} --exclude=\*.{md,awk} --exclude=./{GNUmakefile,make_command.sh}) grc "${options[@]}" "$@" @@ -1113,12 +1115,12 @@ function sub:scan/list-command { function sub:scan/builtin { echo "--- $FUNCNAME $1 ---" - local command=$1 esc='(\[[ -?]*[@-~])*' + local command=$1 esc=$_make_rex_escseq sub:scan/list-command --exclude-this --exclude={generate-release-note.sh,lib/test-*.sh,make,ext} "$command" "${@:2}" | grep -Ev "$rex_grep_head([[:space:]]*|[[:alnum:][:space:]]*[[:space:]])#|(\b|$esc)(builtin|function)$esc([[:space:]]$esc)+$command(\b|$esc)" | grep -Ev "$command(\b|$esc)=" | grep -Ev "ble\.sh $esc\($esc$command$esc\)$esc" | - sed -E 'h;s/'"$esc"'//g;\Z(\.awk|push|load|==) \b'"$command"'\bZd;g' + sed -E 'h;s/'"$_make_rex_escseq"'//g;\Z(\.awk|push|load|==) \b'"$command"'\bZd;g' } function sub:scan/check-todo-mark { @@ -1164,13 +1166,27 @@ function sub:scan/bash501-arith-base { grc '\b10#\$' --exclude={test,ChangeLog.md} } +function sub:scan/bash404-no-argument-return { + echo "--- $FUNCNAME ---" + grc --color 'return[[:space:]]*($|[;|&<>])' --exclude={test,wiki,ChangeLog.md,make,docs,make_command.sh} | + sed -E 'h;s/'"$_make_rex_escseq"'//g;s/^[^:]*:[0-9]+:[[:space:]]*// + + \Z@returnZd + \Z\) return;Zd + \Zreturn;[[:space:]]*$Zd + \Zif \(REQ == "[A-Z]+"\)Zd + \Z\(return\|ret\)Zd + \Z_ble_trap_done=return$Zd + + g' +} + function sub:scan/bash502-patsub_replacement { echo "--- $FUNCNAME ---" # bash-5.2 patsub_replacement で ${var/pat/string} の string 中の & が特別な # 意味を持つ様になったので、特に意識する場合を除いては quote が必要になった。 - local esc='(\[[ -?]*[@-~])*' grc --color '\$\{[[:alnum:]_]+(\[[^][]*\])?//?([^{}]|\{[^{}]*\})+/[^{}"'\'']*([&$]|\\)' --exclude=./test | - sed -E 'h;s/'"$esc"'//g;s/^[^:]*:[0-9]+:[[:space:]]*// + sed -E 'h;s/'"$_make_rex_escseq"'//g;s/^[^:]*:[0-9]+:[[:space:]]*// \Z//?\$q/\$Q\}Zd \Z//?\$q/\$qq\}Zd \Z//?\$qq/\$q\}Zd @@ -1187,7 +1203,7 @@ function sub:scan/bash502-patsub_replacement { g' grc --color '"[^"]*\$\{[[:alnum:]_]+(\[[^][]*\])?//?([^{}]|\{[^{}]*\})+/[^{}"'\'']*"[^"]*([&$]|\\)' --exclude=./test | - sed -E 'h;s/'"$esc"'//g;s/^[^:]*:[0-9]+:[[:space:]]*// + sed -E 'h;s/'"$_make_rex_escseq"'//g;s/^[^:]*:[0-9]+:[[:space:]]*// \Z#D1751Zd g' } @@ -1250,9 +1266,8 @@ function sub:scan/array-count-in-arithmetic-expression { # unset 変数名 としていると誤って関数が消えることがある。 function sub:scan/unset-variable { echo "--- $FUNCNAME ---" - local esc='(\[[ -?]*[@-~])*' sub:scan/list-command unset --exclude-this | - sed -E 'h;s/'"$esc"'//g;s/^[^:]*:[0-9]+:[[:space:]]*// + sed -E 'h;s/'"$_make_rex_escseq"'//g;s/^[^:]*:[0-9]+:[[:space:]]*// \Zunset[[:space:]]-[vf]Zd \Z^[[:space:]]*#Zd \Zunset _ble_init_(version|arg|exit|command)\bZd @@ -1265,9 +1280,8 @@ function sub:scan/unset-variable { } function sub:scan/eval-literal { echo "--- $FUNCNAME ---" - local esc='(\[[ -?]*[@-~])*' sub:scan/grc-source 'builtin eval "\$' | - sed -E 'h;s/'"$esc"'//g;s/^[^:]*:[0-9]+:[[:space:]]*// + sed -E 'h;s/'"$_make_rex_escseq"'//g;s/^[^:]*:[0-9]+:[[:space:]]*// \Zeval "(\$[[:alnum:]_]+)+(\[[^]["'\''\$`]+\])?\+?=Zd g' } @@ -1284,10 +1298,8 @@ function sub:scan/mistake-_ble_bash { function sub:scan/command-layout { echo "--- $FUNCNAME ---" - local esc='(\[[ -?]*[@-~])*' - grc '/(enter-command-layout|\.insert-newline|\.newline)([[:space:]]|$)' --exclude=./{text,ext} --exclude=./make_command.sh --exclude=\*.md --color | - sed -E 'h;s/'"$esc"'//g;s/^[^:]*:[0-9]+:[[:space:]]*// + sed -E 'h;s/'"$_make_rex_escseq"'//g;s/^[^:]*:[0-9]+:[[:space:]]*// \Z^[[:space:]]*#Zd \Z^[[:space:]]*function [^[:space:]]* \{$Zd \Z[: ]keep-infoZd @@ -1300,7 +1312,7 @@ function sub:scan/word-splitting-number { # #D1835 一般には IFS に整数が含まれるている場合もあるので ${#...} や # $((...)) や >&$fd であってもちゃんと quote する必要がある。 grc '[<>]&\$|([[:space:]]|=\()\$(\(\(|\{#|\?)' --exclude={docs,mwg_pp.awk} | - sed -E 'h;s/'"$esc"'//g;s/^[^:]*:[0-9]+:[[:space:]]*// + sed -E 'h;s/'"$_make_rex_escseq"'//g;s/^[^:]*:[0-9]+:[[:space:]]*// \Z^[^#]*(^|[[:space:]])#Zd \Z^([^"]|"[^\#]*")*"[^"]*([& (]\$)Zd \Z^[^][]*\[\[[^][]*([& (]\$)Zd @@ -1318,21 +1330,21 @@ function sub:scan { exit fi - local esc='(\[[ -?]*[@-~])*' + local esc=$_make_rex_escseq local rex_grep_head="^$esc[[:graph:]]+$esc:$esc[[:digit:]]*$esc:$esc" # builtin return break continue : eval echo unset は unset しているので大丈夫のはず #sub:scan/builtin 'history' sub:scan/builtin 'echo' --exclude=./keymap/vi_test.sh --exclude=./ble.pp | - sed -E 'h;s/'"$esc"'//g;s/^[^:]*:[0-9]+:[[:space:]]*// + sed -E 'h;s/'"$_make_rex_escseq"'//g;s/^[^:]*:[0-9]+:[[:space:]]*// \Z\bstty[[:space:]]+echoZd \Zecho \$PPIDZd \Zmandb-help=%'\''help echo'\''Zd g' #sub:scan/builtin '(compopt|type|printf)' sub:scan/builtin 'bind' | - sed -E 'h;s/'"$esc"'//g;s/^[^:]*:[0-9]+:[[:space:]]*// + sed -E 'h;s/'"$_make_rex_escseq"'//g;s/^[^:]*:[0-9]+:[[:space:]]*// \Zinvalid bind typeZd \Zline = "bind"Zd \Z'\'' bindZd @@ -1341,18 +1353,18 @@ function sub:scan { \Zoutputs of the "bind" builtinZd g' sub:scan/builtin 'read' | - sed -E 'h;s/'"$esc"'//g;s/^[^:]*:[0-9]+:[[:space:]]*// + sed -E 'h;s/'"$_make_rex_escseq"'//g;s/^[^:]*:[0-9]+:[[:space:]]*// \ZDo not read Zd \Zfailed to read Zd g' sub:scan/builtin 'exit' | - sed -E 'h;s/'"$esc"'//g;s/^[^:]*:[0-9]+:[[:space:]]*// + sed -E 'h;s/'"$_make_rex_escseq"'//g;s/^[^:]*:[0-9]+:[[:space:]]*// \Zble.pp.*return 1 2>/dev/null || exit 1Zd \Z^[-[:space:][:alnum:]_./:=$#*]+('\''[^'\'']*|"[^"()`]*|([[:space:]]|^)#.*)\bexit\bZd \Z\(exit\) ;;Zd \Zprint NR; exit;Zd;g' sub:scan/builtin 'eval' | - sed -E 'h;s/'"$esc"'//g;s/^[^:]*:[0-9]+:[[:space:]]*// + sed -E 'h;s/'"$_make_rex_escseq"'//g;s/^[^:]*:[0-9]+:[[:space:]]*// \Z\('\''eval'\''\)Zd \Zbuiltins1=\(.* eval .*\)Zd \Z\^eval --Zd @@ -1364,7 +1376,7 @@ function sub:scan { \ZLINENO=\$_ble_edit_LINENO evalZd g' sub:scan/builtin 'unset' | - sed -E 'h;s/'"$esc"'//g;s/^[^:]*:[0-9]+:[[:space:]]*// + sed -E 'h;s/'"$_make_rex_escseq"'//g;s/^[^:]*:[0-9]+:[[:space:]]*// \Zunset _ble_init_(version|arg|exit|command)\bZd \Zreadonly -f unsetZd \Zunset -f builtinZd @@ -1372,13 +1384,13 @@ function sub:scan { \Z"\$__ble_proc" "\$__ble_name" unsetZd g' sub:scan/builtin 'unalias' | - sed -E 'h;s/'"$esc"'//g;s/^[^:]*:[0-9]+:[[:space:]]*// + sed -E 'h;s/'"$_make_rex_escseq"'//g;s/^[^:]*:[0-9]+:[[:space:]]*// \Zbuiltins1=\(.* unalias .*\)Zd g' #sub:scan/assign sub:scan/builtin trap | - sed -E 'h;s/'"$esc"'//g;s/^[^:]*:[0-9]+:[[:space:]]*// + sed -E 'h;s/'"$_make_rex_escseq"'//g;s/^[^:]*:[0-9]+:[[:space:]]*// \Z_ble_trap_handler="trap -- '\''\$\{_ble_trap_handler//\$q/\$Q}'\'' \$nZd \Zline = "bind"Zd \Ztrap_command=["'\'']trap -- Zd @@ -1394,6 +1406,7 @@ function sub:scan { sub:scan/check-todo-mark sub:scan/bash300bug sub:scan/bash301bug-array-element-length + sub:scan/bash404-no-argument-return sub:scan/bash501-arith-base sub:scan/bash502-patsub_replacement sub:scan/gawk402bug-regex-check diff --git a/memo/D1405.extract-man.sh b/memo/D1405.extract-man.sh index b418de4b..162055c8 100755 --- a/memo/D1405.extract-man.sh +++ b/memo/D1405.extract-man.sh @@ -13,16 +13,16 @@ function ble/complete/mandb/search-file { local command=$1 # Try "man -w" first - ble/complete/mandb/search-file/.check "$(man -w "$command" 2>/dev/null)" && return + ble/complete/mandb/search-file/.check "$(man -w "$command" 2>/dev/null)" && return 0 local manpath=${MANPATH:-/usr/share/man:/usr/local/share/man:/usr/local/man} ble/string#split manpath : "$manpath" local path for path in "${manpath[@]}"; do - ble/complete/mandb/search-file/.check "$path/man1/$man.1.gz" && return - ble/complete/mandb/search-file/.check "$path/man1/$man.1" && return - ble/complete/mandb/search-file/.check "$path/man1/$man.8.gz" && return - ble/complete/mandb/search-file/.check "$path/man1/$man.8" && return + ble/complete/mandb/search-file/.check "$path/man1/$man.1.gz" && return 0 + ble/complete/mandb/search-file/.check "$path/man1/$man.1" && return 0 + ble/complete/mandb/search-file/.check "$path/man1/$man.8.gz" && return 0 + ble/complete/mandb/search-file/.check "$path/man1/$man.8" && return 0 done return 1 } diff --git a/memo/D1589-ConvertAirlineThemes.sh b/memo/D1589-ConvertAirlineThemes.sh index b111e009..b50846ac 100644 --- a/memo/D1589-ConvertAirlineThemes.sh +++ b/memo/D1589-ConvertAirlineThemes.sh @@ -47,16 +47,16 @@ function face { # check mode case ${mode%_modified} in (normal|insert|replace|visual|commandline|inactive) ;; - (accents|tabline|ctrlp|terminal) return ;; - (*_paste|insert_replace|normal_error|insert_error) return ;; + (accents|tabline|ctrlp|terminal) return 0 ;; + (*_paste|insert_replace|normal_error|insert_error) return 0 ;; (*) ble/util/print "$theme: Unknown mode '$mode'" >&2 esac # check face case $face in (airline_[abcxyz]|airline_error|airline_term|airline_warning) ;; - (airline_*_to_airline_*) return ;; - (airline_file) return ;; # ?????? itchyny/landscape.vim で使用 + (airline_*_to_airline_*) return 0 ;; + (airline_file) return 0 ;; # ?????? itchyny/landscape.vim で使用 (*) ble/util/print "$theme: Unknown face type '$face'" >&2 esac diff --git a/memo/D1645.check-c2w-table.sh b/memo/D1645.check-c2w-table.sh index a54502e8..82a85cca 100755 --- a/memo/D1645.check-c2w-table.sh +++ b/memo/D1645.check-c2w-table.sh @@ -19,7 +19,7 @@ function dump { function c2w.binary { local c=$1 ret=${_ble_unicode_EastAsianWidth_c2w[c]} - [[ $ret ]] && return + [[ $ret ]] && return 0 local l u m ((l=0,u=${#_ble_unicode_EastAsianWidth_c2w_ranges[@]}-1)) @@ -38,7 +38,7 @@ function c2w.binary { function c2w.bindex { local c=$1 ret=${_ble_unicode_EastAsianWidth_c2w[c]} - [[ $ret ]] && return + [[ $ret ]] && return 0 ret=${_ble_unicode_EastAsianWidth_c2w_index[c<0x20000?c>>8:((c>>12)-32+512)]} if [[ $ret == *:* ]]; then diff --git a/memo/D1782.test.sh b/memo/D1782.test.sh index 9156552a..5be691be 100644 --- a/memo/D1782.test.sh +++ b/memo/D1782.test.sh @@ -5,7 +5,7 @@ flag= shopt -s extdebug function set_exit { - return $1 + return "$1" } function set_trap { # DEBUG trap の中で trap や return を実行しても "現在のコマンド" は @@ -20,7 +20,7 @@ function set_trap { # Note: continue や return の前に指定した終了ステータスは DEBUG trap # (extdebug) の振る舞いには関係ない。 # - #trap '[[ $flag == 1 ]] && { echo "cmd:$FUNCNAME/$BASH_COMMAND"; set_exit 2; return; }' DEBUG + #trap '[[ $flag == 1 ]] && { echo "cmd:$FUNCNAME/$BASH_COMMAND"; set_exit 2; return 2; }' DEBUG trap '[[ $flag == 1 ]] && { echo "cmd:$FUNCNAME/$BASH_COMMAND"; shopt -s extdebug; set_exit 2; }' DEBUG } diff --git a/note.txt b/note.txt index e0128cf3..33428be4 100644 --- a/note.txt +++ b/note.txt @@ -1935,12 +1935,7 @@ bash_tips - todo 項目の整理 - leakvars - keymap の移動 (これは別 commit にする?) - -2023-02-14 - - * no-argument return がまたある。make scan でチェックするべき。 - - $ grc 'return[[:space:]]*($|[;|&])' + - make_command.sh の整理 (scan 分離, char_width 分離) 2023-02-12 @@ -6657,6 +6652,10 @@ bash_tips 2023-02-14 + * make: no-argument return がまたある。make scan でチェックするべき [#D1970] + + $ grc 'return[[:space:]]*($|[;|&])' + * histdb: git info 等追加情報を user の指定で記録できる様にする [#D1969] → "bleopt histdb_remarks" として実装した。 diff --git a/src/canvas.sh b/src/canvas.sh index 36ebee46..dc6611fe 100644 --- a/src/canvas.sh +++ b/src/canvas.sh @@ -1391,7 +1391,7 @@ function ble/canvas/trace/.put-atomic.draw { } function ble/canvas/trace/.put-ascii.draw { local value=$1 w=${#1} - [[ $value ]] || return + [[ $value ]] || return 0 if [[ $flag_clip ]]; then local xL=$x xR=$((x+w)) @@ -2898,14 +2898,14 @@ function ble/canvas/goto.draw { _ble_canvas_excursion_x= _ble_canvas_excursion_y= function ble/canvas/excursion-start.draw { - [[ $_ble_canvas_excursion ]] && return + [[ $_ble_canvas_excursion ]] && return 1 _ble_canvas_excursion=1 _ble_canvas_excursion_x=$_ble_canvas_x _ble_canvas_excursion_y=$_ble_canvas_y ble/canvas/put.draw "$_ble_term_sc" } function ble/canvas/excursion-end.draw { - [[ $_ble_canvas_excursion ]] || return + [[ $_ble_canvas_excursion ]] || return 1 _ble_canvas_excursion= ble/canvas/put.draw "$_ble_term_rc" _ble_canvas_x=$_ble_canvas_excursion_x diff --git a/src/decode.sh b/src/decode.sh index c7127b2c..506eafe2 100644 --- a/src/decode.sh +++ b/src/decode.sh @@ -322,24 +322,24 @@ function ble-decode-kbd { case $spec in (keys:*) ret="${spec#*:}" - return ;; + return 0 ;; (chars:*) local chars ble/string#split-words chars "${spec#*:}" ble/decode/cmap/decode-chars "${ret[@]}" ret="${keys[*]}" - return ;; + return 0 ;; (keyseq:*) # i.e. untranslated keyseq local keys ble/util/keyseq2chars "${spec#*:}" ble/decode/cmap/decode-chars "${ret[@]}" ret="${keys[*]}" - return ;; + return 0 ;; (raw:*) # i.e. translated keyseq ble/util/s2chars "${spec#*:}" ble/decode/cmap/decode-chars "${ret[@]}" ret="${keys[*]}" - return ;; + return 0 ;; (kspecs:*) spec=${spec#*:} ;; esac diff --git a/src/edit.sh b/src/edit.sh index 91add8fe..0656e4e0 100644 --- a/src/edit.sh +++ b/src/edit.sh @@ -1268,10 +1268,11 @@ function ble/prompt/.get-keymap-for-current-mode { keymap=$_ble_decode_keymap local index=${#_ble_decode_keymap_stack[@]} while :; do - case $keymap in (vi_?map|emacs) return ;; esac + case $keymap in (vi_?map|emacs) return 0 ;; esac ((--index<0)) && break keymap=${_ble_decode_keymap_stack[index]} done + return 1 } function ble/prompt/.uses-builtin-prompt-expansion { @@ -6874,7 +6875,7 @@ function ble/widget/.insert-newline/trim-prompt { local ps1f=$bleopt_prompt_ps1_final local ps1t=$bleopt_prompt_ps1_transient if [[ ! $ps1f && :$ps1t: == *:trim:* ]]; then - [[ :$ps1t: == *:same-dir:* && $PWD != $_ble_prompt_trim_opwd ]] && return + [[ :$ps1t: == *:same-dir:* && $PWD != $_ble_prompt_trim_opwd ]] && return 0 local y=${_ble_prompt_ps1_data[4]} if ((y)); then ble/canvas/panel#goto.draw "$_ble_textarea_panel" 0 0 diff --git a/src/util.hook.sh b/src/util.hook.sh index 7f24ab0c..e9f28ff6 100644 --- a/src/util.hook.sh +++ b/src/util.hook.sh @@ -6,7 +6,7 @@ ## @fn blehook/.print ## @var[in] flags function blehook/.print { - (($#)) || return + (($#)) || return 0 local out= q=\' Q="'\''" nl=$'\n' local sgr0= sgr1= sgr2= sgr3= diff --git a/src/util.sh b/src/util.sh index 09affc98..8c04ffb4 100644 --- a/src/util.sh +++ b/src/util.sh @@ -1198,7 +1198,7 @@ else function ble/string#quote-command { if (($#<=1)); then ret=$1 - return + return 0 fi local q=\' Q="'\''" IFS=$_ble_term_IFS ret=("${@:2}") @@ -1228,14 +1228,14 @@ function ble/string#quote-word { if [[ ! $ret ]]; then [[ :$opts: == *:quote-empty:* ]] && ret=$sgrq\'\'$sgr0 - return + return 0 fi local chars=$'\a\b\e\f\n\r\t\v' if [[ $ret == *["$chars"]* ]]; then ble/string#escape-for-bash-escape-string "$ret" ret=$sgrq\$\'$ret\'$sgr0 - return + return 0 fi local chars=$_ble_term_IFS'"`$\<>()|&;*?[]!^=:{,}#~' q=\' @@ -5832,7 +5832,7 @@ _ble_term_TERM_done= function ble/term/DA2/initialize-term { local depth=$1 local DA2R=${_ble_term_DA2R[depth]} - local rex='^[0-9]*(;[0-9]*)*$'; [[ $DA2R =~ $rex ]] || return + local rex='^[0-9]*(;[0-9]*)*$'; [[ $DA2R =~ $rex ]] || return 1 local da2r ble/string#split da2r ';' "$DA2R" da2r=("${da2r[@]/#/10#0}") # 0で始まっていても10進数で解釈; WA #D1570 checked (is-array) @@ -5915,7 +5915,7 @@ function ble/term/DA2/initialize-term { ((354<=version&&version<2000)) else false - fi && { _ble_term_TERM[depth]=xterm:$version; return; } + fi && { _ble_term_TERM[depth]=xterm:$version; return 0; } fi _ble_term_TERM[depth]=unknown:-