vim-patch:7.4.561

Patch 7.4.561
Problem:    Ex range handling is wrong for buffer-local user commands.
Solution:   Check for CMD_USER_BUF. (Marcin Szamotulski)

https://code.google.com/p/vim/source/detail?name=v7-4-561
This commit is contained in:
Felipe Morales
2015-01-15 18:33:02 -03:00
parent 87953bf5ff
commit d2ad709a1e
4 changed files with 14 additions and 4 deletions

View File

@@ -1420,10 +1420,12 @@ static char_u * do_one_cmd(char_u **cmdlinep,
* is equal to the lower. * is equal to the lower.
*/ */
if (ea.cmdidx != CMD_USER && ea.cmdidx != CMD_SIZE) { if (ea.cmdidx != CMD_SIZE
&& ea.cmdidx != CMD_USER
&& ea.cmdidx != CMD_USER_BUF) {
ea.addr_type = cmdnames[(int)ea.cmdidx].cmd_addr_type; ea.addr_type = cmdnames[(int)ea.cmdidx].cmd_addr_type;
} else { } else {
if (ea.cmdidx != CMD_USER) { if (ea.cmdidx != CMD_USER && ea.cmdidx != CMD_USER_BUF) {
ea.addr_type = ADDR_LINES; ea.addr_type = ADDR_LINES;
// ea.addr_type for user commands is set by find_ucmd // ea.addr_type for user commands is set by find_ucmd
} }

View File

@@ -3,7 +3,7 @@ Test for user command counts vim: set ft=vim :
STARTTEST STARTTEST
:let g:lines = [] :let g:lines = []
:so tiny.vim :so tiny.vim
:com -range RangeLines :call add(g:lines, 'RangeLines '.<line1>.' '.<line2>) :com -range=% RangeLines :call add(g:lines, 'RangeLines '.<line1>.' '.<line2>)
:com -range -addr=arguments RangeArguments :call add(g:lines, 'RangeArguments '.<line1>.' '.<line2>) :com -range -addr=arguments RangeArguments :call add(g:lines, 'RangeArguments '.<line1>.' '.<line2>)
:com -range=% -addr=arguments RangeArgumentsAll :call add(g:lines, 'RangeArgumentsAll '.<line1>.' '.<line2>) :com -range=% -addr=arguments RangeArgumentsAll :call add(g:lines, 'RangeArgumentsAll '.<line1>.' '.<line2>)
:com -range -addr=loaded_buffers RangeLoadedBuffers :call add(g:lines, 'RangeLoadedBuffers '.<line1>.' '.<line2>) :com -range -addr=loaded_buffers RangeLoadedBuffers :call add(g:lines, 'RangeLoadedBuffers '.<line1>.' '.<line2>)
@@ -42,6 +42,12 @@ STARTTEST
:%RangeTabs :%RangeTabs
:RangeTabsAll :RangeTabsAll
:1tabonly :1tabonly
:s/\n/\r\r\r\r\r/
:2ma<
:$-ma>
:'<,'>RangeLines
:com -range=% -buffer LocalRangeLines :call add(g:lines, 'LocalRangeLines '.<line1>.' '.<line2>)
:'<,'>LocalRangeLines
:e! test.out :e! test.out
:call append(0, g:lines) :call append(0, g:lines)
:w|qa! :w|qa!

View File

@@ -14,4 +14,6 @@ RangeBuffersAll 1 5
RangeTabs 2 5 RangeTabs 2 5
RangeTabs 1 5 RangeTabs 1 5
RangeTabsAll 1 5 RangeTabsAll 1 5
RangeLines 2 5
LocalRangeLines 2 5

View File

@@ -218,7 +218,7 @@ static int included_patches[] = {
//564, //564,
563, 563,
//562, //562,
//561, 561,
//560 NA //560 NA
559, 559,
//558 NA //558 NA