mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
API/nvim_command_output: handle :echon capture (#8265)
ref https://github.com/neovim/python-client/pull/290
This commit is contained in:
parent
5e18550ddd
commit
1c3a849881
@ -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:
|
||||
|
@ -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()
|
||||
|
Loading…
Reference in New Issue
Block a user