diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2016-01-13 00:39:54 -0500 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2016-01-13 02:40:57 -0500 |
commit | 8eeda7169aa47881f0b6d697e291a1ef85c43e4e (patch) | |
tree | cbce774bee0feea6769fba009b271af32f53e9c2 /src | |
parent | 3dfbeabf35dbfe5494a4adce7b4d94d56bbe0171 (diff) | |
download | rneovim-8eeda7169aa47881f0b6d697e291a1ef85c43e4e.tar.gz rneovim-8eeda7169aa47881f0b6d697e291a1ef85c43e4e.tar.bz2 rneovim-8eeda7169aa47881f0b6d697e291a1ef85c43e4e.zip |
terminal: less babysitting of mapped_ctrl_c
process_interrupts() checks get_real_state() so we can avoid some
housekeeping of mapped_ctrl_c in terminal-mode.
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/getchar.c | 12 | ||||
-rw-r--r-- | src/nvim/globals.h | 2 | ||||
-rw-r--r-- | src/nvim/terminal.c | 10 |
3 files changed, 11 insertions, 13 deletions
diff --git a/src/nvim/getchar.c b/src/nvim/getchar.c index 008c6cecd5..89d22ad811 100644 --- a/src/nvim/getchar.c +++ b/src/nvim/getchar.c @@ -2940,11 +2940,12 @@ do_map ( if (!did_it) { retval = 2; /* no match */ } else if (*keys == Ctrl_C) { - /* If CTRL-C has been unmapped, reuse it for Interrupting. */ - if (map_table == curbuf->b_maphash) + // If CTRL-C has been unmapped, reuse it for Interrupting. + if (map_table == curbuf->b_maphash) { curbuf->b_mapped_ctrl_c &= ~mode; - else + } else { mapped_ctrl_c &= ~mode; + } } goto theend; } @@ -2971,10 +2972,11 @@ do_map ( // If CTRL-C has been mapped, don't always use it for Interrupting. if (*keys == Ctrl_C) { - if (map_table == curbuf->b_maphash) + if (map_table == curbuf->b_maphash) { curbuf->b_mapped_ctrl_c |= mode; - else + } else { mapped_ctrl_c |= mode; + } } mp->m_keys = vim_strsave(keys); diff --git a/src/nvim/globals.h b/src/nvim/globals.h index da8868d7a0..50eda6cb17 100644 --- a/src/nvim/globals.h +++ b/src/nvim/globals.h @@ -887,7 +887,7 @@ EXTERN int ctrl_x_mode INIT(= 0); /* Which Ctrl-X mode are we in? */ EXTERN int no_abbr INIT(= TRUE); /* TRUE when no abbreviations loaded */ -EXTERN int mapped_ctrl_c INIT(= 0); /* modes where CTRL-C is mapped */ +EXTERN int mapped_ctrl_c INIT(= 0); // Modes where CTRL-C is mapped. EXTERN cmdmod_T cmdmod; /* Ex command modifiers */ diff --git a/src/nvim/terminal.c b/src/nvim/terminal.c index b129a93a05..0a7807d811 100644 --- a/src/nvim/terminal.c +++ b/src/nvim/terminal.c @@ -77,9 +77,7 @@ typedef struct terminal_state { VimState state; Terminal *term; - int save_state; // saved value of State int save_rd; // saved value of RedrawingDisabled - int save_mapped_ctrl_c; // saved value of mapped_ctrl_c; bool close; bool got_bs; // if the last input was <C-\> } TerminalState; @@ -362,12 +360,11 @@ void terminal_enter(void) checkpcmark(); setpcmark(); - s->save_state = State; + int save_state = State; s->save_rd = RedrawingDisabled; State = TERM_FOCUS; + mapped_ctrl_c |= TERM_FOCUS; // Always map CTRL-C to avoid interrupt. RedrawingDisabled = false; - s->save_mapped_ctrl_c = mapped_ctrl_c; - mapped_ctrl_c = MAP_ALL_MODES; // go to the bottom when the terminal is focused adjust_topline(s->term, buf, false); // erase the unfocused cursor @@ -380,11 +377,10 @@ void terminal_enter(void) state_enter(&s->state); restart_edit = 0; - State = s->save_state; + State = save_state; RedrawingDisabled = s->save_rd; // draw the unfocused cursor invalidate_terminal(s->term, s->term->cursor.row, s->term->cursor.row + 1); - mapped_ctrl_c = s->save_mapped_ctrl_c; unshowmode(true); redraw(curbuf->handle != s->term->buf_handle); ui_busy_stop(); |