From 9b25af36204c0511eab08d621688f0f2008fc68e Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 28 Apr 2018 13:56:09 +0200 Subject: [PATCH 01/20] patch 8.0.1769: repeated saving and restoring viewstate for 'incsearch' Problem: Repeated saving and restoring viewstate for 'incsearch'. Solution: Use a structure. --- src/ex_getln.c | 99 ++++++++++++++++++++++++-------------------------- src/version.c | 2 + 2 files changed, 49 insertions(+), 52 deletions(-) diff --git a/src/ex_getln.c b/src/ex_getln.c index ef8b4bdac6..64914aa672 100644 --- a/src/ex_getln.c +++ b/src/ex_getln.c @@ -187,6 +187,45 @@ empty_pattern(char_u *p) } #endif +#ifdef FEAT_SEARCH_EXTRA +typedef struct { + colnr_T vs_curswant; + colnr_T vs_leftcol; + linenr_T vs_topline; +# ifdef FEAT_DIFF + int vs_topfill; +# endif + linenr_T vs_botline; + linenr_T vs_empty_rows; +} viewstate_T; + + static void +save_viewstate(viewstate_T *vs) +{ + vs->vs_curswant = curwin->w_curswant; + vs->vs_leftcol = curwin->w_leftcol; + vs->vs_topline = curwin->w_topline; +# ifdef FEAT_DIFF + vs->vs_topfill = curwin->w_topfill; +# endif + vs->vs_botline = curwin->w_botline; + vs->vs_empty_rows = curwin->w_empty_rows; +} + + static void +restore_viewstate(viewstate_T *vs) +{ + curwin->w_curswant = vs->vs_curswant; + curwin->w_leftcol = vs->vs_leftcol; + curwin->w_topline = vs->vs_topline; +# ifdef FEAT_DIFF + curwin->w_topfill = vs->vs_topfill; +# endif + curwin->w_botline = vs->vs_botline; + curwin->w_empty_rows = vs->vs_empty_rows; +} +#endif + /* * getcmdline() - accept a command line starting with firstc. * @@ -225,21 +264,10 @@ getcmdline( #ifdef FEAT_SEARCH_EXTRA pos_T search_start; /* where 'incsearch' starts searching */ pos_T save_cursor; - colnr_T old_curswant; - colnr_T init_curswant = curwin->w_curswant; - colnr_T old_leftcol; - colnr_T init_leftcol = curwin->w_leftcol; - linenr_T old_topline; - linenr_T init_topline = curwin->w_topline; + viewstate_T init_viewstate; + viewstate_T old_viewstate; pos_T match_start = curwin->w_cursor; pos_T match_end; -# ifdef FEAT_DIFF - int old_topfill; - int init_topfill = curwin->w_topfill; -# endif - linenr_T old_botline, old_empty_rows; - linenr_T init_botline = curwin->w_botline; - linenr_T init_empty_rows = curwin->w_empty_rows; int did_incsearch = FALSE; int incsearch_postponed = FALSE; #endif @@ -285,14 +313,8 @@ getcmdline( CLEAR_POS(&match_end); save_cursor = curwin->w_cursor; /* may be restored later */ search_start = curwin->w_cursor; - old_curswant = curwin->w_curswant; - old_leftcol = curwin->w_leftcol; - old_topline = curwin->w_topline; -# ifdef FEAT_DIFF - old_topfill = curwin->w_topfill; -# endif - old_botline = curwin->w_botline; - old_empty_rows = curwin->w_empty_rows; + save_viewstate(&init_viewstate); + save_viewstate(&old_viewstate); #endif /* @@ -1070,14 +1092,7 @@ getcmdline( search_start = save_cursor; /* save view settings, so that the screen * won't be restored at the wrong position */ - old_curswant = init_curswant; - old_leftcol = init_leftcol; - old_topline = init_topline; -# ifdef FEAT_DIFF - old_topfill = init_topfill; -# endif - old_botline = init_botline; - old_empty_rows = init_empty_rows; + old_viewstate = init_viewstate; } #endif redrawcmd(); @@ -1800,14 +1815,7 @@ getcmdline( update_topline(); validate_cursor(); highlight_match = TRUE; - old_curswant = curwin->w_curswant; - old_leftcol = curwin->w_leftcol; - old_topline = curwin->w_topline; -# ifdef FEAT_DIFF - old_topfill = curwin->w_topfill; -# endif - old_botline = curwin->w_botline; - old_empty_rows = curwin->w_empty_rows; + save_viewstate(&old_viewstate); update_screen(NOT_VALID); redrawcmdline(); } @@ -2018,13 +2026,7 @@ cmdline_changed: /* first restore the old curwin values, so the screen is * positioned in the same way as the actual search command */ - curwin->w_leftcol = old_leftcol; - curwin->w_topline = old_topline; -# ifdef FEAT_DIFF - curwin->w_topfill = old_topfill; -# endif - curwin->w_botline = old_botline; - curwin->w_empty_rows = old_empty_rows; + restore_viewstate(&old_viewstate); changed_cline_bef_curs(); update_topline(); @@ -2112,14 +2114,7 @@ returncmd: } curwin->w_cursor = search_start; } - curwin->w_curswant = old_curswant; - curwin->w_leftcol = old_leftcol; - curwin->w_topline = old_topline; -# ifdef FEAT_DIFF - curwin->w_topfill = old_topfill; -# endif - curwin->w_botline = old_botline; - curwin->w_empty_rows = old_empty_rows; + restore_viewstate(&old_viewstate); highlight_match = FALSE; validate_cursor(); /* needed for TAB */ redraw_all_later(SOME_VALID); diff --git a/src/version.c b/src/version.c index 773e4b4779..0a36b66af3 100644 --- a/src/version.c +++ b/src/version.c @@ -761,6 +761,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1769, /**/ 1768, /**/ From 65a5464985f980d2bbbf4e14d39d416dce065ec7 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 28 Apr 2018 16:56:53 +0200 Subject: [PATCH 02/20] patch 8.0.1770: assert functions don't return anything Problem: Assert functions don't return anything. Solution: Return non-zero when the assertion fails. --- runtime/doc/eval.txt | 56 +++++++++++++++---------- src/eval.c | 46 ++++++++++++++------ src/evalfunc.c | 48 ++++++++++----------- src/proto/eval.pro | 18 ++++---- src/testdir/test_assert.vim | 84 ++++++++++++++++++++----------------- src/version.c | 2 + 6 files changed, 149 insertions(+), 105 deletions(-) diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 8961a33c01..0a22a717ca 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 8.0. Last change: 2018 Apr 20 +*eval.txt* For Vim version 8.0. Last change: 2018 Apr 28 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1548,10 +1548,12 @@ v:errmsg Last given error message. It's allowed to set this variable. : ... handle error < "errmsg" also works, for backwards compatibility. - *v:errors* *errors-variable* + *v:errors* *errors-variable* *assert-return* v:errors Errors found by assert functions, such as |assert_true()|. This is a list of strings. The assert functions append an item when an assert fails. + The return value indicates this: a one is returned if an item + was added to v:errors, otherwise zero is returned. To remove old results make it empty: > :let v:errors = [] < If v:errors is set to anything but a list it is made an empty @@ -2020,26 +2022,26 @@ argidx() Number current index in the argument list arglistid([{winnr} [, {tabnr}]]) Number argument list id argv({nr}) String {nr} entry of the argument list argv() List the argument list -assert_beeps({cmd}) none assert {cmd} causes a beep +assert_beeps({cmd}) Number assert {cmd} causes a beep assert_equal({exp}, {act} [, {msg}]) - none assert {exp} is equal to {act} + Number assert {exp} is equal to {act} assert_equalfile({fname-one}, {fname-two}) - none assert file contents is equal + Number assert file contents is equal assert_exception({error} [, {msg}]) - none assert {error} is in v:exception -assert_fails({cmd} [, {error}]) none assert {cmd} fails + Number assert {error} is in v:exception +assert_fails({cmd} [, {error}]) Number assert {cmd} fails assert_false({actual} [, {msg}]) - none assert {actual} is false + Number assert {actual} is false assert_inrange({lower}, {upper}, {actual} [, {msg}]) - none assert {actual} is inside the range + Number assert {actual} is inside the range assert_match({pat}, {text} [, {msg}]) - none assert {pat} matches {text} + Number assert {pat} matches {text} assert_notequal({exp}, {act} [, {msg}]) - none assert {exp} is not equal {act} + Number assert {exp} is not equal {act} assert_notmatch({pat}, {text} [, {msg}]) - none assert {pat} not matches {text} -assert_report({msg}) none report a test failure -assert_true({actual} [, {msg}]) none assert {actual} is true + Number assert {pat} not matches {text} +assert_report({msg}) Number report a test failure +assert_true({actual} [, {msg}]) Number assert {actual} is true asin({expr}) Float arc sine of {expr} atan({expr}) Float arc tangent of {expr} atan2({expr1}, {expr2}) Float arc tangent of {expr1} / {expr2} @@ -2593,12 +2595,13 @@ argv([{nr}]) The result is the {nr}th file in the argument list of the assert_beeps({cmd}) *assert_beeps()* Run {cmd} and add an error message to |v:errors| if it does NOT produce a beep or visual bell. - Also see |assert_fails()|. + Also see |assert_fails()| and |assert-return|. *assert_equal()* assert_equal({expected}, {actual} [, {msg}]) When {expected} and {actual} are not equal an error message is - added to |v:errors|. + added to |v:errors| and 1 is returned. Otherwise zero is + returned |assert-return|. There is no automatic conversion, the String "4" is different from the Number 4. And the number 4 is different from the Float 4.0. The value of 'ignorecase' is not used here, case @@ -2614,13 +2617,14 @@ assert_equal({expected}, {actual} [, {msg}]) assert_equalfile({fname-one}, {fname-two}) When the files {fname-one} and {fname-two} do not contain exactly the same text an error message is added to |v:errors|. + Also see |assert-return|. When {fname-one} or {fname-two} does not exist the error will mention that. Mainly useful with |terminal-diff|. assert_exception({error} [, {msg}]) *assert_exception()* When v:exception does not contain the string {error} an error - message is added to |v:errors|. + message is added to |v:errors|. Also see |assert-return|. This can be used to assert that a command throws an exception. Using the error number, followed by a colon, avoids problems with translations: > @@ -2633,14 +2637,15 @@ assert_exception({error} [, {msg}]) *assert_exception()* assert_fails({cmd} [, {error}]) *assert_fails()* Run {cmd} and add an error message to |v:errors| if it does - NOT produce an error. + NOT produce an error. Also see |assert-return|. When {error} is given it must match in |v:errmsg|. Note that beeping is not considered an error, and some failing commands only beep. Use |assert_beeps()| for those. assert_false({actual} [, {msg}]) *assert_false()* When {actual} is not false an error message is added to - |v:errors|, like with |assert_equal()|. + |v:errors|, like with |assert_equal()|. + Also see |assert-return|. A value is false when it is zero. When {actual} is not a number the assert fails. When {msg} is omitted an error in the form @@ -2649,7 +2654,7 @@ assert_false({actual} [, {msg}]) *assert_false()* assert_inrange({lower}, {upper}, {actual} [, {msg}]) *assert_inrange()* This asserts number values. When {actual} is lower than {lower} or higher than {upper} an error message is added to - |v:errors|. + |v:errors|. Also see |assert-return|. When {msg} is omitted an error in the form "Expected range {lower} - {upper}, but got {actual}" is produced. @@ -2657,7 +2662,7 @@ assert_inrange({lower}, {upper}, {actual} [, {msg}]) *assert_inrange()* *assert_match()* assert_match({pattern}, {actual} [, {msg}]) When {pattern} does not match {actual} an error message is - added to |v:errors|. + added to |v:errors|. Also see |assert-return|. {pattern} is used as with |=~|: The matching is always done like 'magic' was set and 'cpoptions' is empty, no matter what @@ -2678,18 +2683,22 @@ assert_match({pattern}, {actual} [, {msg}]) assert_notequal({expected}, {actual} [, {msg}]) The opposite of `assert_equal()`: add an error message to |v:errors| when {expected} and {actual} are equal. + Also see |assert-return|. *assert_notmatch()* assert_notmatch({pattern}, {actual} [, {msg}]) The opposite of `assert_match()`: add an error message to |v:errors| when {pattern} matches {actual}. + Also see |assert-return|. assert_report({msg}) *assert_report()* Report a test failure directly, using {msg}. + Always returns one. assert_true({actual} [, {msg}]) *assert_true()* When {actual} is not true an error message is added to |v:errors|, like with |assert_equal()|. + Also see |assert-return|. A value is TRUE when it is a non-zero number. When {actual} is not a number the assert fails. When {msg} is omitted an error in the form "Expected True but @@ -5392,10 +5401,11 @@ job_getchannel({job}) *job_getchannel()* < {only available when compiled with the |+job| feature} -job_info({job}) *job_info()* +job_info([{job}]) *job_info()* Returns a Dictionary with information about {job}: "status" what |job_status()| returns "channel" what |job_getchannel()| returns + "cmd" List of command arguments used to start the job "process" process ID "tty_in" terminal input name, empty when none "tty_out" terminal output name, empty when none @@ -5403,6 +5413,8 @@ job_info({job}) *job_info()* "exit_cb" function to be called on exit "stoponexit" |job-stoponexit| + Without any arguments, returns a List with all Job objects. + job_setoptions({job}, {options}) *job_setoptions()* Change options for {job}. Supported are: "stoponexit" |job-stoponexit| diff --git a/src/eval.c b/src/eval.c index cfeba2edaa..63f8bde329 100644 --- a/src/eval.c +++ b/src/eval.c @@ -8815,7 +8815,7 @@ assert_error(garray_T *gap) list_append_string(vimvars[VV_ERRORS].vv_list, gap->ga_data, gap->ga_len); } - void + int assert_equal_common(typval_T *argvars, assert_type_T atype) { garray_T ga; @@ -8828,10 +8828,12 @@ assert_equal_common(typval_T *argvars, assert_type_T atype) atype); assert_error(&ga); ga_clear(&ga); + return 1; } + return 0; } - void + int assert_equalfile(typval_T *argvars) { char_u buf1[NUMBUFLEN]; @@ -8843,7 +8845,7 @@ assert_equalfile(typval_T *argvars) FILE *fd2; if (fname1 == NULL || fname2 == NULL) - return; + return 0; IObuff[0] = NUL; fd1 = mch_fopen((char *)fname1, READBIN); @@ -8897,10 +8899,12 @@ assert_equalfile(typval_T *argvars) ga_concat(&ga, IObuff); assert_error(&ga); ga_clear(&ga); + return 1; } + return 0; } - void + int assert_match_common(typval_T *argvars, assert_type_T atype) { garray_T ga; @@ -8918,10 +8922,12 @@ assert_match_common(typval_T *argvars, assert_type_T atype) atype); assert_error(&ga); ga_clear(&ga); + return 1; } + return 0; } - void + int assert_inrange(typval_T *argvars) { garray_T ga; @@ -8934,7 +8940,7 @@ assert_inrange(typval_T *argvars) char_u numbuf[NUMBUFLEN]; if (error) - return; + return 0; if (actual < lower || actual > upper) { prepare_assert_error(&ga); @@ -8951,13 +8957,16 @@ assert_inrange(typval_T *argvars) } assert_error(&ga); ga_clear(&ga); + return 1; } + return 0; } /* * Common for assert_true() and assert_false(). + * Return non-zero for failure. */ - void + int assert_bool(typval_T *argvars, int isTrue) { int error = FALSE; @@ -8965,7 +8974,7 @@ assert_bool(typval_T *argvars, int isTrue) if (argvars[0].v_type == VAR_SPECIAL && argvars[0].vval.v_number == (isTrue ? VVAL_TRUE : VVAL_FALSE)) - return; + return 0; if (argvars[0].v_type != VAR_NUMBER || (get_tv_number_chk(&argvars[0], &error) == 0) == isTrue || error) @@ -8976,10 +8985,12 @@ assert_bool(typval_T *argvars, int isTrue) NULL, &argvars[0], ASSERT_OTHER); assert_error(&ga); ga_clear(&ga); + return 1; } + return 0; } - void + int assert_report(typval_T *argvars) { garray_T ga; @@ -8988,9 +8999,10 @@ assert_report(typval_T *argvars) ga_concat(&ga, get_tv_string(&argvars[0])); assert_error(&ga); ga_clear(&ga); + return 1; } - void + int assert_exception(typval_T *argvars) { garray_T ga; @@ -9002,6 +9014,7 @@ assert_exception(typval_T *argvars) ga_concat(&ga, (char_u *)"v:exception is not set"); assert_error(&ga); ga_clear(&ga); + return 1; } else if (error != NULL && strstr((char *)vimvars[VV_EXCEPTION].vv_str, (char *)error) == NULL) @@ -9011,14 +9024,17 @@ assert_exception(typval_T *argvars) &vimvars[VV_EXCEPTION].vv_tv, ASSERT_OTHER); assert_error(&ga); ga_clear(&ga); + return 1; } + return 0; } - void + int assert_beeps(typval_T *argvars) { char_u *cmd = get_tv_string_chk(&argvars[0]); garray_T ga; + int ret = 0; called_vim_beep = FALSE; suppress_errthrow = TRUE; @@ -9031,17 +9047,20 @@ assert_beeps(typval_T *argvars) ga_concat(&ga, cmd); assert_error(&ga); ga_clear(&ga); + ret = 1; } suppress_errthrow = FALSE; emsg_on_display = FALSE; + return ret; } - void + int assert_fails(typval_T *argvars) { char_u *cmd = get_tv_string_chk(&argvars[0]); garray_T ga; + int ret = 0; called_emsg = FALSE; suppress_errthrow = TRUE; @@ -9054,6 +9073,7 @@ assert_fails(typval_T *argvars) ga_concat(&ga, cmd); assert_error(&ga); ga_clear(&ga); + ret = 1; } else if (argvars[1].v_type != VAR_UNKNOWN) { @@ -9068,6 +9088,7 @@ assert_fails(typval_T *argvars) &vimvars[VV_ERRMSG].vv_tv, ASSERT_OTHER); assert_error(&ga); ga_clear(&ga); + ret = 1; } } @@ -9076,6 +9097,7 @@ assert_fails(typval_T *argvars) emsg_silent = FALSE; emsg_on_display = FALSE; set_vim_var_string(VV_ERRMSG, NULL, 0); + return ret; } /* diff --git a/src/evalfunc.c b/src/evalfunc.c index dd4462d4f8..ae1425e53b 100644 --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -1300,108 +1300,108 @@ f_argv(typval_T *argvars, typval_T *rettv) * "assert_beeps(cmd [, error])" function */ static void -f_assert_beeps(typval_T *argvars, typval_T *rettv UNUSED) +f_assert_beeps(typval_T *argvars, typval_T *rettv) { - assert_beeps(argvars); + rettv->vval.v_number = assert_beeps(argvars); } /* * "assert_equal(expected, actual[, msg])" function */ static void -f_assert_equal(typval_T *argvars, typval_T *rettv UNUSED) +f_assert_equal(typval_T *argvars, typval_T *rettv) { - assert_equal_common(argvars, ASSERT_EQUAL); + rettv->vval.v_number = assert_equal_common(argvars, ASSERT_EQUAL); } /* * "assert_equalfile(fname-one, fname-two)" function */ static void -f_assert_equalfile(typval_T *argvars, typval_T *rettv UNUSED) +f_assert_equalfile(typval_T *argvars, typval_T *rettv) { - assert_equalfile(argvars); + rettv->vval.v_number = assert_equalfile(argvars); } /* * "assert_notequal(expected, actual[, msg])" function */ static void -f_assert_notequal(typval_T *argvars, typval_T *rettv UNUSED) +f_assert_notequal(typval_T *argvars, typval_T *rettv) { - assert_equal_common(argvars, ASSERT_NOTEQUAL); + rettv->vval.v_number = assert_equal_common(argvars, ASSERT_NOTEQUAL); } /* * "assert_exception(string[, msg])" function */ static void -f_assert_exception(typval_T *argvars, typval_T *rettv UNUSED) +f_assert_exception(typval_T *argvars, typval_T *rettv) { - assert_exception(argvars); + rettv->vval.v_number = assert_exception(argvars); } /* * "assert_fails(cmd [, error])" function */ static void -f_assert_fails(typval_T *argvars, typval_T *rettv UNUSED) +f_assert_fails(typval_T *argvars, typval_T *rettv) { - assert_fails(argvars); + rettv->vval.v_number = assert_fails(argvars); } /* * "assert_false(actual[, msg])" function */ static void -f_assert_false(typval_T *argvars, typval_T *rettv UNUSED) +f_assert_false(typval_T *argvars, typval_T *rettv) { - assert_bool(argvars, FALSE); + rettv->vval.v_number = assert_bool(argvars, FALSE); } /* * "assert_inrange(lower, upper[, msg])" function */ static void -f_assert_inrange(typval_T *argvars, typval_T *rettv UNUSED) +f_assert_inrange(typval_T *argvars, typval_T *rettv) { - assert_inrange(argvars); + rettv->vval.v_number = assert_inrange(argvars); } /* * "assert_match(pattern, actual[, msg])" function */ static void -f_assert_match(typval_T *argvars, typval_T *rettv UNUSED) +f_assert_match(typval_T *argvars, typval_T *rettv) { - assert_match_common(argvars, ASSERT_MATCH); + rettv->vval.v_number = assert_match_common(argvars, ASSERT_MATCH); } /* * "assert_notmatch(pattern, actual[, msg])" function */ static void -f_assert_notmatch(typval_T *argvars, typval_T *rettv UNUSED) +f_assert_notmatch(typval_T *argvars, typval_T *rettv) { - assert_match_common(argvars, ASSERT_NOTMATCH); + rettv->vval.v_number = assert_match_common(argvars, ASSERT_NOTMATCH); } /* * "assert_report(msg)" function */ static void -f_assert_report(typval_T *argvars, typval_T *rettv UNUSED) +f_assert_report(typval_T *argvars, typval_T *rettv) { - assert_report(argvars); + rettv->vval.v_number = assert_report(argvars); } /* * "assert_true(actual[, msg])" function */ static void -f_assert_true(typval_T *argvars, typval_T *rettv UNUSED) +f_assert_true(typval_T *argvars, typval_T *rettv) { - assert_bool(argvars, TRUE); + rettv->vval.v_number = assert_bool(argvars, TRUE); } #ifdef FEAT_FLOAT diff --git a/src/proto/eval.pro b/src/proto/eval.pro index 6f16ce0de0..3bbe8154ac 100644 --- a/src/proto/eval.pro +++ b/src/proto/eval.pro @@ -121,15 +121,15 @@ void last_set_msg(scid_T scriptID); void reset_v_option_vars(void); void prepare_assert_error(garray_T *gap); void assert_error(garray_T *gap); -void assert_equal_common(typval_T *argvars, assert_type_T atype); -void assert_equalfile(typval_T *argvars); -void assert_match_common(typval_T *argvars, assert_type_T atype); -void assert_inrange(typval_T *argvars); -void assert_bool(typval_T *argvars, int isTrue); -void assert_report(typval_T *argvars); -void assert_exception(typval_T *argvars); -void assert_beeps(typval_T *argvars); -void assert_fails(typval_T *argvars); +int assert_equal_common(typval_T *argvars, assert_type_T atype); +int assert_equalfile(typval_T *argvars); +int assert_match_common(typval_T *argvars, assert_type_T atype); +int assert_inrange(typval_T *argvars); +int assert_bool(typval_T *argvars, int isTrue); +int assert_report(typval_T *argvars); +int assert_exception(typval_T *argvars); +int assert_beeps(typval_T *argvars); +int assert_fails(typval_T *argvars); void fill_assert_error(garray_T *gap, typval_T *opt_msg_tv, char_u *exp_str, typval_T *exp_tv, typval_T *got_tv, assert_type_T atype); int typval_compare(typval_T *typ1, typval_T *typ2, exptype_T type, int type_is, int ic); char_u *typval_tostring(typval_T *arg); diff --git a/src/testdir/test_assert.vim b/src/testdir/test_assert.vim index 0de6ceb7c9..61147286fb 100644 --- a/src/testdir/test_assert.vim +++ b/src/testdir/test_assert.vim @@ -1,58 +1,66 @@ " Test that the methods used for testing work. func Test_assert_false() - call assert_false(0) - call assert_false(v:false) + call assert_equal(0, assert_false(0)) + call assert_equal(0, assert_false(v:false)) + + call assert_equal(1, assert_false(123)) + call assert_match("Expected False but got 123", v:errors[0]) + call remove(v:errors, 0) endfunc func Test_assert_true() - call assert_true(1) - call assert_true(123) - call assert_true(v:true) + call assert_equal(0, assert_true(1)) + call assert_equal(0, assert_true(123)) + call assert_equal(0, assert_true(v:true)) + + call assert_equal(1, assert_true(0)) + call assert_match("Expected True but got 0", v:errors[0]) + call remove(v:errors, 0) endfunc func Test_assert_equal() let s = 'foo' - call assert_equal('foo', s) + call assert_equal(0, assert_equal('foo', s)) let n = 4 - call assert_equal(4, n) + call assert_equal(0, assert_equal(4, n)) let l = [1, 2, 3] - call assert_equal([1, 2, 3], l) + call assert_equal(0, assert_equal([1, 2, 3], l)) let s = 'foo' - call assert_equal('bar', s) + call assert_equal(1, assert_equal('bar', s)) call assert_match("Expected 'bar' but got 'foo'", v:errors[0]) call remove(v:errors, 0) endfunc func Test_assert_equalfile() - call assert_equalfile('abcabc', 'xyzxyz') + call assert_equal(1, assert_equalfile('abcabc', 'xyzxyz')) call assert_match("E485: Can't read file abcabc", v:errors[0]) call remove(v:errors, 0) let goodtext = ["one", "two", "three"] call writefile(goodtext, 'Xone') - call assert_equalfile('Xone', 'xyzxyz') + call assert_equal(1, assert_equalfile('Xone', 'xyzxyz')) call assert_match("E485: Can't read file xyzxyz", v:errors[0]) call remove(v:errors, 0) call writefile(goodtext, 'Xtwo') - call assert_equalfile('Xone', 'Xtwo') + call assert_equal(0, assert_equalfile('Xone', 'Xtwo')) call writefile([goodtext[0]], 'Xone') - call assert_equalfile('Xone', 'Xtwo') + call assert_equal(1, assert_equalfile('Xone', 'Xtwo')) call assert_match("first file is shorter", v:errors[0]) call remove(v:errors, 0) call writefile(goodtext, 'Xone') call writefile([goodtext[0]], 'Xtwo') - call assert_equalfile('Xone', 'Xtwo') + call assert_equal(1, assert_equalfile('Xone', 'Xtwo')) call assert_match("second file is shorter", v:errors[0]) call remove(v:errors, 0) call writefile(['1234X89'], 'Xone') call writefile(['1234Y89'], 'Xtwo') - call assert_equalfile('Xone', 'Xtwo') + call assert_equal(1, assert_equalfile('Xone', 'Xtwo')) call assert_match("difference at byte 4", v:errors[0]) call remove(v:errors, 0) @@ -62,17 +70,17 @@ endfunc func Test_assert_notequal() let n = 4 - call assert_notequal('foo', n) + call assert_equal(0, assert_notequal('foo', n)) let s = 'foo' - call assert_notequal([1, 2, 3], s) + call assert_equal(0, assert_notequal([1, 2, 3], s)) - call assert_notequal('foo', s) + call assert_equal(1, assert_notequal('foo', s)) call assert_match("Expected not equal to 'foo'", v:errors[0]) call remove(v:errors, 0) endfunc func Test_assert_report() - call assert_report('something is wrong') + call assert_equal(1, assert_report('something is wrong')) call assert_match('something is wrong', v:errors[0]) call remove(v:errors, 0) endfunc @@ -81,7 +89,7 @@ func Test_assert_exception() try nocommand catch - call assert_exception('E492:') + call assert_equal(0, assert_exception('E492:')) endtry try @@ -89,9 +97,9 @@ func Test_assert_exception() catch try " illegal argument, get NULL for error - call assert_exception([]) + call assert_equal(1, assert_exception([])) catch - call assert_exception('E730:') + call assert_equal(0, assert_exception('E730:')) endtry endtry endfunc @@ -113,59 +121,59 @@ func Test_compare_fail() try call assert_equal(s:w, '') catch - call assert_exception('E724:') + call assert_equal(0, assert_exception('E724:')) call assert_match("Expected NULL but got ''", v:errors[0]) call remove(v:errors, 0) endtry endfunc func Test_match() - call assert_match('^f.*b.*r$', 'foobar') + call assert_equal(0, assert_match('^f.*b.*r$', 'foobar')) - call assert_match('bar.*foo', 'foobar') + call assert_equal(1, assert_match('bar.*foo', 'foobar')) call assert_match("Pattern 'bar.*foo' does not match 'foobar'", v:errors[0]) call remove(v:errors, 0) - call assert_match('bar.*foo', 'foobar', 'wrong') + call assert_equal(1, assert_match('bar.*foo', 'foobar', 'wrong')) call assert_match('wrong', v:errors[0]) call remove(v:errors, 0) endfunc func Test_notmatch() - call assert_notmatch('foo', 'bar') - call assert_notmatch('^foobar$', 'foobars') + call assert_equal(0, assert_notmatch('foo', 'bar')) + call assert_equal(0, assert_notmatch('^foobar$', 'foobars')) - call assert_notmatch('foo', 'foobar') + call assert_equal(1, assert_notmatch('foo', 'foobar')) call assert_match("Pattern 'foo' does match 'foobar'", v:errors[0]) call remove(v:errors, 0) endfunc func Test_assert_fail_fails() - call assert_fails('xxx', {}) + call assert_equal(1, assert_fails('xxx', {})) call assert_match("Expected {} but got 'E731:", v:errors[0]) call remove(v:errors, 0) endfunc func Test_assert_beeps() new - call assert_beeps('normal h') + call assert_equal(0, assert_beeps('normal h')) - call assert_beeps('normal 0') + call assert_equal(1, assert_beeps('normal 0')) call assert_match("command did not beep: normal 0", v:errors[0]) call remove(v:errors, 0) bwipe endfunc func Test_assert_inrange() - call assert_inrange(7, 7, 7) - call assert_inrange(5, 7, 5) - call assert_inrange(5, 7, 6) - call assert_inrange(5, 7, 7) + call assert_equal(0, assert_inrange(7, 7, 7)) + call assert_equal(0, assert_inrange(5, 7, 5)) + call assert_equal(0, assert_inrange(5, 7, 6)) + call assert_equal(0, assert_inrange(5, 7, 7)) - call assert_inrange(5, 7, 4) + call assert_equal(1, assert_inrange(5, 7, 4)) call assert_match("Expected range 5 - 7, but got 4", v:errors[0]) call remove(v:errors, 0) - call assert_inrange(5, 7, 8) + call assert_equal(1, assert_inrange(5, 7, 8)) call assert_match("Expected range 5 - 7, but got 8", v:errors[0]) call remove(v:errors, 0) diff --git a/src/version.c b/src/version.c index 0a36b66af3..a824e8daa3 100644 --- a/src/version.c +++ b/src/version.c @@ -761,6 +761,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1770, /**/ 1769, /**/ From 50182fa84e20a0547f3e2bd6683ef799fcd27855 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 28 Apr 2018 21:34:40 +0200 Subject: [PATCH 03/20] patch 8.0.1771: in tests, when WaitFor() fails it doesn't say why Problem: In tests, when WaitFor() fails it doesn't say why. (James McCoy) Solution: Add WaitForAssert(), which produces an assert error when it fails. --- src/testdir/screendump.vim | 14 +++- src/testdir/shared.vim | 78 +++++++++++++----- src/testdir/test_autocmd.vim | 4 +- src/testdir/test_channel.vim | 130 +++++++++++------------------- src/testdir/test_clientserver.vim | 13 ++- src/testdir/test_job_fails.vim | 4 +- src/testdir/test_terminal.vim | 5 +- src/version.c | 2 + 8 files changed, 130 insertions(+), 120 deletions(-) diff --git a/src/testdir/screendump.vim b/src/testdir/screendump.vim index af9e371488..7065fa0510 100644 --- a/src/testdir/screendump.vim +++ b/src/testdir/screendump.vim @@ -64,9 +64,15 @@ func RunVimInTerminal(arguments, options) let cols = term_getsize(buf)[1] endif - " Wait for "All" of the ruler in the status line to be shown. - " This can be quite slow (e.g. when using valgrind). - call WaitFor({-> len(term_getline(buf, rows)) >= cols - 1}) + " Wait for "All" or "Top" of the ruler in the status line to be shown. This + " can be quite slow (e.g. when using valgrind). + " If it fails then show the terminal contents for debugging. + try + call WaitFor({-> len(term_getline(buf, rows)) >= cols - 1}) + catch /timed out after/ + let lines = map(range(1, rows), {key, val -> term_getline(buf, val)}) + call assert_report('RunVimInTerminal() failed, screen contents: ' . join(lines, "")) + endtry return buf endfunc @@ -75,7 +81,7 @@ endfunc func StopVimInTerminal(buf) call assert_equal("running", term_getstatus(a:buf)) call term_sendkeys(a:buf, "\\:qa!\") - call WaitFor('term_getstatus(' . a:buf . ') == "finished"') + call WaitForAssert({-> assert_equal("finished", term_getstatus(a:buf))}) only! endfunc diff --git a/src/testdir/shared.vim b/src/testdir/shared.vim index 6c3f8a4e63..6f4cbeec0a 100644 --- a/src/testdir/shared.vim +++ b/src/testdir/shared.vim @@ -115,38 +115,80 @@ endfunc " Wait for up to five seconds for "expr" to become true. "expr" can be a " stringified expression to evaluate, or a funcref without arguments. +" Using a lambda works best. Example: +" call WaitFor({-> status == "ok"}) +" " A second argument can be used to specify a different timeout in msec. " -" Return time slept in milliseconds. With the +reltime feature this can be -" more than the actual waiting time. Without +reltime it can also be less. +" When successful the time slept is returned. +" When running into the timeout an exception is thrown, thus the function does +" not return. func WaitFor(expr, ...) let timeout = get(a:000, 0, 5000) + let slept = s:WaitForCommon(a:expr, v:null, timeout) + if slept < 0 + throw 'WaitFor() timed out after ' . timeout . ' msec' + endif + return slept +endfunc + +" Wait for up to five seconds for "assert" to return zero. "assert" must be a +" (lambda) function containing one assert function. Example: +" call WaitForAssert({-> assert_equal("dead", job_status(job)}) +" +" A second argument can be used to specify a different timeout in msec. +" +" Return zero for success, one for failure (like the assert function). +func WaitForAssert(assert, ...) + let timeout = get(a:000, 0, 5000) + if s:WaitForCommon(v:null, a:assert, timeout) < 0 + return 1 + endif + return 0 +endfunc + +" Common implementation of WaitFor() and WaitForAssert(). +" Either "expr" or "assert" is not v:null +" Return the waiting time for success, -1 for failure. +func s:WaitForCommon(expr, assert, timeout) " using reltime() is more accurate, but not always available + let slept = 0 if has('reltime') let start = reltime() - else - let slept = 0 endif - if type(a:expr) == v:t_func - let Test = a:expr - else - let Test = {-> eval(a:expr) } - endif - for i in range(timeout / 10) - if Test() - if has('reltime') - return float2nr(reltimefloat(reltime(start)) * 1000) - endif + + while 1 + if type(a:expr) == v:t_func + let success = a:expr() + elseif type(a:assert) == v:t_func + let success = a:assert() == 0 + else + let success = eval(a:expr) + endif + if success return slept endif - if !has('reltime') + + if slept >= a:timeout + break + endif + if type(a:assert) == v:t_func + " Remove the error added by the assert function. + call remove(v:errors, -1) + endif + + sleep 10m + if has('reltime') + let slept = float2nr(reltimefloat(reltime(start)) * 1000) + else let slept += 10 endif - sleep 10m - endfor - throw 'WaitFor() timed out after ' . timeout . ' msec' + endwhile + + return -1 " timed out endfunc + " Wait for up to a given milliseconds. " With the +timers feature this waits for key-input by getchar(), Resume() " feeds key-input and resumes process. Return time waited in milliseconds. diff --git a/src/testdir/test_autocmd.vim b/src/testdir/test_autocmd.vim index 1c34e3049b..19c54d1567 100644 --- a/src/testdir/test_autocmd.vim +++ b/src/testdir/test_autocmd.vim @@ -1322,11 +1322,11 @@ func Test_Changed_FirstTime() let buf = term_start([GetVimProg(), '--clean', '-c', 'set noswapfile'], {'term_rows': 3}) call assert_equal('running', term_getstatus(buf)) " Wait for the ruler (in the status line) to be shown. - call WaitFor({-> term_getline(buf, 3) =~# '\ assert_match('\ call writefile(['No'], 'Xchanged.txt')\") call term_sendkeys(buf, "\\:qa!\") - call WaitFor({-> term_getstatus(buf) == 'finished'}) + call WaitForAssert({-> assert_equal('finished', term_getstatus(buf))}) call assert_equal([''], readfile('Xchanged.txt')) " clean up diff --git a/src/testdir/test_channel.vim b/src/testdir/test_channel.vim index ec8111e583..371afc7997 100644 --- a/src/testdir/test_channel.vim +++ b/src/testdir/test_channel.vim @@ -95,18 +95,15 @@ func Ch_communicate(port) " handled before getting the response, but it's not guaranteed, thus wait a " tiny bit for the commands to get executed. call assert_equal('ok', ch_evalexpr(handle, 'make change')) - call WaitFor('"added2" == getline("$")') + call WaitForAssert({-> assert_equal("added2", getline("$"))}) call assert_equal('added1', getline(line('$') - 1)) - call assert_equal('added2', getline('$')) " Request command "foo bar", which fails silently. call assert_equal('ok', ch_evalexpr(handle, 'bad command')) - call WaitFor('v:errmsg =~ "E492"') - call assert_match('E492:.*foo bar', v:errmsg) + call WaitForAssert({-> assert_match("E492:.*foo bar", v:errmsg)}) call assert_equal('ok', ch_evalexpr(handle, 'do normal', {'timeout': 100})) - call WaitFor('"added more" == getline("$")') - call assert_equal('added more', getline('$')) + call WaitForAssert({-> assert_equal('added more', getline('$'))}) " Send a request with a specific handler. call ch_sendexpr(handle, 'hello!', {'callback': 'Ch_requestHandler'}) @@ -188,10 +185,9 @@ func Ch_communicate(port) " Send an expr request call assert_equal('ok', ch_evalexpr(handle, 'an expr')) - call WaitFor('"three" == getline("$")') + call WaitForAssert({-> assert_equal('three', getline('$'))}) call assert_equal('one', getline(line('$') - 2)) call assert_equal('two', getline(line('$') - 1)) - call assert_equal('three', getline('$')) " Request a redraw, we don't check for the effect. call assert_equal('ok', ch_evalexpr(handle, 'redraw')) @@ -288,11 +284,11 @@ func Ch_channel_handler(port) " Test that it works while waiting on a numbered message. call assert_equal('ok', ch_evalexpr(handle, 'call me')) - call WaitFor('"we called you" == g:Ch_reply') + call WaitForAssert({-> assert_equal('we called you', g:Ch_reply)}) " Test that it works while not waiting on a numbered message. call ch_sendexpr(handle, 'call me again') - call WaitFor('"we did call you" == g:Ch_reply') + call WaitForAssert({-> assert_equal('we did call you', g:Ch_reply)}) endfunc func Test_channel_handler() @@ -334,7 +330,7 @@ func Ch_channel_zero(port) let g:Ch_reply = '' call assert_equal('sent zero', ch_evalexpr(handle, 'send zero')) if s:has_handler - call WaitFor('"zero index" == g:Ch_reply') + call WaitForAssert({-> assert_equal('zero index', g:Ch_reply)}) else sleep 20m call assert_equal('', g:Ch_reply) @@ -344,7 +340,7 @@ func Ch_channel_zero(port) let g:Ch_reply = '' let g:Ch_zero_reply = '' call ch_sendexpr(handle, 'send zero', {'callback': 'Ch_oneHandler'}) - call WaitFor('"sent zero" == g:Ch_zero_reply') + call WaitForAssert({-> assert_equal('sent zero', g:Ch_zero_reply)}) if s:has_handler call assert_equal('zero index', g:Ch_reply) else @@ -395,15 +391,12 @@ func Ch_raw_one_time_callback(port) " The messages are sent raw, we do our own JSON strings here. call ch_sendraw(handle, "[1, \"hello!\"]\n", {'callback': 'Ch_handleRaw1'}) - call WaitFor('g:Ch_reply1 != ""') - call assert_equal("[1, \"got it\"]", g:Ch_reply1) + call WaitForAssert({-> assert_equal("[1, \"got it\"]", g:Ch_reply1)}) call ch_sendraw(handle, "[2, \"echo something\"]\n", {'callback': 'Ch_handleRaw2'}) call ch_sendraw(handle, "[3, \"wait a bit\"]\n", {'callback': 'Ch_handleRaw3'}) - call WaitFor('g:Ch_reply2 != ""') - call assert_equal("[2, \"something\"]", g:Ch_reply2) + call WaitForAssert({-> assert_equal("[2, \"something\"]", g:Ch_reply2)}) " wait for the 200 msec delayed reply - call WaitFor('g:Ch_reply3 != ""') - call assert_equal("[3, \"waited\"]", g:Ch_reply3) + call WaitForAssert({-> assert_equal("[3, \"waited\"]", g:Ch_reply3)}) endfunc func Test_raw_one_time_callback() @@ -494,8 +487,7 @@ func Test_raw_pipe() let g:Ch_reply = "" call ch_sendraw(job, "double this\n", {'callback': 'Ch_handler'}) - call WaitFor('"" != g:Ch_reply') - call assert_equal("this\nAND this\n", substitute(g:Ch_reply, "\r", "", 'g')) + call WaitForAssert({-> assert_equal("this\nAND this\n", substitute(g:Ch_reply, "\r", "", 'g'))}) let reply = ch_evalraw(job, "quit\n", {'timeout': 100}) call assert_equal("Goodbye!\n", substitute(reply, "\r", "", 'g')) @@ -504,7 +496,7 @@ func Test_raw_pipe() endtry let g:Ch_job = job - call WaitFor('"dead" == job_status(g:Ch_job)') + call WaitForAssert({-> assert_equal("dead", job_status(g:Ch_job))}) let info = job_info(job) call assert_equal("dead", info.status) call assert_equal("term", info.stoponexit) @@ -602,7 +594,7 @@ func Stop_g_job() if has('win32') " On MS-Windows the server must close the file handle before we are able " to delete the file. - call WaitFor('job_status(g:job) == "dead"') + call WaitForAssert({-> assert_equal('dead', job_status(g:job))}) sleep 10m endif endfunc @@ -641,8 +633,7 @@ func Test_nl_write_out_file() call ch_sendraw(handle, "echo line one\n") call ch_sendraw(handle, "echo line two\n") call ch_sendraw(handle, "double this\n") - call WaitFor('len(readfile("Xoutput")) > 2') - call assert_equal(['line one', 'line two', 'this', 'AND this'], readfile('Xoutput')) + call WaitForAssert({-> assert_equal(['line one', 'line two', 'this', 'AND this'], readfile('Xoutput'))}) finally call Stop_g_job() call assert_equal(-1, match(s:get_resources(), '\(^\|/\)Xoutput$')) @@ -663,8 +654,7 @@ func Test_nl_write_err_file() call ch_sendraw(handle, "echoerr line one\n") call ch_sendraw(handle, "echoerr line two\n") call ch_sendraw(handle, "doubleerr this\n") - call WaitFor('len(readfile("Xoutput")) > 2') - call assert_equal(['line one', 'line two', 'this', 'AND this'], readfile('Xoutput')) + call WaitForAssert({-> assert_equal(['line one', 'line two', 'this', 'AND this'], readfile('Xoutput'))}) finally call Stop_g_job() call delete('Xoutput') @@ -685,8 +675,7 @@ func Test_nl_write_both_file() call ch_sendraw(handle, "echo line two\n") call ch_sendraw(handle, "double this\n") call ch_sendraw(handle, "doubleerr that\n") - call WaitFor('len(readfile("Xoutput")) > 5') - call assert_equal(['line one', 'line two', 'this', 'AND this', 'that', 'AND that'], readfile('Xoutput')) + call WaitForAssert({-> assert_equal(['line one', 'line two', 'this', 'AND this', 'that', 'AND that'], readfile('Xoutput'))}) finally call Stop_g_job() call assert_equal(-1, match(s:get_resources(), '\(^\|/\)Xoutput$')) @@ -777,8 +766,7 @@ func Test_close_output_buffer() let job = job_start(s:python . " test_channel_write.py", options) call assert_equal("run", job_status(job)) try - call WaitFor('line("$") == 3') - call assert_equal(3, line('$')) + call WaitForAssert({-> assert_equal(3, line('$'))}) quit! sleep 100m " Make sure the write didn't happen to the wrong buffer. @@ -827,8 +815,7 @@ func Run_test_pipe_err_to_buffer(use_name, nomod, do_msg) call ch_sendraw(handle, "doubleerr this\n") call ch_sendraw(handle, "quit\n") sp pipe-err - call WaitFor('line("$") == ' . len(expected)) - call assert_equal(expected, getline(1, '$')) + call WaitForAssert({-> assert_equal(expected, getline(1, '$'))}) if a:nomod call assert_equal(0, &modifiable) else @@ -872,8 +859,7 @@ func Test_pipe_both_to_buffer() call ch_sendraw(handle, "doubleerr that\n") call ch_sendraw(handle, "quit\n") sp pipe-err - call WaitFor('line("$") >= 7') - call assert_equal(['Reading from channel output...', 'line one', 'line two', 'this', 'AND this', 'that', 'AND that', 'Goodbye!'], getline(1, '$')) + call WaitForAssert({-> assert_equal(['Reading from channel output...', 'line one', 'line two', 'this', 'AND this', 'that', 'AND that', 'Goodbye!'], getline(1, '$'))}) bwipe! finally call job_stop(job) @@ -939,8 +925,7 @@ func Run_pipe_through_sort(all, use_buffer) call ch_close_in(g:job) endif - call WaitFor('job_status(g:job) == "dead"') - call assert_equal("dead", job_status(g:job)) + call WaitForAssert({-> assert_equal("dead", job_status(g:job))}) sp sortout call WaitFor('line("$") > 3') @@ -1222,16 +1207,14 @@ func Test_out_cb() let g:Ch_errmsg = '' call ch_sendraw(job, "echo [0, \"hello\"]\n") call ch_sendraw(job, "echoerr [0, \"there\"]\n") - call WaitFor('g:Ch_outmsg != ""') - call assert_equal("dict: hello", g:Ch_outmsg) - call WaitFor('g:Ch_errmsg != ""') - call assert_equal("dict: there", g:Ch_errmsg) + call WaitForAssert({-> assert_equal("dict: hello", g:Ch_outmsg)}) + call WaitForAssert({-> assert_equal("dict: there", g:Ch_errmsg)}) " Receive a json object split in pieces unlet! g:Ch_outobj call ch_sendraw(job, "echosplit [0, {\"one\": 1,| \"tw|o\": 2, \"three\": 3|}]\n") - call WaitFor('exists("g:Ch_outobj")') - call assert_equal({'one': 1, 'two': 2, 'three': 3}, g:Ch_outobj) + let g:Ch_outobj = '' + call WaitForAssert({-> assert_equal({'one': 1, 'two': 2, 'three': 3}, g:Ch_outobj)}) finally call job_stop(job) endtry @@ -1261,9 +1244,8 @@ func Test_out_close_cb() \ 'close_cb': 'CloseHandler'}) call assert_equal("run", job_status(job)) try - call WaitFor('g:Ch_closemsg != 0 && g:Ch_msg1 != ""') - call assert_equal('quit', g:Ch_msg1) - call assert_equal(2, g:Ch_closemsg) + call WaitForAssert({-> assert_equal('quit', g:Ch_msg1)}) + call WaitForAssert({-> assert_equal(2, g:Ch_closemsg)}) finally call job_stop(job) delfunc OutHandler @@ -1285,8 +1267,7 @@ func Test_read_in_close_cb() \ {'close_cb': 'CloseHandler'}) call assert_equal("run", job_status(job)) try - call WaitFor('g:Ch_received != ""') - call assert_equal('quit', g:Ch_received) + call WaitForAssert({-> assert_equal('quit', g:Ch_received)}) finally call job_stop(job) delfunc CloseHandler @@ -1310,8 +1291,7 @@ func Test_read_in_close_cb_incomplete() \ {'close_cb': 'CloseHandler'}) call assert_equal("run", job_status(job)) try - call WaitFor('g:Ch_received != ""') - call assert_equal('incomplete', g:Ch_received) + call WaitForAssert({-> assert_equal('incomplete', g:Ch_received)}) finally call job_stop(job) delfunc CloseHandler @@ -1335,10 +1315,8 @@ func Test_out_cb_lambda() let g:Ch_errmsg = '' call ch_sendraw(job, "echo [0, \"hello\"]\n") call ch_sendraw(job, "echoerr [0, \"there\"]\n") - call WaitFor('g:Ch_outmsg != ""') - call assert_equal("lambda: hello", g:Ch_outmsg) - call WaitFor('g:Ch_errmsg != ""') - call assert_equal("lambda: there", g:Ch_errmsg) + call WaitForAssert({-> assert_equal("lambda: hello", g:Ch_outmsg)}) + call WaitForAssert({-> assert_equal("lambda: there", g:Ch_errmsg)}) finally call job_stop(job) endtry @@ -1364,8 +1342,7 @@ func Test_close_and_exit_cb() \ }) call assert_equal('run', job_status(g:job)) unlet g:job - call WaitFor('len(g:retdict.ret) >= 2') - call assert_equal(2, len(g:retdict.ret)) + call WaitForAssert({-> assert_equal(2, len(g:retdict.ret))}) call assert_match('^\%(dead\|run\)', g:retdict.ret['close_cb']) call assert_equal('dead', g:retdict.ret['exit_cb']) unlet g:retdict @@ -1383,8 +1360,7 @@ endfunc func Ch_unlet_handle(port) let s:channelfd = ch_open('localhost:' . a:port, s:chopt) call ch_sendexpr(s:channelfd, "test", {'callback': function('s:UnletHandler')}) - call WaitFor('"what?" == g:Ch_unletResponse') - call assert_equal('what?', g:Ch_unletResponse) + call WaitForAssert({-> assert_equal('what?', g:Ch_unletResponse)}) endfunc func Test_unlet_handle() @@ -1404,8 +1380,7 @@ endfunc func Ch_close_handle(port) let s:channelfd = ch_open('localhost:' . a:port, s:chopt) call ch_sendexpr(s:channelfd, "test", {'callback': function('Ch_CloseHandler')}) - call WaitFor('"what?" == g:Ch_unletResponse') - call assert_equal('what?', g:Ch_unletResponse) + call WaitForAssert({-> assert_equal('what?', g:Ch_unletResponse)}) endfunc func Test_close_handle() @@ -1458,8 +1433,7 @@ function Ch_test_call(port) let g:Ch_call_ret = [] call assert_equal('ok', ch_evalexpr(handle, 'call-func')) - call WaitFor('len(g:Ch_call_ret) > 0') - call assert_equal([1, 2, 3], g:Ch_call_ret) + call WaitForAssert({-> assert_equal([1, 2, 3], g:Ch_call_ret)}) endfunc func Test_call() @@ -1556,8 +1530,7 @@ function Ch_test_close_callback(port) call ch_setoptions(handle, {'close_cb': 'MyCloseCb'}) call assert_equal('', ch_evalexpr(handle, 'close me')) - call WaitFor('"closed" == g:Ch_close_ret') - call assert_equal('closed', g:Ch_close_ret) + call WaitForAssert({-> assert_equal('closed', g:Ch_close_ret)}) endfunc func Test_close_callback() @@ -1578,8 +1551,7 @@ function Ch_test_close_partial(port) call ch_setoptions(handle, {'close_cb': g:Ch_d.closeCb}) call assert_equal('', ch_evalexpr(handle, 'close me')) - call WaitFor('"closed" == g:Ch_d.close_ret') - call assert_equal('closed', g:Ch_d.close_ret) + call WaitForAssert({-> assert_equal('closed', g:Ch_d.close_ret)}) unlet g:Ch_d endfunc @@ -1601,8 +1573,7 @@ func Test_job_stop_immediately() let g:job = job_start([s:python, '-c', 'import time;time.sleep(10)']) try call job_stop(g:job) - call WaitFor('"dead" == job_status(g:job)') - call assert_equal('dead', job_status(g:job)) + call WaitForAssert({-> assert_equal('dead', job_status(g:job))}) finally call job_stop(g:job, 'kill') unlet g:job @@ -1637,8 +1608,7 @@ func Test_collapse_buffers() split testout 1,$delete call job_start('cat test_channel.vim', {'out_io': 'buffer', 'out_name': 'testout'}) - call WaitFor('line("$") >= g:linecount') - call assert_inrange(g:linecount, g:linecount + 1, line('$')) + call WaitForAssert({-> assert_inrange(g:linecount, g:linecount + 1, line('$'))}) bwipe! endfunc @@ -1648,13 +1618,11 @@ func Test_cmd_parsing() endif call assert_false(filereadable("file with space")) let job = job_start('touch "file with space"') - call WaitFor('filereadable("file with space")') - call assert_true(filereadable("file with space")) + call WaitForAssert({-> assert_true(filereadable("file with space"))}) call delete("file with space") let job = job_start('touch file\ with\ space') - call WaitFor('filereadable("file with space")') - call assert_true(filereadable("file with space")) + call WaitForAssert({-> assert_true(filereadable("file with space"))}) call delete("file with space") endfunc @@ -1683,7 +1651,7 @@ func Test_raw_passes_nul() new mybuffer call setline(1, ["asdf\nasdf", "xxx\n", "\nyyy"]) let g:Ch_job = job_start('cat', {'in_io': 'buffer', 'in_name': 'mybuffer', 'out_io': 'file', 'out_name': 'Xtestwrite'}) - call WaitFor('"dead" == job_status(g:Ch_job)') + call WaitForAssert({-> assert_equal("dead", job_status(g:Ch_job))}) bwipe! split Xtestwrite call assert_equal("asdf\nasdf", getline(1)) @@ -1707,8 +1675,7 @@ func Test_read_nonl_line() let g:linecount = 0 let arg = 'import sys;sys.stdout.write("1\n2\n3")' call job_start([s:python, '-c', arg], {'callback': 'MyLineCountCb'}) - call WaitFor('3 <= g:linecount') - call assert_equal(3, g:linecount) + call WaitForAssert({-> assert_equal(3, g:linecount)}) endfunc func Test_read_from_terminated_job() @@ -1719,8 +1686,7 @@ func Test_read_from_terminated_job() let g:linecount = 0 let arg = 'import os,sys;os.close(1);sys.stderr.write("test\n")' call job_start([s:python, '-c', arg], {'callback': 'MyLineCountCb'}) - call WaitFor('1 <= g:linecount') - call assert_equal(1, g:linecount) + call WaitForAssert({-> assert_equal(1, g:linecount)}) endfunc func Test_env() @@ -1736,8 +1702,7 @@ func Test_env() endif call assert_fails('call job_start(cmd, {"env": 1})', 'E475:') call job_start(cmd, {'callback': {ch,msg -> execute(":let g:envstr .= msg")}, 'env': {'FOO': 'bar'}}) - call WaitFor('"" != g:envstr') - call assert_equal("bar", g:envstr) + call WaitForAssert({-> assert_equal("bar", g:envstr)}) unlet g:envstr endfunc @@ -1756,7 +1721,7 @@ func Test_cwd() endif let job = job_start(cmd, {'callback': {ch,msg -> execute(":let g:envstr .= msg")}, 'cwd': expect}) try - call WaitFor('"" != g:envstr') + call WaitForAssert({-> assert_notequal("", g:envstr)}) let expect = substitute(expect, '[/\\]$', '', '') let g:envstr = substitute(g:envstr, '[/\\]$', '', '') if $CI != '' && stridx(g:envstr, '/private/') == 0 @@ -1779,8 +1744,7 @@ function Ch_test_close_lambda(port) call ch_setoptions(handle, {'close_cb': {ch -> execute("let g:Ch_close_ret = 'closed'")}}) call assert_equal('', ch_evalexpr(handle, 'close me')) - call WaitFor('"closed" == g:Ch_close_ret') - call assert_equal('closed', g:Ch_close_ret) + call WaitForAssert({-> assert_equal('closed', g:Ch_close_ret)}) endfunc func Test_close_lambda() diff --git a/src/testdir/test_clientserver.vim b/src/testdir/test_clientserver.vim index b807ecc9e3..5c01ac46fe 100644 --- a/src/testdir/test_clientserver.vim +++ b/src/testdir/test_clientserver.vim @@ -28,12 +28,11 @@ func Test_client_server() let name = 'XVIMTEST' let cmd .= ' --servername ' . name let job = job_start(cmd, {'stoponexit': 'kill', 'out_io': 'null'}) - call WaitFor({-> job_status(job) == "run"}) + call WaitForAssert({-> assert_equal("run", job_status(job))}) " Takes a short while for the server to be active. " When using valgrind it takes much longer. - call WaitFor('serverlist() =~ "' . name . '"') - call assert_match(name, serverlist()) + call WaitForAssert({-> assert_match(name, serverlist())}) call remote_foreground(name) @@ -54,12 +53,10 @@ func Test_client_server() endif " Wait for the server to be up and answering requests. sleep 100m - call WaitFor('remote_expr("' . name . '", "v:version", "", 1) != ""') - call assert_true(remote_expr(name, "v:version", "", 1) != "") + call WaitForAssert({-> assert_true(remote_expr(name, "v:version", "", 1) != "")}) call remote_send(name, ":let testvar = 'maybe'\") - call WaitFor('remote_expr("' . name . '", "testvar", "", 1) == "maybe"') - call assert_equal('maybe', remote_expr(name, "testvar", "", 2)) + call WaitForAssert({-> assert_equal('maybe', remote_expr(name, "testvar", "", 2))}) endif call assert_fails('call remote_send("XXX", ":let testvar = ''yes''\")', 'E241') @@ -94,7 +91,7 @@ func Test_client_server() call remote_send(name, ":qa!\") try - call WaitFor({-> job_status(job) == "dead"}) + call WaitForAssert({-> assert_equal("dead", job_status(job))}) finally if job_status(job) != 'dead' call assert_report('Server did not exit') diff --git a/src/testdir/test_job_fails.vim b/src/testdir/test_job_fails.vim index 22637c0098..affcb7d0f7 100644 --- a/src/testdir/test_job_fails.vim +++ b/src/testdir/test_job_fails.vim @@ -8,9 +8,9 @@ func Test_job_start_fails() if has('job') let job = job_start('axdfxsdf') if has('unix') - call WaitFor({-> job_status(job) == "dead"}) + call WaitForAssert({-> assert_equal("dead", job_status(job))}) else - call WaitFor({-> job_status(job) == "fail"}) + call WaitForAssert({-> assert_equal("fail", job_status(job))}) endif endif endfunc diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim index 1b87895acb..07386a318a 100644 --- a/src/testdir/test_terminal.vim +++ b/src/testdir/test_terminal.vim @@ -83,8 +83,7 @@ func Test_terminal_wipe_buffer() let buf = Run_shell_in_terminal({}) call assert_fails(buf . 'bwipe', 'E517') exe buf . 'bwipe!' - call WaitFor('job_status(g:job) == "dead"') - call assert_equal('dead', job_status(g:job)) + call WaitForAssert({-> assert_equal('dead', job_status(g:job))}) call assert_equal("", bufname(buf)) unlet g:job @@ -100,7 +99,7 @@ func Test_terminal_split_quit() call assert_equal('run', job_status(g:job)) quit! - call WaitFor('job_status(g:job) == "dead"') + call WaitForAssert({-> assert_equal('dead', job_status(g:job))}) call assert_equal('dead', job_status(g:job)) exe buf . 'bwipe' diff --git a/src/version.c b/src/version.c index a824e8daa3..c7637a3fa4 100644 --- a/src/version.c +++ b/src/version.c @@ -761,6 +761,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1771, /**/ 1770, /**/ From 29ce409bfca52bb8a07e2975d06fd788458e9861 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 28 Apr 2018 21:56:44 +0200 Subject: [PATCH 04/20] patch 8.0.1772: quickfix: mixup of FALSE and FAIL, returning -1 Problem: Quickfix: mixup of FALSE and FAIL, returning -1. Solution: Use FAIL and INVALID_QFIDX. (Yegappan Lakshmanan) --- src/quickfix.c | 8 ++++---- src/version.c | 2 ++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/quickfix.c b/src/quickfix.c index cc6fe0a075..19127027ff 100644 --- a/src/quickfix.c +++ b/src/quickfix.c @@ -2351,7 +2351,7 @@ qf_jump_edit_buffer( if (!can_abandon(curbuf, forceit)) { no_write_message(); - retval = FALSE; + retval = FAIL; } else retval = do_ecmd(qf_ptr->qf_fnum, NULL, NULL, NULL, (linenr_T)1, @@ -2395,7 +2395,7 @@ qf_jump_edit_buffer( } if (*abort) - retval = FALSE; + retval = FAIL; } return retval; @@ -4172,7 +4172,7 @@ qf_id2nr(qf_info_T *qi, int_u qfid) for (qf_idx = 0; qf_idx < qi->qf_listcount; qf_idx++) if (qi->qf_lists[qf_idx].qf_id == qfid) return qf_idx; - return -1; + return INVALID_QFIDX; } /* @@ -4889,7 +4889,7 @@ get_errorlist(qf_info_T *qi_arg, win_T *wp, int qf_idx, list_T *list) } } - if (qf_idx == -1) + if (qf_idx == INVALID_QFIDX) qf_idx = qi->qf_curlist; if (qf_idx >= qi->qf_listcount diff --git a/src/version.c b/src/version.c index c7637a3fa4..40b5815b1f 100644 --- a/src/version.c +++ b/src/version.c @@ -761,6 +761,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1772, /**/ 1771, /**/ From c36651b4b946333dce0a916326d821d2562cf39d Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 29 Apr 2018 12:22:56 +0200 Subject: [PATCH 05/20] patch 8.0.1773: dialog messages are not translated Problem: Dialog messages are not translated. Solution: Add N_() and _() where needed. (Sergey Alyoshin) --- src/diff.c | 3 ++- src/ex_cmds2.c | 3 ++- src/ex_docmd.c | 6 ++++-- src/message.c | 2 +- src/po/Make_cyg.mak | 4 ++-- src/po/Make_ming.mak | 4 ++-- src/po/Make_mvc.mak | 2 +- src/po/Makefile | 4 ++-- src/quickfix.c | 3 ++- src/version.c | 2 ++ src/vim.h | 12 ++++++------ 11 files changed, 26 insertions(+), 19 deletions(-) diff --git a/src/diff.c b/src/diff.c index b69b69e31d..cc9e6de8fd 100644 --- a/src/diff.c +++ b/src/diff.c @@ -909,7 +909,8 @@ ex_diffpatch(exarg_T *eap) if (cmdmod.browse) { browseFile = do_browse(0, (char_u *)_("Patch file"), - eap->arg, NULL, NULL, BROWSE_FILTER_ALL_FILES, NULL); + eap->arg, NULL, NULL, + (char_u *)_(BROWSE_FILTER_ALL_FILES), NULL); if (browseFile == NULL) return; /* operation cancelled */ eap->arg = browseFile; diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c index 69283d693c..7fa4907bda 100644 --- a/src/ex_cmds2.c +++ b/src/ex_cmds2.c @@ -4140,7 +4140,8 @@ ex_source(exarg_T *eap) char_u *fname = NULL; fname = do_browse(0, (char_u *)_("Source Vim script"), eap->arg, - NULL, NULL, BROWSE_FILTER_MACROS, NULL); + NULL, NULL, + (char_u *)_(BROWSE_FILTER_MACROS), NULL); if (fname != NULL) { cmd_source(fname, eap); diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 29270ad488..66d2ad6d7b 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -9619,7 +9619,8 @@ ex_redir(exarg_T *eap) browseFile = do_browse(BROWSE_SAVE, (char_u *)_("Save Redirection"), - fname, NULL, NULL, BROWSE_FILTER_ALL_FILES, curbuf); + fname, NULL, NULL, + (char_u *)_(BROWSE_FILTER_ALL_FILES), curbuf); if (browseFile == NULL) return; /* operation cancelled */ vim_free(fname); @@ -9845,7 +9846,8 @@ ex_mkrc( eap->cmdidx == CMD_mksession ? (char_u *)_("Save Session") : # endif (char_u *)_("Save Setup"), - fname, (char_u *)"vim", NULL, BROWSE_FILTER_MACROS, NULL); + fname, (char_u *)"vim", NULL, + (char_u *)_(BROWSE_FILTER_MACROS), NULL); if (browseFile == NULL) goto theend; fname = browseFile; diff --git a/src/message.c b/src/message.c index 25c22f63e5..f9ae0e91f0 100644 --- a/src/message.c +++ b/src/message.c @@ -4057,7 +4057,7 @@ do_browse( } else fname = gui_mch_browse(flags & BROWSE_SAVE, - title, dflt, ext, initdir, filter); + title, dflt, ext, initdir, (char_u *)_(filter)); /* We hang around in the dialog for a while, the user might do some * things to our files. The Win32 dialog allows deleting or renaming diff --git a/src/po/Make_cyg.mak b/src/po/Make_cyg.mak index 4ee21a1507..5f6f6cca35 100644 --- a/src/po/Make_cyg.mak +++ b/src/po/Make_cyg.mak @@ -130,11 +130,11 @@ all: $(MOFILES) first_time: $(XGETTEXT) --default-domain=$(LANGUAGE) \ - --add-comments --keyword=_ --keyword=N_ --keyword=NGETTEXT:1,2 $(wildcard ../*.c) ../if_perl.xs ../GvimExt/gvimext.cpp $(wildcard ../globals.h) ../if_py_both.h + --add-comments --keyword=_ --keyword=N_ --keyword=NGETTEXT:1,2 $(wildcard ../*.c) ../if_perl.xs ../GvimExt/gvimext.cpp $(wildcard ../globals.h) ../if_py_both.h ../vim.h $(LANGUAGES): $(XGETTEXT) --default-domain=$(PACKAGE) \ - --add-comments --keyword=_ --keyword=N_ --keyword=NGETTEXT:1,2 $(wildcard ../*.c) ../if_perl.xs ../GvimExt/gvimext.cpp $(wildcard ../globals.h) ../if_py_both.h + --add-comments --keyword=_ --keyword=N_ --keyword=NGETTEXT:1,2 $(wildcard ../*.c) ../if_perl.xs ../GvimExt/gvimext.cpp $(wildcard ../globals.h) ../if_py_both.h ../vim.h $(MV) $(PACKAGE).po $(PACKAGE).pot $(CP) $@.po $@.po.orig $(MV) $@.po $@.po.old diff --git a/src/po/Make_ming.mak b/src/po/Make_ming.mak index 6973ad79c8..70b2c1efad 100644 --- a/src/po/Make_ming.mak +++ b/src/po/Make_ming.mak @@ -139,11 +139,11 @@ all: $(MOFILES) first_time: $(XGETTEXT) --default-domain=$(LANGUAGE) \ - --add-comments --keyword=_ --keyword=N_ --keyword=NGETTEXT:1,2 $(wildcard ../*.c) ../if_perl.xs ../GvimExt/gvimext.cpp $(wildcard ../globals.h) ../if_py_both.h + --add-comments --keyword=_ --keyword=N_ --keyword=NGETTEXT:1,2 $(wildcard ../*.c) ../if_perl.xs ../GvimExt/gvimext.cpp $(wildcard ../globals.h) ../if_py_both.h ../vim.h $(LANGUAGES): $(XGETTEXT) --default-domain=$(PACKAGE) \ - --add-comments --keyword=_ --keyword=N_ --keyword=NGETTEXT:1,2 $(wildcard ../*.c) ../if_perl.xs ../GvimExt/gvimext.cpp $(wildcard ../globals.h) ../if_py_both.h + --add-comments --keyword=_ --keyword=N_ --keyword=NGETTEXT:1,2 $(wildcard ../*.c) ../if_perl.xs ../GvimExt/gvimext.cpp $(wildcard ../globals.h) ../if_py_both.h ../vim.h $(MV) $(PACKAGE).po $(PACKAGE).pot $(CP) $@.po $@.po.orig $(MV) $@.po $@.po.old diff --git a/src/po/Make_mvc.mak b/src/po/Make_mvc.mak index 0f0adebb6e..0748bdf06b 100644 --- a/src/po/Make_mvc.mak +++ b/src/po/Make_mvc.mak @@ -119,7 +119,7 @@ INSTALLDIR = $(VIMRUNTIME)\lang\$(LANGUAGE)\LC_MESSAGES all: $(MOFILES) files: - $(LS) $(LSFLAGS) ..\*.c ..\if_perl.xs ..\GvimExt\gvimext.cpp ..\globals.h ..\if_py_both.h > .\files + $(LS) $(LSFLAGS) ..\*.c ..\if_perl.xs ..\GvimExt\gvimext.cpp ..\globals.h ..\if_py_both.h ..\vim.h > .\files first_time: files set OLD_PO_FILE_INPUT=yes diff --git a/src/po/Makefile b/src/po/Makefile index fc78c43086..386cb64433 100644 --- a/src/po/Makefile +++ b/src/po/Makefile @@ -281,10 +281,10 @@ distclean: clean checkclean: rm -f *.ck -$(PACKAGE).pot: ../*.c ../if_perl.xs ../GvimExt/gvimext.cpp ../globals.h ../if_py_both.h +$(PACKAGE).pot: ../*.c ../if_perl.xs ../GvimExt/gvimext.cpp ../globals.h ../if_py_both.h ../vim.h cd ..; $(XGETTEXT) --default-domain=$(PACKAGE) \ --add-comments --keyword=_ --keyword=N_ --keyword=NGETTEXT:1,2 \ - *.c if_perl.xs GvimExt/gvimext.cpp globals.h if_py_both.h + *.c if_perl.xs GvimExt/gvimext.cpp globals.h if_py_both.h vim.h mv -f ../$(PACKAGE).po $(PACKAGE).pot update-po: $(LANGUAGES) diff --git a/src/quickfix.c b/src/quickfix.c index 19127027ff..acff1ec703 100644 --- a/src/quickfix.c +++ b/src/quickfix.c @@ -4115,7 +4115,8 @@ ex_cfile(exarg_T *eap) if (cmdmod.browse) { char_u *browse_file = do_browse(0, (char_u *)_("Error file"), eap->arg, - NULL, NULL, BROWSE_FILTER_ALL_FILES, NULL); + NULL, NULL, + (char_u *)_(BROWSE_FILTER_ALL_FILES), NULL); if (browse_file == NULL) return; set_string_option_direct((char_u *)"ef", -1, browse_file, OPT_FREE, 0); diff --git a/src/version.c b/src/version.c index 40b5815b1f..5d75dabf57 100644 --- a/src/version.c +++ b/src/version.c @@ -761,6 +761,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1773, /**/ 1772, /**/ diff --git a/src/vim.h b/src/vim.h index 985a4926d7..af01f1a51b 100644 --- a/src/vim.h +++ b/src/vim.h @@ -2186,16 +2186,16 @@ typedef enum { #ifdef FEAT_BROWSE # ifdef BACKSLASH_IN_FILENAME # define BROWSE_FILTER_MACROS \ - (char_u *)"Vim macro files (*.vim)\t*.vim\nAll Files (*.*)\t*.*\n" -# define BROWSE_FILTER_ALL_FILES (char_u *)"All Files (*.*)\t*.*\n" + (char_u *)N_("Vim macro files (*.vim)\t*.vim\nAll Files (*.*)\t*.*\n") +# define BROWSE_FILTER_ALL_FILES (char_u *)N_("All Files (*.*)\t*.*\n") # define BROWSE_FILTER_DEFAULT \ - (char_u *)"All Files (*.*)\t*.*\nC source (*.c, *.h)\t*.c;*.h\nC++ source (*.cpp, *.hpp)\t*.cpp;*.hpp\nVB code (*.bas, *.frm)\t*.bas;*.frm\nVim files (*.vim, _vimrc, _gvimrc)\t*.vim;_vimrc;_gvimrc\n" + (char_u *)N_("All Files (*.*)\t*.*\nC source (*.c, *.h)\t*.c;*.h\nC++ source (*.cpp, *.hpp)\t*.cpp;*.hpp\nVB code (*.bas, *.frm)\t*.bas;*.frm\nVim files (*.vim, _vimrc, _gvimrc)\t*.vim;_vimrc;_gvimrc\n") # else # define BROWSE_FILTER_MACROS \ - (char_u *)"Vim macro files (*.vim)\t*.vim\nAll Files (*)\t*\n" -# define BROWSE_FILTER_ALL_FILES (char_u *)"All Files (*)\t*\n" + (char_u *)N_("Vim macro files (*.vim)\t*.vim\nAll Files (*)\t*\n") +# define BROWSE_FILTER_ALL_FILES (char_u *)N_("All Files (*)\t*\n") # define BROWSE_FILTER_DEFAULT \ - (char_u *)"All Files (*)\t*\nC source (*.c, *.h)\t*.c;*.h\nC++ source (*.cpp, *.hpp)\t*.cpp;*.hpp\nVim files (*.vim, _vimrc, _gvimrc)\t*.vim;_vimrc;_gvimrc\n" + (char_u *)N_("All Files (*)\t*\nC source (*.c, *.h)\t*.c;*.h\nC++ source (*.cpp, *.hpp)\t*.cpp;*.hpp\nVim files (*.vim, _vimrc, _gvimrc)\t*.vim;_vimrc;_gvimrc\n") # endif # define BROWSE_SAVE 1 /* flag for do_browse() */ # define BROWSE_DIR 2 /* flag for do_browse() */ From 13d3b05ed2cf9a54b18b4e8236f0af2c5386200c Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 29 Apr 2018 13:34:47 +0200 Subject: [PATCH 06/20] patch 8.0.1774: reading very long lines can be slow Problem: Reading very long lines can be slow. Solution: Read up to 1 Mbyte at a time to avoid a lot of copying. Add a check for going over the column limit. --- src/fileio.c | 38 ++++++++++++++++++++++++++------------ src/version.c | 2 ++ 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/src/fileio.c b/src/fileio.c index 35f4fd2c2b..6b48c39d32 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -1209,28 +1209,42 @@ retry: * The amount is limited by the fact that read() only can read * upto max_unsigned characters (and other things). */ + if (!skip_read) + { +#if VIM_SIZEOF_INT > 2 +# if defined(SSIZE_MAX) && (SSIZE_MAX < 0x10000L) + size = SSIZE_MAX; /* use max I/O size, 52K */ +# else + /* Use buffer >= 64K. Add linerest to double the size if the + * line gets very long, to avoid a lot of copying. But don't + * read more than 1 Mbyte at a time, so we can be interrupted. + */ + size = 0x10000L + linerest; + if (size > 0x100000L) + size = 0x100000L; +# endif +#else + size = 0x7ff0L - linerest; /* limit buffer to 32K */ +#endif + } + + /* Protect against the argument of lalloc() going negative. */ + if ( #if VIM_SIZEOF_INT <= 2 - if (linerest >= 0x7ff0) + linerest >= 0x7ff0 +#else + size < 0 || size + linerest + 1 < 0 || linerest >= MAXCOL +#endif + ) { ++split; *ptr = NL; /* split line by inserting a NL */ size = 1; } else -#endif { if (!skip_read) { -#if VIM_SIZEOF_INT > 2 -# if defined(SSIZE_MAX) && (SSIZE_MAX < 0x10000L) - size = SSIZE_MAX; /* use max I/O size, 52K */ -# else - size = 0x10000L; /* use buffer >= 64K */ -# endif -#else - size = 0x7ff0L - linerest; /* limit buffer to 32K */ -#endif - for ( ; size >= 10; size = (long)((long_u)size >> 1)) { if ((new_buffer = lalloc((long_u)(size + linerest + 1), diff --git a/src/version.c b/src/version.c index 5d75dabf57..10e446a69d 100644 --- a/src/version.c +++ b/src/version.c @@ -761,6 +761,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1774, /**/ 1773, /**/ From 850d427f070a61267ef384a449992e72d2bea12c Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Mon, 30 Apr 2018 10:38:40 +0200 Subject: [PATCH 07/20] patch 8.0.1775: MS-Windows: warning for unused variable Problem: MS-Windows: warning for unused variable. Solution: Move declaration inside #ifdef. (Mike Williams) --- src/channel.c | 2 +- src/version.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/channel.c b/src/channel.c index 2c82efa723..67be1d75ee 100644 --- a/src/channel.c +++ b/src/channel.c @@ -5496,12 +5496,12 @@ job_start(typval_T *argvars, char **argv_arg, jobopt_T *opt_arg) int argc = 0; #if defined(UNIX) # define USE_ARGV + int i; #else garray_T ga; #endif jobopt_T opt; ch_part_T part; - int i; job = job_alloc(); if (job == NULL) diff --git a/src/version.c b/src/version.c index 10e446a69d..06b9af842d 100644 --- a/src/version.c +++ b/src/version.c @@ -761,6 +761,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1775, /**/ 1774, /**/ From 0e9d1ae3216a5940b36bb56d155fb300b2e55b00 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Mon, 30 Apr 2018 14:28:24 +0200 Subject: [PATCH 08/20] patch 8.0.1776: in tests, when WaitFor() fails it doesn't say why Problem: In tests, when WaitFor() fails it doesn't say why. Solution: Turn a few more WaitFor() into WaitForAssert(). --- src/testdir/test_popup.vim | 9 +-- src/testdir/test_quotestar.vim | 22 ++++--- src/testdir/test_search.vim | 4 +- src/testdir/test_terminal.vim | 103 ++++++++++++++------------------- src/testdir/test_timers.vim | 6 +- src/version.c | 2 + 6 files changed, 65 insertions(+), 81 deletions(-) diff --git a/src/testdir/test_popup.vim b/src/testdir/test_popup.vim index ed31985856..d682dd2110 100644 --- a/src/testdir/test_popup.vim +++ b/src/testdir/test_popup.vim @@ -649,18 +649,15 @@ func Test_popup_and_window_resize() call term_sendkeys(buf, "\") call term_wait(buf, 100) " popup first entry "!" must be at the top - call WaitFor({-> term_getline(buf, 1) =~ "^!"}) - call assert_match('^!\s*$', term_getline(buf, 1)) + call WaitForAssert({-> assert_match('^!\s*$', term_getline(buf, 1))}) exe 'resize +' . (h - 1) call term_wait(buf, 100) redraw! " popup shifted down, first line is now empty - call WaitFor({-> term_getline(buf, 1) == ""}) - call assert_equal('', term_getline(buf, 1)) + call WaitForAssert({-> assert_equal('', term_getline(buf, 1))}) sleep 100m " popup is below cursor line and shows first match "!" - call WaitFor({-> term_getline(buf, term_getcursor(buf)[0] + 1) =~ "^!"}) - call assert_match('^!\s*$', term_getline(buf, term_getcursor(buf)[0] + 1)) + call WaitForAssert({-> assert_match('^!\s*$', term_getline(buf, term_getcursor(buf)[0] + 1))}) " cursor line also shows ! call assert_match('^!\s*$', term_getline(buf, term_getcursor(buf)[0])) bwipe! diff --git a/src/testdir/test_quotestar.vim b/src/testdir/test_quotestar.vim index b83fbe40e8..ce5a9ee827 100644 --- a/src/testdir/test_quotestar.vim +++ b/src/testdir/test_quotestar.vim @@ -54,34 +54,33 @@ func Do_test_quotestar_for_x11() " Make sure a previous server has exited try call remote_send(name, ":qa!\") - call WaitFor('serverlist() !~ "' . name . '"') catch /E241:/ endtry - call assert_notmatch(name, serverlist()) + call WaitForAssert({-> assert_notmatch(name, serverlist())}) let cmd .= ' --servername ' . name let job = job_start(cmd, {'stoponexit': 'kill', 'out_io': 'null'}) - call WaitFor({-> job_status(job) == "run"}) + call WaitForAssert({-> assert_equal("run", job_status(job))}) " Takes a short while for the server to be active. - call WaitFor('serverlist() =~ "' . name . '"') + call WaitForAssert({-> assert_match(name, serverlist())}) " Wait for the server to be up and answering requests. One second is not " always sufficient. - call WaitFor('remote_expr("' . name . '", "v:version", "", 2) != ""') + call WaitForAssert({-> assert_notequal('', remote_expr(name, "v:version", "", 2))}) " Clear the *-register of this vim instance and wait for it to be picked up " by the server. let @* = 'no' call remote_foreground(name) - call WaitFor('remote_expr("' . name . '", "@*", "", 1) == "no"') + call WaitForAssert({-> assert_equal("no", remote_expr(name, "@*", "", 1))}) " Set the * register on the server. call remote_send(name, ":let @* = 'yes'\") - call WaitFor('remote_expr("' . name . '", "@*", "", 1) == "yes"') + call WaitForAssert({-> assert_equal("yes", remote_expr(name, "@*", "", 1))}) " Check that the *-register of this vim instance is changed as expected. - call WaitFor('@* == "yes"') + call WaitForAssert({-> assert_equal("yes", @*)}) " Handle the large selection over 262040 byte. let length = 262044 @@ -109,18 +108,17 @@ func Do_test_quotestar_for_x11() call remote_send(name, ":gui -f\") endif " Wait for the server in the GUI to be up and answering requests. - call WaitFor('remote_expr("' . name . '", "has(\"gui_running\")", "", 1) =~ "1"') + call WaitForAssert({-> assert_match("1", remote_expr(name, "has('gui_running')", "", 1))}) call remote_send(name, ":let @* = 'maybe'\") - call WaitFor('remote_expr("' . name . '", "@*", "", 1) == "maybe"') - call assert_equal('maybe', remote_expr(name, "@*", "", 2)) + call WaitForAssert({-> assert_equal("maybe", remote_expr(name, "@*", "", 2))}) call assert_equal('maybe', @*) endif call remote_send(name, ":qa!\") try - call WaitFor({-> job_status(job) == "dead"}) + call WaitForAssert({-> assert_equal("dead", job_status(job))}) finally if job_status(job) != 'dead' call assert_report('Server did not exit') diff --git a/src/testdir/test_search.vim b/src/testdir/test_search.vim index 93a03434c0..c923e9d402 100644 --- a/src/testdir/test_search.vim +++ b/src/testdir/test_search.vim @@ -494,7 +494,7 @@ func Test_search_cmdline8() call writefile(lines, 'Xsearch.txt') let buf = term_start([GetVimProg(), '--clean', '-c', 'set noswapfile', 'Xsearch.txt'], {'term_rows': 3}) - call WaitFor({-> lines == [term_getline(buf, 1), term_getline(buf, 2)] }) + call WaitForAssert({-> assert_equal(lines, [term_getline(buf, 1), term_getline(buf, 2)])}) call term_sendkeys(buf, ":set incsearch hlsearch\") call term_sendkeys(buf, ":14vsp\") @@ -619,7 +619,7 @@ func Test_search_cmdline_incsearch_highlight_attr() call writefile(lines, 'Xsearch.txt') let buf = term_start([GetVimProg(), '--clean', '-c', 'set noswapfile', 'Xsearch.txt'], {'term_rows': 3}) - call WaitFor({-> lines == [term_getline(buf, 1), term_getline(buf, 2)] }) + call WaitForAssert({-> assert_equal(lines, [term_getline(buf, 1), term_getline(buf, 2)])}) " wait for vim to complete initialization call term_wait(buf) diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim index 07386a318a..c9d4637155 100644 --- a/src/testdir/test_terminal.vim +++ b/src/testdir/test_terminal.vim @@ -100,7 +100,6 @@ func Test_terminal_split_quit() quit! call WaitForAssert({-> assert_equal('dead', job_status(g:job))}) - call assert_equal('dead', job_status(g:job)) exe buf . 'bwipe' unlet g:job @@ -142,8 +141,8 @@ func Test_terminal_nasty_cb() let g:buf = term_start(cmd, {'exit_cb': function('s:Nasty_exit_cb')}) let g:job = term_getjob(g:buf) - call WaitFor('job_status(g:job) == "dead"') - call WaitFor('g:buf == 0') + call WaitForAssert({-> assert_equal("dead", job_status(g:job))}) + call WaitForAssert({-> assert_equal(0, g:buf)}) unlet g:buf unlet g:job call delete('Xtext') @@ -190,12 +189,12 @@ func Test_terminal_scrape_123() call term_wait(buf) " On MS-Windows we first get a startup message of two lines, wait for the " "cls" to happen, after that we have one line with three characters. - call WaitFor({-> len(term_scrape(buf, 1)) == 3}) + call WaitForAssert({-> assert_equal(3, len(term_scrape(buf, 1)))}) call Check_123(buf) " Must still work after the job ended. let job = term_getjob(buf) - call WaitFor({-> job_status(job) == "dead"}) + call WaitForAssert({-> assert_equal("dead", job_status(job))}) call term_wait(buf) call Check_123(buf) @@ -234,7 +233,7 @@ func Test_terminal_scrape_multibyte() call assert_equal('s', l[6].chars) let job = term_getjob(buf) - call WaitFor({-> job_status(job) == "dead"}) + call WaitForAssert({-> assert_equal("dead", job_status(job))}) call term_wait(buf) exe buf . 'bwipe' @@ -251,7 +250,7 @@ func Test_terminal_scroll() let buf = term_start(cmd) let job = term_getjob(buf) - call WaitFor({-> job_status(job) == "dead"}) + call WaitForAssert({-> assert_equal("dead", job_status(job))}) call term_wait(buf) if has('win32') " TODO: this should not be needed @@ -281,7 +280,7 @@ func Test_terminal_scrollback() endif let rows = term_getsize(buf)[0] " On MS-Windows there is an empty line, check both last line and above it. - call WaitFor({-> term_getline(buf, rows - 1) . term_getline(buf, rows - 2) =~ '149'}) + call WaitForAssert({-> assert_match( '149', term_getline(buf, rows - 1) . term_getline(buf, rows - 2))}) let lines = line('$') call assert_inrange(91, 100, lines) @@ -408,16 +407,16 @@ func Test_terminal_finish_open_close() let buf = bufnr('%') call assert_equal(2, winnr('$')) " Wait for the shell to display a prompt - call WaitFor({-> term_getline(buf, 1) != ""}) + call WaitForAssert({-> assert_notequal('', term_getline(buf, 1))}) call Stop_shell_in_terminal(buf) - call WaitFor("winnr('$') == 1", waittime) + call WaitForAssert({-> assert_equal(1, winnr('$'))}, waittime) " shell terminal that does not close automatically terminal ++noclose let buf = bufnr('%') call assert_equal(2, winnr('$')) " Wait for the shell to display a prompt - call WaitFor({-> term_getline(buf, 1) != ""}) + call WaitForAssert({-> assert_notequal('', term_getline(buf, 1))}) call Stop_shell_in_terminal(buf) call assert_equal(2, winnr('$')) quit @@ -426,36 +425,32 @@ func Test_terminal_finish_open_close() exe 'terminal ++close ' . cmd call assert_equal(2, winnr('$')) wincmd p - call WaitFor("winnr('$') == 1", waittime) + call WaitForAssert({-> assert_equal(1, winnr('$'))}, waittime) call term_start(cmd, {'term_finish': 'close'}) call assert_equal(2, winnr('$')) wincmd p - call WaitFor("winnr('$') == 1", waittime) + call WaitForAssert({-> assert_equal(1, winnr('$'))}, waittime) call assert_equal(1, winnr('$')) exe 'terminal ++open ' . cmd close! - call WaitFor("winnr('$') == 2", waittime) - call assert_equal(2, winnr('$')) + call WaitForAssert({-> assert_equal(2, winnr('$'))}, waittime) bwipe call term_start(cmd, {'term_finish': 'open'}) close! - call WaitFor("winnr('$') == 2", waittime) - call assert_equal(2, winnr('$')) + call WaitForAssert({-> assert_equal(2, winnr('$'))}, waittime) bwipe exe 'terminal ++hidden ++open ' . cmd call assert_equal(1, winnr('$')) - call WaitFor("winnr('$') == 2", waittime) - call assert_equal(2, winnr('$')) + call WaitForAssert({-> assert_equal(2, winnr('$'))}, waittime) bwipe call term_start(cmd, {'term_finish': 'open', 'hidden': 1}) call assert_equal(1, winnr('$')) - call WaitFor("winnr('$') == 2", waittime) - call assert_equal(2, winnr('$')) + call WaitForAssert({-> assert_equal(2, winnr('$'))}, waittime) bwipe call assert_fails("call term_start(cmd, {'term_opencmd': 'open'})", 'E475:') @@ -465,8 +460,7 @@ func Test_terminal_finish_open_close() call term_start(cmd, {'term_finish': 'open', 'term_opencmd': '4split | buffer %d'}) close! - call WaitFor("winnr('$') == 2", waittime) - call assert_equal(2, winnr('$')) + call WaitForAssert({-> assert_equal(2, winnr('$'))}, waittime) call assert_equal(4, winheight(0)) bwipe endfunc @@ -477,8 +471,7 @@ func Test_terminal_cwd() endif call mkdir('Xdir') let buf = term_start('pwd', {'cwd': 'Xdir'}) - call WaitFor('"Xdir" == fnamemodify(getline(1), ":t")') - call assert_equal('Xdir', fnamemodify(getline(1), ":t")) + call WaitForAssert({-> assert_equal('Xdir', fnamemodify(getline(1), ":t"))}) exe buf . 'bwipe' call delete('Xdir', 'rf') @@ -490,7 +483,7 @@ func Test_terminal_servername() endif let buf = Run_shell_in_terminal({}) " Wait for the shell to display a prompt - call WaitFor({-> term_getline(buf, 1) != ""}) + call WaitForAssert({-> assert_notequal('', term_getline(buf, 1))}) if has('win32') call term_sendkeys(buf, "echo %VIM_SERVERNAME%\r") else @@ -508,7 +501,7 @@ endfunc func Test_terminal_env() let buf = Run_shell_in_terminal({'env': {'TESTENV': 'correct'}}) " Wait for the shell to display a prompt - call WaitFor({-> term_getline(buf, 1) != ""}) + call WaitForAssert({-> assert_notequal('', term_getline(buf, 1))}) if has('win32') call term_sendkeys(buf, "echo %TESTENV%\r") else @@ -516,8 +509,7 @@ func Test_terminal_env() endif call term_wait(buf) call Stop_shell_in_terminal(buf) - call WaitFor('getline(2) == "correct"') - call assert_equal('correct', getline(2)) + call WaitForAssert({-> assert_equal('correct', getline(2))}) exe buf . 'bwipe' endfunc @@ -539,8 +531,7 @@ func Test_zz_terminal_in_gui() call term_wait(buf) " closing window wipes out the terminal buffer a with finished job - call WaitFor("winnr('$') == 1") - call assert_equal(1, winnr('$')) + call WaitForAssert({-> assert_equal(1, winnr('$'))}) call assert_equal("", bufname(buf)) unlet g:job @@ -592,7 +583,7 @@ func Test_terminal_write_stdin() new call setline(1, ['one', 'two', 'three']) %term wc - call WaitFor('getline("$") =~ "3"') + call WaitForAssert({-> assert_match('3', getline("$"))}) let nrs = split(getline('$')) call assert_equal(['3', '3', '14'], nrs) bwipe @@ -600,7 +591,7 @@ func Test_terminal_write_stdin() new call setline(1, ['one', 'two', 'three', 'four']) 2,3term wc - call WaitFor('getline("$") =~ "2"') + call WaitForAssert({-> assert_match('2', getline("$"))}) let nrs = split(getline('$')) call assert_equal(['2', '2', '10'], nrs) bwipe @@ -622,7 +613,7 @@ func Test_terminal_write_stdin() new call setline(1, ['print("hello")']) 1term ++eof= python - call WaitFor('getline("$") =~ "Z"') + call WaitForAssert({-> assert_match('Z', getline("$"))}) call assert_equal('hello', getline(line('$') - 1)) bwipe endif @@ -646,9 +637,8 @@ func Test_terminal_no_cmd() else call system('echo "look here" > ' . pty) endif - call WaitFor({-> term_getline(buf, 1) =~ "look here"}) + call WaitForAssert({-> assert_match('look here', term_getline(buf, 1))}) - call assert_match('look here', term_getline(buf, 1)) bwipe! endfunc @@ -660,8 +650,7 @@ func Test_terminal_special_chars() call mkdir('Xdir with spaces') call writefile(['x'], 'Xdir with spaces/quoted"file') term ls Xdir\ with\ spaces/quoted\"file - call WaitFor('term_getline("", 1) =~ "quoted"') - call assert_match('quoted"file', term_getline('', 1)) + call WaitForAssert({-> assert_match('quoted"file', term_getline('', 1))}) call term_wait('') call delete('Xdir with spaces', 'rf') @@ -691,10 +680,10 @@ func Test_terminal_redir_file() let cmd = Get_cat_123_cmd() let buf = term_start(cmd, {'out_io': 'file', 'out_name': 'Xfile'}) call term_wait(buf) - call WaitFor('len(readfile("Xfile")) > 0') + call WaitForAssert({-> assert_notequal(0, len(readfile("Xfile")))}) call assert_match('123', readfile('Xfile')[0]) let g:job = term_getjob(buf) - call WaitFor('job_status(g:job) == "dead"') + call WaitForAssert({-> assert_equal("dead", job_status(g:job))}) call delete('Xfile') bwipe endif @@ -703,10 +692,9 @@ func Test_terminal_redir_file() call writefile(['one line'], 'Xfile') let buf = term_start('cat', {'in_io': 'file', 'in_name': 'Xfile'}) call term_wait(buf) - call WaitFor('term_getline(' . buf . ', 1) == "one line"') - call assert_equal('one line', term_getline(buf, 1)) + call WaitForAssert({-> assert_equal('one line', term_getline(buf, 1))}) let g:job = term_getjob(buf) - call WaitFor('job_status(g:job) == "dead"') + call WaitForAssert({-> assert_equal('dead', job_status(g:job))}) bwipe call delete('Xfile') endif @@ -726,7 +714,7 @@ func TerminalTmap(remap) call assert_equal('456', maparg('123', 't')) call assert_equal('abxde', maparg('456', 't')) call feedkeys("123", 'tx') - call WaitFor({-> term_getline(buf, term_getcursor(buf)[0]) =~ 'abxde\|456'}) + call WaitForAssert({-> assert_match('abxde\|456', term_getline(buf, term_getcursor(buf)[0]))}) let lnum = term_getcursor(buf)[0] if a:remap call assert_match('abxde', term_getline(buf, lnum)) @@ -825,8 +813,7 @@ func Test_terminal_composing_unicode() call assert_equal("\u00a0\u0308", l[3].chars) call term_sendkeys(buf, "exit\r") - call WaitFor('job_status(g:job) == "dead"') - call assert_equal('dead', job_status(g:job)) + call WaitForAssert({-> assert_equal('dead', job_status(g:job))}) bwipe! unlet g:job let &encoding = save_enc @@ -849,7 +836,7 @@ func Test_terminal_aucmd_on_close() call setline(1, ['one', 'two']) exe 'term ++close ' . cmd wincmd p - call WaitFor("winnr('$') == 2", waittime) + call WaitForAssert({-> assert_equal(2, winnr('$'))}, waittime) call assert_equal(1, s:called) bwipe! @@ -875,16 +862,16 @@ func Test_terminal_response_to_control_sequence() endif let buf = Run_shell_in_terminal({}) - call WaitFor({-> term_getline(buf, 1) != ''}) + call WaitForAssert({-> assert_notequal('', term_getline(buf, 1))}) call term_sendkeys(buf, "cat\") - call WaitFor({-> term_getline(buf, 1) =~ 'cat'}) + call WaitForAssert({-> assert_match('cat', term_getline(buf, 1))}) " Request the cursor position. call term_sendkeys(buf, "\x1b[6n\") " Wait for output from tty to display, below an empty line. - call WaitFor({-> term_getline(buf, 4) =~ '3;1R'}) + call WaitForAssert({-> assert_match('3;1R', term_getline(buf, 4))}) " End "cat" gently. call term_sendkeys(buf, "\\") @@ -961,14 +948,14 @@ func Test_terminal_qall_prompt() " Open a terminal window and wait for the prompt to appear call term_sendkeys(buf, ":term\") - call WaitFor({-> term_getline(buf, 10) =~ '\[running]'}) - call WaitFor({-> term_getline(buf, 1) !~ '^\s*$'}) + call WaitForAssert({-> assert_match('\[running]', term_getline(buf, 10))}) + call WaitForAssert({-> assert_notmatch('^\s*$', term_getline(buf, 1))}) " make Vim exit, it will prompt to kill the shell call term_sendkeys(buf, "\:confirm qall\") - call WaitFor({-> term_getline(buf, 20) =~ 'ancel:'}) + call WaitForAssert({-> assert_match('ancel:', term_getline(buf, 20))}) call term_sendkeys(buf, "y") - call WaitFor({-> term_getstatus(buf) == "finished"}) + call WaitForAssert({-> assert_equal('finished', term_getstatus(buf))}) " close the terminal window where Vim was running quit @@ -1025,7 +1012,7 @@ func Test_terminal_dumpwrite_composing() let text = " a\u0300 e\u0302 o\u0308" call writefile([text], 'Xcomposing') let buf = RunVimInTerminal('Xcomposing', {}) - call WaitFor({-> term_getline(buf, 1) =~ text}) + call WaitForAssert({-> assert_match(text, term_getline(buf, 1))}) call term_dumpwrite(buf, 'Xdump') let dumpline = readfile('Xdump')[0] call assert_match('|à| |ê| |ö', dumpline) @@ -1235,7 +1222,7 @@ func Test_terminal_api_drop_oldwin() \ "set t_ts=", \ ], 'Xscript') let buf = RunVimInTerminal('-S Xscript', {'rows': 10}) - call WaitFor({-> expand('%:t') =='Xtextfile'}) + call WaitForAssert({-> assert_equal('Xtextfile', expand('%:t'))}) call assert_equal(textfile_winid, win_getid()) call StopVimInTerminal(buf) @@ -1284,7 +1271,7 @@ func Test_terminal_api_call_fails() call WriteApiCall('TryThis') call ch_logfile('Xlog', 'w') let buf = RunVimInTerminal('-S Xscript', {}) - call WaitFor({-> string(readfile('Xlog')) =~ 'Invalid function name: TryThis'}) + call WaitForAssert({-> assert_match('Invalid function name: TryThis', string(readfile('Xlog')))}) call StopVimInTerminal(buf) call delete('Xscript') @@ -1309,7 +1296,7 @@ func Test_terminal_api_call_fail_delete() call WriteApiCall('Tapi_Delete') let buf = RunVimInTerminal('-S Xscript', {}) - call WaitFor({-> s:caught_e937 == 1}) + call WaitForAssert({-> assert_equal(1, s:caught_e937)}) call StopVimInTerminal(buf) call delete('Xscript') diff --git a/src/testdir/test_timers.vim b/src/testdir/test_timers.vim index df42b2c2b2..79a5ba58c1 100644 --- a/src/testdir/test_timers.vim +++ b/src/testdir/test_timers.vim @@ -143,7 +143,7 @@ endfunc func Test_delete_myself() let g:called = 0 let t = timer_start(10, 'StopMyself', {'repeat': -1}) - call WaitFor('g:called == 2') + call WaitForAssert({-> assert_equal(2, g:called)}) call assert_equal(2, g:called) call assert_equal([], timer_info(t)) endfunc @@ -206,7 +206,7 @@ func Test_timer_errors() let g:call_count = 0 let timer = timer_start(10, 'FuncWithError', {'repeat': -1}) " Timer will be stopped after failing 3 out of 3 times. - call WaitFor('g:call_count == 3') + call WaitForAssert({-> assert_equal(3, g:call_count)}) sleep 50m call assert_equal(3, g:call_count) endfunc @@ -224,7 +224,7 @@ func Test_timer_catch_error() let g:call_count = 0 let timer = timer_start(10, 'FuncWithCaughtError', {'repeat': 4}) " Timer will not be stopped. - call WaitFor('g:call_count == 4') + call WaitForAssert({-> assert_equal(4, g:call_count)}) sleep 50m call assert_equal(4, g:call_count) endfunc diff --git a/src/version.c b/src/version.c index 06b9af842d..9881dae868 100644 --- a/src/version.c +++ b/src/version.c @@ -761,6 +761,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1776, /**/ 1775, /**/ From 60a68362aa73f4a6cb534688978f9dc2b16e60fe Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Mon, 30 Apr 2018 15:40:48 +0200 Subject: [PATCH 09/20] patch 8.0.1777: cannot cleanup before loading another colorscheme Problem: Cannot cleanup before loading another colorscheme. Solution: Add the ColorSchemePre autocommand event. --- runtime/colors/README.txt | 11 ++++++++++- src/fileio.c | 5 ++++- src/syntax.c | 2 ++ src/testdir/test_gui.vim | 12 ++++++++++++ src/version.c | 2 ++ src/vim.h | 1 + 6 files changed, 31 insertions(+), 2 deletions(-) diff --git a/runtime/colors/README.txt b/runtime/colors/README.txt index a435c2dd19..4511748daf 100644 --- a/runtime/colors/README.txt +++ b/runtime/colors/README.txt @@ -42,7 +42,16 @@ this autocmd might be useful: Replace "blue_sky" with the name of the colorscheme. In case you want to tweak a colorscheme after it was loaded, check out the -ColorScheme autocmd event. +ColorScheme autocommand event. + +To clean up just before loading another colorscheme, use the ColorSchemePre +autocommand event. For example: + let g:term_ansi_colors = ... + augroup MyColorscheme + au! + au ColorSchemePre * unlet g:term_ansi_colors + au ColorSchemePre * au! MyColorscheme + augroup END To customize a colorscheme use another name, e.g. "~/.vim/colors/mine.vim", and use `:runtime` to load the original colorscheme: diff --git a/src/fileio.c b/src/fileio.c index 6b48c39d32..63cc61c432 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -7734,6 +7734,7 @@ static struct event_name {"CmdwinLeave", EVENT_CMDWINLEAVE}, {"CmdUndefined", EVENT_CMDUNDEFINED}, {"ColorScheme", EVENT_COLORSCHEME}, + {"ColorSchemePre", EVENT_COLORSCHEMEPRE}, {"CompleteDone", EVENT_COMPLETEDONE}, {"CursorHold", EVENT_CURSORHOLD}, {"CursorHoldI", EVENT_CURSORHOLDI}, @@ -9479,7 +9480,8 @@ apply_autocmds_group( */ if (fname_io == NULL) { - if (event == EVENT_COLORSCHEME || event == EVENT_OPTIONSET) + if (event == EVENT_COLORSCHEME || event == EVENT_COLORSCHEMEPRE + || event == EVENT_OPTIONSET) autocmd_fname = NULL; else if (fname != NULL && !ends_excmd(*fname)) autocmd_fname = fname; @@ -9549,6 +9551,7 @@ apply_autocmds_group( || event == EVENT_SPELLFILEMISSING || event == EVENT_QUICKFIXCMDPRE || event == EVENT_COLORSCHEME + || event == EVENT_COLORSCHEMEPRE || event == EVENT_OPTIONSET || event == EVENT_QUICKFIXCMDPOST || event == EVENT_DIRCHANGED) diff --git a/src/syntax.c b/src/syntax.c index e945dac045..bb695b5734 100644 --- a/src/syntax.c +++ b/src/syntax.c @@ -7224,6 +7224,8 @@ load_colors(char_u *name) buf = alloc((unsigned)(STRLEN(name) + 12)); if (buf != NULL) { + apply_autocmds(EVENT_COLORSCHEMEPRE, name, + curbuf->b_fname, FALSE, curbuf); sprintf((char *)buf, "colors/%s.vim", name); retval = source_runtime(buf, DIP_START + DIP_OPT); vim_free(buf); diff --git a/src/testdir/test_gui.vim b/src/testdir/test_gui.vim index 50a629b2ee..9d8a36f188 100644 --- a/src/testdir/test_gui.vim +++ b/src/testdir/test_gui.vim @@ -33,13 +33,25 @@ endfunc func Test_colorscheme() let colorscheme_saved = exists('g:colors_name') ? g:colors_name : 'default' + let g:color_count = 0 + augroup TestColors + au! + au ColorScheme * let g:color_count += 1| let g:after_colors = g:color_count + au ColorSchemePre * let g:color_count += 1 |let g:before_colors = g:color_count + augroup END colorscheme torte redraw! sleep 200m call assert_equal('dark', &background) + call assert_equal(1, g:before_colors) + call assert_equal(2, g:after_colors) exec 'colorscheme' colorscheme_saved + augroup TestColors + au! + augroup END + unlet g:color_count g:after_colors g:before_colors redraw! endfunc diff --git a/src/version.c b/src/version.c index 9881dae868..d6be02f0a1 100644 --- a/src/version.c +++ b/src/version.c @@ -761,6 +761,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1777, /**/ 1776, /**/ diff --git a/src/vim.h b/src/vim.h index af01f1a51b..0a4a490186 100644 --- a/src/vim.h +++ b/src/vim.h @@ -1277,6 +1277,7 @@ enum auto_event EVENT_CMDWINENTER, /* after entering the cmdline window */ EVENT_CMDWINLEAVE, /* before leaving the cmdline window */ EVENT_COLORSCHEME, /* after loading a colorscheme */ + EVENT_COLORSCHEMEPRE, /* before loading a colorscheme */ EVENT_COMPLETEDONE, /* after finishing insert complete */ EVENT_CURSORHOLD, /* cursor in same position for a while */ EVENT_CURSORHOLDI, /* idem, in Insert mode */ From b07bbb0d29493fcf4ed080fe018535e64441d663 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Mon, 30 Apr 2018 15:45:17 +0200 Subject: [PATCH 10/20] patch 8.0.1778: script to check translations does not always work Problem: Script to check translations does not always work. Solution: Go to first line before searching for MIME. --- src/po/check.vim | 1 + src/version.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/src/po/check.vim b/src/po/check.vim index a1ec6237e7..9cfa36a7cd 100644 --- a/src/po/check.vim +++ b/src/po/check.vim @@ -121,6 +121,7 @@ endfunc " Check that the \n at the end of the msgid line is also present in the msgstr " line. Skip over the header. +1 /^"MIME-Version: while 1 let lnum = search('^msgid\>') diff --git a/src/version.c b/src/version.c index d6be02f0a1..9b65751b16 100644 --- a/src/version.c +++ b/src/version.c @@ -761,6 +761,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1778, /**/ 1777, /**/ From 35e802e713382d7e76232ad344af7dcd577e43de Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Mon, 30 Apr 2018 17:21:03 +0200 Subject: [PATCH 11/20] patch 8.0.1779: deleting in a block selection causes problems Problem: Deleting in a block selection causes problems. Solution: Check the length of the line before adding bd.textcol and bd.textlen. (Christian Brabandt, closes #2825) --- src/ops.c | 12 ++++++++++-- src/testdir/test_blockedit.vim | 13 +++++++++++++ src/version.c | 2 ++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/ops.c b/src/ops.c index fe29e8ae74..0902b04797 100644 --- a/src/ops.c +++ b/src/ops.c @@ -2703,6 +2703,8 @@ op_insert(oparg_T *oap, long count1) { struct block_def bd2; int did_indent = FALSE; + size_t len; + int add; /* If indent kicked in, the firstline might have changed * but only do that, if the indent actually increased. */ @@ -2781,9 +2783,15 @@ op_insert(oparg_T *oap, long count1) * Subsequent calls to ml_get() flush the firstline data - take a * copy of the required string. */ - firstline = ml_get(oap->start.lnum) + bd.textcol; + firstline = ml_get(oap->start.lnum); + len = STRLEN(firstline); + add = bd.textcol; if (oap->op_type == OP_APPEND) - firstline += bd.textlen; + add += bd.textlen; + if ((size_t)add > len) + firstline += len; // short line, point to the NUL + else + firstline += add; if (pre_textlen >= 0 && (ins_len = (long)STRLEN(firstline) - pre_textlen) > 0) { diff --git a/src/testdir/test_blockedit.vim b/src/testdir/test_blockedit.vim index 4a8d59952e..527224ccd2 100644 --- a/src/testdir/test_blockedit.vim +++ b/src/testdir/test_blockedit.vim @@ -16,5 +16,18 @@ func Test_blockinsert_indent() bwipe! endfunc +func Test_blockinsert_delete() + new + let _bs = &bs + set bs=2 + call setline(1, ['case Arg is ', ' when Name_Async,', ' when Name_Num_Gangs,', 'end if;']) + exe "norm! ggjVj\$o$A\\" + "call feedkeys("Vj\$o$A\\", 'ti') + call assert_equal(["case Arg is ", " when Name_Async", " when Name_Num_Gangs,", "end if;"], + \ getline(1,'$')) + " reset to sane state + let &bs = _bs + bwipe! +endfunc " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index 9b65751b16..1f360869e7 100644 --- a/src/version.c +++ b/src/version.c @@ -761,6 +761,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1779, /**/ 1778, /**/ From 77bfd756a02c3b3150d6c08ddbf89b66362dad8d Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Mon, 30 Apr 2018 18:03:10 +0200 Subject: [PATCH 12/20] patch 8.0.1780: test fails because Vim in a terminal uses wrong 'encoding' Problem: Test fails because Vim in a terminal uses wrong 'encoding'. Solution: Set encoding in the test where it matters. (James McCoy, closes #2847) --- src/testdir/test_terminal.vim | 2 +- src/version.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim index c9d4637155..0f72346652 100644 --- a/src/testdir/test_terminal.vim +++ b/src/testdir/test_terminal.vim @@ -1011,7 +1011,7 @@ func Test_terminal_dumpwrite_composing() let text = " a\u0300 e\u0302 o\u0308" call writefile([text], 'Xcomposing') - let buf = RunVimInTerminal('Xcomposing', {}) + let buf = RunVimInTerminal('--cmd "set encoding=utf-8" Xcomposing', {}) call WaitForAssert({-> assert_match(text, term_getline(buf, 1))}) call term_dumpwrite(buf, 'Xdump') let dumpline = readfile('Xdump')[0] diff --git a/src/version.c b/src/version.c index 1f360869e7..7726f8450b 100644 --- a/src/version.c +++ b/src/version.c @@ -761,6 +761,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1780, /**/ 1779, /**/ From 15142e27aaafa15b72d1042c25fbb5e4f12b6736 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Mon, 30 Apr 2018 22:19:58 +0200 Subject: [PATCH 13/20] Update runtime files and translations --- runtime/doc/autocmd.txt | 7 +- runtime/doc/develop.txt | 4 +- runtime/doc/eval.txt | 25 +- runtime/doc/options.txt | 6 +- runtime/doc/quickfix.txt | 92 +- runtime/doc/scroll.txt | 4 +- runtime/doc/syntax.txt | 6 +- runtime/doc/tags | 8 + runtime/doc/todo.txt | 65 +- runtime/doc/windows.txt | 30 +- runtime/lang/menu_fr_fr.latin1.vim | 8 +- runtime/syntax/vim.vim | 76 +- runtime/tutor/tutor.ru | 6 +- runtime/tutor/tutor.ru.cp1251 | 6 +- src/po/de.po | 200 +++- src/po/eo.po | 200 +++- src/po/fr.po | 163 ++- src/po/ru.cp1251.po | 1755 +++++++++++++++------------- src/po/ru.po | 1755 +++++++++++++++------------- 19 files changed, 2555 insertions(+), 1861 deletions(-) diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt index 0c2fa52ac9..c3f04cc7aa 100644 --- a/runtime/doc/autocmd.txt +++ b/runtime/doc/autocmd.txt @@ -1,4 +1,4 @@ -*autocmd.txt* For Vim version 8.0. Last change: 2018 Apr 19 +*autocmd.txt* For Vim version 8.0. Last change: 2018 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -347,6 +347,7 @@ Name triggered by ~ when popup menu visible |TextYankPost| after text is yanked or deleted +|ColorSchemePre| before loading a color scheme |ColorScheme| after loading a color scheme |RemoteReply| a reply from a server Vim was received @@ -562,6 +563,10 @@ ColorScheme After loading a color scheme. |:colorscheme| set, and for the new colorscheme name. + *ColorSchemePre* +ColorSchemePre Before loading a color scheme. |:colorscheme| + Useful to setup removing things added by a + color scheme, before another one is loaded. *CompleteDone* CompleteDone After Insert mode completion is done. Either diff --git a/runtime/doc/develop.txt b/runtime/doc/develop.txt index 97823f36f7..e9c0ee9a01 100644 --- a/runtime/doc/develop.txt +++ b/runtime/doc/develop.txt @@ -1,4 +1,4 @@ -*develop.txt* For Vim version 8.0. Last change: 2018 Apr 18 +*develop.txt* For Vim version 8.0. Last change: 2018 Apr 23 VIM REFERENCE MANUAL by Bram Moolenaar @@ -182,7 +182,7 @@ The basic steps to make changes to the code: include the diff. Or create a pull request on github. -C COMPILER *style-compiler* +C COMPILER *style-compiler* *ANSI-C* *C89* *C99* The minimal C compiler version supported is C89, also known as ANSI C. Later standards, such as C99, are not widely supported, or at least not 100% diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 0a22a717ca..0e611f4f1e 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -4762,8 +4762,8 @@ getqflist([{what}]) *getqflist()* returns only the items listed in {what} as a dictionary. The following string items are supported in {what}: changedtick get the total number of changes made - to the list - context get the context stored with |setqflist()| + to the list |quickfix-changedtick| + context get the |quickfix-context| efm errorformat to use when parsing "lines". If not present, then the 'errorformat' option value is used. @@ -4772,15 +4772,15 @@ getqflist([{what}]) *getqflist()* current list or the list specified by "nr" idx index of the current entry in the list items quickfix list entries - lines use 'errorformat' to extract items from a list - of lines and return the resulting entries. - Only a |List| type is accepted. The current - quickfix list is not modified. + lines parse a list of lines using 'efm' and return + the resulting entries. Only a |List| type is + accepted. The current quickfix list is not + modified. See |quickfix-parse|. nr get information for this quickfix list; zero means the current quickfix list and "$" means the last quickfix list size number of entries in the quickfix list - title get the list title + title get the list title |quickfix-title| winid get the quickfix |window-ID| all all of the above quickfix properties Non-string items in {what} are ignored. To get the value of a @@ -4798,7 +4798,7 @@ getqflist([{what}]) *getqflist()* The returned dictionary contains the following entries: changedtick total number of changes made to the list |quickfix-changedtick| - context context information stored with |setqflist()|. + context quickfix list context. See |quickfix-context| If not present, set to "". id quickfix list ID |quickfix-ID|. If not present, set to 0. @@ -4813,12 +4813,11 @@ getqflist([{what}]) *getqflist()* to "". winid quickfix |window-ID|. If not present, set to 0 - Examples: > + Examples (See also |getqflist-examples|): > :echo getqflist({'all': 1}) :echo getqflist({'nr': 2, 'title': 1}) :echo getqflist({'lines' : ["F1:10:L10"]}) < - getreg([{regname} [, 1 [, {list}]]]) *getreg()* The result is a String, which is the contents of register {regname}. Example: > @@ -7270,7 +7269,7 @@ setqflist({list} [, {action} [, {what}]]) *setqflist()* only the items listed in {what} are set. The first {list} argument is ignored. The following items can be specified in {what}: - context any Vim type can be stored as a context + context quickfix list context. See |quickfix-context| efm errorformat to use when parsing text from "lines". If this is not present, then the 'errorformat' option value is used. @@ -7292,10 +7291,10 @@ setqflist({list} [, {action} [, {what}]]) *setqflist()* list is modified, "id" should be used instead of "nr" to specify the list. - Examples: > + Examples (See also |setqflist-examples|): > :call setqflist([], 'r', {'title': 'My search'}) :call setqflist([], 'r', {'nr': 2, 'title': 'Errors'}) - :call setqflist([], 'a', {'id':myid, 'lines':["F1:10:L10"]}) + :call setqflist([], 'a', {'id':qfid, 'lines':["F1:10:L10"]}) < Returns zero for success, -1 for failure. diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index b7f9869593..921765c998 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 8.0. Last change: 2018 Apr 21 +*options.txt* For Vim version 8.0. Last change: 2018 Apr 22 VIM REFERENCE MANUAL by Bram Moolenaar @@ -2117,7 +2117,7 @@ A jump table for the options with a short description can be found at |Q_op|. *cpo-E* E It is an error when using "y", "d", "c", "g~", "gu" or "gU" on an Empty region. The operators only work when - at least one character is to be operate on. Example: + at least one character is to be operated on. Example: This makes "y0" fail in the first column. *cpo-f* f When included, a ":read" command with a file name @@ -6084,7 +6084,7 @@ A jump table for the options with a short description can be found at |Q_op|. {only available when compiled with the |+reltime| feature} The time in milliseconds for redrawing the display. This applies to - searching for patterns for 'hlsearch', |:match| highlighting an syntax + searching for patterns for 'hlsearch', |:match| highlighting and syntax highlighting. When redrawing takes more than this many milliseconds no further matches will be highlighted. diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt index e627686bfc..de80c68adf 100644 --- a/runtime/doc/quickfix.txt +++ b/runtime/doc/quickfix.txt @@ -1,4 +1,4 @@ -*quickfix.txt* For Vim version 8.0. Last change: 2018 Mar 29 +*quickfix.txt* For Vim version 8.0. Last change: 2018 Apr 28 VIM REFERENCE MANUAL by Bram Moolenaar @@ -596,6 +596,96 @@ window ID of the quickfix window and location list window respectively (if present). Examples: > echo getqflist({'winid' : 1}).winid echo getloclist(2, {'winid' : 1}).winid +< + *getqflist-examples* +The getqflist() and getloclist() functions can be used to get the various +attributes of a quickfix and location list respectively. Some examples for +using these functions are below: +> + " get the title of the current quickfix list + :echo getqflist({'title' : 0}).title + + " get the identifier of the current quickfix list + :let qfid = getqflist({'id' : 0}).id + + " get the index of the current quickfix list in the stack + :let qfnum = getqflist({'nr' : 0}).nr + + " get the items of a quickfix list specified by an identifier + :echo getqflist({'id' : qfid, 'items' : 0}).items + + " get the number of entries in a quickfix list specified by an id + :echo getqflist({'id' : qfid, 'size' : 0}).size + + " get the context of the third quickfix list in the stack + :echo getqflist({'nr' : 3, 'context' : 0}).context + + " get the number of quickfix lists in the stack + :echo getqflist({'nr' : '$'}).nr + + " get the number of times the current quickfix list is changed + :echo getqflist({'changedtick' : 0}).changedtick + + " get the current entry in a quickfix list specified by an identifier + :echo getqflist({'id' : qfid, 'idx' : 0}).idx + + " get all the quickfix list attributes using an identifier + :echo getqflist({'id' : qfid, 'all' : 0}) + + " parse text from a List of lines and return a quickfix list + :let myList = ["a.java:10:L10", "b.java:20:L20"] + :echo getqflist({'lines' : myList}).items + + " parse text using a custom 'efm' and return a quickfix list + :echo getqflist({'lines' : ['a.c#10#Line 10'], 'efm':'%f#%l#%m'}).items + + " get the quickfix list window id + :echo getqflist({'winid' : 0}).winid + + " get the context of the current location list + :echo getloclist(0, {'context' : 0}).context + + " get the location list window id of the third window + :echo getloclist(3, {'winid' : 0}).winid +< + *setqflist-examples* +The setqflist() and setloclist() functions can be used to set the various +attributes of a quickfix and location list respectively. Some examples for +using these functions are below: +> + " set the title of the current quickfix list + :call setqflist([], 'a', {'title' : 'Mytitle'}) + + " set the context of a quickfix list specified by an identifier + :call setqflist([], 'a', {'id' : qfid, 'context' : {'val' : 100}}) + + " create a new quickfix list from a command output + :call setqflist([], ' ', {'lines' : systemlist('grep -Hn main *.c')}) + + " parse text using a custom efm and add to a particular quickfix list + :call setqflist([], 'a', {'id' : qfid, + \ 'lines' : ["a.c#10#L10", "b.c#20#L20"], 'efm':'%f#%l#%m'}) + + " add items to the quickfix list specified by an identifier + :let newItems = [{'filename' : 'a.txt', 'lnum' : 10, 'text' : "Apple"}, + \ {'filename' : 'b.txt', 'lnum' : 20, 'text' : "Orange"}] + :call setqflist([], 'a', {'id' : qfid, 'items' : newItems}) + + " free all the quickfix lists in the stack + :call setqflist([], 'f') + + " set the title of the fourth quickfix list + :call setqflist([], 'a', {'nr' : 4, 'title' : 'SomeTitle'}) + + " create a new quickfix list at the end of the stack + :call setqflist([], ' ', {'nr' : '$', + \ 'lines' : systemlist('grep -Hn class *.java')}) + + " create a new location list from a command output + :call setloclist(0, [], ' ', {'lines' : systemlist('grep -Hn main *.c')}) + + " replace the location list entries for the third window + :call setloclist(3, [], 'r', {'items' : newItems}) < ============================================================================= 3. Using more than one list of errors *quickfix-error-lists* diff --git a/runtime/doc/scroll.txt b/runtime/doc/scroll.txt index 35301f618c..653e7edffc 100644 --- a/runtime/doc/scroll.txt +++ b/runtime/doc/scroll.txt @@ -1,4 +1,4 @@ -*scroll.txt* For Vim version 8.0. Last change: 2016 Nov 10 +*scroll.txt* For Vim version 8.0. Last change: 2018 Apr 26 VIM REFERENCE MANUAL by Bram Moolenaar @@ -32,6 +32,7 @@ seen): *CTRL-E* CTRL-E Scroll window [count] lines downwards in the buffer. + The text moves upwards on the screen. Mnemonic: Extra lines. *CTRL-D* @@ -70,6 +71,7 @@ seen): *CTRL-Y* CTRL-Y Scroll window [count] lines upwards in the buffer. + The text moves downwards on the screen. Note: When using the MS-Windows key bindings CTRL-Y is remapped to redo. diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt index 04387f7d41..b73a39ce91 100644 --- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 8.0. Last change: 2018 Jan 31 +*syntax.txt* For Vim version 8.0. Last change: 2018 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -4627,7 +4627,9 @@ in their own color. runtime colors/evening.vim hi Statement ctermfg=Blue guifg=Blue -< After the color scheme has been loaded the +< Before the color scheme will be loaded the + |ColorSchemePre| autocommand event is triggered. + After the color scheme has been loaded the |ColorScheme| autocommand event is triggered. For info about writing a colorscheme file: > :edit $VIMRUNTIME/colors/README.txt diff --git a/runtime/doc/tags b/runtime/doc/tags index 5895c05992..2599c51435 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -3529,6 +3529,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX* @r eval.txt /*@r* A insert.txt /*A* ACL editing.txt /*ACL* +ANSI-C develop.txt /*ANSI-C* ATTENTION usr_11.txt /*ATTENTION* Abbreviations map.txt /*Abbreviations* Aleph options.txt /*Aleph* @@ -3565,6 +3566,8 @@ BufWritePre autocmd.txt /*BufWritePre* C change.txt /*C* C-editing tips.txt /*C-editing* C-indenting indent.txt /*C-indenting* +C89 develop.txt /*C89* +C99 develop.txt /*C99* COMSPEC starting.txt /*COMSPEC* CR-used-for-NL pattern.txt /*CR-used-for-NL* CTRL-6 editing.txt /*CTRL-6* @@ -3693,6 +3696,7 @@ CmdlineLeave autocmd.txt /*CmdlineLeave* CmdwinEnter autocmd.txt /*CmdwinEnter* CmdwinLeave autocmd.txt /*CmdwinLeave* ColorScheme autocmd.txt /*ColorScheme* +ColorSchemePre autocmd.txt /*ColorSchemePre* Command-line cmdline.txt /*Command-line* Command-line-mode cmdline.txt /*Command-line-mode* CompleteDone autocmd.txt /*CompleteDone* @@ -5116,6 +5120,7 @@ asin() eval.txt /*asin()* asm.vim syntax.txt /*asm.vim* asm68k syntax.txt /*asm68k* asmh8300.vim syntax.txt /*asmh8300.vim* +assert-return eval.txt /*assert-return* assert_beeps() eval.txt /*assert_beeps()* assert_equal() eval.txt /*assert_equal()* assert_equalfile() eval.txt /*assert_equalfile()* @@ -6618,6 +6623,7 @@ getmatches() eval.txt /*getmatches()* getpid() eval.txt /*getpid()* getpos() eval.txt /*getpos()* getqflist() eval.txt /*getqflist()* +getqflist-examples quickfix.txt /*getqflist-examples* getreg() eval.txt /*getreg()* getregtype() eval.txt /*getregtype()* getscript pi_getscript.txt /*getscript* @@ -8356,6 +8362,7 @@ setloclist() eval.txt /*setloclist()* setmatches() eval.txt /*setmatches()* setpos() eval.txt /*setpos()* setqflist() eval.txt /*setqflist()* +setqflist-examples quickfix.txt /*setqflist-examples* setreg() eval.txt /*setreg()* settabvar() eval.txt /*settabvar()* settabwinvar() eval.txt /*settabwinvar()* @@ -9730,6 +9737,7 @@ zz scroll.txt /*zz* {Visual} intro.txt /*{Visual}* {address} cmdline.txt /*{address}* {arglist} editing.txt /*{arglist}* +{bufname} windows.txt /*{bufname}* {char1-char2} intro.txt /*{char1-char2}* {event} autocmd.txt /*{event}* {file} editing.txt /*{file}* diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt index 9c2625587a..b9c61cd5a9 100644 --- a/runtime/doc/todo.txt +++ b/runtime/doc/todo.txt @@ -1,4 +1,4 @@ -*todo.txt* For Vim version 8.0. Last change: 2018 Apr 20 +*todo.txt* For Vim version 8.0. Last change: 2018 Apr 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -40,32 +40,31 @@ Terminal emulator window: Problem with sudo. #2758 +Make assert_functions return non-zero on failure. Make sure they add one +entry to v:errors then. +Use WaitForAssert() in tests: give error when failed. +Remove asserts after WaitFor(). + +balloon_show() does not work properly in the terminal. (Ben Jackson, 2017 Dec +20, #2481) +Also see #2352, want better control over balloon, perhaps set the position. + Errors found with random data: heap-buffer-overflow in alist_add (#2472) -Patch to avoid bad highlighting caused by #if. (ichizok, #2731) +Patch to shorten filenames in quickfix window. (Yegappan, 2018 Apr 28, #2851, +closes #2846) -Patch to refactor qf_set_properties(). (Yegappan, Apr 17, #2812) - -Patch for static analysis warnings. (Christian Brabandt, 2018 Apr 1, #2770) -Ther are more here: https://lgtm.com/projects/g/vim/vim/alerts/?mode=list - -Patch to refactor ex_helpgrep. (Yegappan, #2766, 2018 Mar 30) -Also in email, take the one with a test. - -Allow for C99 features, decide which ones are OK: -- "inline" -- "long long" -- flexible array members (change code to avoid FORTIFY_SOURCE problems) +More warnings from static analysis: +https://lgtm.com/projects/g/vim/vim/alerts/?mode=list Looks like an error for inserting register makes ":file other" not work. (Tom M, 2018 Mar 28) Reset did_emsg after inserting a register. Or at the top of the loop? (Apr 4) -Patch to fix mouse pointer after :tselect. (Hirohito Higashi, #2709) -How to reproduce the problem? Remarks by Hirohito, Apr 8. - -Patch to avoid job killed when I/O is disconnected. (ichizok, #2734) +Patch to add "module" to quickfix entries. (Marcin Szamotulski, Coot, 2017 Jun +8, #1757) Now part of #2322. Or #2327? #1757 was re-opened, include that +first. When opening foo/x.txt and bar/x.txt get swap file warning. Should check the file name. (Juergen Weigert) @@ -80,14 +79,6 @@ Tests failing for "make testgui" with GTK: - Test_setbufvar_options() - Test_exit_callback_interval() -Mouse pointer sticks to stop shape. Only on Windows GUI? #2709 - -Patch to make log_tr() use variable arguments. (Ichizok, 2018 Mar 20, #2730) - -balloon_show() does not work properly in the terminal. (Ben Jackson, 2017 Dec -20, #2481) -Also see #2352, want better control over balloon, perhaps set the position. - Try out background make plugin: https://github.com/AndrewVos/vim-make-background or asyncmake: @@ -96,18 +87,13 @@ or asyncmake: Add a ModeChanged autocommand that has an argument indicating the old and new mode. Also used for switching Terminal mode. -Cursor in status line after search. (#2530) +Patch to shorten filenames in quickfix window. (Yegappan Lakshmanan, 2018 +Apr 27) Add an option with file patterns, to be used when unloading a buffer: If there is a match, remove entries for the buffer from marks, jumplist, etc. To be used for git temp files. -Patch to fix that an empty buffer remains when using :argedit. (Christian, -#2713) Updated patch. - -Patch to fix interaction between 'virtualedit' and i_CTRL-G_j. (Christian -Brabandt, #2743) - Cursor in wrong position when line wraps. (#2540) Add an option similar to 'lazyredraw' to skip redrawing while executing a @@ -131,6 +117,9 @@ Jan 15, #2555) Check argument of systemlist(). (Pavlov) +Patch to support 256 colors in Windows console. (Nobuhiro Takasaki, 2018 Apr +25, #2821) + Patch to add reg_executing() and reg_recording(). (Hirohito Higashi, #2745) No maintainer for Vietnamese translations. @@ -146,10 +135,6 @@ Should be supported with a flag. Starting job with cwd option, when the directory does not exist, gives a confusing error message. (Wang Shidong, 2018 Jan 2, #2519) -Patch to add "module" to quickfix entries. (Marcin Szamotulski, Coot, 2017 Jun -8, #1757) Now part of #2322. Or #2327? #1757 was re-opened, include that -first. - Add the debug command line history to viminfo. Avoid that "sign unplace id" does a redraw right away, esp. when there is a @@ -163,6 +148,9 @@ Add Makefiles to the runtime/spell directory tree, since nobody uses Aap. Will have to explain the manual steps (downloading the .aff and .dic files, applying the diff, etc. +Pasting a register in Visual mode cannot be repeated. (Mahmoud Al-Qudsi, 2018 +Apr 26, #2849) + User dictionary ~/.vim/spell/lang.utf-8.add not used for spell checking until a word is re-added to it. (Matej Cepl, 2018 Feb 6) @@ -252,9 +240,6 @@ ml_get errors with buggy script. (Dominique, 2017 Apr 30) Error in emsg with buggy script. (Dominique, 2017 Apr 30) -Using CTRL-G j in insert mode in combination with 'virtualedit' doesn't work -as expected. (Rich, 2018 March 23, #2743) - Patch to fix encoding in print document name (Yasuhiro Matsumoto, 2017 Dec 20, #2478) diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt index c5021cd48c..c6c8cadf19 100644 --- a/runtime/doc/windows.txt +++ b/runtime/doc/windows.txt @@ -1,4 +1,4 @@ -*windows.txt* For Vim version 8.0. Last change: 2018 Mar 29 +*windows.txt* For Vim version 8.0. Last change: 2018 Apr 24 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1083,10 +1083,8 @@ list of buffers. |unlisted-buffer| < :bdelete[!] {bufname} *E93* *E94* - Like ":bdelete[!] [N]", but buffer given by name. Note that a - buffer whose name is a number cannot be referenced by that - name; use the buffer number instead. Insert a backslash - before a space in a buffer name. + Like ":bdelete[!] [N]", but buffer given by name, see + |{bufname}|. :bdelete[!] N1 N2 ... Do ":bdelete[!]" for buffer N1, N2, etc. The arguments can be @@ -1123,10 +1121,8 @@ list of buffers. |unlisted-buffer| into a loaded buffer. :bunload[!] {bufname} - Like ":bunload[!] [N]", but buffer given by name. Note that a - buffer whose name is a number cannot be referenced by that - name; use the buffer number instead. Insert a backslash - before a space in a buffer name. + Like ":bunload[!] [N]", but buffer given by name. + Also see |{bufname}|. :N,Mbunload[!] Do ":bunload[!]" for all buffers in the range N to M |inclusive|. @@ -1144,10 +1140,16 @@ list of buffers. |unlisted-buffer| list, without setting the 'buflisted' flag. Also see |+cmd|. -:[N]b[uffer][!] [+cmd] {bufname} - Edit buffer for {bufname} from the buffer list. See - |:buffer-!| for [!]. This will also edit a buffer that is not - in the buffer list, without setting the 'buflisted' flag. +:[N]b[uffer][!] [+cmd] {bufname} *{bufname}* + Edit buffer for {bufname} from the buffer list. A partial + name also works, so long as it is unique in the list of + buffers. + Note that a buffer whose name is a number cannot be referenced + by that name; use the buffer number instead. + Insert a backslash before a space in a buffer name. + See |:buffer-!| for [!]. + This will also edit a buffer that is not in the buffer list, + without setting the 'buflisted' flag. Also see |+cmd|. :[N]sb[uffer] [+cmd] [N] *:sb* *:sbuffer* @@ -1159,7 +1161,7 @@ list of buffers. |unlisted-buffer| Also see |+cmd|. :[N]sb[uffer] [+cmd] {bufname} - Split window and edit buffer for {bufname} from the buffer + Split window and edit buffer for |{bufname}| from the buffer list. This will also edit a buffer that is not in the buffer list, without setting the 'buflisted' flag. Note: If what you want to do is split the buffer, make a copy diff --git a/runtime/lang/menu_fr_fr.latin1.vim b/runtime/lang/menu_fr_fr.latin1.vim index c4b63c7833..940bd96545 100644 --- a/runtime/lang/menu_fr_fr.latin1.vim +++ b/runtime/lang/menu_fr_fr.latin1.vim @@ -2,7 +2,7 @@ " Maintainer: Adrien Beau " First Version: Francois Thunus " Last Modification: David Blanchet -" Last Change: 2012 May 01 +" Last Change: 2018 Apr 25 " Quit when menu translations have already been done. if exists("did_menu_trans") @@ -47,7 +47,7 @@ menutrans &Close:close &Fermer:close menutrans &Save:w &Enregistrer:w menutrans Save\ &As\.\.\.:sav Enregistrer\ &sous\.\.\.:sav " -SEP2- -menutrans Split\ &Diff\ with\.\.\. &Difference\ avec\.\.\. +menutrans Split\ &Diff\ with\.\.\. &Diffrence\ avec\.\.\. "menutrans Split\ Patched\ &By\.\.\. &Patcher\ avec\.\.\. menutrans Split\ Patched\ &By\.\.\. &Tester\ un\ patch\.\.\. " -SEP3- @@ -121,7 +121,7 @@ menutrans Soft\ &Tabstop &Pseudo-tabulations menutrans Te&xt\ Width\.\.\. Largeur\ du\ te&xte\.\.\. menutrans &File\ Format\.\.\. Format\ du\ &fichier\.\.\. -let g:menutrans_textwidth_dialog = "Entrez la nouvelle largeur du texte\n(0 pour dsactiver le formattage)." +let g:menutrans_textwidth_dialog = "Entrez la nouvelle largeur du texte\n(0 pour dsactiver le formatage)." let g:menutrans_fileformat_dialog = "Choisissez le format dans lequel crire le fichier." let g:menutrans_fileformat_choices = " &Unix \n &Dos \n &Mac \n &Annuler " @@ -340,7 +340,7 @@ fun! Do_toolbar_tmenu() tmenu ToolBar.WinClose Fermer fentre endif tmenu ToolBar.LoadSesn Ouvrir session - tmenu ToolBar.SaveSesn Enregister session courante + tmenu ToolBar.SaveSesn Enregistrer session courante tmenu ToolBar.RunScript Lancer un script Vim tmenu ToolBar.Make Lancer make tmenu ToolBar.RunCtags Crer les tiquettes diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim index 012d2ae2a5..7b255e2826 100644 --- a/runtime/syntax/vim.vim +++ b/runtime/syntax/vim.vim @@ -1,9 +1,9 @@ " Vim syntax file " Language: Vim 8.0 script " Maintainer: Charles E. Campbell -" Last Change: February 13, 2018 -" Version: 8.0-12 -" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_VIM +" Last Change: April 30, 2018 +" Version: 8.0-14 +" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_VIM " Automatically generated keyword lists: {{{1 " Quit when a syntax file was already loaded {{{2 @@ -19,34 +19,34 @@ syn keyword vimTodo contained COMBAK FIXME TODO XXX syn cluster vimCommentGroup contains=vimTodo,@Spell " regular vim commands {{{2 -syn keyword vimCommand contained a arga[dd] argu[ment] bad[d] bn[ext] breakd[el] bw[ipeout] cadde[xpr] cc cf[ile] changes cla[st] cnf[ile] comp[iler] cq[uit] cw[indow] delep dell diffg[et] dig[raphs] doau ea el[se] endt[ry] f[ile] fina[lly] foldd[oopen] go[to] ha[rdcopy] hid[e] ij[ump] isp[lit] keepa l[ist] lat lcl[ose] lex[pr] lgete[xpr] lla[st] lnf[ile] lol[der] lt[ag] lw[indow] menut[ranslate] mkv[imrc] n[ext] nmapc[lear] nore omapc[lear] pa[ckadd] perld[o] prev[ious] promptr[epl] ptj[ump] pts[elect] py[thon] pyx quita[ll] redr[aw] retu[rn] rub[y] sI sIn sal[l] sba[ll] sbp[revious] scg scripte[ncoding] setg[lobal] sgI sgn sic sim[alt] sla[st] smile so[urce] spelli[nfo] sr sri sta[g] stopi[nsert] sus[pend] sync ta[g] tabe[dit] tabn[ext] tabs te[aroff] tm[enu] to[pleft] tu[nmenu] undol[ist] up[date] vi[sual] vmapc[lear] wa[ll] winp[os] ws[verb] xmapc[lear] xprop -syn keyword vimCommand contained ab argd[elete] as[cii] bd[elete] bo[tright] breakl[ist] cN[ext] caddf[ile] ccl[ose] cfdo chd[ir] cle[arjumps] co[py] con[tinue] cr[ewind] d[elete] deletel delm[arks] diffo[ff] dir dp earlier elsei[f] endw[hile] files fini[sh] folddoc[losed] gr[ep] helpc[lose] his[tory] il[ist] iuna[bbrev] keepalt la[st] later lcs lf[ile] lgr[ep] lli[st] lo[adview] lop[en] lua m[ove] mes mkvie[w] nb[key] noa nos[wapfile] on[ly] packl[oadall] po[p] pro ps[earch] ptl[ast] pu[t] pydo pyxdo r[ead] redraws[tatus] rew[ind] rubyd[o] sIc sIp san[dbox] sbf[irst] sbr[ewind] sci scs setl[ocal] sgc sgp sie sin sm[agic] sn[ext] sor[t] spellr[epall] srI srl star[tinsert] sts[elect] sv[iew] syncbind tab tabf[ind] tabnew tags tf[irst] tma[p] tp[revious] tunma[p] unh[ide] v vie[w] vne[w] wh[ile] wn[ext] wundo xme xunme -syn keyword vimCommand contained abc[lear] argdo au bel[owright] bp[revious] bro[wse] cNf[ile] cal[l] cd cfir[st] che[ckpath] clo[se] col[der] conf[irm] cs debug deletep delp diffp[atch] dj[ump] dr[op] ec em[enu] ene[w] filet fir[st] foldo[pen] grepa[dd] helpf[ind] i imapc[lear] j[oin] keepj[umps] lad[dexpr] lb[uffer] lcscope lfdo lgrepa[dd] lmak[e] loadk lp[revious] luado ma[rk] messages mod[e] nbc[lose] noautocmd nu[mber] opt[ions] pc[lose] popu[p] prof[ile] ptN[ext] ptn[ext] pw[d] pyf[ile] pyxfile rec[over] reg[isters] ri[ght] rubyf[ile] sIe sIr sav[eas] sbl[ast] sc scl scscope sf[ind] sge sgr sig sip sm[ap] sno[magic] sp[lit] spellu[ndo] src srn startg[replace] sun[hide] sw[apname] syntime tabN[ext] tabfir[st] tabo[nly] tc[l] th[row] tmapc[lear] tr[ewind] u[ndo] unl ve[rsion] vim[grep] vs[plit] win[size] wp[revious] wv[iminfo] xmenu xunmenu -syn keyword vimCommand contained abo[veleft] arge[dit] bN[ext] bf[irst] br[ewind] bufdo c[hange] cat[ch] cdo cg[etfile] checkt[ime] cmapc[lear] colo[rscheme] cope[n] cscope debugg[reedy] deletl dep diffpu[t] dl ds[earch] echoe[rr] en[dif] ex filetype fix[del] for gui helpg[rep] ia in ju[mps] keepp[atterns] laddb[uffer] lbo[ttom] ld[o] lfir[st] lh[elpgrep] lmapc[lear] loadkeymap lpf[ile] luafile mak[e] mk[exrc] mz[scheme] nbs[tart] noh[lsearch] o[pen] ownsyntax pe[rl] pp[op] profd[el] pta[g] ptp[revious] py3 python3 q[uit] red[o] res[ize] rightb[elow] rundo sIg sN[ext] sbN[ext] sbm[odified] scI scp se[t] sfir[st] sgi sh[ell] sign sir sme snoreme spe[llgood] spellw[rong] sre[wind] srp startr[eplace] sunme sy t tabc[lose] tabl[ast] tabp[revious] tcld[o] tj[ump] tn[ext] try una[bbreviate] unlo[ckvar] verb[ose] vimgrepa[dd] wN[ext] winc[md] wq x[it] xnoreme xwininfo -syn keyword vimCommand contained al[l] argg[lobal] b[uffer] bl[ast] brea[k] buffers cabc[lear] cb[uffer] ce[nter] cgetb[uffer] chi[story] cn[ext] com cp[revious] cstag delc[ommand] deletp di[splay] diffs[plit] dli[st] dsp[lit] echom[sg] endf[unction] exi[t] filt[er] fo[ld] fu[nction] gvim helpt[ags] iabc[lear] intro k lN[ext] laddf[ile] lc[d] le[ft] lg[etfile] lhi[story] lne[xt] loc[kmarks] lr[ewind] lv[imgrep] marks mks[ession] mzf[ile] new nor ol[dfiles] p[rint] ped[it] pre[serve] promptf[ind] ptf[irst] ptr[ewind] py3do pythonx qa[ll] redi[r] ret[ab] ru[ntime] rv[iminfo] sIl sa[rgument] sb[uffer] sbn[ext] sce scr[iptnames] setf[iletype] sg sgl si sil[ent] sl[eep] smenu snoremenu spelld[ump] spr[evious] srg st[op] stj[ump] sunmenu syn tN[ext] tabd[o] tabm[ove] tabr[ewind] tclf[ile] tl[ast] tno[remap] ts[elect] undoj[oin] uns[ilent] vert[ical] viu[sage] w[rite] windo wqa[ll] xa[ll] xnoremenu y[ank] -syn keyword vimCommand contained ar[gs] argl[ocal] ba[ll] bm[odified] breaka[dd] bun[load] cad[dbuffer] cbo[ttom] cex[pr] cgete[xpr] cl[ist] cnew[er] comc[lear] cpf[ile] cuna[bbrev] delel delf[unction] dif[fupdate] difft[his] do e[dit] echon endfo[r] exu[sage] fin[d] foldc[lose] g h[elp] hi if is[earch] kee[pmarks] lNf[ile] lan[guage] lch[dir] lefta[bove] lgetb[uffer] ll lnew[er] lockv[ar] ls lvimgrepa[dd] mat[ch] mksp[ell] +syn keyword vimCommand contained a arga[dd] argu[ment] bad[d] bn[ext] breakd[el] bw[ipeout] cadde[xpr] cc cf[ile] changes cla[st] cnf[ile] comp[iler] cq[uit] cw[indow] delep dell diffg[et] dig[raphs] doau ea el[se] endt[ry] f[ile] fina[lly] foldd[oopen] go[to] ha[rdcopy] hid[e] ij[ump] isp[lit] keepa l[ist] lat lcl[ose] lex[pr] lgete[xpr] lla[st] lnf[ile] lol[der] lt[ag] lw[indow] menut[ranslate] mkv[imrc] n[ext] nmapc[lear] nore omapc[lear] pa[ckadd] perld[o] prev[ious] promptr[epl] ptj[ump] pts[elect] py[thon] pyx quita[ll] redr[aw] retu[rn] rub[y] sI sIn sal[l] sba[ll] sbp[revious] scg scripte[ncoding] setg[lobal] sgI sgn sic sim[alt] sla[st] smile so[urce] spelli[nfo] sr sri sta[g] stopi[nsert] sus[pend] sync ta[g] tabe[dit] tabn[ext] tabs te[aroff] tm[enu] to[pleft] tu[nmenu] undol[ist] up[date] vi[sual] vmapc[lear] wa[ll] winp[os] ws[verb] xmapc[lear] xprop +syn keyword vimCommand contained ab argd[elete] as[cii] bd[elete] bo[tright] breakl[ist] cN[ext] caddf[ile] ccl[ose] cfdo chd[ir] cle[arjumps] co[py] con[tinue] cr[ewind] d[elete] deletel delm[arks] diffo[ff] dir dp earlier elsei[f] endw[hile] files fini[sh] folddoc[losed] gr[ep] helpc[lose] his[tory] il[ist] iuna[bbrev] keepalt la[st] later lcs lf[ile] lgr[ep] lli[st] lo[adview] lop[en] lua m[ove] mes mkvie[w] nb[key] noa nos[wapfile] on[ly] packl[oadall] po[p] pro ps[earch] ptl[ast] pu[t] pydo pyxdo r[ead] redraws[tatus] rew[ind] rubyd[o] sIc sIp san[dbox] sbf[irst] sbr[ewind] sci scs setl[ocal] sgc sgp sie sin sm[agic] sn[ext] sor[t] spellr[epall] srI srl star[tinsert] sts[elect] sv[iew] syncbind tab tabf[ind] tabnew tags tf[irst] tma[p] tp[revious] tunma[p] unh[ide] v vie[w] vne[w] wh[ile] wn[ext] wundo xme xunme +syn keyword vimCommand contained abc[lear] argdo au bel[owright] bp[revious] bro[wse] cNf[ile] cal[l] cd cfir[st] che[ckpath] clo[se] col[der] conf[irm] cs debug deletep delp diffp[atch] dj[ump] dr[op] ec em[enu] ene[w] filet fir[st] foldo[pen] grepa[dd] helpf[ind] i imapc[lear] j[oin] keepj[umps] lad[dexpr] lb[uffer] lcscope lfdo lgrepa[dd] lmak[e] loadk lp[revious] luado ma[rk] messages mod[e] nbc[lose] noautocmd nu[mber] opt[ions] pc[lose] popu[p] prof[ile] ptN[ext] ptn[ext] pw[d] pyf[ile] pyxfile rec[over] reg[isters] ri[ght] rubyf[ile] sIe sIr sav[eas] sbl[ast] sc scl scscope sf[ind] sge sgr sig sip sm[ap] sno[magic] sp[lit] spellu[ndo] src srn startg[replace] sun[hide] sw[apname] syntime tabN[ext] tabfir[st] tabo[nly] tc[l] th[row] tmapc[lear] tr[ewind] u[ndo] unl ve[rsion] vim[grep] vs[plit] win[size] wp[revious] wv[iminfo] xmenu xunmenu +syn keyword vimCommand contained abo[veleft] arge[dit] bN[ext] bf[irst] br[ewind] bufdo c[hange] cat[ch] cdo cg[etfile] checkt[ime] cmapc[lear] colo[rscheme] cope[n] cscope debugg[reedy] deletl dep diffpu[t] dl ds[earch] echoe[rr] en[dif] ex filetype fix[del] for gui helpg[rep] ia in ju[mps] keepp[atterns] laddb[uffer] lbo[ttom] ld[o] lfir[st] lh[elpgrep] lmapc[lear] loadkeymap lpf[ile] luafile mak[e] mk[exrc] mz[scheme] nbs[tart] noh[lsearch] o[pen] ownsyntax pe[rl] pp[op] profd[el] pta[g] ptp[revious] py3 python3 q[uit] red[o] res[ize] rightb[elow] rundo sIg sN[ext] sbN[ext] sbm[odified] scI scp se[t] sfir[st] sgi sh[ell] sign sir sme snoreme spe[llgood] spellw[rong] sre[wind] srp startr[eplace] sunme sy t tabc[lose] tabl[ast] tabp[revious] tcld[o] tj[ump] tn[ext] try una[bbreviate] unlo[ckvar] verb[ose] vimgrepa[dd] wN[ext] winc[md] wq x[it] xnoreme xwininfo +syn keyword vimCommand contained al[l] argg[lobal] b[uffer] bl[ast] brea[k] buffers cabc[lear] cb[uffer] ce[nter] cgetb[uffer] chi[story] cn[ext] com cp[revious] cstag delc[ommand] deletp di[splay] diffs[plit] dli[st] dsp[lit] echom[sg] endf[unction] exi[t] filt[er] fo[ld] fu[nction] gvim helpt[ags] iabc[lear] intro k lN[ext] laddf[ile] lc[d] le[ft] lg[etfile] lhi[story] lne[xt] loc[kmarks] lr[ewind] lv[imgrep] marks mks[ession] mzf[ile] new nor ol[dfiles] p[rint] ped[it] pre[serve] promptf[ind] ptf[irst] ptr[ewind] py3do pythonx qa[ll] redi[r] ret[ab] ru[ntime] rv[iminfo] sIl sa[rgument] sb[uffer] sbn[ext] sce scr[iptnames] setf[iletype] sg sgl si sil[ent] sl[eep] smenu snoremenu spelld[ump] spr[evious] srg st[op] stj[ump] sunmenu syn tN[ext] tabd[o] tabm[ove] tabr[ewind] tclf[ile] tl[ast] tno[remap] ts[elect] undoj[oin] uns[ilent] vert[ical] viu[sage] w[rite] windo wqa[ll] xa[ll] xnoremenu y[ank] +syn keyword vimCommand contained ar[gs] argl[ocal] ba[ll] bm[odified] breaka[dd] bun[load] cad[dbuffer] cbo[ttom] cex[pr] cgete[xpr] cl[ist] cnew[er] comc[lear] cpf[ile] cuna[bbrev] delel delf[unction] dif[fupdate] difft[his] do e[dit] echon endfo[r] exu[sage] fin[d] foldc[lose] g h[elp] hi if is[earch] kee[pmarks] lNf[ile] lan[guage] lch[dir] lefta[bove] lgetb[uffer] ll lnew[er] lockv[ar] ls lvimgrepa[dd] mat[ch] mksp[ell] syn match vimCommand contained "\" -syn keyword vimStdPlugin contained DiffOrig Man N[ext] P[rint] S TOhtml XMLent XMLns +syn keyword vimStdPlugin contained DiffOrig Man N[ext] P[rint] S TOhtml XMLent XMLns " vimOptions are caught only when contained in a vimSet {{{2 -syn keyword vimOption contained acd ambw arshape background ballooneval bg bomb bs cb ch cinoptions cms commentstring copyindent cscopepathcomp csprg cursorbind delcombine digraph eadirection emo equalprg expandtab fdls fex fileignorecase fml foldlevel formatexpr gcr go guifontset helpheight history hlsearch imactivatekey imi imstyle indentkeys isf isprint km laststatus lisp loadplugins lz mat maxmempattern mh mmp more mouses mzq number opendevice paragraphs penc pi previewheight printmbcharset pvw rdt renderoptions rl ru sbo scrollbind secure shcf shelltemp shortmess showtabline sj smd spell splitbelow ssl stl sw sxe tabpagemax tags tbs termguicolors tf title tms ts ttybuiltin tx undolevels vbs viewdir vop wd wic wildmode winheight wm wrapscan -syn keyword vimOption contained ai anti autochdir backspace balloonexpr bh breakat bsdir cc charconvert cinw co compatible cot cscopeprg csqf cursorcolumn dex dip eb emoji errorbells exrc fdm ff filetype fmr foldlevelstart formatlistpat gd gp guifontwide helplang hk ic imaf iminsert inc indk isfname joinspaces kmp lazyredraw lispwords lpl ma matchpairs maxmemtot mis mmt mouse mouseshape mzquantum numberwidth operatorfunc paste perldll pm previewwindow printmbfont pythondll re report rlc rubydll sbr scrolljump sel shell shelltype shortname shq slm sn spellcapcheck splitright ssop stmp swapfile sxq tabstop tagstack tc termkey tgc titlelen to tsl ttyfast uc undoreload vdir viewoptions wa weirdinvert wig wildoptions winminheight wmh write -syn keyword vimOption contained akm antialias autoindent backup bdir bin breakindent bsk ccv ci cinwords cocu complete cp cscopequickfix csre cursorline dg dir ed enc errorfile fcl fdn ffs fillchars fo foldmarker formatoptions gdefault grepformat guiheadroom hf hkmap icon imak ims include inex isi js kp lbr list lrm macatsui matchtime mco mkspellmem mod mousef mouset mzschemedll nuw opfunc pastetoggle pex pmbcs printdevice printoptions pythonthreedll readonly restorescreen rnu ruf sc scrolloff selection shellcmdflag shellxescape showbreak si sm so spellfile spr st sts swapsync syn tag tal tcldll termsize tgst titleold toolbar tsr ttym udf updatecount ve vif wak wfh wildchar wim winminwidth wmnu writeany -syn keyword vimOption contained al ar autoread backupcopy bdlay binary breakindentopt bt cd cin clipboard cole completefunc cpo cscoperelative cst cwh dict directory edcompatible encoding errorformat fcs fdo fic fixendofline foldclose foldmethod formatprg gfm grepprg guioptions hh hkmapp iconstring imc imsearch includeexpr inf isident key langmap lcs listchars ls magic maxcombine mef ml modeline mousefocus mousetime mzschemegcdll odev osfiletype patchexpr pexpr pmbfn printencoding prompt pyx redrawtime revins ro ruler scb scrollopt selectmode shellpipe shellxquote showcmd sidescroll smartcase softtabstop spelllang sps sta su swb synmaxcol tagbsearch tb tenc terse thesaurus titlestring toolbariconsize ttimeout ttymouse udir updatetime verbose viminfo warn wfw wildcharm winaltkeys winptydll wmw writebackup -syn keyword vimOption contained aleph arab autowrite backupdir belloff bk bri bufhidden cdpath cindent cm colorcolumn completeopt cpoptions cscopetag csto debug dictionary display ef endofline esckeys fdc fdt fileencoding fixeol foldcolumn foldminlines fp gfn gtl guipty hi hkp ignorecase imcmdline imsf incsearch infercase isk keymap langmenu linebreak lm lsp makeef maxfuncdepth menc mls modelines mousehide mp nf oft pa patchmode pfn popt printexpr pt pyxversion regexpengine ri rop rulerformat scl scs sessionoptions shellquote shiftround showfulltag sidescrolloff smartindent sol spellsuggest sr stal sua swf syntax tagcase tbi term textauto tildeop tk top ttimeoutlen ttyscroll ul ur verbosefile viminfofile wb wh wildignore window winwidth wop writedelay -syn keyword vimOption contained allowrevins arabic autowriteall backupext beval bkc briopt buflisted cedit cink cmdheight columns concealcursor cpt cscopetagorder csverb deco diff dy efm eol et fde fen fileencodings fk foldenable foldnestmax fs gfs gtt guitablabel hid hl im imd imst inde insertmode iskeyword keymodel langnoremap lines lmap luadll makeencoding maxmapdepth menuitems mm modifiable mousem mps nrformats ofu packpath path ph pp printfont pumheight qe relativenumber rightleft rs runtimepath scr sect sft shellredir shiftwidth showmatch signcolumn smarttab sp spf srr startofline suffixes switchbuf ta taglength tbidi termbidi textmode timeout tl tpm ttm ttytype undodir ut vfile virtualedit wc whichwrap wildignorecase winfixheight wiv wrap ws -syn keyword vimOption contained altkeymap arabicshape aw backupskip bex bl brk buftype cf cinkeys cmdwinheight com conceallevel crb cscopeverbose cuc def diffexpr ea ei ep eventignore fdi fenc fileformat fkmap foldexpr foldopen fsync gfw guicursor guitabtooltip hidden hlg imactivatefunc imdisable imstatusfunc indentexpr is isp keywordprg langremap linespace lnr lw makeprg maxmem mfd mmd modified mousemodel msm nu omnifunc para pdev pheader preserveindent printheader pvh quoteescape remap rightleftcmd rtp sb scroll sections sh shellslash shm showmode siso smc spc spl ss statusline suffixesadd sws tabline tagrelative tbis termencoding textwidth timeoutlen tm tr tty tw undofile vb vi visualbell wcm wi wildmenu winfixwidth wiw wrapmargin ww -syn keyword vimOption contained ambiwidth ari awa balloondelay bexpr bo browsedir casemap cfu cino cmp comments confirm cryptmethod cspc cul define diffopt ead ek equalalways ex fdl fencs fileformats flp foldignore foldtext ft ghr guifont helpfile highlight hls +syn keyword vimOption contained acd ambw arshape background ballooneval bex bl brk buftype cf cinkeys cmdwinheight com conceallevel crb cscopeverbose cuc def diffexpr ea ei ep eventignore fdi fenc fileformat fkmap foldexpr foldopen fsync gfw guicursor guitabtooltip hidden hlg imactivatefunc imi inc inex isident keymap langnoremap linespace lnr lw makeprg maxmem mfd mmd modified mousemodel msm nu omnifunc para pdev pheader preserveindent printheader pumwidth pythonthreehome readonly restorescreen rnu ruf sc scrolloff selection shellcmdflag shellxescape showbreak si sm so spellfile spr st sts swapsync syn tag tal tcldll termwinscroll tgc titlelen toolbariconsize ttimeout ttymouse tx undolevels vbs viewdir vop wd wic wildmode winheight wm wrapscan +syn keyword vimOption contained ai anti autochdir backspace balloonevalterm bexpr bo browsedir casemap cfu cino cmp comments confirm cryptmethod cspc cul define diffopt ead ek equalalways ex fdl fencs fileformats flp foldignore foldtext ft ghr guifont helpfile highlight hls imactivatekey iminsert include inf isk keymodel langremap lisp loadplugins lz mat maxmempattern mh mmp more mouses mzq number opendevice paragraphs penc pi previewheight printmbcharset pvh pyx redrawtime revins ro ruler scb scrollopt selectmode shellpipe shellxquote showcmd sidescroll smartcase softtabstop spelllang sps sta su swb synmaxcol tagbsearch tb tenc termwinsize tgst titleold top ttimeoutlen ttyscroll uc undoreload vdir viewoptions wa weirdinvert wig wildoptions winminheight wmh write +syn keyword vimOption contained akm antialias autoindent backup balloonexpr bg bomb bs cb ch cinoptions cms commentstring copyindent cscopepathcomp csprg cursorbind delcombine digraph eadirection emo equalprg expandtab fdls fex fileignorecase fml foldlevel formatexpr gcr go guifontset helpheight history hlsearch imaf ims includeexpr infercase iskeyword keywordprg laststatus lispwords lpl ma matchpairs maxmemtot mis mmt mouse mouseshape mzquantum numberwidth operatorfunc paste perldll pm previewwindow printmbfont pvw pyxversion regexpengine ri rop rulerformat scl scs sessionoptions shellquote shiftround showfulltag sidescrolloff smartindent sol spellsuggest sr stal sua swf syntax tagcase tbi term terse thesaurus titlestring tpm ttm ttytype udf updatecount ve vif wak wfh wildchar wim winminwidth wmnu writeany +syn keyword vimOption contained al ar autoread backupcopy bdir bh breakat bsdir cc charconvert cinw co compatible cot cscopeprg csqf cursorcolumn dex dip eb emoji errorbells exrc fdm ff filetype fmr foldlevelstart formatlistpat gd gp guifontwide helplang hk ic imak imsearch incsearch insertmode isp km lazyredraw list lrm macatsui matchtime mco mkspellmem mod mousef mouset mzschemedll nuw opfunc pastetoggle pex pmbcs printdevice printoptions pw qe relativenumber rightleft rs runtimepath scr sect sft shellredir shiftwidth showmatch signcolumn smarttab sp spf srr startofline suffixes switchbuf ta taglength tbidi termbidi textauto tildeop tl tr tty tw udir updatetime verbose viminfo warn wfw wildcharm winaltkeys winptydll wmw writebackup +syn keyword vimOption contained aleph arab autowrite backupdir bdlay bin breakindent bsk ccv ci cinwords cocu complete cp cscopequickfix csre cursorline dg dir ed enc errorfile fcl fdn ffs fillchars fo foldmarker formatoptions gdefault grepformat guiheadroom hf hkmap icon imc imsf inde is isprint kmp lbr listchars ls magic maxcombine mef ml modeline mousefocus mousetime mzschemegcdll odev osfiletype patchexpr pexpr pmbfn printencoding prompt pythondll quoteescape remap rightleftcmd rtp sb scroll sections sh shellslash shm showmode siso smc spc spl ss statusline suffixesadd sws tabline tagrelative tbis termencoding textmode timeout tm ts ttybuiltin twk ul ur verbosefile viminfofile wb wh wildignore window winwidth wop writedelay +syn keyword vimOption contained allowrevins arabic autowriteall backupext belloff binary breakindentopt bt cd cin clipboard cole completefunc cpo cscoperelative cst cwh dict directory edcompatible encoding errorformat fcs fdo fic fixendofline foldclose foldmethod formatprg gfm grepprg guioptions hh hkmapp iconstring imcmdline imst indentexpr isf joinspaces kp lcs lm lsp makeef maxfuncdepth menc mls modelines mousehide mp nf oft pa patchmode pfn popt printexpr pt pythonhome rdt renderoptions rl ru sbo scrollbind secure shcf shelltemp shortmess showtabline sj smd spell splitbelow ssl stl sw sxe tabpagemax tags tbs termguicolors textwidth timeoutlen to tsl ttyfast tws undodir ut vfile virtualedit wc whichwrap wildignorecase winfixheight wiv wrap ws +syn keyword vimOption contained altkeymap arabicshape aw backupskip beval bk bri bufhidden cdpath cindent cm colorcolumn completeopt cpoptions cscopetag csto debug dictionary display ef endofline esckeys fdc fdt fileencoding fixeol foldcolumn foldminlines fp gfn gtl guipty hi hkp ignorecase imd imstatusfunc indentkeys isfname js langmap linebreak lmap luadll makeencoding maxmapdepth menuitems mm modifiable mousem mps nrformats ofu packpath path ph pp printfont pumheight pythonthreedll re report rlc rubydll sbr scrolljump sel shell shelltype shortname shq slm sn spellcapcheck splitright ssop stmp swapfile sxq tabstop tagstack tc termwinkey tf title toolbar tsr ttym twsl undofile vb vi visualbell wcm wi wildmenu winfixwidth wiw wrapmargin ww +syn keyword vimOption contained ambiwidth ari awa balloondelay bevalterm bkc briopt buflisted cedit cink cmdheight columns concealcursor cpt cscopetagorder csverb deco diff dy efm eol et fde fen fileencodings fk foldenable foldnestmax fs gfs gtt guitablabel hid hl im imdisable imstyle indk isi key langmenu lines " vimOptions: These are the turn-off setting variants {{{2 -syn keyword vimOption contained noacd noallowrevins noantialias noarabic noarshape noautoread noaw noballooneval nobinary nobomb nobuflisted nocin noconfirm nocrb nocscopeverbose nocsverb nocursorbind nodeco nodiff noeb noek noendofline noerrorbells noex nofen nofixendofline nofkmap nofsync noguipty nohk nohkp noic noim noimd noinf nois nolangnoremap nolazyredraw nolinebreak nolist noloadplugins nolrm noma nomagic noml nomodeline nomodified nomousef nomousehide nonumber noopendevice nopi nopreviewwindow nopvw norelativenumber norestorescreen nori norl noro noru nosb noscb noscs nosft noshelltemp noshortname noshowfulltag noshowmode nosm nosmartindent nosmd nosol nosplitbelow nospr nossl nostartofline noswapfile nota notagrelative notbi notbs noterse notextmode notgst notimeout noto notr nottybuiltin notx noundofile novisualbell nowarn noweirdinvert nowfw nowildignorecase nowinfixheight nowiv nowrap nowrite nowritebackup -syn keyword vimOption contained noai noaltkeymap noar noarabicshape noautochdir noautowrite noawa nobeval nobk nobreakindent nocf nocindent nocopyindent nocscoperelative nocsre nocuc nocursorcolumn nodelcombine nodigraph noed noemo noeol noesckeys noexpandtab nofic nofixeol nofoldenable nogd nohid nohkmap nohls noicon noimc noimdisable noinfercase nojoinspaces nolangremap nolbr nolisp nolnr nolpl nolz nomacatsui nomh nomod nomodifiable nomore nomousefocus nonu noodev nopaste nopreserveindent noprompt noreadonly noremap norevins norightleft nornu nors noruler nosc noscrollbind nosecure noshellslash noshiftround noshowcmd noshowmatch nosi nosmartcase nosmarttab nosn nospell nosplitright nosr nosta nostmp noswf notagbsearch notagstack notbidi notermbidi notextauto notf notildeop notitle notop nottimeout nottyfast noudf novb nowa nowb nowfh nowic nowildmenu nowinfixwidth nowmnu nowrapscan nowriteany nows -syn keyword vimOption contained noakm noanti noarab noari noautoindent noautowriteall nobackup nobin nobl nobri noci nocompatible nocp nocscopetag nocst nocul nocursorline nodg noea noedcompatible noemoji noequalalways noet noexrc nofileignorecase nofk nofs nogdefault nohidden nohkmapp nohlsearch noignorecase noimcmdline noincsearch noinsertmode nojs +syn keyword vimOption contained noacd noallowrevins noantialias noarabic noarshape noautoread noaw noballooneval nobevalterm nobk nobreakindent nocf nocindent nocopyindent nocscoperelative nocsre nocuc nocursorcolumn nodelcombine nodigraph noed noemo noeol noesckeys noexpandtab nofic nofixeol nofoldenable nogd nohid nohkmap nohls noicon noimc noimdisable noinfercase nojoinspaces nolangremap nolinebreak nolist noloadplugins nolrm noma nomagic noml nomodeline nomodified nomousef nomousehide nonumber noopendevice nopi nopreviewwindow nopvw norelativenumber norestorescreen nori norl noro noru nosb noscb noscs nosft noshelltemp noshortname noshowfulltag noshowmode nosm nosmartindent nosmd nosol nosplitbelow nospr nossl nostartofline noswapfile nota notagrelative notbi notbs noterse notextmode notgst notimeout noto notr nottybuiltin notx noundofile novisualbell nowarn noweirdinvert nowfw nowildignorecase nowinfixheight nowiv nowrap nowrite nowritebackup +syn keyword vimOption contained noai noaltkeymap noar noarabicshape noautochdir noautowrite noawa noballoonevalterm nobin nobl nobri noci nocompatible nocp nocscopetag nocst nocul nocursorline nodg noea noedcompatible noemoji noequalalways noet noexrc nofileignorecase nofk nofs nogdefault nohidden nohkmapp nohlsearch noignorecase noimcmdline noincsearch noinsertmode nojs nolazyredraw nolisp nolnr nolpl nolz nomacatsui nomh nomod nomodifiable nomore nomousefocus nonu noodev nopaste nopreserveindent noprompt noreadonly noremap norevins norightleft nornu nors noruler nosc noscrollbind nosecure noshellslash noshiftround noshowcmd noshowmatch nosi nosmartcase nosmarttab nosn nospell nosplitright nosr nosta nostmp noswf notagbsearch notagstack notbidi notermbidi notextauto notf notildeop notitle notop nottimeout nottyfast noudf novb nowa nowb nowfh nowic nowildmenu nowinfixwidth nowmnu nowrapscan nowriteany nows +syn keyword vimOption contained noakm noanti noarab noari noautoindent noautowriteall nobackup nobeval nobinary nobomb nobuflisted nocin noconfirm nocrb nocscopeverbose nocsverb nocursorbind nodeco nodiff noeb noek noendofline noerrorbells noex nofen nofixendofline nofkmap nofsync noguipty nohk nohkp noic noim noimd noinf nois nolangnoremap nolbr " vimOptions: These are the invertible variants {{{2 -syn keyword vimOption contained invacd invallowrevins invantialias invarabic invarshape invautoread invaw invballooneval invbinary invbomb invbuflisted invcin invconfirm invcrb invcscopeverbose invcsverb invcursorbind invdeco invdiff inveb invek invendofline inverrorbells invex invfen invfixendofline invfkmap invfsync invguipty invhk invhkp invic invim invimd invinf invis invlangnoremap invlazyredraw invlinebreak invlist invloadplugins invlrm invma invmagic invml invmodeline invmodified invmousef invmousehide invnumber invopendevice invpi invpreviewwindow invpvw invrelativenumber invrestorescreen invri invrl invro invru invsb invscb invscs invsft invshelltemp invshortname invshowfulltag invshowmode invsm invsmartindent invsmd invsol invsplitbelow invspr invssl invstartofline invswapfile invta invtagrelative invtbi invtbs invterse invtextmode invtgst invtimeout invto invtr invttybuiltin invtx invundofile invvisualbell invwarn invweirdinvert invwfw invwildignorecase invwinfixheight invwiv invwrap invwrite invwritebackup -syn keyword vimOption contained invai invaltkeymap invar invarabicshape invautochdir invautowrite invawa invbeval invbk invbreakindent invcf invcindent invcopyindent invcscoperelative invcsre invcuc invcursorcolumn invdelcombine invdigraph inved invemo inveol invesckeys invexpandtab invfic invfixeol invfoldenable invgd invhid invhkmap invhls invicon invimc invimdisable invinfercase invjoinspaces invlangremap invlbr invlisp invlnr invlpl invlz invmacatsui invmh invmod invmodifiable invmore invmousefocus invnu invodev invpaste invpreserveindent invprompt invreadonly invremap invrevins invrightleft invrnu invrs invruler invsc invscrollbind invsecure invshellslash invshiftround invshowcmd invshowmatch invsi invsmartcase invsmarttab invsn invspell invsplitright invsr invsta invstmp invswf invtagbsearch invtagstack invtbidi invtermbidi invtextauto invtf invtildeop invtitle invtop invttimeout invttyfast invudf invvb invwa invwb invwfh invwic invwildmenu invwinfixwidth invwmnu invwrapscan invwriteany invws -syn keyword vimOption contained invakm invanti invarab invari invautoindent invautowriteall invbackup invbin invbl invbri invci invcompatible invcp invcscopetag invcst invcul invcursorline invdg invea invedcompatible invemoji invequalalways invet invexrc invfileignorecase invfk invfs invgdefault invhidden invhkmapp invhlsearch invignorecase invimcmdline invincsearch invinsertmode invjs +syn keyword vimOption contained invacd invallowrevins invantialias invarabic invarshape invautoread invaw invballooneval invbevalterm invbk invbreakindent invcf invcindent invcopyindent invcscoperelative invcsre invcuc invcursorcolumn invdelcombine invdigraph inved invemo inveol invesckeys invexpandtab invfic invfixeol invfoldenable invgd invhid invhkmap invhls invicon invimc invimdisable invinfercase invjoinspaces invlangremap invlinebreak invlist invloadplugins invlrm invma invmagic invml invmodeline invmodified invmousef invmousehide invnumber invopendevice invpi invpreviewwindow invpvw invrelativenumber invrestorescreen invri invrl invro invru invsb invscb invscs invsft invshelltemp invshortname invshowfulltag invshowmode invsm invsmartindent invsmd invsol invsplitbelow invspr invssl invstartofline invswapfile invta invtagrelative invtbi invtbs invterse invtextmode invtgst invtimeout invto invtr invttybuiltin invtx invundofile invvisualbell invwarn invweirdinvert invwfw invwildignorecase invwinfixheight invwiv invwrap invwrite invwritebackup +syn keyword vimOption contained invai invaltkeymap invar invarabicshape invautochdir invautowrite invawa invballoonevalterm invbin invbl invbri invci invcompatible invcp invcscopetag invcst invcul invcursorline invdg invea invedcompatible invemoji invequalalways invet invexrc invfileignorecase invfk invfs invgdefault invhidden invhkmapp invhlsearch invignorecase invimcmdline invincsearch invinsertmode invjs invlazyredraw invlisp invlnr invlpl invlz invmacatsui invmh invmod invmodifiable invmore invmousefocus invnu invodev invpaste invpreserveindent invprompt invreadonly invremap invrevins invrightleft invrnu invrs invruler invsc invscrollbind invsecure invshellslash invshiftround invshowcmd invshowmatch invsi invsmartcase invsmarttab invsn invspell invsplitright invsr invsta invstmp invswf invtagbsearch invtagstack invtbidi invtermbidi invtextauto invtf invtildeop invtitle invtop invttimeout invttyfast invudf invvb invwa invwb invwfh invwic invwildmenu invwinfixwidth invwmnu invwrapscan invwriteany invws +syn keyword vimOption contained invakm invanti invarab invari invautoindent invautowriteall invbackup invbeval invbinary invbomb invbuflisted invcin invconfirm invcrb invcscopeverbose invcsverb invcursorbind invdeco invdiff inveb invek invendofline inverrorbells invex invfen invfixendofline invfkmap invfsync invguipty invhk invhkp invic invim invimd invinf invis invlangnoremap invlbr " termcap codes (which can also be set) {{{2 syn keyword vimOption contained t_8b t_AB t_al t_bc t_BE t_ce t_cl t_Co t_Cs t_CV t_db t_DL t_EI t_F2 t_F4 t_F6 t_F8 t_fs t_IE t_k1 t_k2 t_K3 t_K4 t_K5 t_K6 t_K7 t_k8 t_K8 t_k9 t_K9 t_KA t_kb t_kB t_KB t_KC t_kd t_kD t_KD t_ke t_KE t_KF t_KG t_kh t_KH t_kI t_KI t_KJ t_KK t_kl t_KL t_kN t_kP t_kr t_ks t_ku t_le t_mb t_md t_me t_mr t_ms t_nd t_op t_PE t_PS t_RB t_RC t_RF t_RI t_RS t_RV t_Sb t_SC t_se t_Sf t_SH t_SI t_so t_sr t_SR t_te t_Te t_ti t_ts t_Ts t_u7 t_ue t_us t_ut t_vb t_ve t_vi t_vs t_VS t_WP t_WS t_xn t_xs t_ZH t_ZR @@ -66,21 +66,21 @@ syn keyword vimErrSetting contained bioskey biosk conskey consk autoprint beauti " AutoCmd Events {{{2 syn case ignore -syn keyword vimAutoEvent contained BufAdd BufCreate BufDelete BufEnter BufFilePost BufFilePre BufHidden BufLeave BufNew BufNewFile BufRead BufReadCmd BufReadPost BufReadPre BufUnload BufWinEnter BufWinLeave BufWipeout BufWrite BufWriteCmd BufWritePost BufWritePre CmdlineEnter CmdlineLeave CmdUndefined CmdwinEnter CmdwinLeave ColorScheme CompleteDone CursorHold CursorHoldI CursorMoved CursorMovedI EncodingChanged FileAppendCmd FileAppendPost FileAppendPre FileChangedRO FileChangedShell FileChangedShellPost FileEncoding FileReadCmd FileReadPost FileReadPre FileType FileWriteCmd FileWritePost FileWritePre FilterReadPost FilterReadPre FilterWritePost FilterWritePre FocusGained FocusLost FuncUndefined GUIEnter GUIFailed InsertChange InsertCharPre InsertEnter InsertLeave MenuPopup OptionSet QuickFixCmdPost QuickFixCmdPre QuitPre RemoteReply SessionLoadPost ShellCmdPost ShellFilterPost SourceCmd SourcePre SpellFileMissing StdinReadPost StdinReadPre SwapExists Syntax TabClosed TabEnter TabLeave TabNew TermChanged TermResponse TextChanged TextChangedI User VimEnter VimLeave VimLeavePre VimResized WinEnter WinLeave WinNew +syn keyword vimAutoEvent contained BufAdd BufCreate BufDelete BufEnter BufFilePost BufFilePre BufHidden BufLeave BufNew BufNewFile BufRead BufReadCmd BufReadPost BufReadPre BufUnload BufWinEnter BufWinLeave BufWipeout BufWrite BufWriteCmd BufWritePost BufWritePre CmdlineChanged CmdlineEnter CmdlineLeave CmdUndefined CmdwinEnter CmdwinLeave ColorScheme CompleteDone CursorHold CursorHoldI CursorMoved CursorMovedI DirChanged EncodingChanged ExitPre FileAppendCmd FileAppendPost FileAppendPre FileChangedRO FileChangedShell FileChangedShellPost FileEncoding FileReadCmd FileReadPost FileReadPre FileType FileWriteCmd FileWritePost FileWritePre FilterReadPost FilterReadPre FilterWritePost FilterWritePre FocusGained FocusLost FuncUndefined GUIEnter GUIFailed InsertChange InsertCharPre InsertEnter InsertLeave MenuPopup OptionSet QuickFixCmdPost QuickFixCmdPre QuitPre RemoteReply SessionLoadPost ShellCmdPost ShellFilterPost SourceCmd SourcePre SpellFileMissing StdinReadPost StdinReadPre SwapExists Syntax TabClosed TabEnter TabLeave TabNew TermChanged TerminalOpen TermResponse TextChanged TextChangedI TextChangedP TextYankPost User VimEnter VimLeave VimLeavePre VimResized WinEnter WinLeave WinNew " Highlight commonly used Groupnames {{{2 syn keyword vimGroup contained Comment Constant String Character Number Boolean Float Identifier Function Statement Conditional Repeat Label Operator Keyword Exception PreProc Include Define Macro PreCondit Type StorageClass Structure Typedef Special SpecialChar Tag Delimiter SpecialComment Debug Underlined Ignore Error Todo " Default highlighting groups {{{2 -syn keyword vimHLGroup contained ColorColumn Cursor CursorColumn CursorIM CursorLine CursorLineNr DiffAdd DiffChange DiffDelete DiffText Directory EndOfBuffer ErrorMsg FoldColumn Folded IncSearch LineNr MatchParen Menu ModeMsg MoreMsg NonText Normal Pmenu PmenuSbar PmenuSel PmenuThumb Question QuickFixLine Scrollbar Search SignColumn SpecialKey SpellBad SpellCap SpellLocal SpellRare StatusLine StatusLineNC TabLine TabLineFill TabLineSel Title Tooltip VertSplit Visual VisualNOS WarningMsg WildMenu +syn keyword vimHLGroup contained ColorColumn Cursor CursorColumn CursorIM CursorLine CursorLineNr DiffAdd DiffChange DiffDelete DiffText Directory EndOfBuffer ErrorMsg FoldColumn Folded IncSearch LineNr MatchParen Menu ModeMsg MoreMsg NonText Normal Pmenu PmenuSbar PmenuSel PmenuThumb Question QuickFixLine Scrollbar Search SignColumn SpecialKey SpellBad SpellCap SpellLocal SpellRare StatusLine StatusLineNC StatusLineTerm TabLine TabLineFill TabLineSel Terminal Title Tooltip VertSplit Visual VisualNOS WarningMsg WildMenu syn match vimHLGroup contained "Conceal" syn case match " Function Names {{{2 -syn keyword vimFuncName contained abs append argv assert_fails assert_notequal atan browsedir bufname byte2line ceil ch_close ch_getbufnr ch_logfile ch_sendexpr cindent complete_add cos cursor diff_filler eval exepath extend filter floor foldclosed foldtextresult garbagecollect getbufvar getcmdline getcompletion getfperm getline getpos gettabinfo getwinposx glob2regpat haslocaldir histget hostname input inputsave isdirectory job_getchannel job_status js_encode len line2byte log10 mapcheck matcharg matchstr mkdir nr2char pow py3eval readfile remote_expr remote_send repeat screenattr search searchpos setbufvar setline setqflist setwinvar simplify soundfold sqrt strcharpart strftime string strridx submatch synID synstack tabpagebuflist tagfiles tanh term_getattr term_getline term_getstatus term_gettty term_sendkeys term_wait test_feedinput test_null_channel test_null_list test_override timer_pause timer_stopall tr undofile values wildmenumode win_findbuf winheight winline winrestview wordcount -syn keyword vimFuncName contained acos argc asin assert_false assert_notmatch atan2 bufexists bufnr byteidx changenr ch_close_in ch_getjob ch_open ch_sendraw clearmatches complete_check cosh deepcopy diff_hlID eventhandler exists feedkeys finddir fmod foldclosedend foreground get getchar getcmdpos getcurpos getfsize getloclist getqflist gettabvar getwinposy globpath hasmapto histnr iconv inputdialog inputsecret islocked job_info job_stop json_decode libcall lispindent luaeval match matchdelete matchstrpos mode or prevnonblank pyeval reltime remote_foreground remote_startserver resolve screenchar searchdecl server2client setcharsearch setloclist setreg sha256 sin spellbadword str2float strchars strgetchar strlen strtrans substitute synIDattr system tabpagenr taglist tempname term_getcursor term_getscrolled term_gettitle term_list term_setsize test_alloc_fail test_garbagecollect_now test_null_dict test_null_partial test_settime timer_start tolower trunc undotree virtcol winbufnr win_getid win_id2tabwin winnr winsaveview writefile -syn keyword vimFuncName contained add argidx assert_equal assert_inrange assert_report balloon_show buflisted bufwinid byteidxcomp char2nr ch_evalexpr ch_info ch_read ch_setoptions col confirm count delete empty executable exp filereadable findfile fnameescape foldlevel funcref getbufinfo getcharmod getcmdtype getcwd getftime getmatches getreg gettabwinvar getwinvar has histadd hlexists indent inputlist insert isnan job_setoptions join json_encode libcallnr localtime map matchadd matchend max mzeval pathshorten printf pyxeval reltimefloat remote_peek remove reverse screencol searchpair serverlist setcmdpos setmatches settabvar shellescape sinh spellsuggest str2nr strdisplaywidth stridx strpart strwidth synconcealed synIDtrans systemlist tabpagewinnr tan term_getaltscreen term_getjob term_getsize term_getttty term_scrape term_start test_autochdir test_ignore_error test_null_job test_null_string timer_info timer_stop toupper type uniq visualmode wincol win_gotoid win_id2win winrestcmd winwidth xor -syn keyword vimFuncName contained and arglistid assert_exception assert_match assert_true browse bufloaded bufwinnr call ch_canread ch_evalraw ch_log ch_readraw ch_status complete copy cscope_connection did_filetype escape execute expand filewritable float2nr fnamemodify foldtext function getbufline getcharsearch getcmdwintype getfontname getftype getpid getregtype getwininfo glob has_key histdel hlID index inputrestore invert items job_start js_decode keys line log maparg matchaddpos matchlist min nextnonblank perleval pumvisible range reltimestr remote_read rename round screenrow searchpairpos setbufline setfperm setpos settabwinvar shiftwidth sort split +syn keyword vimFuncName contained abs append argv assert_equalfile assert_inrange assert_report balloon_show bufexists bufnr byteidx changenr ch_close_in ch_getjob ch_open ch_sendraw clearmatches complete_check cosh deepcopy diff_hlID eventhandler exists feedkeys finddir fmod foldclosedend foreground get getchangelist getcmdline getcompletion getfperm getjumplist getpid getregtype getwininfo getwinvar has histadd hlexists indent inputlist insert isnan job_setoptions join json_encode libcallnr localtime map matchadd matchend max mzeval option_save pow py3eval readfile remote_expr remote_send repeat screenattr search searchpos setbufvar setline setqflist setwinvar simplify soundfold sqrt strchars stridx strridx substitute synIDtrans tabpagebuflist taglist term_dumpdiff term_getansicolors term_getline term_gettitle term_sendkeys term_setsize test_autochdir test_ignore_error test_null_job test_null_string timer_info timer_stop toupper trunc undotree virtcol winbufnr win_getid win_id2tabwin winnr winsaveview wordcount +syn keyword vimFuncName contained acos argc asin assert_exception assert_match assert_true balloon_split buflisted bufwinid byteidxcomp char2nr ch_evalexpr ch_info ch_read ch_setoptions col confirm count delete empty executable exp filereadable findfile fnameescape foldlevel funcref getbufinfo getchar getcmdpos getcurpos getfsize getline getpos gettabinfo getwinpos glob has_key histdel hlID index inputrestore invert items job_start js_decode keys line log maparg matchaddpos matchlist min nextnonblank or prevnonblank pyeval reltime remote_foreground remote_startserver resolve screenchar searchdecl server2client setcharsearch setloclist setreg sha256 sin spellbadword str2float strdisplaywidth string strtrans synconcealed synstack tabpagenr tan term_dumpload term_getattr term_getscrolled term_gettty term_setansicolors term_start test_feedinput test_null_channel test_null_list test_override timer_pause timer_stopall tr type uniq visualmode wincol win_gotoid win_id2win winrestcmd win_screenpos writefile +syn keyword vimFuncName contained add argidx assert_beeps assert_fails assert_notequal atan browse bufloaded bufwinnr call ch_canread ch_evalraw ch_log ch_readraw ch_status complete copy cscope_connection did_filetype escape execute expand filewritable float2nr fnamemodify foldtext function getbufline getcharmod getcmdtype getcwd getftime getloclist getqflist gettabvar getwinposx glob2regpat haslocaldir histget hostname input inputsave isdirectory job_getchannel job_status js_encode len line2byte log10 mapcheck matcharg matchstr mkdir nr2char pathshorten printf pyxeval reltimefloat remote_peek remove reverse screencol searchpair serverlist setcmdpos setmatches settabvar shellescape sinh spellsuggest str2nr strftime strlen strwidth synID system tabpagewinnr tanh term_dumpwrite term_getcursor term_getsize term_list term_setkill term_wait test_garbagecollect_now test_null_dict test_null_partial test_settime timer_start tolower trim undofile values wildmenumode win_findbuf winheight winline winrestview winwidth xor +syn keyword vimFuncName contained and arglistid assert_equal assert_false assert_notmatch atan2 browsedir bufname byte2line ceil ch_close ch_getbufnr ch_logfile ch_sendexpr cindent complete_add cos cursor diff_filler eval exepath extend filter floor foldclosed foldtextresult garbagecollect getbufvar getcharsearch getcmdwintype getfontname getftype getmatches getreg gettabwinvar getwinposy globpath hasmapto histnr iconv inputdialog inputsecret islocked job_info job_stop json_decode libcall lispindent luaeval match matchdelete matchstrpos mode option_restore perleval pumvisible range reltimestr remote_read rename round screenrow searchpairpos setbufline setfperm setpos settabwinvar shiftwidth sort split strcharpart strgetchar strpart submatch synIDattr systemlist tagfiles tempname term_getaltscreen term_getjob term_getstatus term_scrape term_setrestore test_alloc_fail "--- syntax here and above generated by mkvimvim --- " Special Vim Highlighting (not automatic) {{{1 @@ -670,8 +670,8 @@ if (g:vimsyn_embed =~# 'p' && has("perl")) && filereadable(s:perlpath) unlet! b:current_syntax syn cluster vimFuncBodyList add=vimPerlRegion exe "syn include @vimPerlScript ".s:perlpath - VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPerlScript - VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript + VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*\z(\S*\)\ze\(\s*["#].*\)\=$+ end=+^\z1\ze\(\s*[#"].*\)\=$+ contains=@vimPerlScript + VimFoldp syn region vimPerlRegion matchgroup=vimScriptDelim start=+pe\%[rl]\s*<<\s*$+ end=+\.$+ contains=@vimPerlScript syn cluster vimFuncBodyList add=vimPerlRegion else syn region vimEmbedError start=+pe\%[rl]\s*<<\s*\z(.*\)$+ end=+^\z1$+ @@ -693,8 +693,8 @@ if (g:vimsyn_embed =~# 'r' && has("ruby")) && filereadable(s:rubypath) syn cluster vimFuncBodyList add=vimRubyRegion unlet! b:current_syntax exe "syn include @vimRubyScript ".s:rubypath - VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimRubyScript - syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript + VimFoldr syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimRubyScript + syn region vimRubyRegion matchgroup=vimScriptDelim start=+rub[y]\s*<<\s*$+ end=+\.$+ contains=@vimRubyScript syn cluster vimFuncBodyList add=vimRubyRegion else syn region vimEmbedError start=+rub[y]\s*<<\s*\z(.*\)$+ end=+^\z1$+ @@ -716,10 +716,10 @@ if g:vimsyn_embed =~# 'P' && has("pythonx") && filereadable(s:pythonpath) unlet! b:current_syntax syn cluster vimFuncBodyList add=vimPythonRegion exe "syn include @vimPythonScript ".s:pythonpath - VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPythonScript - VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript - VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\s*<<\s*\z(.*\)$+ end=+^\z1$+ contains=@vimPythonScript - VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\=\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript + VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]3\=\s*<<\s*\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript + VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+py\%[thon]3\=\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript + VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\s*<<\s*\z(\S*\)\ze\(\s*#.*\)\=$+ end=+^\z1\ze\(\s*".*\)\=$+ contains=@vimPythonScript + VimFoldP syn region vimPythonRegion matchgroup=vimScriptDelim start=+Py\%[thon]2or3\=\s*<<\s*$+ end=+\.$+ contains=@vimPythonScript syn cluster vimFuncBodyList add=vimPythonRegion else syn region vimEmbedError start=+py\%[thon]3\=\s*<<\s*\z(.*\)$+ end=+^\z1$+ diff --git a/runtime/tutor/tutor.ru b/runtime/tutor/tutor.ru index 1194f60635..be6c1bd2f3 100644 --- a/runtime/tutor/tutor.ru +++ b/runtime/tutor/tutor.ru @@ -69,7 +69,7 @@ vimtutor 4. , , 1 3 - . + . ! :q! . . @@ -790,10 +790,10 @@ 1. , --->, xxx. - 2. R + 2. R , , xxx. - 3. . + 3. . , Σ. 4. xxx. diff --git a/runtime/tutor/tutor.ru.cp1251 b/runtime/tutor/tutor.ru.cp1251 index 3cd051f3cc..1cff3eae7d 100644 --- a/runtime/tutor/tutor.ru.cp1251 +++ b/runtime/tutor/tutor.ru.cp1251 @@ -69,7 +69,7 @@ vimtutor 4. , , 1 3 - . + . ! :q! . . @@ -790,10 +790,10 @@ 1. , --->, xxx. - 2. R + 2. R , , xxx. - 3. . + 3. . , . 4. xxx. diff --git a/src/po/de.po b/src/po/de.po index e7239e3aad..fa4ee9ca1b 100644 --- a/src/po/de.po +++ b/src/po/de.po @@ -11,14 +11,15 @@ msgid "" msgstr "" "Project-Id-Version: Vim(deutsch)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-10-15 22:00+0200\n" +"POT-Creation-Date: 2018-04-30 15:16+0200\n" "PO-Revision-Date: 2008-05-24 17:26+0200\n" -"Last-Translator: Christian Brabandt\n" -"Language-Team: German \n" +"Last-Translator: Christian Brabandt \n" +"Language-Team: German\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO_8859-1\n" "Content-Transfer-Encoding: 8-bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" msgid "E831: bf_key_init() called with empty password" msgstr "E831: bf_key_init() mit leerem passwort aufgerufen." @@ -535,21 +536,6 @@ msgstr "E743: Variable ist zu tief verschachtelt f msgid "E109: Missing ':' after '?'" msgstr "E109: Fehlender ':' nach '?'" -msgid "E691: Can only compare List with List" -msgstr "E691: Kann nur eine Liste mit einer Liste vergleichen." - -msgid "E692: Invalid operation for List" -msgstr "E692: Unzulssige Operation fr Listen" - -msgid "E735: Can only compare Dictionary with Dictionary" -msgstr "E735: Kann nur ein Dictionary mit einem Dictionary vergleichen" - -msgid "E736: Invalid operation for Dictionary" -msgstr "E736: Unzulssige Funktion fr ein Dictionary" - -msgid "E694: Invalid operation for Funcrefs" -msgstr "E694: Unzulssige Operation fr Funktionsreferenzen" - msgid "E804: Cannot use '%' with Float" msgstr "E804: Kann '%' mit Floats benutzen." @@ -678,6 +664,21 @@ msgstr "" "\n" "\tZuletzt gesetzt in " +msgid "E691: Can only compare List with List" +msgstr "E691: Kann nur eine Liste mit einer Liste vergleichen." + +msgid "E692: Invalid operation for List" +msgstr "E692: Unzulssige Operation fr Listen" + +msgid "E735: Can only compare Dictionary with Dictionary" +msgstr "E735: Kann nur ein Dictionary mit einem Dictionary vergleichen" + +msgid "E736: Invalid operation for Dictionary" +msgstr "E736: Unzulssige Funktion fr ein Dictionary" + +msgid "E694: Invalid operation for Funcrefs" +msgstr "E694: Unzulssige Operation fr Funktionsreferenzen" + msgid "map() argument" msgstr "map() Argument" @@ -703,6 +704,11 @@ msgstr "E785: complete() kann nur im Einf msgid "&Ok" msgstr "&Ok" +msgid "+-%s%3ld line: " +msgid_plural "+-%s%3ld lines: " +msgstr[0] "+-%s%3ld Zeile, " +msgstr[1] "+-%s%3ld Zeilen, " + #, c-format msgid "E700: Unknown function: %s" msgstr "E700: Unbekannte Funktion: %s" @@ -807,10 +813,19 @@ msgstr "E677: Fehler beim Schreiben einer tempor msgid "E921: Invalid callback argument" msgstr "E921: Unglgltiges Callback Argument" +msgid "<%s>%s%s %d, Hex %02x, Oct %03o, Digr %s" +msgstr "<%s>%s%s %d, Hex %02x, Oktal %03o, Digr %s" + #, c-format msgid "<%s>%s%s %d, Hex %02x, Octal %03o" msgstr "<%s>%s%s %d, Hex %02x, Oktal %03o" +msgid "> %d, Hex %04x, Oct %o, Digr %s" +msgstr "> %d, Hex %04x, Oktal %o, Digr %s" + +msgid "> %d, Hex %08x, Oct %o, Digr %s" +msgstr "> %d, Hex %08x, Oktal %o, Digr %s" + #, c-format msgid "> %d, Hex %04x, Octal %o" msgstr "> %d, Hex %04x, Oktal %o" @@ -1117,6 +1132,13 @@ msgstr "Keine Alt-Dateien" msgid "Entering Debug mode. Type \"cont\" to continue." msgstr "Debug-Modus. Geben Sie \"cont\" zum Fortsetzen ein." +msgid "Oldval = \"%s\"" +msgstr "Alter Wert = \"%s\"" + +#, c-format +msgid "Newval = \"%s\"" +msgstr "Neuer Wert = \"%s\"" + #, c-format msgid "line %ld: %s" msgstr "Zeile %ld: %s" @@ -1147,6 +1169,10 @@ msgstr "Keine Haltepunkte definiert" msgid "%3d %s %s line %ld" msgstr "%3d %s %s Zeile %ld" +#, c-format +msgid "%3d expr %s" +msgstr "%3d expr %s" + msgid "E750: First use \":profile start {fname}\"" msgstr "E750: Benutze vorher :profile start " @@ -1154,6 +1180,7 @@ msgstr "E750: Benutze vorher :profile start " msgid "Save changes to \"%s\"?" msgstr "nderungen in \"%s\" speichern?" +#, c-format msgid "E947: Job still running in buffer \"%s\"" msgstr "E947: Job noch aktiv in Puffer \"%s\"" @@ -1306,9 +1333,6 @@ msgstr "" msgid "E319: Sorry, the command is not available in this version" msgstr "E319: Der Befehl ist in dieser Version nicht implementiert" -msgid "E172: Only one file name allowed" -msgstr "E172: Nur ein Dateiname erlaubt" - msgid "1 more file to edit. Quit anyway?" msgstr "Eine weitere Datei zum Editieren. Trotzdem beenden?" @@ -1793,9 +1817,6 @@ msgstr "E509: Sicherungsdatei kann nicht angelegt werden (erzwinge mit !)" msgid "E510: Can't make backup file (add ! to override)" msgstr "E510: Sicherungsdatei kann nicht erstellt werden (erzwinge mit !)" -msgid "E460: The resource fork would be lost (add ! to override)" -msgstr "E460: Der Ressourcefork geht verloren (erzwinge mit !)" - msgid "E214: Can't find temp file for writing" msgstr "E214: Temporre Datei kann nicht zum Schreiben geffnet werden" @@ -1808,8 +1829,8 @@ msgstr "E166: Gelinkte Datei kann nicht zum Schreiben ge msgid "E212: Can't open file for writing" msgstr "E212: Datei kann nicht zum Schreiben geffnet werden" -msgid "E667: Fsync failed" -msgstr "E667: Fsync fehlgeschlagen" +msgid "E949: File changed while writing" +msgstr "E949: Datei wurde whrend des Schreibens verndert" msgid "E512: Close failed" msgstr "E512: Fehler beim Schlieen" @@ -2069,6 +2090,11 @@ msgid "E351: Cannot delete fold with current 'foldmethod'" msgstr "" "E351: Faltung kann mit der aktuellen Faltungsmethode nicht gelscht werden" +msgid "+--%3ld line folded " +msgid_plural "+--%3ld lines folded " +msgstr[0] "%3ld Zeile gefaltet " +msgstr[1] "%3ld Zeilen gefaltet " + msgid "E222: Add to read buffer" msgstr "E222: Zum Lesepuffer hinzufgen" @@ -4273,9 +4299,8 @@ msgstr "" "Sp %s von %s; Zeile %ld von %ld; Wort %lld von %lld; Zeichen %lld von %lld; " "Byte %lld von %lld" -#, c-format -msgid "(+%ld for BOM)" -msgstr "(+%ld fr BOM)" +msgid "(+%lld for BOM)" +msgstr "(+%lld fr BOM)" msgid "Thanks for flying Vim" msgstr "Danke fr die Benutzung von Vim" @@ -4327,6 +4352,9 @@ msgstr "E835: Widerspricht Wert aus 'fillchars'" msgid "E617: Cannot be changed in the GTK+ 2 GUI" msgstr "E617: Kann in der GTK+ 2 GUI nicht verndert werden" +msgid "E950: Cannot convert between %s and %s" +msgstr "E950: Kann nicht zwischen %s und %s konvertieren." + msgid "E524: Missing colon" msgstr "E524: Fehlender Doppelpunkt" @@ -4393,6 +4421,9 @@ msgstr "E590: Ein Vorschaufenster existiert bereits" msgid "W17: Arabic requires UTF-8, do ':set encoding=utf-8'" msgstr "W17: Arabisch bentigt UTF-8, bitte ':set encoding=utf-8' ausfhren" +msgid "E954: 24-bit colors are not supported on this environment" +msgstr "E954: 24-bit Farben werden in dieser Umgebung nicht untersttzt" + #, c-format msgid "E593: Need at least %d lines" msgstr "E593: Mindestens %d Zeilen werden bentigt" @@ -4678,6 +4709,9 @@ msgstr "Vim Achtung" msgid "shell returned %d" msgstr "Shell gab %d zurck" +msgid "E926: Current location list was changed" +msgstr "E926: Aktuelle Positionsliste wurde gendert." + #, c-format msgid "E372: Too many %%%c in format string" msgstr "E372: Zu viele %%%c im Format" @@ -4716,9 +4750,6 @@ msgstr "E924: Aktuelles Fenster wurde geschlossen." msgid "E925: Current quickfix was changed" msgstr "E925: Aktuelle Quickfix wurde gendert." -msgid "E926: Current location list was changed" -msgstr "E926: Aktuelle Positionsliste wurde gendert." - #, c-format msgid "(%d of %d)%s%s: " msgstr "(%d aus %d)%s%s: " @@ -4881,6 +4912,9 @@ msgstr "E877: (NFA regexp) Ung msgid "E867: (NFA) Unknown operator '\\z%c'" msgstr "E867: (NFA) Unbekannter Operator '\\z%c'" +msgid "E951: \\% value too large" +msgstr "E951: \\% Wert zu gro" + #, c-format msgid "E867: (NFA) Unknown operator '\\%%%c'" msgstr "E867: (NFA) Unbekannter Operator '\\%%%c'" @@ -5302,9 +5336,8 @@ msgstr "Lese W msgid "E760: No word count in %s" msgstr "E760: Keine Wrter gezhlt in %s" -#, c-format -msgid "line %6d, word %6d - %s" -msgstr "Zeile %6d, Wort %6d - %s" +msgid "line %6d, word %6ld - %s" +msgstr "Zeile %6d, Wort %6ld - %s" #, c-format msgid "Duplicate word in %s line %d: %s" @@ -5390,8 +5423,8 @@ msgstr "Gesch msgid "E751: Output file name must not have region name" msgstr "E751: Ausgabedatei darf keinen Regionsnamen haben" -msgid "E754: Only up to 8 regions supported" -msgstr "E754: Maximal 8 Regionen untersttzt" +msgid "E754: Only up to %ld regions supported" +msgstr "E754: Maximal %ld Regionen untersttzt" #, c-format msgid "E755: Invalid region in %s" @@ -5781,6 +5814,10 @@ msgstr "" msgid "Cannot open $VIMRUNTIME/rgb.txt" msgstr "Kann Datei $VIMRUNTIME/rgb.txt nicht ffnen." +#, c-format +msgid "Kill job in \"%s\"?" +msgstr "Beende job in \"%s\"?" + msgid "Terminal" msgstr "Terminal" @@ -5796,6 +5833,12 @@ msgstr "F msgid "finished" msgstr "beendet" +msgid "E953: File exists: %s" +msgstr "E953: Datei existiert bereits: %s" + +msgid "E955: Not a terminal buffer" +msgstr "E955: Kein Terminal Puffer" + msgid "new shell started\n" msgstr "neue Shell gestartet\n" @@ -6109,25 +6152,18 @@ msgstr "" msgid "" "\n" -"MacOS X (unix) version" -msgstr "" -"\n" -"MacOS X (unix) Version" - -msgid "" -"\n" -"MacOS X version" -msgstr "" -"\n" -"MacOS X Version" - -msgid "" -"\n" -"MacOS version" +"macOS version" msgstr "" "\n" "MacOS Version" +msgid "" +"\n" +"macOS version w/o darwin feat." +msgstr "" +"\n" +"MacOS Version ohne Darwin" + msgid "" "\n" "OpenVMS version" @@ -6230,9 +6266,6 @@ msgstr "mit Carbon GUI." msgid "with Cocoa GUI." msgstr "mit Cocoa GUI." -msgid "with (classic) GUI." -msgstr "mit (klassischem) GUI." - msgid " Features included (+) or not (-):\n" msgstr " Ein- (+) oder ausschlielich (-) der Eigenschaften:\n" @@ -6532,6 +6565,12 @@ msgstr "E474: Ung msgid "E475: Invalid argument: %s" msgstr "E475: Ungltiges Argument: %s" +msgid "E475: Invalid value for argument %s" +msgstr "E475: Ungltiger Wert fr Argument: %s" + +msgid "E475: Invalid value for argument %s: %s" +msgstr "E475: Ungltiger Wert fr Argument %s: %s" + #, c-format msgid "E15: Invalid expression: %s" msgstr "E15: ungltiger Ausdruck: %s" @@ -6550,6 +6589,9 @@ msgstr "E17: \"%s\" ist ein Verzeichnis" msgid "E364: Library call failed for \"%s()\"" msgstr "E364: Bibliotheksaufruf fr \"%s()\" schlug fehl" +msgid "E667: Fsync failed" +msgstr "E667: Fsync fehlgeschlagen" + #, c-format msgid "E448: Could not load library function %s" msgstr "E448: Bibliotheksfunktion %s konnte nicht geladen werden" @@ -6828,6 +6870,9 @@ msgstr "E850: Ung msgid "E919: Directory not found in '%s': \"%s\"" msgstr "E919: Verzeichnis nicht gefunden in '%s': \"%s\"" +msgid "E952: Autocommand caused recursive behavior" +msgstr "E952: Autokommando verursachten Rekursion" + msgid "search hit TOP, continuing at BOTTOM" msgstr "Suche erreichte den ANFANG und wurde am ENDE fortgesetzt" @@ -7101,3 +7146,48 @@ msgid "" msgstr "" "Fehler beim setzen des Pfades: sys.path ist keine Liste\n" "Fgen Sie vim.VIM_SPECIAL_PATH zu sys.path hinzu" + +msgid "" +"Vim macro files (*.vim)\t*.vim\n" +"All Files (*.*)\t*.*\n" +msgstr "" +"Vim Dateien (*.vim)\t*.vim\n" +"Alle Dateien (*.*)\t*.*\n" + +msgid "All Files (*.*)\t*.*\n" +msgstr "Alle Dateien (*.*)\t*.*\n" + +msgid "" +"All Files (*.*)\t*.*\n" +"C source (*.c, *.h)\t*.c;*.h\n" +"C++ source (*.cpp, *.hpp)\t*.cpp;*.hpp\n" +"VB code (*.bas, *.frm)\t*.bas;*.frm\n" +"Vim files (*.vim, _vimrc, _gvimrc)\t*.vim;_vimrc;_gvimrc\n" +msgstr "" +"Alle Dateien (*.*)\t*.*\n" +"C Quellcode (*.c, *.h)\t*.c;*.h\n" +"C++ Quellcode (*.cpp, *.hpp)\t*.cpp;*.hpp\n" +"VB Quellcode (*.bas, *.frm)\t*.bas;*.frm\n" +"Vim Dateien (*.vim, _vimrc, _gvimrc)\t*.vim;_vimrc;_gvimrc\n" + +msgid "" +"Vim macro files (*.vim)\t*.vim\n" +"All Files (*)\t*\n" +msgstr "" +"Vim Dateien (*.vim)\t*.vim\n" +"Alle Dateien (*)\t*\n" + +msgid "All Files (*)\t*\n" +msgstr "" +"Alle Dateien (*)\t*\n" + +msgid "" +"All Files (*)\t*\n" +"C source (*.c, *.h)\t*.c;*.h\n" +"C++ source (*.cpp, *.hpp)\t*.cpp;*.hpp\n" +"Vim files (*.vim, _vimrc, _gvimrc)\t*.vim;_vimrc;_gvimrc\n" +msgstr "" +"Alle Dateien (*)\t*\n" +"C Quellcode (*.c, *.h)\t*.c;*.h\n" +"C++ Quellcode (*.cpp, *.hpp)\t*.cpp;*.hpp\n" +"Vim Dateien (*.vim, _vimrc, _gvimrc)\t*.vim;_vimrc;_gvimrc\n" diff --git a/src/po/eo.po b/src/po/eo.po index cc0893de3a..8654fbc14d 100644 --- a/src/po/eo.po +++ b/src/po/eo.po @@ -17,8 +17,8 @@ msgid "" msgstr "" "Project-Id-Version: Vim(Esperanto)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-10-02 22:42+0200\n" -"PO-Revision-Date: 2017-10-02 22:57+0200\n" +"POT-Creation-Date: 2018-04-30 19:32+0200\n" +"PO-Revision-Date: 2018-05-30 20:14+0200\n" "Last-Translator: Dominique PELLÉ \n" "Language-Team: \n" "Language: eo\n" @@ -543,21 +543,6 @@ msgstr "E743: variablo ingita tro profunde por (mal)ŝlosi" msgid "E109: Missing ':' after '?'" msgstr "E109: Mankas ':' malantaŭ '?'" -msgid "E691: Can only compare List with List" -msgstr "E691: Eblas nur kompari Liston kun Listo" - -msgid "E692: Invalid operation for List" -msgstr "E692: Nevalida operacio de Listoj" - -msgid "E735: Can only compare Dictionary with Dictionary" -msgstr "E735: Eblas nur kompari Vortaron kun Vortaro" - -msgid "E736: Invalid operation for Dictionary" -msgstr "E736: Nevalida operacio de Vortaro" - -msgid "E694: Invalid operation for Funcrefs" -msgstr "E694: Nevalida operacio de Funcref-oj" - msgid "E804: Cannot use '%' with Float" msgstr "E804: Ne eblas uzi '%' kun Glitpunktnombro" @@ -683,6 +668,21 @@ msgstr "" "\n" "\tLaste ŝaltita de " +msgid "E691: Can only compare List with List" +msgstr "E691: Eblas nur kompari Liston kun Listo" + +msgid "E692: Invalid operation for List" +msgstr "E692: Nevalida operacio de Listoj" + +msgid "E735: Can only compare Dictionary with Dictionary" +msgstr "E735: Eblas nur kompari Vortaron kun Vortaro" + +msgid "E736: Invalid operation for Dictionary" +msgstr "E736: Nevalida operacio de Vortaro" + +msgid "E694: Invalid operation for Funcrefs" +msgstr "E694: Nevalida operacio de Funcref-oj" + msgid "map() argument" msgstr "argumento de map()" @@ -708,6 +708,12 @@ msgstr "E785: complete() uzeblas nur en Enmeta reĝimo" msgid "&Ok" msgstr "&Bone" +#, c-format +msgid "+-%s%3ld line: " +msgid_plural "+-%s%3ld lines: " +msgstr[0] "+-%s%3ld linio: " +msgstr[1] "+-%s%3ld linioj: " + #, c-format msgid "E700: Unknown function: %s" msgstr "E700: Nekonata funkcio: %s" @@ -810,10 +816,22 @@ msgstr "E677: Eraro dum skribo de provizora dosiero" msgid "E921: Invalid callback argument" msgstr "E921: Nevalida argumento de reagfunctio" +#, c-format +msgid "<%s>%s%s %d, Hex %02x, Oct %03o, Digr %s" +msgstr "<%s>%s%s %d, Deksesuma %02x, Okuma %03o, Digr %s" + #, c-format msgid "<%s>%s%s %d, Hex %02x, Octal %03o" msgstr "<%s>%s%s %d, Deksesuma %02x, Okuma %03o" +#, c-format +msgid "> %d, Hex %04x, Oct %o, Digr %s" +msgstr "> %d, Deksesuma %04x, Okuma %o, Digr %s" + +#, c-format +msgid "> %d, Hex %08x, Oct %o, Digr %s" +msgstr "> %d, Deksesuma %08x, Okuma %o, Digr %s" + #, c-format msgid "> %d, Hex %04x, Octal %o" msgstr "> %d, Deksesuma %04x, Okuma %o" @@ -1118,6 +1136,14 @@ msgstr "Neniu malnova dosiero" msgid "Entering Debug mode. Type \"cont\" to continue." msgstr "Eniras sencimigan reĝimon. Tajpu \"cont\" por daŭrigi." +#, c-format +msgid "Oldval = \"%s\"" +msgstr "Malnovaval = \"%s\"" + +#, c-format +msgid "Newval = \"%s\"" +msgstr "Novaval = \"%s\"" + #, c-format msgid "line %ld: %s" msgstr "linio %ld: %s" @@ -1148,6 +1174,10 @@ msgstr "Neniu kontrolpunkto estas difinita" msgid "%3d %s %s line %ld" msgstr "%3d %s %s linio %ld" +#, c-format +msgid "%3d expr %s" +msgstr "%3d espr %s" + msgid "E750: First use \":profile start {fname}\"" msgstr "E750: Uzu unue \":profile start {dosiernomo}\"" @@ -1302,9 +1332,6 @@ msgstr "E943: Tabulo de komandoj estas ĝisdatigenda, lanĉu 'make cmdidx'" msgid "E319: Sorry, the command is not available in this version" msgstr "E319: Bedaŭrinde, tiu komando ne haveblas en tiu versio" -msgid "E172: Only one file name allowed" -msgstr "E172: Nur unu dosiernomo permesebla" - msgid "1 more file to edit. Quit anyway?" msgstr "1 plia redaktenda dosiero. Ĉu tamen eliri?" @@ -1781,9 +1808,6 @@ msgstr "E509: Ne eblas krei restaŭrkopion (aldonu ! por transpasi)" msgid "E510: Can't make backup file (add ! to override)" msgstr "E510: Ne eblas krei restaŭrkopion (aldonu ! por transpasi)" -msgid "E460: The resource fork would be lost (add ! to override)" -msgstr "E460: La rimeda forko estus perdita (aldonu ! por transpasi)" - msgid "E214: Can't find temp file for writing" msgstr "E214: Ne eblas trovi provizoran dosieron por skribi" @@ -1796,9 +1820,8 @@ msgstr "E166: Ne eblas malfermi ligitan dosieron por skribi" msgid "E212: Can't open file for writing" msgstr "E212: Ne eblas malfermi la dosieron por skribi" -# AM: fsync: ne traduku (nomo de C-komando) -msgid "E667: Fsync failed" -msgstr "E667: Fsync malsukcesis" +msgid "E949: File changed while writing" +msgstr "E949: Dosiero ŝanĝiĝis dum skribo" msgid "E512: Close failed" msgstr "E512: Fermo malsukcesis" @@ -2047,11 +2070,17 @@ msgstr "E350: Ne eblas krei faldon per la aktuala 'foldmethod'" msgid "E351: Cannot delete fold with current 'foldmethod'" msgstr "E351: Ne eblas forviŝi faldon per la aktuala 'foldmethod'" +#, c-format +msgid "+--%3ld line folded " +msgid_plural "+--%3ld lines folded " +msgstr[0] "+--%3ld linio faldita" +msgstr[1] "+--%3ld linioj falditaj" + msgid "E222: Add to read buffer" msgstr "E222: Aldoni al lega bufro" msgid "E223: recursive mapping" -msgstr "E223: rekursia mapo" +msgstr "E223: rikura mapo" #, c-format msgid "E224: global abbreviation already exists for %s" @@ -4221,8 +4250,8 @@ msgstr "" "Bajto %lld de %lld" #, c-format -msgid "(+%ld for BOM)" -msgstr "(+%ld por BOM)" +msgid "(+%lld for BOM)" +msgstr "(+%lld por BOM)" msgid "Thanks for flying Vim" msgstr "Dankon pro flugi per Vim" @@ -4274,6 +4303,10 @@ msgstr "E835: Konfliktoj kun la valoro de 'fillchars'" msgid "E617: Cannot be changed in the GTK+ 2 GUI" msgstr "E617: Ne ŝanĝeblas en la grafika interfaco GTK+ 2" +#, c-format +msgid "E950: Cannot convert between %s and %s" +msgstr "E950: Ne eblas konverti de %s al %s" + msgid "E524: Missing colon" msgstr "E524: Mankas dupunkto" @@ -4340,6 +4373,9 @@ msgstr "E590: Antaŭvida fenestro jam ekzistas" msgid "W17: Arabic requires UTF-8, do ':set encoding=utf-8'" msgstr "W17: La araba bezonas UTF-8, tajpu \":set encoding=utf-8\"" +msgid "E954: 24-bit colors are not supported on this environment" +msgstr "E954: 24-bitaj koloroj ne estas subtenataj en tiu sistemo" + #, c-format msgid "E593: Need at least %d lines" msgstr "E593: Bezonas almenaŭ %d liniojn" @@ -4626,6 +4662,9 @@ msgstr "Averto de Vim" msgid "shell returned %d" msgstr "la ŝelo liveris %d" +msgid "E926: Current location list was changed" +msgstr "E926: Aktuala listo de lokoj ŝanĝiĝis" + #, c-format msgid "E372: Too many %%%c in format string" msgstr "E372: Tro da %%%c en formata ĉeno" @@ -4664,9 +4703,6 @@ msgstr "E924: Aktuala vindozo fermiĝis" msgid "E925: Current quickfix was changed" msgstr "E925: Aktuala rapidriparo ŝanĝiĝis" -msgid "E926: Current location list was changed" -msgstr "E926: Aktuala listo de lokoj ŝanĝiĝis" - #, c-format msgid "(%d of %d)%s%s: " msgstr "(%d de %d)%s%s: " @@ -4830,6 +4866,9 @@ msgstr "E877: (NFA-regulesprimo) Nevalida klaso de signoj: %ld" msgid "E867: (NFA) Unknown operator '\\z%c'" msgstr "E867: (NFA) Nekonata operatoro '\\z%c'" +msgid "E951: \\% value too large" +msgstr "E951: tro larga valoro de \\%" + #, c-format msgid "E867: (NFA) Unknown operator '\\%%%c'" msgstr "E867: (NFA) Nekonata operatoro '\\%%%c'" @@ -5248,8 +5287,8 @@ msgid "E760: No word count in %s" msgstr "E760: Ne estas nombro de vortoj en %s" #, c-format -msgid "line %6d, word %6d - %s" -msgstr "linio %6d, vorto %6d - %s" +msgid "line %6d, word %6ld - %s" +msgstr "linio %6d, vorto %6ld - %s" #, c-format msgid "Duplicate word in %s line %d: %s" @@ -5335,8 +5374,9 @@ msgstr "Evaluo de memoro uzata: %d bajtoj" msgid "E751: Output file name must not have region name" msgstr "E751: Nomo de eliga dosiero ne devas havi nomon de regiono" -msgid "E754: Only up to 8 regions supported" -msgstr "E754: Nur 8 regionoj subtenataj" +#, c-format +msgid "E754: Only up to %ld regions supported" +msgstr "E754: Nur ĝis %ld regionoj subtenataj" #, c-format msgid "E755: Invalid region in %s" @@ -5723,6 +5763,10 @@ msgstr "" msgid "Cannot open $VIMRUNTIME/rgb.txt" msgstr "Ne povas malfermi $VIMRUNTIME/rgb.txt" +#, c-format +msgid "Kill job in \"%s\"?" +msgstr "Ĉu ĉesigi taskon en \"%s\"?" + msgid "Terminal" msgstr "Terminalo" @@ -5738,6 +5782,13 @@ msgstr "ruliĝas" msgid "finished" msgstr "finiĝis" +#, c-format +msgid "E953: File exists: %s" +msgstr "E953: Dosiero jam ekzistas: %s" + +msgid "E955: Not a terminal buffer" +msgstr "E955: Ne estas bufro de terminalo" + msgid "new shell started\n" msgstr "nova ŝelo lanĉita\n" @@ -6043,24 +6094,17 @@ msgstr "" msgid "" "\n" -"MacOS X (unix) version" +"macOS version" msgstr "" "\n" -"Versio Mak OS X (unikso)" +"Versio makOS" msgid "" "\n" -"MacOS X version" +"macOS version w/o darwin feat." msgstr "" "\n" -"Versio Mak OS X" - -msgid "" -"\n" -"MacOS version" -msgstr "" -"\n" -"Versio Mak OS" +"Versio makOS sen ebloj de darwin." msgid "" "\n" @@ -6164,9 +6208,6 @@ msgstr "kun grafika interfaco Carbon." msgid "with Cocoa GUI." msgstr "kun grafika interfaco Cocoa." -msgid "with (classic) GUI." -msgstr "kun (klasika) grafika interfaco." - msgid " Features included (+) or not (-):\n" msgstr " Ebloj inkluzivitaj (+) aŭ ne (-):\n" @@ -6474,6 +6515,14 @@ msgstr "E474: Nevalida argumento" msgid "E475: Invalid argument: %s" msgstr "E475: Nevalida argumento: %s" +#, c-format +msgid "E475: Invalid value for argument %s" +msgstr "E475: Nevalida valoro de argumento: %s" + +#, c-format +msgid "E475: Invalid value for argument %s: %s" +msgstr "E475: Nevalida valoro de argumento %s: %s" + #, c-format msgid "E15: Invalid expression: %s" msgstr "E15: Nevalida esprimo: %s" @@ -6492,6 +6541,10 @@ msgstr "E17: \"%s\" estas dosierujo" msgid "E364: Library call failed for \"%s()\"" msgstr "E364: Alvoko al biblioteko malsukcesis por \"%s()\"" +# AM: fsync: ne traduku (nomo de C-komando) +msgid "E667: Fsync failed" +msgstr "E667: Fsync malsukcesis" + #, c-format msgid "E448: Could not load library function %s" msgstr "E448: Ne eblis ŝargi bibliotekan funkcion %s" @@ -6762,6 +6815,9 @@ msgstr "E850: Nevalida nomo de reĝistro" msgid "E919: Directory not found in '%s': \"%s\"" msgstr "E919: Dosierujo ne trovita en '%s': \"%s\"" +msgid "E952: Autocommand caused recursive behavior" +msgstr "E952: Aŭtokomandoj kaŭzis rikiran konduton" + msgid "search hit TOP, continuing at BOTTOM" msgstr "serĉo atingis SUPRON, daŭrigonte al SUBO" @@ -7024,3 +7080,47 @@ msgid "" msgstr "" "Agordo de serĉvojo malsukcesis: sys.path ne estas listo\n" "Vi nun devas aldoni vim.VIM_SPECIAL_PATH al sys.path" + +msgid "" +"Vim macro files (*.vim)\t*.vim\n" +"All Files (*.*)\t*.*\n" +msgstr "" +"Doserioj de vim-makrooj (*.vim)\t*.vim\n" +"Ĉiuj dosieroj (*.*)\t*.*\n" + +msgid "All Files (*.*)\t*.*\n" +msgstr "Ĉiuj dosieroj (*.*)\t*.*\n" + +msgid "" +"All Files (*.*)\t*.*\n" +"C source (*.c, *.h)\t*.c;*.h\n" +"C++ source (*.cpp, *.hpp)\t*.cpp;*.hpp\n" +"VB code (*.bas, *.frm)\t*.bas;*.frm\n" +"Vim files (*.vim, _vimrc, _gvimrc)\t*.vim;_vimrc;_gvimrc\n" +msgstr "" +"Ĉiuj dosieroj (*.*)\t*.*\n" +"Dosieroj C (*.c, *.h)\t*.c;*.h\n" +"Dosieroj C++ (*.cpp, *.hpp)\t*.cpp;*.hpp\n" +"Fonto VB (*.bas, *.frm)\t.bas;*.frm\n" +"Dosieroj Vim (*.vim, _vimrc, _gvimrc)\t*.vim;_vimrc;_gvimrc\n" + +msgid "" +"Vim macro files (*.vim)\t*.vim\n" +"All Files (*)\t*\n" +msgstr "" +"Doserioj de vim-makrooj (*.vim)\t*.vim\n" +"Ĉiuj dosieroj (*)\t*\n" + +msgid "All Files (*)\t*\n" +msgstr "Ĉiuj dosieroj (*)\t*\n" + +msgid "" +"All Files (*)\t*\n" +"C source (*.c, *.h)\t*.c;*.h\n" +"C++ source (*.cpp, *.hpp)\t*.cpp;*.hpp\n" +"Vim files (*.vim, _vimrc, _gvimrc)\t*.vim;_vimrc;_gvimrc\n" +msgstr "" +"Ĉiuj dosieroj (*)\t*\n" +"Dosieroj C (*.c, *.h)\t*.c;*.h\n" +"Dosieroj C++ (*.cpp, *.hpp)\t*.cpp;*.hpp\n" +"Dosieroj Vim (*.vim, _vimrc, _gvimrc)\t*.vim;_vimrc;_gvimrc\n" diff --git a/src/po/fr.po b/src/po/fr.po index c1bd43ac6d..3b8328c3ad 100644 --- a/src/po/fr.po +++ b/src/po/fr.po @@ -6,14 +6,14 @@ # FIRST AUTHOR DindinX 2000. # SECOND AUTHOR Adrien Beau 2002, 2003. # THIRD AUTHOR David Blanchet 2006, 2008. -# FOURTH AUTHOR Dominique Pell 2008, 2017. +# FOURTH AUTHOR Dominique Pell 2008, 2018. # msgid "" msgstr "" "Project-Id-Version: Vim(Franais)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-10-04 23:32+0200\n" -"PO-Revision-Date: 2017-10-04 23:44+0200\n" +"POT-Creation-Date: 2018-04-27 17:51+0200\n" +"PO-Revision-Date: 2018-04-27 18:06+0200\n" "Last-Translator: Dominique Pell \n" "Language-Team: \n" "Language: fr\n" @@ -592,7 +592,7 @@ msgstr "E108: Variable inexistante : %s" #, c-format msgid "E940: Cannot lock or unlock variable %s" -msgstr "E940: Impossible de (d)verrouiler la variable %s" +msgstr "E940: Impossible de (d)verrouiller la variable %s" msgid "E743: variable nested too deep for (un)lock" msgstr "E743: variable trop imbrique pour la (d)verrouiller" @@ -602,21 +602,6 @@ msgstr "E743: variable trop imbriqu msgid "E109: Missing ':' after '?'" msgstr "E109: Il manque ':' aprs '?'" -msgid "E691: Can only compare List with List" -msgstr "E691: Une Liste ne peut tre compare qu'avec une Liste" - -msgid "E692: Invalid operation for List" -msgstr "E692: Opration invalide avec les Liste" - -msgid "E735: Can only compare Dictionary with Dictionary" -msgstr "E735: Un Dictionnaire ne peut tre compar qu'avec un Dictionnaire" - -msgid "E736: Invalid operation for Dictionary" -msgstr "E736: Opration invalide avec les Dictionnaires" - -msgid "E694: Invalid operation for Funcrefs" -msgstr "E694: Opration invalide avec les Funcrefs" - msgid "E804: Cannot use '%' with Float" msgstr "E804: Impossible d'utiliser '%' avec un Flottant" @@ -751,6 +736,21 @@ msgstr "" "\n" "\tModifi la dernire fois dans " +msgid "E691: Can only compare List with List" +msgstr "E691: Une Liste ne peut tre compare qu'avec une Liste" + +msgid "E692: Invalid operation for List" +msgstr "E692: Opration invalide avec les Liste" + +msgid "E735: Can only compare Dictionary with Dictionary" +msgstr "E735: Un Dictionnaire ne peut tre compar qu'avec un Dictionnaire" + +msgid "E736: Invalid operation for Dictionary" +msgstr "E736: Opration invalide avec les Dictionnaires" + +msgid "E694: Invalid operation for Funcrefs" +msgstr "E694: Opration invalide avec les Funcrefs" + msgid "map() argument" msgstr "argument de map()" @@ -778,6 +778,12 @@ msgstr "E785: complete() n'est utilisable que dans le mode Insertion" msgid "&Ok" msgstr "&Ok" +#, c-format +msgid "+-%s%3ld line: " +msgid_plural "+-%s%3ld lines: " +msgstr[0] "+-%s%3ld ligne : " +msgstr[1] "+-%s%3ld lignes : " + #, c-format msgid "E700: Unknown function: %s" msgstr "E700: Fonction inconnue : %s" @@ -885,10 +891,22 @@ msgstr "E677: Erreur lors de l' msgid "E921: Invalid callback argument" msgstr "E921: Argument de callback invalide" +#, c-format +msgid "<%s>%s%s %d, Hex %02x, Oct %03o, Digr %s" +msgstr "<%s>%s%s %d, Hexa %02x, Octal %03o, Digr %s" + #, c-format msgid "<%s>%s%s %d, Hex %02x, Octal %03o" msgstr "<%s>%s%s %d, Hexa %02x, Octal %03o" +#, c-format +msgid "> %d, Hex %04x, Oct %o, Digr %s" +msgstr "> %d, Hexa %04x, Octal %o, Digr %s" + +#, c-format +msgid "> %d, Hex %08x, Oct %o, Digr %s" +msgstr "> %d, Hexa %08x, Octal %o, Digr %s" + #, c-format msgid "> %d, Hex %04x, Octal %o" msgstr "> %d, Hexa %04x, Octal %o" @@ -1278,6 +1296,14 @@ msgstr "Aucun vieux fichier" msgid "Entering Debug mode. Type \"cont\" to continue." msgstr "Mode dbogage activ. Tapez \"cont\" pour continuer." +#, c-format +msgid "Oldval = \"%s\"" +msgstr "Ancienneval = \"%s\"" + +#, c-format +msgid "Newval = \"%s\"" +msgstr "Nouvelleval = \"%s\"" + #, c-format msgid "line %ld: %s" msgstr "ligne %ld : %s" @@ -1310,6 +1336,10 @@ msgstr "Aucun point d'arr msgid "%3d %s %s line %ld" msgstr "%3d %s %s ligne %ld" +#, c-format +msgid "%3d expr %s" +msgstr "%3d expr %s" + msgid "E750: First use \":profile start {fname}\"" msgstr "E750: Utilisez d'abord \":profile start {nomfichier}\"" @@ -1472,9 +1502,6 @@ msgstr "" msgid "E319: Sorry, the command is not available in this version" msgstr "E319: Dsol, cette commande n'est pas disponible dans cette version" -msgid "E172: Only one file name allowed" -msgstr "E172: Un seul nom de fichier autoris" - msgid "1 more file to edit. Quit anyway?" msgstr "Encore 1 fichier diter. Quitter tout de mme ?" @@ -1964,10 +1991,6 @@ msgid "E510: Can't make backup file (add ! to override)" msgstr "" "E510: Impossible de gnrer la copie de secours (ajoutez ! pour passer outre)" -msgid "E460: The resource fork would be lost (add ! to override)" -msgstr "" -"E460: Les ressources partages seraient perdues (ajoutez ! pour passer outre)" - msgid "E214: Can't find temp file for writing" msgstr "E214: Impossible de gnrer un fichier temporaire pour y crire" @@ -1980,8 +2003,8 @@ msgstr "E166: Impossible d'ouvrir le lien pour y msgid "E212: Can't open file for writing" msgstr "E212: Impossible d'ouvrir le fichier pour y crire" -msgid "E667: Fsync failed" -msgstr "E667: Fsynch a chou" +msgid "E949: File changed while writing" +msgstr "E949: Fichier modifi aprs criture" msgid "E512: Close failed" msgstr "E512: Erreur de fermeture de fichier" @@ -2237,6 +2260,12 @@ msgstr "E350: Impossible de cr msgid "E351: Cannot delete fold with current 'foldmethod'" msgstr "E351: Impossible de supprimer un repli avec la 'foldmethod'e actuelle" +#, c-format +msgid "+--%3ld line folded " +msgid_plural "+--%3ld lines folded " +msgstr[0] "+--%3ld ligne dplace " +msgstr[1] "+--%3ld lignes dplaces " + msgid "E222: Add to read buffer" msgstr "E222: Ajout au tampon de lecture" @@ -3370,7 +3399,8 @@ msgid "-i \t\tUse instead of .viminfo" msgstr "-i \t\tUtiliser au lieu du viminfo habituel" msgid "--clean\t\t'nocompatible', Vim defaults, no plugins, no viminfo" -msgstr "--clean\t\t'nocompatible', rglages par dfaut, aucun greffon ni viminfo" +msgstr "" +"--clean\t\t'nocompatible', rglages par dfaut, aucun greffon ni viminfo" msgid "-h or --help\tPrint Help (this message) and exit" msgstr "-h ou --help\t\tAfficher l'aide (ce message) puis quitter" @@ -4448,8 +4478,8 @@ msgstr "" "sur %lld ; Octet %lld sur %lld" #, c-format -msgid "(+%ld for BOM)" -msgstr "(+%ld pour le BOM)" +msgid "(+%lld for BOM)" +msgstr "(+%lld pour le BOM)" msgid "Thanks for flying Vim" msgstr "Merci d'avoir choisi Vim" @@ -4501,6 +4531,10 @@ msgstr "E835: Conflits avec la valeur de 'fillchars'" msgid "E617: Cannot be changed in the GTK+ 2 GUI" msgstr "E617: Non modifiable dans l'interface graphique GTK+ 2" +#, c-format +msgid "E950: Cannot convert between %s and %s" +msgstr "E950: Impossible de convertir de %s %s" + msgid "E524: Missing colon" msgstr "E524: ':' manquant" @@ -4562,7 +4596,8 @@ msgid "E542: unbalanced groups" msgstr "E542: parenthses non quilibres" msgid "E946: Cannot make a terminal with running job modifiable" -msgstr "E946: terminal avec tche en cours d'excution ne peut pas tre modifiable" +msgstr "" +"E946: terminal avec tche en cours d'excution ne peut pas tre modifiable" msgid "E590: A preview window already exists" msgstr "E590: Il existe dj une fentre de prvisualisation" @@ -4570,6 +4605,9 @@ msgstr "E590: Il existe d msgid "W17: Arabic requires UTF-8, do ':set encoding=utf-8'" msgstr "W17: L'arabe ncessite l'UTF-8, tapez ':set encoding=utf-8'" +msgid "E954: 24-bit colors are not supported on this environment" +msgstr "E954: Couleurs en 24-bits non-supportes sur cet environnement." + #, c-format msgid "E593: Need at least %d lines" msgstr "E593: Au moins %d lignes sont ncessaires" @@ -4857,6 +4895,9 @@ msgstr "Alerte Vim" msgid "shell returned %d" msgstr "le shell a retourn %d" +msgid "E926: Current location list was changed" +msgstr "E926: La liste d'emplacements courante a chang" + #, c-format msgid "E372: Too many %%%c in format string" msgstr "E372: Trop de %%%c dans la chane de format" @@ -4895,9 +4936,6 @@ msgstr "E924: La fen msgid "E925: Current quickfix was changed" msgstr "E925: Le quickfix courant a chang" -msgid "E926: Current location list was changed" -msgstr "E926: La liste d'emplacements courante a chang" - #, c-format msgid "(%d of %d)%s%s: " msgstr "(%d sur %d)%s%s : " @@ -5060,6 +5098,9 @@ msgstr "E877: (regexp NFA) Classe de caract msgid "E867: (NFA) Unknown operator '\\z%c'" msgstr "E867: (NFA) Oprateur inconnu '\\z%c'" +msgid "E951: \\% value too large" +msgstr "E951: valeur \\% trop grande" + #, c-format msgid "E867: (NFA) Unknown operator '\\%%%c'" msgstr "E867: (NFA) Oprateur inconnu '\\%%%c'" @@ -5483,8 +5524,8 @@ msgid "E760: No word count in %s" msgstr "E760: Nombre de mots non indiqu dans %s" #, c-format -msgid "line %6d, word %6d - %s" -msgstr "ligne %6d, mot %6d - %s" +msgid "line %6d, word %6ld - %s" +msgstr "ligne %6d, mot %6ld - %s" #, c-format msgid "Duplicate word in %s line %d: %s" @@ -5570,8 +5611,9 @@ msgstr "Estimation de m msgid "E751: Output file name must not have region name" msgstr "E751: Le nom du fichier ne doit pas contenir de nom de rgion" -msgid "E754: Only up to 8 regions supported" -msgstr "E754: 8 rgions au maximum sont supportes" +#, c-format +msgid "E754: Only up to %ld regions supported" +msgstr "E754: %ld rgions au maximum supportes" #, c-format msgid "E755: Invalid region in %s" @@ -5966,6 +6008,10 @@ msgstr "" msgid "Cannot open $VIMRUNTIME/rgb.txt" msgstr "Impossible d'ouvrir $VIMRUNTIME/rgb.txt" +#, c-format +msgid "Kill job in \"%s\"?" +msgstr "Terminer la tche d'excution dans \"%s\"?" + msgid "Terminal" msgstr "Terminal" @@ -5981,6 +6027,13 @@ msgstr "en cours" msgid "finished" msgstr "fini" +#, c-format +msgid "E953: File exists: %s" +msgstr "E953: Le fichier existe dj : %s" + +msgid "E955: Not a terminal buffer" +msgstr "E955: Ce n'est pas un buffer de terminal" + msgid "new shell started\n" msgstr "nouveau shell dmarr\n" @@ -6312,24 +6365,17 @@ msgstr "" msgid "" "\n" -"MacOS X (unix) version" +"macOS version" msgstr "" "\n" -"Version MaxOS X (unix)" +"Version macOS" msgid "" "\n" -"MacOS X version" +"macOS version w/o darwin feat." msgstr "" "\n" -"Version MacOS X" - -msgid "" -"\n" -"MacOS version" -msgstr "" -"\n" -"Version MacOS" +"Version macOS sans fonctionalits darwin" msgid "" "\n" @@ -6433,9 +6479,6 @@ msgstr "avec interface graphique Carbon." msgid "with Cocoa GUI." msgstr "avec interface graphique Cocoa." -msgid "with (classic) GUI." -msgstr "avec interface graphique (classic)." - msgid " Features included (+) or not (-):\n" msgstr " Fonctionnalits incluses (+) ou non (-) :\n" @@ -6740,6 +6783,14 @@ msgstr "E474: Argument invalide" msgid "E475: Invalid argument: %s" msgstr "E475: Argument invalide : %s" +#, c-format +msgid "E475: Invalid value for argument %s" +msgstr "E475: Valeur d'argument invalide : %s" + +#, c-format +msgid "E475: Invalid value for argument %s: %s" +msgstr "E475: Valeur d'argument invalide %s : %s" + #, c-format msgid "E15: Invalid expression: %s" msgstr "E15: Expression invalide : %s" @@ -6758,6 +6809,9 @@ msgstr "E17: \"%s\" est un r msgid "E364: Library call failed for \"%s()\"" msgstr "E364: L'appel la bibliothque a chou pour \"%s()\"" +msgid "E667: Fsync failed" +msgstr "E667: Fsynch a chou" + #, c-format msgid "E448: Could not load library function %s" msgstr "E448: Impossible de charger la fonction %s de la bibliothque" @@ -7032,6 +7086,9 @@ msgstr "E850: Nom de registre invalide" msgid "E919: Directory not found in '%s': \"%s\"" msgstr "E919: Rpertoire introuvable dans '%s' : \"%s\"" +msgid "E952: Autocommand caused recursive behavior" +msgstr "E952: Une autocommande a caus une rcursivit" + msgid "search hit TOP, continuing at BOTTOM" msgstr "La recherche a atteint le HAUT, et continue en BAS" diff --git a/src/po/ru.cp1251.po b/src/po/ru.cp1251.po index 6170f3b128..74aab64108 100644 --- a/src/po/ru.cp1251.po +++ b/src/po/ru.cp1251.po @@ -3,20 +3,22 @@ # Vim ":help uganda" # # vassily "vr" ragosin , 2004 -# Sergey Alyoshin , 2013-2014 +# Sergey Alyoshin , 2013-2014, 2016, 2018 # msgid "" msgstr "" "Project-Id-Version: vim_ru\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-10-10 11:52+0400\n" -"PO-Revision-Date: 2014-10-10 12:00+0400\n" +"POT-Creation-Date: 2018-04-28 21:50+0300\n" +"PO-Revision-Date: 2018-04-28 21:51+0300\n" "Last-Translator: Sergey Alyoshin \n" "Language-Team: \n" "Language: Russian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=cp1251\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" msgid "E831: bf_key_init() called with empty password" msgstr "E831: bf_key_init() " @@ -49,6 +51,12 @@ msgstr "E82: msgid "E83: Cannot allocate buffer, using other one..." msgstr "E83: , ..." +msgid "E931: Buffer cannot be registered" +msgstr "E931: " + +msgid "E937: Attempt to delete a buffer that is in use" +msgstr "E937: " + msgid "E515: No buffers were unloaded" msgstr "E515: " @@ -85,14 +93,9 @@ msgstr "E90: msgid "E84: No modified buffer found" msgstr "E84: " -#. back where we started, didn't find anything. msgid "E85: There is no listed buffer" msgstr "E85: " -#, c-format -msgid "E86: Buffer %ld does not exist" -msgstr "E86: %ld " - msgid "E87: Cannot go beyond last buffer" msgstr "E87: " @@ -104,6 +107,18 @@ msgid "E89: No write since last change for buffer %ld (add ! to override)" msgstr "" "E89: %ld ( !, )" +msgid "E948: Job still running (add ! to end the job)" +msgstr "E948: ( !, )" + +msgid "E37: No write since last change (add ! to override)" +msgstr "E37: ( !, )" + +msgid "E948: Job still running" +msgstr "E948: " + +msgid "E37: No write since last change" +msgstr "E37: " + msgid "W14: Warning: List of file names overflow" msgstr "W14: : " @@ -159,7 +174,6 @@ msgstr " msgid "[No Name]" msgstr "[ ]" -#. must be a help buffer msgid "help" msgstr "" @@ -185,6 +199,10 @@ msgstr "" "\n" "# :\n" +msgid "E382: Cannot write, 'buftype' option is set" +msgstr "" +"E382: , 'buftype' " + msgid "[Scratch]" msgstr "[]" @@ -203,9 +221,64 @@ msgstr " msgid " line=%ld id=%d name=%s" msgstr " =%ld id=%d =%s" +msgid "E902: Cannot connect to port" +msgstr "E902: " + +msgid "E901: gethostbyname() in channel_open()" +msgstr "E901: gethostbyname() channel_open()" + +msgid "E898: socket() in channel_open()" +msgstr "E898: socket() channel_open()" + +msgid "E903: received command with non-string argument" +msgstr "E903: " + +msgid "E904: last argument for expr/call must be a number" +msgstr "E904: " + +msgid "E904: third argument for call must be a list" +msgstr "E904: " + +#, c-format +msgid "E905: received unknown command: %s" +msgstr "E905: %s" + +#, c-format +msgid "E630: %s(): write while not connected" +msgstr "E630: %s(): " + +#, c-format +msgid "E631: %s(): write failed" +msgstr "E631: %s()" + +#, c-format +msgid "E917: Cannot use a callback with %s()" +msgstr "E917: %s()" + +msgid "E912: cannot use ch_evalexpr()/ch_sendexpr() with a raw or nl channel" +msgstr "" +"E912: ch_evalexpr() ch_sendexpr() nl " +" raw" + +msgid "E906: not an open channel" +msgstr "E906: " + +msgid "E920: _io file requires _name to be set" +msgstr "E920: _io _name" + +msgid "E915: in_io buffer requires in_buf or in_name to be set" +msgstr "E915: in_io in_buf in_name" + +#, c-format +msgid "E918: buffer must be loaded: %s" +msgstr "E918: : %s" + msgid "E821: File is encrypted with unknown method" msgstr "E821: " +msgid "Warning: Using a weak encryption method; see :help 'cm'" +msgstr ": , . :help 'cm'" + msgid "Enter encryption key: " msgstr " : " @@ -219,7 +292,30 @@ msgid "[crypted]" msgstr "[]" #, c-format -msgid "E96: Can not diff more than %ld buffers" +msgid "E720: Missing colon in Dictionary: %s" +msgstr "E720: : %s" + +#, c-format +msgid "E721: Duplicate key in Dictionary: \"%s\"" +msgstr "E721: : \"%s\"" + +#, c-format +msgid "E722: Missing comma in Dictionary: %s" +msgstr "E722: : %s" + +#, c-format +msgid "E723: Missing end of Dictionary '}': %s" +msgstr "E723: '}': %s" + +msgid "extend() argument" +msgstr " extend()" + +#, c-format +msgid "E737: Key already exists: %s" +msgstr "E737: : %s" + +#, c-format +msgid "E96: Cannot diff more than %ld buffers" msgstr "E96: %ld " msgid "E810: Cannot read or write temp files" @@ -275,7 +371,6 @@ msgstr "E791: msgid " Keyword completion (^N^P)" msgstr " (^N^P)" -#. ctrl_x_mode == 0, ^P/^N compl. msgid " ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)" msgstr " ^X (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)" @@ -347,13 +442,12 @@ msgstr " msgid "Scanning tags." msgstr " ." +msgid "match in file" +msgstr " " + msgid " Adding" msgstr " " -#. showmode might reset the internal line pointers, so it must -#. * be called before line = ml_get(), or when this address is no -#. * longer needed. -- Acevedo. -#. msgid "-- Searching..." msgstr "-- ..." @@ -377,10 +471,6 @@ msgstr " msgid "E18: Unexpected characters in :let" msgstr "E18: :let" -#, c-format -msgid "E684: list index out of range: %ld" -msgstr "E684: : %ld" - #, c-format msgid "E121: Undefined variable: %s" msgstr "E121: : %s" @@ -388,41 +478,6 @@ msgstr "E121: msgid "E111: Missing ']'" msgstr "E111: ']'" -#, c-format -msgid "E686: Argument of %s must be a List" -msgstr "E686: %s " - -#, c-format -msgid "E712: Argument of %s must be a List or Dictionary" -msgstr "E712: %s " - -msgid "E713: Cannot use empty key for Dictionary" -msgstr "E713: " - -msgid "E714: List required" -msgstr "E714: " - -msgid "E715: Dictionary required" -msgstr "E715: " - -#, c-format -msgid "E118: Too many arguments for function: %s" -msgstr "E118: %s" - -#, c-format -msgid "E716: Key not present in Dictionary: %s" -msgstr "E716: : %s" - -#, c-format -msgid "E122: Function %s already exists, add ! to replace it" -msgstr "E122: %s . !, ." - -msgid "E717: Dictionary entry already exists" -msgstr "E717: " - -msgid "E718: Funcref required" -msgstr "E718: " - msgid "E719: Cannot use [:] with a Dictionary" msgstr "E719: [:] " @@ -430,10 +485,6 @@ msgstr "E719: msgid "E734: Wrong variable type for %s=" msgstr "E734: %s=" -#, c-format -msgid "E130: Unknown function: %s" -msgstr "E130: : %s" - #, c-format msgid "E461: Illegal variable name: %s" msgstr "E461: : %s" @@ -472,38 +523,20 @@ msgstr "E711: msgid "E690: Missing \"in\" after :for" msgstr "E690: \"in\" :for" -#, c-format -msgid "E107: Missing parentheses: %s" -msgstr "E107: : %s" - #, c-format msgid "E108: No such variable: \"%s\"" msgstr "E108: : \"%s\"" +#, c-format +msgid "E940: Cannot lock or unlock variable %s" +msgstr "E940: () %s" + msgid "E743: variable nested too deep for (un)lock" msgstr "E743: ()" msgid "E109: Missing ':' after '?'" msgstr "E109: ':' '?'" -msgid "E691: Can only compare List with List" -msgstr "E691: " - -msgid "E692: Invalid operation for List" -msgstr "E692: " - -msgid "E735: Can only compare Dictionary with Dictionary" -msgstr "E735: " - -msgid "E736: Invalid operation for Dictionary" -msgstr "E736: " - -msgid "E693: Can only compare Funcref with Funcref" -msgstr "E693: " - -msgid "E694: Invalid operation for Funcrefs" -msgstr "E694: " - msgid "E804: Cannot use '%' with Float" msgstr "E804: '%' " @@ -513,6 +546,9 @@ msgstr "E110: msgid "E695: Cannot index a Funcref" msgstr "E695: " +msgid "E909: Cannot index a special variable" +msgstr "E909: " + #, c-format msgid "E112: Option name missing: %s" msgstr "E112: : %s" @@ -529,167 +565,12 @@ msgstr "E114: msgid "E115: Missing quote: %s" msgstr "E115: : %s" -#, c-format -msgid "E696: Missing comma in List: %s" -msgstr "E696: : %s" - -#, c-format -msgid "E697: Missing end of List ']': %s" -msgstr "E697: ']': %s" - -#, c-format -msgid "E720: Missing colon in Dictionary: %s" -msgstr "E720: : %s" - -#, c-format -msgid "E721: Duplicate key in Dictionary: \"%s\"" -msgstr "E721: : \"%s\"" - -#, c-format -msgid "E722: Missing comma in Dictionary: %s" -msgstr "E722: : %s" - -#, c-format -msgid "E723: Missing end of Dictionary '}': %s" -msgstr "E723: '}': %s" +msgid "Not enough memory to set references, garbage collection aborted!" +msgstr " , !" msgid "E724: variable nested too deep for displaying" msgstr "E724: " -#, c-format -msgid "E740: Too many arguments for function %s" -msgstr "E740: %s" - -#, c-format -msgid "E116: Invalid arguments for function %s" -msgstr "E116: %s " - -#, c-format -msgid "E117: Unknown function: %s" -msgstr "E117: : %s" - -#, c-format -msgid "E119: Not enough arguments for function: %s" -msgstr "E119: %s" - -#, c-format -msgid "E120: Using not in a script context: %s" -msgstr "E120: : %s" - -#, c-format -msgid "E725: Calling dict function without Dictionary: %s" -msgstr "E725: dict : %s" - -msgid "E808: Number or Float required" -msgstr "E808: " - -msgid "add() argument" -msgstr " add()" - -msgid "E699: Too many arguments" -msgstr "E699: " - -msgid "E785: complete() can only be used in Insert mode" -msgstr "E785: complete() " - -#. -#. * Yes this is ugly, I don't particularly like it either. But doing it -#. * this way has the compelling advantage that translations need not to -#. * be touched at all. See below what 'ok' and 'ync' are used for. -#. -msgid "&Ok" -msgstr "&Ok" - -#, c-format -msgid "E737: Key already exists: %s" -msgstr "E737: : %s" - -msgid "extend() argument" -msgstr " extend()" - -msgid "map() argument" -msgstr " map()" - -msgid "filter() argument" -msgstr " filter()" - -#, c-format -msgid "+-%s%3ld lines: " -msgstr "+-%s%3ld : " - -#, c-format -msgid "E700: Unknown function: %s" -msgstr "E700: : %s" - -msgid "" -"&OK\n" -"&Cancel" -msgstr "" -"&OK\n" -"&C " - -msgid "called inputrestore() more often than inputsave()" -msgstr " inputrestore() , inputsave()" - -msgid "insert() argument" -msgstr " insert()" - -msgid "E786: Range not allowed" -msgstr "E786: " - -msgid "E701: Invalid type for len()" -msgstr "E701: len()" - -msgid "E726: Stride is zero" -msgstr "E726: " - -msgid "E727: Start past end" -msgstr "E727: " - -msgid "" -msgstr "<>" - -msgid "E240: No connection to Vim server" -msgstr "E240: Vim" - -#, c-format -msgid "E241: Unable to send to %s" -msgstr "E241: %s" - -msgid "E277: Unable to read a server reply" -msgstr "E277: " - -msgid "remove() argument" -msgstr " remove()" - -msgid "E655: Too many symbolic links (cycle?)" -msgstr "E655: (?)" - -msgid "reverse() argument" -msgstr " reverse()" - -msgid "E258: Unable to send to client" -msgstr "E258: " - -msgid "sort() argument" -msgstr " sort()" - -msgid "uniq() argument" -msgstr " uniq()" - -msgid "E702: Sort compare function failed" -msgstr "E702: " - -msgid "E882: Uniq compare function failed" -msgstr "" -"E882: " - -msgid "(Invalid)" -msgstr "()" - -msgid "E677: Error writing temp file" -msgstr "E677: " - msgid "E805: Using a Float as a Number" msgstr "E805: " @@ -702,6 +583,33 @@ msgstr "E745: msgid "E728: Using a Dictionary as a Number" msgstr "E728: " +msgid "E910: Using a Job as a Number" +msgstr "E910: " + +msgid "E913: Using a Channel as a Number" +msgstr "E913: " + +msgid "E891: Using a Funcref as a Float" +msgstr "E891: " + +msgid "E892: Using a String as a Float" +msgstr "E892: " + +msgid "E893: Using a List as a Float" +msgstr "E893: " + +msgid "E894: Using a Dictionary as a Float" +msgstr "E894: " + +msgid "E907: Using a special value as a Float" +msgstr "E907: " + +msgid "E911: Using a Job as a Float" +msgstr "E911: " + +msgid "E914: Using a Channel as a Float" +msgstr "E914: " + msgid "E729: using Funcref as a String" msgstr "E729: " @@ -711,9 +619,8 @@ msgstr "E730: msgid "E731: using Dictionary as a String" msgstr "E731: " -#, c-format -msgid "E706: Variable type mismatch for: %s" -msgstr "E706: : %s" +msgid "E908: using an invalid value as a String" +msgstr "E908: " #, c-format msgid "E795: Cannot delete variable %s" @@ -743,81 +650,6 @@ msgstr "E742: msgid "E698: variable nested too deep for making a copy" msgstr "E698: " -#, c-format -msgid "E123: Undefined function: %s" -msgstr "E123: : %s" - -#, c-format -msgid "E124: Missing '(': %s" -msgstr "E124: '(': %s" - -msgid "E862: Cannot use g: here" -msgstr "E862: g:" - -#, c-format -msgid "E125: Illegal argument: %s" -msgstr "E125: : %s" - -#, c-format -msgid "E853: Duplicate argument name: %s" -msgstr "E853: : %s" - -msgid "E126: Missing :endfunction" -msgstr "E126: :endfunction" - -#, c-format -msgid "E707: Function name conflicts with variable: %s" -msgstr "E707: : %s" - -#, c-format -msgid "E127: Cannot redefine function %s: It is in use" -msgstr "E127: %s, " - -#, c-format -msgid "E746: Function name does not match script file name: %s" -msgstr "E746: : %s" - -msgid "E129: Function name required" -msgstr "E129: " - -#, c-format -msgid "E128: Function name must start with a capital or \"s:\": %s" -msgstr "E128: \"s:\": %s" - -#, c-format -msgid "E884: Function name cannot contain a colon: %s" -msgstr "E884: : %s" - -#, c-format -msgid "E131: Cannot delete function %s: It is in use" -msgstr "E131: %s, " - -msgid "E132: Function call depth is higher than 'maxfuncdepth'" -msgstr "E132: , 'maxfuncdepth'" - -#, c-format -msgid "calling %s" -msgstr " %s" - -#, c-format -msgid "%s aborted" -msgstr "%s " - -#, c-format -msgid "%s returning #%ld" -msgstr "%s #%ld" - -#, c-format -msgid "%s returning %s" -msgstr "%s %s" - -#, c-format -msgid "continuing in %s" -msgstr " %s" - -msgid "E133: :return not inside a function" -msgstr "E133: :return " - msgid "" "\n" "# global variables:\n" @@ -832,20 +664,179 @@ msgstr "" "\n" "\t " -msgid "No old files" -msgstr " " +msgid "E691: Can only compare List with List" +msgstr "E691: " + +msgid "E692: Invalid operation for List" +msgstr "E692: " + +msgid "E735: Can only compare Dictionary with Dictionary" +msgstr "E735: " + +msgid "E736: Invalid operation for Dictionary" +msgstr "E736: " + +msgid "E694: Invalid operation for Funcrefs" +msgstr "E694: " + +msgid "map() argument" +msgstr " map()" + +msgid "filter() argument" +msgstr " filter()" + +#, c-format +msgid "E686: Argument of %s must be a List" +msgstr "E686: %s " + +msgid "E928: String required" +msgstr "E928: " + +msgid "E808: Number or Float required" +msgstr "E808: " + +msgid "add() argument" +msgstr " add()" + +msgid "E785: complete() can only be used in Insert mode" +msgstr "E785: complete() " + +msgid "&Ok" +msgstr "&Ok" + +#, c-format +msgid "+-%s%3ld line: " +msgid_plural "+-%s%3ld lines: " +msgstr[0] "+-%s%3ld : " +msgstr[1] "+-%s%3ld : " +msgstr[2] "+-%s%3ld : " + +#, c-format +msgid "E700: Unknown function: %s" +msgstr "E700: : %s" + +msgid "E922: expected a dict" +msgstr "E922: " + +msgid "E923: Second argument of function() must be a list or a dict" +msgstr "E923: () " + +msgid "" +"&OK\n" +"&Cancel" +msgstr "" +"&OK\n" +"&C " + +msgid "called inputrestore() more often than inputsave()" +msgstr " inputrestore() , inputsave()" + +msgid "insert() argument" +msgstr " insert()" + +msgid "E786: Range not allowed" +msgstr "E786: " + +msgid "E916: not a valid job" +msgstr "E916: " + +msgid "E701: Invalid type for len()" +msgstr "E701: len()" + +#, c-format +msgid "E798: ID is reserved for \":match\": %ld" +msgstr "E798: ID \":match\": %ld" + +msgid "E726: Stride is zero" +msgstr "E726: " + +msgid "E727: Start past end" +msgstr "E727: " + +msgid "" +msgstr "<>" + +msgid "E240: No connection to the X server" +msgstr "E240: X-" + +#, c-format +msgid "E241: Unable to send to %s" +msgstr "E241: %s" + +msgid "E277: Unable to read a server reply" +msgstr "E277: " + +msgid "E941: already started a server" +msgstr "E941: " + +msgid "E942: +clientserver feature not available" +msgstr "E942: +clientserver " + +msgid "remove() argument" +msgstr " remove()" + +msgid "E655: Too many symbolic links (cycle?)" +msgstr "E655: (?)" + +msgid "reverse() argument" +msgstr " reverse()" + +msgid "E258: Unable to send to client" +msgstr "E258: " + +#, c-format +msgid "E927: Invalid action: '%s'" +msgstr "E927: : '%s'" + +msgid "sort() argument" +msgstr " sort()" + +msgid "uniq() argument" +msgstr " uniq()" + +msgid "E702: Sort compare function failed" +msgstr "E702: " + +msgid "E882: Uniq compare function failed" +msgstr "" +"E882: " + +msgid "(Invalid)" +msgstr "()" + +#, c-format +msgid "E935: invalid submatch number: %d" +msgstr "E935: : %d" + +msgid "E677: Error writing temp file" +msgstr "E677: " + +msgid "E921: Invalid callback argument" +msgstr "E921: " + +#, c-format +msgid "<%s>%s%s %d, Hex %02x, Oct %03o, Digr %s" +msgstr "<%s>%s%s %d, %02x, %03o, %s" #, c-format msgid "<%s>%s%s %d, Hex %02x, Octal %03o" -msgstr "<%s>%s%s %d, Hex %02x, Octal %03o" +msgstr "<%s>%s%s %d, %02x, %03o" + +#, c-format +msgid "> %d, Hex %04x, Oct %o, Digr %s" +msgstr "> %d, %04x, %o, %s" + +#, c-format +msgid "> %d, Hex %08x, Oct %o, Digr %s" +msgstr "> %d, %08x, %o, %s" #, c-format msgid "> %d, Hex %04x, Octal %o" -msgstr "> %d, Hex %04x, Octal %o" +msgstr "> %d, %04x, %o" #, c-format msgid "> %d, Hex %08x, Octal %o" -msgstr "> %d, Hex %08x, Octal %o" +msgstr "> %d, %08x, %o" msgid "E134: Move lines into themselves" msgstr "E134: " @@ -891,11 +882,14 @@ msgstr " msgid " FAILED" msgstr " " -#. avoid a wait_return for this message, it's annoying #, c-format msgid "E137: Viminfo file is not writable: %s" msgstr "E137: viminfo : %s" +#, c-format +msgid "E929: Too many viminfo temp files, like %s!" +msgstr "E929: viminfo, %s" + #, c-format msgid "E138: Can't write viminfo file %s!" msgstr "E138: viminfo %s!" @@ -908,7 +902,6 @@ msgstr " msgid "E886: Can't rename viminfo file to %s!" msgstr "E886: viminfo %s!" -#. Write the info: #, c-format msgid "# This viminfo file was generated by Vim %s.\n" msgstr "# viminfo Vim %s.\n" @@ -926,6 +919,13 @@ msgstr "# msgid "Illegal starting char" msgstr " " +msgid "" +"\n" +"# Bar lines, copied verbatim:\n" +msgstr "" +"\n" +"# '|', :\n" + msgid "Save As" msgstr " " @@ -1015,14 +1015,14 @@ msgid "%ld substitutions" msgstr "%ld " msgid " on 1 line" -msgstr " " +msgstr " 1 ." #, c-format msgid " on %ld lines" msgstr " %ld ." -msgid "E147: Cannot do :global recursive" -msgstr "E147: :global " +msgid "E147: Cannot do :global recursive with a range" +msgstr "E147: :global " msgid "E148: Regular expression missing from global" msgstr "E148: :global " @@ -1060,8 +1060,8 @@ msgid "Sorry, help file \"%s\" not found" msgstr ", \"%s\" " #, c-format -msgid "E150: Not a directory: %s" -msgstr "E150: %s " +msgid "E151: No match: %s" +msgstr "E151: : %s" #, c-format msgid "E152: Cannot open %s for writing" @@ -1079,6 +1079,10 @@ msgstr "E670: msgid "E154: Duplicate tag \"%s\" in file %s/%s" msgstr "E154: \"%s\" %s/%s" +#, c-format +msgid "E150: Not a directory: %s" +msgstr "E150: %s " + #, c-format msgid "E160: Unknown sign command: %s" msgstr "E160: %s" @@ -1104,6 +1108,9 @@ msgstr "E159: msgid "E158: Invalid buffer name: %s" msgstr "E158: : %s" +msgid "E934: Cannot jump to a buffer that does not have a name" +msgstr "E934: " + #, c-format msgid "E157: Invalid sign ID: %ld" msgstr "E157: ID : %ld" @@ -1121,9 +1128,20 @@ msgstr " ( msgid "[Deleted]" msgstr "[]" +msgid "No old files" +msgstr " " + msgid "Entering Debug mode. Type \"cont\" to continue." msgstr " . \"cont\"" +#, c-format +msgid "Oldval = \"%s\"" +msgstr ".. = \"%s\"" + +#, c-format +msgid "Newval = \"%s\"" +msgstr ".. = \"%s\"" + #, c-format msgid "line %ld: %s" msgstr " %ld: %s" @@ -1132,6 +1150,13 @@ msgstr " msgid "cmd: %s" msgstr ": %s" +msgid "frame is zero" +msgstr " " + +#, c-format +msgid "frame at highest level: %d" +msgstr " : %d" + #, c-format msgid "Breakpoint in \"%s%s\" line %ld" msgstr " \"%s%s\" . %ld" @@ -1147,6 +1172,10 @@ msgstr " msgid "%3d %s %s line %ld" msgstr "%3d %s %s . %ld" +#, c-format +msgid "%3d expr %s" +msgstr "%3d . %s" + msgid "E750: First use \":profile start {fname}\"" msgstr "E750: \":profile start {-}\"" @@ -1154,8 +1183,9 @@ msgstr "E750: msgid "Save changes to \"%s\"?" msgstr " \"%s\"?" -msgid "Untitled" -msgstr " " +#, c-format +msgid "E947: Job still running in buffer \"%s\"" +msgstr "E947: \"%s\"" #, c-format msgid "E162: No write since last change for buffer \"%s\"" @@ -1187,8 +1217,18 @@ msgid "Searching for \"%s\"" msgstr " \"%s\"" #, c-format -msgid "not found in 'runtimepath': \"%s\"" -msgstr " 'runtimepath': \"%s\"" +msgid "not found in '%s': \"%s\"" +msgstr " '%s': \"%s\"" + +#, c-format +msgid "W20: Required python version 2.x not supported, ignoring file: %s" +msgstr "" +"W20: python 2.x, : %s" + +#, c-format +msgid "W21: Required python version 3.x not supported, ignoring file: %s" +msgstr "" +"W21: python 3.x, : %s" msgid "Source Vim script" msgstr " Vim" @@ -1217,6 +1257,10 @@ msgstr " msgid "finished sourcing %s" msgstr " %s " +#, c-format +msgid "continuing in %s" +msgstr " %s" + msgid "modeline" msgstr " " @@ -1284,12 +1328,12 @@ msgstr " msgid "E494: Use w or w>>" msgstr "E494: w w>>" +msgid "E943: Command table needs to be updated, run 'make cmdidxs'" +msgstr "E943: , 'make cmdidxs'" + msgid "E319: Sorry, the command is not available in this version" msgstr "E319: , " -msgid "E172: Only one file name allowed" -msgstr "E172: " - msgid "1 more file to edit. Quit anyway?" msgstr "1 . ?" @@ -1309,10 +1353,10 @@ msgstr "E174: msgid "" "\n" -" Name Args Range Complete Definition" +" Name Args Address Complete Definition" msgstr "" "\n" -" . . . " +" . . . " msgid "No user-defined commands found" msgstr ", , ." @@ -1332,6 +1376,9 @@ msgstr "E178: msgid "E179: argument required for -complete" msgstr "E179: -complete " +msgid "E179: argument required for -addr" +msgstr "E179: -addr " + #, c-format msgid "E181: Invalid attribute: %s" msgstr "E181: : %s" @@ -1350,6 +1397,10 @@ msgstr "" msgid "E184: No such user-defined command: %s" msgstr "E184: : %s" +#, c-format +msgid "E180: Invalid address type value: %s" +msgstr "E180: : %s" + #, c-format msgid "E180: Invalid complete value: %s" msgstr "E180: : %s" @@ -1414,6 +1465,9 @@ msgstr "E188: msgid "E466: :winpos requires two number arguments" msgstr "E466: :winpos " +msgid "E930: Cannot use :redir inside execute()" +msgstr "E930: :redir execute()" + msgid "Save Redirection" msgstr " " @@ -1438,7 +1492,6 @@ msgstr "E189: \"%s\" msgid "E190: Cannot open \"%s\" for writing" msgstr "E190: \"%s\"" -#. set mark msgid "E191: Argument must be a letter or forward/backward quote" msgstr "E191: / " @@ -1476,6 +1529,9 @@ msgstr "E500: msgid "E195: Cannot open viminfo file for reading" msgstr "E195: viminfo " +msgid "Untitled" +msgstr " " + msgid "E196: No digraphs in this version" msgstr "E196: " @@ -1483,7 +1539,6 @@ msgid "E608: Cannot :throw exceptions with 'Vim' prefix" msgstr "" "E608: :throw 'Vim'" -#. always scroll up, don't overwrite #, c-format msgid "Exception thrown: %s" msgstr " : %s" @@ -1500,7 +1555,6 @@ msgstr " msgid "%s, line %ld" msgstr "%s, %ld" -#. always scroll up, don't overwrite #, c-format msgid "Exception caught: %s" msgstr " : %s" @@ -1526,7 +1580,6 @@ msgstr " msgid "Error" msgstr "" -#. if (pending & CSTP_INTERRUPT) msgid "Interrupt" msgstr "" @@ -1569,15 +1622,12 @@ msgstr "E601: msgid "E603: :catch without :try" msgstr "E603: :catch :try" -#. Give up for a ":catch" after ":finally" and ignore it. -#. * Just parse. msgid "E604: :catch after :finally" msgstr "E604: :catch :finally" msgid "E606: :finally without :try" msgstr "E606: :finally :try" -#. Give up for a multiple ":finally" and ignore it. msgid "E607: multiple :finally" msgstr "E607: :finally" @@ -1622,6 +1672,9 @@ msgstr " msgid "Input Line" msgstr " " +msgid "Debug Line" +msgstr " " + msgid "E198: cmd_pchar beyond the command length" msgstr "E198: cmd_pchar " @@ -1667,7 +1720,6 @@ msgstr "Vim: msgid "Reading from stdin..." msgstr " stdin..." -#. Re-opening the original file failed! msgid "E202: Conversion made file unreadable!" msgstr "E202: !" @@ -1760,9 +1812,6 @@ msgid "E510: Can't make backup file (add ! to override)" msgstr "" "E510: ( !, )" -msgid "E460: The resource fork would be lost (add ! to override)" -msgstr "E460: ( !, )" - msgid "E214: Can't find temp file for writing" msgstr "E214: " @@ -1771,13 +1820,13 @@ msgstr "" "E213: ( ! )" msgid "E166: Can't open linked file for writing" -msgstr "E166: " +msgstr "E166: " msgid "E212: Can't open file for writing" msgstr "E212: " -msgid "E667: Fsync failed" -msgstr "E667: fsync()" +msgid "E949: File changed while writing" +msgstr "E949: " msgid "E512: Close failed" msgstr "E512: " @@ -1875,20 +1924,12 @@ msgstr "1 msgid "%lld characters" msgstr ": %lld" -#. Explicit typecast avoids warning on Mac OS X 10.6 -#, c-format -msgid "%ld characters" -msgstr ": %ld" - msgid "[noeol]" msgstr "[noeol]" msgid "[Incomplete last line]" msgstr "[ ]" -#. don't overwrite messages here -#. must give this prompt -#. don't use emsg() here, don't want to flush the buffers msgid "WARNING: The file has been changed since reading it!!!" msgstr ": !!!" @@ -1972,11 +2013,16 @@ msgstr "-- msgid "auto-removing autocommand: %s " msgstr "- : %s <=%d>" -#. the group doesn't exist #, c-format msgid "E367: No such group: \"%s\"" msgstr "E367: \"%s\" " +msgid "E936: Cannot delete the current group" +msgstr "E936: " + +msgid "W19: Deleting augroup that is still in use" +msgstr "W19: " + #, c-format msgid "E215: Illegal character after *: %s" msgstr "E215: *: %s" @@ -1989,7 +2035,6 @@ msgstr "E216: msgid "E216: No such group or event: %s" msgstr "E216: : %s" -#. Highlight title msgid "" "\n" "--- Auto-Commands ---" @@ -2040,8 +2085,11 @@ msgstr "" "E351: 'foldmethod'" #, c-format -msgid "+--%3ld lines folded " -msgstr "+--%3ld " +msgid "+--%3ld line folded " +msgid_plural "+--%3ld lines folded " +msgstr[0] "+--%3ld " +msgstr[1] "+--%3ld " +msgstr[2] "+--%3ld " msgid "E222: Add to read buffer" msgstr "E222: " @@ -2137,6 +2185,18 @@ msgstr "" "E232: \"\" , , , " " " +msgid "_Cancel" +msgstr "_" + +msgid "_Save" +msgstr " _" + +msgid "_Open" +msgstr "_" + +msgid "_OK" +msgstr "_" + msgid "" "&Yes\n" "&No\n" @@ -2146,8 +2206,14 @@ msgstr "" "&\n" "&" +msgid "Yes" +msgstr "" + +msgid "No" +msgstr "" + msgid "Input _Methods" -msgstr " " +msgstr "_ " msgid "VIM - Search and Replace..." msgstr "VIM ..." @@ -2156,46 +2222,43 @@ msgid "VIM - Search..." msgstr "VIM ..." msgid "Find what:" -msgstr " :" +msgstr " :" msgid "Replace with:" -msgstr " :" +msgstr " :" -#. whole word only button msgid "Match whole word only" msgstr " " -#. match case button msgid "Match case" -msgstr " " +msgstr " " msgid "Direction" msgstr "" -#. 'Up' and 'Down' buttons msgid "Up" msgstr "" msgid "Down" msgstr "" -#. 'Find Next' button msgid "Find Next" msgstr " " -#. 'Replace' button msgid "Replace" -msgstr "" +msgstr "" -#. 'Replace All' button msgid "Replace All" msgstr " " +msgid "_Close" +msgstr "_" + msgid "Vim: Received \"die\" request from session manager\n" msgstr "Vim: \n" -msgid "Close" -msgstr "" +msgid "Close tab" +msgstr " " msgid "New tab" msgstr " " @@ -2242,6 +2305,21 @@ msgstr " msgid "&Undo" msgstr "&" +msgid "Open tab..." +msgstr " ..." + +msgid "Find string (use '\\\\' to find a '\\')" +msgstr " ( '\\\\' '\\')" + +msgid "Find & Replace (use '\\\\' to find a '\\')" +msgstr " ( '\\\\' '\\')" + +msgid "Not Used" +msgstr " " + +msgid "Directory\t*.nothing\n" +msgstr "\t*.\n" + #, c-format msgid "E671: Cannot find window title \"%s\"" msgstr "E671: \"%s\" " @@ -2253,26 +2331,6 @@ msgstr "E243: msgid "E672: Unable to open window inside MDI application" msgstr "E672: MDI" -msgid "Close tab" -msgstr " " - -msgid "Open tab..." -msgstr " ..." - -msgid "Find string (use '\\\\' to find a '\\')" -msgstr " ( '\\\\' '\\')" - -msgid "Find & Replace (use '\\\\' to find a '\\')" -msgstr " ( '\\\\' '\\')" - -#. We fake this: Use a filter that doesn't select anything and a default -#. * file name that won't be used. -msgid "Not Used" -msgstr " " - -msgid "Directory\t*.nothing\n" -msgstr "\t*.\n" - msgid "Vim E458: Cannot allocate colormap entry, some colors may be incorrect" msgstr "" "Vim E458: , " @@ -2329,7 +2387,6 @@ msgstr "Vim msgid "Name:" msgstr ":" -#. create toggle button msgid "Show size in Points" msgstr " " @@ -2535,6 +2592,7 @@ msgstr "%-5s: %s%*s ( msgid "" "\n" +" a: Find assignments to this symbol\n" " c: Find functions calling this function\n" " d: Find functions called by this function\n" " e: Find this egrep pattern\n" @@ -2545,6 +2603,7 @@ msgid "" " t: Find this text string\n" msgstr "" "\n" +" a: \n" " c: \n" " d: \n" " e: egrep\n" @@ -2559,7 +2618,7 @@ msgid "E625: cannot open cscope database: %s" msgstr "E625: cscope: %s" msgid "E626: cannot get cscope database information" -msgstr "E626: cscope " +msgstr "E626: cscope " msgid "E568: duplicate cscope database not added" msgstr "E568: cscope " @@ -2572,7 +2631,6 @@ msgstr "E261: msgid "cscope connection %s closed" msgstr " cscope %s " -#. should not reach here msgid "E570: fatal error in cs_manage_matches" msgstr "E570: cs_manage_matches" @@ -2614,7 +2672,14 @@ msgid "" "loaded." msgstr "" "E815: , " -"MzScheme" +"MzScheme." + +msgid "" +"E895: Sorry, this command is disabled, the MzScheme's racket/base module " +"could not be loaded." +msgstr "" +"E895: , " +"racket/base MzScheme." msgid "invalid expression" msgstr " " @@ -2721,102 +2786,12 @@ msgstr "E272: msgid "E273: unknown longjmp status %d" msgstr "E273: longjmp %d" -msgid "Toggle implementation/definition" -msgstr " /" - -msgid "Show base class of" -msgstr " " - -msgid "Show overridden member function" -msgstr " " - -msgid "Retrieve from file" -msgstr " " - -msgid "Retrieve from project" -msgstr " " - -msgid "Retrieve from all projects" -msgstr " " - -msgid "Retrieve" -msgstr "" - -msgid "Show source of" -msgstr " " - -msgid "Find symbol" -msgstr " " - -msgid "Browse class" -msgstr " " - -msgid "Show class in hierarchy" -msgstr " " - -msgid "Show class in restricted hierarchy" -msgstr " " - -msgid "Xref refers to" -msgstr "Xref " - -msgid "Xref referred by" -msgstr " xref " - -msgid "Xref has a" -msgstr "Xref " - -msgid "Xref used by" -msgstr "Xref " - -msgid "Show docu of" -msgstr " docu" - -msgid "Generate docu for" -msgstr " docu" - -msgid "" -"Cannot connect to SNiFF+. Check environment (sniffemacs must be found in " -"$PATH).\n" -msgstr "" -" SNiFF+. ." -"(sniffemacs $PATH).\n" - -msgid "E274: Sniff: Error during read. Disconnected" -msgstr "E274: Sniff: . " - -msgid "SNiFF+ is currently " -msgstr " SNiFF+ " - -msgid "not " -msgstr " " - -msgid "connected" -msgstr "" - -#, c-format -msgid "E275: Unknown SNiFF+ request: %s" -msgstr "E275: SNiFF+: %s" - -msgid "E276: Error connecting to SNiFF+" -msgstr "E276: SNiFF+" - -msgid "E278: SNiFF+ not connected" -msgstr "E278: SNiFF+ " - -msgid "E279: Not a SNiFF+ buffer" -msgstr "E279: SNiFF+" - -msgid "Sniff: Error during write. Disconnected" -msgstr "Sniff: . " - msgid "invalid buffer number" msgstr " " msgid "not implemented yet" msgstr " " -#. ??? msgid "cannot set line(s)" msgstr " " @@ -2857,7 +2832,6 @@ msgstr "" " : " " " -#. This should never happen. Famous last word? msgid "" "E280: TCL FATAL ERROR: reflist corrupt!? Please report this to vim-dev@vim." "org" @@ -2898,6 +2872,18 @@ msgstr "" "E251: VIM . " "!" +#, c-format +msgid "E938: Duplicate key in JSON: \"%s\"" +msgstr "E938: JSON: \"%s\"" + +#, c-format +msgid "E696: Missing comma in List: %s" +msgstr "E696: : %s" + +#, c-format +msgid "E697: Missing end of List ']': %s" +msgstr "E697: ']': %s" + msgid "Unknown option argument" msgstr " " @@ -2924,13 +2910,13 @@ msgstr " msgid "netbeans is not supported with this GUI\n" msgstr "NetBeans \n" +msgid "'-nb' cannot be used: not enabled at compile time\n" +msgstr " '-nb': \n" + msgid "This Vim was not compiled with the diff feature." msgstr "" " Vim " -msgid "'-nb' cannot be used: not enabled at compile time\n" -msgstr " '-nb': \n" - msgid "Attempt to open script file again: \"" msgstr " : \"" @@ -2943,13 +2929,15 @@ msgstr " msgid "Vim: Error: Failure to start gvim from NetBeans\n" msgstr "Vim: : gvim NetBeans\n" +msgid "Vim: Error: This version of Vim does not run in a Cygwin terminal\n" +msgstr "Vim: : Vim Cygwin\n" + msgid "Vim: Warning: Output is not to a terminal\n" msgstr "Vim: : \n" msgid "Vim: Warning: Input is not from a terminal\n" msgstr "Vim: : \n" -#. just in case.. msgid "pre-vimrc command line" msgstr " vimrc" @@ -2976,7 +2964,8 @@ msgstr "-t # \n\t\t.. 80 msgid "-q [errorfile] edit file with first error" msgstr "" -"-q [-] " +"-q [-]\n" +"\t\t\t\t " msgid "" "\n" @@ -3076,8 +3065,8 @@ msgstr "-N\t\t\t # \n\t\t.. 80 msgid "-V[N][fname]\t\tBe verbose [level N] [log messages to fname]" msgstr "" -"-V[N][]\t\t " -"[ N] [ ]" +"-V[N][]\t\t \n" +"\t\t\t\t[ N] [ ]" msgid "-D\t\t\tDebugging mode" msgstr "-D\t\t\t " @@ -3112,6 +3101,12 @@ msgstr "-F\t\t\t msgid "-T \tSet terminal type to " msgstr "-T <>\t <>" +msgid "--not-a-term\t\tSkip warning for input/output not being a terminal" +msgstr "--not-a-term\t\t / " + +msgid "--ttyfail\t\tExit if input or output is not a terminal" +msgstr "--ttyfail\t\t / " + msgid "-u \t\tUse instead of any .vimrc" msgstr "-u \t\t .vimrc" @@ -3124,12 +3119,14 @@ msgstr "--noplugin\t\t # \n\t\t.. 80 msgid "-p[N]\t\tOpen N tab pages (default: one for each file)" msgstr "" -"-p[N]\t\t N ( : )" +"-p[N]\t\t N ( : \n" +"\t\t\t\t )" # \n\t\t.. 80 msgid "-o[N]\t\tOpen N windows (default: one for each file)" msgstr "" -"-o[N]\t\t N ( : )" +"-o[N]\t\t N ( : \n" +"\t\t\t\t )" msgid "-O[N]\t\tLike -o but split vertically" msgstr "-O[N]\t\t , -o, " @@ -3149,13 +3146,14 @@ msgstr "-c < # \n\t\t.. 80 msgid "-S \t\tSource file after loading the first file" msgstr "" -"-S <>\t\t <> " -" " +"-S <>\t\t <> \n" +"\t\t\t\t " # \n\t\t.. 80 msgid "-s \tRead Normal mode commands from file " msgstr "" -"-s <>\t <>" +"-s <>\t \n" +"\t\t\t\t <>" msgid "-w \tAppend all typed commands to file " msgstr "-w <>\t <>" @@ -3167,7 +3165,7 @@ msgid "-x\t\t\tEdit encrypted files" msgstr "-x\t\t\t " msgid "-display \tConnect vim to this particular X-server" -msgstr "-display <>\t VIM X-" +msgstr "-display <>\t Vim X-" msgid "-X\t\t\tDo not connect to X server" msgstr "-X\t\t\t X" @@ -3212,6 +3210,11 @@ msgstr "--startuptime < msgid "-i \t\tUse instead of .viminfo" msgstr "-i \t\t .viminfo " +msgid "--clean\t\t'nocompatible', Vim defaults, no plugins, no viminfo" +msgstr "" +"--clean\t\t Vi, Vim ,\n" +"\t\t\t\t , viminfo" + msgid "-h or --help\tPrint Help (this message) and exit" msgstr "-h --help\t ( ) " @@ -3240,21 +3243,19 @@ msgstr "" " gvim ( Athena):\n" msgid "-display \tRun vim on " -msgstr "-display <>\t VIM <>" +msgstr "-display <>\t Vim <>" msgid "-iconic\t\tStart vim iconified" -msgstr "-iconic\t\t VIM " +msgstr "-iconic\t\t Vim " msgid "-background \tUse for the background (also: -bg)" -msgstr "" -"-background <>\t <> (: -bg)" +msgstr "-background <>\t <> ( -bg)" msgid "-foreground \tUse for normal text (also: -fg)" -msgstr "" -"-foreground <>\t <> (: -fg)" +msgstr "-foreground <>\t <> ( -fg)" msgid "-font \t\tUse for normal text (also: -fn)" -msgstr "-font <>\t\t <> (: -fn)" +msgstr "-font <>\t <> ( -fn)" msgid "-boldfont \tUse for bold text" msgstr "-boldfont <>\t <> " @@ -3263,24 +3264,23 @@ msgid "-italicfont \tUse for italic text" msgstr "-italicfont <>\t <> " msgid "-geometry \tUse for initial geometry (also: -geom)" -msgstr "" -"-geometry <>\t <> (: -geom)" +msgstr "-geometry <>\t <> ( -geom)" msgid "-borderwidth \tUse a border width of (also: -bw)" -msgstr "-borderwidth <>\t <> (: -bw)" +msgstr "-borderwidth <>\t <> ( -bw)" msgid "-scrollbarwidth Use a scrollbar width of (also: -sw)" msgstr "" -"-scrollbarwidth <> (: -sw)" +"-scrollbarwidth <> ( -sw)" msgid "-menuheight \tUse a menu bar height of (also: -mh)" -msgstr "-menuheight <>\t <> (: -mh)" +msgstr "-menuheight <>\t <> ( -mh)" msgid "-reverse\t\tUse reverse video (also: -rv)" -msgstr "-reverse\t\t (: -rv)" +msgstr "-reverse\t\t ( -rv)" msgid "+reverse\t\tDon't use reverse video (also: +rv)" -msgstr "+reverse\t\t (: +rv)" +msgstr "+reverse\t\t ( +rv)" msgid "-xrm \tSet the specified resource" msgstr "-xrm <>\t <>" @@ -3294,11 +3294,12 @@ msgstr "" msgid "-display \tRun vim on (also: --display)" msgstr "" -"-display <>\t VIM <> (: --display)" +"-display <>\t Vim <> ( --display)" msgid "--role \tSet a unique role to identify the main window" msgstr "" -"--role <>\t <> " +"--role <>\t <>\n" +"\t\t\t\t " msgid "--socketid \tOpen Vim inside another GTK widget" msgstr "--socketid \t Vim GTK" @@ -3315,11 +3316,9 @@ msgstr "--windowid \t msgid "No display" msgstr " " -#. Failed to send, abort. msgid ": Send failed.\n" msgstr ": .\n" -#. Let vim start normally. msgid ": Send failed. Trying to execute locally\n" msgstr ": . \n" @@ -3340,7 +3339,6 @@ msgstr " msgid "E283: No marks matching \"%s\"" msgstr "E283: , \"%s\"" -#. Highlight title msgid "" "\n" "mark line col file/text" @@ -3348,7 +3346,6 @@ msgstr "" "\n" " /" -#. Highlight title msgid "" "\n" " jump line col file/text" @@ -3356,7 +3353,6 @@ msgstr "" "\n" " /" -#. Highlight title msgid "" "\n" "change line col text" @@ -3371,7 +3367,6 @@ msgstr "" "\n" "# :\n" -#. Write the jumplist with -' msgid "" "\n" "# Jumplist (newest first):\n" @@ -3444,7 +3439,6 @@ msgstr "E298: msgid "E843: Error while updating swap file crypt" msgstr "E843: -" -#. could not (re)open the swap file, what can we do???? msgid "E301: Oops, lost the swap file!!!" msgstr "E301: , -!!!" @@ -3629,7 +3623,6 @@ msgstr "" msgid "Using crypt key from swap file for the text file.\n" msgstr " - .\n" -#. use msg() to start the scrolling properly msgid "Swap files found:" msgstr " -:" @@ -3800,23 +3793,17 @@ msgstr " msgid " NEWER than swap file!\n" msgstr " , -!\n" -#. Some of these messages are long to allow translation to -#. * other languages. msgid "" "\n" "(1) Another program may be editing the same file. If this is the case,\n" " be careful not to end up with two different instances of the same\n" -" file when making changes." +" file when making changes. Quit, or continue with caution.\n" msgstr "" "\n" "(1) , .\n" " , , \n" -" ." - -# , " \n" .. . -msgid " Quit, or continue with caution.\n" -msgstr "" -" .\n" +" .\n" +" .\n" msgid "(2) An edit session for this file crashed.\n" msgstr "(2) .\n" @@ -3894,7 +3881,6 @@ msgstr "E328: msgid "E329: No menu \"%s\"" msgstr "E329: %s" -#. Only a mnemonic or accelerator is not valid. msgid "E792: Empty menu name" msgstr "E792: " @@ -3907,8 +3893,6 @@ msgstr "E331: msgid "E332: Separator cannot be part of a menu path" msgstr "E332: " -#. Now we have found the matching menu, and we list the mappings -#. Highlight title msgid "" "\n" "--- Menus ---" @@ -3919,6 +3903,10 @@ msgstr "" msgid "Tear off this menu" msgstr " " +#, c-format +msgid "E335: Menu not defined for %s mode" +msgstr "E335: %s" + msgid "E333: Menu path must lead to a menu item" msgstr "E333: " @@ -3926,10 +3914,6 @@ msgstr "E333: msgid "E334: Menu not found: %s" msgstr "E334: : %s" -#, c-format -msgid "E335: Menu not defined for %s mode" -msgstr "E335: %s" - msgid "E336: Menu path must lead to a sub-menu" msgstr "E336: " @@ -4001,7 +3985,6 @@ msgstr " msgid "Open File dialog" msgstr " " -#. TODO: non-GUI file selector here msgid "E338: Sorry, no file browser in console mode" msgstr "" "E338: , " @@ -4120,20 +4103,11 @@ msgstr "E346: msgid "E347: No more file \"%s\" found in path" msgstr "E347: \"%s\"" -msgid "Cannot connect to Netbeans #2" -msgstr " NetBeans #2" - -msgid "Cannot connect to Netbeans" -msgstr " NetBeans" - #, c-format msgid "E668: Wrong access mode for NetBeans connection info file: \"%s\"" msgstr "" "E668: NetBeans: \"%s\"" -msgid "read from Netbeans socket" -msgstr " NetBeans" - #, c-format msgid "E658: NetBeans connection lost for buffer %ld" msgstr "E658: NetBeans %ld" @@ -4155,7 +4129,7 @@ msgid "E774: 'operatorfunc' is empty" msgstr "E774: 'operatorfunc' " msgid "E775: Eval feature not available" -msgstr "E775: eval " +msgstr "E775: eval " msgid "Warning: terminal cannot highlight" msgstr ": " @@ -4176,8 +4150,9 @@ msgstr "E662: msgid "E663: At end of changelist" msgstr "E663: " -msgid "Type :quit to exit Vim" -msgstr " :quit Vim" +msgid "Type :qa! and press to abandon all changes and exit Vim" +msgstr "" +" :qa! Vim" #, c-format msgid "1 line %sed 1 time" @@ -4209,7 +4184,6 @@ msgstr " msgid "E748: No previously used register" msgstr "E748: " -#. must display the prompt msgid "cannot yank; delete anyway" msgstr " , " @@ -4224,25 +4198,30 @@ msgstr " msgid "freeing %ld lines" msgstr " : %ld" -msgid "block of 1 line yanked" -msgstr " " - -msgid "1 line yanked" -msgstr " " +#, c-format +msgid " into \"%c" +msgstr " \"%c" #, c-format -msgid "block of %ld lines yanked" -msgstr " : %ld" +msgid "block of 1 line yanked%s" +msgstr " %s" #, c-format -msgid "%ld lines yanked" -msgstr " : %ld" +msgid "1 line yanked%s" +msgstr " %s" + +#, c-format +msgid "block of %ld lines yanked%s" +msgstr " %ld %s" + +#, c-format +msgid "%ld lines yanked%s" +msgstr " %ld %s" #, c-format msgid "E353: Nothing in register %s" msgstr "E353: %s " -#. Highlight title msgid "" "\n" "--- Registers ---" @@ -4276,35 +4255,32 @@ msgid "%ld Cols; " msgstr ": %ld; " #, c-format -msgid "Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Bytes" -msgstr " %s%ld %ld ; %ld %ld ; %ld %ld " +msgid "Selected %s%ld of %ld Lines; %lld of %lld Words; %lld of %lld Bytes" +msgstr " %s%ld %ld ; %lld %lld ; %lld %lld " #, c-format msgid "" -"Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Chars; %ld of %ld " -"Bytes" +"Selected %s%ld of %ld Lines; %lld of %lld Words; %lld of %lld Chars; %lld of " +"%lld Bytes" msgstr "" -" %s%ld %ld .; %ld %ld ; %ld %ld .; %ld %ld " -"" +" %s%ld %ld .; %lld %lld ; %lld %lld .; %lld " +"%lld " #, c-format -msgid "Col %s of %s; Line %ld of %ld; Word %ld of %ld; Byte %ld of %ld" -msgstr ". %s %s; . %ld %ld; . %ld %ld; %ld %ld" +msgid "Col %s of %s; Line %ld of %ld; Word %lld of %lld; Byte %lld of %lld" +msgstr ". %s %s; . %ld %ld; . %lld %lld; %lld %lld" #, c-format msgid "" -"Col %s of %s; Line %ld of %ld; Word %ld of %ld; Char %ld of %ld; Byte %ld of " -"%ld" +"Col %s of %s; Line %ld of %ld; Word %lld of %lld; Char %lld of %lld; Byte " +"%lld of %lld" msgstr "" -". %s %s; . %ld %ld; . %ld %ld; . %ld %ld; %ld " -" %ld" +". %s %s; . %ld %ld; . %lld %lld; . %lld %lld; " +"%lld %lld" #, c-format -msgid "(+%ld for BOM)" -msgstr "(+%ld BOM)" - -msgid "%<%f%h%m%=Page %N" -msgstr "%<%f%h%m%=. %N" +msgid "(+%lld for BOM)" +msgstr "(+%lld BOM)" msgid "Thanks for flying Vim" msgstr " Vim" @@ -4331,6 +4307,10 @@ msgstr "E522: msgid "E539: Illegal character <%s>" msgstr "E539: <%s>" +#, c-format +msgid "For option %s" +msgstr " %s" + msgid "E529: Cannot set 'term' to empty string" msgstr "E529: 'term' " @@ -4352,6 +4332,10 @@ msgstr "E835: msgid "E617: Cannot be changed in the GTK+ 2 GUI" msgstr "E617: GTK+ 2" +#, c-format +msgid "E950: Cannot convert between %s and %s" +msgstr "E950: %s %s" + msgid "E524: Missing colon" msgstr "E524: " @@ -4411,6 +4395,9 @@ msgstr "E541: msgid "E542: unbalanced groups" msgstr "E542: " +msgid "E946: Cannot make a terminal with running job modifiable" +msgstr "E946: " + msgid "E590: A preview window already exists" msgstr "E590: " @@ -4418,6 +4405,9 @@ msgid "W17: Arabic requires UTF-8, do ':set encoding=utf-8'" msgstr "" "W17: UTF-8, ':set encoding=utf-8'" +msgid "E954: 24-bit colors are not supported on this environment" +msgstr "E954: 24 " + #, c-format msgid "E593: Need at least %d lines" msgstr "E593: %d " @@ -4430,9 +4420,6 @@ msgstr "E594: msgid "E355: Unknown option: %s" msgstr "E355: : %s" -#. There's another character after zeros or the string -#. * is empty. In both cases, we are trying to set a -#. * num option using a string. #, c-format msgid "E521: Number required: &%s = '%s'" msgstr "E521: : &%s = '%s'" @@ -4456,7 +4443,7 @@ msgid "" "--- Local option values ---" msgstr "" "\n" -"--- ---" +"--- ---" msgid "" "\n" @@ -4505,7 +4492,6 @@ msgstr " msgid "mch_get_shellsize: not a console??\n" msgstr "mch_get_shellsize: ??\n" -#. if Vim opened a window: Executing a shell may cause crashes msgid "E360: Cannot execute shell with -f option" msgstr "E360: -f" @@ -4527,9 +4513,6 @@ msgstr " msgid "Message" msgstr "" -msgid "'columns' is not 80, cannot execute external commands" -msgstr " 'columns' 80, " - msgid "E237: Printer selection failed" msgstr "E237: " @@ -4553,6 +4536,10 @@ msgstr " msgid "E244: Illegal charset name \"%s\" in font name \"%s\"" msgstr "E244: \"%s\" \"%s\"" +#, c-format +msgid "E244: Illegal quality name \"%s\" in font name \"%s\"" +msgstr "E244: \"%s\" \"%s\"" + #, c-format msgid "E245: Illegal char '%c' in font name \"%s\"" msgstr "E245: '%c' \"%s\"" @@ -4588,25 +4575,13 @@ msgstr "" "\n" " " -msgid "Could not set security context " -msgstr " " +#, c-format +msgid "Could not set security context %s for %s" +msgstr " %s %s" -msgid " for " -msgstr " " - -#. no enough size OR unexpected error -msgid "Could not get security context " -msgstr " " - -msgid ". Removing it!\n" -msgstr ". !\n" - -msgid "" -"\n" -"Cannot execute shell " -msgstr "" -"\n" -" " +#, c-format +msgid "Could not get security context %s for %s. Removing it!" +msgstr " %s %s. !" msgid "" "\n" @@ -4636,6 +4611,13 @@ msgstr "" "\n" " fork()\n" +msgid "" +"\n" +"Cannot execute shell " +msgstr "" +"\n" +" " + msgid "" "\n" "Command terminated\n" @@ -4678,10 +4660,6 @@ msgstr " msgid "Could not fix up function pointers to the DLL!" msgstr " DLL!" -#, c-format -msgid "shell returned %d" -msgstr " %d" - #, c-format msgid "Vim: Caught %s event\n" msgstr "Vim: %s\n" @@ -4710,6 +4688,13 @@ msgstr "" msgid "Vim Warning" msgstr " Vim" +#, c-format +msgid "shell returned %d" +msgstr " %d" + +msgid "E926: Current location list was changed" +msgstr "E926: " + #, c-format msgid "E372: Too many %%%c in format string" msgstr "E372: %%%c" @@ -4742,6 +4727,12 @@ msgstr "E379: msgid "E553: No more items" msgstr "E553: " +msgid "E924: Current window was closed" +msgstr "E924: " + +msgid "E925: Current quickfix was changed" +msgstr "E925: " + #, c-format msgid "(%d of %d)%s%s: " msgstr "(%d %d)%s%s: " @@ -4749,19 +4740,18 @@ msgstr "(%d msgid " (line deleted)" msgstr " ( )" +#, c-format +msgid "%serror list %d of %d; %d errors " +msgstr "%s %d %d; %d " + msgid "E380: At bottom of quickfix stack" msgstr "E380: " msgid "E381: At top of quickfix stack" msgstr "E381: " -#, c-format -msgid "error list %d of %d; %d errors" -msgstr " %d %d; %d " - -msgid "E382: Cannot write, 'buftype' option is set" -msgstr "" -"E382: , 'buftype' " +msgid "No entries" +msgstr " " msgid "Error file" msgstr " " @@ -4787,6 +4777,12 @@ msgstr "E369: msgid "E769: Missing ] after %s[" msgstr "E769: ] %s[" +msgid "E944: Reverse range in character class" +msgstr "E944: " + +msgid "E945: Range too large in character class" +msgstr "E945: " + #, c-format msgid "E53: Unmatched %s%%(" msgstr "E53: %s%%(" @@ -4813,6 +4809,9 @@ msgstr "E69: msgid "E70: Empty %s%%[]" msgstr "E70: %s%%[]" +msgid "E65: Illegal back reference" +msgstr "E65: " + msgid "E339: Pattern too long" msgstr "E339: " @@ -4849,9 +4848,6 @@ msgstr "E63: msgid "E64: %s%c follows nothing" msgstr "E64: %s%c " -msgid "E65: Illegal back reference" -msgstr "E65: " - msgid "E68: Invalid character after \\z" msgstr "E68: \\z" @@ -4881,6 +4877,9 @@ msgstr "" "E864: \\%#= 0, 1 2. " " " +msgid "Switching to backtracking RE engine for pattern: " +msgstr " . : " + msgid "E865: (NFA) Regexp end encountered prematurely" msgstr "E865: () " @@ -4896,11 +4895,13 @@ msgstr "E877: ( msgid "E867: (NFA) Unknown operator '\\z%c'" msgstr "E867: () '\\z%c'" +msgid "E951: \\% value too large" +msgstr "E951: \\% " + #, c-format msgid "E867: (NFA) Unknown operator '\\%%%c'" msgstr "E867: () '\\%%%c'" -#. should never happen msgid "E868: Error building NFA with equivalence class!" msgstr "E868: !" @@ -4911,11 +4912,9 @@ msgstr "E869: ( msgid "E870: (NFA regexp) Error reading repetition limits" msgstr "E870: (. ) " -#. Can't have a multi follow a multi. msgid "E871: (NFA regexp) Can't have a multi follow a multi !" msgstr "E871: (. ) !" -#. Too many `(' msgid "E872: (NFA regexp) Too many '('" msgstr "E872: (. ) '('" @@ -4980,9 +4979,6 @@ msgstr " msgid " Arabic" msgstr " " -msgid " (lang)" -msgstr " ()" - msgid " (paste)" msgstr " ()" @@ -5025,7 +5021,6 @@ msgstr "E386: msgid " (includes previously listed match)" msgstr " ( )" -#. cursor at status line msgid "--- Included files " msgstr "--- " @@ -5077,8 +5072,49 @@ msgstr "" "# %s :\n" "~" -msgid "E759: Format error in spell file" -msgstr "E759: " +msgid "E756: Spell checking is not enabled" +msgstr "E756: " + +#, c-format +msgid "Warning: Cannot find word list \"%s_%s.spl\" or \"%s_ascii.spl\"" +msgstr "" +": \"%s_%s.spl\" \"%s_ascii.spl" +"\"" + +#, c-format +msgid "Warning: Cannot find word list \"%s.%s.spl\" or \"%s.ascii.spl\"" +msgstr "" +": \"%s.%s.spl\" \"%s.ascii.spl" +"\"" + +msgid "E797: SpellFileMissing autocommand deleted buffer" +msgstr "E797: SpellFileMissing" + +#, c-format +msgid "Warning: region %s not supported" +msgstr ": %s " + +msgid "Sorry, no suggestions" +msgstr ", " + +#, c-format +msgid "Sorry, only %ld suggestions" +msgstr ", %ld " + +#, c-format +msgid "Change \"%.*s\" to:" +msgstr " \"%.*s\" :" + +#, c-format +msgid " < \"%.*s\"" +msgstr " < \"%.*s\"" + +msgid "E752: No previous spell replacement" +msgstr "E752: " + +#, c-format +msgid "E753: Not found: %s" +msgstr "E753: : %s" msgid "E758: Truncated spell file" msgstr "E758: " @@ -5100,21 +5136,6 @@ msgstr "E762: msgid "Compressing word tree..." msgstr " ..." -msgid "E756: Spell checking is not enabled" -msgstr "E756: " - -#, c-format -msgid "Warning: Cannot find word list \"%s_%s.spl\" or \"%s_ascii.spl\"" -msgstr "" -": \"%s_%s.spl\" \"%s_ascii.spl" -"\"" - -#, c-format -msgid "Warning: Cannot find word list \"%s.%s.spl\" or \"%s.ascii.spl\"" -msgstr "" -": \"%s.%s.spl\" \"%s.ascii.spl" -"\"" - #, c-format msgid "Reading spell file \"%s\"" msgstr " \"%s\"" @@ -5132,8 +5153,24 @@ msgid "E770: Unsupported section in spell file" msgstr "E770: " #, c-format -msgid "Warning: region %s not supported" -msgstr ": %s " +msgid "E778: This does not look like a .sug file: %s" +msgstr "E778: .sug: %s" + +#, c-format +msgid "E779: Old .sug file, needs to be updated: %s" +msgstr "E779: .sug, : %s" + +#, c-format +msgid "E780: .sug file is for newer version of Vim: %s" +msgstr "E780: .sug Vim: %s" + +#, c-format +msgid "E781: .sug file doesn't match .spl file: %s" +msgstr "E781: .sug .spl: %s" + +#, c-format +msgid "E782: error while reading .sug file: %s" +msgstr "E782: .sug: %s" #, c-format msgid "Reading affix file %s ..." @@ -5281,8 +5318,8 @@ msgid "E760: No word count in %s" msgstr "E760: %s" #, c-format -msgid "line %6d, word %6d - %s" -msgstr " %6d, %6d %s" +msgid "line %6d, word %6ld - %s" +msgstr " %6d, %6ld %s" #, c-format msgid "Duplicate word in %s line %d: %s" @@ -5346,10 +5383,6 @@ msgstr " msgid "Reading back spell file..." msgstr " ..." -#. -#. * Go through the trie of good words, soundfold each word and add it to -#. * the soundfold trie. -#. msgid "Performing soundfolding..." msgstr " ..." @@ -5372,8 +5405,9 @@ msgstr " msgid "E751: Output file name must not have region name" msgstr "E751: " -msgid "E754: Only up to 8 regions supported" -msgstr "E754: 8- " +#, c-format +msgid "E754: Only up to %ld regions supported" +msgstr "E754: %ld " #, c-format msgid "E755: Invalid region in %s" @@ -5404,62 +5438,40 @@ msgstr " msgid "E763: Word characters differ between spell files" msgstr "E763: " -msgid "Sorry, no suggestions" -msgstr ", " - -#, c-format -msgid "Sorry, only %ld suggestions" -msgstr ", %ld " - -#. for when 'cmdheight' > 1 -#. avoid more prompt -#, c-format -msgid "Change \"%.*s\" to:" -msgstr " \"%.*s\" :" - -#, c-format -msgid " < \"%.*s\"" -msgstr " < \"%.*s\"" - -msgid "E752: No previous spell replacement" -msgstr "E752: " - -#, c-format -msgid "E753: Not found: %s" -msgstr "E753: : %s" - -#, c-format -msgid "E778: This does not look like a .sug file: %s" -msgstr "E778: .sug: %s" - -#, c-format -msgid "E779: Old .sug file, needs to be updated: %s" -msgstr "E779: .sug, : %s" - -#, c-format -msgid "E780: .sug file is for newer version of Vim: %s" -msgstr "E780: .sug Vim: %s" - -#, c-format -msgid "E781: .sug file doesn't match .spl file: %s" -msgstr "E781: .sug .spl: %s" - -#, c-format -msgid "E782: error while reading .sug file: %s" -msgstr "E782: .sug: %s" - -#. This should have been checked when generating the .spl -#. * file. msgid "E783: duplicate char in MAP entry" msgstr "E783: MAP" msgid "No Syntax items defined for this buffer" msgstr " " +msgid "syntax conceal on" +msgstr " " + +msgid "syntax conceal off" +msgstr " " + #, c-format msgid "E390: Illegal argument: %s" msgstr "E390: : %s" +msgid "syntax case ignore" +msgstr " " + +msgid "syntax case match" +msgstr " " + +msgid "syntax spell toplevel" +msgstr " " + +msgid "syntax spell notoplevel" +msgstr " " + +msgid "syntax spell default" +msgstr " " + +msgid "syntax iskeyword " +msgstr " " + #, c-format msgid "E391: No such syntax cluster: %s" msgstr "E391: %s " @@ -5536,6 +5548,10 @@ msgstr "E847: msgid "E789: Missing ']': %s" msgstr "E789: ']': %s" +#, c-format +msgid "E890: trailing char after ']': %s]%s" +msgstr "E890: ']': %s]%s" + #, c-format msgid "E398: Missing '=': %s" msgstr "E398: '=': %s" @@ -5688,7 +5704,6 @@ msgstr "E428: msgid "File \"%s\" does not exist" msgstr " \"%s\" " -#. Give an indication of the number of matching tags #, c-format msgid "tag %d of %d%s" msgstr " %d %d%s" @@ -5703,7 +5718,6 @@ msgstr " msgid "E429: File \"%s\" does not exist" msgstr "E429: \"%s\" " -#. Highlight title msgid "" "\n" " # TO tag FROM line in file/text" @@ -5734,7 +5748,6 @@ msgstr " msgid "E432: Tags file not sorted: %s" msgstr "E432: : %s" -#. never opened any tags file msgid "E433: No tags file" msgstr "E433: " @@ -5770,7 +5783,6 @@ msgstr "E436: msgid "E437: terminal capability \"cm\" required" msgstr "E437: \"cm\"" -#. Highlight title msgid "" "\n" "--- Terminal keys ---" @@ -5778,6 +5790,35 @@ msgstr "" "\n" "--- ---" +msgid "Cannot open $VIMRUNTIME/rgb.txt" +msgstr " $VIMRUNTIME/rgb.txt" + +#, c-format +msgid "Kill job in \"%s\"?" +msgstr " \"%s\"?" + +msgid "Terminal" +msgstr "" + +msgid "Terminal-finished" +msgstr "-" + +msgid "active" +msgstr "" + +msgid "running" +msgstr "" + +msgid "finished" +msgstr "" + +#, c-format +msgid "E953: File exists: %s" +msgstr "E953: : %s" + +msgid "E955: Not a terminal buffer" +msgstr "E955: " + msgid "new shell started\n" msgstr " \n" @@ -5787,12 +5828,9 @@ msgstr "Vim: msgid "Used CUT_BUFFER0 instead of empty selection" msgstr " CUT_BUFFER0" -#. This happens when the FileChangedRO autocommand changes the -#. * file in a way it becomes shorter. msgid "E881: Line count changed unexpectedly" msgstr "E881: " -#. must display the prompt msgid "No undo possible; continue anyway" msgstr " ; " @@ -5915,7 +5953,7 @@ msgstr " #, c-format msgid "%ld seconds ago" -msgstr "%ld " +msgstr "%ld " msgid "E790: undojoin is not allowed after undo" msgstr "E790: " @@ -5926,13 +5964,133 @@ msgstr "E439: msgid "E440: undo line missing" msgstr "E440: " -#. Only MS VC 4.1 and earlier can do Win32s -msgid "" -"\n" -"MS-Windows 16/32-bit GUI version" -msgstr "" -"\n" -" MS-Windows 16/32 " +#, c-format +msgid "E122: Function %s already exists, add ! to replace it" +msgstr "E122: %s . !, ." + +msgid "E717: Dictionary entry already exists" +msgstr "E717: " + +msgid "E718: Funcref required" +msgstr "E718: " + +#, c-format +msgid "E130: Unknown function: %s" +msgstr "E130: : %s" + +#, c-format +msgid "E125: Illegal argument: %s" +msgstr "E125: : %s" + +#, c-format +msgid "E853: Duplicate argument name: %s" +msgstr "E853: : %s" + +#, c-format +msgid "E740: Too many arguments for function %s" +msgstr "E740: %s" + +#, c-format +msgid "E116: Invalid arguments for function %s" +msgstr "E116: %s " + +msgid "E132: Function call depth is higher than 'maxfuncdepth'" +msgstr "E132: , 'maxfuncdepth'" + +#, c-format +msgid "calling %s" +msgstr " %s" + +#, c-format +msgid "%s aborted" +msgstr "%s " + +#, c-format +msgid "%s returning #%ld" +msgstr "%s #%ld" + +#, c-format +msgid "%s returning %s" +msgstr "%s %s" + +msgid "E699: Too many arguments" +msgstr "E699: " + +#, c-format +msgid "E117: Unknown function: %s" +msgstr "E117: : %s" + +#, c-format +msgid "E933: Function was deleted: %s" +msgstr "E933: : %s" + +#, c-format +msgid "E119: Not enough arguments for function: %s" +msgstr "E119: %s" + +#, c-format +msgid "E120: Using not in a script context: %s" +msgstr "E120: : %s" + +#, c-format +msgid "E725: Calling dict function without Dictionary: %s" +msgstr "E725: dict : %s" + +msgid "E129: Function name required" +msgstr "E129: " + +#, c-format +msgid "E128: Function name must start with a capital or \"s:\": %s" +msgstr "E128: \"s:\": %s" + +#, c-format +msgid "E884: Function name cannot contain a colon: %s" +msgstr "E884: : %s" + +#, c-format +msgid "E123: Undefined function: %s" +msgstr "E123: : %s" + +#, c-format +msgid "E124: Missing '(': %s" +msgstr "E124: '(': %s" + +msgid "E862: Cannot use g: here" +msgstr "E862: g:" + +#, c-format +msgid "E932: Closure function should not be at top level: %s" +msgstr "E932: - : %s" + +msgid "E126: Missing :endfunction" +msgstr "E126: :endfunction" + +#, c-format +msgid "W22: Text found after :endfunction: %s" +msgstr "W22: :endfunction: %s" + +#, c-format +msgid "E707: Function name conflicts with variable: %s" +msgstr "E707: : %s" + +#, c-format +msgid "E127: Cannot redefine function %s: It is in use" +msgstr "E127: %s, " + +#, c-format +msgid "E746: Function name does not match script file name: %s" +msgstr "E746: : %s" + +#, c-format +msgid "E131: Cannot delete function %s: It is in use" +msgstr "E131: %s, " + +msgid "E133: :return not inside a function" +msgstr "E133: :return " + +#, c-format +msgid "E107: Missing parentheses: %s" +msgstr "E107: : %s" msgid "" "\n" @@ -5948,9 +6106,6 @@ msgstr "" "\n" " MS-Windows 32 " -msgid " in Win32s mode" -msgstr " Win32" - msgid " with OLE support" msgstr " OLE" @@ -5970,45 +6125,17 @@ msgstr "" msgid "" "\n" -"MS-Windows 16-bit version" +"macOS version" msgstr "" "\n" -" MS-Windows 16 " +" macOS" msgid "" "\n" -"32-bit MS-DOS version" +"macOS version w/o darwin feat." msgstr "" "\n" -" MS-DOS 32 " - -msgid "" -"\n" -"16-bit MS-DOS version" -msgstr "" -"\n" -" MS-DOS 16 " - -msgid "" -"\n" -"MacOS X (unix) version" -msgstr "" -"\n" -" MacOS X (unix)" - -msgid "" -"\n" -"MacOS X version" -msgstr "" -"\n" -" MacOS X" - -msgid "" -"\n" -"MacOS version" -msgstr "" -"\n" -" MacOS" +" macOS darwin" msgid "" "\n" @@ -6039,7 +6166,7 @@ msgid "" "Compiled " msgstr "" "\n" -" " +": " msgid "by " msgstr " " @@ -6077,11 +6204,14 @@ msgid "" "Tiny version " msgstr "" "\n" -" \"\" " +" " msgid "without GUI." msgstr " ." +msgid "with GTK3 GUI." +msgstr " GTK3." + msgid "with GTK2-GNOME GUI." msgstr " GTK2-GNOME." @@ -6109,11 +6239,8 @@ msgstr " msgid "with Cocoa GUI." msgstr " Cocoa." -msgid "with (classic) GUI." -msgstr " ." - msgid " Features included (+) or not (-):\n" -msgstr " (+) (-) :\n" +msgstr " (+) (-) :\n" msgid " system vimrc file: \"" msgstr " vimrc: \"" @@ -6145,6 +6272,9 @@ msgstr " msgid "3rd user gvimrc file: \"" msgstr " gvimrc: \"" +msgid " defaults file: \"" +msgstr " : \"" + msgid " system menu file: \"" msgstr " : \"" @@ -6176,7 +6306,7 @@ msgid "by Bram Moolenaar et al." msgstr " " msgid "Vim is open source and freely distributable" -msgstr "Vim " +msgstr "Vim " msgid "Help poor children in Uganda!" msgstr " !" @@ -6191,7 +6321,7 @@ msgid "type :help or for on-line help" msgstr " :help " msgid "type :help version8 for version info" -msgstr " :help version8 " +msgstr " :help version8 " msgid "Running in Vi compatible mode" msgstr " Vi- " @@ -6235,12 +6365,6 @@ msgstr " msgid "menu Help->Sponsor/Register for information " msgstr " ->/ " -msgid "WARNING: Windows 95/98/ME detected" -msgstr ": Windows 95/98/ME" - -msgid "type :help windows95 for info on this" -msgstr " :help windows95 " - msgid "Already only one window" msgstr " " @@ -6272,9 +6396,25 @@ msgstr "E446: msgid "E447: Can't find file \"%s\" in path" msgstr "E447: \"%s\" " +#, c-format +msgid "E799: Invalid ID: %ld (must be greater than or equal to 1)" +msgstr "E799: ID: %ld ( 1)" + +#, c-format +msgid "E801: ID already taken: %ld" +msgstr "E801: ID : %ld" + msgid "List or number required" msgstr " " +#, c-format +msgid "E802: Invalid ID: %ld (must be greater than or equal to 1)" +msgstr "E802: ID: %ld ( 1)" + +#, c-format +msgid "E803: ID not found: %ld" +msgstr "E803: ID : %ld" + #, c-format msgid "E370: Could not load library %s" msgstr "E370: %s" @@ -6299,7 +6439,6 @@ msgstr " msgid "Edit with &Vim" msgstr "& Vim" -#. Now concatenate msgid "Edit with existing Vim - " msgstr " Vim " @@ -6318,10 +6457,6 @@ msgstr " msgid "--No lines in buffer--" msgstr "-- --" -#. -#. * The error messages that can be shared are included here. -#. * Excluded are errors that are only used once and debugging messages. -#. msgid "E470: Command aborted" msgstr "E470: " @@ -6378,6 +6513,10 @@ msgstr "E236: msgid "E473: Internal error" msgstr "E473: " +#, c-format +msgid "E685: Internal error: %s" +msgstr "E685: : %s" + msgid "Interrupted" msgstr "" @@ -6391,6 +6530,14 @@ msgstr "E474: msgid "E475: Invalid argument: %s" msgstr "E475: : %s" +#, c-format +msgid "E475: Invalid value for argument %s" +msgstr "E475: : %s" + +#, c-format +msgid "E475: Invalid value for argument %s: %s" +msgstr "E475: %s: %s" + #, c-format msgid "E15: Invalid expression: %s" msgstr "E15: : %s" @@ -6409,6 +6556,9 @@ msgstr "E17: \"%s\" msgid "E364: Library call failed for \"%s()\"" msgstr "E364: \"%s()\" " +msgid "E667: Fsync failed" +msgstr "E667: fsync()" + #, c-format msgid "E448: Could not load library function %s" msgstr "E448: %s " @@ -6505,12 +6655,6 @@ msgstr "E484: msgid "E485: Can't read file %s" msgstr "E485: %s" -msgid "E37: No write since last change (add ! to override)" -msgstr "E37: ( !, )" - -msgid "E37: No write since last change" -msgstr "E37: " - msgid "E38: Null argument" msgstr "E38: " @@ -6563,6 +6707,31 @@ msgstr "E46: msgid "E794: Cannot set variable in the sandbox: \"%s\"" msgstr "E794: : \"%s\"" +msgid "E713: Cannot use empty key for Dictionary" +msgstr "E713: " + +msgid "E715: Dictionary required" +msgstr "E715: " + +#, c-format +msgid "E684: list index out of range: %ld" +msgstr "E684: : %ld" + +#, c-format +msgid "E118: Too many arguments for function: %s" +msgstr "E118: %s" + +#, c-format +msgid "E716: Key not present in Dictionary: %s" +msgstr "E716: : %s" + +msgid "E714: List required" +msgstr "E714: " + +#, c-format +msgid "E712: Argument of %s must be a List or Dictionary" +msgstr "E712: %s " + msgid "E47: Error while reading errorfile" msgstr "E47: " @@ -6622,8 +6791,8 @@ msgstr "" msgid "E80: Error while writing" msgstr "E80: " -msgid "Zero count" -msgstr " " +msgid "E939: Positive count required" +msgstr "E939: " msgid "E81: Using not in a script context" msgstr "E81: " @@ -6637,16 +6806,16 @@ msgstr "E463: msgid "E744: NetBeans does not allow changes in read-only files" msgstr "E744: NetBeans " -#, c-format -msgid "E685: Internal error: %s" -msgstr "E685: : %s" - msgid "E363: pattern uses more memory than 'maxmempattern'" msgstr "E363: 'maxmempattern'" msgid "E749: empty buffer" msgstr "E749: " +#, c-format +msgid "E86: Buffer %ld does not exist" +msgstr "E86: %ld " + msgid "E682: Invalid search pattern or delimiter" msgstr "E682: " @@ -6660,6 +6829,13 @@ msgstr "E764: msgid "E850: Invalid register name" msgstr "E850: " +#, c-format +msgid "E919: Directory not found in '%s': \"%s\"" +msgstr "E919: '%s': \"%s\"" + +msgid "E952: Autocommand caused recursive behavior" +msgstr "E952: " + msgid "search hit TOP, continuing at BOTTOM" msgstr " " @@ -6767,7 +6943,6 @@ msgstr " msgid "list index out of range" msgstr " " -#. No more suitable format specifications in python-2.3 #, c-format msgid "internal error: failed to get vim list item %d" msgstr " : VIM- %d" @@ -6814,9 +6989,6 @@ msgstr " msgid "function %s does not exist" msgstr " %s " -msgid "function constructor does not accept keyword arguments" -msgstr " " - #, c-format msgid "failed to run function %s" msgstr " %s" @@ -6904,6 +7076,10 @@ msgstr "" msgid "unable to convert %s to vim dictionary" msgstr " %s VIM" +#, c-format +msgid "unable to convert %s to vim list" +msgstr " %s VIM" + #, c-format msgid "unable to convert %s to vim structure" msgstr " %s VIM" @@ -6932,3 +7108,4 @@ msgstr "" " : sys.path \n" " vim.VIM_SPECIAL_PATH sys.path" + diff --git a/src/po/ru.po b/src/po/ru.po index 82b4c9e454..e9b2ac197c 100644 --- a/src/po/ru.po +++ b/src/po/ru.po @@ -3,20 +3,22 @@ # Об условиях использования читайте в редакторе Vim ":help uganda" # # vassily "vr" ragosin , 2004 -# Sergey Alyoshin , 2013-2014 +# Sergey Alyoshin , 2013-2014, 2016, 2018 # msgid "" msgstr "" "Project-Id-Version: vim_ru\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-10-10 11:52+0400\n" -"PO-Revision-Date: 2014-10-10 12:00+0400\n" +"POT-Creation-Date: 2018-04-28 21:50+0300\n" +"PO-Revision-Date: 2018-04-28 21:51+0300\n" "Last-Translator: Sergey Alyoshin \n" "Language-Team: \n" "Language: Russian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" msgid "E831: bf_key_init() called with empty password" msgstr "E831: bf_key_init() вызван с пустым паролем" @@ -49,6 +51,12 @@ msgstr "E82: Невозможно выделить память даже для msgid "E83: Cannot allocate buffer, using other one..." msgstr "E83: Невозможно выделить память для буфера, используем другой буфер..." +msgid "E931: Buffer cannot be registered" +msgstr "E931: Невозможно зарегистрировать буфер" + +msgid "E937: Attempt to delete a buffer that is in use" +msgstr "E937: Попытка удалить используемый буфер" + msgid "E515: No buffers were unloaded" msgstr "E515: Ни один буфер не был выгружен из памяти" @@ -85,14 +93,9 @@ msgstr "E90: Невозможно выгрузить из памяти посл msgid "E84: No modified buffer found" msgstr "E84: Изменённых буферов не обнаружено" -#. back where we started, didn't find anything. msgid "E85: There is no listed buffer" msgstr "E85: Буферы в списке отсутствуют" -#, c-format -msgid "E86: Buffer %ld does not exist" -msgstr "E86: Буфер %ld не существует" - msgid "E87: Cannot go beyond last buffer" msgstr "E87: Это последний буфер" @@ -104,6 +107,18 @@ msgid "E89: No write since last change for buffer %ld (add ! to override)" msgstr "" "E89: Изменения в буфере %ld не сохранены (добавьте !, чтобы обойти проверку)" +msgid "E948: Job still running (add ! to end the job)" +msgstr "E948: Задание ещё выполняется (добавьте !, чтобы завершить)" + +msgid "E37: No write since last change (add ! to override)" +msgstr "E37: Изменения не сохранены (добавьте !, чтобы обойти проверку)" + +msgid "E948: Job still running" +msgstr "E948: Задание ещё выполняется" + +msgid "E37: No write since last change" +msgstr "E37: Изменения не сохранены" + msgid "W14: Warning: List of file names overflow" msgstr "W14: Предупреждение: переполнение списка имён файлов" @@ -159,7 +174,6 @@ msgstr "стр. %ld из %ld --%d%%-- кол. " msgid "[No Name]" msgstr "[Нет имени]" -#. must be a help buffer msgid "help" msgstr "справка" @@ -185,6 +199,10 @@ msgstr "" "\n" "# Список буферов:\n" +msgid "E382: Cannot write, 'buftype' option is set" +msgstr "" +"E382: Запись невозможна, значение опции 'buftype' не является пустой строкой" + msgid "[Scratch]" msgstr "[Временный]" @@ -203,9 +221,64 @@ msgstr "Значки для %s:" msgid " line=%ld id=%d name=%s" msgstr " строка=%ld id=%d имя=%s" +msgid "E902: Cannot connect to port" +msgstr "E902: Невозможно соединиться с портом" + +msgid "E901: gethostbyname() in channel_open()" +msgstr "E901: gethostbyname() в channel_open()" + +msgid "E898: socket() in channel_open()" +msgstr "E898: socket() в channel_open()" + +msgid "E903: received command with non-string argument" +msgstr "E903: Получена команда с не строковым параметром" + +msgid "E904: last argument for expr/call must be a number" +msgstr "E904: Последний параметр для выражения или вызова должен быть числом" + +msgid "E904: third argument for call must be a list" +msgstr "E904: Третий параметр для вызова должен быть списком" + +#, c-format +msgid "E905: received unknown command: %s" +msgstr "E905: Получена неизвестная команда %s" + +#, c-format +msgid "E630: %s(): write while not connected" +msgstr "E630: %s(): запись без соединения" + +#, c-format +msgid "E631: %s(): write failed" +msgstr "E631: Ошибка записи в %s()" + +#, c-format +msgid "E917: Cannot use a callback with %s()" +msgstr "E917: Невозможно использовать обратный вызов с %s()" + +msgid "E912: cannot use ch_evalexpr()/ch_sendexpr() with a raw or nl channel" +msgstr "" +"E912: Невозможно использовать ch_evalexpr() или ch_sendexpr() с каналом nl " +"или raw" + +msgid "E906: not an open channel" +msgstr "E906: Не открытый канал" + +msgid "E920: _io file requires _name to be set" +msgstr "E920: Файл _io требует установленного _name" + +msgid "E915: in_io buffer requires in_buf or in_name to be set" +msgstr "E915: буфер in_io требует установленного in_buf или in_name" + +#, c-format +msgid "E918: buffer must be loaded: %s" +msgstr "E918: Буфер должен быть загружен: %s" + msgid "E821: File is encrypted with unknown method" msgstr "E821: Файл зашифрован неизвестным методом" +msgid "Warning: Using a weak encryption method; see :help 'cm'" +msgstr "Предупреждение: Используется слабый метод шифрования, см. :help 'cm'" + msgid "Enter encryption key: " msgstr "Введите пароль для шифрования: " @@ -219,7 +292,30 @@ msgid "[crypted]" msgstr "[зашифровано]" #, c-format -msgid "E96: Can not diff more than %ld buffers" +msgid "E720: Missing colon in Dictionary: %s" +msgstr "E720: Пропущено двоеточие в словаре: %s" + +#, c-format +msgid "E721: Duplicate key in Dictionary: \"%s\"" +msgstr "E721: Повтор ключа в словаре: \"%s\"" + +#, c-format +msgid "E722: Missing comma in Dictionary: %s" +msgstr "E722: Пропущена запятая в словаре: %s" + +#, c-format +msgid "E723: Missing end of Dictionary '}': %s" +msgstr "E723: Пропущено окончание словаря '}': %s" + +msgid "extend() argument" +msgstr "параметра extend()" + +#, c-format +msgid "E737: Key already exists: %s" +msgstr "E737: Ключ уже существует: %s" + +#, c-format +msgid "E96: Cannot diff more than %ld buffers" msgstr "E96: Следить за отличиями можно не более чем в %ld буферах" msgid "E810: Cannot read or write temp files" @@ -275,7 +371,6 @@ msgstr "E791: пустая запись раскладки клавиатуры" msgid " Keyword completion (^N^P)" msgstr " Автодополнение ключевого слова (^N^P)" -#. ctrl_x_mode == 0, ^P/^N compl. msgid " ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)" msgstr " Режим ^X (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)" @@ -347,13 +442,12 @@ msgstr "Просмотр: %s" msgid "Scanning tags." msgstr "Выполняется поиск среди меток." +msgid "match in file" +msgstr "соответствие в файле" + msgid " Adding" msgstr " Добавление" -#. showmode might reset the internal line pointers, so it must -#. * be called before line = ml_get(), or when this address is no -#. * longer needed. -- Acevedo. -#. msgid "-- Searching..." msgstr "-- Поиск..." @@ -377,10 +471,6 @@ msgstr "соответствие %d" msgid "E18: Unexpected characters in :let" msgstr "E18: Неожиданные символы в :let" -#, c-format -msgid "E684: list index out of range: %ld" -msgstr "E684: Индекс списка за пределами диапазона: %ld" - #, c-format msgid "E121: Undefined variable: %s" msgstr "E121: Неопределённая переменная: %s" @@ -388,41 +478,6 @@ msgstr "E121: Неопределённая переменная: %s" msgid "E111: Missing ']'" msgstr "E111: Пропущена ']'" -#, c-format -msgid "E686: Argument of %s must be a List" -msgstr "E686: Параметр %s должен быть списком" - -#, c-format -msgid "E712: Argument of %s must be a List or Dictionary" -msgstr "E712: Параметр %s должен быть списком или словарём" - -msgid "E713: Cannot use empty key for Dictionary" -msgstr "E713: Невозможно использовать пустой ключ для словаря" - -msgid "E714: List required" -msgstr "E714: Требуется список" - -msgid "E715: Dictionary required" -msgstr "E715: Требуется словарь" - -#, c-format -msgid "E118: Too many arguments for function: %s" -msgstr "E118: Слишком много параметров для функции %s" - -#, c-format -msgid "E716: Key not present in Dictionary: %s" -msgstr "E716: Нет ключа в словаре: %s" - -#, c-format -msgid "E122: Function %s already exists, add ! to replace it" -msgstr "E122: Функция %s уже существует. Добавьте !, чтобы заменить её." - -msgid "E717: Dictionary entry already exists" -msgstr "E717: Запись уже существует в словаре" - -msgid "E718: Funcref required" -msgstr "E718: Требуется ссылка на функцию" - msgid "E719: Cannot use [:] with a Dictionary" msgstr "E719: Невозможно использовать [:] со словарём" @@ -430,10 +485,6 @@ msgstr "E719: Невозможно использовать [:] со слова msgid "E734: Wrong variable type for %s=" msgstr "E734: Неправильный тип переменной для %s=" -#, c-format -msgid "E130: Unknown function: %s" -msgstr "E130: Неизвестная функция: %s" - #, c-format msgid "E461: Illegal variable name: %s" msgstr "E461: Недопустимое имя переменной: %s" @@ -472,38 +523,20 @@ msgstr "E711: Список-значение не содержит достато msgid "E690: Missing \"in\" after :for" msgstr "E690: Пропущено \"in\" после :for" -#, c-format -msgid "E107: Missing parentheses: %s" -msgstr "E107: Пропущены скобки: %s" - #, c-format msgid "E108: No such variable: \"%s\"" msgstr "E108: Нет такой переменной: \"%s\"" +#, c-format +msgid "E940: Cannot lock or unlock variable %s" +msgstr "E940: Невозможно (раз)блокировать переменную %s" + msgid "E743: variable nested too deep for (un)lock" msgstr "E743: Слишком глубоко вложенные переменные для (раз)блокировки" msgid "E109: Missing ':' after '?'" msgstr "E109: Пропущено ':' после '?'" -msgid "E691: Can only compare List with List" -msgstr "E691: Список можно сравнивать только со списком" - -msgid "E692: Invalid operation for List" -msgstr "E692: Недопустимая операция для списков" - -msgid "E735: Can only compare Dictionary with Dictionary" -msgstr "E735: Словарь можно сравнивать только со словарём" - -msgid "E736: Invalid operation for Dictionary" -msgstr "E736: Недопустимая операция для словаря" - -msgid "E693: Can only compare Funcref with Funcref" -msgstr "E693: Ссылку на функцию можно сравнивать только с ссылкой на функцию" - -msgid "E694: Invalid operation for Funcrefs" -msgstr "E694: Недопустимая операция для ссылки на функцию" - msgid "E804: Cannot use '%' with Float" msgstr "E804: Невозможно использовать '%' с числом с плавающей точкой" @@ -513,6 +546,9 @@ msgstr "E110: Пропущена ')'" msgid "E695: Cannot index a Funcref" msgstr "E695: Невозможно индексировать ссылку на функцию" +msgid "E909: Cannot index a special variable" +msgstr "E909: Невозможно индексировать специальную переменную" + #, c-format msgid "E112: Option name missing: %s" msgstr "E112: Не указано имя опции: %s" @@ -529,167 +565,12 @@ msgstr "E114: Пропущена кавычка: %s" msgid "E115: Missing quote: %s" msgstr "E115: Пропущена кавычка: %s" -#, c-format -msgid "E696: Missing comma in List: %s" -msgstr "E696: Пропущена запятая в списке: %s" - -#, c-format -msgid "E697: Missing end of List ']': %s" -msgstr "E697: Пропущено окончание списка ']': %s" - -#, c-format -msgid "E720: Missing colon in Dictionary: %s" -msgstr "E720: Пропущено двоеточие в словаре: %s" - -#, c-format -msgid "E721: Duplicate key in Dictionary: \"%s\"" -msgstr "E721: Повтор ключа в словаре: \"%s\"" - -#, c-format -msgid "E722: Missing comma in Dictionary: %s" -msgstr "E722: Пропущена запятая в словаре: %s" - -#, c-format -msgid "E723: Missing end of Dictionary '}': %s" -msgstr "E723: Пропущено окончание словаря '}': %s" +msgid "Not enough memory to set references, garbage collection aborted!" +msgstr "Недостаточно памяти для установки ссылки, сборка мусора прекращена!" msgid "E724: variable nested too deep for displaying" msgstr "E724: Слишком глубоко вложенные переменные для отображения" -#, c-format -msgid "E740: Too many arguments for function %s" -msgstr "E740: Слишком много параметров для функции %s" - -#, c-format -msgid "E116: Invalid arguments for function %s" -msgstr "E116: Параметры для функции %s заданы неверно" - -#, c-format -msgid "E117: Unknown function: %s" -msgstr "E117: Неизвестная функция: %s" - -#, c-format -msgid "E119: Not enough arguments for function: %s" -msgstr "E119: Недостаточно параметров для функции %s" - -#, c-format -msgid "E120: Using not in a script context: %s" -msgstr "E120: используется вне сценария: %s" - -#, c-format -msgid "E725: Calling dict function without Dictionary: %s" -msgstr "E725: Вызов функции dict без словаря: %s" - -msgid "E808: Number or Float required" -msgstr "E808: Требуется целое число или с плавающей точкой" - -msgid "add() argument" -msgstr "параметра add()" - -msgid "E699: Too many arguments" -msgstr "E699: Слишком много параметров" - -msgid "E785: complete() can only be used in Insert mode" -msgstr "E785: complete() может использоваться только в режиме Вставки" - -#. -#. * Yes this is ugly, I don't particularly like it either. But doing it -#. * this way has the compelling advantage that translations need not to -#. * be touched at all. See below what 'ok' and 'ync' are used for. -#. -msgid "&Ok" -msgstr "&Ok" - -#, c-format -msgid "E737: Key already exists: %s" -msgstr "E737: Ключ уже существует: %s" - -msgid "extend() argument" -msgstr "параметра extend()" - -msgid "map() argument" -msgstr "параметра map()" - -msgid "filter() argument" -msgstr "параметра filter()" - -#, c-format -msgid "+-%s%3ld lines: " -msgstr "+-%s%3ld строк: " - -#, c-format -msgid "E700: Unknown function: %s" -msgstr "E700: Неизвестная функция: %s" - -msgid "" -"&OK\n" -"&Cancel" -msgstr "" -"&OK\n" -"&C Отмена" - -msgid "called inputrestore() more often than inputsave()" -msgstr "Функция inputrestore() вызывается чаще, чем функция inputsave()" - -msgid "insert() argument" -msgstr "параметра insert()" - -msgid "E786: Range not allowed" -msgstr "E786: Диапазон не допускается" - -msgid "E701: Invalid type for len()" -msgstr "E701: Неправильные тип для len()" - -msgid "E726: Stride is zero" -msgstr "E726: Нулевой шаг" - -msgid "E727: Start past end" -msgstr "E727: Начало после конца" - -msgid "" -msgstr "<пусто>" - -msgid "E240: No connection to Vim server" -msgstr "E240: Нет связи с сервером Vim" - -#, c-format -msgid "E241: Unable to send to %s" -msgstr "E241: Не могу отправить сообщение для %s" - -msgid "E277: Unable to read a server reply" -msgstr "E277: Сервер не отвечает" - -msgid "remove() argument" -msgstr "параметра remove()" - -msgid "E655: Too many symbolic links (cycle?)" -msgstr "E655: Слишком много символических ссылок (цикл?)" - -msgid "reverse() argument" -msgstr "параметра reverse()" - -msgid "E258: Unable to send to client" -msgstr "E258: Не могу ответить клиенту" - -msgid "sort() argument" -msgstr "параметра sort()" - -msgid "uniq() argument" -msgstr "параметра uniq()" - -msgid "E702: Sort compare function failed" -msgstr "E702: Неудачное завершение функции сравнения при сортировке" - -msgid "E882: Uniq compare function failed" -msgstr "" -"E882: Неудачное завершение функции сравнения при проверке единственности" - -msgid "(Invalid)" -msgstr "(Неправильно)" - -msgid "E677: Error writing temp file" -msgstr "E677: Ошибка записи во временный файл" - msgid "E805: Using a Float as a Number" msgstr "E805: Использование числа с плавающей точкой как целого" @@ -702,6 +583,33 @@ msgstr "E745: Использование списка как числа" msgid "E728: Using a Dictionary as a Number" msgstr "E728: Использование словаря как числа" +msgid "E910: Using a Job as a Number" +msgstr "E910: Использование задания как числа" + +msgid "E913: Using a Channel as a Number" +msgstr "E913: Использование канала как числа" + +msgid "E891: Using a Funcref as a Float" +msgstr "E891: Использование ссылки на функцию как числа с плавающей точкой" + +msgid "E892: Using a String as a Float" +msgstr "E892: Использование строки как числа с плавающей точкой" + +msgid "E893: Using a List as a Float" +msgstr "E893: Использование списка как числа с плавающей точкой" + +msgid "E894: Using a Dictionary as a Float" +msgstr "E894: Использование словаря как числа с плавающей точкой" + +msgid "E907: Using a special value as a Float" +msgstr "E907: Использование специального значения как числа с плавающей точкой" + +msgid "E911: Using a Job as a Float" +msgstr "E911: Использование задания как числа с плавающей точкой" + +msgid "E914: Using a Channel as a Float" +msgstr "E914: Использование канала как числа с плавающей точкой" + msgid "E729: using Funcref as a String" msgstr "E729: Использование ссылки на функцию как строки" @@ -711,9 +619,8 @@ msgstr "E730: Использование списка как строки" msgid "E731: using Dictionary as a String" msgstr "E731: Использование словаря как строки" -#, c-format -msgid "E706: Variable type mismatch for: %s" -msgstr "E706: Несоответствие типа переменной для: %s" +msgid "E908: using an invalid value as a String" +msgstr "E908: Использование неправильного значения как строки" #, c-format msgid "E795: Cannot delete variable %s" @@ -743,81 +650,6 @@ msgstr "E742: Невозможно изменить значение %s" msgid "E698: variable nested too deep for making a copy" msgstr "E698: Слишком глубоко вложенные переменные для копирования" -#, c-format -msgid "E123: Undefined function: %s" -msgstr "E123: Неопределённая функция: %s" - -#, c-format -msgid "E124: Missing '(': %s" -msgstr "E124: Пропущена '(': %s" - -msgid "E862: Cannot use g: here" -msgstr "E862: Здесь невозможно использовать g:" - -#, c-format -msgid "E125: Illegal argument: %s" -msgstr "E125: Недопустимый параметр: %s" - -#, c-format -msgid "E853: Duplicate argument name: %s" -msgstr "E853: Повторяющееся имя параметра: %s" - -msgid "E126: Missing :endfunction" -msgstr "E126: Пропущена команда :endfunction" - -#, c-format -msgid "E707: Function name conflicts with variable: %s" -msgstr "E707: Имя функции конфликтует с переменной: %s" - -#, c-format -msgid "E127: Cannot redefine function %s: It is in use" -msgstr "E127: Невозможно переопределить функцию %s, она используется" - -#, c-format -msgid "E746: Function name does not match script file name: %s" -msgstr "E746: Имя функции не соответствует имени файла сценария: %s" - -msgid "E129: Function name required" -msgstr "E129: Требуется имя функции" - -#, c-format -msgid "E128: Function name must start with a capital or \"s:\": %s" -msgstr "E128: Имя функции должно начинаться с заглавной буквы или \"s:\": %s" - -#, c-format -msgid "E884: Function name cannot contain a colon: %s" -msgstr "E884: Имя функции не может содержать двоеточие: %s" - -#, c-format -msgid "E131: Cannot delete function %s: It is in use" -msgstr "E131: Невозможно удалить функцию %s, она используется" - -msgid "E132: Function call depth is higher than 'maxfuncdepth'" -msgstr "E132: Глубина вызова функции больше, чем значение 'maxfuncdepth'" - -#, c-format -msgid "calling %s" -msgstr "вызов %s" - -#, c-format -msgid "%s aborted" -msgstr "%s прервана" - -#, c-format -msgid "%s returning #%ld" -msgstr "%s возвращает #%ld" - -#, c-format -msgid "%s returning %s" -msgstr "%s возвращает %s" - -#, c-format -msgid "continuing in %s" -msgstr "продолжение в %s" - -msgid "E133: :return not inside a function" -msgstr "E133: команда :return вне функции" - msgid "" "\n" "# global variables:\n" @@ -832,20 +664,179 @@ msgstr "" "\n" "\tВ последний раз опция изменена в " -msgid "No old files" -msgstr "Нет старых файлов" +msgid "E691: Can only compare List with List" +msgstr "E691: Список можно сравнивать только со списком" + +msgid "E692: Invalid operation for List" +msgstr "E692: Недопустимая операция для списков" + +msgid "E735: Can only compare Dictionary with Dictionary" +msgstr "E735: Словарь можно сравнивать только со словарём" + +msgid "E736: Invalid operation for Dictionary" +msgstr "E736: Недопустимая операция для словаря" + +msgid "E694: Invalid operation for Funcrefs" +msgstr "E694: Недопустимая операция для ссылки на функцию" + +msgid "map() argument" +msgstr "параметра map()" + +msgid "filter() argument" +msgstr "параметра filter()" + +#, c-format +msgid "E686: Argument of %s must be a List" +msgstr "E686: Параметр %s должен быть списком" + +msgid "E928: String required" +msgstr "E928: Требуется строка" + +msgid "E808: Number or Float required" +msgstr "E808: Требуется целое число или с плавающей точкой" + +msgid "add() argument" +msgstr "параметра add()" + +msgid "E785: complete() can only be used in Insert mode" +msgstr "E785: complete() может использоваться только в режиме Вставки" + +msgid "&Ok" +msgstr "&Ok" + +#, c-format +msgid "+-%s%3ld line: " +msgid_plural "+-%s%3ld lines: " +msgstr[0] "+-%s%3ld строка: " +msgstr[1] "+-%s%3ld строки: " +msgstr[2] "+-%s%3ld строк: " + +#, c-format +msgid "E700: Unknown function: %s" +msgstr "E700: Неизвестная функция: %s" + +msgid "E922: expected a dict" +msgstr "E922: Ожидался словарь" + +msgid "E923: Second argument of function() must be a list or a dict" +msgstr "E923: Второй параметр функции() должен быть списком или словарём" + +msgid "" +"&OK\n" +"&Cancel" +msgstr "" +"&OK\n" +"&C Отмена" + +msgid "called inputrestore() more often than inputsave()" +msgstr "Функция inputrestore() вызывается чаще, чем функция inputsave()" + +msgid "insert() argument" +msgstr "параметра insert()" + +msgid "E786: Range not allowed" +msgstr "E786: Диапазон не допускается" + +msgid "E916: not a valid job" +msgstr "E916: Недопустимое задание" + +msgid "E701: Invalid type for len()" +msgstr "E701: Неправильные тип для len()" + +#, c-format +msgid "E798: ID is reserved for \":match\": %ld" +msgstr "E798: ID зарезервирован для \":match\": %ld" + +msgid "E726: Stride is zero" +msgstr "E726: Нулевой шаг" + +msgid "E727: Start past end" +msgstr "E727: Начало после конца" + +msgid "" +msgstr "<пусто>" + +msgid "E240: No connection to the X server" +msgstr "E240: Нет связи с X-сервером" + +#, c-format +msgid "E241: Unable to send to %s" +msgstr "E241: Не могу отправить сообщение для %s" + +msgid "E277: Unable to read a server reply" +msgstr "E277: Сервер не отвечает" + +msgid "E941: already started a server" +msgstr "E941: Сервер уже запущен" + +msgid "E942: +clientserver feature not available" +msgstr "E942: Особенность +clientserver недоступна" + +msgid "remove() argument" +msgstr "параметра remove()" + +msgid "E655: Too many symbolic links (cycle?)" +msgstr "E655: Слишком много символических ссылок (цикл?)" + +msgid "reverse() argument" +msgstr "параметра reverse()" + +msgid "E258: Unable to send to client" +msgstr "E258: Не могу ответить клиенту" + +#, c-format +msgid "E927: Invalid action: '%s'" +msgstr "E927: Неправильное действие: '%s'" + +msgid "sort() argument" +msgstr "параметра sort()" + +msgid "uniq() argument" +msgstr "параметра uniq()" + +msgid "E702: Sort compare function failed" +msgstr "E702: Неудачное завершение функции сравнения при сортировке" + +msgid "E882: Uniq compare function failed" +msgstr "" +"E882: Неудачное завершение функции сравнения при проверке единственности" + +msgid "(Invalid)" +msgstr "(Неправильно)" + +#, c-format +msgid "E935: invalid submatch number: %d" +msgstr "E935: Недопустимый номер подсоответствия: %d" + +msgid "E677: Error writing temp file" +msgstr "E677: Ошибка записи во временный файл" + +msgid "E921: Invalid callback argument" +msgstr "E921: Недопустимый параметр обратного вызова" + +#, c-format +msgid "<%s>%s%s %d, Hex %02x, Oct %03o, Digr %s" +msgstr "<%s>%s%s %d, Шес %02x, Вос %03o, Дигр %s" #, c-format msgid "<%s>%s%s %d, Hex %02x, Octal %03o" -msgstr "<%s>%s%s %d, Hex %02x, Octal %03o" +msgstr "<%s>%s%s %d, Шес %02x, Вос %03o" + +#, c-format +msgid "> %d, Hex %04x, Oct %o, Digr %s" +msgstr "> %d, Шес %04x, Вос %o, Дигр %s" + +#, c-format +msgid "> %d, Hex %08x, Oct %o, Digr %s" +msgstr "> %d, Шес %08x, Вос %o, Дигр %s" #, c-format msgid "> %d, Hex %04x, Octal %o" -msgstr "> %d, Hex %04x, Octal %o" +msgstr "> %d, Шес %04x, Вос %o" #, c-format msgid "> %d, Hex %08x, Octal %o" -msgstr "> %d, Hex %08x, Octal %o" +msgstr "> %d, Шес %08x, Вос %o" msgid "E134: Move lines into themselves" msgstr "E134: Строки перемещаются сами на себя" @@ -891,11 +882,14 @@ msgstr " старых файлов" msgid " FAILED" msgstr " НЕУДАЧНО" -#. avoid a wait_return for this message, it's annoying #, c-format msgid "E137: Viminfo file is not writable: %s" msgstr "E137: Права на запись файла viminfo отсутствуют: %s" +#, c-format +msgid "E929: Too many viminfo temp files, like %s!" +msgstr "E929: Слишком много временных файлов viminfo, таких как %s" + #, c-format msgid "E138: Can't write viminfo file %s!" msgstr "E138: Невозможно записать файл viminfo %s!" @@ -908,7 +902,6 @@ msgstr "Запись файла viminfo \"%s\"" msgid "E886: Can't rename viminfo file to %s!" msgstr "E886: Невозможно переименовать файл viminfo в %s!" -#. Write the info: #, c-format msgid "# This viminfo file was generated by Vim %s.\n" msgstr "# Этот файл viminfo автоматически создан Vim %s.\n" @@ -926,6 +919,13 @@ msgstr "# Значение опции 'encoding' в момент записи ф msgid "Illegal starting char" msgstr "Недопустимый начальный символ" +msgid "" +"\n" +"# Bar lines, copied verbatim:\n" +msgstr "" +"\n" +"# Строк с '|', точно скопировано:\n" + msgid "Save As" msgstr "Сохранить как" @@ -1015,14 +1015,14 @@ msgid "%ld substitutions" msgstr "%ld замен" msgid " on 1 line" -msgstr " в одной строке" +msgstr " в 1 стр." #, c-format msgid " on %ld lines" msgstr " в %ld стр." -msgid "E147: Cannot do :global recursive" -msgstr "E147: Команда :global не может быть рекурсивной" +msgid "E147: Cannot do :global recursive with a range" +msgstr "E147: Невозможно выполнить :global рекурсивно с диапазоном" msgid "E148: Regular expression missing from global" msgstr "E148: В команде :global пропущено регулярное выражение" @@ -1060,8 +1060,8 @@ msgid "Sorry, help file \"%s\" not found" msgstr "Извините, файл справки \"%s\" не найден" #, c-format -msgid "E150: Not a directory: %s" -msgstr "E150: %s не является каталогом" +msgid "E151: No match: %s" +msgstr "E151: Нет соответствия: %s" #, c-format msgid "E152: Cannot open %s for writing" @@ -1079,6 +1079,10 @@ msgstr "E670: Файлы справки используют разные код msgid "E154: Duplicate tag \"%s\" in file %s/%s" msgstr "E154: Повторяющаяся метка \"%s\" в файле %s/%s" +#, c-format +msgid "E150: Not a directory: %s" +msgstr "E150: %s не является каталогом" + #, c-format msgid "E160: Unknown sign command: %s" msgstr "E160: Неизвестная команда значка %s" @@ -1104,6 +1108,9 @@ msgstr "E159: Пропущен номер значка" msgid "E158: Invalid buffer name: %s" msgstr "E158: Неправильное имя буфера: %s" +msgid "E934: Cannot jump to a buffer that does not have a name" +msgstr "E934: Невозможно перейти к буферу без имени" + #, c-format msgid "E157: Invalid sign ID: %ld" msgstr "E157: Неправильный ID значка: %ld" @@ -1121,9 +1128,20 @@ msgstr " (не поддерживается)" msgid "[Deleted]" msgstr "[Удалено]" +msgid "No old files" +msgstr "Нет старых файлов" + msgid "Entering Debug mode. Type \"cont\" to continue." msgstr "Включён режим отладки. Для продолжения наберите \"cont\"" +#, c-format +msgid "Oldval = \"%s\"" +msgstr "Преж.зн. = \"%s\"" + +#, c-format +msgid "Newval = \"%s\"" +msgstr "Нов.зн. = \"%s\"" + #, c-format msgid "line %ld: %s" msgstr "строка %ld: %s" @@ -1132,6 +1150,13 @@ msgstr "строка %ld: %s" msgid "cmd: %s" msgstr "команда: %s" +msgid "frame is zero" +msgstr "нулевой фрейм" + +#, c-format +msgid "frame at highest level: %d" +msgstr "максимальный фрейм: %d" + #, c-format msgid "Breakpoint in \"%s%s\" line %ld" msgstr "Точка остановки в \"%s%s\" стр. %ld" @@ -1147,6 +1172,10 @@ msgstr "Точки остановки не определены" msgid "%3d %s %s line %ld" msgstr "%3d %s %s стр. %ld" +#, c-format +msgid "%3d expr %s" +msgstr "%3d выр. %s" + msgid "E750: First use \":profile start {fname}\"" msgstr "E750: Первое использование \":profile start {имя-файла}\"" @@ -1154,8 +1183,9 @@ msgstr "E750: Первое использование \":profile start {имя- msgid "Save changes to \"%s\"?" msgstr "Сохранить изменения в \"%s\"?" -msgid "Untitled" -msgstr "Без имени" +#, c-format +msgid "E947: Job still running in buffer \"%s\"" +msgstr "E947: Задание ещё выполняется в буфере \"%s\"" #, c-format msgid "E162: No write since last change for buffer \"%s\"" @@ -1187,8 +1217,18 @@ msgid "Searching for \"%s\"" msgstr "Поиск \"%s\"" #, c-format -msgid "not found in 'runtimepath': \"%s\"" -msgstr "не найдено в 'runtimepath': \"%s\"" +msgid "not found in '%s': \"%s\"" +msgstr "не найдено в '%s': \"%s\"" + +#, c-format +msgid "W20: Required python version 2.x not supported, ignoring file: %s" +msgstr "" +"W20: Не поддерживается python требуемой версии 2.x, файл проигнорирован: %s" + +#, c-format +msgid "W21: Required python version 3.x not supported, ignoring file: %s" +msgstr "" +"W21: Не поддерживается python требуемой версии 3.x, файл проигнорирован: %s" msgid "Source Vim script" msgstr "Выполнить сценарий Vim" @@ -1217,6 +1257,10 @@ msgstr "строка %ld: считывание \"%s\"" msgid "finished sourcing %s" msgstr "считывание сценария %s завершено" +#, c-format +msgid "continuing in %s" +msgstr "продолжение в %s" + msgid "modeline" msgstr "режимная строка" @@ -1284,12 +1328,12 @@ msgstr "Задан обратный диапазон, меняем границ msgid "E494: Use w or w>>" msgstr "E494: Используйте w или w>>" +msgid "E943: Command table needs to be updated, run 'make cmdidxs'" +msgstr "E943: Таблица команд должна быть обновлена, выполните 'make cmdidxs'" + msgid "E319: Sorry, the command is not available in this version" msgstr "E319: Извините, эта команда недоступна в данной версии" -msgid "E172: Only one file name allowed" -msgstr "E172: Разрешено использовать только одно имя файла" - msgid "1 more file to edit. Quit anyway?" msgstr "1 файл ожидает редактирования. Выйти?" @@ -1309,10 +1353,10 @@ msgstr "E174: Команда уже существует. Добавьте ! д msgid "" "\n" -" Name Args Range Complete Definition" +" Name Args Address Complete Definition" msgstr "" "\n" -" Имя Парам. Диап. Дополн. Определение" +" Имя Парам. Диап. Дополн. Определение" msgid "No user-defined commands found" msgstr "Команды, определённые пользователем, не обнаружены." @@ -1332,6 +1376,9 @@ msgstr "E178: Неправильное значение числа-приста msgid "E179: argument required for -complete" msgstr "E179: Для -complete требуется указать параметр" +msgid "E179: argument required for -addr" +msgstr "E179: Для -addr требуется указать параметр" + #, c-format msgid "E181: Invalid attribute: %s" msgstr "E181: Неправильный атрибут: %s" @@ -1350,6 +1397,10 @@ msgstr "" msgid "E184: No such user-defined command: %s" msgstr "E184: Нет такой команды пользователя: %s" +#, c-format +msgid "E180: Invalid address type value: %s" +msgstr "E180: Неправильное значение типа адреса: %s" + #, c-format msgid "E180: Invalid complete value: %s" msgstr "E180: Неправильное значение дополнения: %s" @@ -1414,6 +1465,9 @@ msgstr "E188: В данной системе определение положе msgid "E466: :winpos requires two number arguments" msgstr "E466: Команда :winpos требует указания двух числовых параметров" +msgid "E930: Cannot use :redir inside execute()" +msgstr "E930: Невозможно использовать :redir внутри execute()" + msgid "Save Redirection" msgstr "Перенаправление записи" @@ -1438,7 +1492,6 @@ msgstr "E189: \"%s\" существует (добавьте !, чтобы обо msgid "E190: Cannot open \"%s\" for writing" msgstr "E190: Невозможно открыть для записи \"%s\"" -#. set mark msgid "E191: Argument must be a letter or forward/backward quote" msgstr "E191: Параметр должен быть прямой/обратной кавычкой или буквой" @@ -1476,6 +1529,9 @@ msgstr "E500: Результатом выражения является пус msgid "E195: Cannot open viminfo file for reading" msgstr "E195: Невозможно открыть файл viminfo для чтения" +msgid "Untitled" +msgstr "Без имени" + msgid "E196: No digraphs in this version" msgstr "E196: В этой версии диграфы не работают" @@ -1483,7 +1539,6 @@ msgid "E608: Cannot :throw exceptions with 'Vim' prefix" msgstr "" "E608: Невозможно выполнить команду :throw для исключений с приставкой 'Vim'" -#. always scroll up, don't overwrite #, c-format msgid "Exception thrown: %s" msgstr "Исключительная ситуация: %s" @@ -1500,7 +1555,6 @@ msgstr "Исключительная ситуация проигнорирова msgid "%s, line %ld" msgstr "%s, строка %ld" -#. always scroll up, don't overwrite #, c-format msgid "Exception caught: %s" msgstr "Обработка исключительной ситуации: %s" @@ -1526,7 +1580,6 @@ msgstr "Ошибка и прерывание" msgid "Error" msgstr "Ошибка" -#. if (pending & CSTP_INTERRUPT) msgid "Interrupt" msgstr "Прерывание" @@ -1569,15 +1622,12 @@ msgstr "E601: Слишком глубоко вложенный :try" msgid "E603: :catch without :try" msgstr "E603: :catch без :try" -#. Give up for a ":catch" after ":finally" and ignore it. -#. * Just parse. msgid "E604: :catch after :finally" msgstr "E604: :catch после :finally" msgid "E606: :finally without :try" msgstr "E606: :finally без :try" -#. Give up for a multiple ":finally" and ignore it. msgid "E607: multiple :finally" msgstr "E607: Обнаружено несколько :finally" @@ -1622,6 +1672,9 @@ msgstr "Выражение" msgid "Input Line" msgstr "Строка ввода" +msgid "Debug Line" +msgstr "Строка отладки" + msgid "E198: cmd_pchar beyond the command length" msgstr "E198: cmd_pchar больше длины команды" @@ -1667,7 +1720,6 @@ msgstr "Vim: Чтение из стандартного потока ввода msgid "Reading from stdin..." msgstr "Чтение из стандартного потока ввода stdin..." -#. Re-opening the original file failed! msgid "E202: Conversion made file unreadable!" msgstr "E202: В результате преобразования файл стал нечитаемым!" @@ -1760,9 +1812,6 @@ msgid "E510: Can't make backup file (add ! to override)" msgstr "" "E510: Невозможно создать резервный файл (добавьте !, чтобы обойти проверку)" -msgid "E460: The resource fork would be lost (add ! to override)" -msgstr "E460: Ветвь ресурса будет потеряна (добавьте !, чтобы обойти проверку)" - msgid "E214: Can't find temp file for writing" msgstr "E214: Временный файл для записи не найден" @@ -1771,13 +1820,13 @@ msgstr "" "E213: Перекодировка невозможна (добавьте ! для записи без перекодировки)" msgid "E166: Can't open linked file for writing" -msgstr "E166: Невозможно открыть связанный файл для записи" +msgstr "E166: Невозможно открыть файл по ссылке для записи" msgid "E212: Can't open file for writing" msgstr "E212: Невозможно открыть файл для записи" -msgid "E667: Fsync failed" -msgstr "E667: Не удалось выполнить функцию fsync()" +msgid "E949: File changed while writing" +msgstr "E949: Файл был изменён после записи" msgid "E512: Close failed" msgstr "E512: Операция закрытия не удалась" @@ -1875,20 +1924,12 @@ msgstr "1 символ" msgid "%lld characters" msgstr "символов: %lld" -#. Explicit typecast avoids warning on Mac OS X 10.6 -#, c-format -msgid "%ld characters" -msgstr "символов: %ld" - msgid "[noeol]" msgstr "[noeol]" msgid "[Incomplete last line]" msgstr "[Незавершённая последняя строка]" -#. don't overwrite messages here -#. must give this prompt -#. don't use emsg() here, don't want to flush the buffers msgid "WARNING: The file has been changed since reading it!!!" msgstr "ПРЕДУПРЕЖДЕНИЕ: Файл изменён с момента чтения!!!" @@ -1972,11 +2013,16 @@ msgstr "--Удалено--" msgid "auto-removing autocommand: %s " msgstr "авто-удаление автокоманды: %s <буффер=%d>" -#. the group doesn't exist #, c-format msgid "E367: No such group: \"%s\"" msgstr "E367: Группа \"%s\" не существует" +msgid "E936: Cannot delete the current group" +msgstr "E936: Невозможно удалить текущую группу" + +msgid "W19: Deleting augroup that is still in use" +msgstr "W19: Удаление ещё используемой группы автокоманд" + #, c-format msgid "E215: Illegal character after *: %s" msgstr "E215: Недопустимые символы после *: %s" @@ -1989,7 +2035,6 @@ msgstr "E216: Несуществующее событие: %s" msgid "E216: No such group or event: %s" msgstr "E216: Несуществующая группа или событие: %s" -#. Highlight title msgid "" "\n" "--- Auto-Commands ---" @@ -2040,8 +2085,11 @@ msgstr "" "E351: Складка не может быть удалена с текущим значением опции 'foldmethod'" #, c-format -msgid "+--%3ld lines folded " -msgstr "+--%3ld строк в складке" +msgid "+--%3ld line folded " +msgid_plural "+--%3ld lines folded " +msgstr[0] "+--%3ld строка в складке " +msgstr[1] "+--%3ld строки в складке " +msgstr[2] "+--%3ld строк в складке " msgid "E222: Add to read buffer" msgstr "E222: Добавление в буфер чтения" @@ -2137,6 +2185,18 @@ msgstr "" "E232: \"Пузырь\" для вычислений, включающий и сообщение, и обратный вызов, " "не может быть создан" +msgid "_Cancel" +msgstr "О_тмена" + +msgid "_Save" +msgstr "Сохранить _как" + +msgid "_Open" +msgstr "_Открыть" + +msgid "_OK" +msgstr "_Да" + msgid "" "&Yes\n" "&No\n" @@ -2146,8 +2206,14 @@ msgstr "" "&Нет\n" "О&тмена" +msgid "Yes" +msgstr "Да" + +msgid "No" +msgstr "Нет" + msgid "Input _Methods" -msgstr "Методы Ввода" +msgstr "_Методы Ввода" msgid "VIM - Search and Replace..." msgstr "VIM — Поиск и замена..." @@ -2156,46 +2222,43 @@ msgid "VIM - Search..." msgstr "VIM — Поиск..." msgid "Find what:" -msgstr "Что ищем:" +msgstr "Что найти:" msgid "Replace with:" -msgstr "На что заменяем:" +msgstr "Заменить на:" -#. whole word only button msgid "Match whole word only" msgstr "Только точные соответствия" -#. match case button msgid "Match case" -msgstr "Регистрозависимые соответствия" +msgstr "Учитывать регистр" msgid "Direction" msgstr "Направление" -#. 'Up' and 'Down' buttons msgid "Up" msgstr "Вверх" msgid "Down" msgstr "Вниз" -#. 'Find Next' button msgid "Find Next" msgstr "Найти следующее" -#. 'Replace' button msgid "Replace" -msgstr "Замена" +msgstr "Заменить" -#. 'Replace All' button msgid "Replace All" msgstr "Заменить все" +msgid "_Close" +msgstr "_Закрыть" + msgid "Vim: Received \"die\" request from session manager\n" msgstr "Vim: Получен запрос на прекращение работы от диспетчера сеансов\n" -msgid "Close" -msgstr "Закрыть" +msgid "Close tab" +msgstr "Закрыть вкладку" msgid "New tab" msgstr "Новая вкладка" @@ -2242,6 +2305,21 @@ msgstr "Заменить &все" msgid "&Undo" msgstr "О&тмена" +msgid "Open tab..." +msgstr "Открыть вкладку..." + +msgid "Find string (use '\\\\' to find a '\\')" +msgstr "Поиск строки (используйте '\\\\' для поиска '\\')" + +msgid "Find & Replace (use '\\\\' to find a '\\')" +msgstr "Поиск и замена (используйте '\\\\' для поиска '\\')" + +msgid "Not Used" +msgstr "Не используется" + +msgid "Directory\t*.nothing\n" +msgstr "Каталог\t*.ничего\n" + #, c-format msgid "E671: Cannot find window title \"%s\"" msgstr "E671: Окно с заголовком \"%s\" не обнаружено" @@ -2253,26 +2331,6 @@ msgstr "E243: Параметр не поддерживается: \"-%s\"; ис msgid "E672: Unable to open window inside MDI application" msgstr "E672: Невозможно открыть окно внутри приложения MDI" -msgid "Close tab" -msgstr "Закрыть вкладку" - -msgid "Open tab..." -msgstr "Открыть вкладку..." - -msgid "Find string (use '\\\\' to find a '\\')" -msgstr "Поиск строки (используйте '\\\\' для поиска '\\')" - -msgid "Find & Replace (use '\\\\' to find a '\\')" -msgstr "Поиск и замена (используйте '\\\\' для поиска '\\')" - -#. We fake this: Use a filter that doesn't select anything and a default -#. * file name that won't be used. -msgid "Not Used" -msgstr "Не используется" - -msgid "Directory\t*.nothing\n" -msgstr "Каталог\t*.ничего\n" - msgid "Vim E458: Cannot allocate colormap entry, some colors may be incorrect" msgstr "" "Vim E458: Невозможно выделить запись в таблице цвета, некоторые цвета могут " @@ -2329,7 +2387,6 @@ msgstr "Vim — Выбор шрифта" msgid "Name:" msgstr "Название:" -#. create toggle button msgid "Show size in Points" msgstr "Показывать размер в пунктах" @@ -2535,6 +2592,7 @@ msgstr "%-5s: %s%*s (использование: %s)" msgid "" "\n" +" a: Find assignments to this symbol\n" " c: Find functions calling this function\n" " d: Find functions called by this function\n" " e: Find this egrep pattern\n" @@ -2545,6 +2603,7 @@ msgid "" " t: Find this text string\n" msgstr "" "\n" +" a: Найти присваивания для этого символа\n" " c: Найти функции вызывающие эту функцию\n" " d: Найти функции вызываемые этой функцией\n" " e: Найти этот шаблон egrep\n" @@ -2559,7 +2618,7 @@ msgid "E625: cannot open cscope database: %s" msgstr "E625: Невозможно открыть базу данных cscope: %s" msgid "E626: cannot get cscope database information" -msgstr "E626: Информация о базе данных cscope не доступна" +msgstr "E626: Информация о базе данных cscope недоступна" msgid "E568: duplicate cscope database not added" msgstr "E568: Данная база данных cscope уже подсоединена" @@ -2572,7 +2631,6 @@ msgstr "E261: Соединение с cscope %s не обнаружено" msgid "cscope connection %s closed" msgstr "соединение с cscope %s закрыто" -#. should not reach here msgid "E570: fatal error in cs_manage_matches" msgstr "E570: Критическая ошибка в cs_manage_matches" @@ -2614,7 +2672,14 @@ msgid "" "loaded." msgstr "" "E815: К сожалению эта команда не работает, поскольку не загружена библиотека " -"MzScheme" +"MzScheme." + +msgid "" +"E895: Sorry, this command is disabled, the MzScheme's racket/base module " +"could not be loaded." +msgstr "" +"E895: К сожалению эта команда не работает, поскольку не загружен модуль " +"racket/base для MzScheme." msgid "invalid expression" msgstr "неправильное выражение" @@ -2721,102 +2786,12 @@ msgstr "E272: Необработанное исключение" msgid "E273: unknown longjmp status %d" msgstr "E273: Неизвестное состояние longjmp %d" -msgid "Toggle implementation/definition" -msgstr "Переключение между реализацией/определением" - -msgid "Show base class of" -msgstr "Показать основной класс" - -msgid "Show overridden member function" -msgstr "Показать перегруженные функции" - -msgid "Retrieve from file" -msgstr "Получить из файла" - -msgid "Retrieve from project" -msgstr "Получить из проекта" - -msgid "Retrieve from all projects" -msgstr "Получить из всех проектов" - -msgid "Retrieve" -msgstr "Получить" - -msgid "Show source of" -msgstr "Показать исходный код" - -msgid "Find symbol" -msgstr "Найти символ" - -msgid "Browse class" -msgstr "Просмотр класса" - -msgid "Show class in hierarchy" -msgstr "Показать класс в иерархии" - -msgid "Show class in restricted hierarchy" -msgstr "Показать класс в ограниченной иерархии" - -msgid "Xref refers to" -msgstr "Xref ссылается на" - -msgid "Xref referred by" -msgstr "Ссылка на xref из" - -msgid "Xref has a" -msgstr "Xref имеет" - -msgid "Xref used by" -msgstr "Xref используется" - -msgid "Show docu of" -msgstr "Показать docu" - -msgid "Generate docu for" -msgstr "Создать docu" - -msgid "" -"Cannot connect to SNiFF+. Check environment (sniffemacs must be found in " -"$PATH).\n" -msgstr "" -"Невозможно подсоединиться к SNiFF+. Проверьте настройки окружения." -"(sniffemacs должны быть указаны в переменной $PATH).\n" - -msgid "E274: Sniff: Error during read. Disconnected" -msgstr "E274: Sniff: Ошибка во время чтения. Отсоединение" - -msgid "SNiFF+ is currently " -msgstr "В настоящий момент SNiFF+ " - -msgid "not " -msgstr "не " - -msgid "connected" -msgstr "подсоединён" - -#, c-format -msgid "E275: Unknown SNiFF+ request: %s" -msgstr "E275: Неизвестный запрос SNiFF+: %s" - -msgid "E276: Error connecting to SNiFF+" -msgstr "E276: Ошибка соединения со SNiFF+" - -msgid "E278: SNiFF+ not connected" -msgstr "E278: SNiFF+ не подсоединён" - -msgid "E279: Not a SNiFF+ buffer" -msgstr "E279: Это не буфер SNiFF+" - -msgid "Sniff: Error during write. Disconnected" -msgstr "Sniff: Ошибка во время записи. Отсоединение" - msgid "invalid buffer number" msgstr "неправильный номер буфера" msgid "not implemented yet" msgstr "пока не реализовано" -#. ??? msgid "cannot set line(s)" msgstr "невозможно назначить строку или строки" @@ -2857,7 +2832,6 @@ msgstr "" "невозможно зарегистрировать команду с обратным вызовом: буфер или окно в " "процессе удаления" -#. This should never happen. Famous last word? msgid "" "E280: TCL FATAL ERROR: reflist corrupt!? Please report this to vim-dev@vim." "org" @@ -2898,6 +2872,18 @@ msgstr "" "E251: Неправильно сформировано значение данного процесса VIM в реестре. " "Удалено!" +#, c-format +msgid "E938: Duplicate key in JSON: \"%s\"" +msgstr "E938: Повтор ключа в JSON: \"%s\"" + +#, c-format +msgid "E696: Missing comma in List: %s" +msgstr "E696: Пропущена запятая в списке: %s" + +#, c-format +msgid "E697: Missing end of List ']': %s" +msgstr "E697: Пропущено окончание списка ']': %s" + msgid "Unknown option argument" msgstr "Неизвестный необязательный параметр" @@ -2924,13 +2910,13 @@ msgstr "Файлов для редактирования: %d\n" msgid "netbeans is not supported with this GUI\n" msgstr "NetBeans не поддерживается с этим графическим интерфейсом\n" +msgid "'-nb' cannot be used: not enabled at compile time\n" +msgstr "Невозможно использовать '-nb': не включено при компиляции\n" + msgid "This Vim was not compiled with the diff feature." msgstr "" "Данный Vim был скомпилирован с выключенной особенностью просмотра отличий" -msgid "'-nb' cannot be used: not enabled at compile time\n" -msgstr "Невозможно использовать '-nb': не включено при компиляции\n" - msgid "Attempt to open script file again: \"" msgstr "Попытка повторного открытия файла сценария: \"" @@ -2943,13 +2929,15 @@ msgstr "Невозможно открыть для вывода сценария msgid "Vim: Error: Failure to start gvim from NetBeans\n" msgstr "Vim: Ошибка: Не удалось запустить gvim из NetBeans\n" +msgid "Vim: Error: This version of Vim does not run in a Cygwin terminal\n" +msgstr "Vim: Ошибка: Данная версия Vim не работает в терминале Cygwin\n" + msgid "Vim: Warning: Output is not to a terminal\n" msgstr "Vim: Предупреждение: Вывод осуществляется не на терминал\n" msgid "Vim: Warning: Input is not from a terminal\n" msgstr "Vim: Предупреждение: Ввод происходит не с терминала\n" -#. just in case.. msgid "pre-vimrc command line" msgstr "командная строка перед выполнением vimrc" @@ -2976,7 +2964,8 @@ msgstr "-t метка редактирование файла с указан # \n\t\t.. для умещения в 80 столбцов msgid "-q [errorfile] edit file with first error" msgstr "" -"-q [файл-ошибок] редактирование файла с первой ошибкой" +"-q [файл-ошибок]\n" +"\t\t\t\t редактирование файла с первой ошибкой" msgid "" "\n" @@ -3076,8 +3065,8 @@ msgstr "-N\t\t\tРежим неполной совместимости с Vi: 'n # \n\t\t.. для умещения в 80 столбцов msgid "-V[N][fname]\t\tBe verbose [level N] [log messages to fname]" msgstr "" -"-V[N][файл]\t\tВыводить дополнительные сообщения " -"[уровень N] [записывать в файл]" +"-V[N][файл]\t\tВыводить дополнительные сообщения\n" +"\t\t\t\t[уровень N] [записывать в файл]" msgid "-D\t\t\tDebugging mode" msgstr "-D\t\t\tРежим отладки" @@ -3112,6 +3101,12 @@ msgstr "-F\t\t\tЗапуск в режиме \"Фарси\"" msgid "-T \tSet terminal type to " msgstr "-T <терминал>\tНазначить указанный тип <терминала>" +msgid "--not-a-term\t\tSkip warning for input/output not being a terminal" +msgstr "--not-a-term\t\tНе предупреждать при вводе/выводе не в терминал" + +msgid "--ttyfail\t\tExit if input or output is not a terminal" +msgstr "--ttyfail\t\tВыйти при вводе/выводе не в терминал" + msgid "-u \t\tUse instead of any .vimrc" msgstr "-u \t\tИспользовать вместо любых файлов .vimrc" @@ -3124,12 +3119,14 @@ msgstr "--noplugin\t\tНе загружать сценарии модулей" # \n\t\t.. для умещения в 80 столбцов msgid "-p[N]\t\tOpen N tab pages (default: one for each file)" msgstr "" -"-p[N]\t\tОткрыть N вкладок (по умолчанию: по одной на каждый файл)" +"-p[N]\t\tОткрыть N вкладок (по умолчанию: по одной\n" +"\t\t\t\tна каждый файл)" # \n\t\t.. для умещения в 80 столбцов msgid "-o[N]\t\tOpen N windows (default: one for each file)" msgstr "" -"-o[N]\t\tОткрыть N окон (по умолчанию: по одному на каждый файл)" +"-o[N]\t\tОткрыть N окон (по умолчанию: по одному\n" +"\t\t\t\tна каждый файл)" msgid "-O[N]\t\tLike -o but split vertically" msgstr "-O[N]\t\tТо же, что и -o, но с вертикальным разделением окон" @@ -3149,13 +3146,14 @@ msgstr "-c <команда>\t\tВыполнить <команду> после з # \n\t\t.. для умещения в 80 столбцов msgid "-S \t\tSource file after loading the first file" msgstr "" -"-S <сеанс>\t\tПрочитать сценарий <сеанса> после загрузки " -"первого файла" +"-S <сеанс>\t\tПрочитать сценарий <сеанса> после загрузки\n" +"\t\t\t\tпервого файла" # \n\t\t.. для умещения в 80 столбцов msgid "-s \tRead Normal mode commands from file " msgstr "" -"-s <сценарий>\tПрочитать команды Обычного режима из файла <сценария>" +"-s <сценарий>\tПрочитать команды Обычного режима из\n" +"\t\t\t\tфайла <сценария>" msgid "-w \tAppend all typed commands to file " msgstr "-w <сценарий>\tДобавлять все введённые команды в файл <сценария>" @@ -3167,7 +3165,7 @@ msgid "-x\t\t\tEdit encrypted files" msgstr "-x\t\t\tРедактирование зашифрованных файлов" msgid "-display \tConnect vim to this particular X-server" -msgstr "-display <экран>\tПодсоединить VIM к указанному X-серверу" +msgstr "-display <экран>\tПодсоединить Vim к указанному X-серверу" msgid "-X\t\t\tDo not connect to X server" msgstr "-X\t\t\tНе выполнять соединение с сервером X" @@ -3212,6 +3210,11 @@ msgstr "--startuptime <файл>\tЗаписать временную метку msgid "-i \t\tUse instead of .viminfo" msgstr "-i \t\tИспользовать вместо .viminfo файл " +msgid "--clean\t\t'nocompatible', Vim defaults, no plugins, no viminfo" +msgstr "" +"--clean\t\tНеполная совместимость с Vi, Vim по умолчанию,\n" +"\t\t\t\tбез модулей, без viminfo" + msgid "-h or --help\tPrint Help (this message) and exit" msgstr "-h или --help\tВывести справку (это сообщение) и завершить работу" @@ -3240,21 +3243,19 @@ msgstr "" "Параметры для gvim (версия Athena):\n" msgid "-display \tRun vim on " -msgstr "-display <дисплей>\tЗапустить VIM на указанном <дисплее>" +msgstr "-display <дисплей>\tЗапустить Vim на указанном <дисплее>" msgid "-iconic\t\tStart vim iconified" -msgstr "-iconic\t\tЗапустить VIM в свёрнутом виде" +msgstr "-iconic\t\tЗапустить Vim в свёрнутом виде" msgid "-background \tUse for the background (also: -bg)" -msgstr "" -"-background <цвет>\tИспользовать указанный <цвет> для фона (также: -bg)" +msgstr "-background <цвет>\tИспользовать указанный <цвет> для фона (или -bg)" msgid "-foreground \tUse for normal text (also: -fg)" -msgstr "" -"-foreground <цвет>\tИспользовать <цвет> для обычного текста (также: -fg)" +msgstr "-foreground <цвет>\tИспользовать <цвет> для обычного текста (или -fg)" msgid "-font \t\tUse for normal text (also: -fn)" -msgstr "-font <шрифт>\t\tИспользовать <шрифт> для обычного текста (также: -fn)" +msgstr "-font <шрифт>\tИспользовать <шрифт> для обычного текста (или -fn)" msgid "-boldfont \tUse for bold text" msgstr "-boldfont <шрифт>\tИспользовать <шрифт> для жирного текста" @@ -3263,24 +3264,23 @@ msgid "-italicfont \tUse for italic text" msgstr "-italicfont <шрифт>\tИспользовать <шрифт> для наклонного текста" msgid "-geometry \tUse for initial geometry (also: -geom)" -msgstr "" -"-geometry <геометрия>\tИспользовать начальную <геометрию> (также: -geom)" +msgstr "-geometry <геометрия>\tИспользовать начальную <геометрию> (или -geom)" msgid "-borderwidth \tUse a border width of (also: -bw)" -msgstr "-borderwidth <ширина>\tИспользовать <ширину> бордюра (также: -bw)" +msgstr "-borderwidth <ширина>\tИспользовать <ширину> бордюра (или -bw)" msgid "-scrollbarwidth Use a scrollbar width of (also: -sw)" msgstr "" -"-scrollbarwidth <ширина> Использовать ширину полосы прокрутки (также: -sw)" +"-scrollbarwidth <ширина> Использовать ширину полосы прокрутки (или -sw)" msgid "-menuheight \tUse a menu bar height of (also: -mh)" -msgstr "-menuheight <высота>\tИспользовать <высоту> меню (также: -mh)" +msgstr "-menuheight <высота>\tИспользовать <высоту> меню (или -mh)" msgid "-reverse\t\tUse reverse video (also: -rv)" -msgstr "-reverse\t\tИспользовать инверсный видеорежим (также: -rv)" +msgstr "-reverse\t\tИспользовать инверсный видеорежим (или -rv)" msgid "+reverse\t\tDon't use reverse video (also: +rv)" -msgstr "+reverse\t\tНе использовать инверсный видеорежим (также: +rv)" +msgstr "+reverse\t\tНе использовать инверсный видеорежим (или +rv)" msgid "-xrm \tSet the specified resource" msgstr "-xrm <ресурс>\tУстановить указанный <ресурс>" @@ -3294,11 +3294,12 @@ msgstr "" msgid "-display \tRun vim on (also: --display)" msgstr "" -"-display <дисплей>\tЗапустить VIM на указанном <дисплее> (также: --display)" +"-display <дисплей>\tЗапустить Vim на указанном <дисплее> (или --display)" msgid "--role \tSet a unique role to identify the main window" msgstr "" -"--role <роль>\tУстановить уникальную <роль> для идентификации главного окна" +"--role <роль>\tУстановить уникальную <роль>\n" +"\t\t\t\tдля идентификации главного окна" msgid "--socketid \tOpen Vim inside another GTK widget" msgstr "--socketid \tОткрыть Vim внутри другого компонента GTK" @@ -3315,11 +3316,9 @@ msgstr "--windowid \tОткрыть Vim внутри другого ком msgid "No display" msgstr "Нет дисплея" -#. Failed to send, abort. msgid ": Send failed.\n" msgstr ": Отправка не удалась.\n" -#. Let vim start normally. msgid ": Send failed. Trying to execute locally\n" msgstr ": Отправка не удалась. Попытка местного выполнения\n" @@ -3340,7 +3339,6 @@ msgstr "Нет установленных отметок" msgid "E283: No marks matching \"%s\"" msgstr "E283: Нет отметок, совпадающих с \"%s\"" -#. Highlight title msgid "" "\n" "mark line col file/text" @@ -3348,7 +3346,6 @@ msgstr "" "\n" "отмет стр кол файл/текст" -#. Highlight title msgid "" "\n" " jump line col file/text" @@ -3356,7 +3353,6 @@ msgstr "" "\n" "прыжок стр кол файл/текст" -#. Highlight title msgid "" "\n" "change line col text" @@ -3371,7 +3367,6 @@ msgstr "" "\n" "# Глобальные отметки:\n" -#. Write the jumplist with -' msgid "" "\n" "# Jumplist (newest first):\n" @@ -3444,7 +3439,6 @@ msgstr "E298: Не получен блок номер 2?" msgid "E843: Error while updating swap file crypt" msgstr "E843: Ошибка при обновлении шифрования своп-файла" -#. could not (re)open the swap file, what can we do???? msgid "E301: Oops, lost the swap file!!!" msgstr "E301: Ой, потерялся своп-файл!!!" @@ -3629,7 +3623,6 @@ msgstr "" msgid "Using crypt key from swap file for the text file.\n" msgstr "Использование ключа шифрования из своп-файла для текстового файла.\n" -#. use msg() to start the scrolling properly msgid "Swap files found:" msgstr "Обнаружены своп-файлы:" @@ -3800,23 +3793,17 @@ msgstr "при открытии файла: \"" msgid " NEWER than swap file!\n" msgstr " Более СВЕЖИЙ, чем своп-файл!\n" -#. Some of these messages are long to allow translation to -#. * other languages. msgid "" "\n" "(1) Another program may be editing the same file. If this is the case,\n" " be careful not to end up with two different instances of the same\n" -" file when making changes." +" file when making changes. Quit, or continue with caution.\n" msgstr "" "\n" "(1) Возможно, редактирование этого же файла выполняется в другой программе.\n" " Если это так, то будьте внимательны при внесении изменений, чтобы\n" -" у вас не появилось два разных варианта одного и того же файла." - -# Сообщение разделено, " \n" добавлено т.к. строка не помещается. -msgid " Quit, or continue with caution.\n" -msgstr "" -" Завершите работу или продолжайте с осторожностью.\n" +" у вас не появилось два разных варианта одного и того же файла.\n" +" Выйдите или продолжайте с осторожностью.\n" msgid "(2) An edit session for this file crashed.\n" msgstr "(2) Сеанс редактирования этого файла завершён аварийно.\n" @@ -3894,7 +3881,6 @@ msgstr "E328: Меню в этом режиме не существует" msgid "E329: No menu \"%s\"" msgstr "E329: Нет меню %s" -#. Only a mnemonic or accelerator is not valid. msgid "E792: Empty menu name" msgstr "E792: Пустое имя меню" @@ -3907,8 +3893,6 @@ msgstr "E331: Элементы меню нельзя добавлять непо msgid "E332: Separator cannot be part of a menu path" msgstr "E332: Разделители не могут быть компонентом пути к меню" -#. Now we have found the matching menu, and we list the mappings -#. Highlight title msgid "" "\n" "--- Menus ---" @@ -3919,6 +3903,10 @@ msgstr "" msgid "Tear off this menu" msgstr "Оторвать это меню" +#, c-format +msgid "E335: Menu not defined for %s mode" +msgstr "E335: Меню не определено для режима %s" + msgid "E333: Menu path must lead to a menu item" msgstr "E333: Путь к меню должен вести к элементу меню" @@ -3926,10 +3914,6 @@ msgstr "E333: Путь к меню должен вести к элементу msgid "E334: Menu not found: %s" msgstr "E334: Меню не найдено: %s" -#, c-format -msgid "E335: Menu not defined for %s mode" -msgstr "E335: Меню не определено для режима %s" - msgid "E336: Menu path must lead to a sub-menu" msgstr "E336: Путь к меню должен вести к подменю" @@ -4001,7 +3985,6 @@ msgstr "Сохранение файла" msgid "Open File dialog" msgstr "Открытие файла" -#. TODO: non-GUI file selector here msgid "E338: Sorry, no file browser in console mode" msgstr "" "E338: Извините, но в консольном режиме нет проводника по файловой системе" @@ -4120,20 +4103,11 @@ msgstr "E346: В пути смены каталога больше нет кат msgid "E347: No more file \"%s\" found in path" msgstr "E347: В известных каталогах больше нет файлов \"%s\"" -msgid "Cannot connect to Netbeans #2" -msgstr "Невозможно соединиться с NetBeans #2" - -msgid "Cannot connect to Netbeans" -msgstr "Невозможно соединиться с NetBeans" - #, c-format msgid "E668: Wrong access mode for NetBeans connection info file: \"%s\"" msgstr "" "E668: Неправильный режим доступа к информации о соединении с NetBeans: \"%s\"" -msgid "read from Netbeans socket" -msgstr "чтение из гнезда NetBeans" - #, c-format msgid "E658: NetBeans connection lost for buffer %ld" msgstr "E658: Потеряно соединение с NetBeans для буфера %ld" @@ -4155,7 +4129,7 @@ msgid "E774: 'operatorfunc' is empty" msgstr "E774: Значением опции 'operatorfunc' является пустая строка" msgid "E775: Eval feature not available" -msgstr "E775: eval не доступна" +msgstr "E775: eval недоступна" msgid "Warning: terminal cannot highlight" msgstr "Предупреждение: терминал не может выполнять подсветку" @@ -4176,8 +4150,9 @@ msgstr "E662: В начале списка изменений" msgid "E663: At end of changelist" msgstr "E663: В конце списка изменений" -msgid "Type :quit to exit Vim" -msgstr "Введите :quit для выхода из Vim" +msgid "Type :qa! and press to abandon all changes and exit Vim" +msgstr "" +"Введите :qa! и нажмите для отмены всех изменений и выхода из Vim" #, c-format msgid "1 line %sed 1 time" @@ -4209,7 +4184,6 @@ msgstr "Изменены отступы в строках (%ld) " msgid "E748: No previously used register" msgstr "E748: Нет предыдущего использованного регистра" -#. must display the prompt msgid "cannot yank; delete anyway" msgstr "скопировать не удалось, удаление выполнено" @@ -4224,25 +4198,30 @@ msgstr "изменено строк: %ld" msgid "freeing %ld lines" msgstr "очищено строк: %ld" -msgid "block of 1 line yanked" -msgstr "скопирован блок из одной строки" - -msgid "1 line yanked" -msgstr "скопирована одна строка" +#, c-format +msgid " into \"%c" +msgstr " в \"%c" #, c-format -msgid "block of %ld lines yanked" -msgstr "скопирован блок из строк: %ld" +msgid "block of 1 line yanked%s" +msgstr "скопирован блок из одной строки%s" #, c-format -msgid "%ld lines yanked" -msgstr "скопировано строк: %ld" +msgid "1 line yanked%s" +msgstr "скопирована одна строка%s" + +#, c-format +msgid "block of %ld lines yanked%s" +msgstr "скопирован блок из %ld строк%s" + +#, c-format +msgid "%ld lines yanked%s" +msgstr "скопировано %ld строк%s" #, c-format msgid "E353: Nothing in register %s" msgstr "E353: В регистре %s ничего нет" -#. Highlight title msgid "" "\n" "--- Registers ---" @@ -4276,35 +4255,32 @@ msgid "%ld Cols; " msgstr "Колонок: %ld; " #, c-format -msgid "Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Bytes" -msgstr "Выделено %s%ld из %ld строк; %ld из %ld слов; %ld из %ld байт" +msgid "Selected %s%ld of %ld Lines; %lld of %lld Words; %lld of %lld Bytes" +msgstr "Выделено %s%ld из %ld строк; %lld из %lld слов; %lld из %lld байт" #, c-format msgid "" -"Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Chars; %ld of %ld " -"Bytes" +"Selected %s%ld of %ld Lines; %lld of %lld Words; %lld of %lld Chars; %lld of " +"%lld Bytes" msgstr "" -"Выделено %s%ld из %ld стр.; %ld из %ld слов; %ld из %ld симв.; %ld из %ld " -"байт" +"Выделено %s%ld из %ld стр.; %lld из %lld слов; %lld из %lld симв.; %lld из " +"%lld байт" #, c-format -msgid "Col %s of %s; Line %ld of %ld; Word %ld of %ld; Byte %ld of %ld" -msgstr "Кол. %s из %s; стр. %ld из %ld; сл. %ld из %ld; байт %ld из %ld" +msgid "Col %s of %s; Line %ld of %ld; Word %lld of %lld; Byte %lld of %lld" +msgstr "Кол. %s из %s; стр. %ld из %ld; сл. %lld из %lld; байт %lld из %lld" #, c-format msgid "" -"Col %s of %s; Line %ld of %ld; Word %ld of %ld; Char %ld of %ld; Byte %ld of " -"%ld" +"Col %s of %s; Line %ld of %ld; Word %lld of %lld; Char %lld of %lld; Byte " +"%lld of %lld" msgstr "" -"Кол. %s из %s; стр. %ld из %ld; сл. %ld из %ld; симв. %ld из %ld; байт %ld " -"из %ld" +"Кол. %s из %s; стр. %ld из %ld; сл. %lld из %lld; симв. %lld из %lld; байт " +"%lld из %lld" #, c-format -msgid "(+%ld for BOM)" -msgstr "(+%ld с учётом BOM)" - -msgid "%<%f%h%m%=Page %N" -msgstr "%<%f%h%m%=Стр. %N" +msgid "(+%lld for BOM)" +msgstr "(+%lld с учётом BOM)" msgid "Thanks for flying Vim" msgstr "Благодарим за использование Vim" @@ -4331,6 +4307,10 @@ msgstr "E522: Не обнаружено в termcap" msgid "E539: Illegal character <%s>" msgstr "E539: Недопустимый символ <%s>" +#, c-format +msgid "For option %s" +msgstr "Для опции %s" + msgid "E529: Cannot set 'term' to empty string" msgstr "E529: Значение опции 'term' не может быть пустой строкой" @@ -4352,6 +4332,10 @@ msgstr "E835: Конфликтует со значением 'fillchars'" msgid "E617: Cannot be changed in the GTK+ 2 GUI" msgstr "E617: Не может быть изменено в графическом интерфейсе GTK+ 2" +#, c-format +msgid "E950: Cannot convert between %s and %s" +msgstr "E950: Невозможно преобразовать %s и %s" + msgid "E524: Missing colon" msgstr "E524: Пропущено двоеточие" @@ -4411,6 +4395,9 @@ msgstr "E541: Слишком много элементов" msgid "E542: unbalanced groups" msgstr "E542: Несбалансированные группы" +msgid "E946: Cannot make a terminal with running job modifiable" +msgstr "E946: Невозможно сделать терминал изменённым с запущенным заданием" + msgid "E590: A preview window already exists" msgstr "E590: Окно предпросмотра уже есть" @@ -4418,6 +4405,9 @@ msgid "W17: Arabic requires UTF-8, do ':set encoding=utf-8'" msgstr "" "W17: Арабский требует использования UTF-8, введите ':set encoding=utf-8'" +msgid "E954: 24-bit colors are not supported on this environment" +msgstr "E954: 24 битный цвет не поддерживается в этом окружении" + #, c-format msgid "E593: Need at least %d lines" msgstr "E593: Нужно хотя бы %d строк" @@ -4430,9 +4420,6 @@ msgstr "E594: Нужно хотя бы %d колонок" msgid "E355: Unknown option: %s" msgstr "E355: Неизвестная опция: %s" -#. There's another character after zeros or the string -#. * is empty. In both cases, we are trying to set a -#. * num option using a string. #, c-format msgid "E521: Number required: &%s = '%s'" msgstr "E521: Требуется указать число: &%s = '%s'" @@ -4456,7 +4443,7 @@ msgid "" "--- Local option values ---" msgstr "" "\n" -"--- Местные значения опций ---" +"--- Локальные значения опций ---" msgid "" "\n" @@ -4505,7 +4492,6 @@ msgstr "невозможно сменить режим консоли?!\n" msgid "mch_get_shellsize: not a console??\n" msgstr "mch_get_shellsize: не в консоли??\n" -#. if Vim opened a window: Executing a shell may cause crashes msgid "E360: Cannot execute shell with -f option" msgstr "E360: Невозможно выполнить оболочку с параметром -f" @@ -4527,9 +4513,6 @@ msgstr "ОШИБКА ВВОДА/ВЫВОДА" msgid "Message" msgstr "Сообщение" -msgid "'columns' is not 80, cannot execute external commands" -msgstr "Значение опции 'columns' не равно 80, внешние программы не выполняются" - msgid "E237: Printer selection failed" msgstr "E237: Неудачное завершение выбора принтера" @@ -4553,6 +4536,10 @@ msgstr "Печать '%s'" msgid "E244: Illegal charset name \"%s\" in font name \"%s\"" msgstr "E244: Недопустимое имя кодировки \"%s\" в имени шрифта \"%s\"" +#, c-format +msgid "E244: Illegal quality name \"%s\" in font name \"%s\"" +msgstr "E244: Недопустимое имя свойства \"%s\" в имени шрифта \"%s\"" + #, c-format msgid "E245: Illegal char '%c' in font name \"%s\"" msgstr "E245: Недопустимый символ '%c' в имени шрифта \"%s\"" @@ -4588,25 +4575,13 @@ msgstr "" "\n" "Невозможно установить контекст безопасности для " -msgid "Could not set security context " -msgstr "Невозможно установить контекст безопасности " +#, c-format +msgid "Could not set security context %s for %s" +msgstr "Невозможно установить контекст безопасности %s для для %s" -msgid " for " -msgstr " для " - -#. no enough size OR unexpected error -msgid "Could not get security context " -msgstr "Невозможно получить контекст безопасности " - -msgid ". Removing it!\n" -msgstr ". Будет удалён!\n" - -msgid "" -"\n" -"Cannot execute shell " -msgstr "" -"\n" -"Невозможно запустить оболочку " +#, c-format +msgid "Could not get security context %s for %s. Removing it!" +msgstr "Невозможно получить контекст безопасности %s для %s. Будет удалено!" msgid "" "\n" @@ -4636,6 +4611,13 @@ msgstr "" "\n" "Невозможно выполнить fork()\n" +msgid "" +"\n" +"Cannot execute shell " +msgstr "" +"\n" +"Невозможно запустить оболочку " + msgid "" "\n" "Command terminated\n" @@ -4678,10 +4660,6 @@ msgstr "Ошибка VIM" msgid "Could not fix up function pointers to the DLL!" msgstr "Невозможно исправить указатели функций для DLL!" -#, c-format -msgid "shell returned %d" -msgstr "завершение работы оболочки с кодом %d" - #, c-format msgid "Vim: Caught %s event\n" msgstr "Vim: Перехвачено событие %s\n" @@ -4710,6 +4688,13 @@ msgstr "" msgid "Vim Warning" msgstr "Предупреждение Vim" +#, c-format +msgid "shell returned %d" +msgstr "завершение работы оболочки с кодом %d" + +msgid "E926: Current location list was changed" +msgstr "E926: Изменён список текущих расположений" + #, c-format msgid "E372: Too many %%%c in format string" msgstr "E372: В строке формата слишком много %%%c" @@ -4742,6 +4727,12 @@ msgstr "E379: Имя каталога не задано или равно пус msgid "E553: No more items" msgstr "E553: Больше нет элементов" +msgid "E924: Current window was closed" +msgstr "E924: Текущее окно было закрыто" + +msgid "E925: Current quickfix was changed" +msgstr "E925: Изменён список текущих быстрых исправлений" + #, c-format msgid "(%d of %d)%s%s: " msgstr "(%d из %d)%s%s: " @@ -4749,19 +4740,18 @@ msgstr "(%d из %d)%s%s: " msgid " (line deleted)" msgstr " (строка удалена)" +#, c-format +msgid "%serror list %d of %d; %d errors " +msgstr "%sсписок ошибок %d из %d; %d ошибок" + msgid "E380: At bottom of quickfix stack" msgstr "E380: Внизу стека быстрых исправлений" msgid "E381: At top of quickfix stack" msgstr "E381: Наверху стека быстрых исправлений" -#, c-format -msgid "error list %d of %d; %d errors" -msgstr "список ошибок %d из %d; %d ошибок" - -msgid "E382: Cannot write, 'buftype' option is set" -msgstr "" -"E382: Запись невозможна, значение опции 'buftype' не является пустой строкой" +msgid "No entries" +msgstr "Нет элементов" msgid "Error file" msgstr "Файл ошибок" @@ -4787,6 +4777,12 @@ msgstr "E369: Недопустимый элемент в %s%%[]" msgid "E769: Missing ] after %s[" msgstr "E769: Пропущена ] после %s[" +msgid "E944: Reverse range in character class" +msgstr "E944: Обратный диапазон в символьном классе" + +msgid "E945: Range too large in character class" +msgstr "E945: Диапазон слишком велик в символьном классе" + #, c-format msgid "E53: Unmatched %s%%(" msgstr "E53: Нет пары для %s%%(" @@ -4813,6 +4809,9 @@ msgstr "E69: Пропущена ] после %s%%[" msgid "E70: Empty %s%%[]" msgstr "E70: Пустое %s%%[]" +msgid "E65: Illegal back reference" +msgstr "E65: Недопустимая обратная ссылка" + msgid "E339: Pattern too long" msgstr "E339: Слишком длинный шаблон" @@ -4849,9 +4848,6 @@ msgstr "E63: Недопустимое использование \\_" msgid "E64: %s%c follows nothing" msgstr "E64: %s%c ни за чем не следует" -msgid "E65: Illegal back reference" -msgstr "E65: Недопустимая обратная ссылка" - msgid "E68: Invalid character after \\z" msgstr "E68: Недопустимый символ после \\z" @@ -4881,6 +4877,9 @@ msgstr "" "E864: после \\%#= может быть только 0, 1 или 2. Будет использоваться " "автоматическая машина" +msgid "Switching to backtracking RE engine for pattern: " +msgstr "Включено отслеживание движка рег. выражений для шаблона: " + msgid "E865: (NFA) Regexp end encountered prematurely" msgstr "E865: (НКА) неожиданный конец регулярного выражения" @@ -4896,11 +4895,13 @@ msgstr "E877: (рег. выражение НКА) неправильный кл msgid "E867: (NFA) Unknown operator '\\z%c'" msgstr "E867: (НКА) неизвестный оператор '\\z%c'" +msgid "E951: \\% value too large" +msgstr "E951: \\% значение слишком большое" + #, c-format msgid "E867: (NFA) Unknown operator '\\%%%c'" msgstr "E867: (НКА) неизвестный оператор '\\%%%c'" -#. should never happen msgid "E868: Error building NFA with equivalence class!" msgstr "E868: ошибка при создании НКА с классом эквивалентности!" @@ -4911,11 +4912,9 @@ msgstr "E869: (НКА) неизвестный оператор '\\@%c'" msgid "E870: (NFA regexp) Error reading repetition limits" msgstr "E870: (рег. выражение НКА) ошибка при чтении границ повторения" -#. Can't have a multi follow a multi. msgid "E871: (NFA regexp) Can't have a multi follow a multi !" msgstr "E871: (рег. выражение НКА) множество не может следовать за множеством!" -#. Too many `(' msgid "E872: (NFA regexp) Too many '('" msgstr "E872: (рег. выражение НКА) слишком много '('" @@ -4980,9 +4979,6 @@ msgstr " Иврит" msgid " Arabic" msgstr " Арабский" -msgid " (lang)" -msgstr " (язык)" - msgid " (paste)" msgstr " (вклейка)" @@ -5025,7 +5021,6 @@ msgstr "E386: После ';' ожидается ввод '?' или '/'" msgid " (includes previously listed match)" msgstr " (включает раннее показанные соответствия)" -#. cursor at status line msgid "--- Included files " msgstr "--- Включённые файлы " @@ -5077,8 +5072,49 @@ msgstr "" "# Последний %sШаблон поиска:\n" "~" -msgid "E759: Format error in spell file" -msgstr "E759: Ошибка формата в файле правописания" +msgid "E756: Spell checking is not enabled" +msgstr "E756: Проверка правописания выключена" + +#, c-format +msgid "Warning: Cannot find word list \"%s_%s.spl\" or \"%s_ascii.spl\"" +msgstr "" +"Предупреждение: Невозможно найти список слов \"%s_%s.spl\" или \"%s_ascii.spl" +"\"" + +#, c-format +msgid "Warning: Cannot find word list \"%s.%s.spl\" or \"%s.ascii.spl\"" +msgstr "" +"Предупреждение: Невозможно найти список слов \"%s.%s.spl\" или \"%s.ascii.spl" +"\"" + +msgid "E797: SpellFileMissing autocommand deleted buffer" +msgstr "E797: Буфер удалён при выполнении автокоманды SpellFileMissing" + +#, c-format +msgid "Warning: region %s not supported" +msgstr "Предупреждение: регион %s не поддерживается" + +msgid "Sorry, no suggestions" +msgstr "Извините, нет предположений" + +#, c-format +msgid "Sorry, only %ld suggestions" +msgstr "Извините, только %ld предположений" + +#, c-format +msgid "Change \"%.*s\" to:" +msgstr "Заменить \"%.*s\" на:" + +#, c-format +msgid " < \"%.*s\"" +msgstr " < \"%.*s\"" + +msgid "E752: No previous spell replacement" +msgstr "E752: Нет предыдущей замены правописания" + +#, c-format +msgid "E753: Not found: %s" +msgstr "E753: Не найдено: %s" msgid "E758: Truncated spell file" msgstr "E758: Файл правописания обрезан" @@ -5100,21 +5136,6 @@ msgstr "E762: Символы в FOL, LOW или UPP за пределами ди msgid "Compressing word tree..." msgstr "Сжатие дерева слов..." -msgid "E756: Spell checking is not enabled" -msgstr "E756: Проверка правописания выключена" - -#, c-format -msgid "Warning: Cannot find word list \"%s_%s.spl\" or \"%s_ascii.spl\"" -msgstr "" -"Предупреждение: Невозможно найти список слов \"%s_%s.spl\" или \"%s_ascii.spl" -"\"" - -#, c-format -msgid "Warning: Cannot find word list \"%s.%s.spl\" or \"%s.ascii.spl\"" -msgstr "" -"Предупреждение: Невозможно найти список слов \"%s.%s.spl\" или \"%s.ascii.spl" -"\"" - #, c-format msgid "Reading spell file \"%s\"" msgstr "Чтение файла правописания \"%s\"" @@ -5132,8 +5153,24 @@ msgid "E770: Unsupported section in spell file" msgstr "E770: Неподдерживаемый раздел в файле правописания" #, c-format -msgid "Warning: region %s not supported" -msgstr "Предупреждение: регион %s не поддерживается" +msgid "E778: This does not look like a .sug file: %s" +msgstr "E778: Это не похоже на файл .sug: %s" + +#, c-format +msgid "E779: Old .sug file, needs to be updated: %s" +msgstr "E779: Старый файл .sug, требует обновления: %s" + +#, c-format +msgid "E780: .sug file is for newer version of Vim: %s" +msgstr "E780: Файл .sug для более новой версии Vim: %s" + +#, c-format +msgid "E781: .sug file doesn't match .spl file: %s" +msgstr "E781: Файл .sug не соответствует файлу .spl: %s" + +#, c-format +msgid "E782: error while reading .sug file: %s" +msgstr "E782: Ошибка при чтении файла .sug: %s" #, c-format msgid "Reading affix file %s ..." @@ -5281,8 +5318,8 @@ msgid "E760: No word count in %s" msgstr "E760: Количество слов не указано в %s" #, c-format -msgid "line %6d, word %6d - %s" -msgstr "строка %6d, слово %6d — %s" +msgid "line %6d, word %6ld - %s" +msgstr "строка %6d, слово %6ld — %s" #, c-format msgid "Duplicate word in %s line %d: %s" @@ -5346,10 +5383,6 @@ msgstr "Сжато %d из %d узлов; осталось %d (%d%%)" msgid "Reading back spell file..." msgstr "Чтение записанного файла правописания..." -#. -#. * Go through the trie of good words, soundfold each word and add it to -#. * the soundfold trie. -#. msgid "Performing soundfolding..." msgstr "Выполнение звуковой свёртки..." @@ -5372,8 +5405,9 @@ msgstr "Оценка использования памяти при выполн msgid "E751: Output file name must not have region name" msgstr "E751: Имя выходного файла не должно содержать названия региона" -msgid "E754: Only up to 8 regions supported" -msgstr "E754: Поддерживается не более 8-ми регионов" +#, c-format +msgid "E754: Only up to %ld regions supported" +msgstr "E754: Поддерживается не более %ld регионов" #, c-format msgid "E755: Invalid region in %s" @@ -5404,62 +5438,40 @@ msgstr "Слово '%.*s' добавлено в %s" msgid "E763: Word characters differ between spell files" msgstr "E763: Символы слов отличаются в файлах правописания" -msgid "Sorry, no suggestions" -msgstr "Извините, нет предположений" - -#, c-format -msgid "Sorry, only %ld suggestions" -msgstr "Извините, только %ld предположений" - -#. for when 'cmdheight' > 1 -#. avoid more prompt -#, c-format -msgid "Change \"%.*s\" to:" -msgstr "Заменить \"%.*s\" на:" - -#, c-format -msgid " < \"%.*s\"" -msgstr " < \"%.*s\"" - -msgid "E752: No previous spell replacement" -msgstr "E752: Нет предыдущей замены правописания" - -#, c-format -msgid "E753: Not found: %s" -msgstr "E753: Не найдено: %s" - -#, c-format -msgid "E778: This does not look like a .sug file: %s" -msgstr "E778: Это не похоже на файл .sug: %s" - -#, c-format -msgid "E779: Old .sug file, needs to be updated: %s" -msgstr "E779: Старый файл .sug, требует обновления: %s" - -#, c-format -msgid "E780: .sug file is for newer version of Vim: %s" -msgstr "E780: Файл .sug для более новой версии Vim: %s" - -#, c-format -msgid "E781: .sug file doesn't match .spl file: %s" -msgstr "E781: Файл .sug не соответствует файлу .spl: %s" - -#, c-format -msgid "E782: error while reading .sug file: %s" -msgstr "E782: Ошибка при чтении файла .sug: %s" - -#. This should have been checked when generating the .spl -#. * file. msgid "E783: duplicate char in MAP entry" msgstr "E783: Повторяющийся символ в элементе MAP" msgid "No Syntax items defined for this buffer" msgstr "Синтаксические элементы для данного буфера не определены" +msgid "syntax conceal on" +msgstr "синтаксическое скрытие включено" + +msgid "syntax conceal off" +msgstr "синтаксическое скрытие отключено" + #, c-format msgid "E390: Illegal argument: %s" msgstr "E390: Недопустимый параметр: %s" +msgid "syntax case ignore" +msgstr "синтаксическое игнорирование регистра" + +msgid "syntax case match" +msgstr "синтаксическое соответствие регистра" + +msgid "syntax spell toplevel" +msgstr "синтаксическая проверка правописания верхнего уровня" + +msgid "syntax spell notoplevel" +msgstr "синтаксическая проверка правописания без верхнего уровня" + +msgid "syntax spell default" +msgstr "синтаксическая проверка правописания по умолчанию" + +msgid "syntax iskeyword " +msgstr "синтаксическое ключевое слово" + #, c-format msgid "E391: No such syntax cluster: %s" msgstr "E391: Синтаксический кластер %s не найден" @@ -5536,6 +5548,10 @@ msgstr "E847: Слишком много синтаксических включ msgid "E789: Missing ']': %s" msgstr "E789: Пропущено ']': %s" +#, c-format +msgid "E890: trailing char after ']': %s]%s" +msgstr "E890: Лишние символы после ']': %s]%s" + #, c-format msgid "E398: Missing '=': %s" msgstr "E398: Пропущено '=': %s" @@ -5688,7 +5704,6 @@ msgstr "E428: Невозможно перейти в позицию за пос msgid "File \"%s\" does not exist" msgstr "Файл \"%s\" не существует" -#. Give an indication of the number of matching tags #, c-format msgid "tag %d of %d%s" msgstr "метка %d из %d%s" @@ -5703,7 +5718,6 @@ msgstr " Используется метка с символами в друго msgid "E429: File \"%s\" does not exist" msgstr "E429: Файл \"%s\" не существует" -#. Highlight title msgid "" "\n" " # TO tag FROM line in file/text" @@ -5734,7 +5748,6 @@ msgstr "Перед байтом %ld" msgid "E432: Tags file not sorted: %s" msgstr "E432: Файл меток не отсортирован: %s" -#. never opened any tags file msgid "E433: No tags file" msgstr "E433: Файл меток не обнаружен" @@ -5770,7 +5783,6 @@ msgstr "E436: В termcap нет записи \"%s\"" msgid "E437: terminal capability \"cm\" required" msgstr "E437: Требуется способность терминала \"cm\"" -#. Highlight title msgid "" "\n" "--- Terminal keys ---" @@ -5778,6 +5790,35 @@ msgstr "" "\n" "--- Кнопки терминала ---" +msgid "Cannot open $VIMRUNTIME/rgb.txt" +msgstr "Невозможно открыть $VIMRUNTIME/rgb.txt" + +#, c-format +msgid "Kill job in \"%s\"?" +msgstr "Убить задание в \"%s\"?" + +msgid "Terminal" +msgstr "Терминал" + +msgid "Terminal-finished" +msgstr "Терминал-завершено" + +msgid "active" +msgstr "активно" + +msgid "running" +msgstr "выполнение" + +msgid "finished" +msgstr "завершено" + +#, c-format +msgid "E953: File exists: %s" +msgstr "E953: Файл существует: %s" + +msgid "E955: Not a terminal buffer" +msgstr "E955: Не является буфером терминала" + msgid "new shell started\n" msgstr "запуск новой оболочки\n" @@ -5787,12 +5828,9 @@ msgstr "Vim: Ошибка чтения ввода, выход...\n" msgid "Used CUT_BUFFER0 instead of empty selection" msgstr "Вместо пустого выделения используется CUT_BUFFER0" -#. This happens when the FileChangedRO autocommand changes the -#. * file in a way it becomes shorter. msgid "E881: Line count changed unexpectedly" msgstr "E881: Неожиданно изменился счётчик строк" -#. must display the prompt msgid "No undo possible; continue anyway" msgstr "Отмена невозможна; продолжать выполнение" @@ -5915,7 +5953,7 @@ msgstr " номер измен. когда сохранено" #, c-format msgid "%ld seconds ago" -msgstr "%ld с назад" +msgstr "%ldс назад" msgid "E790: undojoin is not allowed after undo" msgstr "E790: Объединение отмен не допускается после отмены" @@ -5926,13 +5964,133 @@ msgstr "E439: Повреждён список отмены" msgid "E440: undo line missing" msgstr "E440: Потеряна строка отмены" -#. Only MS VC 4.1 and earlier can do Win32s -msgid "" -"\n" -"MS-Windows 16/32-bit GUI version" -msgstr "" -"\n" -"Версия с графическим интерфейсом для MS-Windows 16/32 бит" +#, c-format +msgid "E122: Function %s already exists, add ! to replace it" +msgstr "E122: Функция %s уже существует. Добавьте !, чтобы заменить её." + +msgid "E717: Dictionary entry already exists" +msgstr "E717: Запись уже существует в словаре" + +msgid "E718: Funcref required" +msgstr "E718: Требуется ссылка на функцию" + +#, c-format +msgid "E130: Unknown function: %s" +msgstr "E130: Неизвестная функция: %s" + +#, c-format +msgid "E125: Illegal argument: %s" +msgstr "E125: Недопустимый параметр: %s" + +#, c-format +msgid "E853: Duplicate argument name: %s" +msgstr "E853: Повторяющееся имя параметра: %s" + +#, c-format +msgid "E740: Too many arguments for function %s" +msgstr "E740: Слишком много параметров для функции %s" + +#, c-format +msgid "E116: Invalid arguments for function %s" +msgstr "E116: Параметры для функции %s заданы неверно" + +msgid "E132: Function call depth is higher than 'maxfuncdepth'" +msgstr "E132: Глубина вызова функции больше, чем значение 'maxfuncdepth'" + +#, c-format +msgid "calling %s" +msgstr "вызов %s" + +#, c-format +msgid "%s aborted" +msgstr "%s прервана" + +#, c-format +msgid "%s returning #%ld" +msgstr "%s возвращает #%ld" + +#, c-format +msgid "%s returning %s" +msgstr "%s возвращает %s" + +msgid "E699: Too many arguments" +msgstr "E699: Слишком много параметров" + +#, c-format +msgid "E117: Unknown function: %s" +msgstr "E117: Неизвестная функция: %s" + +#, c-format +msgid "E933: Function was deleted: %s" +msgstr "E933: Функция удалена: %s" + +#, c-format +msgid "E119: Not enough arguments for function: %s" +msgstr "E119: Недостаточно параметров для функции %s" + +#, c-format +msgid "E120: Using not in a script context: %s" +msgstr "E120: используется вне сценария: %s" + +#, c-format +msgid "E725: Calling dict function without Dictionary: %s" +msgstr "E725: Вызов функции dict без словаря: %s" + +msgid "E129: Function name required" +msgstr "E129: Требуется имя функции" + +#, c-format +msgid "E128: Function name must start with a capital or \"s:\": %s" +msgstr "E128: Имя функции должно начинаться с заглавной буквы или \"s:\": %s" + +#, c-format +msgid "E884: Function name cannot contain a colon: %s" +msgstr "E884: Имя функции не может содержать двоеточие: %s" + +#, c-format +msgid "E123: Undefined function: %s" +msgstr "E123: Неопределённая функция: %s" + +#, c-format +msgid "E124: Missing '(': %s" +msgstr "E124: Пропущена '(': %s" + +msgid "E862: Cannot use g: here" +msgstr "E862: Здесь невозможно использовать g:" + +#, c-format +msgid "E932: Closure function should not be at top level: %s" +msgstr "E932: функция-замыкание не должна быть на верхнем уровне: %s" + +msgid "E126: Missing :endfunction" +msgstr "E126: Пропущена команда :endfunction" + +#, c-format +msgid "W22: Text found after :endfunction: %s" +msgstr "W22: Текст после :endfunction: %s" + +#, c-format +msgid "E707: Function name conflicts with variable: %s" +msgstr "E707: Имя функции конфликтует с переменной: %s" + +#, c-format +msgid "E127: Cannot redefine function %s: It is in use" +msgstr "E127: Невозможно переопределить функцию %s, она используется" + +#, c-format +msgid "E746: Function name does not match script file name: %s" +msgstr "E746: Имя функции не соответствует имени файла сценария: %s" + +#, c-format +msgid "E131: Cannot delete function %s: It is in use" +msgstr "E131: Невозможно удалить функцию %s, она используется" + +msgid "E133: :return not inside a function" +msgstr "E133: команда :return вне функции" + +#, c-format +msgid "E107: Missing parentheses: %s" +msgstr "E107: Пропущены скобки: %s" msgid "" "\n" @@ -5948,9 +6106,6 @@ msgstr "" "\n" "Версия с графическим интерфейсом для MS-Windows 32 бит" -msgid " in Win32s mode" -msgstr " в режиме Win32" - msgid " with OLE support" msgstr " с поддержкой OLE" @@ -5970,45 +6125,17 @@ msgstr "" msgid "" "\n" -"MS-Windows 16-bit version" +"macOS version" msgstr "" "\n" -"Версия для MS-Windows 16 бит" +"Версия для macOS" msgid "" "\n" -"32-bit MS-DOS version" +"macOS version w/o darwin feat." msgstr "" "\n" -"Версия для MS-DOS 32 бит" - -msgid "" -"\n" -"16-bit MS-DOS version" -msgstr "" -"\n" -"Версия для MS-DOS 16 бит" - -msgid "" -"\n" -"MacOS X (unix) version" -msgstr "" -"\n" -"Версия для MacOS X (unix)" - -msgid "" -"\n" -"MacOS X version" -msgstr "" -"\n" -"Версия для MacOS X" - -msgid "" -"\n" -"MacOS version" -msgstr "" -"\n" -"Версия для MacOS" +"Версия для macOS без darwin" msgid "" "\n" @@ -6039,7 +6166,7 @@ msgid "" "Compiled " msgstr "" "\n" -"Скомпилирован " +"Скомпилировано: " msgid "by " msgstr " " @@ -6077,11 +6204,14 @@ msgid "" "Tiny version " msgstr "" "\n" -"Версия \"Кроха\" " +"Крохотная версия " msgid "without GUI." msgstr "без графического интерфейса." +msgid "with GTK3 GUI." +msgstr "с графическим интерфейсом GTK3." + msgid "with GTK2-GNOME GUI." msgstr "с графическим интерфейсом GTK2-GNOME." @@ -6109,11 +6239,8 @@ msgstr "с графическим интерфейсом Carbon." msgid "with Cocoa GUI." msgstr "с графическим интерфейсом Cocoa." -msgid "with (classic) GUI." -msgstr "с классическим графическим интерфейсом." - msgid " Features included (+) or not (-):\n" -msgstr " Включённые (+) и отключённые (-) особенности:\n" +msgstr " Включённые(+) и отключённые(-) особенности:\n" msgid " system vimrc file: \"" msgstr " общесистемный файл vimrc: \"" @@ -6145,6 +6272,9 @@ msgstr " второй пользовательский файл gvimrc: \"" msgid "3rd user gvimrc file: \"" msgstr " третий пользовательский файл gvimrc: \"" +msgid " defaults file: \"" +msgstr " файл умолчаний: \"" + msgid " system menu file: \"" msgstr " общесистемный файл меню: \"" @@ -6176,7 +6306,7 @@ msgid "by Bram Moolenaar et al." msgstr "Брам Мооленаар и другие" msgid "Vim is open source and freely distributable" -msgstr "Vim это свободно распространяемая программа с открытым кодом" +msgstr "Vim — свободно распространяемая программа с открытым кодом" msgid "Help poor children in Uganda!" msgstr "Бедным детям в Уганде нужна ваша помощь!" @@ -6191,7 +6321,7 @@ msgid "type :help or for on-line help" msgstr "наберите :help или для получения справки " msgid "type :help version8 for version info" -msgstr "наберите :help version8 чтобы узнать об этой версии " +msgstr "наберите :help version8 для информации о версии " msgid "Running in Vi compatible mode" msgstr "Работа в Vi-совместимом режиме" @@ -6235,12 +6365,6 @@ msgstr "наберите :help register для получения ин msgid "menu Help->Sponsor/Register for information " msgstr "меню Справка->Помощь/Регистрация для получения информации " -msgid "WARNING: Windows 95/98/ME detected" -msgstr "ПРЕДУПРЕЖДЕНИЕ: обнаружена Windows 95/98/ME" - -msgid "type :help windows95 for info on this" -msgstr "наберите :help windows95 для получения информации " - msgid "Already only one window" msgstr "На экране всего одно окно" @@ -6272,9 +6396,25 @@ msgstr "E446: Нет имени файла в позиции курсора" msgid "E447: Can't find file \"%s\" in path" msgstr "E447: Файл \"%s\" не найден по известным путям" +#, c-format +msgid "E799: Invalid ID: %ld (must be greater than or equal to 1)" +msgstr "E799: Неверный ID: %ld (должен быть больше или равен 1)" + +#, c-format +msgid "E801: ID already taken: %ld" +msgstr "E801: ID уже занят: %ld" + msgid "List or number required" msgstr "Требуется список или число" +#, c-format +msgid "E802: Invalid ID: %ld (must be greater than or equal to 1)" +msgstr "E802: Неверный ID: %ld (должен быть больше или равен 1)" + +#, c-format +msgid "E803: ID not found: %ld" +msgstr "E803: ID не найден: %ld" + #, c-format msgid "E370: Could not load library %s" msgstr "E370: Невозможно загрузить библиотеку %s" @@ -6299,7 +6439,6 @@ msgstr "Сравнить с помощью Vim" msgid "Edit with &Vim" msgstr "Ре&дактировать с помощью Vim" -#. Now concatenate msgid "Edit with existing Vim - " msgstr "Редактировать в запущенном Vim — " @@ -6318,10 +6457,6 @@ msgstr "Слишком длинный путь!" msgid "--No lines in buffer--" msgstr "-- Нет строк в буфере --" -#. -#. * The error messages that can be shared are included here. -#. * Excluded are errors that are only used once and debugging messages. -#. msgid "E470: Command aborted" msgstr "E470: Выполнение команды прервано" @@ -6378,6 +6513,10 @@ msgstr "E236: Шрифт \"%s\" не является моноширинным" msgid "E473: Internal error" msgstr "E473: Внутренняя ошибка" +#, c-format +msgid "E685: Internal error: %s" +msgstr "E685: Внутренняя ошибка: %s" + msgid "Interrupted" msgstr "Прервано" @@ -6391,6 +6530,14 @@ msgstr "E474: Недопустимый параметр" msgid "E475: Invalid argument: %s" msgstr "E475: Недопустимый параметр: %s" +#, c-format +msgid "E475: Invalid value for argument %s" +msgstr "E475: Недопустимое значение параметра: %s" + +#, c-format +msgid "E475: Invalid value for argument %s: %s" +msgstr "E475: Недопустимое значение параметра %s: %s" + #, c-format msgid "E15: Invalid expression: %s" msgstr "E15: Недопустимое выражение: %s" @@ -6409,6 +6556,9 @@ msgstr "E17: \"%s\" является каталогом" msgid "E364: Library call failed for \"%s()\"" msgstr "E364: Неудачный вызов функции \"%s()\" из библиотеки" +msgid "E667: Fsync failed" +msgstr "E667: Не удалось выполнить функцию fsync()" + #, c-format msgid "E448: Could not load library function %s" msgstr "E448: Не удалось загрузить функцию %s из библиотеки" @@ -6505,12 +6655,6 @@ msgstr "E484: Невозможно открыть файл %s" msgid "E485: Can't read file %s" msgstr "E485: Невозможно прочитать файл %s" -msgid "E37: No write since last change (add ! to override)" -msgstr "E37: Изменения не сохранены (добавьте !, чтобы обойти проверку)" - -msgid "E37: No write since last change" -msgstr "E37: Изменения не сохранены" - msgid "E38: Null argument" msgstr "E38: Нулевой параметр" @@ -6563,6 +6707,31 @@ msgstr "E46: Невозможно изменить переменную толь msgid "E794: Cannot set variable in the sandbox: \"%s\"" msgstr "E794: Невозможно изменить переменную в песочнице: \"%s\"" +msgid "E713: Cannot use empty key for Dictionary" +msgstr "E713: Невозможно использовать пустой ключ для словаря" + +msgid "E715: Dictionary required" +msgstr "E715: Требуется словарь" + +#, c-format +msgid "E684: list index out of range: %ld" +msgstr "E684: Индекс списка за пределами диапазона: %ld" + +#, c-format +msgid "E118: Too many arguments for function: %s" +msgstr "E118: Слишком много параметров для функции %s" + +#, c-format +msgid "E716: Key not present in Dictionary: %s" +msgstr "E716: Нет ключа в словаре: %s" + +msgid "E714: List required" +msgstr "E714: Требуется список" + +#, c-format +msgid "E712: Argument of %s must be a List or Dictionary" +msgstr "E712: Параметр %s должен быть списком или словарём" + msgid "E47: Error while reading errorfile" msgstr "E47: Ошибка при чтении файла ошибок" @@ -6622,8 +6791,8 @@ msgstr "" msgid "E80: Error while writing" msgstr "E80: Ошибка при записи" -msgid "Zero count" -msgstr "Нулевое значение счётчика" +msgid "E939: Positive count required" +msgstr "E939: Требуется положительный счётчик" msgid "E81: Using not in a script context" msgstr "E81: Использование вне контекста сценария" @@ -6637,16 +6806,16 @@ msgstr "E463: Невозможно изменить охраняемую обл msgid "E744: NetBeans does not allow changes in read-only files" msgstr "E744: NetBeans не допускает изменений в файлах только для чтения" -#, c-format -msgid "E685: Internal error: %s" -msgstr "E685: Внутренняя ошибка: %s" - msgid "E363: pattern uses more memory than 'maxmempattern'" msgstr "E363: Шаблон использует больше памяти чем 'maxmempattern'" msgid "E749: empty buffer" msgstr "E749: Пустой буфер" +#, c-format +msgid "E86: Buffer %ld does not exist" +msgstr "E86: Буфер %ld не существует" + msgid "E682: Invalid search pattern or delimiter" msgstr "E682: Неправильная строка поиска или разделитель" @@ -6660,6 +6829,13 @@ msgstr "E764: Опция '%s' не установлена" msgid "E850: Invalid register name" msgstr "E850: Недопустимое имя регистра" +#, c-format +msgid "E919: Directory not found in '%s': \"%s\"" +msgstr "E919: Каталог не найден в '%s': \"%s\"" + +msgid "E952: Autocommand caused recursive behavior" +msgstr "E952: Автокоманда вызвала рекурсивное поведение" + msgid "search hit TOP, continuing at BOTTOM" msgstr "Поиск будет продолжен с КОНЦА документа" @@ -6767,7 +6943,6 @@ msgstr "Конструктор списка не допускает ключев msgid "list index out of range" msgstr "Индекс списка за пределами диапазона" -#. No more suitable format specifications in python-2.3 #, c-format msgid "internal error: failed to get vim list item %d" msgstr "Внутренняя ошибка: не удалось получить элемент VIM-списка %d" @@ -6814,9 +6989,6 @@ msgstr "Не существует безымянной функции %s" msgid "function %s does not exist" msgstr "Функция %s не существует" -msgid "function constructor does not accept keyword arguments" -msgstr "Конструктор функции не допускает ключевые слова как аргументы" - #, c-format msgid "failed to run function %s" msgstr "Невозможно выполнить функцию %s" @@ -6904,6 +7076,10 @@ msgstr "" msgid "unable to convert %s to vim dictionary" msgstr "Невозможно преобразовать %s в словарь VIM" +#, c-format +msgid "unable to convert %s to vim list" +msgstr "Невозможно преобразовать %s в список VIM" + #, c-format msgid "unable to convert %s to vim structure" msgstr "Невозможно преобразовать %s в структуру VIM" @@ -6932,3 +7108,4 @@ msgstr "" "Ошибка при установке пути: sys.path не является списком\n" "Следует добавить vim.VIM_SPECIAL_PATH в sys.path" + From a796d46f29e3cc235cc981696d7ee80faccb5000 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 1 May 2018 14:30:36 +0200 Subject: [PATCH 14/20] patch 8.0.1781: file names in quickfix window are not shortened Problem: File names in quickfix window are not always shortened. Solution: Shorten the file name when opening the quickfix window. (Yegappan Lakshmanan, closes #2851, closes #2846) --- src/fileio.c | 52 +++++++++++++++++++++-------------- src/proto/fileio.pro | 1 + src/quickfix.c | 17 ++++++++++++ src/testdir/test_quickfix.vim | 24 ++++++++++++++++ src/version.c | 2 ++ 5 files changed, 75 insertions(+), 21 deletions(-) diff --git a/src/fileio.c b/src/fileio.c index 63cc61c432..98631e074a 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -6163,7 +6163,7 @@ shorten_fname(char_u *full_path, char_u *dir_name) } /* - * Shorten filenames for all buffers. + * Shorten filename of a buffer. * When "force" is TRUE: Use full path from now on for files currently being * edited, both for file name and swap file name. Try to shorten the file * names a bit, if safe to do so. @@ -6172,34 +6172,44 @@ shorten_fname(char_u *full_path, char_u *dir_name) * name. */ void +shorten_buf_fname(buf_T *buf, char_u *dirname, int force) +{ + char_u *p; + + if (buf->b_fname != NULL +#ifdef FEAT_QUICKFIX + && !bt_nofile(buf) +#endif + && !path_with_url(buf->b_fname) + && (force + || buf->b_sfname == NULL + || mch_isFullName(buf->b_sfname))) + { + VIM_CLEAR(buf->b_sfname); + p = shorten_fname(buf->b_ffname, dirname); + if (p != NULL) + { + buf->b_sfname = vim_strsave(p); + buf->b_fname = buf->b_sfname; + } + if (p == NULL || buf->b_fname == NULL) + buf->b_fname = buf->b_ffname; + } +} + +/* + * Shorten filenames for all buffers. + */ + void shorten_fnames(int force) { char_u dirname[MAXPATHL]; buf_T *buf; - char_u *p; mch_dirname(dirname, MAXPATHL); FOR_ALL_BUFFERS(buf) { - if (buf->b_fname != NULL -#ifdef FEAT_QUICKFIX - && !bt_nofile(buf) -#endif - && !path_with_url(buf->b_fname) - && (force - || buf->b_sfname == NULL - || mch_isFullName(buf->b_sfname))) - { - VIM_CLEAR(buf->b_sfname); - p = shorten_fname(buf->b_ffname, dirname); - if (p != NULL) - { - buf->b_sfname = vim_strsave(p); - buf->b_fname = buf->b_sfname; - } - if (p == NULL || buf->b_fname == NULL) - buf->b_fname = buf->b_ffname; - } + shorten_buf_fname(buf, dirname, force); /* Always make the swap file name a full path, a "nofile" buffer may * also have a swap file. */ diff --git a/src/proto/fileio.pro b/src/proto/fileio.pro index 12d5c14ff3..990348143b 100644 --- a/src/proto/fileio.pro +++ b/src/proto/fileio.pro @@ -11,6 +11,7 @@ void msg_add_fname(buf_T *buf, char_u *fname); void msg_add_lines(int insert_space, long lnum, off_T nchars); char_u *shorten_fname1(char_u *full_path); char_u *shorten_fname(char_u *full_path, char_u *dir_name); +void shorten_buf_fname(buf_T *buf, char_u *dirname, int force); void shorten_fnames(int force); void shorten_filenames(char_u **fnames, int count); char_u *modname(char_u *fname, char_u *ext, int prepend_dot); diff --git a/src/quickfix.c b/src/quickfix.c index acff1ec703..dde68419a2 100644 --- a/src/quickfix.c +++ b/src/quickfix.c @@ -2736,6 +2736,9 @@ qf_list(exarg_T *eap) idx2 = (-idx2 > i) ? 0 : idx2 + i + 1; } + /* Shorten all the file names, so that it is easy to read */ + shorten_fnames(FALSE); + /* * Get the attributes for the different quickfix highlight items. Note * that this depends on syntax items defined in the qf.vim syntax file @@ -3542,6 +3545,10 @@ qf_fill_buffer(qf_info_T *qi, buf_T *buf, qfline_T *old_last) /* Check if there is anything to display */ if (qi->qf_curlist < qi->qf_listcount) { + char_u dirname[MAXPATHL]; + + *dirname = NUL; + /* Add one line for each error */ if (old_last == NULL) { @@ -3562,7 +3569,17 @@ qf_fill_buffer(qf_info_T *qi, buf_T *buf, qfline_T *old_last) if (qfp->qf_type == 1) /* :helpgrep */ STRCPY(IObuff, gettail(errbuf->b_fname)); else + { + /* shorten the file name if not done already */ + if (errbuf->b_sfname == NULL + || mch_isFullName(errbuf->b_sfname)) + { + if (*dirname == NUL) + mch_dirname(dirname, MAXPATHL); + shorten_buf_fname(errbuf, dirname, FALSE); + } STRCPY(IObuff, errbuf->b_fname); + } len = (int)STRLEN(IObuff); } else diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim index 092a5c43af..1e781de11e 100644 --- a/src/testdir/test_quickfix.vim +++ b/src/testdir/test_quickfix.vim @@ -3201,3 +3201,27 @@ func Test_lhelpgrep_autocmd() au! QuickFixCmdPost new | only endfunc + +" Test for shortening/simplifying the file name when opening the +" quickfix window or when displaying the quickfix list +func Test_shorten_fname() + if !has('unix') + return + endif + %bwipe + " Create a quickfix list with a absolute path filename + let fname = getcwd() . '/test_quickfix.vim' + call setqflist([], ' ', {'lines':[fname . ":20:Line20"], 'efm':'%f:%l:%m'}) + call assert_equal(fname, bufname('test_quickfix.vim')) + " Opening the quickfix window should simplify the file path + cwindow + call assert_equal('test_quickfix.vim', bufname('test_quickfix.vim')) + cclose + %bwipe + " Create a quickfix list with a absolute path filename + call setqflist([], ' ', {'lines':[fname . ":20:Line20"], 'efm':'%f:%l:%m'}) + call assert_equal(fname, bufname('test_quickfix.vim')) + " Displaying the quickfix list should simplify the file path + silent! clist + call assert_equal('test_quickfix.vim', bufname('test_quickfix.vim')) +endfunc diff --git a/src/version.c b/src/version.c index 7726f8450b..ae231be515 100644 --- a/src/version.c +++ b/src/version.c @@ -761,6 +761,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1781, /**/ 1780, /**/ From d76ce852668635d81778cedacc2d3f021ed4e475 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 1 May 2018 15:02:04 +0200 Subject: [PATCH 15/20] patch 8.0.1782: no simple way to label quickfix entries Problem: No simple way to label quickfix entries. Solution: Add the "module" item, to be used instead of the file name for display purposes. (Martin Szamotulski, closes #1757) --- runtime/doc/eval.txt | 3 ++ runtime/doc/quickfix.txt | 6 +++ src/alloc.h | 1 + src/quickfix.c | 83 +++++++++++++++++++++++++++-------- src/testdir/test_quickfix.vim | 25 +++++++++++ src/version.c | 2 + 6 files changed, 101 insertions(+), 19 deletions(-) diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 0e611f4f1e..050b48960a 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -4737,6 +4737,7 @@ getqflist([{what}]) *getqflist()* list item is a dictionary with these entries: bufnr number of buffer that has the file name, use bufname() to get the name + module module name lnum line number in the buffer (first line is 1) col column number (first column is 1) vcol |TRUE|: "col" is visual column @@ -7221,6 +7222,8 @@ setqflist({list} [, {action} [, {what}]]) *setqflist()* buffer filename name of a file; only used when "bufnr" is not present or it is invalid. + module name of a module; if given it will be used in + quickfix error window instead of the filename. lnum line number in the file pattern search pattern used to locate the error col column number diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt index de80c68adf..96085d2e2c 100644 --- a/runtime/doc/quickfix.txt +++ b/runtime/doc/quickfix.txt @@ -1220,6 +1220,7 @@ you want to match case, add "\C" to the pattern |/\C|. Basic items %f file name (finds a string) + %o module name (finds a string) %l line number (finds a number) %c column number (finds a number representing character column of the error, (1 == 1 character column)) @@ -1264,6 +1265,11 @@ conversion can be used to locate lines without a line number in the error output. Like the output of the "grep" shell command. When the pattern is present the line number will not be used. +The "%o" conversion specifies the module name in quickfix entry. If present +it will be used in quickfix error window instead of the filename. The module +name is used only for displaying purposes, the file name is used when jumping +to the file. + Changing directory The following uppercase conversion characters specify the type of special diff --git a/src/alloc.h b/src/alloc.h index 715f5cc25c..60fa4bd66e 100644 --- a/src/alloc.h +++ b/src/alloc.h @@ -15,6 +15,7 @@ typedef enum { aid_qf_dirname_start, aid_qf_dirname_now, aid_qf_namebuf, + aid_qf_module, aid_qf_errmsg, aid_qf_pattern, aid_last diff --git a/src/quickfix.c b/src/quickfix.c index dde68419a2..385438b55f 100644 --- a/src/quickfix.c +++ b/src/quickfix.c @@ -33,6 +33,7 @@ struct qfline_S int qf_fnum; /* file number for the line */ int qf_col; /* column where the error occurred */ int qf_nr; /* error number */ + char_u *qf_module; /* module name for this error */ char_u *qf_pattern; /* search pattern for the error */ char_u *qf_text; /* description of the error */ char_u qf_viscol; /* set to TRUE if qf_col is screen column */ @@ -101,7 +102,7 @@ struct qf_info_S static qf_info_T ql_info; /* global quickfix list */ static int_u last_qf_id = 0; /* Last used quickfix list id */ -#define FMT_PATTERNS 10 /* maximum number of % recognized */ +#define FMT_PATTERNS 11 /* maximum number of % recognized */ /* * Structure used to hold the info of one part of 'errorformat' @@ -135,7 +136,8 @@ static efm_T *fmt_start = NULL; /* cached across qf_parse_line() calls */ static int qf_init_ext(qf_info_T *qi, int qf_idx, char_u *efile, buf_T *buf, typval_T *tv, char_u *errorformat, int newlist, linenr_T lnumfirst, linenr_T lnumlast, char_u *qf_title, char_u *enc); static void qf_new_list(qf_info_T *qi, char_u *qf_title); -static int qf_add_entry(qf_info_T *qi, int qf_idx, char_u *dir, char_u *fname, int bufnum, char_u *mesg, long lnum, int col, int vis_col, char_u *pattern, int nr, int type, int valid); +static int qf_add_entry(qf_info_T *qi, int qf_idx, char_u *dir, char_u *fname, char_u *module, int bufnum, char_u *mesg, long lnum, int col, int vis_col, char_u *pattern, int nr, int type, int valid); +static qf_info_T *ll_new_list(void); static void qf_free(qf_info_T *qi, int idx); static char_u *qf_types(int, int); static int qf_get_fnum(qf_info_T *qi, int qf_idx, char_u *, char_u *); @@ -221,7 +223,8 @@ static struct fmtpattern {'r', ".*"}, {'p', "[- .]*"}, {'v', "\\d\\+"}, - {'s', ".\\+"} + {'s', ".\\+"}, + {'o', ".\\+"} }; /* @@ -809,6 +812,7 @@ qf_get_nextline(qfstate_T *state) typedef struct { char_u *namebuf; + char_u *module; char_u *errmsg; int errmsglen; long lnum; @@ -868,6 +872,7 @@ restofline: if (qfl->qf_multiscan && vim_strchr((char_u *)"OPQ", idx) == NULL) continue; fields->namebuf[0] = NUL; + fields->module[0] = NUL; fields->pattern[0] = NUL; if (!qfl->qf_multiscan) fields->errmsg[0] = NUL; @@ -1008,6 +1013,15 @@ restofline: fields->pattern[len + 4] = '$'; fields->pattern[len + 5] = NUL; } + if ((i = (int)fmt_ptr->addr[10]) > 0) /* %o */ + { + if (regmatch.startp[i] == NULL) + continue; + len = (int)(regmatch.endp[i] - regmatch.startp[i]); + if (len > CMDBUFFSIZE) + len = CMDBUFFSIZE; + STRNCAT(fields->module, regmatch.startp[i], len); + } break; } } @@ -1181,11 +1195,12 @@ qf_init_ext( convert_setup(&state.vc, enc, p_enc); #endif fields.namebuf = alloc_id(CMDBUFFSIZE + 1, aid_qf_namebuf); + fields.module = alloc_id(CMDBUFFSIZE + 1, aid_qf_module); fields.errmsglen = CMDBUFFSIZE + 1; fields.errmsg = alloc_id(fields.errmsglen, aid_qf_errmsg); fields.pattern = alloc_id(CMDBUFFSIZE + 1, aid_qf_pattern); if (fields.namebuf == NULL || fields.errmsg == NULL - || fields.pattern == NULL) + || fields.pattern == NULL || fields.module == NULL) goto qf_init_end; if (efile != NULL && (state.fd = mch_fopen((char *)efile, "r")) == NULL) @@ -1282,6 +1297,7 @@ qf_init_ext( ? fields.namebuf : ((qfl->qf_currfile != NULL && fields.valid) ? qfl->qf_currfile : (char_u *)NULL), + fields.module, 0, fields.errmsg, fields.lnum, @@ -1327,6 +1343,7 @@ qf_init_end: if (state.fd != NULL) fclose(state.fd); vim_free(fields.namebuf); + vim_free(fields.module); vim_free(fields.errmsg); vim_free(fields.pattern); vim_free(state.growbuf); @@ -1444,6 +1461,7 @@ qf_add_entry( int qf_idx, /* list index */ char_u *dir, /* optional directory name */ char_u *fname, /* file name or NULL */ + char_u *module, /* module name or NULL */ int bufnum, /* buffer number or zero */ char_u *mesg, /* message */ long lnum, /* line number */ @@ -1486,6 +1504,15 @@ qf_add_entry( vim_free(qfp); return FAIL; } + if (module == NULL || *module == NUL) + qfp->qf_module = NULL; + else if ((qfp->qf_module = vim_strsave(module)) == NULL) + { + vim_free(qfp->qf_text); + vim_free(qfp->qf_pattern); + vim_free(qfp); + return FAIL; + } qfp->qf_nr = nr; if (type != 1 && !vim_isprintc(type)) /* only printable chars allowed */ type = 0; @@ -1635,6 +1662,7 @@ copy_loclist(win_T *from, win_T *to) to->w_llist->qf_curlist, NULL, NULL, + from_qfp->qf_module, 0, from_qfp->qf_text, from_qfp->qf_lnum, @@ -2765,18 +2793,22 @@ qf_list(exarg_T *eap) break; fname = NULL; - if (qfp->qf_fnum != 0 - && (buf = buflist_findnr(qfp->qf_fnum)) != NULL) - { - fname = buf->b_fname; - if (qfp->qf_type == 1) /* :helpgrep */ - fname = gettail(fname); + if (qfp->qf_module != NULL && *qfp->qf_module != NUL) + vim_snprintf((char *)IObuff, IOSIZE, "%2d %s", i, (char *)qfp->qf_module); + else { + if (qfp->qf_fnum != 0 + && (buf = buflist_findnr(qfp->qf_fnum)) != NULL) + { + fname = buf->b_fname; + if (qfp->qf_type == 1) /* :helpgrep */ + fname = gettail(fname); + } + if (fname == NULL) + sprintf((char *)IObuff, "%2d", i); + else + vim_snprintf((char *)IObuff, IOSIZE, "%2d %s", + i, (char *)fname); } - if (fname == NULL) - sprintf((char *)IObuff, "%2d", i); - else - vim_snprintf((char *)IObuff, IOSIZE, "%2d %s", - i, (char *)fname); msg_outtrans_attr(IObuff, i == qi->qf_lists[qi->qf_curlist].qf_index ? HL_ATTR(HLF_QFL) : qfFileAttr); @@ -2957,9 +2989,10 @@ qf_free_items(qf_info_T *qi, int idx) qfpnext = qfp->qf_next; if (!stop) { + vim_free(qfp->qf_module); vim_free(qfp->qf_text); - stop = (qfp == qfpnext); vim_free(qfp->qf_pattern); + stop = (qfp == qfpnext); vim_free(qfp); if (stop) /* Somehow qf_count may have an incorrect value, set it to 1 @@ -3562,7 +3595,12 @@ qf_fill_buffer(qf_info_T *qi, buf_T *buf, qfline_T *old_last) } while (lnum < qi->qf_lists[qi->qf_curlist].qf_count) { - if (qfp->qf_fnum != 0 + if (qfp->qf_module != NULL) + { + STRCPY(IObuff, qfp->qf_module); + len = (int)STRLEN(IObuff); + } + else if (qfp->qf_fnum != 0 && (errbuf = buflist_findnr(qfp->qf_fnum)) != NULL && errbuf->b_fname != NULL) { @@ -4367,6 +4405,7 @@ vgr_match_buflines( qi->qf_curlist, NULL, /* dir */ fname, + NULL, duplicate_name ? 0 : buf->b_fnum, ml_get_buf(buf, regmatch->startpos[0].lnum + lnum, FALSE), @@ -4934,6 +4973,8 @@ get_errorlist(qf_info_T *qi_arg, win_T *wp, int qf_idx, list_T *list) || dict_add_nr_str(dict, "col", (long)qfp->qf_col, NULL) == FAIL || dict_add_nr_str(dict, "vcol", (long)qfp->qf_viscol, NULL) == FAIL || dict_add_nr_str(dict, "nr", (long)qfp->qf_nr, NULL) == FAIL + || dict_add_nr_str(dict, "module", 0L, + qfp->qf_module == NULL ? (char_u *)"" : qfp->qf_module) == FAIL || dict_add_nr_str(dict, "pattern", 0L, qfp->qf_pattern == NULL ? (char_u *)"" : qfp->qf_pattern) == FAIL || dict_add_nr_str(dict, "text", 0L, @@ -5312,7 +5353,7 @@ qf_add_entries( { listitem_T *li; dict_T *d; - char_u *filename, *pattern, *text, *type; + char_u *filename, *module, *pattern, *text, *type; int bufnum; long lnum; int col, nr; @@ -5347,6 +5388,7 @@ qf_add_entries( continue; filename = get_dict_string(d, (char_u *)"filename", TRUE); + module = get_dict_string(d, (char_u *)"module", TRUE); bufnum = (int)get_dict_number(d, (char_u *)"bufnr"); lnum = (int)get_dict_number(d, (char_u *)"lnum"); col = (int)get_dict_number(d, (char_u *)"col"); @@ -5383,6 +5425,7 @@ qf_add_entries( qf_idx, NULL, /* dir */ filename, + module, bufnum, text, lnum, @@ -5394,6 +5437,7 @@ qf_add_entries( valid); vim_free(filename); + vim_free(module); vim_free(pattern); vim_free(text); vim_free(type); @@ -6040,6 +6084,7 @@ hgr_search_file( qi->qf_curlist, NULL, /* dir */ fname, + NULL, 0, line, lnum, @@ -6104,7 +6149,7 @@ hgr_search_files_in_dir( /* Skip files for a different language. */ if (lang != NULL && STRNICMP(lang, fnames[fi] - + STRLEN(fnames[fi]) - 3, 2) != 0 + + STRLEN(fnames[fi]) - 3, 2) != 0 && !(STRNICMP(lang, "en", 2) == 0 && STRNICMP("txt", fnames[fi] + STRLEN(fnames[fi]) - 3, 3) == 0)) diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim index 1e781de11e..559958b7e1 100644 --- a/src/testdir/test_quickfix.vim +++ b/src/testdir/test_quickfix.vim @@ -138,6 +138,16 @@ func XlistTests(cchar) \ ' 4:40 col 20 x 44: Other', \ ' 5:50 col 25 55: one'], l) + " Test for module names, one needs to explicitly set `'valid':v:true` so + call g:Xsetlist([ + \ {'lnum':10,'col':5,'type':'W','module':'Data.Text','text':'ModuleWarning','nr':11,'valid':v:true}, + \ {'lnum':20,'col':10,'type':'W','module':'Data.Text','filename':'Data/Text.hs','text':'ModuleWarning','nr':22,'valid':v:true}, + \ {'lnum':30,'col':15,'type':'W','filename':'Data/Text.hs','text':'FileWarning','nr':33,'valid':v:true}]) + let l = split(execute('Xlist', ""), "\n") + call assert_equal([' 1 Data.Text:10 col 5 warning 11: ModuleWarning', + \ ' 2 Data.Text:20 col 10 warning 22: ModuleWarning', + \ ' 3 Data/Text.hs:30 col 15 warning 33: FileWarning'], l) + " Error cases call assert_fails('Xlist abc', 'E488:') endfunc @@ -1142,6 +1152,21 @@ func Test_efm2() call assert_equal(1, l[4].valid) call assert_equal('unittests/dbfacadeTest.py', bufname(l[4].bufnr)) + " Test for %o + set efm=%f(%o):%l\ %m + cgetexpr ['Xtestfile(Language.PureScript.Types):20 Error'] + call writefile(['Line1'], 'Xtestfile') + let l = getqflist() + call assert_equal(1, len(l), string(l)) + call assert_equal('Language.PureScript.Types', l[0].module) + copen + call assert_equal('Language.PureScript.Types|20| Error', getline(1)) + call feedkeys("\", 'xn') + call assert_equal('Xtestfile', expand('%:t')) + cclose + bd + call delete("Xtestfile") + " The following sequence of commands used to crash Vim set efm=%W%m cgetexpr ['msg1'] diff --git a/src/version.c b/src/version.c index ae231be515..a02360ff7a 100644 --- a/src/version.c +++ b/src/version.c @@ -761,6 +761,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1782, /**/ 1781, /**/ From c5cd88554f1e0b2e9ff08d9a0748238dd8340ce1 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 1 May 2018 15:47:38 +0200 Subject: [PATCH 16/20] patch 8.0.1783: cannot use 256 colors in a MS-Windows console Problem: Cannot use 256 colors in a MS-Windows console. Solution: Add 256 color support. (Nobuhiro Takasaki, closes #2821) --- src/misc1.c | 2 +- src/option.c | 25 ++++- src/os_win32.c | 41 +++++++- src/proto/os_win32.pro | 1 + src/proto/term.pro | 1 + src/term.c | 209 ++++++++++++++++++++++++++++++++--------- src/terminal.c | 69 ++------------ src/version.c | 2 + 8 files changed, 238 insertions(+), 112 deletions(-) diff --git a/src/misc1.c b/src/misc1.c index de79c8e815..6c77f4b0d2 100644 --- a/src/misc1.c +++ b/src/misc1.c @@ -3723,7 +3723,7 @@ vim_beep( /* No restore color information, refresh the screen. */ if (has_vtp_working() != 0 # ifdef FEAT_TERMGUICOLORS - && p_tgc + && (p_tgc || (!p_tgc && t_colors >= 256)) # endif ) { diff --git a/src/option.c b/src/option.c index 807b1e0437..b4a0e6b858 100644 --- a/src/option.c +++ b/src/option.c @@ -6082,6 +6082,9 @@ did_set_string_option( int redraw_gui_only = FALSE; #endif int ft_changed = FALSE; +#if defined(FEAT_VTP) && defined(FEAT_TERMGUICOLORS) + int did_swaptcap = FALSE; +#endif /* Get the global option to compare with, otherwise we would have to check * two values for all local options. */ @@ -6821,6 +6824,13 @@ did_set_string_option( vim_free(T_CCO); T_CCO = empty_option; } +#if defined(FEAT_VTP) && defined(FEAT_TERMGUICOLORS) + if (is_term_win32()) + { + swap_tcap(); + did_swaptcap = TRUE; + } +#endif /* We now have a different color setup, initialize it again. */ init_highlight(TRUE, FALSE); } @@ -7674,6 +7684,16 @@ did_set_string_option( #endif check_redraw(options[opt_idx].flags); +#if defined(FEAT_VTP) && defined(FEAT_TERMGUICOLORS) + if (did_swaptcap) + { + if (t_colors < 256) + p_tgc = 0; + set_termname((char_u *)"win32"); + init_highlight(TRUE, FALSE); + } +#endif + return errmsg; } @@ -8716,7 +8736,8 @@ set_bool_option( p_tgc = 0; return (char_u*)N_("E954: 24-bit colors are not supported on this environment"); } - swap_tcap(); + if (is_term_win32()) + swap_tcap(); # endif # ifdef FEAT_GUI if (!gui.in_use && !gui.starting) @@ -8725,7 +8746,7 @@ set_bool_option( # ifdef FEAT_VTP control_console_color_rgb(); /* reset t_Co */ - if (STRCMP(T_NAME, "win32") == 0) + if (is_term_win32()) set_termname(T_NAME); # endif } diff --git a/src/os_win32.c b/src/os_win32.c index 0cb311337d..8278ddd02b 100644 --- a/src/os_win32.c +++ b/src/os_win32.c @@ -214,7 +214,7 @@ static guicolor_T save_console_bg_rgb; static guicolor_T save_console_fg_rgb; # ifdef FEAT_TERMGUICOLORS -# define USE_VTP (vtp_working && p_tgc) +# define USE_VTP (vtp_working && is_term_win32() && (p_tgc || (!p_tgc && t_colors >= 256))) # else # define USE_VTP 0 # endif @@ -2630,7 +2630,6 @@ mch_init(void) /* set termcap codes to current text attributes */ update_tcap(g_attrCurrent); - swap_tcap(); GetConsoleCursorInfo(g_hConOut, &g_cci); GetConsoleMode(g_hConIn, &g_cmodein); @@ -5763,7 +5762,11 @@ clear_chars( if (!USE_VTP) FillConsoleOutputAttribute(g_hConOut, g_attrCurrent, n, coord, &dwDummy); else - FillConsoleOutputAttribute(g_hConOut, 0, n, coord, &dwDummy); + { + set_console_color_rgb(); + gotoxy(coord.X + 1, coord.Y + 1); + vtp_printf("\033[%dX", n); + } } @@ -7653,6 +7656,16 @@ vtp_sgr_bulks( vtp_printf((char *)buf); } + static int +ctermtoxterm( + int cterm) +{ + uint8_t r, g, b, idx; + + cterm_color2rgb(cterm, &r, &g, &b, &idx); + return (((int)r << 16) | ((int)g << 8) | (int)b); +} + static void set_console_color_rgb(void) { @@ -7661,6 +7674,8 @@ set_console_color_rgb(void) int id; guicolor_T fg = INVALCOLOR; guicolor_T bg = INVALCOLOR; + int ctermfg; + int ctermbg; if (!USE_VTP) return; @@ -7669,9 +7684,19 @@ set_console_color_rgb(void) if (id > 0) syn_id2colors(id, &fg, &bg); if (fg == INVALCOLOR) - fg = 0xc0c0c0; /* white text */ + { + ctermfg = -1; + if (id > 0) + syn_id2cterm_bg(id, &ctermfg, &ctermbg); + fg = ctermfg != -1 ? ctermtoxterm(ctermfg) : 0xc0c0c0; /* white */ + } if (bg == INVALCOLOR) - bg = 0x000000; /* black background */ + { + ctermbg = -1; + if (id > 0) + syn_id2cterm_bg(id, &ctermfg, &ctermbg); + bg = ctermbg != -1 ? ctermtoxterm(ctermbg) : 0x000000; /* black */ + } fg = (GetRValue(fg) << 16) | (GetGValue(fg) << 8) | GetBValue(fg); bg = (GetRValue(bg) << 16) | (GetGValue(bg) << 8) | GetBValue(bg); @@ -7730,4 +7755,10 @@ use_vtp(void) return USE_VTP; } + int +is_term_win32(void) +{ + return T_NAME != NULL && STRCMP(T_NAME, "win32") == 0; +} + #endif diff --git a/src/proto/os_win32.pro b/src/proto/os_win32.pro index 1bed98aaf5..7f45c5cf16 100644 --- a/src/proto/os_win32.pro +++ b/src/proto/os_win32.pro @@ -72,4 +72,5 @@ int mch_setenv(char *var, char *value, int x); void control_console_color_rgb(void); int has_vtp_working(void); int use_vtp(void); +int is_term_win32(void); /* vim: set ft=c : */ diff --git a/src/proto/term.pro b/src/proto/term.pro index 42405dda5f..333df92d6a 100644 --- a/src/proto/term.pro +++ b/src/proto/term.pro @@ -76,4 +76,5 @@ void update_tcap(int attr); void swap_tcap(void); guicolor_T gui_get_color_cmn(char_u *name); guicolor_T gui_get_rgb_color_cmn(int r, int g, int b); +void cterm_color2rgb(int nr, uint8_t *r, uint8_t *g, uint8_t *b, uint8_t *ansi_idx); /* vim: set ft=c : */ diff --git a/src/term.c b/src/term.c index d11729cb42..d2a6e4583a 100644 --- a/src/term.c +++ b/src/term.c @@ -2009,11 +2009,6 @@ set_termname(char_u *term) may_req_termresponse(); #endif -#if defined(WIN3264) && !defined(FEAT_GUI) && defined(FEAT_TERMGUICOLORS) - if (STRCMP(term, "win32") == 0) - set_color_count((p_tgc) ? 256 : 16); -#endif - return OK; } @@ -2851,7 +2846,11 @@ term_color(char_u *s, int n) /* Also accept "\e[3%dm" for TERMINFO, it is sometimes used */ /* Also accept CSI instead of [ */ if (n >= 8 && t_colors >= 16 - && ((s[0] == ESC && s[1] == '[') || (s[0] == CSI && (i = 1) == 1)) + && ((s[0] == ESC && s[1] == '[') +#if defined(FEAT_VTP) && defined(FEAT_TERMGUICOLORS) + || (s[0] == ESC && s[1] == '|') +#endif + || (s[0] == CSI && (i = 1) == 1)) && s[i] != NUL && (STRCMP(s + i + 1, "%p1%dm") == 0 || STRCMP(s + i + 1, "%dm") == 0) @@ -2863,7 +2862,11 @@ term_color(char_u *s, int n) char *format = "%s%s%%dm"; #endif sprintf(buf, format, - i == 2 ? IF_EB("\033[", ESC_STR "[") : "\233", + i == 2 ? +#if defined(FEAT_VTP) && defined(FEAT_TERMGUICOLORS) + s[1] == '|' ? IF_EB("\033|", ESC_STR "|") : +#endif + IF_EB("\033[", ESC_STR "[") : "\233", s[i] == '3' ? (n >= 16 ? "38;5;" : "9") : (n >= 16 ? "48;5;" : "10")); OUT_STR(tgoto(buf, 0, n >= 16 ? n : n - 8)); @@ -6640,26 +6643,38 @@ update_tcap(int attr) } # ifdef FEAT_TERMGUICOLORS +# define KSSIZE 20 struct ks_tbl_s { - int code; /* value of KS_ */ - char *vtp; /* code in vtp mode */ - char *buf; /* buffer in non-vtp mode */ - char *vbuf; /* buffer in vtp mode */ + int code; /* value of KS_ */ + char *vtp; /* code in vtp mode */ + char *vtp2; /* code in vtp2 mode */ + char buf[KSSIZE]; /* save buffer in non-vtp mode */ + char vbuf[KSSIZE]; /* save buffer in vtp mode */ + char v2buf[KSSIZE]; /* save buffer in vtp2 mode */ + char arr[KSSIZE]; /* real buffer */ }; static struct ks_tbl_s ks_tbl[] = { - {(int)KS_ME, "\033|0m" }, /* normal */ - {(int)KS_MR, "\033|7m" }, /* reverse */ - {(int)KS_MD, "\033|1m" }, /* bold */ - {(int)KS_SO, "\033|91m"}, /* standout: bright red text */ - {(int)KS_SE, "\033|39m"}, /* standout end: default color */ - {(int)KS_CZH, "\033|95m"}, /* italic: bright magenta text */ - {(int)KS_CZR, "\033|0m",}, /* italic end */ - {(int)KS_US, "\033|4m",}, /* underscore */ - {(int)KS_UE, "\033|24m"}, /* underscore end */ - {(int)KS_NAME, NULL} + {(int)KS_ME, "\033|0m", "\033|0m"}, /* normal */ + {(int)KS_MR, "\033|7m", "\033|7m"}, /* reverse */ + {(int)KS_MD, "\033|1m", "\033|1m"}, /* bold */ + {(int)KS_SO, "\033|91m", "\033|91m"}, /* standout: bright red text */ + {(int)KS_SE, "\033|39m", "\033|39m"}, /* standout end: default color */ + {(int)KS_CZH, "\033|95m", "\033|95m"}, /* italic: bright magenta text */ + {(int)KS_CZR, "\033|0m", "\033|0m"}, /* italic end */ + {(int)KS_US, "\033|4m", "\033|4m"}, /* underscore */ + {(int)KS_UE, "\033|24m", "\033|24m"}, /* underscore end */ +# ifdef TERMINFO + {(int)KS_CAB, "\033|%p1%db", "\033|%p14%dm"}, /* set background color */ + {(int)KS_CAF, "\033|%p1%df", "\033|%p13%dm"}, /* set foreground color */ +# else + {(int)KS_CAB, "\033|%db", "\033|4%dm"}, /* set background color */ + {(int)KS_CAF, "\033|%df", "\033|3%dm"}, /* set foreground color */ +# endif + {(int)KS_CCO, "16", "256"}, /* colors */ + {(int)KS_NAME} /* terminator */ }; static struct builtin_term * @@ -6684,57 +6699,85 @@ swap_tcap(void) { # ifdef FEAT_TERMGUICOLORS static int init_done = FALSE; - static int last_tgc; + static int curr_mode; struct ks_tbl_s *ks; struct builtin_term *bt; + int mode; + enum + { + CMODEINDEX, + CMODE24, + CMODE256 + }; /* buffer initialization */ if (!init_done) { - for (ks = ks_tbl; ks->vtp != NULL; ks++) + for (ks = ks_tbl; ks->code != (int)KS_NAME; ks++) { bt = find_first_tcap(DEFAULT_TERM, ks->code); if (bt != NULL) { - ks->buf = bt->bt_string; - ks->vbuf = ks->vtp; + STRNCPY(ks->buf, bt->bt_string, KSSIZE); + STRNCPY(ks->vbuf, ks->vtp, KSSIZE); + STRNCPY(ks->v2buf, ks->vtp2, KSSIZE); + + STRNCPY(ks->arr, bt->bt_string, KSSIZE); + bt->bt_string = &ks->arr[0]; } } init_done = TRUE; - last_tgc = p_tgc; - return; + curr_mode = CMODEINDEX; } - if (last_tgc != p_tgc) + if (p_tgc) + mode = CMODE24; + else if (t_colors >= 256) + mode = CMODE256; + else + mode = CMODEINDEX; + + for (ks = ks_tbl; ks->code != (int)KS_NAME; ks++) { - if (p_tgc) + bt = find_first_tcap(DEFAULT_TERM, ks->code); + if (bt != NULL) { - /* switch to special character sequence */ - for (ks = ks_tbl; ks->vtp != NULL; ks++) + switch (curr_mode) { - bt = find_first_tcap(DEFAULT_TERM, ks->code); - if (bt != NULL) - { - ks->buf = bt->bt_string; - bt->bt_string = ks->vbuf; - } + case CMODEINDEX: + STRNCPY(&ks->buf[0], bt->bt_string, KSSIZE); + break; + case CMODE24: + STRNCPY(&ks->vbuf[0], bt->bt_string, KSSIZE); + break; + default: + STRNCPY(&ks->v2buf[0], bt->bt_string, KSSIZE); } } - else + } + + if (mode != curr_mode) + { + for (ks = ks_tbl; ks->code != (int)KS_NAME; ks++) { - /* switch to index color */ - for (ks = ks_tbl; ks->vtp != NULL; ks++) + bt = find_first_tcap(DEFAULT_TERM, ks->code); + if (bt != NULL) { - bt = find_first_tcap(DEFAULT_TERM, ks->code); - if (bt != NULL) + switch (mode) { - ks->vbuf = bt->bt_string; - bt->bt_string = ks->buf; + case CMODEINDEX: + STRNCPY(bt->bt_string, &ks->buf[0], KSSIZE); + break; + case CMODE24: + STRNCPY(bt->bt_string, &ks->vbuf[0], KSSIZE); + break; + default: + STRNCPY(bt->bt_string, &ks->v2buf[0], KSSIZE); } } } - last_tgc = p_tgc; + curr_mode = mode; } # endif } @@ -6920,3 +6963,79 @@ gui_get_rgb_color_cmn(int r, int g, int b) return color; } #endif + +#if (defined(WIN3264) && !defined(FEAT_GUI_W32)) || defined(FEAT_TERMINAL) \ + || defined(PROTO) +static int cube_value[] = { + 0x00, 0x5F, 0x87, 0xAF, 0xD7, 0xFF +}; + +static int grey_ramp[] = { + 0x08, 0x12, 0x1C, 0x26, 0x30, 0x3A, 0x44, 0x4E, 0x58, 0x62, 0x6C, 0x76, + 0x80, 0x8A, 0x94, 0x9E, 0xA8, 0xB2, 0xBC, 0xC6, 0xD0, 0xDA, 0xE4, 0xEE +}; + +# ifdef FEAT_TERMINAL +# include "libvterm/include/vterm.h" // for VTERM_ANSI_INDEX_NONE +# endif + +static uint8_t ansi_table[16][4] = { +// R G B idx + { 0, 0, 0, 1}, // black + {224, 0, 0, 2}, // dark red + { 0, 224, 0, 3}, // dark green + {224, 224, 0, 4}, // dark yellow / brown + { 0, 0, 224, 5}, // dark blue + {224, 0, 224, 6}, // dark magenta + { 0, 224, 224, 7}, // dark cyan + {224, 224, 224, 8}, // light grey + + {128, 128, 128, 9}, // dark grey + {255, 64, 64, 10}, // light red + { 64, 255, 64, 11}, // light green + {255, 255, 64, 12}, // yellow + { 64, 64, 255, 13}, // light blue + {255, 64, 255, 14}, // light magenta + { 64, 255, 255, 15}, // light cyan + {255, 255, 255, 16}, // white +}; + + void +cterm_color2rgb(int nr, uint8_t *r, uint8_t *g, uint8_t *b, uint8_t *ansi_idx) +{ + int idx; + + if (nr < 16) + { + *r = ansi_table[nr][0]; + *g = ansi_table[nr][1]; + *b = ansi_table[nr][2]; + *ansi_idx = ansi_table[nr][3]; + } + else if (nr < 232) + { + /* 216 color cube */ + idx = nr - 16; + *r = cube_value[idx / 36 % 6]; + *g = cube_value[idx / 6 % 6]; + *b = cube_value[idx % 6]; + *ansi_idx = VTERM_ANSI_INDEX_NONE; + } + else if (nr < 256) + { + /* 24 grey scale ramp */ + idx = nr - 232; + *r = grey_ramp[idx]; + *g = grey_ramp[idx]; + *b = grey_ramp[idx]; + *ansi_idx = VTERM_ANSI_INDEX_NONE; + } + else + { + *r = 0; + *g = 0; + *b = 0; + *ansi_idx = 0; + } +} +#endif diff --git a/src/terminal.c b/src/terminal.c index 7afc49dc16..9b336ee871 100644 --- a/src/terminal.c +++ b/src/terminal.c @@ -43,7 +43,6 @@ * - Win32: Redirecting output does not work, Test_terminal_redir_file() * is disabled. * - Add test for 'termwinkey'. - * - libvterm: bringg back using // comments and trailing comma in enum * - When starting terminal window with shell in terminal, then using :gui to * switch to GUI, shell stops working. Scrollback seems wrong, command * running in shell is still running. @@ -3016,66 +3015,14 @@ term_get_attr(buf_T *buf, linenr_T lnum, int col) return cell2attr(cellattr->attrs, cellattr->fg, cellattr->bg); } -static VTermColor ansi_table[16] = { - { 0, 0, 0, 1}, /* black */ - {224, 0, 0, 2}, /* dark red */ - { 0, 224, 0, 3}, /* dark green */ - {224, 224, 0, 4}, /* dark yellow / brown */ - { 0, 0, 224, 5}, /* dark blue */ - {224, 0, 224, 6}, /* dark magenta */ - { 0, 224, 224, 7}, /* dark cyan */ - {224, 224, 224, 8}, /* light grey */ - - {128, 128, 128, 9}, /* dark grey */ - {255, 64, 64, 10}, /* light red */ - { 64, 255, 64, 11}, /* light green */ - {255, 255, 64, 12}, /* yellow */ - { 64, 64, 255, 13}, /* light blue */ - {255, 64, 255, 14}, /* light magenta */ - { 64, 255, 255, 15}, /* light cyan */ - {255, 255, 255, 16}, /* white */ -}; - -static int cube_value[] = { - 0x00, 0x5F, 0x87, 0xAF, 0xD7, 0xFF -}; - -static int grey_ramp[] = { - 0x08, 0x12, 0x1C, 0x26, 0x30, 0x3A, 0x44, 0x4E, 0x58, 0x62, 0x6C, 0x76, - 0x80, 0x8A, 0x94, 0x9E, 0xA8, 0xB2, 0xBC, 0xC6, 0xD0, 0xDA, 0xE4, 0xEE -}; - /* * Convert a cterm color number 0 - 255 to RGB. * This is compatible with xterm. */ static void -cterm_color2rgb(int nr, VTermColor *rgb) +cterm_color2vterm(int nr, VTermColor *rgb) { - int idx; - - if (nr < 16) - { - *rgb = ansi_table[nr]; - } - else if (nr < 232) - { - /* 216 color cube */ - idx = nr - 16; - rgb->blue = cube_value[idx % 6]; - rgb->green = cube_value[idx / 6 % 6]; - rgb->red = cube_value[idx / 36 % 6]; - rgb->ansi_index = VTERM_ANSI_INDEX_NONE; - } - else if (nr < 256) - { - /* 24 grey scale ramp */ - idx = nr - 232; - rgb->blue = grey_ramp[idx]; - rgb->green = grey_ramp[idx]; - rgb->red = grey_ramp[idx]; - rgb->ansi_index = VTERM_ANSI_INDEX_NONE; - } + cterm_color2rgb(nr, &rgb->red, &rgb->green, &rgb->blue, &rgb->ansi_index); } /* @@ -3120,6 +3067,10 @@ init_default_colors(term_T *term) # endif # ifdef FEAT_TERMGUICOLORS || p_tgc +# ifdef FEAT_VTP + /* Finally get INVALCOLOR on this execution path */ + || (!p_tgc && t_colors >= 256) +# endif # endif ) { @@ -3171,9 +3122,9 @@ init_default_colors(term_T *term) if (id != 0 && t_colors >= 16) { if (term_default_cterm_fg >= 0) - cterm_color2rgb(term_default_cterm_fg, fg); + cterm_color2vterm(term_default_cterm_fg, fg); if (term_default_cterm_bg >= 0) - cterm_color2rgb(term_default_cterm_bg, bg); + cterm_color2vterm(term_default_cterm_bg, bg); } else { @@ -3184,7 +3135,7 @@ init_default_colors(term_T *term) /* In an MS-Windows console we know the normal colors. */ if (cterm_normal_fg_color > 0) { - cterm_color2rgb(cterm_normal_fg_color - 1, fg); + cterm_color2vterm(cterm_normal_fg_color - 1, fg); # if defined(WIN3264) && !defined(FEAT_GUI_W32) tmp = fg->red; fg->red = fg->blue; @@ -3198,7 +3149,7 @@ init_default_colors(term_T *term) if (cterm_normal_bg_color > 0) { - cterm_color2rgb(cterm_normal_bg_color - 1, bg); + cterm_color2vterm(cterm_normal_bg_color - 1, bg); # if defined(WIN3264) && !defined(FEAT_GUI_W32) tmp = bg->red; bg->red = bg->blue; diff --git a/src/version.c b/src/version.c index a02360ff7a..76a4f2c372 100644 --- a/src/version.c +++ b/src/version.c @@ -761,6 +761,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1783, /**/ 1782, /**/ From bc7845da935c0707e119812077cecd6cfb5a65e2 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 1 May 2018 16:26:48 +0200 Subject: [PATCH 17/20] patch 8.0.1784: gvim test gets stuck in dialog Problem: Gvim test gets stuck in dialog. Solution: Rename the file used. --- src/testdir/test_quickfix.vim | 8 ++++---- src/version.c | 2 ++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim index 559958b7e1..7cc4ae5576 100644 --- a/src/testdir/test_quickfix.vim +++ b/src/testdir/test_quickfix.vim @@ -1154,18 +1154,18 @@ func Test_efm2() " Test for %o set efm=%f(%o):%l\ %m - cgetexpr ['Xtestfile(Language.PureScript.Types):20 Error'] - call writefile(['Line1'], 'Xtestfile') + cgetexpr ['Xotestfile(Language.PureScript.Types):20 Error'] + call writefile(['Line1'], 'Xotestfile') let l = getqflist() call assert_equal(1, len(l), string(l)) call assert_equal('Language.PureScript.Types', l[0].module) copen call assert_equal('Language.PureScript.Types|20| Error', getline(1)) call feedkeys("\", 'xn') - call assert_equal('Xtestfile', expand('%:t')) + call assert_equal('Xotestfile', expand('%:t')) cclose bd - call delete("Xtestfile") + call delete("Xotestfile") " The following sequence of commands used to crash Vim set efm=%W%m diff --git a/src/version.c b/src/version.c index 76a4f2c372..16d0eb0fda 100644 --- a/src/version.c +++ b/src/version.c @@ -761,6 +761,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1784, /**/ 1783, /**/ From 8a938af6ddefab4b4bc751d3f3545e1d95622c8a Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 1 May 2018 17:30:41 +0200 Subject: [PATCH 18/20] patch 8.0.1785: missing symbol in Win32 small build Problem: Missing symbol in Win32 small build. Solution: Define VTERM_ANSI_INDEX_NONE without the terminal feature. Also fix unused function with #ifdef. --- src/os_win32.c | 2 ++ src/term.c | 2 ++ src/version.c | 2 ++ 3 files changed, 6 insertions(+) diff --git a/src/os_win32.c b/src/os_win32.c index 8278ddd02b..c474415c8b 100644 --- a/src/os_win32.c +++ b/src/os_win32.c @@ -7656,6 +7656,7 @@ vtp_sgr_bulks( vtp_printf((char *)buf); } +# ifdef FEAT_TERMGUICOLORS static int ctermtoxterm( int cterm) @@ -7665,6 +7666,7 @@ ctermtoxterm( cterm_color2rgb(cterm, &r, &g, &b, &idx); return (((int)r << 16) | ((int)g << 8) | (int)b); } +# endif static void set_console_color_rgb(void) diff --git a/src/term.c b/src/term.c index d2a6e4583a..08eee67f5f 100644 --- a/src/term.c +++ b/src/term.c @@ -6977,6 +6977,8 @@ static int grey_ramp[] = { # ifdef FEAT_TERMINAL # include "libvterm/include/vterm.h" // for VTERM_ANSI_INDEX_NONE +# else +# define VTERM_ANSI_INDEX_NONE 0 # endif static uint8_t ansi_table[16][4] = { diff --git a/src/version.c b/src/version.c index 16d0eb0fda..01bd9a16e5 100644 --- a/src/version.c +++ b/src/version.c @@ -761,6 +761,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1785, /**/ 1784, /**/ From b2ac14c0b5e23f8ab97c5c784bcd83e13ba8ded3 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 1 May 2018 18:47:59 +0200 Subject: [PATCH 19/20] patch 8.0.1786: no test for 'termwinkey' Problem: No test for 'termwinkey'. Solution: Add a test. Make feedkeys() handle terminal_loop() returning before characters are consumed. --- src/evalfunc.c | 18 ++++++------------ src/ex_docmd.c | 16 +++++++++++++++- src/getchar.c | 10 +++++++--- src/keymap.h | 2 ++ src/terminal.c | 7 ++++--- src/testdir/test_terminal.vim | 16 ++++++++++++++++ src/version.c | 2 ++ 7 files changed, 52 insertions(+), 19 deletions(-) diff --git a/src/evalfunc.c b/src/evalfunc.c index ae1425e53b..259edb8b1f 100644 --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -3311,18 +3311,12 @@ f_feedkeys(typval_T *argvars, typval_T *rettv UNUSED) /* Avoid a 1 second delay when the keys start Insert mode. */ msg_scroll = FALSE; -#ifdef FEAT_TERMINAL - if (term_use_loop()) - terminal_loop(FALSE); - else -#endif - { - if (!dangerous) - ++ex_normal_busy; - exec_normal(TRUE); - if (!dangerous) - --ex_normal_busy; - } + if (!dangerous) + ++ex_normal_busy; + exec_normal(TRUE); + if (!dangerous) + --ex_normal_busy; + msg_scroll |= save_msg_scroll; } } diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 66d2ad6d7b..0e2edd65b2 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -10340,7 +10340,21 @@ exec_normal(int was_typed) && typebuf.tb_len > 0)) && !got_int) { update_topline_cursor(); - normal_cmd(&oa, TRUE); /* execute a Normal mode cmd */ +#ifdef FEAT_TERMINAL + if (term_use_loop() + && oa.op_type == OP_NOP && oa.regname == NUL + && !VIsual_active) + { + /* If terminal_loop() returns OK we got a key that is handled + * in Normal model. With FAIL we first need to position the + * cursor and the screen needs to be redrawn. */ + if (terminal_loop(TRUE) == OK) + normal_cmd(&oa, TRUE); + } + else +#endif + /* execute a Normal mode cmd */ + normal_cmd(&oa, TRUE); } } diff --git a/src/getchar.c b/src/getchar.c index 623440ecf9..5b5b3edabd 100644 --- a/src/getchar.c +++ b/src/getchar.c @@ -2059,7 +2059,7 @@ vgetorpeek(int advance) c = inchar(typebuf.tb_buf, typebuf.tb_buflen - 1, 0L); /* * If inchar() returns TRUE (script file was active) or we - * are inside a mapping, get out of insert mode. + * are inside a mapping, get out of Insert mode. * Otherwise we behave like having gotten a CTRL-C. * As a result typing CTRL-C in insert mode will * really insert a CTRL-C. @@ -2755,6 +2755,10 @@ vgetorpeek(int advance) * cmdline window. */ if (p_im && (State & INSERT)) c = Ctrl_L; +#ifdef FEAT_TERMINAL + else if (terminal_is_active()) + c = K_CANCEL; +#endif else if ((State & CMDLINE) #ifdef FEAT_CMDWIN || (cmdwin_type > 0 && tc == ESC) @@ -2898,8 +2902,8 @@ vgetorpeek(int advance) } /* for (;;) */ } /* if (!character from stuffbuf) */ - /* if advance is FALSE don't loop on NULs */ - } while (c < 0 || (advance && c == NUL)); + /* if advance is FALSE don't loop on NULs */ + } while ((c < 0 && c != K_CANCEL) || (advance && c == NUL)); /* * The "INSERT" message is taken care of here: diff --git a/src/keymap.h b/src/keymap.h index 8a34f0e296..d6dd5cbb35 100644 --- a/src/keymap.h +++ b/src/keymap.h @@ -270,6 +270,7 @@ enum key_extra , KE_FOCUSGAINED = 98 /* focus gained */ , KE_FOCUSLOST = 99 /* focus lost */ , KE_MOUSEMOVE = 100 /* mouse moved with no button down */ + , KE_CANCEL = 101 /* return from vgetc() */ }; /* @@ -455,6 +456,7 @@ enum key_extra #define K_IGNORE TERMCAP2KEY(KS_EXTRA, KE_IGNORE) #define K_NOP TERMCAP2KEY(KS_EXTRA, KE_NOP) +#define K_CANCEL TERMCAP2KEY(KS_EXTRA, KE_CANCEL) #define K_MOUSEDOWN TERMCAP2KEY(KS_EXTRA, KE_MOUSEDOWN) #define K_MOUSEUP TERMCAP2KEY(KS_EXTRA, KE_MOUSEUP) diff --git a/src/terminal.c b/src/terminal.c index 9b336ee871..1fd9ed2abc 100644 --- a/src/terminal.c +++ b/src/terminal.c @@ -42,7 +42,6 @@ * redirection. Probably in call to channel_set_pipes(). * - Win32: Redirecting output does not work, Test_terminal_redir_file() * is disabled. - * - Add test for 'termwinkey'. * - When starting terminal window with shell in terminal, then using :gui to * switch to GUI, shell stops working. Scrollback seems wrong, command * running in shell is still running. @@ -1690,6 +1689,7 @@ send_keys_to_term(term_T *term, int c, int typed) return FAIL; case K_IGNORE: + case K_CANCEL: // used for :normal when running out of chars return FAIL; case K_LEFTDRAG: @@ -1826,9 +1826,9 @@ term_paste_register(int prev_c UNUSED) } } -#if defined(FEAT_GUI) || defined(PROTO) /* - * Return TRUE when the cursor of the terminal should be displayed. + * Return TRUE when waiting for a character in the terminal, the cursor of the + * terminal should be displayed. */ int terminal_is_active() @@ -1836,6 +1836,7 @@ terminal_is_active() return in_terminal_loop != NULL; } +#if defined(FEAT_GUI) || defined(PROTO) cursorentry_T * term_get_cursor_shape(guicolor_T *fg, guicolor_T *bg) { diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim index 0f72346652..cde41a1d65 100644 --- a/src/testdir/test_terminal.vim +++ b/src/testdir/test_terminal.vim @@ -1471,3 +1471,19 @@ func Test_terminal_termwinsize_mininmum() set termwinsize= endfunc + +func Test_terminal_termwinkey() + call assert_equal(1, winnr('$')) + let thiswin = win_getid() + + let buf = Run_shell_in_terminal({}) + let termwin = bufwinid(buf) + set termwinkey= + call feedkeys("\w", 'tx') + call assert_equal(thiswin, win_getid()) + call feedkeys("\w", 'tx') + + let job = term_getjob(buf) + call feedkeys("\\", 'tx') + call WaitForAssert({-> assert_equal("dead", job_status(job))}) +endfunc diff --git a/src/version.c b/src/version.c index 01bd9a16e5..52b54368d8 100644 --- a/src/version.c +++ b/src/version.c @@ -761,6 +761,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1786, /**/ 1785, /**/ From e2c8d8392684a940cc5608acc73ff47486bd7b92 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 1 May 2018 19:24:03 +0200 Subject: [PATCH 20/20] patch 8.0.1787: cannot insert the whole cursor line Problem: Cannot insert the whole cursor line. Solution: Make CTRL-R CTRL-L work. (Andy Massimino, closes #2857) --- runtime/doc/cmdline.txt | 6 ++++-- src/ex_getln.c | 3 ++- src/ops.c | 8 ++++++++ src/testdir/test_cmdline.vim | 3 +++ src/version.c | 2 ++ 5 files changed, 19 insertions(+), 3 deletions(-) diff --git a/runtime/doc/cmdline.txt b/runtime/doc/cmdline.txt index d87d4fe957..25577a2b6a 100644 --- a/runtime/doc/cmdline.txt +++ b/runtime/doc/cmdline.txt @@ -175,12 +175,14 @@ CTRL-R CTRL-F *c_CTRL-R_CTRL-F* *c__* CTRL-R CTRL-P *c_CTRL-R_CTRL-P* *c__* CTRL-R CTRL-W *c_CTRL-R_CTRL-W* *c__* CTRL-R CTRL-A *c_CTRL-R_CTRL-A* *c__* +CTRL-R CTRL-L *c_CTRL-R_CTRL-L* *c__* Insert the object under the cursor: CTRL-F the Filename under the cursor CTRL-P the Filename under the cursor, expanded with 'path' as in |gf| CTRL-W the Word under the cursor CTRL-A the WORD under the cursor; see |WORD| + CTRL-L the line under the cursor When 'incsearch' is set the cursor position at the end of the currently displayed match is used. With CTRL-W the part of @@ -192,8 +194,8 @@ CTRL-R CTRL-A *c_CTRL-R_CTRL-A* *c__* *c_CTRL-R_CTRL-R* *c__* *c_CTRL-R_CTRL-O* *c__* -CTRL-R CTRL-R {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A} -CTRL-R CTRL-O {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A} +CTRL-R CTRL-R {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A CTRL-L} +CTRL-R CTRL-O {0-9a-z"%#:-=. CTRL-F CTRL-P CTRL-W CTRL-A CTRL-L} Insert register or object under the cursor. Works like |c_CTRL-R| but inserts the text literally. For example, if register a contains "xy^Hz" (where ^H is a backspace), diff --git a/src/ex_getln.c b/src/ex_getln.c index 64914aa672..0124098da5 100644 --- a/src/ex_getln.c +++ b/src/ex_getln.c @@ -3299,7 +3299,8 @@ cmdline_paste( /* check for valid regname; also accept special characters for CTRL-R in * the command line */ if (regname != Ctrl_F && regname != Ctrl_P && regname != Ctrl_W - && regname != Ctrl_A && !valid_yank_reg(regname, FALSE)) + && regname != Ctrl_A && regname != Ctrl_L + && !valid_yank_reg(regname, FALSE)) return FAIL; /* A register containing CTRL-R can cause an endless loop. Allow using diff --git a/src/ops.c b/src/ops.c index 0902b04797..9af466b3f3 100644 --- a/src/ops.c +++ b/src/ops.c @@ -1573,6 +1573,14 @@ get_spec_reg( *allocated = TRUE; return TRUE; + case Ctrl_L: /* Line under cursor */ + if (!errmsg) + return FALSE; + + *argp = ml_get_buf(curwin->w_buffer, + curwin->w_cursor.lnum, FALSE); + return TRUE; + case '_': /* black hole: always empty */ *argp = (char_u *)""; return TRUE; diff --git a/src/testdir/test_cmdline.vim b/src/testdir/test_cmdline.vim index ff0756c392..a79f2761cb 100644 --- a/src/testdir/test_cmdline.vim +++ b/src/testdir/test_cmdline.vim @@ -306,6 +306,9 @@ func Test_paste_in_cmdline() call feedkeys("ft:aaa \\ bbb\\"\", 'tx') call assert_equal('"aaa /tmp/some bbb', @:) + call feedkeys(":aaa \\ bbb\\"\", 'tx') + call assert_equal('"aaa '.getline(1).' bbb', @:) + set incsearch call feedkeys("fy:aaa veryl\\ bbb\\"\", 'tx') call assert_equal('"aaa verylongword bbb', @:) diff --git a/src/version.c b/src/version.c index 52b54368d8..19b83acf41 100644 --- a/src/version.c +++ b/src/version.c @@ -761,6 +761,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1787, /**/ 1786, /**/