bash/.local/share/blesh/lib/core-cmdspec.sh
2024-08-18 03:40:38 +02:00

170 lines
10 KiB
Bash

# Copyright 2015 Koichi Murase <myoga.murase@gmail.com>. All rights reserved.
# This script is a part of blesh (https://github.com/akinomyoga/ble.sh)
# provided under the BSD-3-Clause license. Do not edit this file because this
# is not the original source code: Various pre-processing has been applied.
# Also, the code comments and blank lines are stripped off in the installation
# process. Please find the corresponding source file(s) in the repository
# "akinomyoga/ble.sh".
#
# Source: /lib/core-cmdspec.sh
function ble/cmdspec/initialize { return 0; }
function ble/complete/opts/initialize {
ble/cmdspec/opts mandb-disable-man:no-options : false true
ble/cmdspec/opts mandb-disable-man times
ble/cmdspec/opts mandb-disable-man:mandb-help=%'help "$command"':stop-options-postarg pwd suspend
local help_opt_help=
if ((_ble_bash>=40400)); then
help_opt_help=' --help Show help.'
ble/cmdspec/opts +mandb-help=@"$help_opt_help" times pwd suspend
fi
local help_opt_basic=$help_opt_help'
-- (indicate the end of options)'
ble/cmdspec/opts mandb-disable-man:mandb-help=%'help "$command"':mandb-help=@"$help_opt_basic":stop-options-postarg \
alias bind cd command compgen complete compopt declare dirs disown enable \
exec export fc getopts hash help history jobs kill mapfile popd printf \
pushd read readonly set shopt trap type ulimit umask unalias unset wait
ble/cmdspec/opts mandb-disable-man:mandb-help=@"$help_opt_basic":stop-options-postarg . source fg bg builtin caller eval let
ble/cmdspec/opts mandb-disable-man:mandb-help=@"$help_opt_basic":stop-options-postarg break continue exit logout return shift
local conditional_operators='
-eq (NUM1 -eq NUM2) Arithmetic comparison ==.
-ne (NUM1 -ne NUM2) Arithmetic comparison !=.
-lt (NUM1 -lt NUM2) Arithmetic comparison < .
-le (NUM1 -le NUM2) Arithmetic comparison <=.
-gt (NUM1 -gt NUM2) Arithmetic comparison > .
-ge (NUM1 -ge NUM2) Arithmetic comparison >=.
-nt (FILE1 -nt FILE2) True if file1 is newer than file2 (according to modification date).
-ot (FILE1 -ot FILE2) True if file1 is older than file2.
-ef (FILE1 -ef FILE2) True if file1 is a hard link to file2.'
ble/cmdspec/opts disable-double-hyphen:mandb-help=%'help test':mandb-help=@"$conditional_operators" '[['
local test_operators=$conditional_operators'
-a (EXPR1 -a EXPR2) True if both expr1 AND expr2 are true.
-a (EXPR1 -o EXPR2) True if either expr1 OR expr2 is true.'
ble/cmdspec/opts disable-double-hyphen:mandb-help=%'help test':mandb-help=@"$test_operators":mandb-exclude='^--' 'test' '['
ble/cmdspec/opts +plus-options:mandb-exclude='^[-+]N$' dirs popd pushd
local complete_flags='
-A action The action may be one of the following to generate a list
of possible completions---alias, arrayvar, binding,
builtin, command, directory, disabled, enabled, export,
file, function, group, helptopic, hostname, job, keyword,
running, service, setopt, shopt, signal, stopped, user,
variable.
-o option Set completion option OPTION for each NAME
-a Alias names. May also be specified as `-A alias'\''.
-b Names of shell builtin commands. May also be specified as
`-A builtin'\''.
-c Command names. May also be specified as `-A command'\''.
-d Directory names. May also be specified as `-A
directory'\''.
-e Names of exported shell variables. May also be specified
as `-A export'\''.
-f File names. May also be specified as `-A file'\''.
-g Group names. May also be specified as `-A group'\''.
-j Job names, if job control is active. May also be specified
as `-A job'\''.
-k Shell reserved words. May also be specified as `-A
keyword'\''.
-s Service names. May also be specified as `-A service'\''.
-u User names. May also be specified as `-A user'\''.
-v Names of all shell variables. May also be specified as `-A
variable'\''.
-C command command is executed in a subshell environment, and its
output is used as the possible completions. Arguments are
passed as with the -F option.
-F function The shell function function is executed in the current
shell environment. When the function is executed, the
first argument ($1) is the name of the command whose
arguments are being completed, the second argument ($2) is
the word being completed, and the third argument ($3) is
the word preceding the word being completed on the current
command line. When it finishes, the possible completions
are retrieved from the value of the COMPREPLY array
variable.
-G globpat The pathname expansion pattern globpat is expanded to
generate the possible completions.
-P prefix prefix is added at the beginning of each possible
completion after all other options have been applied.
-S suffix suffix is appended to each possible completion after all
other options have been applied.
-W wordlist The wordlist is split using the characters in the IFS
special variable as delimiters, and each resultant word is
expanded. Shell quoting is honored within wordlist, in
order to provide a mechanism for the words to contain shell
metacharacters or characters in the value of IFS. The
possible completions are the members of the resultant list
which match the word being completed.
-X filterpat filterpat is a pattern as used for pathname expansion. It
is applied to the list of possible completions generated by
the preceding options and arguments, and each completion
matching filterpat is removed from the list. A leading !
in filterpat negates the pattern; in this case, any
completion not matching filterpat is removed.'
ble/cmdspec/opts +mandb-help-usage:mandb-help=@"$complete_flags" complete compgen
ble/cmdspec/opts +plus-options=o compopt
ble/cmdspec/opts mandb-disable-man:mandb-help=%'help declare':mandb-help=@"$help_opt_basic":stop-options-postarg typeset local
ble/cmdspec/opts +plus-options=aAilnrtux declare typeset local
ble/cmdspec/opts mandb-disable-man:mandb-help=%'help echo':stop-options-unless='^-[neE]+$' echo
ble/cmdspec/opts +mandb-help=@'
-s With the `fc -s [pat=rep ...] [command]'\'' format, COMMAND
is re-executed after the substitution OLD=NEW is performed.' fc
ble/cmdspec/opts +mandb-help=@'
-x If -x is supplied, COMMAND is run after all job
specifications that appear in ARGS have been replaced with
the process ID of that job'\''s process group leader.' jobs
ble/cmdspec/opts mandb-disable-man:mandb-help=%'help mapfile':mandb-help=@"$help_opt_basic":stop-options-postarg readarray
ble/cmdspec/opts +plus-options=abefhkmnptuvxBCEHPTo set
((_ble_bash>=40300)) &&
ble/cmdspec/opts +mandb-help-usage:mandb-help=@'
-n waits for a single job from the list of IDs, or, if no IDs
are supplied, for the next job to complete and returns its
exit status.' wait
((_ble_bash>=50000)) &&
ble/cmdspec/opts +mandb-help-usage:mandb-help=@'
-f If job control is enabled, waits for the specified ID to
terminate, instead of waiting for it to change status.' wait
((_ble_bash>=50100)) &&
ble/cmdspec/opts +mandb-help-usage:mandb-help=@'
-p the process or job identifier of the job for which the exit
status is returned is assigned to the variable VAR named by
the option argument. The variable will be unset initially,
before any assignment. This is useful only when the -n
option is supplied.' wait
ble/cmdspec/opts mandb-help rsync
}
ble/complete/opts/initialize
function ble/cmdinfo/cmd:declare/chroma.wattr {
local ret
if ((wtype==_ble_attr_VAR)); then
ble/syntax:bash/find-rhs "$wtype" "$wbeg" "$wlen" element-assignment &&
ble/progcolor/highlight-filename.wattr "$ret" "$wend"
else
ble/progcolor/eval-word || return "$?"
local wval=$ret
if ble/string#match "$wval" '^([_a-zA-Z][_a-zA-Z0-9]*)(\[.+\])?$'; then
local varname=${BASH_REMATCH[1]}
ble/syntax/highlight/vartype "$varname" global
ble/progcolor/wattr#setattr "$wbeg" "$ret"
ble/progcolor/wattr#setattr "$((wbeg+${#varname}))" d
elif ble/string#match "$wval" '^[-+]' && ble/progcolor/is-option-context; then
local ret; ble/color/face2g argument_option
ble/progcolor/wattr#setg "$wbeg" "$ret"
else
local ret; ble/color/face2g argument_error
ble/progcolor/wattr#setg "$wbeg" "$ret"
fi
fi
return 0
}
function ble/cmdinfo/cmd:declare/chroma {
local i "${_ble_syntax_progcolor_vars[@]/%/=}" # WA #D1570 checked
for ((i=1;i<${#comp_words[@]};i++)); do
local ref=${tree_words[i]}
[[ $ref ]] || continue
local progcolor_iword=$i
ble/progcolor/load-word-data "$ref"
ble/progcolor/@wattr ble/cmdinfo/cmd:declare/chroma.wattr
done
}
function ble/cmdinfo/cmd:typeset/chroma { ble/cmdinfo/cmd:declare/chroma "$@"; }
function ble/cmdinfo/cmd:local/chroma { ble/cmdinfo/cmd:declare/chroma "$@"; }
function ble/cmdinfo/cmd:readonly/chroma { ble/cmdinfo/cmd:declare/chroma "$@"; }
function ble/cmdinfo/cmd:export/chroma { ble/cmdinfo/cmd:declare/chroma "$@"; }