aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/os/shell.c
diff options
context:
space:
mode:
authorThiago de Arruda <tpadilha84@gmail.com>2015-01-15 09:19:27 -0300
committerThiago de Arruda <tpadilha84@gmail.com>2015-01-15 09:19:27 -0300
commit5f24549ab1ecd69236be2761a2e43690ba7cf283 (patch)
tree7db3ba6961a7115c43e0133a6780f4a742112f05 /src/nvim/os/shell.c
parent9b4f6fbd33ebd452d472b0333accfcb34e01173b (diff)
parent14ebe608e2d26ba352f5abe1c32ce18fcc2eca06 (diff)
downloadrneovim-5f24549ab1ecd69236be2761a2e43690ba7cf283.tar.gz
rneovim-5f24549ab1ecd69236be2761a2e43690ba7cf283.tar.bz2
rneovim-5f24549ab1ecd69236be2761a2e43690ba7cf283.zip
Merge PR #1810 'abstract_ui fixes and improvements(continuation)'
Diffstat (limited to 'src/nvim/os/shell.c')
-rw-r--r--src/nvim/os/shell.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/nvim/os/shell.c b/src/nvim/os/shell.c
index d0f8442768..d481d6af56 100644
--- a/src/nvim/os/shell.c
+++ b/src/nvim/os/shell.c
@@ -24,7 +24,6 @@
#include "nvim/option_defs.h"
#include "nvim/charset.h"
#include "nvim/strings.h"
-#include "nvim/ui.h"
#define DYNAMIC_BUFFER_INIT {NULL, 0, 0}
@@ -414,6 +413,7 @@ static size_t write_output(char *output, size_t remaining, bool to_buffer,
char *start = output;
size_t off = 0;
+ int lastrow = (int)Rows - 1;
while (off < remaining) {
if (output[off] == NL) {
// Insert the line
@@ -421,10 +421,8 @@ static size_t write_output(char *output, size_t remaining, bool to_buffer,
if (to_buffer) {
ml_append(curwin->w_cursor.lnum++, (char_u *)output, 0, false);
} else {
- // pending data from the output buffer has been flushed to the screen,
- // safe to call ui_write directly
- ui_write((char_u *)output, (int)off);
- ui_write((char_u *)"\r\n", 2);
+ screen_del_lines(0, 0, 1, (int)Rows, true, NULL);
+ screen_puts_len((char_u *)output, (int)off, lastrow, 0, 0);
}
size_t skip = off + 1;
output += skip;
@@ -448,8 +446,8 @@ static size_t write_output(char *output, size_t remaining, bool to_buffer,
// remember that the NL was missing
curbuf->b_no_eol_lnum = curwin->w_cursor.lnum;
} else {
- ui_write((char_u *)output, (int)remaining);
- ui_write((char_u *)"\r\n", 2);
+ screen_del_lines(0, 0, 1, (int)Rows, true, NULL);
+ screen_puts_len((char_u *)output, (int)remaining, lastrow, 0, 0);
}
output += remaining;
} else if (to_buffer) {