mirror of
https://github.com/nushell/nushell
synced 2024-11-10 07:04:13 +00:00
Updated rustyline to 6.0.0. Added completion_mode config (#1289)
* Updated rustyline to 6.0.0. Added completion_mode config * Formatted completion_mode config
This commit is contained in:
parent
af51a0e6f0
commit
f8be1becf2
6 changed files with 36 additions and 19 deletions
4
Cargo.lock
generated
4
Cargo.lock
generated
|
@ -3372,9 +3372,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "rustyline"
|
||||
version = "5.0.6"
|
||||
version = "6.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a23cb19702a8d6afb6edb3c842386e680d4883760e0df74e6848e23c2a87a635"
|
||||
checksum = "de64be8eecbe428b6924f1d8430369a01719fbb182c26fa431ddbb0a95f5315d"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"dirs 2.0.2",
|
||||
|
|
|
@ -61,7 +61,7 @@ nu-macros = { version = "0.8.0", path = "./crates/nu-macros" }
|
|||
|
||||
query_interface = "0.3.5"
|
||||
typetag = "0.1.4"
|
||||
rustyline = "5.0.6"
|
||||
rustyline = "6.0.0"
|
||||
chrono = { version = "0.4.10", features = ["serde"] }
|
||||
derive-new = "0.5.8"
|
||||
prettytable-rs = "0.8.0"
|
||||
|
|
|
@ -193,12 +193,13 @@ Here we use the variable `$it` to refer to the value being piped to the external
|
|||
Nu has early support for configuring the shell. It currently supports the following settings:
|
||||
|
||||
| Variable | Type | Description |
|
||||
| ------------- | ------------- | ----- |
|
||||
| --------------- | -------------------- | -------------------------------------------------------------- |
|
||||
| path | table of strings | PATH to use to find binaries |
|
||||
| env | row | the environment variables to pass to external commands |
|
||||
| ctrlc_exit | boolean | whether or not to exit Nu after multiple ctrl-c presses |
|
||||
| table_mode | "light" or other | enable lightweight or normal tables |
|
||||
| edit_mode | "vi" or "emacs" | changes line editing to "vi" or "emacs" mode |
|
||||
| completion_mode | "circular" or "list" | changes completion type to "circular" (default) or "list" mode |
|
||||
|
||||
To set one of these variables, you can use `config --set`. For example:
|
||||
|
||||
|
|
|
@ -30,12 +30,13 @@ Syntax: `config {flags}`
|
|||
### Variables
|
||||
|
||||
| Variable | Type | Description |
|
||||
| ---------- | ---------------- | ------------------------------------------------------- |
|
||||
| --------------- | -------------------- | -------------------------------------------------------------- |
|
||||
| path | table of strings | PATH to use to find binaries |
|
||||
| env | row | the environment variables to pass to external commands |
|
||||
| ctrlc_exit | boolean | whether or not to exit Nu after multiple ctrl-c presses |
|
||||
| table_mode | "light" or other | enable lightweight or normal tables |
|
||||
| edit_mode | "vi" or "emacs" | changes line editing to "vi" or "emacs" mode |
|
||||
| completion_mode | "circular" or "list" | changes completion type to "circular" (default) or "list" mode |
|
||||
|
||||
## Examples
|
||||
|
||||
|
|
15
src/cli.rs
15
src/cli.rs
|
@ -18,8 +18,8 @@ use nu_protocol::{Signature, UntaggedValue, Value};
|
|||
use log::{debug, log_enabled, trace};
|
||||
use rustyline::error::ReadlineError;
|
||||
use rustyline::{
|
||||
self, config::Configurer, config::EditMode, At, Cmd, ColorMode, Config, Editor, KeyPress,
|
||||
Movement, Word,
|
||||
self, config::Configurer, config::EditMode, At, Cmd, ColorMode, CompletionType, Config, Editor,
|
||||
KeyPress, Movement, Word,
|
||||
};
|
||||
use std::error::Error;
|
||||
use std::io::{BufRead, BufReader, Write};
|
||||
|
@ -419,6 +419,17 @@ pub async fn cli() -> Result<(), Box<dyn Error>> {
|
|||
|
||||
rl.set_edit_mode(edit_mode);
|
||||
|
||||
let completion_mode = config::config(Tag::unknown())?
|
||||
.get("completion_mode")
|
||||
.map(|s| match s.value.expect_string() {
|
||||
"list" => CompletionType::List,
|
||||
"circular" => CompletionType::Circular,
|
||||
_ => CompletionType::Circular,
|
||||
})
|
||||
.unwrap_or(CompletionType::Circular);
|
||||
|
||||
rl.set_completion_type(completion_mode);
|
||||
|
||||
let colored_prompt = {
|
||||
#[cfg(feature = "starship-prompt")]
|
||||
{
|
||||
|
|
|
@ -204,3 +204,7 @@ impl Painter {
|
|||
}
|
||||
|
||||
impl rustyline::Helper for Helper {}
|
||||
|
||||
// Use default validator for normal single line behaviour
|
||||
// In the future we can implement this for custom multi-line support
|
||||
impl rustyline::validate::Validator for Helper {}
|
||||
|
|
Loading…
Reference in a new issue