Commit graph

15063 commits

Author SHA1 Message Date
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
Aaron Gyes
4c6da2091d Harmonize some idiosyncrancies introduced
For now, we are going with ``command`` for builtins and fish scripts,
and **keyword** for parser keywords like if or and.
2021-12-17 15:20:46 -08:00
Aaron Gyes
af61ea1325 doc_src: Continue the slog through the letter F.
We are using only :: in a synopsis for fishscript examples given
of the command being documented.
2021-12-17 15:16:47 -08:00
Aaron Gyes
5e880bb1c3 Commit doc_src progress.
This is continuing the work I've been doing to remove the ::
formatting for the synopsis sections of our manual pages.
2021-12-17 13:59:39 -08:00
David Adam
4389658e7b CHANGELOG: work on 3.4.0 2021-12-15 22:58:53 +08:00
Emily Grace Seville
077f1f2576 Redirect stderr of xclip to /dev/null
xclip will display an error when pasting if the clipboard contains
something that isn't text:
  Error: target STRING not available

Swallow this error.
2021-12-15 22:30:12 +08:00
Johannes Altmanninger
1d1bee3ba2 CHANGELOG: some updates for 3.4.0
I used the command from #8092 to list issues/PRs with missing changelog
entries, and went through most of them and added them to the changelog
(or the "ignore" list).

This commit message lists the processed issues in a consistent format,
and lists the action/reason. For each issue/PR there are twolines:
- Issue/PR number + subject
  - (I used bare issue numbers to avoid cross-referencing on github).
- verdict
  - "added new entry" means that we add a changelog line
  - "added to existing entry" means that we added the issue link to an existing
     changelog line. Usually we don't add multiple issue links, but sometimes
     there are multiple interesting issues.
  - if the verdict ends with ", ignoring", we added it to the "ignore" list in
    the changelog.

The issues are grouped by verdict, with the interesting/leftover ones
on top.

The "gh" script is already a quantum leap but we should still find
better ways to share the burden of writing the changelog.
I noticed that there are many minor updates that can probably be
ignored.  Filtering them out doesn't take much time but it adds up,
especially if it's a single person doing it.

Here's the adapted script I used:

	for issue in (gh issue list --state closed --milestone "fish 3.4.0" -L 500 | sort -n | cut -f 1)
	    egrep --quiet '\W'$issue CHANGELOG.rst; or echo https://github.com/fish-shell/fish-shell/issues/$issue
	end
	for pr in (gh pr list --state all --search "milestone:\"fish 3.4.0\"" -L 500 | sort -n | cut -f 1)
	    egrep --quiet '\W'$pr CHANGELOG.rst; or echo https://github.com/fish-shell/fish-shell/pull/$pr
	end

---

Issue 8153: Work around `setpgid` error on older Apple platforms
workaround for old OSs for which we've since dropped support, ignoring

Issue 8511: math: (n n): incorrect error
improved error output, which is very nice but too minor, ignoring

Issue 8205: Fish autocomplete error on iOS procursus
niche fix, ignoring

Issue 8271: Fix `fish_key_reader` wrapper check
minor update to not create a harmless alias for fish_key_reader, ignoring

Issue 8289: funced dosn't like backslash escapes in function names
minor escaping fix, ignoring

Issue 8310: Hide whatis database building from the user
not something many users would notice in the first place, ignoring

Issue 8368: Duplicated "Type 'help argparse' for related documentation" for argparse
minor update to error message, ignoring

Issue 8444: Variable highlight color does not span lines
very obscure fix, ignoring

Issue 8195: Errors when trying to autocomplete (invalid) UTF-8 escapes
niche fix, ignoring

Issue 8308: assertion normal_exited() failed related to paged builtin help
niche fix, ignoring

Issue 8358: sigsegv on set --show variable (when LANG is set to fr_FR.utf8)
niche(?) fix, ignoring

Issue 8170: Builtin math ncr can be extremely slow
performance improvement only when the input is NaN, ignoring

Issue 8204: Always use LC_NUMERIC=C internally
performance improvement for math, ignoring

---

Issue 8295: Add --function to `read`
added to existing entry (565)

Issue 8283: Added completions for ethtool
added to existing entry

Issue 8315: Add dart completion
added to existing entry

Issue 8330: Add common lisp completions(sbcl/roswell)
added to existing entry

Issue 8354: Fix st issue with shift+tab
added to existing entry (8352)

Issue 8391: Support vi-mode cursors in Foot Terminal 
added to existing entry (8167)

Issue 8405: Completions pager should redraw if the subbed completion wraps/unwraps the line
added to existing entry (8509)

---

Issue 8530: Speed up, fix fish_status_to_signal 8530
added new entry

Issue 8547: command -v nonexistent should exit 127
added new entry

Issue 8431: Abbr -q return status inconsistent
added new entry

Issue 8428: Binding escape as user binding breaks escape sequence bindings (arrows, etc)
added new entry

Issue 8483: Windows "color" command completion
added new entry

Issue 8087: Doesn't build when using netbsd curses on Linux
added new entry

