Add key_timeout config option (#1649)

This commit is contained in:
Thomas B Homburg 2020-04-24 19:28:38 +02:00 committed by GitHub
parent 0e510ad42b
commit 716c4def03
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 30 additions and 8 deletions

View File

@ -555,6 +555,13 @@ pub async fn cli() -> Result<(), Box<dyn Error>> {
rl.set_edit_mode(edit_mode);
let key_timeout = config::config(Tag::unknown())?
.get("key_timeout")
.map(|s| s.value.expect_int())
.unwrap_or(1);
rl.set_keyseq_timeout(key_timeout as i32);
let completion_mode = config::config(Tag::unknown())?
.get("completion_mode")
.map(|s| match s.value.expect_string() {

View File

@ -20,6 +20,7 @@ use indexmap::IndexMap;
use nu_errors::ShellError;
use nu_source::{AnchorLocation, HasSpan, Span, Spanned, Tag};
use num_bigint::BigInt;
use num_traits::ToPrimitive;
use serde::{Deserialize, Serialize};
use std::path::PathBuf;
use std::time::SystemTime;
@ -122,6 +123,19 @@ impl UntaggedValue {
}
}
/// Expect this value to be an integer and return it
pub fn expect_int(&self) -> i64 {
let big_int = match self {
UntaggedValue::Primitive(Primitive::Int(int)) => Some(int),
_ => None,
};
match big_int.and_then(|i| i.to_i64()) {
Some(i) => i,
_ => panic!("expect_int assumes that the value must be a integer"),
}
}
/// Helper for creating row values
pub fn row(entries: IndexMap<String, Value>) -> UntaggedValue {
UntaggedValue::Row(entries.into())

View File

@ -29,14 +29,15 @@ 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 |
| 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 |
| key_timeout | integer (milliseconds) | vi: the delay to wait for a longer key sequence after ESC |
| completion_mode | "circular" or "list" | changes completion type to "circular" (default) or "list" mode |
## Examples