aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2017-02-27 10:49:48 +0100
committerJustin M. Keyes <justinkz@gmail.com>2017-03-01 14:47:49 +0100
commit857113ca8c76cd103b752ad4460ee1b091e0831a (patch)
tree1d515fa8f0ef04f489e438ee3ebe9695237573dd
parent937e54f86599ab448e6497955e2b4dddf6347e88 (diff)
downloadrneovim-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.c10
-rw-r--r--src/nvim/terminal.c17
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);