diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2017-02-27 10:49:48 +0100 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2017-03-01 14:47:49 +0100 |
commit | 857113ca8c76cd103b752ad4460ee1b091e0831a (patch) | |
tree | 1d515fa8f0ef04f489e438ee3ebe9695237573dd | |
parent | 937e54f86599ab448e6497955e2b4dddf6347e88 (diff) | |
download | rneovim-857113ca8c76cd103b752ad4460ee1b091e0831a.tar.gz rneovim-857113ca8c76cd103b752ad4460ee1b091e0831a.tar.bz2 rneovim-857113ca8c76cd103b752ad4460ee1b091e0831a.zip |
terminal: Disable some options in terminal-mode.
In terminal-mode these options are nonsense because cursor is placed at
end of buffer to "follow" output.
Closes #2259
-rw-r--r-- | src/nvim/msgpack_rpc/channel.c | 10 | ||||
-rw-r--r-- | src/nvim/terminal.c | 17 |
2 files changed, 21 insertions, 6 deletions
diff --git a/src/nvim/msgpack_rpc/channel.c b/src/nvim/msgpack_rpc/channel.c index 71db7506ad..de6167c7fc 100644 --- a/src/nvim/msgpack_rpc/channel.c +++ b/src/nvim/msgpack_rpc/channel.c @@ -322,7 +322,7 @@ static void parse_msgpack(Stream *stream, RBuffer *rbuf, size_t c, void *data, if (eof) { close_channel(channel); char buf[256]; - snprintf(buf, sizeof(buf), "channel %" PRIu64 " was closed by the client", + snprintf(buf, sizeof(buf), "ch %" PRIu64 " was closed by the client", channel->id); call_set_error(channel, buf); goto end; @@ -352,8 +352,8 @@ static void parse_msgpack(Stream *stream, RBuffer *rbuf, size_t c, void *data, } else { char buf[256]; snprintf(buf, sizeof(buf), - "channel %" PRIu64 " sent a response without a matching " - "request id. Ensure the client is properly synchronized", + "ch %" PRIu64 " returned a response with an unknown request " + "id. Ensure the client is properly synchronized", channel->id); call_set_error(channel, buf); } @@ -405,7 +405,7 @@ static void handle_request(Channel *channel, msgpack_object *request) &out_buffer))) { char buf[256]; snprintf(buf, sizeof(buf), - "channel %" PRIu64 " sent an invalid message, closed.", + "ch %" PRIu64 " sent an invalid message, closed.", channel->id); call_set_error(channel, buf); } @@ -497,7 +497,7 @@ static bool channel_write(Channel *channel, WBuffer *buffer) char buf[256]; snprintf(buf, sizeof(buf), - "Before returning from a RPC call, channel %" PRIu64 " was " + "Before returning from a RPC call, ch %" PRIu64 " was " "closed due to a failed write", channel->id); call_set_error(channel, buf); diff --git a/src/nvim/terminal.c b/src/nvim/terminal.c index b37aff6aea..f63730406e 100644 --- a/src/nvim/terminal.c +++ b/src/nvim/terminal.c @@ -232,8 +232,9 @@ Terminal *terminal_open(TerminalOptions opts) // Default settings for terminal buffers curbuf->b_p_ma = false; // 'nomodifiable' - curbuf->b_p_ul = -1; // disable undo + curbuf->b_p_ul = -1; // 'undolevels' curbuf->b_p_scbk = 1000; // 'scrollback' + curbuf->b_p_tw = 0; // 'textwidth' set_option_value((uint8_t *)"wrap", false, NULL, OPT_LOCAL); set_option_value((uint8_t *)"number", false, NULL, OPT_LOCAL); set_option_value((uint8_t *)"relativenumber", false, NULL, OPT_LOCAL); @@ -370,6 +371,16 @@ void terminal_enter(void) State = TERM_FOCUS; mapped_ctrl_c |= TERM_FOCUS; // Always map CTRL-C to avoid interrupt. RedrawingDisabled = false; + + // Disable these options in terminal-mode. They are nonsense because cursor is + // placed at end of buffer to "follow" output. + int save_w_p_cul = curwin->w_p_cul; + int save_w_p_cuc = curwin->w_p_cuc; + int save_w_p_rnu = curwin->w_p_rnu; + curwin->w_p_cul = false; + curwin->w_p_cuc = false; + curwin->w_p_rnu = false; + adjust_topline(s->term, buf, 0); // scroll to end // erase the unfocused cursor invalidate_terminal(s->term, s->term->cursor.row, s->term->cursor.row + 1); @@ -383,6 +394,10 @@ void terminal_enter(void) restart_edit = 0; State = save_state; RedrawingDisabled = s->save_rd; + curwin->w_p_cul = save_w_p_cul; + curwin->w_p_cuc = save_w_p_cuc; + curwin->w_p_rnu = save_w_p_rnu; + // draw the unfocused cursor invalidate_terminal(s->term, s->term->cursor.row, s->term->cursor.row + 1); unshowmode(true); |