diff options
| author | Justin M. Keyes <justinkz@gmail.com> | 2017-02-03 12:36:17 +0100 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-02-03 12:36:17 +0100 | 
| commit | 8b804948df3751909e6e8de7adce66ac82f8f3f0 (patch) | |
| tree | 3bb913376e6b0441ca391165626614d981371ff7 /src/nvim/message.c | |
| parent | e8899178ec34e8432fc2e63f2970b0962e72c74c (diff) | |
| parent | f8b21b6d82a4bd50810c71b63632e5ba514feb76 (diff) | |
| download | rneovim-8b804948df3751909e6e8de7adce66ac82f8f3f0.tar.gz rneovim-8b804948df3751909e6e8de7adce66ac82f8f3f0.tar.bz2 rneovim-8b804948df3751909e6e8de7adce66ac82f8f3f0.zip | |
Merge #5975 from jamessan/execute-with-attrs
execute: Correctly capture output with highlight attributes
Diffstat (limited to 'src/nvim/message.c')
| -rw-r--r-- | src/nvim/message.c | 19 | 
1 files changed, 8 insertions, 11 deletions
| diff --git a/src/nvim/message.c b/src/nvim/message.c index 91dd042777..6104adf2c7 100644 --- a/src/nvim/message.c +++ b/src/nvim/message.c @@ -2455,15 +2455,6 @@ static void redir_write(char_u *str, int maxlen)      return;    } -  // Append output for execute(). -  if (capture_ga) { -    size_t len = 0; -    while (str[len] && (maxlen < 0 ? 1 : (len < (size_t)maxlen))) { -      len++; -    } -    ga_concat_len(capture_ga, (const char *)str, len); -  } -    /* Don't do anything for displaying prompts and the like. */    if (redir_off)      return; @@ -2476,6 +2467,9 @@ static void redir_write(char_u *str, int maxlen)      /* If the string doesn't start with CR or NL, go to msg_col */      if (*s != '\n' && *s != '\r') {        while (cur_col < msg_col) { +        if (capture_ga) { +          ga_concat_len(capture_ga, " ", 1); +        }          if (redir_reg) {            write_reg_contents(redir_reg, (char_u *)" ", 1, true);          } else if (redir_vname) { @@ -2490,8 +2484,11 @@ static void redir_write(char_u *str, int maxlen)        }      } +    size_t len = maxlen == -1 ? STRLEN(s) : (size_t)maxlen; +    if (capture_ga) { +      ga_concat_len(capture_ga, (const char *)str, len); +    }      if (redir_reg) { -      size_t len = maxlen == -1 ? STRLEN(s) : (size_t)maxlen;        write_reg_contents(redir_reg, s, len, true);      }      if (redir_vname) { @@ -2500,7 +2497,7 @@ static void redir_write(char_u *str, int maxlen)      /* Write and adjust the current column. */      while (*s != NUL && (maxlen < 0 || (int)(s - str) < maxlen)) { -      if (!redir_reg && !redir_vname) +      if (!redir_reg && !redir_vname && !capture_ga)          if (redir_fd != NULL)            putc(*s, redir_fd);        if (verbose_fd != NULL) | 
