Commit Graph

540 Commits

Author SHA1 Message Date
Clément Nerma
07b7f6bb76
Allow to construct ReedlineError values from the outside (#676) 2023-12-06 07:17:18 -06:00
Stefan Holderbach
37714c922e
Build docs.rs docs with all features (#672)
Inspired by https://github.com/nushell/nushell/pull/11180

Make sure you can see all available types/symbols on docs.rs
(e.g. `SqliteBackedHistory`)

In a second step we should take care of annotating feature gated stuff
correctly
2023-11-29 10:39:57 -06:00
Stefan Holderbach
93af55c2eb
Bump version for 0.26.0 release (#664) 2023-11-14 20:20:55 +01:00
Stefan Holderbach
879272643f
Properly handle optional event modes (#659)
* Properly handle optional event modes

Both bracketed paste and the kitty keyboard enhancement flag are not
always supported.
This goes both for terminals that may not emit events according to their
spec and also applications that will run in the terminal independent of
reedline.

Make sure we enter the mode when starting to take control and exit the
mode when leaving the mode or being dropped.
The settings exposed to the user will just internally enable a setting
(in the case of the kitty keyboard enhancement flags crossterm provides
and easy way to check for support that we take into account with that)

* Adjust demo to sane bracketed paste API

* cargo fmt

* Add a static helper `kitty_protocol_available`

Public as `reedline::kitty_protocol_available`

Replace the method `Reedline::can_use_kitty_protocol` that doesn't
depend on `Reedline` in the future

Rewrite `KittyProtocolGuard` in terms of it.

* Remove `Reedline::can_use_kitty_protocol`

* Add builder style setters for terminal enhancement

* Switch demo to bracketed paste via builder

* Expand `use_kitty_keyboard_enhancement` doccomment

* Remove old terminal enhancement APIs

* Use `use_kitty_keyboard_enhancement(true)` in demo

As we internally check whether it is available, this should be fine in
nearly all terminals (if they can safely be probed)

* Fix typo
2023-11-14 19:53:13 +01:00
Hofer-Julian
63c43a9a6b
Also run clippy on examples (#666)
* Also run clippy on examples

This PR also fixes existing clippy lints

* Update .github/workflows/ci.yml

---------

Co-authored-by: Stefan Holderbach <sholderbach@users.noreply.github.com>
2023-11-14 11:40:28 +01:00
Chinmay Dalal
d9e0a326df
CwdAwareHinter: remove cwd filter when there are no results (#656)
* CwdAwareHinter: remove cwd filter when there are no results

* remove panicking functions
2023-11-13 13:59:42 +01:00
Clément Nerma
01e32dae88
Add more derive impl for HistoryItemId (#662) 2023-11-11 16:04:55 -06:00
Clément Nerma
16ac4411f0
Make Result and ReedlineError public (#661)
* Make `Result` and `ReedlineError` public

Allows implementing custom `History` types

* Fix: style

* Add rustdoc for reedline::Result
2023-11-11 15:35:20 -06:00
Rein Fernhout
c853d71e66
re-enable bracketed past on not(windows) (#657) 2023-11-06 14:36:11 -06:00
Darren Schroeder
7ca3c388b9
don't allow certain examples to compile without their features (#658) 2023-11-05 14:31:24 -06:00
stfacc
60b3b62743
Split hinter tokens at Unicode word boundaries (#650)
* Split hinter tokens at Unicode word boundaries

Partial completion behaves now like usual word movements by C-Left and C-Right.

* Refactor helper functions to crate level
2023-11-02 00:37:42 +01:00
Dan Gohman
2b6790c14b
Avoid consuming CPU when waiting for input. (#651)
When reading input, start by calling `event::read`, which efficiently blocks
until input arrives, rather than polling for input every 100
milliseconds.

This preserves the existing `POLL_WAIT` polling behavior by moving the
poll after the first `read` call returns.

Fixes #521.
2023-11-02 00:37:22 +01:00
Chinmay Dalal
973dbb5f5f
add cwd aware hinter (#647)
* add cwd aware hinter

towards https://github.com/nushell/nushell/issues/8883

* handle the case where get_current_dir returns Err

* WIP cwd aware hinter

 - guard CwdAwareHinter with feature flag
 - remove references to fish from DefaultHinter as fish is cwd aware
 - add example

* document that CwdAwareHinter is only compatible with sqlite history

* handle non-sqlite history

* handle no sqlite feature in example

* fix warnings
2023-10-19 22:41:09 +02:00
Stefan Holderbach
adc20cb371
Bump version for 0.25.0 release (#645) 2023-10-16 20:03:20 +02:00
Stefan Holderbach
fb9337dccb
Fix clippy lint from most recent Rust (#646)
https://rust-lang.github.io/rust-clippy/master/index.html#/format_collect
2023-10-15 21:17:18 +02:00
Horasal
b1344f6a65
Accept Command with args for BufferEditor (#630)
`.with_buffer_editor()` now expects a `std::process::Command` that can be provided with additional arguments and a tempfile that is unique.

---------

Co-authored-by: Horasal <horsal@horsal.dev>
Co-authored-by: sholderbach <sholderbach@users.noreply.github.com>
2023-09-28 16:42:05 +02:00
Stefan Holderbach
0bf57feba3
Update motto title (#640)
This should reflect that we do not strive to be a `readline` replacement and have our own opinionated choices.
2023-09-28 14:34:01 +02:00
Stefan Holderbach
fd73d0413c
Bump version for 0.24 release (#638) 2023-09-19 14:42:08 +02:00
Hofer-Julian
f993939690
Improve history isolation (#634)
* Improve history isolation

After this change we will get rows:
- that have the same session_id, or
- have a lower id than the first command with our session_id, or
- if there's no command with our session_id, take the whole history.

* Enforce history_isolation also for hints

* Store the session_timestamp in `SqliteBackedHistory`
2023-09-17 15:45:38 -05:00
Stefan Holderbach
ebd653b840
Remove old actions-rs/cargo (#637)
See: https://github.com/actions-rs/toolchain/issues/216
2023-09-15 13:17:01 +02:00
Stefan Holderbach
ae1d97a384
Add a configuration to codecov.io (#636)
* Add a configuration to codecov.io

* Add badge

* Make coverage purely informational
2023-09-15 11:15:02 +02:00
Stefan Holderbach
6739c6aed4
Setup coverage with codecov.io (#635) 2023-09-15 10:43:07 +02:00
ysthakur
33828e5821
Add support for a different prompt after submission (#627)
adds a separate `transient_prompt` to be displayed after submitting.
2023-09-12 22:36:01 +02:00
Hofer-Julian
b2b8f3f486
Minor improvements (#633) 2023-09-10 11:31:32 +02:00
Hofer-Julian
409b51784f
Fix read_line docs (#629)
The result type is not `crossterm::Result` (anymore),
but `std::io::Result`
2023-09-01 22:31:19 +02:00
Stefan Holderbach
31257a4c54
Bump crossterm to 0.27.0 (#625)
* Bump `crossterm` to 0.27.0

Waiting for nushell as ratatui (used in nu-explore) is still on 0.26

* Cargo fmt

* Fix examples
2023-08-28 21:08:10 +02:00
Faïz Hernawan
6143b01b7b
Add Kitty protocol keyboard enhancement support (#607)
* add use_kitty_protocol support option

* move pop key enhancement flags just before loop exit

* add pop keyboard flags pop on drop

* remove toggler functions' return

* move pop key enhancement flags beside other mode change
2023-08-27 23:36:35 +02:00
Stefan Holderbach
a20c867f1c
Bump version for 0.23 release (#626)
Accompanies nushell 0.84.0
2023-08-20 22:57:15 +02:00
Darren Schroeder
e7ee24a2b0
update to strip-ansi-escapes 0.2.0 (#618) 2023-08-09 12:14:19 -05:00
Darren Schroeder
541698fb74
update strip-ansi-escapes to their latest api (#617) 2023-08-08 19:05:26 +02:00
Darren Schroeder
ed5e48e537
turn off default prompt styling (bold) to prevent leakage (#615) 2023-07-31 21:39:20 +02:00
Stefan Holderbach
0b9cb4718a
Bump version for 0.22 release (#614) 2023-07-24 21:14:01 +02:00
Stefan Holderbach
f15f0fb413
Bump nu-ansi-term to 0.49.0 (#613)
Side effect we don't duplicate `windows-sys` anymore
2023-07-24 12:35:05 +02:00
Stefan Holderbach
ddec668b92
Update the Cargo.lock for tests and demo (#611) 2023-07-20 23:47:26 +02:00
nibon7
e2543f0790
Fix big_word_left_index (#609)
* Fix big_word_left_index

* add one more test

---------

Co-authored-by: sholderbach <sholderbach@users.noreply.github.com>
2023-07-20 22:12:24 +02:00
Stefan Holderbach
12c6b7d3c7
Fix clippy lint for DoubleEndedIterator (#610) 2023-07-20 22:06:13 +02:00
Artemiy
4f31e200e4
Replace crossterm ScrollUp with universal workaround (#601)
Replace scrolling via escape sequence with workaround that prints newlines to retain scrollback
regardless of terminal implementation of scroll sequence
2023-07-12 14:30:25 +02:00
Stefan Holderbach
cf841beb92
Update (dev-)deps strum/pretty-assertions,rstest (#600)
- `strum`/`strum_macros` enables upgrade to `syn 2.0`
- `pretty-assertions` gets rid of `ctor` and other outdated dev-deps
- `rstest` also helps with `syn` but introduces `regex` dev-dep
2023-07-10 12:05:32 +02:00
nibon7
2142c5c8e9
Remove unneeded features of chrono (#599) 2023-06-29 17:04:21 +02:00
WindSoilder
d64df59757
always disable bracketed paste after read_line (#598) 2023-06-28 13:41:15 +02:00
Stefan Holderbach
c8bc5ac22b
Bump version for 0.21.0 release (#596) 2023-06-26 12:26:42 +02:00
WindSoilder
de2c627951
add a new disable_bracketed_paste method (#592)
* add a new disable_bracketed_paste function

* fix one typo
2023-06-09 15:11:19 -05:00
Darren Schroeder
cd793416b1
update .typos.toml for bui (#593) 2023-06-09 07:49:02 -05:00
Stefan Holderbach
3cb0feb094
Bump to 0.20.0 for release (#581) 2023-06-06 12:27:27 +02:00
Stefan Holderbach
78a81adf87
Revert removal of patch versions (#590)
Reincludes the patch versions that were removed in #586 to ensure
reedline gets built with a version with which we tested reedline at some
point.
2023-06-06 11:26:53 +02:00
WMR
79778f7b85
Update to make work with new lines embedded in sent string. (#588)
* Update to make work with new lines embedded in sent string.

* Appease fmt
2023-05-30 17:20:20 -05:00
Darren Schroeder
f7515b40e5
update cargo.lock (#587)
* update cargo.lock

* update timestamp_millis_opt
2023-05-26 08:58:50 -05:00
Darren Schroeder
8c4001b845
update dependencies (#586) 2023-05-26 08:26:42 -05:00
JT
e0e5957a5d
bump reedline version (#585) 2023-05-25 11:12:48 +12:00
IchHabeKeineNamen
bd306945b6
fix: prompt position on resize (#578)
* fix: prompt position on resize

* fix: u16 overflow

* fix: prompt position when terminal grows in height

* fix: exclude blank area from prompt height

fix: resume the early return to exclude a case where the terminal got smaller but the prompt is still visible

* fix: prevent any line overwriting at the cost of duplicate prompts

* fix: prevent width change from eating previous output
2023-05-25 11:07:44 +12:00