Age | Commit message (Collapse) | Author |
|
|
|
|
|
Ignoring an event means that it will bubble to the parent Core::Object.
This is not necessary here.
|
|
Also store PGIDs as pid_t since that's what they are.
|
|
This never returns null Job pointers.
|
|
This closes #2989.
|
|
This fixes the bug with the shell not waiting for any foreground process
that attempts to read from the terminal in the Lagom build.
|
|
Also add missing calls to `adopt()`.
|
|
|
|
This has the nice side effect of fixing alias completion, because
cached_path is the source of truth for the completion system, and it was
only refreshed (with shell::cache_path()) in the shell's constructor,
before the rc files where loaded (ie no aliases)
This also means that shell::is_runnable can now rely on the cache, and
doesn't have to check the aliases itself.
|
|
And display in red the command which will result in something like "no
command, or is directory" (inspired by the fish shell).
|
|
|
|
Closes #2760.
This commit adds a 'for' loop, and tweaks the syntax slightly to make &&
bind more tightly than || (allowing for `expr && if_ok || if_bad`) :^)
|
|
This allows `((1 2 3) (4 5 6))` to remain nested until we explicitly
flatten it out.
|
|
|
|
This fixes the issue with C-z not suspending the job on the first try.
...and further signal issues when the suspended job is contiued.
|
|
This commit fixes job control by putting children in their own process
group, and proxying TTY signals to active jobs.
This also cleans up the code around builtin_disown a bit to use
the newer job interfaces.
|
|
This makes running commands from outside the AST chain easier.
|
|
Fixes #2717
|
|
Closes #2732
|
|
This allows the shell to be notified about SIGWINCH even when a child
process is running in the foreground.
|
|
This allows the parser to finally parse the entire source into a single
AST.
As a result of allowing comments inside sequences, Sequence is also
marked as would_execute if its left or right node would.
|
|
|
|
This makes '------inl' a completion request for an option named
'----inl' instead of 'inl'.
|
|
Take one small step towards #2357.
Handle completing barewords starting with '-' by piping the requests to
the Shell::complete_option(program_name, option) :^)
Also implements completion for a single builtin (setopt) until we figure out how
to handle #2357.
|
|
This builtin sets (and unsets) boolean flags that alter the behaviour of
the shell.
The only flags added are
- inline_exec_keep_empty_segments: Keep empty segments in the result of
splitting $(...) by $IFS
- verbose: Announce each command before executing it
It should be noted that the (rather extreme) verbosity of the names is
intentional, and will hopefully be alleviated by the next commit :^)
|
|
The description contains an error message and where in the source the
error happened.
|
|
|
|
Bringing the Serenity Shell to your very own host system :^)
|
|
This commit also removes the ExecutionInputType and directly uses
RefPtr<Shell> instead, since nothing else is needed for execution
purposes, and also makes the shell refuse to evaluate commands with
any sort of syntax error.
|
|
This allows the below interaction to work:
```
$ silence=(2>&1 >/dev/null)
$ do_noisy_thing with these args $silence
<nothing here lol>
```
|
|
This commit makes `echo x(foo bar)` create an argv of `echo xfoo xbar`,
essentially modeling brace expansions in some shells.
|
|
This behaviour is overridable with the `--skip-init' flag.
The default file is at '~/shell-init.sh'
|
|
This follows the other shells in alias resolution, and resolves the
alias only once.
|
|
This commit also completely reworks the execution, highlighting and
completion model to work with the new AST.
New additions:
- $(...) stdout captures
- fd>&fd redirections
- fd>&- redirections (close fd)
- read-write redirections (<> path)
- completely event-based execution
- the weird idea of allowing the user to redirect the shell's own fds
- variables in strings
- local variables
- minimal list support
- adding hyperlinks to all paths that exist
|
|
This commit also updates Shell, which uses actual_rendered_length.
|
|
We were getting a little overly memey in some places, so let's scale
things back to business-casual.
Informal language is fine in comments, commits and debug logs,
but let's keep the runtime nice and presentable. :^)
|
|
Get rid of the weird old signature:
- int StringType::to_int(bool& ok) const
And replace it with sensible new signature:
- Optional<int> StringType::to_int() const
|
|
|
|
|
|
This commit allows the Shell to complete paths in redirections.
A closing quote is added if the path is an unclosed quote.
```
$ foo > "foob<tab>
$ foo > "foobar"
```
|
|
|
|
Since the last job need not have an ID of size()-1, we need to find the
max job id and give that+1 out
|
|
|
|
|
|
This commit changes LibLine's internal structure to work in an event
loop, and as a result, also switches it to being a Core::Object.
|
|
And move canonicalized_path() to a static method on LexicalPath.
This is to make it clear that FileSystemPath/canonicalized_path() only
perform *lexical* canonicalization.
|
|
This fixes a bunch of FIXME's in LibLine.
Also handles the case where read() would read zero bytes in vt_dsr() and
effectively block forever by erroring out.
Fixes #2370
|
|
And make sure that the user means to exit and kill current jobs before exiting.
|
|
This commit adds the InBackground and ShortCircuitOnFailure attributes
to commands, which respectively cause the command to be run in the
background, and abort the command chain with exit status != 0.
|