diff options
author | Paul Seyfert <paul.seyfert@mib.infn.it> | 2016-07-21 19:30:50 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2016-08-02 18:53:15 (GMT) |
commit | e34e9c2705c9e0bb568f5f69a655a9d425ef8adb (patch) | |
tree | 9bc2aac1c6d267a1c6417bc40ab9027a9e5c0545 /Source/CursesDialog/cmCursesStringWidget.cxx | |
parent | 9a1b6c6037869edba1c44dcfa06da8201653ce1b (diff) | |
download | CMake-e34e9c2705c9e0bb568f5f69a655a9d425ef8adb.zip CMake-e34e9c2705c9e0bb568f5f69a655a9d425ef8adb.tar.gz CMake-e34e9c2705c9e0bb568f5f69a655a9d425ef8adb.tar.bz2 |
ccmake: Add VIM-like bindings for navigation
* scroll with j/k
* toggle bool with space, enter insert mode with i
* bindings not shown at the bottom of the screen, but given in help
Diffstat (limited to 'Source/CursesDialog/cmCursesStringWidget.cxx')
-rw-r--r-- | Source/CursesDialog/cmCursesStringWidget.cxx | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/Source/CursesDialog/cmCursesStringWidget.cxx b/Source/CursesDialog/cmCursesStringWidget.cxx index 6eb5310..46b8b86 100644 --- a/Source/CursesDialog/cmCursesStringWidget.cxx +++ b/Source/CursesDialog/cmCursesStringWidget.cxx @@ -67,8 +67,10 @@ bool cmCursesStringWidget::HandleInput(int& key, cmCursesMainForm* fm, int x, y; FORM* form = fm->GetForm(); + // when not in edit mode, edit mode is entered by pressing enter or i (vim + // binding) // 10 == enter - if (!this->InEdit && (key != 10 && key != KEY_ENTER)) { + if (!this->InEdit && (key != 10 && key != KEY_ENTER && key != 'i')) { return false; } @@ -97,11 +99,15 @@ bool cmCursesStringWidget::HandleInput(int& key, cmCursesMainForm* fm, } // If resize occurred during edit, move out of edit mode - if (!this->InEdit && (key != 10 && key != KEY_ENTER)) { + if (!this->InEdit && (key != 10 && key != KEY_ENTER && key != 'i')) { return false; } - // 10 == enter - if (key == 10 || key == KEY_ENTER) { + // enter edit with return and i (vim binding) + if (!this->InEdit && (key == 10 || key == KEY_ENTER || key == 'i')) { + this->OnReturn(fm, w); + } + // leave edit with return (but not i -- not a toggle) + else if (this->InEdit && (key == 10 || key == KEY_ENTER)) { this->OnReturn(fm, w); } else if (key == KEY_DOWN || key == ctrl('n') || key == KEY_UP || key == ctrl('p') || key == KEY_NPAGE || key == ctrl('d') || |