mirror of
https://github.com/lotabout/skim.git
synced 2026-09-10 07:16:23 -04:00
add tests for key bindings in interactive mode
This commit is contained in:
parent
3c3638ac00
commit
c462ca136a
|
|
@ -425,6 +425,7 @@ impl Model {
|
|||
cmd: self.query.get_cmd(),
|
||||
query: self.query.get_fz_query(),
|
||||
cmd_query: self.query.get_cmd_query(),
|
||||
in_query_mode: self.query.in_query_mode(),
|
||||
clear_selection: ClearStrategy::DontClear,
|
||||
};
|
||||
|
||||
|
|
@ -503,7 +504,7 @@ impl Model {
|
|||
}
|
||||
|
||||
Event::EvActDeleteCharEOF => {
|
||||
if env.query.is_empty() {
|
||||
if env.in_query_mode && env.query.is_empty() || !env.in_query_mode && env.cmd_query.is_empty() {
|
||||
next_event = Some(Event::EvActAbort);
|
||||
continue;
|
||||
}
|
||||
|
|
@ -754,6 +755,7 @@ struct ModelEnv {
|
|||
pub query: String,
|
||||
pub cmd_query: String,
|
||||
pub clear_selection: ClearStrategy,
|
||||
pub in_query_mode: bool,
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
|
|
|
|||
|
|
@ -131,6 +131,13 @@ impl Query {
|
|||
self.cmd_history_before = options.cmd_history.to_vec();
|
||||
}
|
||||
|
||||
pub fn in_query_mode(&self) -> bool {
|
||||
match self.mode {
|
||||
QueryMode::CMD => false,
|
||||
QueryMode::QUERY => true,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_fz_query(&self) -> String {
|
||||
self.fz_query_before
|
||||
.iter()
|
||||
|
|
|
|||
|
|
@ -385,6 +385,70 @@ class TestSkim(TestBase):
|
|||
self.tmux.send_keys(Ctrl('m'))
|
||||
self.tmux.until(lambda lines: not lines[-1].startswith('>'))
|
||||
|
||||
def test_key_bindings_interactive(self):
|
||||
self.tmux.send_keys(f"{SK} -i --cmd-query 'foo bar foo-bar'", Key('Enter'))
|
||||
self.tmux.until(lambda lines: lines[-1].startswith('c>'))
|
||||
|
||||
# Ctrl-A
|
||||
self.tmux.send_keys(Ctrl('a'), Key('('))
|
||||
self.tmux.until(lambda lines: lines[-1] == 'c> (foo bar foo-bar')
|
||||
|
||||
## Meta-F
|
||||
self.tmux.send_keys(Alt('f'), Key(')'))
|
||||
self.tmux.until(lambda lines: lines[-1] == 'c> (foo) bar foo-bar')
|
||||
|
||||
# CTRL-B
|
||||
self.tmux.send_keys(Ctrl('b'), 'var')
|
||||
self.tmux.until(lambda lines: lines[-1] == 'c> (foovar) bar foo-bar')
|
||||
|
||||
# Left, CTRL-D
|
||||
self.tmux.send_keys(Key('Left'), Key('Left'), Ctrl('d'))
|
||||
self.tmux.until(lambda lines: lines[-1] == 'c> (foovr) bar foo-bar')
|
||||
|
||||
# # META-BS
|
||||
self.tmux.send_keys(Alt('BSpace'))
|
||||
self.tmux.until(lambda lines: lines[-1] == 'c> (r) bar foo-bar')
|
||||
|
||||
# # # CTRL-Y
|
||||
self.tmux.send_keys(Ctrl('y'), Ctrl('y'))
|
||||
self.tmux.until(lambda lines: lines[-1] == 'c> (foovfoovr) bar foo-bar')
|
||||
|
||||
# META-B
|
||||
self.tmux.send_keys(Alt('b'), Key('Space'), Key('Space'))
|
||||
self.tmux.until(lambda lines: lines[-1] == 'c> ( foovfoovr) bar foo-bar')
|
||||
|
||||
# CTRL-F / Right
|
||||
self.tmux.send_keys( Ctrl('f'), Key('Right'), '/')
|
||||
self.tmux.until(lambda lines: lines[-1] == 'c> ( fo/ovfoovr) bar foo-bar')
|
||||
|
||||
# CTRL-H / BS
|
||||
self.tmux.send_keys( Ctrl('h'), Key('BSpace'))
|
||||
self.tmux.until(lambda lines: lines[-1] == 'c> ( fovfoovr) bar foo-bar')
|
||||
|
||||
# CTRL-E
|
||||
self.tmux.send_keys(Ctrl('e'), 'baz')
|
||||
self.tmux.until(lambda lines: lines[-1] == 'c> ( fovfoovr) bar foo-barbaz')
|
||||
|
||||
# CTRL-U
|
||||
self.tmux.send_keys( Ctrl('u'))
|
||||
self.tmux.until(lambda lines: lines[-1] == 'c>')
|
||||
|
||||
# CTRL-Y
|
||||
self.tmux.send_keys( Ctrl('y'))
|
||||
self.tmux.until(lambda lines: lines[-1] == 'c> ( fovfoovr) bar foo-barbaz')
|
||||
|
||||
# CTRL-W
|
||||
self.tmux.send_keys( Ctrl('w'), 'bar-foo')
|
||||
self.tmux.until(lambda lines: lines[-1] == 'c> ( fovfoovr) bar bar-foo')
|
||||
|
||||
# # META-D
|
||||
self.tmux.send_keys(Alt('b'), Alt('b'), Alt('d'), Ctrl('a'), Ctrl('y'))
|
||||
self.tmux.until(lambda lines: lines[-1] == 'c> bar( fovfoovr) bar -foo')
|
||||
|
||||
# CTRL-M
|
||||
self.tmux.send_keys(Ctrl('m'))
|
||||
self.tmux.until(lambda lines: not lines[-1].startswith('c>'))
|
||||
|
||||
def test_read0(self):
|
||||
nfiles = subprocess.check_output("find .", shell=True).decode("utf-8").strip().split("\n")
|
||||
num_of_files = len(nfiles)
|
||||
|
|
|
|||
Loading…
Reference in a new issue