Commit graph

2865 commits

Author SHA1 Message Date
ridiculousfish
e334becefb Adopt debounce for highlighting and autosuggestions
This prevents a thundering herd of threads for certain interactive
scenarios.
2020-03-06 17:15:23 -08:00
ridiculousfish
bde2f2111d Introduce debounce_t
debounce_t will be used to limit thread creation from background highlighting
and autosuggestion scenarios. This is a one-element queue backed by a
single thread. New requests displace any existing queued request; this
reflects the fact that autosuggestions and highlighting only care about
the most recent result.

A timeout allows for abandoning hung threads, which may happen if you
attempt to e.g. access a dead hard-mounted NFS server. We don't want
this to defeat autosuggestions and highlighting permanently, so allow
spawning a new thread after the timeout (here 500 ms).
2020-03-06 17:15:21 -08:00
ridiculousfish
a6b565d502 Optimize parse_util_compute_indents
Exploit the fact that most input strings will not contain newlines,
in which case we do not have to parse anything.
2020-03-06 16:15:37 -08:00
afg
f0d42ea602 time: decide unit using largest value 2020-03-06 22:16:24 +01:00
ridiculousfish
f10ef4f948 Remove cancellable.h
This should never have been checked in, it's unused. Mea culpa.
2020-03-04 21:11:39 -08:00
Norio Nomura
4f0fab04ad Clear cancellation_signal before firing fish_postexec event
Fix #2356
2020-03-03 21:35:29 -08:00
Sacha Delanoue
0fac2e0496 Fix 256 color detection on xterm-like
bbc3fecbe introduced a regression where support for 256 color was not
detected on xterm-like terminals that did not define the TERM_PROGRAM
env variable. Almost no terminal on linux define this variable.
2020-03-03 18:03:15 +01:00
ridiculousfish
f6e5a5c521 Thread a cancellation function into is_potential_path
Allows sooner cancellation of redundant operations like highlighting.
2020-03-02 22:10:43 -08:00
ridiculousfish
a65e3f1876 Check for cancellation more often in highlighting 2020-03-02 22:02:03 -08:00
ridiculousfish
8355285736 Add a category for screen repainting 2020-03-02 18:31:24 -08:00
ridiculousfish
bd17262e17 Reduce iteration count in thread torture test
Helps the test pass on 32 bit.
2020-03-02 13:46:08 -08:00
ridiculousfish
bb4e36da47 Do not remove jobs that need to print a status message
55e3270 introduced a regression where we would remove all completed
jobs. But jobs that want to print a status message get skipped, so
the status message (and associated event handlers) might not get run.

Fix this by making it explicit which jobs are safe to process, and which
should be skipped.

Fixes #6679.
2020-03-02 12:34:07 -08:00
ridiculousfish
bc702ccb31 Fix interactive --on-signal INT handlers
f8ba0ac5bf introduced a bug where INT handlers would themselves be
cancelled, due to the signal. Defer processing handlers until the
parser is ready to execute more fish script.

Fixes the interactive case of #6649.
2020-03-01 13:31:59 -08:00
Fabian Homborg
bfc1de9ef4 argparse: Pass validation variables as exported
This was written before local-exported variables did anything useful.

