Commit Graph

574 Commits

Author SHA1 Message Date
Fabian Boehm
eb196c8330 Encode all ENCODE_DIRECT codepoints with encode_direct
forward-port of 09986f5563
2023-12-10 09:29:42 +01:00
Johannes Altmanninger
e380654fff Port test_convert_nulls 2023-12-09 21:35:08 +01:00
Johannes Altmanninger
a55e95f5fb Port test_env_snapshot 2023-12-09 21:35:08 +01:00
Johannes Altmanninger
fe19cbded0 Port test_wwrite_to_fd 2023-12-09 21:35:08 +01:00
Johannes Altmanninger
d5ccbb6e9c Port test_error_messages 2023-12-09 21:35:08 +01:00
Johannes Altmanninger
f3d1e0d63a Port test_new_parser_errors 2023-12-09 21:35:08 +01:00
Johannes Altmanninger
a7791aab4d Port test_new_parser_ad_hoc 2023-12-09 21:35:08 +01:00
Johannes Altmanninger
d5cfa0e346 Port test_new_parser_ll2 2023-12-09 21:35:08 +01:00
Johannes Altmanninger
af4b8ccc91 Port test_new_parser_fuzzing 2023-12-09 21:35:08 +01:00
Johannes Altmanninger
afddb5dd3e Port test_new_parser_correctness 2023-12-09 21:35:08 +01:00
Johannes Altmanninger
3fab9adab6 Port test_illegal_command_exit_code 2023-12-09 21:35:08 +01:00
Johannes Altmanninger
c74cc71e26 Port rest of test_parser
Most of this is already ported into the "test_parser" test.
2023-12-09 21:35:08 +01:00
Johannes Altmanninger
09b7f3892f Port test_pipes 2023-12-09 21:35:08 +01:00
Johannes Altmanninger
9430d5c542 Port test_wgetopt 2023-12-09 21:35:08 +01:00
Johannes Altmanninger
4217fc9bf6 Address clippy lint for debounce test 2023-12-09 16:54:26 +01:00
Johannes Altmanninger
749e760cf5 Port debounce tests 2023-12-09 16:48:02 +01:00
Johannes Altmanninger
0942ace6c9 Fix begin-undo-group regression
Fixes #10145
2023-12-09 16:12:54 +01:00
Johannes Altmanninger
8fe82fcfcf build.rs: remove rebuild_if_path_changed for C files
Repeated

    CARGO_LOG=cargo::core::compiler::fingerprint=trace cargo b

show that we always rebuild because of "compat.c".  Not sure why.
Let's disable this for now so we can use the cache (for test targets etc.).
2023-12-09 16:11:42 +01:00
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
Johannes Altmanninger
18654b1872 build.rs: silence error output of compile checks
These compile checks are expected to produce compiler errors on some systems.
The errors show up when there is an unrelated error, this is probably quite
confusing so fix that. Should revisit this later.
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