API/nvim_command_output: handle :echon capture (#8265)

ref https://github.com/neovim/python-client/pull/290
This commit is contained in:
Justin M. Keyes 2018-04-13 00:49:37 +02:00 committed by GitHub
parent 5e18550ddd
commit 1c3a849881
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 8 deletions

View File

@ -239,15 +239,17 @@ String nvim_command_output(String command, Error *err)
}
if (capture_local.ga_len > 1) {
// redir always(?) prepends a newline; remove it.
char *s = capture_local.ga_data;
assert(s[0] == '\n');
memmove(s, s + 1, (size_t)capture_local.ga_len);
s[capture_local.ga_len - 1] = '\0';
return (String) { // Caller will free the memory.
.data = s,
.size = (size_t)(capture_local.ga_len - 1),
String s = (String){
.data = capture_local.ga_data,
.size = (size_t)capture_local.ga_len,
};
// redir usually (except :echon) prepends a newline.
if (s.data[0] == '\n') {
memmove(s.data, s.data + 1, s.size);
s.data[s.size - 1] = '\0';
s.size = s.size - 1;
}
return s; // Caller will free the memory.
}
theend:

View File

@ -73,6 +73,8 @@ describe('api', function()
it('captures command output', function()
eq('this is\nspinal tap',
nvim('command_output', [[echo "this is\nspinal tap"]]))
eq('no line ending!',
nvim('command_output', [[echon "no line ending!"]]))
end)
it('captures empty command output', function()