mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	 baab49ee89
			
		
	
	baab49ee89
	
	
	
		
			
			The "technically correct" interpretation is to execute the first line
that is seen (and this is what happens on middle-click paste in Vim).
^M is only intended to "defuse" the newline, so the user can review it.
The parent commit changed the behavior to insert <Space> between lines,
but that's a higher-risk change: it is arguably possible that some user
*wants* the literal ^M chars when e.g. assigning to a register:
    :let @a='<C-R>b'
To avoid that risk, keep the old behavior and only omit the last ^M.
This makes `yy:<C-R>0` nicer at no cost.
		
	
		
			
				
	
	
		
			35 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| local helpers = require('test.functional.helpers')(after_each)
 | |
| local clear, insert, funcs, eq, feed =
 | |
|   helpers.clear, helpers.insert, helpers.funcs, helpers.eq, helpers.feed
 | |
| 
 | |
| describe('cmdline CTRL-R', function()
 | |
|   before_each(clear)
 | |
| 
 | |
|   it('pasting non-special register inserts <CR> *between* lines', function()
 | |
|     insert([[
 | |
|     line1abc
 | |
|     line2somemoretext
 | |
|     ]])
 | |
|     -- Yank 2 lines linewise, then paste to cmdline.
 | |
|     feed([[<C-\><C-N>gg0yj:<C-R>0]])
 | |
|     -- <CR> inserted between lines, NOT after the final line.
 | |
|     eq('line1abc\rline2somemoretext', funcs.getcmdline())
 | |
| 
 | |
|     -- Yank 2 lines characterwise, then paste to cmdline.
 | |
|     feed([[<C-\><C-N>gg05lyvj:<C-R>0]])
 | |
|     -- <CR> inserted between lines, NOT after the final line.
 | |
|     eq('abc\rline2', funcs.getcmdline())
 | |
| 
 | |
|     -- Yank 1 line linewise, then paste to cmdline.
 | |
|     feed([[<C-\><C-N>ggyy:<C-R>0]])
 | |
|     -- No <CR> inserted.
 | |
|     eq('line1abc', funcs.getcmdline())
 | |
|   end)
 | |
| 
 | |
|   it('pasting special register inserts <CR>, <NL>', function()
 | |
|     feed([[:<C-R>="foo\nbar\rbaz"<CR>]])
 | |
|     eq('foo\nbar\rbaz', funcs.getcmdline())
 | |
|   end)
 | |
| end)
 | |
| 
 |