Commit Graph

529 Commits

Author SHA1 Message Date
Johannes Altmanninger
f118dbc4b9 Fix "fish --private" regression
Introduced in eacbd6156 (Port and adopt main written in Rust, 2023-08-18).

Fixes #10146
2023-12-09 09:34:57 +01:00
Johannes Altmanninger
bb16cad9dc Simplify call to is_sorted_by()
I con no longer reproduce an error/warning for this.
2023-12-06 19:01:22 +01:00
Johannes Altmanninger
360c9043cb Disable unstable_name_collisions warning
We rarely attach trait methods to stdlib types so this warning is unlikely to
be a true positive It is a false positive for the methods defined in future.rs.
It's not always obvious which method is selected when it's available in the
stdlib but I haven't seen a build failure yet.  So let's disable the warning.

In future we might be able suppress it per method, see Rust issue 48919.
2023-12-06 19:00:37 +01:00
Johannes Altmanninger
b361d1a0cf Address some clippy lints
I got these with clippy 1.67 but not with 1.73 (possible regression?).
2023-12-06 19:00:37 +01:00
Johannes Altmanninger
d7a6c7f66a Backport is_ok_and
On Rust versions that have it, this will be unused, so ignore the unused
import warning.
2023-12-06 11:02:19 +01:00
Johannes Altmanninger
aa2f817b3b fish_indent: readd missing return on -h/-v 2023-12-06 10:29:01 +01:00
Johannes Altmanninger
b28521c3d5 Port fish_indent 2023-12-06 09:59:16 +01:00
Johannes Altmanninger
57e96e791e Remove some deprecated code
rust-analyzer completions are good enough so we don't need these.
2023-12-06 09:19:36 +01:00
Johannes Altmanninger
e2a0e1652e Clean up some std::io calls 2023-12-06 08:59:52 +01:00
Johannes Altmanninger
f5712af132 Add printf!/eprintf! convenience wrappers around fprintf!
We often want to format and print a string to a fd, usually stdout/stderr.

In general we can't use "format!", "print!", "eprint!" etc. because they don't
know about our use of WString where we encode of invalid Unicode characters
in the private use area.

Instead we use "wwrite_to_fd()".
Since we unfortunately don't have a "wformat!()" yet, we use "sprintf!()"
to create a formatted wstring to pass to "wwrite_to_fd()".

Add "printf!" and "eprintf!" to stand in for "print!" and "eprint!".
For printing to files other than stdout and stderr, keep "fwprintf!" but
drop the "w" since our "sprintf!" always produces wide strings.

Replace "fputws" with "fprintf" though we could also use "wwrite_to_fd"
if performance matters.

Unlike std::io::stdout(), we don't use locking yet.

Remaining work:

