Commit graph

15175 commits

Author SHA1 Message Date
ridiculousfish
37625053d4 fish_git_prompt: be careful about git config
fish_git_prompt may run certain git commands which may invoke certain
external programs as specified `.git/config`. Prevent this by suppressing
certain git config options.
2021-12-30 13:11:04 -08:00
ridiculousfish
a5976f5b0d Disable certain autosuggestion tests on Cygwin
Cygwin disallows backslashes in filenames, so these tests cannot
possibly succeed there. Just disable them.
2021-12-30 11:44:14 -08:00
ridiculousfish
ab7a07e97c Disable a string length test on Cygwin
This test was failing because it assumed wchar_t is 32 bit.
No functional change here.
2021-12-30 11:36:06 -08:00
Fabian Homborg
940f52d717 math: Report missing operators between the tokens
This affects the caret position. In an expression like

123 456

we previously reported:

123 456
      ^ missing operator

Now we do:

123 456
   ^ missing operator

We do it on the first space, which should be acceptable.

(no need for a changelog entry, we have already ignored #8511)
2021-12-30 13:26:44 +01:00
Fabian Homborg
2c03cfecba Shebang error: Use /path/to/fish
Otherwise this looks like `#! fish` is a valid shebang, which it is
not. We don't interpret $PATH here, and the kernel typically doesn't.
2021-12-30 13:04:47 +01:00
Ilya Grigoriev
084967e560 webconfig.py: minor polish of is_chromeos_garcon
The `name` attribute I used in commit f725cd402d
is undocumented, and [someone discovered] that it does not exist for one 
possible browser on MacOS. This should make the code work correctly even in that case. 

This probably doesn't currently cause a problem, at least when 
`isMacOS10_12_5_OrLater()` is true, because of the ordering of the if 
statements in the `runThing` function.

[someone discovered]: https://bugs.python.org/issue43424#msg409087
2021-12-30 12:55:52 +01:00
ridiculousfish
3feb41f78f Correct the test_expand test
This unit test was passing 0 instead of a pointer to indicate the end of
a varargs; this might fail on 64 bit, and indeed did fail on Cygwin. This
fixes the Cygwin expand test.
2021-12-30 01:18:14 -08:00
David Adam
a52305e11c postfork: further updates to error messages
Only show the shebang warning for .fish commands.

Use the phrase "interpreter directive" as the formal name for the
shebang.

Switch from windows to Windows for the operating system.
2021-12-29 22:33:24 +08:00
David Adam
76a336d647 CHANGELOG: work on 3.4.0 2021-12-29 18:53:38 +08:00
ridiculousfish
bbb2f5aa14 Comment why certain tests are disabled under TSAN
This makes it clear that it is due to a known limitation of TSan and not
some lurking thread safety issue.
2021-12-28 21:35:30 -08:00
ridiculousfish
ef281c7c4e Remove expand_flag::skip_home_directories
This could in principle be used to prevent home directory expansion, but
no call site uses it, so just remove it. No functional change here.
2021-12-28 15:13:50 -08:00
ridiculousfish
284427a6da Revert "Fix undefined behavior in closing a moved pipe"
There is no undefined behavior in closing a moved pipe, since the
move constructor simply sets the fd to -1, which is ignored by close().
The move constructor of autoclose_fd_t is "fully specified" (like
unique_ptr).

It's good practice to eagerly close pipes which may be inherited by
child processes, since otherwise the writer may not get EPIPE correctly.
Closing the pipe explicitly makes it clear that the pipe does not stay
open across continue_job().

This reverts commit c014c23662.
2021-12-28 14:25:24 -08:00
Johannes Altmanninger
65b34a12c0 Declare that two "not" keywords cancel each other out
"not not return 34" exits with 34, not 1.  This behavior is pretty
surprising but benign. I think it's very unlikely that anyone relies
on the opposite behavior, because using two "not" decorators in one
job is weird, and code that compares not's raw exit code is rare.

The behavior doesn't match our docs, but it's not worth changing the
docs because that would confuse newcomers. Add a test to cement the
behavior and a comment to explain this is intentional.

I considered adding the comment at
parse_execution_context_t::populate_not_process where this behavior
is implemented but the field defintion seems even better, because I
expect programmers to read that first.

Closes #8377
2021-12-28 19:32:30 +01:00
Fabian Homborg
4ceed7c482 Improve error message for fish scripts without shebang
When we execute something and it doesn't have a shebang, typically we
fall back on running it with /bin/sh. For .fish scripts, we still
refuse to do this (assuming that /bin/sh won't handle .fish scripts properly).

Only the error wasn't great. So we now explicitly mention when there's
a missing shebang, and point towards the shebang line otherwise.
2021-12-28 15:30:04 +01:00
David Adam
a9f6a38e37 CHANGELOG: work on 3.4.0 2021-12-28 14:03:11 +08:00
David Adam
3bb7f51691 CHANGELOG: work on 3.4.0 2021-12-28 12:57:34 +08:00
Nils K
1877253f47
Pass all of $argv to pk-command-not-found (#8591)
Fixes #8579.
2021-12-28 12:56:31 +08:00
Johannes Altmanninger
ac428b23e5 completions/git: use our __fish_git wrapper for listing config values
Git completions use wrapper function __fish_git instead of directly
running git. This allows them to be aware of Git's global options, like
--git-dir. Let's use __fish_git also for listing config keys & values,
so it can more accurately list local (= per repo) git configuration.
2021-12-27 14:41:59 +01:00
Johannes Altmanninger
ee3a26d849 completions/git: fix completions for "git config"
We don't provide completions on "git config " because we require
"fish_is_nth_token 3". Confusingly, fish_is_nth_token only counts
tokens *before* the cursor, so 2 is the right number here.

While at it, fix a typo and delete an unused completion entry (it
ran conditional on __fish_is_first_arg, which is always false for a
git subcommand).
2021-12-27 14:41:24 +01:00
David Adam
2e6bfe5c68 fish_tests: actually test fish_wcstod
The test was running against the standard library rather than the fish
replacement.
2021-12-27 14:07:17 +08:00
Kid
36be635393
Provide completions for complete without -c (#8587) 2021-12-26 13:49:28 -08:00
Kid
8abc6b2f8c
Provide completions for history without search subcommand (#8588) 2021-12-26 13:48:49 -08:00
Sergei Morozov
69b5a3535c
Add basic completion for mvn -pl switch (#8570)
This patch introduces basic completion of the -pl|--projects switch for
mvn. The implementation is quite naive but it's better than nothing. A more
robust implementation would require either scanning the filesystem or running
mvn which might slow down completion significantly.
This solution can be improved by using an XML parser instead of grep/sed.
2021-12-26 22:37:13 +01:00
Marco Scardovi
1e503745a1
Update fish.desktop (#8584)
Update .desktop file (fish/Fish and added comment)
2021-12-25 23:52:54 -08:00
Aaron Gyes
29ccc08a53 unusued find_entry member: use it
Assuming this was meant to be used when created, simplify
two other spots to make use of find_entry().
2021-12-24 19:06:00 -08:00
Aaron Gyes
4efb1b1644 math.rst: use definition lists.
Also, follow the one-line per sentence rule as that has semantic
meaning for man/groff.
2021-12-24 16:39:47 -08:00
Aaron Gyes
a16fd0baa4 Update synopsis of a few stragglers. 2021-12-24 16:15:40 -08:00
Aaron Gyes
6e426cefbd HTML docs theme: increase line spacing for synopsis section 2021-12-24 16:02:52 -08:00
Fabian Homborg
77bac22741 test: Also print proper caret for too many arguments
This case is handled specially for unknown reasons and was missed in #6030.
2021-12-24 16:08:41 +01:00
Aaron Gyes
45b302839b status.rst: fixup 2021-12-21 18:52:45 -08:00
Aaron Gyes
14d60ccb32 More synopsis work.
A great leap forward
2021-12-21 17:24:47 -08:00
Aaron Gyes
6c6a8f93e9 webconfig.py: don't handle except BaseException
These ought to be more specific.
2021-12-21 14:06:19 -08:00
Aaron Gyes
50d88e9712 controllers.js: remove unused variable cols[]
introduced in ba0b7133ad
2021-12-21 13:59:33 -08:00
Aaron Gyes
89ba9f76e2 env.cpp: unusued var_table_t table in create_export_array() 2021-12-21 04:31:54 -08:00
Aaron Gyes
365a6ee384 Use source_offset_t (uint32) in tokenizer.
Seems like size_t is unnecessarily large as well, as elsewhere
in the code we are clamping down to uint32_t / source_offset_t.

This makes tok_t more like 16 bytes. More cleanup seems desirable,
this is not very well hamrnoized across our code base.
2021-12-21 02:32:52 -08:00
Aaron Gyes
8e1173bac9 Revert "common.h: use emplace in vec_append"
This was dumb, and not intended for commit.
This reverts commit ab353ce0e4.
2021-12-21 02:08:23 -08:00
Aaron Gyes
35253900cb rearrange tok_t fields in decreasing order
We can have vectors of these, maybe it adds up.
40 bytes -> 32 bytes
2021-12-21 01:29:26 -08:00
Aaron Gyes
ab353ce0e4 common.h: use emplace in vec_append 2021-12-20 22:54:59 -08:00
Aaron Gyes
9abbcc0ba6 ast.cpp: initialization order
member 'extras_' is used to initialize 'tokens_'.
members are initialized in the order they are declared in a class
2021-12-20 22:43:58 -08:00
Johannes Altmanninger
5211735965 benchmarks/driver.sh: also quote path to benchmarks
I had only tested with a space in the path to the fish binary, but
not with a space in the path to the repository.

Closes #8559
2021-12-20 06:48:00 +01:00
Aaron Gyes
70f2899fcd .gitattributes: rig the count
This is a dishonest change that classifies our completion scripts
as a type of documentation, which should prevent share/completions
contributing to the language breakdown as shell scripts.

Goal here is for fish-shell to be classified C++ on GitHub.

Prior to commit:

Shell     57.1%
C++       38.3%
Python     3.0%
CMake      0.7%
JavaScript 0.4%
HTML       0.2%
Other      0.3%
2021-12-19 18:58:30 -08:00
Aaron Gyes
5e8c9de631 .gitattributes: * is not recursive, ** is. Add missed paths
You can see attributes set on a particular file with
    git check-attr -a PATH
2021-12-19 18:46:12 -08:00
Johannes Altmanninger
a078a56492 CHANGELOG: don't mention completions/man fix for BSD mandoc
This is just a fix to an existing completion entry, we usually don't
mention those.
2021-12-19 15:15:46 +01:00
Johannes Altmanninger
db7bea1a3e benchmarks/driver.sh: quote path to fish if necessary
To allow paths with spaces, give a shell-quoted path to hyperfine. We
could make this a bit shorter by quoting as early as possible, like

	FISH_PATH=$(quote "$1")

and then use $FISH_PATH unquoted. I discarded that idea because it
probably looks surprising.

Closes #8559
2021-12-19 11:51:45 +01:00
ridiculousfish
0d67dd19a1 Switch path_get_data_is_remote to returning a real class enum
End the tricky use of maybe_t<bool> by using a real class enum.
2021-12-18 20:48:13 -08:00
Fabian Homborg
086d388932 Also read /etc/default/locale for the locale
Apparently a thing on Debian systems (whyyyyy)

Fixes #8557
2021-12-18 08:57:22 +01:00
Aaron Gyes
ca6e9f9fe7
README.rst: fix badge
The name of the main workflow changed to "test" a while back, and then "make test" after that.
2021-12-17 16:12:08 -08:00
Aaron Gyes
461facb42e History: adjust description entries 2021-12-17 15:44:05 -08:00
Aaron Gyes
5ae7bc1443 help: adjust synopsis. history manpage: indent long synopsis lines 2021-12-17 15:38:49 -08:00
Aaron Gyes
50d65ace34 fixup 2021-12-17 15:23:02 -08:00