Issue 8152: Don't override linker
added new entry

Issue 8156: Add completions for `git-sizer`
added new entry

Issue 8163: `d3ceba107e88b6c6e1a0358ebcb30366aeef653f` causes issues with repainting multi-line prompt
added new entry

Issue 8175: Completion sometimes missing the last token
added new entry

Issue 8179: `set -S` should mark read-only variables
added new entry

Issue 8209: Slow interaction between backgrounding, universal variables, and repainting
added new entry

Issue 8274: Unsetting `$fish_emoji_width` doesn't clear the cached width
added new entry

Issue 8298: If prompt ends in an empty line, the commandline is inserted at the width of the line before
added new entry

Issue 8309: colors don't kick in for ls on macOS Big Sur, Monterey (and maybe FreeBSD)
added new entry

Issue 8337: Adds sub-command clear-session to history command. Issue 5791
added new entry (as 5791)

Issue 8352: Fix delete-key in st
added new entry

Issue 8373: Add clasp completion
added new entry

Issue 8434: argparse completions
added new entry

Issue 8510: fish_key_reader ^C warning isn't right
added new entry

Issue 8519: Use `--almost-all` in `la` function
added new entry

---

Issue 1363: improve the experience of using fish over mosh
listed as 8376, ignoring

Issue 8305: incomplete man page completions
listed as 8309, ignoring

Issue 8059: Support "$(cmd)" command substitution without line splitting
listed as 159, ignoring

Issue 8127: fish_config: Read colorschemes from .theme files
listed as 8132, ignoring

Issue 8130: funced: edit the whole file, not just the function definition
listed as 391, ignoring

Issue 8270: builtin cd: print error about broken symlink
listed as 8264, ignoring

Issue 8306: fix man completion for BSD's mandoc
listed as 8305, ignoring

Issue 8441: Don't escape tildes that come from custom completions
listed as 8441, ignoring

---

Issue 8429: `cargo run --example` completions break with nested example directories
update to existing completions, ignoring

Issue 8446: Use `cargo run --example` to get list of examples
update to existing completions, ignoring

Issue 8338: Display local branches before unique remote branches in git completion
update to existing completions, ignoring

Issue 8118: Node completion: add v8 sparkplug option
update to existing completions, ignoring

Issue 8183: Add zypper subcommands completion
update to existing completions, ignoring

Issue 8184: completion nmap: suppress warning when local scripts folder exists
update to existing completions, ignoring

Issue 8191: add missing `git commit` completions
update to existing completions, ignoring

Issue 8192: Updated ping completions
update to existing completions, ignoring

Issue 8202: Add `--function` to `set` completion
update to existing completions, ignoring

Issue 8219: completion: support `--no` prefixes for mpv flag options
update to existing completions, ignoring

Issue 8241: complete "mpc load"
update to existing completions, ignoring

Issue 8243: Add and fix completions for new options
update to existing completions, ignoring

Issue 8249: Fix completions/ls.fish
update to existing completions, ignoring

Issue 8256: Fix completions/coredumpctl.fish and add new complete
update to existing completions, ignoring

Issue 8311: completions/git: Handle "1 .T" & "1 AT" files
update to existing completions, ignoring

Issue 8323: completions/xbps-query: add missing `-p` completions
update to existing completions, ignoring

Issue 8326: Update ldapsearch.fish
update to existing completions, ignoring

Issue 8327: small fix completions/duply.fish
update to existing completions, ignoring

Issue 8334: Update ip.fish
update to existing completions, ignoring

Issue 8344: Fix ant completion
update to existing completions, ignoring

Issue 8365: Update dmesg completions
update to existing completions, ignoring

Issue 8367: No hints for -g|--global and -U|--universal flags for abbr command
update to existing completions, ignoring

Issue 8381: Updated systemd-analyze completions
update to existing completions, ignoring

Issue 8406: vmctl completion function call needs to be quoted
update to existing completions, ignoring

Issue 8480: pabcnetcclear command completion update
update to existing completions, ignoring

---

Issue 8495: Stop linking to StackOverflow
doc update, ignoring

Issue 8176: document `--no-config`
doc update, ignoring

Issue 8260: Theme demo needs to be adjusted so that only unmatched quote is an error
doc update, ignoring

Issue 8380: no error about wrong >>? redirection operator
doc update, ignoring

Issue 8385: set -l works outside of command block
doc update, ignoring

Issue 8409: Some enhancements to "for" and "while" loop pages
doc update, ignoring

Issue 8439: Html docs: Remove link underlines again?
doc update, ignoring

Issue 8457: Old-style options support "=" assignment operator in complete builtin
doc update, ignoring

Issue 8522: Document prompt_hostname
doc update, ignoring

---

Issue 8221: edit_command_buffer: use "command" to ignore any functions with the same name
only helps broken systems, ignoring

Issue 8287: Prepend command to cat
only helps broken systems, ignoring

Issue 8299: Make less version check compatible with older Fish
only helps broken systems, ignoring

