mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-01-28 14:22:22 +01:00
Merge branch 'master' into schaefer/badarrays
This commit is contained in:
commit
3ba5e6b909
5 changed files with 104 additions and 35 deletions
11
ChangeLog
11
ChangeLog
|
@ -1,3 +1,14 @@
|
|||
2017-06-01 Peter Stephenson <p.stephenson@samsung.com>
|
||||
|
||||
* 41191: Src/Zle/textobjects.c, Src/Zle/zle.h,
|
||||
Src/Zle/zle_keymap.c: Check for .thingy when we check for a
|
||||
particular thingy.
|
||||
|
||||
2017-05-30 Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>
|
||||
|
||||
* 41177: Completion/Unix/Command/_nm: add support for macOS
|
||||
and OpenBSD
|
||||
|
||||
2017-05-26 Peter Stephenson <p.stephenson@samsung.com>
|
||||
|
||||
* 41164: Src/hashtable.c, Src/hist.c, Src/zsh.h: Don't free a
|
||||
|
|
|
@ -5,55 +5,62 @@ local args files variant
|
|||
files="*:object file:_object_files"
|
||||
args=(
|
||||
'(-A -o --print-file-name)'{-A,-o,--print-file-name}'[print name of input file on each line]'
|
||||
'(--demangle)-C[decode symbol names]'
|
||||
'(--demangle --no-demangle)-C[decode symbol names]'
|
||||
'(-D --dynamic)'{-D,--dynamic}'[display dynamic symbols instead of normal ones]'
|
||||
'(-g --extern-only)'{-g,--extern-only}'[display only global symbols]'
|
||||
'(-t --radix -o -x)'{-t,--radix}'[specify radix for numeric values]:radix:((d\:decimal o\:octal x\:hexadecimal))'
|
||||
)
|
||||
|
||||
if _pick_variant -r variant binutils=GNU elftoolchain=elftoolchain elfutils=elfutils unix -V; then
|
||||
compset -P '@' && files='*:options file:_files'
|
||||
args+=(
|
||||
'(- *)--help[display help information]'
|
||||
'(- *)--version[display version information]'
|
||||
'(- *)'{-V,--version}'[display version information]'
|
||||
'(-f --format -P --portability)-B[same as --format=bsd]'
|
||||
'(-C --no-demangle)--demangle=-[decode symbol names]::style:(auto gnu lucid arm hp edg gnu-v3 java gnat)'
|
||||
"(-C --demangle)--no-demangle[don't decode symbol names]"
|
||||
'(-u --undefined-only)--defined-only[display only defined symbols]'
|
||||
'(-f --format -P)--format=[specify output format]:format:(bsd sysv posix)'
|
||||
'(-n --numeric-sort -p --no-sort --size-sort -v)'{-n,--numeric-sort}'[sort symbols numerically by address]'
|
||||
'(-p --no-sort -n --numeric-sort -r -P --reverse-sort --size-sort)'{-p,--no-sort}'[do not sort symbols]'
|
||||
'(-p --no-sort -n -v --numeric-sort -r --reverse-sort --size-sort)'{-p,--no-sort}'[do not sort symbols]'
|
||||
'(-P --portability -B -f --format)'{-P,--portability}'[same as --format=posix]'
|
||||
'(-r --reverse-sort -p --no-sort --size-sort -v)'{-r,--reverse-sort}'[reverse sort order]'
|
||||
'(-r --reverse-sort -p --no-sort)'{-r,--reverse-sort}'[reverse sort order]'
|
||||
'(-u --undefined-only --defined-only)'{-u,--undefined-only}'[display only undefined symbols]'
|
||||
'(-a --debug-syms)'{-a,--debug-syms}'[display debugger-only symbols]'
|
||||
'(-S --print-size)'{-S,--print-size}'[print size of defined symbols]'
|
||||
'(-s --print-armap)'{-s,--print-armap}'[include index for symbols from archive members]'
|
||||
'(-p --no-sort -n --numeric-sort -r -v)--size-sort[sort symbols by size]'
|
||||
)
|
||||
case $variant in
|
||||
elftoolchain|binutils)
|
||||
args+=(
|
||||
'(-l --line-numbers)'{-l,--line-numbers}'[display source file and line numbers from debug information]'
|
||||
"(-C --demangle)--no-demangle[don't decode symbol names]"
|
||||
'(-p --no-sort -n -v --numeric-sort)--size-sort[sort symbols by size]'
|
||||
'(-n --numeric-sort -p --no-sort --size-sort)-v[sort symbols numerically by address]'
|
||||
'(- *)-h[display help information]'
|
||||
)
|
||||
;|
|
||||
elftoolchain)
|
||||
args=( ${args:#*--(portability|extern-only)\[*}
|
||||
'(- *)-h[display help information]'
|
||||
'(-t -x)-o[print values in octal]'
|
||||
'(-t -o)-x[print values in hexadecimal]'
|
||||
'(--size-sort)-v[sort output by value]'
|
||||
args=( ${args:#*(-C|-o|--portability)\[*}
|
||||
'(-C --demangle)'{-C,--demangle=-}'[decode symbol names]::style:(auto gnu-v2 gnu-v3 arm)'
|
||||
'(-g --extern-only)-e[only display global and static symbols]'
|
||||
'(--format -P)-F+[specify output format]:format:(bsd sysv posix)'
|
||||
'-o[with -P, same as -t o; otherwise same as -A]'
|
||||
'(-t --radix)-x[print values in hexadecimal]'
|
||||
)
|
||||
;;
|
||||
elfutils)
|
||||
args+=(
|
||||
'--mark-special[mark special symbols]'
|
||||
'--color=[use color in output]:color:(always auto never)'
|
||||
'(-C)--demangle[decode symbol names]'
|
||||
'(--format -P)-f+[specify output format]:format:(bsd sysv posix)'
|
||||
'(- *)--usage[give a short usage message]'
|
||||
'(- *)-\\?[display help information]'
|
||||
)
|
||||
;;
|
||||
binutils)
|
||||
compset -P '@' && files='*:options file:_files'
|
||||
args+=(
|
||||
'(-f --format -P)-f+[specify output format]:format:(bsd sysv posix)'
|
||||
'(-C --no-demangle)--demangle=-[decode symbol names]::style:(auto gnu lucid arm hp edg gnu-v3 java gnat)'
|
||||
'--plugin[load specified plugin]:plugin'
|
||||
'--special-syms[include special symbols in the output]'
|
||||
'--synthetic[display synthetic symbols as well]'
|
||||
|
@ -63,22 +70,65 @@ if _pick_variant -r variant binutils=GNU elftoolchain=elftoolchain elfutils=elfu
|
|||
;;
|
||||
esac
|
||||
else
|
||||
# following flags are accurate for Solaris
|
||||
args=( ${args:#(|*\)(\*|))-[o-]*}
|
||||
"-h[don't display column headers]"
|
||||
'-l[distinguish WEAK symbols with * character]'
|
||||
'(-t -x)-o[print values in octal]'
|
||||
'(-v)-n[sort symbols by name]'
|
||||
'(-P)-p[produce parsable output]'
|
||||
'(-p)-P[portable output format]'
|
||||
'(-r)-R[print archive name, object file and symbol name]'
|
||||
'-r[prepend name of input file to each symbol name]'
|
||||
'-s[print section name instead of index]'
|
||||
'-u[print undefined symbols only]'
|
||||
'(-n)-v[sort external symbols by value]'
|
||||
'-V[display version of the nm command]'
|
||||
'(-o -t)-x[print values in hexadecimal]'
|
||||
)
|
||||
case $OSTYPE in
|
||||
(darwin*|openbsd*)
|
||||
args=(
|
||||
'(-A -o)'{-A,-o}'[prepend file name to each output line]'
|
||||
'(-g)-a[display all symbols including those for debuggers]'
|
||||
'(-a)-g[display only global symbols]'
|
||||
'(-U)-u[display only undefined symbols]'
|
||||
'(-p)-n[sort numerically rather than alphabetically]'
|
||||
"(-n -r)-p[don't sort; display in symbol-table order]"
|
||||
'(-p)-r[sort in reverse order]'
|
||||
'(-j)-P[print information in a portable format]'
|
||||
'(-j)-t[specify radix for numeric values (used with -P)]:radix:((d\:decimal o\:octal x\:hexadecimal))'
|
||||
);|
|
||||
(darwin*)
|
||||
args+=(
|
||||
"(-u)-U[don't display undefined symbols]"
|
||||
'-f[display symbol table of dynamic library flat]'
|
||||
'(-P -t -m)-j[just display symbol names (no value or type)]'
|
||||
'-l[display .section_start if no symbol is in the section (used with -s)]'
|
||||
'(-j)-m[use verbose format for Mach-O symbols]'
|
||||
'-s[list only symbols in the specified section]:segment name: :section name: '
|
||||
"-x[display symbol table entry's fields in hexadecimal]"
|
||||
'*-arch[select architecture from universal file]:architecture:(all i386 x86_64)'
|
||||
);;
|
||||
(openbsd*)
|
||||
args+=(
|
||||
'-C[decode low-level symbol names]'
|
||||
'-D[display dynamic symbol table instead of normal symbol table]'
|
||||
'-e[output extended information]'
|
||||
'-s[show archive index]'
|
||||
'-w[warn about non-object archive members]'
|
||||
);;
|
||||
(solaris*)
|
||||
args=( ${args:#(|*\)(\*|))-[o-]*}
|
||||
"-h[don't display column headers]"
|
||||
'-l[distinguish WEAK symbols with * character]'
|
||||
'(-t -x)-o[print values in octal]'
|
||||
'(-v)-n[sort symbols by name]'
|
||||
'(-P)-p[produce parsable output]'
|
||||
'(-p)-P[portable output format]'
|
||||
'(-r)-R[print archive name, object file and symbol name]'
|
||||
'-r[prepend name of input file to each symbol name]'
|
||||
'-s[print section name instead of index]'
|
||||
'-u[print undefined symbols only]'
|
||||
'(-n)-v[sort external symbols by value]'
|
||||
'-V[display version of the nm command]'
|
||||
'(-o -t)-x[print values in hexadecimal]'
|
||||
);;
|
||||
(*)
|
||||
# minimal POSIX
|
||||
args=(
|
||||
'-A[print name of input file on each line]'
|
||||
'(-u)-g[display only global symbols]'
|
||||
'-P[print information in a portable format]'
|
||||
'-t[specify radix for numeric values]:radix:((d\:decimal o\:octal x\:hexadecimal))'
|
||||
'(-g)-u[display only undefined symbols]'
|
||||
'-v[sort symbols by value instead of by name]'
|
||||
);;
|
||||
esac
|
||||
fi
|
||||
|
||||
_arguments -s "$args[@]" $files
|
||||
_arguments -s -S : "$args[@]" $files
|
||||
|
|
|
@ -48,9 +48,10 @@ int
|
|||
selectword(UNUSED(char **args))
|
||||
{
|
||||
int n = zmult;
|
||||
int all = (bindk == t_selectaword || bindk == t_selectablankword);
|
||||
int (*viclass)(ZLE_CHAR_T) = (bindk == t_selectaword ||
|
||||
bindk == t_selectinword) ? wordclass : blankwordclass;
|
||||
int all = IS_THINGY(bindk, selectaword) ||
|
||||
IS_THINGY(bindk, selectablankword);
|
||||
int (*viclass)(ZLE_CHAR_T) = (IS_THINGY(bindk, selectaword) ||
|
||||
IS_THINGY(bindk, selectinword)) ? wordclass : blankwordclass;
|
||||
int sclass = viclass(zleline[zlecs]);
|
||||
int doblanks = all && sclass;
|
||||
|
||||
|
@ -288,7 +289,7 @@ selectargument(UNUSED(char **args))
|
|||
free(stringaszleline(linein, wstarts[wcur], &zlecs, &tmpsz, &mark));
|
||||
free(linein);
|
||||
|
||||
if (bindk == t_selectinshellword) {
|
||||
if (IS_THINGY(bindk, selectinshellword)) {
|
||||
ZLE_CHAR_T *match = ZWS("`\'\"");
|
||||
ZLE_CHAR_T *lmatch = ZWS("\'({"), *rmatch = ZWS("\')}");
|
||||
ZLE_CHAR_T *ematch = match, *found;
|
||||
|
|
|
@ -230,6 +230,13 @@ struct thingy {
|
|||
/* DISABLED is (1<<0) */
|
||||
#define TH_IMMORTAL (1<<1) /* can't refer to a different widget */
|
||||
|
||||
/*
|
||||
* Check if bindk refers to named thingy (a set of bare characters),
|
||||
* also checking the special .thingy widget.
|
||||
*/
|
||||
#define IS_THINGY(bindk, name) \
|
||||
((bindk) == t_ ## name || (bindk) == t_D ## name)
|
||||
|
||||
/* command modifier prefixes */
|
||||
|
||||
struct modifier {
|
||||
|
|
|
@ -961,7 +961,7 @@ bin_bindkey_meta(char *name, char *kmname, Keymap km, UNUSED(char **argv), UNUSE
|
|||
m[0] = i;
|
||||
metafy(m, 1, META_NOALLOC);
|
||||
fn = keybind(km, m, &str);
|
||||
if(fn == t_selfinsert || fn == t_undefinedkey)
|
||||
if(IS_THINGY(fn, selfinsert) || fn == t_undefinedkey)
|
||||
bindkey(km, m, refthingy(Th(metabind[i - 128])), NULL);
|
||||
}
|
||||
return 0;
|
||||
|
|
Loading…
Reference in a new issue