Passing these vars as local-exports removes the need to define the
validation function with `--no-scope-shadowing` which is quite the
hack.
2020-03-01 19:28:51 +01:00
mczoden
5d03ca9de0
Fix expand.cpp compile failed with old SDK version (#6688)
* Fix expand.cpp compile failed with old SDK version

* add a comment to stop clang-format from recording
2020-03-01 13:44:06 +01:00
ridiculousfish
d4103d582b Correct the speeling of sentinel 2020-02-29 15:56:52 -08:00
ridiculousfish
c5fa580948 Rationalize background-in-background procs
If a background process runs a fish function which launches another
background process, ensure that these background procs get different
pgroups. Add a test for it.
2020-02-29 15:07:09 -08:00
ridiculousfish
eb83794783 Add some additional proc_pgroup FLOGging 2020-02-29 14:41:08 -08:00
Johannes Altmanninger
8eadef81a4 Fix crash on escape in complete-and-search pager
Reproduce with `: <Shift+Tab><Escape>`.
Introduced in 8a033b9f3 Add undo
2020-02-29 21:19:28 +01:00
Johannes Altmanninger
91fcb8c42c Revert "read: discard IFS delimiters before the last token"
See #6650.

This reverts commit 1410f938aa.
2020-02-29 09:53:53 +01:00
Johannes Altmanninger
99851c09b3 Fix selection going out of bounds
Which happened when starting the selection at the end of the commandline.
In this case, selections still interact weirdly with autosuggestions (the
first character of the suggestion appears to be part of the selection
when it's not).

Fixes #6680
2020-02-29 09:47:12 +01:00
Fabian Homborg
70b8fb22e1 test: Reject nan/inf instead of crashing
I really don't want to get into the business of explaining to people
how nan != nan.

Fixes #6655.
2020-02-26 16:43:12 +01:00
Johannes Altmanninger
aa0e16b1a5 Skip variable assignments in status current command
Fixes #6635
2020-02-24 00:16:12 +01:00
Johannes Altmanninger
ebde9a6a44 move variable_assignment_equal_pos to tokenizer
we'll need it for tok_command
2020-02-24 00:14:39 +01:00
Johannes Altmanninger
7ef7f93a90 List time as builtin, support time --help
`a=b time foo` will no longer call an external `time` command
(like it does in bash).

Fixes #6598
2020-02-23 23:42:57 +01:00
Rosen Penev
a410dcb5c2 [clang-tidy] use empty() instead of comparing
Found with readability-container-size-empty

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-02-22 09:34:03 +01:00
Rosen Penev
33351d7657 [clang-tidy] remove static from namespace
Found with readability-static-definition-in-anonymous-namespace

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-02-22 09:34:02 +01:00
Rosen Penev
8b76fe93bf [clang-tidy] fix small loop variable
Found with bugprone-too-small-loop-variable

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-02-22 09:33:58 +01:00
Rosen Penev
925c7a998a [clang-tidy] mark single argument constructors explicit
Found with hicpp-explicit-conversions

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-02-22 09:33:17 +01:00
Rosen Penev
aff6a74770 [clang-tidy] use emplace_back
Found with hicpp-use-emplace

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-02-22 09:33:17 +01:00
Rosen Penev
1f01423f46 [clang-tidy] use dynamic_cast for unrelated types
Found with cppcoreguidelines-pro-type-static-cast-downcast

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-02-22 09:33:17 +01:00
Rosen Penev
aae9ebfbd4 [clang-tidy] use using instead of typedef
Found with modernize-use-using

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-02-22 09:33:16 +01:00
Rosen Penev
dd704ae30c [clang-tidy] pass-by-value
Found with modernize-pass-by-value

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-02-22 09:33:16 +01:00
Rosen Penev
b266370428 [clang-tidy] convert to range for loops
Found with modernize-loop-convert

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-02-22 09:33:16 +01:00
Fabian Homborg
e5d50db215 Add missing include to fish_test_helper
This broke the build on new-ish gcc

Fixes #6632.
2020-02-20 21:53:45 +01:00
ridiculousfish
9538b8bf73 Give fish_test_helper slightly better argument parsing and help 2020-02-20 11:51:02 -07:00
Fabian Homborg
ee943a0821 Make unusable path warnings their own FLOG category
Fixes #6630.
2020-02-20 17:30:14 +01:00
ridiculousfish
05b8d4de97 Make hup_background_jobs accept the job list directly 2020-02-19 20:35:04 -07:00
ridiculousfish
59c6663a16 Migrate the "are you sure you want to exit" logic from parse_execution to exec
This feels more like the sort of logic that should live in the point where
jobs are executed, instead of where jobs are created from parse trees.
2020-02-19 18:25:36 -07:00
ridiculousfish
1c8093fc50 Bravely remove the "temporary backgrounding" code
Prior to this commit, when executing a builtin, we mark the job as not
foreground. After this commit we no longer modify the foreground state
of the job just for the builtin.

There was the following comment:

    // Since this may be the foreground job, and since a builtin may execute another
    // foreground job, we need to pretend to suspend this job while running the
    // builtin, in order to avoid a situation where two jobs are running at once.

The concern seemed to be in the `bg` and `fg` builtins, which might attempt
to foreground or background the jobs associated with `bg` and `fg` themselves.
But the builtins run before the job is marked constructed, so it cannot
actually happen.

Bravely remove this code.
2020-02-19 18:25:36 -07:00
Aaron Gyes
85a0ca66e0 We no longer have two doc systems, move sphinx_doc_src back to doc_src 2020-02-19 17:00:35 -08:00
Fabian Homborg
fba4363c1d Stop fish --no-execute harder from executing stuff
I'm not quite sure what it executed - I think it's just constructing jobs and
stuff, but it did show up in the profile - 21% spent on "job_reap".
2020-02-17 14:26:30 +01:00
Fabian Homborg
65883e0e40 Restyle
Mostly line breaks, one instance of tabs!

For some reason clang-format insists on two spaces before a same-line comment?

(I continue to be unimpressed with super-strict line length limits,
but I continue to believe in automatic styling, so it is what it is)

[ci skip]
2020-02-17 14:14:05 +01:00
Fabian Homborg
5f9c33b50a Don't time --no-execute
This made some output for non-execution.

See #977.
2020-02-17 11:39:53 +01:00
Fabian Homborg
3f5c60e634 Silence some errors for fish --no-execute
It used to error out when a command wasn't known, even when it was a
function that would only be discovered via autoloading.

Now we just accept that a command doesn't exist when no-execute is
given - we're not gonna execute it anyway.

Also, in the same breath stop counting empty commands after expansion
and empty wildcard expansions as errors - these depend on runtime
values, so we can't verify them without executing.

Fixes #977.

(note that it still executes "time", but that's another commit)
2020-02-17 11:39:53 +01:00
Fabian Homborg
aba900a71f Reallow "2>>&1" as a redirection
Appending to an fd doesn't really make sense, but we allowed the
syntax previously and it was actually used.

It's not too harmful to allow it, so let's just do that again.

For the record: Zsh also allows it, bash doesn't.

Fixes #6614
2020-02-17 08:57:41 +01:00
Johannes Altmanninger
7517128b68 Update exports when an exported universal variable changes
Fixes #6612
2020-02-16 18:51:19 +01:00
Lily Ballard
47aeaa1535 Work around compilation failure with old Apple SDKs
When building fish-shell with the macOS 10.12 SDK, <sys/proc.h> does not
include <sys/time.h> but references `struct itimerval`. This causes a
compilation failure if we don't import <sys/time.h> ourselves.

This was previously masked by an import of <sys/sysctl.h>, which was
removed in fc0c39b6fd.
2020-02-15 10:58:22 +01:00
Fabian Homborg
399a71645e Fix build on 32-bit systems
This was a weird case of the integer converseys.

Fixes #6609.
2020-02-15 10:13:56 +01:00
Fabian Homborg
f79ff72096 iothread: include cstdint, correctly
Yeah, this was needed in the *header*.

God I hate headers.

Fixes #6604, for real this time
2020-02-14 20:52:14 +01:00