| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
|
| |
This caused a single unprintable character in braces before a
redirection to be treated as an indentifier.
|
|
|
|
|
| |
These are parsed differently from the case of normal functions which
can't take normal arguments at that point.
|
|
|
|
|
|
|
|
| |
A missing flag setting up the HERE document mean that the size
of the wordcode needed to append the 2>&1 was counted incorrectly,
so the resulting wordcode was garbled.
Add test.
|
|
|
|
|
|
| |
This fixes use of pattern match character ranges in unusual contexts.
Attempt to detect a tokenized - in cases where we don't care.
|
|
|
|
| |
not re-entrant.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
path.
-d defaults to normal fpath
-r remembers the path without actually loading. May be combined with -d.
-R does the same but it's an error if not found
-X can now take a directory path: this is used to output not yet loaded
functions that have an associated path.
|
|
|
|
|
|
|
| |
definition.
Now an error unless the () is part of the same error as the name.
Add ALIAS_FUNC_DEF option to allow it again.
|
| |
|
|
|
|
| |
are set
|
| |
|
|
|
|
|
| |
This is both in xtrace output and shell code rebuilt from
internal structures.
|
|
|
|
| |
Return values from par_list() and par_list1() are no longer used.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Owing to interesting historical parsing, names after the first
were treated as command words so had non-global aliases expanded.
Add an FAQ note that use of the function keyword works around
other alias problems
|
|
|
|
|
|
|
|
|
|
|
| |
signal queueing
There are two underlying ideas here: (1) Keeping signals queued around
anything that's doing memory management (including push/pop of the heap)
has become crucial. (2) Anytime the shell is going to run a command, be
it buitin or external, it must be both safe and necessary to process any
queued signals, so that the apparent order of signal arrival and command
execution is preserved.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Typeset assignments now work like raw assignments except
for no "+=" and no GLOB_ASSIGN.
Documented in typeset builtin doc and mentioned in release notes.
Tests to ensure basic sanity.
Enabled by default, can be turned off by "disable -r" with typeset
family of commands.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Lexical analysis flags got screwed up after a "|", so we
didn't parse patterns properly, in particular those with parentheses.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
"|" is now found properly by looking for words that come
from the lexical analyser, rather than hacking a pattern
returned in one dollop.
Update some completion functions that need extra quoting
as a result.
Add test for new parsing.
Update version number to 5.0.8-dev-3 because of wordcode
incompatibility.
|
|
|
|
| |
Here documents in an interrupted list caused bad juju.
|
|
|
|
|
|
|
|
| |
Handled generally, though only showing up in special nested
cases.
Also fix ZLE so it doesn't cancel the interrupt flag when
not actually returning from a local keymap.
|
|
|
|
| |
(Tweaked to keep the unrelated hunk of the E01 test.)
|
|
|
|
|
|
|
|
| |
Don't attempt to treat as "simple" case as there are too many
hidden problems.
Pull out some post-execution functions to a common case in
execcmd().
|
|
|
|
|
|
|
| |
Variables are now associated with the module that declares them, being
initialised and saved/restored there. However, as many variables are
used for communication between modules, many of them are set in multiple
places, so the assignment is ambiguous.
|
|
|
|
|
|
|
| |
Do this by refactoring misnamed lexsave()/lexrestore() to allow
continuity of history and input.
Add test.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Combination of 12 commits from interrupt_abort branch.
Basic strategy is to introduce bits to errflag and to set and
reset them separately.
Remove interrupt status on return to main keymap.
Turn off ERRFLAG_INT for always block.
Restore bit thereafter: we probably need a new variable in order
to allow user interrupts to be reset in the always block.
Add TRY_BLOCK_INTERRUPT
This works the same as TRY_BLOCK_ERROR, but for a SIGINT, too.
Ensure propagation of SIGINT from exited job.
If received by foreground job, shell uses ERRFLAG_INT, not
ERRFLAG_ERROR, to set the new state.
Reset errflag before precmd()
Add always block in _main_completion to fix ZLS_COLORS
Ensures we get the right state of $ZLS_COLORS at the end of _main_complete
even if there's an interrupt. However, the "right state" is a bit messy
as it depends on styles.
|
| |
|
| |
|
|
|
|
|
|
| |
Longstanding problem caused simple anonymous function incorrectly to
reset the overall "complext" state, causing wordcode to be diverted
into execsimple(), which caused a crash 'cos ist wasn't simple.
|
| |
|
|
|
|
| |
Don't expand arguments as if in command position. Test.
|
| |
|
| |
|
|
|
|
|
|
| |
Also restore ksh [ -t ] compatibility when POSIX_BUILTINS is not set, and
allow operators defined by modules to be called with no arguments, although
this affects only runtime interpretation, not parsing.
|
|
|
|
|
|
| |
anonymous function argument list
Also disallow process substitution in function name position.
|
|
|
|
| |
Treat ! as a string in "test ! -a ..." and "test ! -o ...".
|
|
|
|
| |
Remove dump records more consistently in that case.
|
|
|
|
|
| |
File descriptors of mmap'd dump files are closed if and only if
an exec is performed.
|
| |
|