Issue 8487: fish_config doesn't work without curses module
only helps broken systems, ignoring

---

Issue 8128: fix 'socket file name too long' error
test fix with long tempdirs (macOS), not really user-visible, ignoring

Issue 8449: Give tests a more generic name
not user-visible, ignoring

Issue 8353: string tests sometimes failing on macOS (Github Actions)
not user-visible, ignoring

Issue 6477: history merge test fails on OpenBSD
not user-visible, ignoring

---

Issue 8471: Obtain Deno completions from itself
update to an unreleased feature (7138), ignoring

Issue 8253: `string length --visible` performance
update to an unreleased feature, ignoring

Issue 8277: Backspace character is ignored when calculating string widths
update to an unreleased feature, ignoring

Issue 8314: `fish_config choose` leaves previous right prompt in place
update to an unreleased feature, ignoring

Issue 8394: parenthesis characters outer of $(command substitution) in string cause error
update to an unreleased feature, ignoring

Issue 8500: Parser bug with command substitutions in strings inside parenthesis
update to an unreleased feature, ignoring

Issue 8419: fish_config: silently doesn't set color schemes.
regression, not in any release, ignoring

Issue 8438: :program: in sphinx doesn't link
regression, not in any release, ignoring

Issue 8478: __fish_seen_argument.fish throws exception when autocompleting
regression, not in any release, ignoring

---

Issue 8280: Fix typo in abbr docs
typofix, ignoring

Issue 8321: Fix typo in `set_colors` command documentation
typofix, ignoring

Issue 8257: Typo funcions -> functions
typofix, ignoring

---

Issue 8206: remove make_pair
no behavior change, ignoring

Issue 8222: replace push_back with emplate_back
no behavior change, ignoring

Issue 8224: clang-tidy: remove pointless virtual
no behavior change, ignoring

Issue 8227: change value to rvalue reference
no behavior change, ignoring

Issue 8228: convert const ref to rvalue ref
no behavior change, ignoring

Issue 8229: clang-tidy: use for range loops
no behavior change, ignoring

Issue 8230: fix deleted constructors
nno behavior change, ignoring

Issue 8231: clang-tidy: const reference conversions
no behavior change, ignoring

Issue 8235: clang-tidy: simplify two bool returns
no behavior change, ignoring

Issue 8237: clang-tidy: replace size comparisons with empty
no behavior change, ignoring

Issue 8239: clang-tidy: replace NULL with nullptr
no behavior change, ignoring

Issue 8252: add constexpr
no behavior change, ignoring

Issue 8430: __fish_seen_subcommand_from and __fish_seen_argument update
no behavior change (apart from a regression that's fixed), ignoring

Issue 8476: Run fish_indent on all non-test .fish files
no behavior change, ignoring

Issue 8477: Use test command instead of bracket command
no behavior change, ignoring

Issue 8521: Fix code scanning alert - Wrong type of arguments to formatting function
no behavior change, ignoring

Issue 8236: clang-tidy: replace push_back with emplace_back
no behavior change, ignoring

---
2021-12-15 22:18:16 +08:00
Johannes Altmanninger
f88e8260ca CHANGELOG: commandline -> command line
"commandline" is usually the term we  use in source code, and it's
also a builtin but user visible text should be English.
2021-12-15 22:18:16 +08:00
Fabian Homborg
67dc86cfa4 webconfig: Skip colors not named in a theme
This is a stop gap. Ideally setting a theme would be idempotent. You
set it, all colors change to match it, even the ones it does not
specify.

However, I do not believe we can *erase* colors that aren't set, and
we don't currently do so in the CLI version. So skip setting these at
all, for now.

If a color is mentioned but empty, it will be set to empty.
2021-12-14 22:54:28 +01:00
Fabian Homborg
3daba1b070 webconfig: Stop translating named colors
If the theme says "brgreen", that's what we want the variable to say
after.

This used to translate it through our palette, so it ended up as
00ff00, which isn't the same.

This still keeps the idea that colors that aren't in the palette are
better, and it does it in a slightly roundabout way (translate color
string to rgb string, see if the rgb string is a key in that
translation dictionary), but it should work for now.
2021-12-14 22:51:54 +01:00
Aaron Gyes
4b018a7608 set completions: add more special variables, fix colors
* add --bold, --italics, all of them,
* and we add them as arguments so that they are do not
  render like long options, they are just self-descriptive
  literal strings in this context.
* solve an unneccessary global var.

Fixes #8518
2021-12-13 16:29:21 -08:00
Fabian Homborg
06fada7445 webconfig: Check variable name and value
Theoretically if this only includes simple characters, it won't cause
any issues. We already validate in other places but it doesn't hurt to
do this twice.
2021-12-13 21:59:08 +01:00
Fabian Homborg
c954d70e2f webconfig: Stop validating colors
Now that we have modifiers and can have backgrounds and such, simply
setting it as css style doesn't cut it.

So let's stop validating for now, the worst that can happen is that
the color isn't rendered.
2021-12-13 21:47:54 +01:00