Merge remote-tracking branch 'vim/master'

This commit is contained in:
Kazuki Sakamoto
2018-03-13 17:29:54 -07:00
7 changed files with 62 additions and 30 deletions
+13 -1
View File
@@ -621,7 +621,9 @@ json_decode_item(js_read_T *reader, typval_T *res, int options)
if (top_item != NULL && top_item->jd_type == JSON_OBJECT_KEY
&& (options & JSON_JS)
&& reader->js_buf[reader->js_used] != '"'
&& reader->js_buf[reader->js_used] != '\'')
&& reader->js_buf[reader->js_used] != '\''
&& reader->js_buf[reader->js_used] != '['
&& reader->js_buf[reader->js_used] != '{')
{
char_u *key;
@@ -642,6 +644,11 @@ json_decode_item(js_read_T *reader, typval_T *res, int options)
switch (*p)
{
case '[': /* start of array */
if (top_item && top_item->jd_type == JSON_OBJECT_KEY)
{
retval = FAIL;
break;
}
if (ga_grow(&stack, 1) == FAIL)
{
retval = FAIL;
@@ -668,6 +675,11 @@ json_decode_item(js_read_T *reader, typval_T *res, int options)
continue;
case '{': /* start of object */
if (top_item && top_item->jd_type == JSON_OBJECT_KEY)
{
retval = FAIL;
break;
}
if (ga_grow(&stack, 1) == FAIL)
{
retval = FAIL;
+5 -2
View File
@@ -2743,8 +2743,11 @@ term_update_window(win_T *wp)
else
pos.col = 0;
screen_line(wp->w_winrow + pos.row + winbar_height(wp),
wp->w_wincol, pos.col, wp->w_width, FALSE);
screen_line(wp->w_winrow + pos.row
#ifdef FEAT_MENU
+ winbar_height(wp)
#endif
, wp->w_wincol, pos.col, wp->w_width, FALSE);
}
term->tl_dirty_row_start = MAX_ROW;
term->tl_dirty_row_end = 0;
+10
View File
@@ -260,6 +260,16 @@ func CanRunGui()
return has('gui') && ($DISPLAY != "" || has('gui_running') || has('gui_macvim'))
endfunc
func WorkingClipboard()
if !has('clipboard')
return 0
endif
if has('x11')
return $DISPLAY != ""
endif
return 1
endfunc
" Get line "lnum" as displayed on the screen.
" Trailing white space is trimmed.
func! Screenline(lnum)
+3
View File
@@ -179,6 +179,9 @@ func Test_json_decode()
call assert_fails('call json_decode("[1 2]")', "E474:")
call assert_fails('call json_decode("[1,,2]")', "E474:")
call assert_fails('call json_decode("{{}:42}")', "E474:")
call assert_fails('call json_decode("{[]:42}")', "E474:")
endfunc
let s:jsl5 = '[7,,,]'
+3 -1
View File
@@ -6,6 +6,8 @@ if has('gui_running')
endif
set term=xterm
source shared.vim
func Test_paste_normal_mode()
new
" In first column text is inserted
@@ -67,7 +69,7 @@ func Test_paste_insert_mode()
endfunc
func Test_paste_clipboard()
if !has('clipboard')
if !WorkingClipboard()
return
endif
let @+ = "nasty\<Esc>:!ls\<CR>command"
+20 -26
View File
@@ -432,39 +432,38 @@ func Test_terminal_servername()
if !has('clientserver')
return
endif
let g:buf = Run_shell_in_terminal({})
let buf = Run_shell_in_terminal({})
" Wait for the shell to display a prompt
call WaitFor('term_getline(g:buf, 1) != ""')
call WaitFor({-> term_getline(buf, 1) != ""})
if has('win32')
call term_sendkeys(g:buf, "echo %VIM_SERVERNAME%\r")
call term_sendkeys(buf, "echo %VIM_SERVERNAME%\r")
else
call term_sendkeys(g:buf, "echo $VIM_SERVERNAME\r")
call term_sendkeys(buf, "echo $VIM_SERVERNAME\r")
endif
call term_wait(g:buf)
call Stop_shell_in_terminal(g:buf)
call term_wait(buf)
call Stop_shell_in_terminal(buf)
call WaitFor('getline(2) == v:servername')
call assert_equal(v:servername, getline(2))
exe g:buf . 'bwipe'
unlet g:buf
exe buf . 'bwipe'
unlet buf
endfunc
func Test_terminal_env()
let g:buf = Run_shell_in_terminal({'env': {'TESTENV': 'correct'}})
let buf = Run_shell_in_terminal({'env': {'TESTENV': 'correct'}})
" Wait for the shell to display a prompt
call WaitFor('term_getline(g:buf, 1) != ""')
call WaitFor({-> term_getline(buf, 1) != ""})
if has('win32')
call term_sendkeys(g:buf, "echo %TESTENV%\r")
call term_sendkeys(buf, "echo %TESTENV%\r")
else
call term_sendkeys(g:buf, "echo $TESTENV\r")
call term_sendkeys(buf, "echo $TESTENV\r")
endif
call term_wait(g:buf)
call Stop_shell_in_terminal(g:buf)
call term_wait(buf)
call Stop_shell_in_terminal(buf)
call WaitFor('getline(2) == "correct"')
call assert_equal('correct', getline(2))
exe g:buf . 'bwipe'
unlet g:buf
exe buf . 'bwipe'
endfunc
" must be last, we can't go back from GUI to terminal
@@ -596,8 +595,7 @@ func Test_terminal_no_cmd()
else
call system('echo "look here" > ' . pty)
endif
let g:buf = buf
call WaitFor('term_getline(g:buf, 1) =~ "look here"')
call WaitFor({-> term_getline(buf, 1) =~ "look here"})
call assert_match('look here', term_getline(buf, 1))
bwipe!
@@ -677,8 +675,7 @@ func TerminalTmap(remap)
call assert_equal('456', maparg('123', 't'))
call assert_equal('abxde', maparg('456', 't'))
call feedkeys("123", 'tx')
let g:buf = buf
call WaitFor("term_getline(g:buf,term_getcursor(g:buf)[0]) =~ 'abxde\\|456'")
call WaitFor({-> term_getline(buf, term_getcursor(buf)[0]) =~ 'abxde\|456'})
let lnum = term_getcursor(buf)[0]
if a:remap
call assert_match('abxde', term_getline(buf, lnum))
@@ -826,12 +823,9 @@ func Test_terminal_response_to_control_sequence()
endif
let buf = Run_shell_in_terminal({})
call term_wait(buf)
call WaitFor({-> term_getline(buf, 1) != ""})
new
call setline(1, "\x1b[6n")
write! Xescape
bwipe
call writefile(["\x1b[6n"], 'Xescape')
call term_sendkeys(buf, "cat Xescape\<cr>")
" wait for the response of control sequence from libvterm (and send it to tty)
@@ -919,7 +913,7 @@ func Test_terminal_qall_prompt()
quit
endfunc
func Test_terminalopen_autocmd()
func Test_terminal_open_autocmd()
augroup repro
au!
au TerminalOpen * let s:called += 1
+8
View File
@@ -781,6 +781,14 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1605,
/**/
1604,
/**/
1603,
/**/
1602,
/**/
1601,
/**/