silly keymap addition for quick shell changing (#710)
This commit is contained in:
parent
d63eac69e5
commit
4860014cec
18
src/main.rs
18
src/main.rs
|
@ -1,3 +1,4 @@
|
||||||
|
use crossterm::event::{KeyCode, KeyModifiers};
|
||||||
#[cfg(windows)]
|
#[cfg(windows)]
|
||||||
use crossterm_winapi::{ConsoleMode, Handle};
|
use crossterm_winapi::{ConsoleMode, Handle};
|
||||||
use dialoguer::{
|
use dialoguer::{
|
||||||
|
@ -17,7 +18,10 @@ use nu_protocol::{
|
||||||
engine::{EngineState, Stack, StateWorkingSet},
|
engine::{EngineState, Stack, StateWorkingSet},
|
||||||
Config, PipelineData, ShellError, Span, Value, CONFIG_VARIABLE_ID,
|
Config, PipelineData, ShellError, Span, Value, CONFIG_VARIABLE_ID,
|
||||||
};
|
};
|
||||||
use reedline::{Completer, CompletionActionHandler, DefaultHinter, LineBuffer, Prompt, Vi};
|
use reedline::{
|
||||||
|
default_emacs_keybindings, Completer, CompletionActionHandler, DefaultHinter, EditCommand,
|
||||||
|
Emacs, LineBuffer, Prompt, ReedlineEvent, Vi,
|
||||||
|
};
|
||||||
use std::{
|
use std::{
|
||||||
io::Write,
|
io::Write,
|
||||||
path::PathBuf,
|
path::PathBuf,
|
||||||
|
@ -371,6 +375,17 @@ fn main() -> Result<()> {
|
||||||
//Reset the ctrl-c handler
|
//Reset the ctrl-c handler
|
||||||
ctrlc.store(false, Ordering::SeqCst);
|
ctrlc.store(false, Ordering::SeqCst);
|
||||||
|
|
||||||
|
let mut keybindings = default_emacs_keybindings();
|
||||||
|
keybindings.add_binding(
|
||||||
|
KeyModifiers::SHIFT,
|
||||||
|
KeyCode::BackTab,
|
||||||
|
ReedlineEvent::Multiple(vec![
|
||||||
|
ReedlineEvent::Edit(vec![EditCommand::InsertChar('p')]),
|
||||||
|
ReedlineEvent::Enter,
|
||||||
|
]),
|
||||||
|
);
|
||||||
|
let edit_mode = Box::new(Emacs::new(keybindings));
|
||||||
|
|
||||||
let line_editor = Reedline::create()
|
let line_editor = Reedline::create()
|
||||||
.into_diagnostic()?
|
.into_diagnostic()?
|
||||||
.with_completion_action_handler(Box::new(FuzzyCompletion {
|
.with_completion_action_handler(Box::new(FuzzyCompletion {
|
||||||
|
@ -387,6 +402,7 @@ fn main() -> Result<()> {
|
||||||
.with_validator(Box::new(NuValidator {
|
.with_validator(Box::new(NuValidator {
|
||||||
engine_state: engine_state.clone(),
|
engine_state: engine_state.clone(),
|
||||||
}))
|
}))
|
||||||
|
.with_edit_mode(edit_mode)
|
||||||
.with_ansi_colors(config.use_ansi_coloring);
|
.with_ansi_colors(config.use_ansi_coloring);
|
||||||
//FIXME: if config.use_ansi_coloring is false then we should
|
//FIXME: if config.use_ansi_coloring is false then we should
|
||||||
// turn off the hinter but I don't see any way to do that yet.
|
// turn off the hinter but I don't see any way to do that yet.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user