Merge remote-tracking branch 'vim/master'

This commit is contained in:
Kazuki Sakamoto
2018-07-12 21:29:04 -07:00
8 changed files with 79 additions and 26 deletions
+1 -1
View File
@@ -584,7 +584,7 @@ EX(CMD_for, "for", ex_while,
EXTRA|NOTRLCOM|SBOXOK|CMDWIN,
ADDR_LINES),
EX(CMD_function, "function", ex_function,
EXTRA|BANG|CMDWIN,
EXTRA|BANG|SBOXOK|CMDWIN,
ADDR_LINES),
EX(CMD_global, "global", ex_global,
RANGE|WHOLEFOLD|BANG|EXTRA|DFLALL|SBOXOK|CMDWIN,
+1 -1
View File
@@ -759,7 +759,7 @@ extern "C" void InitOLE(int *pbDoRestart)
hr = RegisterActiveObject(
app,
MYCLSID,
NULL,
0,
&app_id);
if (FAILED(hr))
+16 -11
View File
@@ -2486,22 +2486,27 @@ onepage(int dir, long count)
beginline(BL_SOL | BL_FIX);
curwin->w_valid &= ~(VALID_WCOL|VALID_WROW|VALID_VIRTCOL);
/*
* Avoid the screen jumping up and down when 'scrolloff' is non-zero.
* But make sure we scroll at least one line (happens with mix of long
* wrapping lines and non-wrapping line).
*/
if (retval == OK && dir == FORWARD && check_top_offset())
if (retval == OK && dir == FORWARD)
{
scroll_cursor_top(1, FALSE);
if (curwin->w_topline <= old_topline
&& old_topline < curbuf->b_ml.ml_line_count)
// Avoid the screen jumping up and down when 'scrolloff' is non-zero.
// But make sure we scroll at least one line (happens with mix of long
// wrapping lines and non-wrapping line).
if (check_top_offset())
{
curwin->w_topline = old_topline + 1;
scroll_cursor_top(1, FALSE);
if (curwin->w_topline <= old_topline
&& old_topline < curbuf->b_ml.ml_line_count)
{
curwin->w_topline = old_topline + 1;
#ifdef FEAT_FOLDING
(void)hasFolding(curwin->w_topline, &curwin->w_topline, NULL);
#endif
}
}
#ifdef FEAT_FOLDING
else if (curwin->w_botline > curbuf->b_ml.ml_line_count)
(void)hasFolding(curwin->w_topline, &curwin->w_topline, NULL);
#endif
}
}
redraw_later(VALID);
+1 -1
View File
@@ -1489,7 +1489,7 @@ parse_builtin_tcap(char_u *term)
if (term_7to8bit(t))
{
*t = term_7to8bit(t);
STRCPY(t + 1, t + 2);
STRMOVE(t + 1, t + 2);
}
term_strings[p->bt_entry] = s;
set_term_option_alloced(&term_strings[p->bt_entry]);
+26
View File
@@ -1,5 +1,7 @@
" Test for folding
source view_util.vim
func PrepIndent(arg)
return [a:arg] + repeat(["\t".a:arg], 5)
endfu
@@ -648,3 +650,27 @@ func Test_foldopen_exception()
endtry
call assert_match('E492:', a)
endfunc
func Test_fold_last_line_with_pagedown()
enew!
set fdm=manual
let expect = '+-- 11 lines: 9---'
let content = range(1,19)
call append(0, content)
normal dd9G
normal zfG
normal zt
call assert_equal('9', getline(foldclosed('.')))
call assert_equal('19', getline(foldclosedend('.')))
call assert_equal(expect, ScreenLines(1, len(expect))[0])
call feedkeys("\<C-F>", 'xt')
call assert_equal(expect, ScreenLines(1, len(expect))[0])
call feedkeys("\<C-F>", 'xt')
call assert_equal(expect, ScreenLines(1, len(expect))[0])
call feedkeys("\<C-B>\<C-F>\<C-F>", 'xt')
call assert_equal(expect, ScreenLines(1, len(expect))[0])
set fdm&
enew!
endfunc
+2 -5
View File
@@ -126,15 +126,12 @@ func Test_marks_cmd_multibyte()
return
endif
new Xone
call setline(1, ['ááááááááááááááááááááááááááááááááááááááááááááááááááááááááááááááááááááááááááááááááá'])
call setline(1, [repeat('á', &columns)])
norm! ma
let a = split(execute('marks a'), "\n")
call assert_equal(2, len(a))
let expected = ' a 1 0 '
while strwidth(expected) < &columns - 1
let expected .= 'á'
endwhile
let expected = ' a 1 0 ' . repeat('á', &columns - 16)
call assert_equal(expected, a[1])
bwipe!
+22 -7
View File
@@ -14,13 +14,14 @@
#include "vim.h"
#if defined(FEAT_EVAL) || defined(PROTO)
/* function flags */
#define FC_ABORT 0x01 /* abort function on error */
#define FC_RANGE 0x02 /* function accepts range */
#define FC_DICT 0x04 /* Dict function, uses "self" */
#define FC_CLOSURE 0x08 /* closure, uses outer scope variables */
#define FC_DELETED 0x10 /* :delfunction used while uf_refcount > 0 */
#define FC_REMOVED 0x20 /* function redefined while uf_refcount > 0 */
// flags used in uf_flags
#define FC_ABORT 0x01 // abort function on error
#define FC_RANGE 0x02 // function accepts range
#define FC_DICT 0x04 // Dict function, uses "self"
#define FC_CLOSURE 0x08 // closure, uses outer scope variables
#define FC_DELETED 0x10 // :delfunction used while uf_refcount > 0
#define FC_REMOVED 0x20 // function redefined while uf_refcount > 0
#define FC_SANDBOX 0x40 // function defined in the sandbox
/* From user function to hashitem and back. */
#define UF2HIKEY(fp) ((fp)->uf_name)
@@ -296,6 +297,8 @@ get_lambda_tv(char_u **arg, typval_T *rettv, int evaluate)
if (prof_def_func())
func_do_profile(fp);
#endif
if (sandbox)
flags |= FC_SANDBOX;
fp->uf_varargs = TRUE;
fp->uf_flags = flags;
fp->uf_calls = 0;
@@ -688,6 +691,7 @@ call_user_func(
char_u *save_sourcing_name;
linenr_T save_sourcing_lnum;
scid_T save_current_SID;
int using_sandbox = FALSE;
funccall_T *fc;
int save_did_emsg;
static int depth = 0;
@@ -854,6 +858,13 @@ call_user_func(
save_sourcing_name = sourcing_name;
save_sourcing_lnum = sourcing_lnum;
sourcing_lnum = 1;
if (fp->uf_flags & FC_SANDBOX)
{
using_sandbox = TRUE;
++sandbox;
}
/* need space for function name + ("function " + 3) or "[number]" */
len = (save_sourcing_name == NULL ? 0 : STRLEN(save_sourcing_name))
+ STRLEN(fp->uf_name) + 20;
@@ -1020,6 +1031,8 @@ call_user_func(
if (do_profiling == PROF_YES)
script_prof_restore(&wait_start);
#endif
if (using_sandbox)
--sandbox;
if (p_verbose >= 12 && sourcing_name != NULL)
{
@@ -2429,6 +2442,8 @@ ex_function(exarg_T *eap)
func_do_profile(fp);
#endif
fp->uf_varargs = varargs;
if (sandbox)
flags |= FC_SANDBOX;
fp->uf_flags = flags;
fp->uf_calls = 0;
fp->uf_script_ID = current_SID;
+10
View File
@@ -804,6 +804,16 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
178,
/**/
177,
/**/
176,
/**/
175,
/**/
174,
/**/
173,
/**/