diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2014-09-30 20:38:47 +0200 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2014-09-30 20:38:47 +0200 |
| commit | bb7ada0f41bb82280817570ea9a2b963372e97c6 (patch) | |
| tree | 6b0a1d37c1f74a7e5ece1b1c0cc6363edbf7ab4f /config.def.h | |
| parent | 14ab569ac03d5fd1e641948dbfc3decd5b74421c (diff) | |
| download | vis-bb7ada0f41bb82280817570ea9a2b963372e97c6.tar.gz vis-bb7ada0f41bb82280817570ea9a2b963372e97c6.tar.xz | |
Make text objects available in visual mode
Diffstat (limited to 'config.def.h')
| -rw-r--r-- | config.def.h | 43 |
1 files changed, 27 insertions, 16 deletions
diff --git a/config.def.h b/config.def.h index 99148ce..a9b4e21 100644 --- a/config.def.h +++ b/config.def.h @@ -427,13 +427,17 @@ static KeyBinding vis_mode_visual[] = { }; static void vis_mode_visual_enter(Mode *old) { - if (!old->visual) + if (!old->visual) { window_selection_start(vis->win->win); + vis_modes[VIS_MODE_OPERATOR].parent = &vis_modes[VIS_MODE_TEXTOBJ]; + } } static void vis_mode_visual_leave(Mode *new) { - if (!new->visual) + if (!new->visual) { window_selection_clear(vis->win->win); + vis_modes[VIS_MODE_OPERATOR].parent = &vis_modes[VIS_MODE_MOVE]; + } } static KeyBinding vis_mode_visual_line[] = { @@ -445,14 +449,18 @@ static KeyBinding vis_mode_visual_line[] = { static void vis_mode_visual_line_enter(Mode *old) { Win *win = vis->win->win; window_cursor_to(win, text_line_begin(vis->win->text, window_cursor_get(win))); - if (!old->visual) + if (!old->visual) { window_selection_start(vis->win->win); + vis_modes[VIS_MODE_OPERATOR].parent = &vis_modes[VIS_MODE_TEXTOBJ]; + } movement(&(const Arg){ .i = MOVE_LINE_END }); } static void vis_mode_visual_line_leave(Mode *new) { - if (!new->visual) + if (!new->visual) { window_selection_clear(vis->win->win); + vis_modes[VIS_MODE_OPERATOR].parent = &vis_modes[VIS_MODE_MOVE]; + } } static KeyBinding vis_mode_readline[] = { @@ -573,6 +581,9 @@ static void vis_mode_replace_input(const char *str, size_t len) { * reachable. once the operator is processed (i.e. the OPERATOR mode is left) its parent * mode is reset back to MOVE. * + * Similarly the +-ed line between OPERATOR and TEXTOBJ is only active within the visual + * modes. + * * * BASIC * (arrow keys etc.) @@ -590,18 +601,18 @@ static void vis_mode_replace_input(const char *str, size_t len) { * | (h,j,k,l ...) * | | \-----------------\ * | | | - * REPLACE OPERATOR ======\\ INNER-TEXTOBJ - * (d,c,y,p ..) || (i [wsp[]()b<>{}B"'`] ) - * | || | - * | || | - * REGISTER || TEXTOBJ - * (" [a-z]) || (a [wsp[]()b<>{}B"'`] ) - * /-----------/ | \\ | - * / | \\ | - * VISUAL MARK-SET \\ OPERATOR-OPTION - * | (m [a-z]) \\ (v,V) - * | | \\ // - * | | \\======// + * REPLACE OPERATOR ++++ INNER-TEXTOBJ + * (d,c,y,p ..) + (i [wsp[]()b<>{}B"'`] ) + * | \\ + | + * | \\ + | + * REGISTER \\ + TEXTOBJ + * (" [a-z]) \\ + (a [wsp[]()b<>{}B"'`] ) + * /-----------/ | \\ + + | + * / | \\ + + | + * VISUAL MARK-SET \\ OPERATOR-OPTION + * | (m [a-z]) \\ (v,V) + * | | \\ // + * | | \\======// * VISUAL-LINE NORMAL */ |