- There are more places where we use \be?print(ln)?!
  Usually we print strings that are guaranteed to be valid UTF-8, but not
  always. We should probably make all of them respect our WString semantics
  but preferrably keep using the native Rust format strings (#9948).
- I think flog.rs currently uses String so it won't handle invalid Unicode
  characters. We should probably fix this as well.
2023-12-06 08:59:52 +01:00
Johannes Altmanninger
e88e7dbf7a Remove stale comment 2023-12-04 23:03:36 +01:00
Thomas Queiroz
a64324421f Port builtin ulimit
Closes #10121
2023-12-03 11:39:15 +01:00
Johannes Altmanninger
31ecc5e0f9 compat.rs: group declarations 2023-12-03 11:34:31 +01:00
Johannes Altmanninger
43e2d7b48c Port pager.cpp 2023-12-03 11:02:04 +01:00
Johannes Altmanninger
f7b5ebc79f screen: rename size() to len() 2023-12-03 11:02:04 +01:00
Johannes Altmanninger
fadf0f2e5b Port editable_line_t 2023-12-02 20:04:07 +01:00
Johannes Altmanninger
020b990c81 screen: remove unused lifetime parameter 2023-12-02 19:22:03 +01:00
Johannes Altmanninger
29ec464767 Remove obsolete cur_term() wrapper 2023-12-02 16:39:27 +01:00
Fabian Boehm
05b024c675 fixup! fmt
It seems my emacs integration broke
2023-12-01 18:17:07 +01:00
Fabian Boehm
fe9d1228e1 function: Fix a broken format string 2023-12-01 18:15:11 +01:00
Fabian Boehm
aa904f0304 Correct a formattting FLOG 2023-12-01 18:15:11 +01:00
Johannes Altmanninger
31ad182aa5 Port screen.cpp 2023-12-01 11:59:33 +01:00
Johannes Altmanninger
5f1499cd67 curses: terminfo numeric capabilities are unsigned 2023-12-01 11:59:33 +01:00
Fabian Boehm
0aa08cf267 Make wgettext_fmt! require an argument *to* format
Like FLOGF!, this now needs at least one argument to format.

This avoids some issues with missing variables and broken format
strings - it is how I found 13ba5bd405 -
where disown had a format string, with two placeholders, but no
arguments to fill them with.

For use in e.g. macros, where it's otherwise hard to tell if we have
something to format or not, this adds a wgettext_maybe_fmt! version to
"maybe" format, if necessary.
2023-11-29 21:12:21 +01:00
Johannes Altmanninger
f57c5e3a5f history: remove bogus assertion crashing on empty history items
In LastC++11, an empty history item means we either reached the end of history,
or the item is actually empty. The second meaning is still true.  We never
append empty history items but the history file might have been modified.

Fixes #10129
2023-11-29 20:26:36 +01:00
Fabian Boehm
b23057ee61 fix fmt 2023-11-29 17:03:10 +01:00
Fabian Boehm
13ba5bd405 disown: Fix a format string
Missed in 77aeb6a2a8, this would crash otherwise.
2023-11-29 16:59:53 +01:00
ridiculousfish
9b54e243b1 Add FFI bindings to universal notifiers and adopt in input_common
This removes the C++ bits for universal notifiers.
2023-11-26 17:29:53 -08:00
ridiculousfish
acd0bf1a43 Migrate uvar notifier test helper into its own module
Reduce the amount of stuff in mod.rs
2023-11-26 17:29:48 -08:00
ridiculousfish
a950a8270d Create an inotify based universal notifier for Linux
Recall that universal notifiers are used to report changes to universal
variables to other shell instances. This adds a new strategy based on using
inotify to directly monitor the universal variables
file.

We have tried this in the past and abandoned it because it doesn't properly
work on some CI systems - let's try again.
2023-11-26 17:29:48 -08:00
ridiculousfish
38d198a83a Port macOS universal notifiers to Rust
This ports the notifyd-based universal notifier to Rust.
2023-11-26 17:29:48 -08:00
ridiculousfish
99dfbaffb9 Remove an unreachable_code "allow" declaration
This is no longer necessary - all of the code is readable.
2023-11-26 17:23:02 -08:00
ridiculousfish
f773697bc1 Fix a clippy lint in ConstPointer 2023-11-25 19:12:14 -08:00
ridiculousfish
0f3d4b754f Fix some bogus unused import warnings 2023-11-25 19:12:11 -08:00
ridiculousfish
cf4f07b837 Correct a misseplling 2023-11-25 16:01:58 -08:00
Fabian Boehm
62b9a0f983 path: Keep metadata around for special permissions 2023-11-24 17:05:08 +01:00
Fabian Boehm
9d1c0da773 path: Reduce syscalls for special permissions
This

1. Skips access() if we only have "special" permissions like the owner
that need stat
2. Does the geteuid()/getegid() *once* outside of filter_path, if we
need it

In the extreme case of `path filter --perm user,group` it will remove
3 syscalls per file.
2023-11-24 17:05:08 +01:00
Yonas Yanfa
1c2440c3ac
Enable dynamic title in Rio and Foot terminals (#10115) 2023-11-24 17:04:50 +01:00
Fabian Boehm
6361362996
Replace some direct uses of libc with wrappers (#10090)
This removes some spurious unsafe blocks and makes usage a bit nicer
2023-11-19 20:07:24 +01:00
ridiculousfish
a718852ad4 Fix a typo and suppress an annoying clippy lint 2023-11-18 19:03:23 -08:00
ridiculousfish
da646a38ba Remove some unnecessary widestrs 2023-11-18 19:03:23 -08:00
ridiculousfish
f0eaa516c0 Stop boxing ParseExecutionContext
This wasn't necessary - probably a holdover from using unique_ptr in C++.
2023-11-18 19:03:23 -08:00
ridiculousfish
89376d5fd0 Fix a clippy lint 2023-11-18 19:03:23 -08:00
a-kenji
17eadcff03 Fix small typos 2023-11-18 18:27:25 -08:00
ridiculousfish
a9f346acf0 Remove some environment and null_terminated_array ffi bits
These are now unused and can be removed.
2023-11-18 11:12:25 -08:00
Johannes Altmanninger
7df70e18f4 Add hint to error message about cmdsub in command position
We might end up allowing this but let's add some help for now.

See #5575
2023-11-18 12:26:45 +01:00
Johannes Altmanninger
f3ce78bc53 history: remove spurious UTF-8 check regression
Closes #10102
2023-11-15 16:31:33 +01:00
Johannes Altmanninger
4e37dc29dc Fix autosuggestion dropping too many keyword tokens 2023-11-15 11:09:48 +01:00
Johannes Altmanninger
6569943cb8 Port builtin read 2023-11-15 11:09:48 +01:00
Johannes Altmanninger
77aeb6a2a8 Port execution
Drop support for history file version 1.

ParseExecutionContext no longer contains an OperationContext because in my
first implementation, ParseExecutionContext didn't have interior mutability.
We should probably try to add it back.

Add a few to-do style comments. Search for "todo!" and "PORTING".

Co-authored-by: Xiretza <xiretza@xiretza.xyz>
(complete, wildcard, expand, history, history/file)
Co-authored-by: Henrik Hørlück Berg <36937807+henrikhorluck@users.noreply.github.com>
(builtins/set)
2023-11-15 11:09:48 +01:00