mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-03 17:24:29 +00:00 
			
		
		
		
	API/nvim_command_output: handle :echon capture (#8265)
ref https://github.com/neovim/python-client/pull/290
This commit is contained in:
		@@ -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()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user