Commit Graph

18459 Commits

Author SHA1 Message Date
Fabian Boehm
c4ca1a68d3
Add a clear-screen bind function to clear the screen (#10044)
This can be bound like `bind \cl clear-screen`, and is, by default

In contrast to the current way it doesn't need the external `clear`
command that was always awkward.

Also it will clear the screen and first draw the old prompt to remove
flicker.
Then it will immediately trigger a repaint, so the prompt will be overwritten.
2023-10-08 11:41:30 +02:00
ridiculousfish
f7e7396c69 Fix a deadlock affecting fish_config
This fixes the following deadlock. The C++ functions path_get_config and
path_get_data lazily determine paths and then cache those in a C++ static
variable. The path determination requires inspecting the environment stack.
If these functions are first called while the environment stack is locked
(in this case, when fetching the $history variable) we can get a deadlock.

The fix is to call them eagerly during env_init. This can be removed once
the corresponding C++ functions are removed.

This issue caused fish_config to fail to report colors and themes.

Add a test.
2023-10-07 15:20:14 -07:00
ridiculousfish
b315b66cb0 Minor comment cleanup of main.rs 2023-10-07 14:39:24 -07:00
Fabian Boehm
e62f32c16b CI: Remove --deny=warnings from clippy test
This was pretty annoying on rust release day, because it introduced
new warnings.

Specifically 1.73 introduced a spurious one about PartialOrd and Ord
disagreeing when both were in fact #derive-d.
2023-10-07 19:48:54 +02:00
Johannes Altmanninger
79bbf5247a builtin set_color: use naming convention 2023-10-07 19:30:46 +02:00
Johannes Altmanninger
28a38946a5 common: port err!() test helper
Unlike our C++ tests, our Rust tests fail as soon as an assertion fails.
Whether this is desired is debatable; it seems fine for
most cases and is easier to implement.

This means that Rust tests usually don't need to print anything besides
what assert!/assert_eq! already provide.
One exception is the history merge test. Let's add a simple err!() macro to
support this. Unlike the C++ err() it does not yet print colors.

Currently all of our macros live in common.rs, to keep the import graph simple.
2023-10-07 19:30:46 +02:00
Johannes Altmanninger
618834c4b5 Port UVAR_FILE_SET_MTIME_HACK
Notably this exposes config.h to Rust (for UVAR_FILE_SET_MTIME_HACK).
In future we should move the CMake checks into build.rs so we can potentially
get rid of CMake.
2023-10-07 19:30:46 +02:00
Johannes Altmanninger
3020c90856 Upgrade bitflags
This allows us to use some newer functionality (I forgot which one I ended
up using).
2023-10-07 19:30:46 +02:00
Johannes Altmanninger
1bfdc33f76 Make stream.append call sites consistent
Maybe the wrong direction.. but this seems to be the majority.
2023-10-07 19:30:46 +02:00
Johannes Altmanninger
2fb352a9e4 Address some clippy lints from nightly clippy
Note that in general we should not respect nightly clippy because it might
contradict stable clippy which is run in CI.
2023-10-07 19:30:46 +02:00
Johannes Altmanninger
10fed02572 Work around ASan complaining about buffer overflow in DirIter
On the following "Port execution" commit, ASan will complain if we read
beyond a terminating null byte in get_autosuggestion_performer().  This is
actually working as intended but we need to appease ASan somehow..
2023-10-07 19:30:46 +02:00
Johannes Altmanninger
55683b29cd CMakeLists: sort 2023-10-07 19:30:46 +02:00
Johannes Altmanninger
379ad03d9d parse_util: return Result in parse_util_detect_errors_in_argument
This makes it consistent with some other public parse_util_* functions.
2023-10-07 19:30:46 +02:00
Johannes Altmanninger
2334424234 parse_util: fix regressions from port
Tested by the upcoming highlighting unit tests.
2023-10-07 19:30:46 +02:00
Johannes Altmanninger
c7c0bb9bb2 env: fix boolean sense in get_pwd_slash()
get_pwd_slash() uses "if var.is_empty()" but it should be "if !var.is_empty()".
This wasn't a problem so far because in practice most code paths use the
get_pwd_slash() override from EnvStackImpl. The generic one is used in the
upcoming unit tests.
2023-10-07 19:30:46 +02:00
Johannes Altmanninger
48ce8f8721 Remove test_history_speed benchmark
Doesn't seem terribly important? We can add it back easily.
2023-10-07 19:30:46 +02:00
Johannes Altmanninger
ffbb56c4a9 common: port test_format 2023-10-07 19:30:46 +02:00
Johannes Altmanninger
408161f4d6 Port test_tokenizer 2023-10-07 19:30:46 +02:00
Mathijs Henquet
a809672412
Fix out of scope opt variable (#10020)
* Fix out of scope opt variable

* Update ls.fish
2023-10-07 18:00:17 +02:00
Fabian Boehm
098b7093da fish_config: Fix save with variable with multiple values
Your basic quoting problem, regressed in 3.6.0
2023-10-06 22:15:35 +02:00
Fabian Boehm
4d59d9cfb5 Also allow command and in a pipeline
Similar to `time`, except that one is more common as a command.

Note that this will also allow `builtin and`, which is somewhat
useless, but then it is also useless outside of a pipeline.

Addition to #9985

(cherry picked from commit b454b3bc40)
2023-10-06 18:54:25 +02:00
Fabian Boehm
7815cb363c parse_util: Only reject time in a pipeline without decorator
This allows e.g. `foo | command time`, while still rejecting `foo | time`.

(this should really be done in the ast itself, but tbh most of
parse_util kinda should)

Fixes #9985

(cherry picked from commit 482616f101)
2023-10-06 18:50:02 +02:00
Fabian Boehm
651c1d2dc8 Css refresh (#9982)
This cleans up the CSS, reduces the number of different colors and special settings we use.

It increases contrast so we now pass WCAG AAA (according to chromium), and switches to css variables for colors to make dark mode simpler to implement.

(cherry picked from commit b48fa1f1a0)
2023-10-06 18:49:55 +02:00
Fabian Boehm
04b2e9629f math: Fix docs on --scale
Fixes #9983

(cherry picked from commit e555f1b235)
2023-10-06 18:49:55 +02:00
Fabian Boehm
7260e1f828 sample_prompts/scales: Silence one last git call
Fixes #9975

(cherry picked from commit 5b1ff9459a)
2023-10-06 18:49:55 +02:00
Fabian Boehm
136b99839b print_apt_packages: Go back to apt-cache for non-installed packages
Unfortunately, /var/lib/dpkg/status on recent-ish Debian versions at
least only contains the *installed* packages, rendering this solution
broken.

What we do instead is:

1. Remove a useless newline from each package, so our limit would now
let more full package data sets through
2. Increase the limit by 5x

This yields a completion that runs in ~800ms instead of ~700ms on a
raspberry pi, but gives ~10x the candidates, compared to the old
apt-cache version.

This partially reverts 96deaae7d8

(cherry picked from commit 81cd035950)
2023-10-06 18:49:46 +02:00
figurantpp
ab45e4abf2 Shortens rsync completion description
(cherry picked from commit 6473a9c763)
2023-10-06 18:48:25 +02:00
Kevin Cali
9dc0d3a6e8 docs: correct insert mode key
(cherry picked from commit 716001789b)
2023-10-06 18:48:25 +02:00
ysthakur
5354fe1119 Replace more escapes with quotes in man parser (#9961)
* Replace \(aq with "'" in man parser

* Also replace oq, dq, lq, and rq

(cherry picked from commit 0f19d7118b)
2023-10-06 18:48:25 +02:00
Roland Fredenhagen
85267199c7 completions/iwctl: Show network details in completion (#9960)
* completions/iwctl: Show network details in completion

* apply review comments

(cherry picked from commit 556bee6893)
2023-10-06 18:48:25 +02:00
Axlefublr
cf955c07fc fix __fish_list_current_token not recognizing ~ as $HOME (#9954)
* fix __fish_list_current_token not recognizing ~ as $HOME

* right. it was supposed to be $HOME. lol.

(cherry picked from commit fd68aca6ea)
2023-10-06 18:48:25 +02:00
Fabian Boehm
7bf704fe87 docs: Mention fish_cursor_replace
Fixes #9956

(cherry picked from commit c07136e8d3)
2023-10-06 18:37:46 +02:00
Gregory Anders
c5490893c2 Enable PWD reporting for iTerm2
(cherry picked from commit 69ef51f417)
2023-10-06 18:35:51 +02:00
Roland Fredenhagen
4e63cc23a4 Add iwctl completions (#9932)
* Add iwctl completions

* review-comments

* options

(cherry picked from commit 408ab86090)
2023-10-06 18:35:33 +02:00
Emily Grace Seville
c8177bdd30 Add horcrux completion (#9922)
* feat(completions): horcrux

* feat(changelog): mention completion

* fix(completion): condition for -n

(cherry picked from commit f9d21cc21d)
2023-10-06 18:35:32 +02:00
Gabriel Górski
7a60613b79 Simplify and fix __fish_is_zfs_feature_enabled (#9939)
* Simplify and fix `__fish_is_zfs_feature_enabled`

Previously `__fish_is_zfs_feature_enabled` was doing
`<whitespace>$queried_feature<whitespace>` pattern matching which
was skipping the state part expected in the follow-up checking code.

Passing the dataset/snapshot in a `target` argument is pointless. As
none of the existing code attempts to do this plus it is also a
private function (`__` prefix), rename of the argument and removal
of extra text replacement should not be considered a breaking change.

* Changed the `&& \` into `|| return`

* Run `fish_indent`

(cherry picked from commit 21ddfabb8d)
2023-10-06 18:35:26 +02:00
Fabian Boehm
d1f3058c6d Remove a waccess call when completing executables
We have already run waccess with X_OK. We already *know* the file is
executable.

There is no reason to check again.

Restores some of the speedup from the fast_waccess hack that was
removed to fix #9699.

(cherry picked from commit ee75b45687)
2023-10-06 18:35:26 +02:00
AsukaMinato
7e75fe3d37 add gcc completion lm lz lrt (#9919)
add some gcc completion options

(cherry picked from commit 9a9e133b18)
2023-10-06 18:35:26 +02:00
AsukaMinato
f2d8112136 more gcc -O completion
https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
(cherry picked from commit 2110b36426)
2023-10-06 18:35:26 +02:00
Emily Grace Seville
cc72a88ba0 Add Krita completions (#9903)
* feat(completions): support Krita

* feat(completions): support summary options for Krita

* feat(completions): support remaining options for Krita

* feat(completions): remove debug instructions

* feat(completions): hide completions for sizes for Krita

* feat(completions): fix Krita

* feat(changelog): mention new completion

* fix(completions): refactor Krita

* fix(completion): reformat

* feat(completion): dynamically generate workspace list

* fix(completion): refactor

* fix(completion): krita

* fix(completions): use printf

(cherry picked from commit 6ce2ffbbb0)
2023-10-06 18:35:25 +02:00
Emily Grace Seville
8430afbead Add Blender completions (#9905)
(cherry picked from commit 8d3885b9cb)
2023-10-06 18:35:16 +02:00
Pavel savchenko
7c44f78490 Docs: correct small grammatical error in read.rst
(cherry picked from commit c56f9e1981)
2023-10-06 18:35:10 +02:00
EmilySeville7cfg
f95b8470a2 feat(completions): gimp support
(cherry picked from commit 2bc605625e)
2023-10-06 18:35:10 +02:00
Henrik Hørlück Berg
a7c8e0cdfb Fix #9899 integer overflow in string repeat
We could end up overflowing if we print out something that's a multiple of the
chunk size, which would then finish printing in the chunk-printing, but not
break out early.

(cherry picked from commit 6325b3662d)
2023-10-06 18:35:06 +02:00
Fabian Boehm
496d65fb5d Apply variable overrides for exec
Fixes #9995
2023-10-06 18:15:25 +02:00
Fabian Boehm
6775b0b1ad Implement PartialEq manually to shut up clippy 2023-10-06 17:10:59 +02:00
Fabian Boehm
1073f59929 Shut up Clippy 1.72 2023-10-06 16:54:16 +02:00
Fabian Boehm
ff433b0cb2 reader: Only move cursor if needed for repaint-mode
This uses "screen.reset_line" to move the cursor without informing the
reader's machinery (because that deals with positions *in the
commandline*), but then only repainted "if needed" - meaning if the
reader thought anything changed.

That could lead to a situation where the cursor stays at column 0
until you do something, e.g. in

```fish
bind -m insert u undo
```

when you press alt+u - because the *escape* calls repaint-mode, which
puts the cursor in column 0, and then the undo doesn't, which keeps it
there.

Of course this binding should also `repaint-mode`, because it changes
the mode.

Some changes might be ergonomic:

1. Make repaint-mode the default if the mode changed (we would need to
skip it for bracketed-paste)
2. Make triggering the repaint easier - do we need to set
force_exec_prompt_and_repaint to false here as well?

Anyway, this

Fixes #7910
2023-10-06 16:38:26 +02:00
Fabian Boehm
3ce67ecbd2 printf: Fix octal escapes with leading zeroes
Octal escapes can be written as `\057` or as `\0057`.

Simply ported wrong initially.
2023-10-05 15:39:50 +02:00
Fabian Boehm
8cc0bdeed8 pexpect: Remove some unnecessary empty lines
This strips the newline from "code_context" (which is really just the
called function), and from the unescaped output.

Rather, in case the output doesn't end with a newline it'll mark it
with an explicit message "(no trailing newline)".
2023-10-04 18:51:44 +02:00