mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	fix(messages): single event for multi-expr :echo (#34393)
Problem:  Separate "msg_show" event for each expression in a multi-expr
          :echo(n) command.
Solution: Only set the kind when `atstart == true`.
			
			
This commit is contained in:
		| @@ -7846,6 +7846,7 @@ void ex_echo(exarg_T *eap) | |||||||
|     if (!eap->skip) { |     if (!eap->skip) { | ||||||
|       if (atstart) { |       if (atstart) { | ||||||
|         atstart = false; |         atstart = false; | ||||||
|  |         msg_ext_set_kind("echo"); | ||||||
|         // Call msg_start() after eval1(), evaluating the expression |         // Call msg_start() after eval1(), evaluating the expression | ||||||
|         // may cause a message to appear. |         // may cause a message to appear. | ||||||
|         if (eap->cmdidx == CMD_echo) { |         if (eap->cmdidx == CMD_echo) { | ||||||
| @@ -7862,7 +7863,6 @@ void ex_echo(exarg_T *eap) | |||||||
|       } |       } | ||||||
|       char *tofree = encode_tv2echo(&rettv, NULL); |       char *tofree = encode_tv2echo(&rettv, NULL); | ||||||
|       if (*tofree != NUL) { |       if (*tofree != NUL) { | ||||||
|         msg_ext_set_kind("echo"); |  | ||||||
|         msg_ext_append = eap->cmdidx == CMD_echon; |         msg_ext_append = eap->cmdidx == CMD_echon; | ||||||
|         msg_multiline(cstr_as_string(tofree), echo_hl_id, true, false, &need_clear); |         msg_multiline(cstr_as_string(tofree), echo_hl_id, true, false, &need_clear); | ||||||
|       } |       } | ||||||
|   | |||||||
| @@ -1748,6 +1748,31 @@ stack traceback: | |||||||
|     }) |     }) | ||||||
|     eq("E354: Invalid register name: '^@'", eval('msg'):gsub('\n', '')) |     eq("E354: Invalid register name: '^@'", eval('msg'):gsub('\n', '')) | ||||||
|   end) |   end) | ||||||
|  |  | ||||||
|  |   it('single event for multi-expr :echo', function() | ||||||
|  |     command('echo 1 2 | echon 1 2') | ||||||
|  |     screen:expect({ | ||||||
|  |       grid = [[ | ||||||
|  |         ^                         | | ||||||
|  |         {1:~                        }|*4 | ||||||
|  |       ]], | ||||||
|  |       messages = { | ||||||
|  |         { | ||||||
|  |           content = { { '1 2' } }, | ||||||
|  |           kind = 'echo', | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           append = true, | ||||||
|  |           content = { { '12' } }, | ||||||
|  |           kind = 'echo', | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           content = { { 'Press ENTER or type command to continue', 6, 18 } }, | ||||||
|  |           kind = 'return_prompt', | ||||||
|  |         }, | ||||||
|  |       }, | ||||||
|  |     }) | ||||||
|  |   end) | ||||||
| end) | end) | ||||||
|  |  | ||||||
| describe('ui/builtin messages', function() | describe('ui/builtin messages', function() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 luukvbaal
					luukvbaal