mirror of
https://github.com/macvim-dev/macvim.git
synced 2026-06-11 15:37:29 +02:00
Merge remote-tracking branch 'vim/master'
This commit is contained in:
+1
-1
@@ -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
@@ -759,7 +759,7 @@ extern "C" void InitOLE(int *pbDoRestart)
|
||||
hr = RegisterActiveObject(
|
||||
app,
|
||||
MYCLSID,
|
||||
NULL,
|
||||
0,
|
||||
&app_id);
|
||||
|
||||
if (FAILED(hr))
|
||||
|
||||
+16
-11
@@ -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
@@ -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]);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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;
|
||||
|
||||
@@ -804,6 +804,16 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
178,
|
||||
/**/
|
||||
177,
|
||||
/**/
|
||||
176,
|
||||
/**/
|
||||
175,
|
||||
/**/
|
||||
174,
|
||||
/**/
|
||||
173,
|
||||
/**/
|
||||
|
||||
Reference in New Issue
Block a user