From 8ce3ca8961c5968a02de0a0b98f906695331f254 Mon Sep 17 00:00:00 2001 From: ichizok Date: Wed, 23 Jun 2021 15:41:52 +0200 Subject: [PATCH 01/35] patch 8.2.3037: configure reports libcanberra when checking for libsodium Problem: Configure reports libcanberra when checking for libsodium. Solution: Adjust the message. (Ozaki Kiichi, closes #8435) --- src/auto/configure | 4 ++-- src/configure.ac | 2 +- src/version.c | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/auto/configure b/src/auto/configure index cd678fd9f1..fba6a19b53 100755 --- a/src/auto/configure +++ b/src/auto/configure @@ -13040,8 +13040,8 @@ if test "$enable_libsodium" = "yes"; then libsodium_lib=-lsodium libsodium_cflags= fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libcanberra" >&5 -$as_echo_n "checking for libcanberra... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libsodium" >&5 +$as_echo_n "checking for libsodium... " >&6; } ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $libsodium_cflags" diff --git a/src/configure.ac b/src/configure.ac index 84b54dbf0a..5ec955757f 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -3792,7 +3792,7 @@ if test "$enable_libsodium" = "yes"; then libsodium_lib=-lsodium libsodium_cflags= fi - AC_MSG_CHECKING(for libcanberra) + AC_MSG_CHECKING(for libsodium) ac_save_CFLAGS="$CFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $libsodium_cflags" diff --git a/src/version.c b/src/version.c index 933dd4f798..4ae8846559 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3037, /**/ 3036, /**/ From cc6504098605f894b557109b618e88913a89914b Mon Sep 17 00:00:00 2001 From: "ola.soder@axis.com" Date: Wed, 23 Jun 2021 15:52:46 +0200 Subject: [PATCH 02/35] patch 8.2.3038: Amiga built-in version string doesn't include build date MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problem: Amiga built-in version string doesn't include build date. Solution: Add the build date if available. (Ola Söder, closes #8437) --- src/os_amiga.c | 3 +++ src/version.c | 2 ++ 2 files changed, 5 insertions(+) diff --git a/src/os_amiga.c b/src/os_amiga.c index 91c13e7d29..c36206c82f 100644 --- a/src/os_amiga.c +++ b/src/os_amiga.c @@ -115,6 +115,9 @@ static char version[] __attribute__((used)) = VIM_VERSION_MINOR_STR # ifdef PATCHLEVEL "." PATCHLEVEL +# endif +# ifdef BUILDDATE + " (" BUILDDATE ")" # endif ; #endif diff --git a/src/version.c b/src/version.c index 4ae8846559..4d89fc21c3 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3038, /**/ 3037, /**/ From 8cec9273d2518f2a9abcbd326722a2eba38d2a13 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Wed, 23 Jun 2021 20:20:53 +0200 Subject: [PATCH 03/35] patch 8.2.3039: Vim9: breakpoint at a comment line does not work Problem: Vim9: breakpoint at a comment line does not work. Solution: Add the comment line number to the debug instruction. (closes #8429) --- src/testdir/test_debugger.vim | 15 ++++++++++++++- src/testdir/test_vim9_disassemble.vim | 18 ++++++++++++------ src/version.c | 2 ++ src/vim9.h | 10 ++++++++-- src/vim9compile.c | 7 ++++++- src/vim9execute.c | 10 ++++++---- 6 files changed, 48 insertions(+), 14 deletions(-) diff --git a/src/testdir/test_debugger.vim b/src/testdir/test_debugger.vim index 81e86588cc..4601319f8d 100644 --- a/src/testdir/test_debugger.vim +++ b/src/testdir/test_debugger.vim @@ -947,7 +947,7 @@ func Test_debug_DefFunction() def LocalFunc() echo "first" echo "second" - breakadd func 1 LegacyFunc + breakadd func LegacyFunc LegacyFunc() enddef @@ -1010,6 +1010,13 @@ func Test_debug_def_function() eval 1 enddef enddef + def g:FuncComment() + # comment + echo "first" + .. "one" + # comment + echo "second" + enddef END call writefile(file, 'Xtest.vim') @@ -1049,6 +1056,12 @@ func Test_debug_def_function() \ ['cmd: call FuncWithDict()']) call RunDbgCmd(buf, 'step', ['line 1: var d = { a: 1, b: 2, }']) call RunDbgCmd(buf, 'step', ['line 6: def Inner()']) + call RunDbgCmd(buf, 'cont') + + call RunDbgCmd(buf, ':breakadd func 1 FuncComment') + call RunDbgCmd(buf, ':call FuncComment()', ['function FuncComment', 'line 2: echo "first" .. "one"']) + call RunDbgCmd(buf, ':breakadd func 3 FuncComment') + call RunDbgCmd(buf, 'cont', ['function FuncComment', 'line 5: echo "second"']) call RunDbgCmd(buf, 'cont') call StopVimInTerminal(buf) diff --git a/src/testdir/test_vim9_disassemble.vim b/src/testdir/test_vim9_disassemble.vim index 7938d91f85..1d100e0e0b 100644 --- a/src/testdir/test_vim9_disassemble.vim +++ b/src/testdir/test_vim9_disassemble.vim @@ -2176,7 +2176,9 @@ def Test_silent_return() enddef def s:Profiled(): string + # comment echo "profiled" + # comment var some = "some text" return "done" enddef @@ -2187,18 +2189,20 @@ def Test_profiled() endif var res = execute('disass profile s:Profiled') assert_match('\d*_Profiled\_s*' .. + '# comment\_s*' .. 'echo "profiled"\_s*' .. - '\d PROFILE START line 1\_s*' .. + '\d PROFILE START line 2\_s*' .. '\d PUSHS "profiled"\_s*' .. '\d ECHO 1\_s*' .. + '# comment\_s*' .. 'var some = "some text"\_s*' .. '\d PROFILE END\_s*' .. - '\d PROFILE START line 2\_s*' .. + '\d PROFILE START line 4\_s*' .. '\d PUSHS "some text"\_s*' .. '\d STORE $0\_s*' .. 'return "done"\_s*' .. '\d PROFILE END\_s*' .. - '\d PROFILE START line 3\_s*' .. + '\d PROFILE START line 5\_s*' .. '\d PUSHS "done"\_s*' .. '\d\+ RETURN\_s*' .. '\d\+ PROFILE END', @@ -2208,16 +2212,18 @@ enddef def Test_debugged() var res = execute('disass debug s:Profiled') assert_match('\d*_Profiled\_s*' .. + '# comment\_s*' .. 'echo "profiled"\_s*' .. - '\d DEBUG line 1 varcount 0\_s*' .. + '\d DEBUG line 1-2 varcount 0\_s*' .. '\d PUSHS "profiled"\_s*' .. '\d ECHO 1\_s*' .. + '# comment\_s*' .. 'var some = "some text"\_s*' .. - '\d DEBUG line 2 varcount 0\_s*' .. + '\d DEBUG line 3-4 varcount 0\_s*' .. '\d PUSHS "some text"\_s*' .. '\d STORE $0\_s*' .. 'return "done"\_s*' .. - '\d DEBUG line 3 varcount 1\_s*' .. + '\d DEBUG line 5-5 varcount 1\_s*' .. '\d PUSHS "done"\_s*' .. '\d RETURN\_s*', res) diff --git a/src/version.c b/src/version.c index 4d89fc21c3..83c7460c27 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3039, /**/ 3038, /**/ diff --git a/src/vim9.h b/src/vim9.h index 58d451cd11..97b9a3ea87 100644 --- a/src/vim9.h +++ b/src/vim9.h @@ -168,8 +168,7 @@ typedef enum { ISN_PROF_START, // start a line for profiling ISN_PROF_END, // end a line for profiling - ISN_DEBUG, // check for debug breakpoint, isn_arg.number is current - // number of local variables + ISN_DEBUG, // check for debug breakpoint, uses isn_arg.debug ISN_UNPACK, // unpack list into items, uses isn_arg.unpack ISN_SHUFFLE, // move item on stack up or down @@ -391,6 +390,12 @@ typedef struct { int invert; } tobool_T; +// arguments to ISN_DEBUG +typedef struct { + varnumber_T dbg_var_names_len; // current number of local variables + int dbg_break_lnum; // first line to break after +} debug_T; + /* * Instruction */ @@ -439,6 +444,7 @@ struct isn_S { tostring_T tostring; tobool_T tobool; getitem_T getitem; + debug_T debug; } isn_arg; }; diff --git a/src/vim9compile.c b/src/vim9compile.c index c5a2c2dcf2..e78a032cb5 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -174,6 +174,9 @@ struct cctx_S { char_u *ctx_line_start; // start of current line or NULL garray_T ctx_instr; // generated instructions + int ctx_prev_lnum; // line number below previous command, for + // debugging + compiletype_T ctx_compile_type; garray_T ctx_locals; // currently visible local variables @@ -585,7 +588,8 @@ generate_instr_debug(cctx_T *cctx) if ((isn = generate_instr(cctx, ISN_DEBUG)) == NULL) return NULL; - isn->isn_arg.number = dfunc->df_var_names.ga_len; + isn->isn_arg.debug.dbg_var_names_len = dfunc->df_var_names.ga_len; + isn->isn_arg.debug.dbg_break_lnum = cctx->ctx_prev_lnum; return isn; } @@ -9270,6 +9274,7 @@ compile_def_function( debug_lnum = cctx.ctx_lnum; generate_instr_debug(&cctx); } + cctx.ctx_prev_lnum = cctx.ctx_lnum + 1; // Some things can be recognized by the first character. switch (*ea.cmd) diff --git a/src/vim9execute.c b/src/vim9execute.c index 6d0da61797..3233e3ca3a 100644 --- a/src/vim9execute.c +++ b/src/vim9execute.c @@ -1473,14 +1473,14 @@ handle_debug(isn_T *iptr, ectx_T *ectx) // check for the next breakpoint if needed breakpoint = dbg_find_breakpoint(FALSE, ufunc->uf_name, - iptr->isn_lnum - 1); + iptr->isn_arg.debug.dbg_break_lnum); if (breakpoint <= 0 || breakpoint > iptr->isn_lnum) return; } SOURCING_LNUM = iptr->isn_lnum; debug_context = ectx; - debug_var_count = iptr->isn_arg.number; + debug_var_count = iptr->isn_arg.debug.dbg_var_names_len; for (ni = iptr + 1; ni->isn_type != ISN_FINISH; ++ni) if (ni->isn_type == ISN_DEBUG @@ -5476,8 +5476,10 @@ list_instructions(char *pfx, isn_T *instr, int instr_count, ufunc_T *ufunc) break; case ISN_DEBUG: - smsg("%s%4d DEBUG line %d varcount %lld", pfx, current, - iptr->isn_lnum, iptr->isn_arg.number); + smsg("%s%4d DEBUG line %d-%d varcount %lld", pfx, current, + iptr->isn_arg.debug.dbg_break_lnum + 1, + iptr->isn_lnum, + iptr->isn_arg.debug.dbg_var_names_len); break; case ISN_UNPACK: smsg("%s%4d UNPACK %d%s", pfx, current, From 18d46587b985923ef4b90b19a0cf37a094607fec Mon Sep 17 00:00:00 2001 From: Yegappan Lakshmanan Date: Wed, 23 Jun 2021 20:46:52 +0200 Subject: [PATCH 04/35] patch 8.2.3040: GUI: dropping files not tested Problem: GUI: dropping files not tested. Solution: Add test_gui_drop_files() and tests. (Yegappan Lakshmanan, closes #8434) --- runtime/doc/eval.txt | 2 + runtime/doc/testing.txt | 21 ++++++++-- runtime/doc/usr_41.txt | 1 + src/evalfunc.c | 2 + src/gui.c | 1 + src/proto/testing.pro | 1 + src/testdir/test_gui.vim | 89 ++++++++++++++++++++++++++++++++++++++++ src/testing.c | 60 ++++++++++++++++++++++++++- src/version.c | 2 + 9 files changed, 174 insertions(+), 5 deletions(-) diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 1f52d9f05b..8a8431281d 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -3022,6 +3022,8 @@ test_feedinput({string}) none add key sequence to input buffer test_garbagecollect_now() none free memory right now for testing test_garbagecollect_soon() none free memory soon for testing test_getvalue({string}) any get value of an internal variable +test_gui_drop_files({list}, {row}, {col}, {mods}) + none drop a list of files in a window test_gui_mouse_event({button}, {row}, {col}, {repeated}, {mods}) none add a mouse event to the input buffer test_ignore_error({expr}) none ignore a specific error diff --git a/runtime/doc/testing.txt b/runtime/doc/testing.txt index db505e7efc..eef322714e 100644 --- a/runtime/doc/testing.txt +++ b/runtime/doc/testing.txt @@ -79,10 +79,23 @@ test_getvalue({name}) *test_getvalue()* Can also be used as a |method|: > GetName()->test_getvalue() < + *test_gui_drop_files()* +test_gui_drop_files({list}, {row}, {col}, {mods}) + Drop one or more files in {list} in the window at {row}, {col}. + This function only works when the GUI is running. + + The supported values for {mods} are: + 0x4 Shift + 0x8 Alt + 0x10 Ctrl + The files are added to the argument list and the first file in + {list} is edited in the window. See |drag-n-drop| for more + information. + *test_gui_mouse_event()* test_gui_mouse_event({button}, {row}, {col}, {multiclick}, {modifiers}) - Inject a mouse button click event. This function works only - when GUI is running. + Inject a mouse button click event. This function only works + when the GUI is running. The supported values for {button} are: 0 right mouse button 1 middle mouse button @@ -92,7 +105,9 @@ test_gui_mouse_event({button}, {row}, {col}, {multiclick}, {modifiers}) 5 scroll wheel up 6 scroll wheel left 7 scroll wheel right - {row} and {col} specify the location of the mouse click. + {row} and {col} specify the location of the mouse click. The + first row of the Vim window is 1 and the last row is 'lines'. + The maximum value of {col} is 'columns'. To inject a multiclick event, set {multiclick} to 1. The supported values for {modifiers} are: 4 shift is pressed diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt index de7f197078..54e5e2930d 100644 --- a/runtime/doc/usr_41.txt +++ b/runtime/doc/usr_41.txt @@ -1021,6 +1021,7 @@ Testing: *test-functions* test_garbagecollect_now() free memory right now test_garbagecollect_soon() set a flag to free memory soon test_getvalue() get value of an internal variable + test_gui_drop_files() drop file(s) in a window test_gui_mouse_event() add a GUI mouse event to the input buffer test_ignore_error() ignore a specific error message test_null_blob() return a null Blob diff --git a/src/evalfunc.c b/src/evalfunc.c index 21d28afec6..3dd887b888 100644 --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -1700,6 +1700,8 @@ static funcentry_T global_functions[] = ret_void, f_test_garbagecollect_soon}, {"test_getvalue", 1, 1, FEARG_1, NULL, ret_number, f_test_getvalue}, + {"test_gui_drop_files", 4, 4, 0, NULL, + ret_void, f_test_gui_drop_files}, {"test_gui_mouse_event", 5, 5, 0, NULL, ret_void, f_test_gui_mouse_event}, {"test_ignore_error", 1, 1, FEARG_1, NULL, diff --git a/src/gui.c b/src/gui.c index b5ec007405..c748fae4ce 100644 --- a/src/gui.c +++ b/src/gui.c @@ -5567,6 +5567,7 @@ gui_handle_drop( { vim_free(fnames[0]); vim_free(fnames); + vim_free(p); } else handle_drop(count, fnames, (modifiers & MOUSE_CTRL) != 0, diff --git a/src/proto/testing.pro b/src/proto/testing.pro index 3e203f8fd6..0d4ff49955 100644 --- a/src/proto/testing.pro +++ b/src/proto/testing.pro @@ -36,4 +36,5 @@ void f_test_scrollbar(typval_T *argvars, typval_T *rettv); void f_test_setmouse(typval_T *argvars, typval_T *rettv); void f_test_gui_mouse_event(typval_T *argvars, typval_T *rettv); void f_test_settime(typval_T *argvars, typval_T *rettv); +void f_test_gui_drop_files(typval_T *argvars, typval_T *rettv); /* vim: set ft=c : */ diff --git a/src/testdir/test_gui.vim b/src/testdir/test_gui.vim index e935e5fdd2..5c18d5d227 100644 --- a/src/testdir/test_gui.vim +++ b/src/testdir/test_gui.vim @@ -1158,4 +1158,93 @@ func Test_gui_tablabel_tooltip() let &lines = save_lines endfunc +" Test for dropping files into a window in GUI +func DropFilesInCmdLine() + call feedkeys(":\"", 'L') + call test_gui_drop_files(['a.c', 'b.c'], &lines, 1, 0) + call feedkeys("\", 'L') +endfunc + +func Test_gui_drop_files() + call assert_fails('call test_gui_drop_files(1, 1, 1, 0)', 'E474:') + call assert_fails('call test_gui_drop_files(["x"], "", 1, 0)', 'E474:') + call assert_fails('call test_gui_drop_files(["x"], 1, "", 0)', 'E474:') + call assert_fails('call test_gui_drop_files(["x"], 1, 1, "")', 'E474:') + + %bw! + %argdelete + call test_gui_drop_files([], 1, 1, 0) + call assert_equal([], argv()) + call test_gui_drop_files([1, 2], 1, 1, 0) + call assert_equal([], argv()) + + call test_gui_drop_files(['a.c', 'b.c'], 1, 1, 0) + call assert_equal(['a.c', 'b.c'], argv()) + %bw! + %argdelete + call test_gui_drop_files([], 1, 1, 0) + call assert_equal([], argv()) + %bw! + " if the buffer in the window is modified, then the file should be opened in + " a new window + set modified + call test_gui_drop_files(['x.c', 'y.c'], 1, 1, 0) + call assert_equal(['x.c', 'y.c'], argv()) + call assert_equal(2, winnr('$')) + call assert_equal('x.c', bufname(winbufnr(1))) + %bw! + %argdelete + " if Ctrl is pressed, then the file should be opened in a new window + call test_gui_drop_files(['s.py', 't.py'], 1, 1, 0x10) + call assert_equal(['s.py', 't.py'], argv()) + call assert_equal(2, winnr('$')) + call assert_equal('s.py', bufname(winbufnr(1))) + %bw! + %argdelete + " drop the files in a non-current window + belowright new + call test_gui_drop_files(['a.py', 'b.py'], 1, 1, 0) + call assert_equal(['a.py', 'b.py'], argv()) + call assert_equal(2, winnr('$')) + call assert_equal(1, winnr()) + call assert_equal('a.py', bufname(winbufnr(1))) + %bw! + %argdelete + " pressing shift when dropping files should change directory + let save_cwd = getcwd() + call mkdir('Xdir1') + call writefile([], 'Xdir1/Xfile1') + call writefile([], 'Xdir1/Xfile2') + call test_gui_drop_files(['Xdir1/Xfile1', 'Xdir1/Xfile2'], 1, 1, 0x4) + call assert_equal('Xdir1', fnamemodify(getcwd(), ':t')) + call assert_equal('Xfile1', @%) + call chdir(save_cwd) + " pressing shift when dropping directory and files should change directory + call test_gui_drop_files(['Xdir1', 'Xdir1/Xfile2'], 1, 1, 0x4) + call assert_equal('Xdir1', fnamemodify(getcwd(), ':t')) + call assert_equal('Xdir1', fnamemodify(@%, ':t')) + call chdir(save_cwd) + %bw! + %argdelete + " dropping a directory should edit it + call test_gui_drop_files(['Xdir1'], 1, 1, 0) + call assert_equal('Xdir1', @%) + %bw! + %argdelete + " dropping only a directory name with Shift should ignore it + call test_gui_drop_files(['Xdir1'], 1, 1, 0x4) + call assert_equal('', @%) + %bw! + %argdelete + call delete('Xdir1', 'rf') + " drop files in the command line. The GUI drop files adds the file names to + " the low level input buffer. So need to use a cmdline map and feedkeys() + " with 'Lx!' to process it in this function itself. + cnoremap DropFilesInCmdLine() + call feedkeys(":\"\\", 'xt') + call feedkeys('k', 'Lx!') + call assert_equal('"a.c b.c', @:) + cunmap +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testing.c b/src/testing.c index 5ebcefbdf0..b32eb1a374 100644 --- a/src/testing.c +++ b/src/testing.c @@ -1224,7 +1224,7 @@ f_test_setmouse(typval_T *argvars, typval_T *rettv UNUSED) void f_test_gui_mouse_event(typval_T *argvars UNUSED, typval_T *rettv UNUSED) { -#ifdef FEAT_GUI +# ifdef FEAT_GUI int button; int row; int col; @@ -1248,7 +1248,7 @@ f_test_gui_mouse_event(typval_T *argvars UNUSED, typval_T *rettv UNUSED) mods = tv_get_number(&argvars[4]); gui_send_mouse_event(button, TEXT_X(col - 1), TEXT_Y(row - 1), repeated_click, mods); -#endif +# endif } void @@ -1257,5 +1257,61 @@ f_test_settime(typval_T *argvars, typval_T *rettv UNUSED) time_for_testing = (time_t)tv_get_number(&argvars[0]); } + void +f_test_gui_drop_files(typval_T *argvars UNUSED, typval_T *rettv UNUSED) +{ +# ifdef FEAT_GUI + int row; + int col; + int_u mods; + char_u **fnames; + int count = 0; + list_T *l; + listitem_T *li; + + if (argvars[0].v_type != VAR_LIST + || (argvars[1].v_type) != VAR_NUMBER + || (argvars[2].v_type) != VAR_NUMBER + || (argvars[3].v_type) != VAR_NUMBER) + { + emsg(_(e_invarg)); + return; + } + + row = tv_get_number(&argvars[1]); + col = tv_get_number(&argvars[2]); + mods = tv_get_number(&argvars[3]); + + l = argvars[0].vval.v_list; + if (list_len(l) == 0) + return; + + fnames = ALLOC_MULT(char_u *, list_len(l)); + if (fnames == NULL) + return; + + FOR_ALL_LIST_ITEMS(l, li) + { + // ignore non-string items + if (li->li_tv.v_type != VAR_STRING) + continue; + + fnames[count] = vim_strsave(li->li_tv.vval.v_string); + if (fnames[count] == NULL) + { + while (--count >= 0) + vim_free(fnames[count]); + vim_free(fnames); + return; + } + count++; + } + + if (count > 0) + gui_handle_drop(TEXT_X(col - 1), TEXT_Y(row - 1), mods, fnames, count); + else + vim_free(fnames); +# endif +} #endif // defined(FEAT_EVAL) diff --git a/src/version.c b/src/version.c index 83c7460c27..bf3331238c 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3040, /**/ 3039, /**/ From 44dea9da4b2a21dd1e03f2bd94b4f2679d4613e5 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Wed, 23 Jun 2021 21:13:20 +0200 Subject: [PATCH 05/35] patch 8.2.3041: detecting if the process of a swap file is running fails Problem: Detecting if the process of a swap file is running fails if the process is owned by another user. Solution: Check for the ESRCH error. (closes #8436) --- src/os_unix.c | 13 +++++++++++-- src/version.c | 2 ++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/os_unix.c b/src/os_unix.c index 0a4f0e6981..56ee764b0f 100644 --- a/src/os_unix.c +++ b/src/os_unix.c @@ -2486,8 +2486,17 @@ mch_get_pid(void) int mch_process_running(long pid) { - // EMX kill() not working correctly, it seems - return kill(pid, 0) == 0; + // If there is no error the process must be running. + if (kill(pid, 0) == 0) + return TRUE; +#ifdef ESRCH + // If the error is ESRCH then the process is not running. + if (errno == ESRCH) + return FALSE; +#endif + // If the process is running and owned by another user we get EPERM. With + // other errors the process might be running, assuming it is then. + return TRUE; } #if !defined(HAVE_STRERROR) && defined(USE_GETCWD) diff --git a/src/version.c b/src/version.c index bf3331238c..79f05ccf78 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3041, /**/ 3040, /**/ From 6738fd2000f0bea4d40f4a8651e0e1f4b0503bb3 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Wed, 23 Jun 2021 21:44:06 +0200 Subject: [PATCH 06/35] patch 8.2.3042: swap file test fails Problem: Swap file test fails. Solution: Check for a very high process ID instead of one, which should be running. --- src/testdir/test_swap.vim | 4 ++-- src/version.c | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/testdir/test_swap.vim b/src/testdir/test_swap.vim index 90afb4d6f0..caacd7e175 100644 --- a/src/testdir/test_swap.vim +++ b/src/testdir/test_swap.vim @@ -201,8 +201,8 @@ func Test_swapfile_delete() " This test won't work as root because root can successfully run kill(1, 0) if !IsRoot() " Write the swapfile with a modified PID, now it will be automatically - " deleted. Process one should never be Vim. - let swapfile_bytes[24:27] = 0z01000000 + " deleted. Process 0x3fffffff most likely does not exist. + let swapfile_bytes[24:27] = 0zffffff3f call writefile(swapfile_bytes, swapfile_name) let s:swapname = '' split XswapfileText diff --git a/src/version.c b/src/version.c index 79f05ccf78..1ec8342d60 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3042, /**/ 3041, /**/ From d415d269130b233c0f198c75cc159bee721aa55c Mon Sep 17 00:00:00 2001 From: "ola.soder@axis.com" Date: Wed, 23 Jun 2021 22:05:27 +0200 Subject: [PATCH 07/35] patch 8.2.3043: Amiga: cannot get the shell size on MorphOS and AROS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problem: Amiga: cannot get the shell size on MorphOS and AROS. Solution: Use control sequences. (Ola Söder, closes #8438) --- src/os_amiga.c | 59 +++++++++++++++++++++++++++++++++++++++++++++----- src/version.c | 2 ++ 2 files changed, 55 insertions(+), 6 deletions(-) diff --git a/src/os_amiga.c b/src/os_amiga.c index c36206c82f..7609ef73b6 100644 --- a/src/os_amiga.c +++ b/src/os_amiga.c @@ -1008,7 +1008,58 @@ mch_settmode(tmode_T tmode) #endif /* - * try to get the real window size + * Get console size in a system friendly way on AROS and MorphOS. + * Return FAIL for failure, OK otherwise + */ +#if defined(__AROS__) || defined(__MORPHOS__) + int +mch_get_shellsize(void) +{ + if (!term_console) + return FAIL; + + if (raw_in && raw_out) + { + // Save current console mode. + int old_tmode = cur_tmode; + char ctrl[] = "\x9b""0 q"; + + // Set RAW mode. + mch_settmode(TMODE_RAW); + + // Write control sequence to console. + if (Write(raw_out, ctrl, sizeof(ctrl)) == sizeof(ctrl)) + { + char scan[] = "\x9b""1;1;%d;%d r", + answ[sizeof(scan) + 8] = { '\0' }; + + // Read return sequence from input. + if (Read(raw_in, answ, sizeof(answ) - 1) > 0) + { + // Parse result and set Vim globals. + if (sscanf(answ, scan, &Rows, &Columns) == 2) + { + // Restore console mode. + mch_settmode(old_tmode); + return OK; + } + } + } + + // Restore console mode. + mch_settmode(old_tmode); + } + + // I/O error. Default size fallback. + term_console = FALSE; + Columns = 80; + Rows = 24; + + return FAIL; +} +#else +/* + * Try to get the real window size, * return FAIL for failure, OK otherwise */ int @@ -1040,13 +1091,8 @@ mch_get_shellsize(void) OUT_STR("\233t\233u"); // CSI t CSI u out_flush(); -#ifdef __AROS__ - if (!Info(raw_out, id) - || (wb_window = (struct Window *) id->id_VolumeNode) == NULL) -#else if (dos_packet(MP(raw_out), (long)ACTION_DISK_INFO, ((ULONG) id) >> 2) == 0 || (wb_window = (struct Window *)id->id_VolumeNode) == NULL) -#endif { // it's not an amiga window, maybe aux device // terminal type should be set @@ -1081,6 +1127,7 @@ out: return FAIL; } +#endif /* * Try to set the real window size to Rows and Columns. diff --git a/src/version.c b/src/version.c index 1ec8342d60..b49d4c2cc1 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3043, /**/ 3042, /**/ From 3a62b14077c51c739cdc755356882b40c299f1c0 Mon Sep 17 00:00:00 2001 From: "ola.soder@axis.com" Date: Thu, 24 Jun 2021 18:50:30 +0200 Subject: [PATCH 08/35] patch 8.2.3044: Amiga MorphOS and AROS: process ID is not valid MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problem: Amiga MorphOS and AROS: process ID is not valid. Solution: Use FindTask to return something which is unique to all processes. (Ola Söder, closes #8444) --- src/os_amiga.c | 4 ++-- src/version.c | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/os_amiga.c b/src/os_amiga.c index 7609ef73b6..e2326b9477 100644 --- a/src/os_amiga.c +++ b/src/os_amiga.c @@ -446,7 +446,7 @@ mch_check_win(int argc, char **argv) * we use a pointer to the current task instead. This should be a * shared structure and thus globally unique. */ -#ifdef __amigaos4__ +#if !defined(__amigaos4__) && !defined(__AROS__) && !defined(__MORPHOS__) sprintf((char *)buf1, "t:nc%p", FindTask(0)); #else sprintf((char *)buf1, "t:nc%ld", (long)buf1); @@ -706,7 +706,7 @@ mch_get_host_name(char_u *s, int len) long mch_get_pid(void) { -#ifdef __amigaos4__ +#if defined(__amigaos4__) || defined(__AROS__) || defined(__MORPHOS__) // This is as close to a pid as we can come. We could use CLI numbers also, // but then we would have two different types of process identifiers. return((long)FindTask(0)); diff --git a/src/version.c b/src/version.c index b49d4c2cc1..d77119c06f 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3044, /**/ 3043, /**/ From 98703d7f6c9a0ef9e54cb291a92342b9f96db732 Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Thu, 24 Jun 2021 19:55:27 +0200 Subject: [PATCH 09/35] patch 8.2.3045: minor typos Problem: Minor typos. Solution: Fix the typos. (Christian Brabandt, closes #8441) --- src/VisVim/README_VisVim.txt | 2 +- src/evalfunc.c | 2 +- src/testdir/vim9.vim | 2 +- src/version.c | 2 ++ 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/VisVim/README_VisVim.txt b/src/VisVim/README_VisVim.txt index d96becf113..f96f102d1b 100644 --- a/src/VisVim/README_VisVim.txt +++ b/src/VisVim/README_VisVim.txt @@ -213,7 +213,7 @@ Troubleshooting Cause: You can't delete an item you once added to the add-ins list box. Explanation: M$ just didn't put a 'delete' button in the dialog box. - Unfortunately there is no DEL key accellerator as well... + Unfortunately there is no DEL key accelerator as well... Workaround: You can't kill it, but you can knock it out: 1. Uncheck the check box in front of 'Vim Developer Studio Add-in'. diff --git a/src/evalfunc.c b/src/evalfunc.c index 3dd887b888..2539515bc8 100644 --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -7973,7 +7973,7 @@ f_searchpos(typval_T *argvars, typval_T *rettv) /* * Set the cursor or mark position. - * If 'charpos' is TRUE, then use the column number as a character offet. + * If 'charpos' is TRUE, then use the column number as a character offset. * Otherwise use the column number as a byte offset. */ static void diff --git a/src/testdir/vim9.vim b/src/testdir/vim9.vim index 9efa65552e..cb66d42608 100644 --- a/src/testdir/vim9.vim +++ b/src/testdir/vim9.vim @@ -107,7 +107,7 @@ def CheckDefAndScriptFailure(lines: list, error: string, lnum = -3) CheckScriptFailure(['vim9script'] + lines, error, lnum + 1) enddef -" As CheckDefAndScriptFailure() but with two different exepcted errors. +" As CheckDefAndScriptFailure() but with two different exepected errors. def CheckDefAndScriptFailure2( lines: list, errorDef: string, diff --git a/src/version.c b/src/version.c index d77119c06f..d0e9da6fc7 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3045, /**/ 3044, /**/ From b420ac9d20d484ba0ebf3e328069251a63f96996 Mon Sep 17 00:00:00 2001 From: "ola.soder@axis.com" Date: Thu, 24 Jun 2021 21:43:31 +0200 Subject: [PATCH 10/35] patch 8.2.3046: Amiga MorphOS: Term mode is set using DOS packets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problem: Amiga MorphOS: Term mode is set using DOS packets. Solution: Use the same way of setting term mdoe on all next gen Amiga-like systems. (Ola Söder, closes #8445) --- src/os_amiga.c | 2 +- src/version.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/os_amiga.c b/src/os_amiga.c index e2326b9477..f157c0bd23 100644 --- a/src/os_amiga.c +++ b/src/os_amiga.c @@ -982,7 +982,7 @@ mch_exit(int r) void mch_settmode(tmode_T tmode) { -#if defined(__AROS__) || defined(__amigaos4__) +#if defined(__AROS__) || defined(__amigaos4__) || defined(__MORPHOS__) if (!SetMode(raw_in, tmode == TMODE_RAW ? 1 : 0)) #else if (dos_packet(MP(raw_in), (long)ACTION_SCREEN_MODE, diff --git a/src/version.c b/src/version.c index d0e9da6fc7..1ecb567711 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3046, /**/ 3045, /**/ From f3d30842dcc8ef4134da462bd4197ae2e2c6c0c1 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Fri, 25 Jun 2021 19:29:30 +0200 Subject: [PATCH 11/35] patch 8.2.3047: increment and decrement don't allow for next command Problem: Increment and decrement don't allow for next command. Solution: Allow for comment and next command. (closes #8442) --- src/ex_cmds.h | 4 ++-- src/testdir/test_vim9_assign.vim | 4 ++++ src/version.c | 2 ++ src/vim9script.c | 8 ++++++-- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/ex_cmds.h b/src/ex_cmds.h index 8ddac37b55..ef3fa669c5 100644 --- a/src/ex_cmds.h +++ b/src/ex_cmds.h @@ -1875,10 +1875,10 @@ EXCMD(CMD_X, "X", ex_X, // Commands that are recognized only in find_ex_command(). EXCMD(CMD_increment, "++", ex_incdec, - EX_EXTRA|EX_NOTRLCOM|EX_SBOXOK|EX_CMDWIN|EX_LOCK_OK, + EX_EXTRA|EX_TRLBAR|EX_SBOXOK|EX_CMDWIN|EX_LOCK_OK, ADDR_NONE), EXCMD(CMD_decrement, "--", ex_incdec, - EX_EXTRA|EX_NOTRLCOM|EX_SBOXOK|EX_CMDWIN|EX_LOCK_OK, + EX_EXTRA|EX_TRLBAR|EX_SBOXOK|EX_CMDWIN|EX_LOCK_OK, ADDR_NONE), #undef EXCMD diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim index 1d3c20e9fe..a26867f597 100644 --- a/src/testdir/test_vim9_assign.vim +++ b/src/testdir/test_vim9_assign.vim @@ -1889,6 +1889,10 @@ def Test_inc_dec() assert_equal(8, nr) --nr assert_equal(7, nr) + ++nr | ++nr + assert_equal(9, nr) + ++nr # comment + assert_equal(10, nr) var ll = [1, 2] --ll[0] diff --git a/src/version.c b/src/version.c index 1ecb567711..3898725e78 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3047, /**/ 3046, /**/ diff --git a/src/vim9script.c b/src/vim9script.c index 7078cbe9cc..7c6526b659 100644 --- a/src/vim9script.c +++ b/src/vim9script.c @@ -166,19 +166,23 @@ vim9_comment_start(char_u *p) ex_incdec(exarg_T *eap) { char_u *cmd = eap->cmd; - size_t len = STRLEN(eap->cmd) + 6; + char_u *nextcmd = eap->nextcmd; + size_t len = STRLEN(eap->cmd) + 8; // This works like "nr += 1" or "nr -= 1". + // Add a '|' to avoid looking in the next line. eap->cmd = alloc(len); if (eap->cmd == NULL) return; - vim_snprintf((char *)eap->cmd, len, "%s %c= 1", cmd + 2, + vim_snprintf((char *)eap->cmd, len, "%s %c= 1 |", cmd + 2, eap->cmdidx == CMD_increment ? '+' : '-'); eap->arg = eap->cmd; eap->cmdidx = CMD_var; + eap->nextcmd = NULL; ex_let(eap); vim_free(eap->cmd); eap->cmd = cmd; + eap->nextcmd = nextcmd; } /* From 22480d147fe83cb31316d2dabc5c5f249477af15 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Fri, 25 Jun 2021 21:31:09 +0200 Subject: [PATCH 12/35] patch 8.2.3048: strange error for white space after ++ command Problem: Strange error for white space after ++ command. Solution: Check for white space explicitly. (closes #8440) --- src/errors.h | 2 ++ src/testdir/test_vim9_assign.vim | 6 ++++++ src/version.c | 2 ++ src/vim9compile.c | 6 ++++++ src/vim9script.c | 7 +++++++ 5 files changed, 23 insertions(+) diff --git a/src/errors.h b/src/errors.h index 8a2461b31e..b4cf8ae54b 100644 --- a/src/errors.h +++ b/src/errors.h @@ -446,3 +446,5 @@ EXTERN char e_libsodium_decryption_failed[] INIT(= N_("E1200: Decryption failed!")); EXTERN char e_libsodium_decryption_failed_premature[] INIT(= N_("E1201: Decryption failed: pre-mature end of file!")); +EXTERN char e_no_white_space_allowed_after_str_str[] + INIT(= N_("E1202: No white space allowed after '%s': %s")); diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim index a26867f597..cba79729c1 100644 --- a/src/testdir/test_vim9_assign.vim +++ b/src/testdir/test_vim9_assign.vim @@ -1906,6 +1906,12 @@ def Test_inc_dec() unlet g:count END CheckDefAndScriptSuccess(lines) + + lines =<< trim END + var nr = 7 + ++ nr + END + CheckDefAndScriptFailure(lines, "E1202: No white space allowed after '++': ++ nr") enddef diff --git a/src/version.c b/src/version.c index 3898725e78..4cef712b66 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3048, /**/ 3047, /**/ diff --git a/src/vim9compile.c b/src/vim9compile.c index e78a032cb5..cd83aea736 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -6639,6 +6639,12 @@ compile_assignment(char_u *arg, exarg_T *eap, cmdidx_T cmdidx, cctx_T *cctx) } if (eap->cmdidx == CMD_increment || eap->cmdidx == CMD_decrement) { + if (VIM_ISWHITE(eap->cmd[2])) + { + semsg(_(e_no_white_space_allowed_after_str_str), + eap->cmdidx == CMD_increment ? "++" : "--", eap->cmd); + return NULL; + } op = (char_u *)(eap->cmdidx == CMD_increment ? "+=" : "-="); oplen = 2; incdec = TRUE; diff --git a/src/vim9script.c b/src/vim9script.c index 7c6526b659..9dc67a789d 100644 --- a/src/vim9script.c +++ b/src/vim9script.c @@ -169,6 +169,13 @@ ex_incdec(exarg_T *eap) char_u *nextcmd = eap->nextcmd; size_t len = STRLEN(eap->cmd) + 8; + if (VIM_ISWHITE(cmd[2])) + { + semsg(_(e_no_white_space_allowed_after_str_str), + eap->cmdidx == CMD_increment ? "++" : "--", eap->cmd); + return; + } + // This works like "nr += 1" or "nr -= 1". // Add a '|' to avoid looking in the next line. eap->cmd = alloc(len); From 6582e230a0f6592287b1123c5fc3807d6fed997e Mon Sep 17 00:00:00 2001 From: Kevin Locke Date: Fri, 25 Jun 2021 21:54:25 +0200 Subject: [PATCH 13/35] patch 8.2.3049: JSON patch file not recognized Problem: JSON patch file not recognized. Solution: Recognize json-patch as json. (Kevin Locke, closes #8450) --- runtime/filetype.vim | 3 +++ src/testdir/test_filetype.vim | 2 +- src/version.c | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/runtime/filetype.vim b/runtime/filetype.vim index 04e2001176..496b58b313 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -855,6 +855,9 @@ au BufNewFile,BufRead *.jov,*.j73,*.jovial setf jovial " JSON au BufNewFile,BufRead *.json,*.jsonp,*.webmanifest setf json +" JSON Patch (RFC 6902) +au BufNewFile,BufRead *.json-patch setf json + " Jupyter Notebook is also json au BufNewFile,BufRead *.ipynb setf json diff --git a/src/testdir/test_filetype.vim b/src/testdir/test_filetype.vim index 0b670acf74..5c9c9753cc 100644 --- a/src/testdir/test_filetype.vim +++ b/src/testdir/test_filetype.vim @@ -257,7 +257,7 @@ let s:filename_checks = { \ 'jgraph': ['file.jgr'], \ 'jovial': ['file.jov', 'file.j73', 'file.jovial'], \ 'jproperties': ['file.properties', 'file.properties_xx', 'file.properties_xx_xx', 'some.properties_xx_xx_file'], - \ 'json': ['file.json', 'file.jsonp', 'file.webmanifest', 'Pipfile.lock', 'file.ipynb'], + \ 'json': ['file.json', 'file.jsonp', 'file.json-patch', 'file.webmanifest', 'Pipfile.lock', 'file.ipynb'], \ 'jsp': ['file.jsp'], \ 'kconfig': ['Kconfig', 'Kconfig.debug', 'Kconfig.file'], \ 'kivy': ['file.kv'], diff --git a/src/version.c b/src/version.c index 4cef712b66..36a3970d05 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3049, /**/ 3048, /**/ From f3caeb63d62c08b579e9b5f40b35e8bf64dde87a Mon Sep 17 00:00:00 2001 From: Austin Gatlin Date: Sat, 26 Jun 2021 12:02:55 +0200 Subject: [PATCH 14/35] patch 8.2.3050: cannot recognize elixir files Problem: Cannot recognize elixir files. Solution: Recognize Elixir-specific files. Check if an .ex file is Euphoria or Elixir. (Austin Gatlin, closes #8401, closes #8446) --- runtime/autoload/dist/ft.vim | 11 ++++++++++ runtime/filetype.vim | 11 ++++++++-- src/testdir/test_filetype.vim | 38 +++++++++++++++++++++++++++++++++++ src/version.c | 2 ++ 4 files changed, 60 insertions(+), 2 deletions(-) diff --git a/runtime/autoload/dist/ft.vim b/runtime/autoload/dist/ft.vim index 1ac74b5785..ac80659113 100644 --- a/runtime/autoload/dist/ft.vim +++ b/runtime/autoload/dist/ft.vim @@ -172,6 +172,17 @@ func dist#ft#FTent() setf dtd endfunc +func dist#ft#ExCheck() + let lines = getline(1, min([line("$"), 100])) + if exists('g:filetype_euphoria') + exe 'setf ' . g:filetype_euphoria + elseif match(lines, '^--\|^ifdef\>\|^include\>') > -1 + setf euphoria3 + else + setf elixir + endif +endfunc + func dist#ft#EuphoriaCheck() if exists('g:filetype_euphoria') exe 'setf ' . g:filetype_euphoria diff --git a/runtime/filetype.vim b/runtime/filetype.vim index 496b58b313..e38bc23de0 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -393,7 +393,7 @@ au BufNewFile,BufRead *.cfm,*.cfi,*.cfc setf cf " Configure scripts au BufNewFile,BufRead configure.in,configure.ac setf config -" CUDA Cumpute Unified Device Architecture +" CUDA Compute Unified Device Architecture au BufNewFile,BufRead *.cu,*.cuh setf cuda " Dockerfile; Podman uses the same syntax with name Containerfile @@ -408,8 +408,15 @@ au BufNewFile,BufRead *enlightenment/*.cfg setf c " Eterm au BufNewFile,BufRead *Eterm/*.cfg setf eterm +" Elixir or Euphoria +au BufNewFile,BufRead *.ex call dist#ft#ExCheck() + +" Elixir +au BufRead,BufNewFile mix.lock,*.exs setf elixir +au BufRead,BufNewFile *.eex,*.leex setf eelixir + " Euphoria 3 or 4 -au BufNewFile,BufRead *.eu,*.ew,*.ex,*.exu,*.exw call dist#ft#EuphoriaCheck() +au BufNewFile,BufRead *.eu,*.ew,*.exu,*.exw call dist#ft#EuphoriaCheck() if has("fname_case") au BufNewFile,BufRead *.EU,*.EW,*.EX,*.EXU,*.EXW call dist#ft#EuphoriaCheck() endif diff --git a/src/testdir/test_filetype.vim b/src/testdir/test_filetype.vim index 5c9c9753cc..50293e524d 100644 --- a/src/testdir/test_filetype.vim +++ b/src/testdir/test_filetype.vim @@ -161,6 +161,8 @@ let s:filename_checks = { \ 'ecd': ['file.ecd'], \ 'edif': ['file.edf', 'file.edif', 'file.edo'], \ 'elinks': ['elinks.conf'], + \ 'elixir': ['file.ex', 'file.exs', 'mix.lock'], + \ 'eelixir': ['file.eex', 'file.leex'], \ 'elm': ['file.elm'], \ 'elmfilt': ['filter-rules'], \ 'epuppet': ['file.epp'], @@ -790,5 +792,41 @@ func Test_pp_file() filetype off endfunc +func Test_ex_file() + filetype on + + call writefile(['arbitrary content'], 'Xfile.ex') + split Xfile.ex + call assert_equal('elixir', &filetype) + bwipe! + let g:filetype_euphoria = 'euphoria4' + split Xfile.ex + call assert_equal('euphoria4', &filetype) + bwipe! + unlet g:filetype_euphoria + + call writefile(['-- filetype euphoria comment'], 'Xfile.ex') + split Xfile.ex + call assert_equal('euphoria3', &filetype) + bwipe! + + call writefile(['--filetype euphoria comment'], 'Xfile.ex') + split Xfile.ex + call assert_equal('euphoria3', &filetype) + bwipe! + + call writefile(['ifdef '], 'Xfile.ex') + split Xfile.ex + call assert_equal('euphoria3', &filetype) + bwipe! + + call writefile(['include '], 'Xfile.ex') + split Xfile.ex + call assert_equal('euphoria3', &filetype) + bwipe! + + call delete('Xfile.ex') + filetype off +endfunc " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index 36a3970d05..32aec1b506 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3050, /**/ 3049, /**/ From 444d878324525787e55185ce3c3e29a3de9b700a Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 26 Jun 2021 12:40:56 +0200 Subject: [PATCH 15/35] patch 8.2.3051: Vim9: for loop with one list variable does not work Problem: Vim9: for loop with one list variable does not work. Solution: Use a separate flag for unpacking a list. (closes #8452) --- src/testdir/test_vim9_script.vim | 7 +++++++ src/version.c | 2 ++ src/vim9compile.c | 11 +++++++---- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim index 1584f173a8..84bf907cd7 100644 --- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -2385,6 +2385,13 @@ def Test_for_loop() endfor assert_equal('1a2b', res) + # unpack with one var + var reslist = [] + for [x] in [['aaa'], ['bbb']] + reslist->add(x) + endfor + assert_equal(['aaa', 'bbb'], reslist) + # loop over string res = '' for c in 'aéc̀d' diff --git a/src/version.c b/src/version.c index 32aec1b506..1270c0c06c 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3051, /**/ 3050, /**/ diff --git a/src/vim9compile.c b/src/vim9compile.c index cd83aea736..dd3f3aec32 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -7731,6 +7731,7 @@ compile_for(char_u *arg_start, cctx_T *cctx) char_u *p; char_u *wp; int var_count = 0; + int var_list = FALSE; int semicolon = FALSE; size_t varlen; garray_T *stack = &cctx->ctx_type_stack; @@ -7747,6 +7748,8 @@ compile_for(char_u *arg_start, cctx_T *cctx) return NULL; if (var_count == 0) var_count = 1; + else + var_list = TRUE; // can also be a list of one variable // consume "in" wp = p; @@ -7811,7 +7814,7 @@ compile_for(char_u *arg_start, cctx_T *cctx) else if (vartype->tt_type == VAR_LIST && vartype->tt_member->tt_type != VAR_ANY) { - if (var_count == 1) + if (!var_list) item_type = vartype->tt_member; else if (vartype->tt_member->tt_type == VAR_LIST && vartype->tt_member->tt_member->tt_type != VAR_ANY) @@ -7828,7 +7831,7 @@ compile_for(char_u *arg_start, cctx_T *cctx) generate_FOR(cctx, loop_lvar->lv_idx); arg = arg_start; - if (var_count > 1) + if (var_list) { generate_UNPACK(cctx, var_count, semicolon); arg = skipwhite(arg + 1); // skip white after '[' @@ -7899,12 +7902,12 @@ compile_for(char_u *arg_start, cctx_T *cctx) } // Reserve a variable to store "var". - where.wt_index = var_count > 1 ? idx + 1 : 0; + where.wt_index = var_list ? idx + 1 : 0; where.wt_variable = TRUE; if (lhs_type == &t_any) lhs_type = item_type; else if (item_type != &t_unknown - && !(var_count > 1 && item_type == &t_any) + && !(var_list && item_type == &t_any) && check_type(lhs_type, item_type, TRUE, where) == FAIL) goto failed; var_lvar = reserve_local(cctx, arg, varlen, TRUE, lhs_type); From ce024c3e20839465dc8c8f79dcccc5414dd8c506 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 26 Jun 2021 13:00:49 +0200 Subject: [PATCH 16/35] patch 8.2.3052: Vim9: "legacy call" does not work Problem: Vim9: "legacy call" does not work. Solution: Do not skip "call" after "legacy". (closes #8454) --- src/testdir/test_vim9_func.vim | 17 ++++++++++++++ src/version.c | 2 ++ src/vim9compile.c | 42 +++++++++++++++++++--------------- 3 files changed, 42 insertions(+), 19 deletions(-) diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim index 301a55c875..bffbb1b0ab 100644 --- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -2316,6 +2316,23 @@ def Test_legacy_lambda() CheckScriptSuccess(lines) enddef +def Test_legacy() + var lines =<< trim END + vim9script + func g:LegacyFunction() + let g:legacyvar = 1 + endfunc + def Testit() + legacy call g:LegacyFunction() + enddef + Testit() + assert_equal(1, g:legacyvar) + unlet g:legacyvar + delfunc g:LegacyFunction + END + CheckScriptSuccess(lines) +enddef + def Test_legacy_errors() for cmd in ['if', 'elseif', 'else', 'endif', 'for', 'endfor', 'continue', 'break', diff --git a/src/version.c b/src/version.c index 1270c0c06c..2b320471b3 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3052, /**/ 3051, /**/ diff --git a/src/vim9compile.c b/src/vim9compile.c index dd3f3aec32..bb5ea9726e 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -9346,27 +9346,30 @@ compile_def_function( break; } - // Skip ":call" to get to the function name. + // Skip ":call" to get to the function name, unless using :legacy p = ea.cmd; - if (checkforcmd(&ea.cmd, "call", 3)) + if (!(local_cmdmod.cmod_flags & CMOD_LEGACY)) { - if (*ea.cmd == '(') - // not for "call()" - ea.cmd = p; - else - ea.cmd = skipwhite(ea.cmd); - } + if (checkforcmd(&ea.cmd, "call", 3)) + { + if (*ea.cmd == '(') + // not for "call()" + ea.cmd = p; + else + ea.cmd = skipwhite(ea.cmd); + } - if (!starts_with_colon) - { - int assign; + if (!starts_with_colon) + { + int assign; - // Check for assignment after command modifiers. - assign = may_compile_assignment(&ea, &line, &cctx); - if (assign == OK) - goto nextline; - if (assign == FAIL) - goto erret; + // Check for assignment after command modifiers. + assign = may_compile_assignment(&ea, &line, &cctx); + if (assign == OK) + goto nextline; + if (assign == FAIL) + goto erret; + } } /* @@ -9375,8 +9378,9 @@ compile_def_function( * "++nr" and "--nr" are eval commands */ cmd = ea.cmd; - if (starts_with_colon || !(*cmd == '\'' - || (cmd[0] == cmd[1] && (*cmd == '+' || *cmd == '-')))) + if (!(local_cmdmod.cmod_flags & CMOD_LEGACY) + && (starts_with_colon || !(*cmd == '\'' + || (cmd[0] == cmd[1] && (*cmd == '+' || *cmd == '-'))))) { ea.cmd = skip_range(ea.cmd, TRUE, NULL); if (ea.cmd > cmd) From 13e45d14ba7f590fb243c041bc45e6d4d47c8432 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 26 Jun 2021 13:28:35 +0200 Subject: [PATCH 17/35] patch 8.2.3053: Vim9: cannot assign to @@ in :def function Problem: Vim9: cannot assign to @@ in :def function Solution: Handle '@' like '"'. --- src/testdir/test_vim9_assign.vim | 25 +++++++++++++++---------- src/version.c | 2 ++ src/vim9compile.c | 3 ++- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim index cba79729c1..55b850a4b6 100644 --- a/src/testdir/test_vim9_assign.vim +++ b/src/testdir/test_vim9_assign.vim @@ -228,16 +228,6 @@ def Test_assignment() CheckDefFailure(['$SOME_ENV_VAR += "more"'], 'E1051:') CheckDefFailure(['$SOME_ENV_VAR += 123'], 'E1012:') - lines =<< trim END - @c = 'areg' - @c ..= 'add' - assert_equal('aregadd', @c) - END - CheckDefAndScriptSuccess(lines) - - CheckDefFailure(['@a += "more"'], 'E1051:') - CheckDefFailure(['@a += 123'], 'E1012:') - v:errmsg = 'none' v:errmsg ..= 'again' assert_equal('noneagain', v:errmsg) @@ -249,6 +239,21 @@ def Test_assignment() END enddef +def Test_assign_register() + var lines =<< trim END + @c = 'areg' + @c ..= 'add' + assert_equal('aregadd', @c) + + @@ = 'some text' + assert_equal('some text', getreg('"')) + END + CheckDefAndScriptSuccess(lines) + + CheckDefFailure(['@a += "more"'], 'E1051:') + CheckDefFailure(['@a += 123'], 'E1012:') +enddef + def Test_reserved_name() for name in ['true', 'false', 'null'] CheckDefExecAndScriptFailure(['var ' .. name .. ' = 0'], 'E1034:') diff --git a/src/version.c b/src/version.c index 2b320471b3..429fb69d58 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3053, /**/ 3052, /**/ diff --git a/src/vim9compile.c b/src/vim9compile.c index bb5ea9726e..b8a879440d 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -5854,7 +5854,8 @@ get_var_dest( } else if (*name == '@') { - if (!valid_yank_reg(name[1], FALSE) || name[1] == '.') + if (name[1] != '@' + && (!valid_yank_reg(name[1], FALSE) || name[1] == '.')) { emsg_invreg(name[1]); return FAIL; From 4d5dfe20839e9d13c95eaf4254467f952653b042 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 26 Jun 2021 13:59:29 +0200 Subject: [PATCH 18/35] patch 8.2.3054: Vim9: unpack assignment using "_" after semicolon fails Problem: Vim9: unpack assignment using "_" after semicolon fails. Solution: Drop the expression result. (closes #8453) --- src/errors.h | 2 +- src/testdir/test_vim9_assign.vim | 10 ++++++++++ src/version.c | 2 ++ src/vim9compile.c | 7 +++++-- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/errors.h b/src/errors.h index b4cf8ae54b..a4dcea2c7f 100644 --- a/src/errors.h +++ b/src/errors.h @@ -318,7 +318,7 @@ EXTERN char e_using_bool_as_number[] EXTERN char e_missing_matching_bracket_after_dict_key[] INIT(= N_("E1139: Missing matching bracket after dict key")); EXTERN char e_for_argument_must_be_sequence_of_lists[] - INIT(= N_("E1140: For argument must be a sequence of lists")); + INIT(= N_("E1140: :for argument must be a sequence of lists")); EXTERN char e_indexable_type_required[] INIT(= N_("E1141: Indexable type required")); EXTERN char e_non_empty_string_required[] diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim index 55b850a4b6..8541d11a39 100644 --- a/src/testdir/test_vim9_assign.vim +++ b/src/testdir/test_vim9_assign.vim @@ -289,6 +289,16 @@ def Test_assign_unpack() assert_equal(1, v1) assert_equal(2, v2) + var reslist = [] + for text in ['aaa {bbb} ccc', 'ddd {eee} fff'] + var before: string + var middle: string + var after: string + [_, before, middle, after; _] = text->matchlist('\(.\{-\}\){\(.\{-\}\)}\(.*\)') + reslist->add(before)->add(middle)->add(after) + endfor + assert_equal(['aaa ', 'bbb', ' ccc', 'ddd ', 'eee', ' fff'], reslist) + var a = 1 var b = 3 [a, b] += [2, 4] diff --git a/src/version.c b/src/version.c index 429fb69d58..2002223e7b 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3054, /**/ 3053, /**/ diff --git a/src/vim9compile.c b/src/vim9compile.c index b8a879440d..46f543284a 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -6598,6 +6598,7 @@ compile_assignment(char_u *arg, exarg_T *eap, cmdidx_T cmdidx, cctx_T *cctx) int var_count = 0; int var_idx; int semicolon = 0; + int did_generate_slice = FALSE; garray_T *instr = &cctx->ctx_instr; garray_T *stack = &cctx->ctx_type_stack; char_u *op; @@ -6801,6 +6802,7 @@ compile_assignment(char_u *arg, exarg_T *eap, cmdidx_T cmdidx, cctx_T *cctx) else if (semicolon && var_idx == var_count - 1) { // For "[var; var] = expr" get the rest of the list + did_generate_slice = TRUE; if (generate_SLICE(cctx, var_count - 1) == FAIL) goto theend; } @@ -7010,8 +7012,9 @@ compile_assignment(char_u *arg, exarg_T *eap, cmdidx_T cmdidx, cctx_T *cctx) var_start = skipwhite(lhs.lhs_dest_end + 1); } - // for "[var, var] = expr" drop the "expr" value - if (var_count > 0 && !semicolon) + // For "[var, var] = expr" drop the "expr" value. + // Also for "[var, var; _] = expr". + if (var_count > 0 && (!semicolon || !did_generate_slice)) { if (generate_instr_drop(cctx, ISN_DROP, 1) == NULL) goto theend; From 3a3b10e87a10dd0bc355618dbfc4a0a6c828aad7 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 26 Jun 2021 15:00:59 +0200 Subject: [PATCH 19/35] patch 8.2.3055: strange error for assigning to "x.key" on non-dictionary Problem: Strange error for assigning to "x.key" on non-dictionary. Solution: Add a specific error message. (closes #8451) --- src/errors.h | 2 ++ src/eval.c | 8 +++++++- src/testdir/test_let.vim | 2 +- src/testdir/test_listdict.vim | 3 +++ src/testdir/test_vim9_assign.vim | 6 ++++++ src/version.c | 2 ++ 6 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/errors.h b/src/errors.h index a4dcea2c7f..00894ef21c 100644 --- a/src/errors.h +++ b/src/errors.h @@ -448,3 +448,5 @@ EXTERN char e_libsodium_decryption_failed_premature[] INIT(= N_("E1201: Decryption failed: pre-mature end of file!")); EXTERN char e_no_white_space_allowed_after_str_str[] INIT(= N_("E1202: No white space allowed after '%s': %s")); +EXTERN char e_dot_can_only_be_used_on_dictionary_str[] + INIT(= N_("E1203: Dot can only be used on a dictionary: %s")); diff --git a/src/eval.c b/src/eval.c index 33ea8504a2..7704d46e98 100644 --- a/src/eval.c +++ b/src/eval.c @@ -924,8 +924,14 @@ get_lval( lp->ll_tv = &v->di_tv; var1.v_type = VAR_UNKNOWN; var2.v_type = VAR_UNKNOWN; - while (*p == '[' || (*p == '.' && lp->ll_tv->v_type == VAR_DICT)) + while (*p == '[' || (*p == '.' && p[1] != '=' && p[1] != '.')) { + if (*p == '.' && lp->ll_tv->v_type != VAR_DICT) + { + if (!quiet) + semsg(_(e_dot_can_only_be_used_on_dictionary_str), name); + return NULL; + } if (!(lp->ll_tv->v_type == VAR_LIST && lp->ll_tv->vval.v_list != NULL) && !(lp->ll_tv->v_type == VAR_DICT) && !(lp->ll_tv->v_type == VAR_BLOB diff --git a/src/testdir/test_let.vim b/src/testdir/test_let.vim index c05a4cbc20..d001d05781 100644 --- a/src/testdir/test_let.vim +++ b/src/testdir/test_let.vim @@ -293,7 +293,7 @@ func Test_let_errors() let s = "var" let var = 1 call assert_fails('let var += [1,2]', 'E734:') - call assert_fails('let {s}.1 = 2', 'E18:') + call assert_fails('let {s}.1 = 2', 'E1203:') call assert_fails('let a[1] = 5', 'E121:') let l = [[1,2]] call assert_fails('let l[:][0] = [5]', 'E708:') diff --git a/src/testdir/test_listdict.vim b/src/testdir/test_listdict.vim index 8351acb410..96debd64d3 100644 --- a/src/testdir/test_listdict.vim +++ b/src/testdir/test_listdict.vim @@ -294,6 +294,9 @@ func Test_dict_assign() let d.1 = 1 let d._ = 2 call assert_equal({'1': 1, '_': 2}, d) + + let n = 0 + call assert_fails('let n.key = 3', 'E1203: Dot can only be used on a dictionary: n.key = 3') endfunc " Function in script-local List or Dict diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim index 8541d11a39..230ddc50c6 100644 --- a/src/testdir/test_vim9_assign.vim +++ b/src/testdir/test_vim9_assign.vim @@ -787,6 +787,12 @@ def Test_assignment_dict() d.dd[0] = 0 END CheckDefExecFailure(lines, 'E1148:', 2) + + lines =<< trim END + var n: any + n.key = 5 + END + CheckDefExecAndScriptFailure2(lines, 'E1148:', 'E1203: Dot can only be used on a dictionary: n.key = 5', 2) enddef def Test_assignment_local() diff --git a/src/version.c b/src/version.c index 2002223e7b..6d907d5c64 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3055, /**/ 3054, /**/ From 14ded11fcad77ebf41032ec80a95d516ca9acb1c Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 26 Jun 2021 19:25:49 +0200 Subject: [PATCH 20/35] patch 8.2.3056: Vim9: using default value in lambda gives confusing error Problem: Vim9: using default value in lambda gives confusing error. Solution: Pass "default_args" on the first pass to get the arguments. (closes #8455) --- src/testdir/test_vim9_func.vim | 6 ++++++ src/userfunc.c | 2 +- src/version.c | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim index bffbb1b0ab..ee97e56ea6 100644 --- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -917,6 +917,12 @@ def Test_call_lambda_args() CheckDefFailure(lines, 'E1167:') CheckScriptFailure(['vim9script'] + lines, 'E1168:') + lines =<< trim END + var Ref: func(any, ?any): bool + Ref = (_, y = 1) => false + END + CheckDefAndScriptFailure(lines, 'E1172:') + lines =<< trim END def ShadowLocal() var one = 1 diff --git a/src/userfunc.c b/src/userfunc.c index e2e745c338..cedd37b9a0 100644 --- a/src/userfunc.c +++ b/src/userfunc.c @@ -1222,7 +1222,7 @@ get_lambda_tv( s = *arg + 1; ret = get_function_args(&s, equal_arrow ? ')' : '-', NULL, types_optional ? &argtypes : NULL, types_optional, evalarg, - NULL, NULL, TRUE, NULL, NULL); + NULL, &default_args, TRUE, NULL, NULL); if (ret == FAIL || skip_arrow(s, equal_arrow, &ret_type, NULL) == NULL) { if (types_optional) diff --git a/src/version.c b/src/version.c index 6d907d5c64..085801849b 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3056, /**/ 3055, /**/ From 307dec4567e0f64a7a4cfc2d5302d2aba26db775 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 26 Jun 2021 21:21:03 +0200 Subject: [PATCH 21/35] patch 8.2.3057: Vim9: debugger test fails with normal features and +terminal MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problem: Vim9: debugger test fails with normal features and +terminal. (Dominique Pellé) Solution: Adjust the INSTRUCTIONS macro. (closes #8460) --- src/version.c | 2 ++ src/vim9.h | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/version.c b/src/version.c index 085801849b..6069a397b1 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3057, /**/ 3056, /**/ diff --git a/src/vim9.h b/src/vim9.h index 97b9a3ea87..b48a2f7c94 100644 --- a/src/vim9.h +++ b/src/vim9.h @@ -518,7 +518,7 @@ extern garray_T def_functions; : (dfunc)->df_instr)) #else # define INSTRUCTIONS(dfunc) \ - (debug_break_level > 0 \ + (debug_break_level > 0 || dfunc->df_ufunc->uf_has_breakpoint \ ? (dfunc)->df_instr_debug \ : (dfunc)->df_instr) #endif From 015cf103115f9a0380ae3e3e85a77792cfe87d49 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 26 Jun 2021 21:52:02 +0200 Subject: [PATCH 22/35] patch 8.2.3058: Vim9: cannot use ternary operator in parenthesis Problem: Vim9: cannot use ternary operator in parenthesis. Solution: Do not use "==" for a default argument value. (closes #8462) --- src/testdir/test_vim9_func.vim | 7 +++++++ src/userfunc.c | 7 ++++++- src/version.c | 2 ++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim index ee97e56ea6..563b7bab8c 100644 --- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -923,6 +923,13 @@ def Test_call_lambda_args() END CheckDefAndScriptFailure(lines, 'E1172:') + lines =<< trim END + var a = 0 + var b = (a == 0 ? 1 : 2) + assert_equal(1, b) + END + CheckDefAndScriptSuccess(lines) + lines =<< trim END def ShadowLocal() var one = 1 diff --git a/src/userfunc.c b/src/userfunc.c index cedd37b9a0..3321f089c0 100644 --- a/src/userfunc.c +++ b/src/userfunc.c @@ -266,13 +266,18 @@ get_function_args( } else { + char_u *np; + arg = p; p = one_function_arg(p, newargs, argtypes, types_optional, evalarg, FALSE, skip); if (p == arg) break; - if (*skipwhite(p) == '=' && default_args != NULL) + // Recognize " = expr" but not " == expr". A lambda can have + // "(a = expr" but "(a == expr" is not a lambda. + np = skipwhite(p); + if (*np == '=' && np[1] != '=' && default_args != NULL) { typval_T rettv; diff --git a/src/version.c b/src/version.c index 6069a397b1..59f84d446b 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3058, /**/ 3057, /**/ From e3ffaa6b7c2d53ab53da933ec91382d003cf9a12 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 26 Jun 2021 22:17:35 +0200 Subject: [PATCH 23/35] patch 8.2.3059: Vim9: memory leak when using lambda Problem: Vim9: memory leak when using lambda. Solution: Do not store the default value strings when skipping. --- src/userfunc.c | 39 +++++++++++++++++++++------------------ src/version.c | 2 ++ 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/src/userfunc.c b/src/userfunc.c index 3321f089c0..c8d08bb45c 100644 --- a/src/userfunc.c +++ b/src/userfunc.c @@ -198,7 +198,7 @@ get_function_args( ga_init2(newargs, (int)sizeof(char_u *), 3); if (argtypes != NULL) ga_init2(argtypes, (int)sizeof(char_u *), 3); - if (default_args != NULL) + if (!skip && default_args != NULL) ga_init2(default_args, (int)sizeof(char_u *), 3); if (varargs != NULL) @@ -289,24 +289,27 @@ get_function_args( expr = p; if (eval1(&p, &rettv, NULL) != FAIL) { - if (ga_grow(default_args, 1) == FAIL) - goto err_ret; - - // trim trailing whitespace - while (p > expr && VIM_ISWHITE(p[-1])) - p--; - c = *p; - *p = NUL; - expr = vim_strsave(expr); - if (expr == NULL) + if (!skip) { - *p = c; - goto err_ret; - } - ((char_u **)(default_args->ga_data)) + if (ga_grow(default_args, 1) == FAIL) + goto err_ret; + + // trim trailing whitespace + while (p > expr && VIM_ISWHITE(p[-1])) + p--; + c = *p; + *p = NUL; + expr = vim_strsave(expr); + if (expr == NULL) + { + *p = c; + goto err_ret; + } + ((char_u **)(default_args->ga_data)) [default_args->ga_len] = expr; - default_args->ga_len++; - *p = c; + default_args->ga_len++; + *p = c; + } } else mustend = TRUE; @@ -357,7 +360,7 @@ get_function_args( err_ret: if (newargs != NULL) ga_clear_strings(newargs); - if (default_args != NULL) + if (!skip && default_args != NULL) ga_clear_strings(default_args); return FAIL; } diff --git a/src/version.c b/src/version.c index 59f84d446b..7fbd6d0b18 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3059, /**/ 3058, /**/ From 98f9a5f4cbe6061e09bccf6074afe0a88a504219 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 26 Jun 2021 22:22:38 +0200 Subject: [PATCH 24/35] patch 8.2.3060: Vim9: cannot use ternary operator in parenthesis Problem: Vim9: cannot use ternary operator in parenthesis. Solution: Do not use "=~" for a default argument value. (closes #8462) --- src/testdir/test_vim9_func.vim | 3 +++ src/userfunc.c | 5 +++-- src/version.c | 2 ++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/testdir/test_vim9_func.vim b/src/testdir/test_vim9_func.vim index 563b7bab8c..4816cb6674 100644 --- a/src/testdir/test_vim9_func.vim +++ b/src/testdir/test_vim9_func.vim @@ -927,6 +927,9 @@ def Test_call_lambda_args() var a = 0 var b = (a == 0 ? 1 : 2) assert_equal(1, b) + var txt = 'a' + b = (txt =~ 'x' ? 1 : 2) + assert_equal(2, b) END CheckDefAndScriptSuccess(lines) diff --git a/src/userfunc.c b/src/userfunc.c index c8d08bb45c..4756bf9d3a 100644 --- a/src/userfunc.c +++ b/src/userfunc.c @@ -275,9 +275,10 @@ get_function_args( break; // Recognize " = expr" but not " == expr". A lambda can have - // "(a = expr" but "(a == expr" is not a lambda. + // "(a = expr" but "(a == expr" and "(a =~ expr" are not a lambda. np = skipwhite(p); - if (*np == '=' && np[1] != '=' && default_args != NULL) + if (*np == '=' && np[1] != '=' && np[1] != '~' + && default_args != NULL) { typval_T rettv; diff --git a/src/version.c b/src/version.c index 7fbd6d0b18..069d8abaae 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3060, /**/ 3059, /**/ From 054794c20f6322bbd9482c4124041dc0a140c78e Mon Sep 17 00:00:00 2001 From: Yegappan Lakshmanan Date: Sun, 27 Jun 2021 12:07:49 +0200 Subject: [PATCH 25/35] patch 8.2.3061: testing the shell option is incomplete and spread out Problem: Testing the shell option is incomplete and spread out. Solution: Move shell tests to one file and increase coverage. (Yegappan Lakshmanan, closes #8464) --- src/testdir/Make_all.mak | 2 + src/testdir/test_functions.vim | 25 ------ src/testdir/test_options.vim | 28 ------ src/testdir/test_shell.vim | 159 +++++++++++++++++++++++++++++++++ src/testdir/test_system.vim | 36 -------- src/version.c | 2 + 6 files changed, 163 insertions(+), 89 deletions(-) create mode 100644 src/testdir/test_shell.vim diff --git a/src/testdir/Make_all.mak b/src/testdir/Make_all.mak index 108c52854d..6feeecd3a8 100644 --- a/src/testdir/Make_all.mak +++ b/src/testdir/Make_all.mak @@ -242,6 +242,7 @@ NEW_TESTS = \ test_selectmode \ test_set \ test_sha256 \ + test_shell \ test_shift \ test_shortpathname \ test_signals \ @@ -471,6 +472,7 @@ NEW_TESTS_RES = \ test_search.res \ test_search_stat.res \ test_selectmode.res \ + test_shell.res \ test_shortpathname.res \ test_signals.res \ test_signs.res \ diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim index 4d4450d980..23af53274d 100644 --- a/src/testdir/test_functions.vim +++ b/src/testdir/test_functions.vim @@ -1579,31 +1579,6 @@ func Test_redo_in_nested_functions() delfunc Apply endfunc -func Test_shellescape() - let save_shell = &shell - set shell=bash - call assert_equal("'text'", shellescape('text')) - call assert_equal("'te\"xt'", 'te"xt'->shellescape()) - call assert_equal("'te'\\''xt'", shellescape("te'xt")) - - call assert_equal("'te%xt'", shellescape("te%xt")) - call assert_equal("'te\\%xt'", shellescape("te%xt", 1)) - call assert_equal("'te#xt'", shellescape("te#xt")) - call assert_equal("'te\\#xt'", shellescape("te#xt", 1)) - call assert_equal("'te!xt'", shellescape("te!xt")) - call assert_equal("'te\\!xt'", shellescape("te!xt", 1)) - - call assert_equal("'te\nxt'", shellescape("te\nxt")) - call assert_equal("'te\\\nxt'", shellescape("te\nxt", 1)) - set shell=tcsh - call assert_equal("'te\\!xt'", shellescape("te!xt")) - call assert_equal("'te\\\\!xt'", shellescape("te!xt", 1)) - call assert_equal("'te\\\nxt'", shellescape("te\nxt")) - call assert_equal("'te\\\\\nxt'", shellescape("te\nxt", 1)) - - let &shell = save_shell -endfunc - func Test_trim() call assert_equal("Testing", trim(" \t\r\r\x0BTesting \t\n\r\n\t\x0B\x0B")) call assert_equal("Testing", " \t \r\r\n\n\x0BTesting \t\n\r\n\t\x0B\x0B"->trim()) diff --git a/src/testdir/test_options.vim b/src/testdir/test_options.vim index 2d87920fad..dedac5a65d 100644 --- a/src/testdir/test_options.vim +++ b/src/testdir/test_options.vim @@ -832,34 +832,6 @@ func Test_buftype() bwipe! endfunc -" Test for the 'shell' option -func Test_shell() - CheckUnix - let save_shell = &shell - set shell= - let caught_e91 = 0 - try - shell - catch /E91:/ - let caught_e91 = 1 - endtry - call assert_equal(1, caught_e91) - let &shell = save_shell -endfunc - -" Test for the 'shellquote' option -func Test_shellquote() - CheckUnix - set shellquote=# - set verbose=20 - redir => v - silent! !echo Hello - redir END - set verbose& - set shellquote& - call assert_match(': "#echo Hello#"', v) -endfunc - " Test for the 'rightleftcmd' option func Test_rightleftcmd() CheckFeature rightleft diff --git a/src/testdir/test_shell.vim b/src/testdir/test_shell.vim new file mode 100644 index 0000000000..abfa1596e9 --- /dev/null +++ b/src/testdir/test_shell.vim @@ -0,0 +1,159 @@ +" Test for the shell related options ('shell', 'shellcmdflag', 'shellpipe', +" 'shellquote', 'shellredir', 'shellxescape', and 'shellxquote') + +source check.vim +source shared.vim + +func Test_shell_options() + " For each shell, the following options are checked: + " 'shellcmdflag', 'shellpipe', 'shellquote', 'shellredir', 'shellxescape', + " 'shellxquote' + let shells = [] + if has('unix') + let shells += [['sh', '-c', '2>&1| tee', '', '>%s 2>&1', '', ''], + \ ['ksh', '-c', '2>&1| tee', '', '>%s 2>&1', '', ''], + \ ['mksh', '-c', '2>&1| tee', '', '>%s 2>&1', '', ''], + \ ['zsh', '-c', '2>&1| tee', '', '>%s 2>&1', '', ''], + \ ['zsh-beta', '-c', '2>&1| tee', '', '>%s 2>&1', '', ''], + \ ['bash', '-c', '2>&1| tee', '', '>%s 2>&1', '', ''], + \ ['fish', '-c', '2>&1| tee', '', '>%s 2>&1', '', ''], + \ ['ash', '-c', '2>&1| tee', '', '>%s 2>&1', '', ''], + \ ['dash', '-c', '2>&1| tee', '', '>%s 2>&1', '', ''], + \ ['csh', '-c', '|& tee', '', '>&', '', ''], + \ ['tcsh', '-c', '|& tee', '', '>&', '', '']] + endif + if has('win32') + let shells += [['cmd', '/c', '>%s 2>&1', '', '>%s 2>&1', '"&|<>()@^', ''], + \ ['cmd.exe', '/c', '>%s 2>&1', '', '>%s 2>&1', '"&|<>()@^', '('], + \ ['powershell.exe', '-c', '>', '', '>', '"&|<>()@^', '"'], + \ ['powershell', '-c', '>', '', '>', '"&|<>()@^', '"'], + \ ['sh.exe', '-c', '>%s 2>&1', '', '>%s 2>&1', '"&|<>()@^', '"'], + \ ['ksh.exe', '-c', '>%s 2>&1', '', '>%s 2>&1', '"&|<>()@^', '"'], + \ ['mksh.exe', '-c', '>%s 2>&1', '', '>%s 2>&1', '"&|<>()@^', '"'], + \ ['pdksh.exe', '-c', '>%s 2>&1', '', '>%s 2>&1', '"&|<>()@^', '"'], + \ ['zsh.exe', '-c', '>%s 2>&1', '', '>%s 2>&1', '"&|<>()@^', '"'], + \ ['zsh-beta.exe', '-c', '>%s 2>&1', '', '>%s 2>&1', '"&|<>()@^', '"'], + \ ['bash.exe', '-c', '>%s 2>&1', '', '>%s 2>&1', '"&|<>()@^', '"'], + \ ['dash.exe', '-c', '>%s 2>&1', '', '>%s 2>&1', '"&|<>()@^', '"'], + \ ['csh.exe', '-c', '>&', '', '>&', '"&|<>()@^', '"'], + \ ['tcsh.exe', '-c', '>&', '', '>&', '"&|<>()@^', '"']] + endif + + let after =<< trim END + let l = [&shell, &shellcmdflag, &shellpipe, &shellquote] + let l += [&shellredir, &shellxescape, &shellxquote] + call writefile([json_encode(l)], 'Xtestout') + qall! + END + for e in shells + if RunVim([], after, '--cmd "set shell=' .. e[0] .. '"') + call assert_equal(e, json_decode(readfile('Xtestout')[0])) + endif + endfor + + for e in shells + exe 'set shell=' .. e[0] + if e[0] =~# '.*csh$' || e[0] =~# '.*csh.exe$' + let str1 = "'cmd \"arg1\" '\\''arg2'\\'' \\!%#'" + let str2 = "'cmd \"arg1\" '\\''arg2'\\'' \\\\!\\%\\#'" + else + let str1 = "'cmd \"arg1\" '\\''arg2'\\'' !%#'" + let str2 = "'cmd \"arg1\" '\\''arg2'\\'' \\!\\%\\#'" + endif + call assert_equal(str1, shellescape("cmd \"arg1\" 'arg2' !%#"), e[0]) + call assert_equal(str2, shellescape("cmd \"arg1\" 'arg2' !%#", 1), e[0]) + endfor + set shell& + call delete('Xtestout') +endfunc + +" Test for the 'shell' option +func Test_shell() + CheckUnix + let save_shell = &shell + set shell= + let caught_e91 = 0 + try + shell + catch /E91:/ + let caught_e91 = 1 + endtry + call assert_equal(1, caught_e91) + let &shell = save_shell +endfunc + +" Test for the 'shellquote' option +func Test_shellquote() + CheckUnix + set shellquote=# + set verbose=20 + redir => v + silent! !echo Hello + redir END + set verbose& + set shellquote& + call assert_match(': "#echo Hello#"', v) +endfunc + +func Test_shellescape() + let save_shell = &shell + set shell=bash + call assert_equal("'text'", shellescape('text')) + call assert_equal("'te\"xt'", 'te"xt'->shellescape()) + call assert_equal("'te'\\''xt'", shellescape("te'xt")) + + call assert_equal("'te%xt'", shellescape("te%xt")) + call assert_equal("'te\\%xt'", shellescape("te%xt", 1)) + call assert_equal("'te#xt'", shellescape("te#xt")) + call assert_equal("'te\\#xt'", shellescape("te#xt", 1)) + call assert_equal("'te!xt'", shellescape("te!xt")) + call assert_equal("'te\\!xt'", shellescape("te!xt", 1)) + + call assert_equal("'te\nxt'", shellescape("te\nxt")) + call assert_equal("'te\\\nxt'", shellescape("te\nxt", 1)) + set shell=tcsh + call assert_equal("'te\\!xt'", shellescape("te!xt")) + call assert_equal("'te\\\\!xt'", shellescape("te!xt", 1)) + call assert_equal("'te\\\nxt'", shellescape("te\nxt")) + call assert_equal("'te\\\\\nxt'", shellescape("te\nxt", 1)) + + let &shell = save_shell +endfunc + +" Test for 'shellxquote' +func Test_shellxquote() + CheckUnix + + let save_shell = &shell + let save_sxq = &shellxquote + let save_sxe = &shellxescape + + call writefile(['#!/bin/sh', 'echo "Cmd: [$*]" > Xlog'], 'Xtestshell') + call setfperm('Xtestshell', "r-x------") + set shell=./Xtestshell + + set shellxquote=\\" + call feedkeys(":!pwd\\", 'xt') + call assert_equal(['Cmd: [-c "pwd"]'], readfile('Xlog')) + + set shellxquote=( + call feedkeys(":!pwd\\", 'xt') + call assert_equal(['Cmd: [-c (pwd)]'], readfile('Xlog')) + + set shellxquote=\\"( + call feedkeys(":!pwd\\", 'xt') + call assert_equal(['Cmd: [-c "(pwd)"]'], readfile('Xlog')) + + set shellxescape=\"&<<()@^ + set shellxquote=( + call feedkeys(":!pwd\"&<<{}@^\\", 'xt') + call assert_equal(['Cmd: [-c (pwd^"^&^<^<{}^@^^)]'], readfile('Xlog')) + + let &shell = save_shell + let &shellxquote = save_sxq + let &shellxescape = save_sxe + call delete('Xtestshell') + call delete('Xlog') +endfunc + +" vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_system.vim b/src/testdir/test_system.vim index 9e63f51865..f238139363 100644 --- a/src/testdir/test_system.vim +++ b/src/testdir/test_system.vim @@ -144,40 +144,4 @@ func Test_system_with_shell_quote() endtry endfunc -" Test for 'shellxquote' -func Test_Shellxquote() - CheckUnix - - let save_shell = &shell - let save_sxq = &shellxquote - let save_sxe = &shellxescape - - call writefile(['#!/bin/sh', 'echo "Cmd: [$*]" > Xlog'], 'Xtestshell') - call setfperm('Xtestshell', "r-x------") - set shell=./Xtestshell - - set shellxquote=\\" - call feedkeys(":!pwd\\", 'xt') - call assert_equal(['Cmd: [-c "pwd"]'], readfile('Xlog')) - - set shellxquote=( - call feedkeys(":!pwd\\", 'xt') - call assert_equal(['Cmd: [-c (pwd)]'], readfile('Xlog')) - - set shellxquote=\\"( - call feedkeys(":!pwd\\", 'xt') - call assert_equal(['Cmd: [-c "(pwd)"]'], readfile('Xlog')) - - set shellxescape=\"&<<()@^ - set shellxquote=( - call feedkeys(":!pwd\"&<<{}@^\\", 'xt') - call assert_equal(['Cmd: [-c (pwd^"^&^<^<{}^@^^)]'], readfile('Xlog')) - - let &shell = save_shell - let &shellxquote = save_sxq - let &shellxescape = save_sxe - call delete('Xtestshell') - call delete('Xlog') -endfunc - " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index 069d8abaae..f4f5df33b9 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3061, /**/ 3060, /**/ From 4cd5c52d64a66ad1984d33462a40e0c6721ca232 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 27 Jun 2021 13:04:00 +0200 Subject: [PATCH 26/35] patch 8.2.3062: internal error when adding several text properties Problem: Internal error when adding several text properties. Solution: Do not handle text properties when deleting a line for splitting a data block. (closes #8466) --- src/memline.c | 10 ++++++---- src/structs.h | 1 + src/testdir/test_textprop.vim | 22 ++++++++++++++++++++++ src/version.c | 2 ++ 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/src/memline.c b/src/memline.c index f1c2a8a524..0eac1cdcb1 100644 --- a/src/memline.c +++ b/src/memline.c @@ -3662,7 +3662,7 @@ ml_delete_int(buf_T *buf, linenr_T lnum, int flags) #ifdef FEAT_PROP_POPUP // If there are text properties, make a copy, so that we can update // properties in preceding and following lines. - if (buf->b_has_textprop && !(flags & ML_DEL_UNDO)) + if (buf->b_has_textprop && !(flags & (ML_DEL_UNDO | ML_DEL_NOPROP))) { size_t textlen = STRLEN((char_u *)dp + line_start) + 1; @@ -3765,9 +3765,11 @@ theend: { // Adjust text properties in the line above and below. if (lnum > 1) - adjust_text_props_for_delete(buf, lnum - 1, textprop_save, textprop_save_len, TRUE); + adjust_text_props_for_delete(buf, lnum - 1, textprop_save, + textprop_save_len, TRUE); if (lnum <= buf->b_ml.ml_line_count) - adjust_text_props_for_delete(buf, lnum, textprop_save, textprop_save_len, FALSE); + adjust_text_props_for_delete(buf, lnum, textprop_save, + textprop_save_len, FALSE); } vim_free(textprop_save); #endif @@ -4021,7 +4023,7 @@ ml_flush_line(buf_T *buf) | ML_APPEND_NOPROP #endif ); - (void)ml_delete_int(buf, lnum, 0); + (void)ml_delete_int(buf, lnum, ML_DEL_NOPROP); } } vim_free(new_line); diff --git a/src/structs.h b/src/structs.h index ae2c0b850c..d6f4988e72 100644 --- a/src/structs.h +++ b/src/structs.h @@ -769,6 +769,7 @@ typedef struct memline // Values for the flags argument of ml_delete_flags(). #define ML_DEL_MESSAGE 1 // may give a "No lines in buffer" message #define ML_DEL_UNDO 2 // called from undo, do not update textprops +#define ML_DEL_NOPROP 4 // splitting data block, do not update textprops // Values for the flags argument of ml_append_int(). #define ML_APPEND_NEW 1 // starting to edit a new file diff --git a/src/testdir/test_textprop.vim b/src/testdir/test_textprop.vim index d1e8f38d49..e2de3ba937 100644 --- a/src/testdir/test_textprop.vim +++ b/src/testdir/test_textprop.vim @@ -1488,5 +1488,27 @@ def Test_prop_splits_data_block() prop_type_delete('someprop') enddef +" This was calling ml_delete_int() and try to change text properties. +def Test_prop_add_delete_line() + new + var a = 10 + var b = 20 + repeat([''], a)->append('$') + prop_type_add('Test', {highlight: 'ErrorMsg'}) + for lnum in range(1, a) + for col in range(1, b) + prop_add(1, 1, {end_lnum: lnum, end_col: col, type: 'Test'}) + endfor + endfor + + # check deleting lines is OK + :5del + :1del + :$del + + prop_type_delete('Test') + bwipe! +enddef + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index f4f5df33b9..e311104f58 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3062, /**/ 3061, /**/ From 65aee0b714e809b9f19862f3decd35055ed4de10 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 27 Jun 2021 14:08:24 +0200 Subject: [PATCH 27/35] patch 8.2.3063: crash when switching 'cryptmethod' to xchaha20 with undo file Problem: Crash when switching 'cryptmethod' to xchaha20 with an existing undo file. (Martin Tournoij) Solution: Disable reading undo file when decoding can't be done inplace. (issue #8467) --- src/bufwrite.c | 14 ++++++++++++-- src/fileio.c | 8 ++++++++ src/version.c | 2 ++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/bufwrite.c b/src/bufwrite.c index c91bcd9958..e480e57e7c 100644 --- a/src/bufwrite.c +++ b/src/bufwrite.c @@ -494,14 +494,16 @@ buf_write_bytes(struct bw_info *ip) if (crypt_works_inplace(ip->bw_buffer->b_cryptstate)) { # endif - crypt_encode_inplace(ip->bw_buffer->b_cryptstate, buf, len, ip->bw_finish); + crypt_encode_inplace(ip->bw_buffer->b_cryptstate, buf, len, + ip->bw_finish); # ifdef CRYPT_NOT_INPLACE } else { char_u *outbuf; - len = crypt_encode_alloc(curbuf->b_cryptstate, buf, len, &outbuf, ip->bw_finish); + len = crypt_encode_alloc(curbuf->b_cryptstate, buf, len, &outbuf, + ip->bw_finish); if (len == 0) return OK; // Crypt layer is buffering, will flush later. wlen = write_eintr(ip->bw_fd, outbuf, len); @@ -1980,10 +1982,18 @@ restore_backup: write_info.bw_start_lnum = start; #ifdef FEAT_PERSISTENT_UNDO + // TODO: if the selected crypt method prevents the undo file from being + // written, and existing undo file should be deleted. write_undo_file = (buf->b_p_udf && overwriting && !append && !filtering +# ifdef CRYPT_NOT_INPLACE + // writing undo file requires + // crypt_encode_inplace() + && (curbuf->b_cryptstate == NULL + || crypt_works_inplace(curbuf->b_cryptstate)) +# endif && reset_changed && !checking_conversion); if (write_undo_file) diff --git a/src/fileio.c b/src/fileio.c index 7c8f00de3a..4bd773e0bd 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -1298,9 +1298,17 @@ retry: * At start of file: Check for magic number of encryption. */ if (filesize == 0 && size > 0) + { cryptkey = check_for_cryptkey(cryptkey, ptr, &size, &filesize, newfile, sfname, &did_ask_for_key); +# ifdef CRYPT_NOT_INPLACE + if (curbuf->b_cryptstate != NULL + && !crypt_works_inplace(curbuf->b_cryptstate)) + // reading undo file requires crypt_decode_inplace() + read_undo_file = FALSE; +# endif + } /* * Decrypt the read bytes. This is done before checking for * EOF because the crypt layer may be buffering. diff --git a/src/version.c b/src/version.c index e311104f58..1238a4976b 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3063, /**/ 3062, /**/ From e65081d1b591f16dc6e380a830d87565c5eb7b03 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 27 Jun 2021 15:04:05 +0200 Subject: [PATCH 28/35] patch 8.2.3064: Vim9: in script cannot set item in uninitialized list Problem: Vim9: in script cannot set item in uninitialized list. Solution: When a list is NULL allocate an empty one. (closes #8461) --- src/eval.c | 33 ++++++++++++++++++++++-------- src/testdir/test_vim9_assign.vim | 35 ++++++++++++++++++++------------ src/version.c | 2 ++ 3 files changed, 49 insertions(+), 21 deletions(-) diff --git a/src/eval.c b/src/eval.c index 7704d46e98..7990c23f00 100644 --- a/src/eval.c +++ b/src/eval.c @@ -932,15 +932,22 @@ get_lval( semsg(_(e_dot_can_only_be_used_on_dictionary_str), name); return NULL; } - if (!(lp->ll_tv->v_type == VAR_LIST && lp->ll_tv->vval.v_list != NULL) - && !(lp->ll_tv->v_type == VAR_DICT) - && !(lp->ll_tv->v_type == VAR_BLOB - && lp->ll_tv->vval.v_blob != NULL)) + if (lp->ll_tv->v_type != VAR_LIST + && lp->ll_tv->v_type != VAR_DICT + && lp->ll_tv->v_type != VAR_BLOB) { if (!quiet) emsg(_("E689: Can only index a List, Dictionary or Blob")); return NULL; } + + // a NULL list/blob works like an empty list/blob, allocate one now. + if (lp->ll_tv->v_type == VAR_LIST && lp->ll_tv->vval.v_list == NULL) + rettv_list_alloc(lp->ll_tv); + else if (lp->ll_tv->v_type == VAR_BLOB + && lp->ll_tv->vval.v_blob == NULL) + rettv_blob_alloc(lp->ll_tv); + if (lp->ll_range) { if (!quiet) @@ -1201,10 +1208,20 @@ get_lval( lp->ll_li = list_find_index(lp->ll_list, &lp->ll_n1); if (lp->ll_li == NULL) { - clear_tv(&var2); - if (!quiet) - semsg(_(e_listidx), lp->ll_n1); - return NULL; + // Vim9: Allow for adding an item at the end. + if (in_vim9script() && lp->ll_n1 == lp->ll_list->lv_len + && lp->ll_list->lv_lock == 0) + { + list_append_number(lp->ll_list, 0); + lp->ll_li = list_find_index(lp->ll_list, &lp->ll_n1); + } + if (lp->ll_li == NULL) + { + clear_tv(&var2); + if (!quiet) + semsg(_(e_listidx), lp->ll_n1); + return NULL; + } } if (lp->ll_valtype != NULL) diff --git a/src/testdir/test_vim9_assign.vim b/src/testdir/test_vim9_assign.vim index 230ddc50c6..86f890ea09 100644 --- a/src/testdir/test_vim9_assign.vim +++ b/src/testdir/test_vim9_assign.vim @@ -1102,21 +1102,30 @@ def Test_assignment_failure() enddef def Test_assign_list() - var l: list = [] - l[0] = 'value' - assert_equal('value', l[0]) + var lines =<< trim END + var l: list = [] + l[0] = 'value' + assert_equal('value', l[0]) - l[1] = 'asdf' - assert_equal('value', l[0]) - assert_equal('asdf', l[1]) - assert_equal('asdf', l[-1]) - assert_equal('value', l[-2]) + l[1] = 'asdf' + assert_equal('value', l[0]) + assert_equal('asdf', l[1]) + assert_equal('asdf', l[-1]) + assert_equal('value', l[-2]) - var nrl: list = [] - for i in range(5) - nrl[i] = i - endfor - assert_equal([0, 1, 2, 3, 4], nrl) + var nrl: list = [] + for i in range(5) + nrl[i] = i + endfor + assert_equal([0, 1, 2, 3, 4], nrl) + + var ul: list + ul[0] = 1 + ul[1] = 2 + ul[2] = 3 + assert_equal([1, 2, 3], ul) + END + CheckDefAndScriptSuccess(lines) CheckDefFailure(["var l: list = ['', true]"], 'E1012: Type mismatch; expected list but got list', 1) CheckDefFailure(["var l: list> = [['', true]]"], 'E1012: Type mismatch; expected list> but got list>', 1) diff --git a/src/version.c b/src/version.c index 1238a4976b..12f6648195 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3064, /**/ 3063, /**/ From 4d8f476176eadfc745bcb8e143460029048f858d Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 27 Jun 2021 15:18:56 +0200 Subject: [PATCH 29/35] Update runtime files --- nsis/README.txt | 2 +- runtime/autoload/rubycomplete.vim | 11 +- runtime/doc/arabic.txt | 9 +- runtime/doc/change.txt | 13 +- runtime/doc/eval.txt | 38 +- runtime/doc/ft_ps1.txt | 2 +- runtime/doc/ft_raku.txt | 2 +- runtime/doc/index.txt | 3 +- runtime/doc/motion.txt | 4 +- runtime/doc/options.txt | 8 +- runtime/doc/repeat.txt | 12 +- runtime/doc/rileft.txt | 4 +- runtime/doc/syntax.txt | 8 +- runtime/doc/tags | 19 +- runtime/doc/testing.txt | 2 +- runtime/doc/todo.txt | 22 +- runtime/doc/vim9.txt | 14 +- runtime/ftplugin/eruby.vim | 4 +- runtime/ftplugin/ruby.vim | 4 +- runtime/gvim.desktop | 6 +- runtime/indent/ruby.vim | 1 + runtime/syntax/8th.vim | 2 +- runtime/syntax/help.vim | 3 +- runtime/syntax/redif.vim | 4 +- runtime/syntax/ruby.vim | 20 +- runtime/syntax/vim.vim | 39 +- runtime/vim.desktop | 6 +- src/po/gvim.desktop.in | 1 - src/po/it.po | 5342 +++++++++++++++++++++-------- src/po/vim.desktop.in | 1 - 30 files changed, 4043 insertions(+), 1563 deletions(-) diff --git a/nsis/README.txt b/nsis/README.txt index 0d01ec86db..2760609e09 100644 --- a/nsis/README.txt +++ b/nsis/README.txt @@ -74,7 +74,7 @@ Unpack the images: cd nsis unzip icons.zip -To build then, enter: +Then build gvim.exe: cd nsis makensis gvim.nsi diff --git a/runtime/autoload/rubycomplete.vim b/runtime/autoload/rubycomplete.vim index e8a1879668..3677b25aeb 100644 --- a/runtime/autoload/rubycomplete.vim +++ b/runtime/autoload/rubycomplete.vim @@ -3,7 +3,7 @@ " Maintainer: Mark Guzman " URL: https://github.com/vim-ruby/vim-ruby " Release Coordinator: Doug Kearns -" Last Change: 2019 Feb 25 +" Last Change: 2020 Apr 12 " ---------------------------------------------------------------------------- " " Ruby IRB/Complete author: Keiju ISHITSUKA(keiju@ishitsuka.com) @@ -501,13 +501,8 @@ class VimRubyCompletion return if rails_base == nil $:.push rails_base unless $:.index( rails_base ) - rails_config = rails_base + "config/" - rails_lib = rails_base + "lib/" - $:.push rails_config unless $:.index( rails_config ) - $:.push rails_lib unless $:.index( rails_lib ) - - bootfile = rails_config + "boot.rb" - envfile = rails_config + "environment.rb" + bootfile = rails_base + "config/boot.rb" + envfile = rails_base + "config/environment.rb" if File.exists?( bootfile ) && File.exists?( envfile ) begin require bootfile diff --git a/runtime/doc/arabic.txt b/runtime/doc/arabic.txt index d1a92df649..28e203836e 100644 --- a/runtime/doc/arabic.txt +++ b/runtime/doc/arabic.txt @@ -1,4 +1,4 @@ -*arabic.txt* For Vim version 8.2. Last change: 2019 May 05 +*arabic.txt* For Vim version 8.2. Last change: 2021 Jun 22 VIM REFERENCE MANUAL by Nadim Shaikli @@ -176,6 +176,13 @@ o Enable Arabic settings [short-cut] and its support is preferred due to its level of offerings. 'arabic' when 'termbidi' is enabled only sets the keymap. + For vertical window isolation while setting 'termbidi' an LTR + vertical separator like "l" or "𝖨" may be used. It may also be + hidden by changing its color to the foreground color: > + :set fillchars=vert:l + :hi VertSplit ctermbg=White +< Note that this is a workaround, not a proper solution. + If, on the other hand, you'd like to be verbose and explicit and are opting not to use the 'arabic' short-cut command, here's what is needed (i.e. if you use ':set arabic' you can skip this section) - diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt index 62a69b78f0..1a9ba7ac55 100644 --- a/runtime/doc/change.txt +++ b/runtime/doc/change.txt @@ -1,4 +1,4 @@ -*change.txt* For Vim version 8.2. Last change: 2021 Jun 10 +*change.txt* For Vim version 8.2. Last change: 2021 Jun 23 VIM REFERENCE MANUAL by Bram Moolenaar @@ -780,12 +780,15 @@ For compatibility with Vi these two exceptions are allowed: "\/{string}/" and "\?{string}?" do the same as "//{string}/r". "\&{string}&" does the same as "//{string}/". *pattern-delimiter* *E146* -Instead of the '/' which surrounds the pattern and replacement string, you -can use any other single-byte character, but not an alphanumeric character, -'\', '"' or '|'. This is useful if you want to include a '/' in the search -pattern or replacement string. Example: > +Instead of the '/' which surrounds the pattern and replacement string, you can +use another single-byte character. This is useful if you want to include a +'/' in the search pattern or replacement string. Example: > :s+/+//+ +You can use most characters, but not an alphanumeric character, '\', '"' or +'|'. In Vim9 script you should not use '#' because it may be recognized as +the start of a comment. + For the definition of a pattern, see |pattern|. In Visual block mode, use |/\%V| in the pattern to have the substitute work in the block only. Otherwise it works on whole lines anyway. diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 8a8431281d..4356381580 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 8.2. Last change: 2021 Jun 07 +*eval.txt* For Vim version 8.2. Last change: 2021 Jun 23 VIM REFERENCE MANUAL by Bram Moolenaar @@ -4862,6 +4862,8 @@ foldclosed({lnum}) *foldclosed()* The result is a Number. If the line {lnum} is in a closed fold, the result is the number of the first line in that fold. If the line {lnum} is not in a closed fold, -1 is returned. + {lnum} is used like with |getline()|. Thus "." is the current + line, "'m" mark m, etc. Can also be used as a |method|: > GetLnum()->foldclosed() @@ -4870,6 +4872,8 @@ foldclosedend({lnum}) *foldclosedend()* The result is a Number. If the line {lnum} is in a closed fold, the result is the number of the last line in that fold. If the line {lnum} is not in a closed fold, -1 is returned. + {lnum} is used like with |getline()|. Thus "." is the current + line, "'m" mark m, etc. Can also be used as a |method|: > GetLnum()->foldclosedend() @@ -4883,6 +4887,8 @@ foldlevel({lnum}) *foldlevel()* returned for lines where folds are still to be updated and the foldlevel is unknown. As a special case the level of the previous line is usually available. + {lnum} is used like with |getline()|. Thus "." is the current + line, "'m" mark m, etc. Can also be used as a |method|: > GetLnum()->foldlevel() @@ -5758,6 +5764,8 @@ getmatches([{win}]) *getmatches()* |getmatches()| is useful in combination with |setmatches()|, as |setmatches()| can restore a list of matches saved by |getmatches()|. + If {win} is specified, use the window with this number or + window ID instead of the current window. Example: > :echo getmatches() < [{'group': 'MyGroup1', 'pattern': 'TODO', @@ -5858,8 +5866,10 @@ getqflist([{what}]) *getqflist()* valid |TRUE|: recognized error message When there is no error list or it's empty, an empty list is - returned. Quickfix list entries with non-existing buffer - number are returned with "bufnr" set to zero. + returned. Quickfix list entries with a non-existing buffer + number are returned with "bufnr" set to zero (Note: some + functions accept buffer number zero for the alternate buffer, + you may need to explicitly check for zero). Useful application: Find pattern matches in multiple files and do something with them: > @@ -6003,12 +6013,12 @@ getregtype([{regname}]) *getregtype()* Can also be used as a |method|: > GetRegname()->getregtype() -gettabinfo([{arg}]) *gettabinfo()* - If {arg} is not specified, then information about all the tab - pages is returned as a |List|. Each List item is a |Dictionary|. - Otherwise, {arg} specifies the tab page number and information - about that one is returned. If the tab page does not exist an - empty List is returned. +gettabinfo([{tabnr}]) *gettabinfo()* + If {tabnr} is not specified, then information about all the + tab pages is returned as a |List|. Each List item is a + |Dictionary|. Otherwise, {tabnr} specifies the tab page + number and information about that one is returned. If the tab + page does not exist an empty List is returned. Each List item is a |Dictionary| with the following entries: tabnr tab page number. @@ -6061,11 +6071,11 @@ gettabwinvar({tabnr}, {winnr}, {varname} [, {def}]) *gettabwinvar()* < Can also be used as a |method|: > GetTabnr()->gettabwinvar(winnr, varname) -gettagstack([{nr}]) *gettagstack()* - The result is a Dict, which is the tag stack of window {nr}. - {nr} can be the window number or the |window-ID|. - When {nr} is not specified, the current window is used. - When window {nr} doesn't exist, an empty Dict is returned. +gettagstack([{winnr}]) *gettagstack()* + The result is a Dict, which is the tag stack of window {winnr}. + {winnr} can be the window number or the |window-ID|. + When {winnr} is not specified, the current window is used. + When window {winnr} doesn't exist, an empty Dict is returned. The returned dictionary contains the following entries: curidx Current index in the stack. When at diff --git a/runtime/doc/ft_ps1.txt b/runtime/doc/ft_ps1.txt index df1480b929..3eb89a4c24 100644 --- a/runtime/doc/ft_ps1.txt +++ b/runtime/doc/ft_ps1.txt @@ -1,4 +1,4 @@ -*ps1.txt* A Windows PowerShell syntax plugin for Vim +*ft_ps1.txt* A Windows PowerShell syntax plugin for Vim Author: Peter Provost License: Apache 2.0 diff --git a/runtime/doc/ft_raku.txt b/runtime/doc/ft_raku.txt index 8439de5727..00b140ee9c 100644 --- a/runtime/doc/ft_raku.txt +++ b/runtime/doc/ft_raku.txt @@ -1,4 +1,4 @@ -*vim-raku.txt* The Raku programming language filetype +*ft_raku.txt* The Raku programming language filetype *vim-raku* diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt index 00db07606f..6fdfb854fc 100644 --- a/runtime/doc/index.txt +++ b/runtime/doc/index.txt @@ -1,4 +1,4 @@ -*index.txt* For Vim version 8.2. Last change: 2021 May 27 +*index.txt* For Vim version 8.2. Last change: 2021 Jun 19 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1312,6 +1312,7 @@ tag command action ~ |:endtry| :endt[ry] end previous :try |:endwhile| :endw[hile] end previous :while |:enew| :ene[w] edit a new, unnamed buffer +|:eval| :ev[al] evaluate an expression and discard the result |:ex| :ex same as ":edit" |:execute| :exe[cute] execute result of expressions |:exit| :exi[t] same as ":xit" diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt index a8ae19c444..b50bd65c5e 100644 --- a/runtime/doc/motion.txt +++ b/runtime/doc/motion.txt @@ -200,9 +200,9 @@ l or *l* *$* ** ** $ or To the end of the line. When a count is given also go [count - 1] lines downward, or as far is possible. - |inclusive| motion. If a count of 2 of larger is + |inclusive| motion. If a count of 2 or larger is given and the cursor is on the last line, that is an - error an the cursor doesn't move. + error and the cursor doesn't move. In Visual mode the cursor goes to just after the last character in the line. When 'virtualedit' is active, "$" may move the cursor diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 19ddd9cb5f..05489d7f63 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 8.2. Last change: 2021 May 31 +*options.txt* For Vim version 8.2. Last change: 2021 Jun 20 VIM REFERENCE MANUAL by Bram Moolenaar @@ -5612,19 +5612,21 @@ A jump table for the options with a short description can be found at |Q_op|. - abbreviations are disabled - 'autoindent' is reset - 'expandtab' is reset - - 'formatoptions' is used like it is empty + - 'hkmap' is reset - 'revins' is reset - 'ruler' is reset - 'showmatch' is reset - - 'smartindent' is reset - 'smarttab' is reset - 'softtabstop' is set to 0 - 'textwidth' is set to 0 - 'wrapmargin' is set to 0 + - 'varsofttabstop' is made empty These options keep their value, but their effect is disabled: - 'cindent' + - 'formatoptions' is used like it is empty - 'indentexpr' - 'lisp' + - 'smartindent' NOTE: When you start editing another file while the 'paste' option is on, settings from the modelines or autocommands may change the settings again, causing trouble when pasting text. You might want to diff --git a/runtime/doc/repeat.txt b/runtime/doc/repeat.txt index c6b4b9e9f6..9e13bdb441 100644 --- a/runtime/doc/repeat.txt +++ b/runtime/doc/repeat.txt @@ -1,4 +1,4 @@ -*repeat.txt* For Vim version 8.2. Last change: 2021 Jun 11 +*repeat.txt* For Vim version 8.2. Last change: 2021 Jun 14 VIM REFERENCE MANUAL by Bram Moolenaar @@ -844,6 +844,16 @@ About the additional commands in debug mode: is reset (because it's not clear what you want to repeat). - When you want to use the Ex command with the same name, prepend a colon: ":cont", ":next", ":finish" (or shorter). + *vim9-debug* +When debugging a compiled :def function, "step" will stop before every +executed line, not every ingle nstruction. Thus it works mostly like a not +compiled function. Access to local variables is limited you can use: > + echo varname +But not much else. +When executing a command that is not a specific bytecode instruction but +executed like a normal Ex command, "step" will stop once in the compiled +context, where local variables can be inspected, and once just before +executing the command. The backtrace shows the hierarchy of function calls, e.g.: >bt ~ diff --git a/runtime/doc/rileft.txt b/runtime/doc/rileft.txt index 81ced875cd..87656175f3 100644 --- a/runtime/doc/rileft.txt +++ b/runtime/doc/rileft.txt @@ -1,4 +1,4 @@ -*rileft.txt* For Vim version 8.2. Last change: 2019 May 05 +*rileft.txt* For Vim version 8.2. Last change: 2021 Jun 13 VIM REFERENCE MANUAL by Avner Lottem @@ -75,7 +75,7 @@ o Invocations o Typing backwards *ins-reverse* ---------------- - In lieu of using full-fledged the 'rightleft' option, one can opt for + In lieu of using the full-fledged 'rightleft' option, one can opt for reverse insertion. When the 'revins' (reverse insert) option is set, inserting happens backwards. This can be used to type right-to-left text. When inserting characters the cursor is not moved and the text diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt index ab35aca7a1..da4bf8e1bc 100644 --- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 8.2. Last change: 2021 May 30 +*syntax.txt* For Vim version 8.2. Last change: 2021 Jun 22 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1420,11 +1420,11 @@ To select syntax highlighting file for Euphoria, as well as for auto-detecting the *.e and *.E file extensions as Euphoria file type, add the following line to your startup file: > - :let filetype_euphoria="euphoria3" + :let filetype_euphoria = "euphoria3" - or +< or > - :let filetype_euphoria="euphoria4" + :let filetype_euphoria = "euphoria4" ERLANG *erlang.vim* *ft-erlang-syntax* diff --git a/runtime/doc/tags b/runtime/doc/tags index 5b1457c896..2d3bb37931 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -1384,6 +1384,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX* +scrollbind various.txt /*+scrollbind* +signs various.txt /*+signs* +smartindent various.txt /*+smartindent* ++sodium various.txt /*+sodium* +sound various.txt /*+sound* +spell various.txt /*+spell* +startuptime various.txt /*+startuptime* @@ -1959,7 +1960,9 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX* :& change.txt /*:&* :&& change.txt /*:&&* :' cmdline.txt /*:'* +:++ vim9.txt /*:++* :, cmdline.txt /*:,* +:-- vim9.txt /*:--* :. cmdline.txt /*:.* :/ cmdline.txt /*:\/* :0file editing.txt /*:0file* @@ -3964,8 +3967,17 @@ E118 eval.txt /*E118* E1187 starting.txt /*E1187* E1188 cmdline.txt /*E1188* E119 eval.txt /*E119* +E1193 options.txt /*E1193* +E1194 options.txt /*E1194* +E1195 options.txt /*E1195* +E1196 options.txt /*E1196* +E1197 options.txt /*E1197* +E1198 options.txt /*E1198* +E1199 options.txt /*E1199* E12 message.txt /*E12* E120 eval.txt /*E120* +E1200 options.txt /*E1200* +E1201 options.txt /*E1201* E121 eval.txt /*E121* E122 eval.txt /*E122* E123 eval.txt /*E123* @@ -6674,6 +6686,8 @@ ft-yaml-syntax syntax.txt /*ft-yaml-syntax* ft-zimbu-plugin filetype.txt /*ft-zimbu-plugin* ft-zsh-syntax syntax.txt /*ft-zsh-syntax* ft_ada.txt ft_ada.txt /*ft_ada.txt* +ft_ps1.txt ft_ps1.txt /*ft_ps1.txt* +ft_raku.txt ft_raku.txt /*ft_raku.txt* ft_rust.txt ft_rust.txt /*ft_rust.txt* ft_sql.txt ft_sql.txt /*ft_sql.txt* ftdetect filetype.txt /*ftdetect* @@ -8602,7 +8616,6 @@ ps1-compiler ft_ps1.txt /*ps1-compiler* ps1-folding ft_ps1.txt /*ps1-folding* ps1-keyword ft_ps1.txt /*ps1-keyword* ps1-syntax ft_ps1.txt /*ps1-syntax* -ps1.txt ft_ps1.txt /*ps1.txt* psql ft_sql.txt /*psql* ptcap.vim syntax.txt /*ptcap.vim* pterm-mouse options.txt /*pterm-mouse* @@ -9677,6 +9690,8 @@ test_feedinput() testing.txt /*test_feedinput()* test_garbagecollect_now() testing.txt /*test_garbagecollect_now()* test_garbagecollect_soon() testing.txt /*test_garbagecollect_soon()* test_getvalue() testing.txt /*test_getvalue()* +test_gui_drop_files() testing.txt /*test_gui_drop_files()* +test_gui_mouse_event() testing.txt /*test_gui_mouse_event()* test_ignore_error() testing.txt /*test_ignore_error()* test_null_blob() testing.txt /*test_null_blob()* test_null_channel() testing.txt /*test_null_channel()* @@ -10146,7 +10161,6 @@ vim-mac intro.txt /*vim-mac* vim-modes intro.txt /*vim-modes* vim-modes-intro intro.txt /*vim-modes-intro* vim-raku ft_raku.txt /*vim-raku* -vim-raku.txt ft_raku.txt /*vim-raku.txt* vim-script-intro usr_41.txt /*vim-script-intro* vim-use intro.txt /*vim-use* vim-variable eval.txt /*vim-variable* @@ -10157,6 +10171,7 @@ vim9 vim9.txt /*vim9* vim9-classes vim9.txt /*vim9-classes* vim9-const vim9.txt /*vim9-const* vim9-curly vim9.txt /*vim9-curly* +vim9-debug repeat.txt /*vim9-debug* vim9-declaration vim9.txt /*vim9-declaration* vim9-declarations usr_46.txt /*vim9-declarations* vim9-differences vim9.txt /*vim9-differences* diff --git a/runtime/doc/testing.txt b/runtime/doc/testing.txt index eef322714e..8dc6dc3ad9 100644 --- a/runtime/doc/testing.txt +++ b/runtime/doc/testing.txt @@ -1,4 +1,4 @@ -*testing.txt* For Vim version 8.2. Last change: 2021 Jun 21 +*testing.txt* For Vim version 8.2. Last change: 2021 Jun 23 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt index 2c20ceaa44..0735598c33 100644 --- a/runtime/doc/todo.txt +++ b/runtime/doc/todo.txt @@ -1,4 +1,4 @@ -*todo.txt* For Vim version 8.2. Last change: 2021 Jun 13 +*todo.txt* For Vim version 8.2. Last change: 2021 Jun 26 VIM REFERENCE MANUAL by Bram Moolenaar @@ -38,10 +38,13 @@ browser use: https://github.com/vim/vim/issues/1234 *known-bugs* -------------------- Known bugs and current work ----------------------- +Memory eaten up by function returning a closure. #8439 +Circular reference. Should garbage collector find unused local variables? + Vim9 - Make everything work: -- Make debugging work - at least per function. - - How to evaluate the stack and variables on the stack? - - FIXME in test_debugger.vim +- possible leak in test_vim9_builtin ? +- use CheckLegacyAndVim9Success(lines) in many more places +- compile get_lambda_tv() in popup_add_timeout() - For builtin functions using tv_get_string*() use check_for_string() to be more strict about the argument type (not a bool). done: balloon_() @@ -49,13 +52,13 @@ Vim9 - Make everything work: map() could check that the return type of the function argument matches the type of the list or dict member. (#8092) Same for other functions, such as searchpair(). -- use CheckLegacyAndVim9Success(lines) in many more places - Test try/catch and throw better, also nested. Test that return inside try/finally jumps to finally and then returns. - Test that a function defined inside a :def function is local to that function, g: functions can be defined and script-local functions cannot be defined. -- compile get_lambda_tv() in popup_add_timeout() +- Unexpected error message when using "var x: any | x.key = 9", because "x" is + given the type number. Can we use VAR_ANY? Once Vim9 is stable: - Add the "vim9script" feature, can use has('vim9script') @@ -287,6 +290,9 @@ Missing filetype test for bashrc, PKGBUILD, etc. Add an option to not fetch terminal codes in xterm, to avoid flicker when t_Co changes. +MS-Windows: instead of "edit with multiple Vims" use "Edit with Vim in +multiple tabs". #8404 + When using ":bwipe!" also get rid of references to be buffer, e.g. in the jumplist and alternate file. @@ -322,6 +328,9 @@ Should also work without any group: Should add a match/str/list/pos method that also returns the test and position of submatches. #8355 +Syntax highlight for a region does not work with a "nextgroup" if the start +match is empty. #8449 + Check out PR #543 (Roland Puntaier). Patch for multibyte characters in langmap and applying a mapping on them. (Christian Brabandt, 2015 Jun 12, update July 25) @@ -346,6 +355,7 @@ The buffer list and windows are locked, no changes possible Add a ModeChanged autocommand that has an argument indicating the old and new mode, as what's returned from mode(). Also used for switching Terminal mode. +#8360, #7863, #7363 Matchparen doesn't remove highlight after undo. (#7054) Is OK when syntax HL is active. diff --git a/runtime/doc/vim9.txt b/runtime/doc/vim9.txt index 6ca1d74a99..e8d97a9c3c 100644 --- a/runtime/doc/vim9.txt +++ b/runtime/doc/vim9.txt @@ -1,4 +1,4 @@ -*vim9.txt* For Vim version 8.2. Last change: 2021 Jun 12 +*vim9.txt* For Vim version 8.2. Last change: 2021 Jun 25 VIM REFERENCE MANUAL by Bram Moolenaar @@ -457,7 +457,7 @@ which is similar to JavaScript: > var Lambda = (arg) => expression No line break is allowed in the arguments of a lambda up to and including the -"=>" (so that Vim can tell the difference between an expression in parenthesis +"=>" (so that Vim can tell the difference between an expression in parentheses and lambda arguments). This is OK: > filter(list, (k, v) => v > 0) @@ -937,6 +937,16 @@ The 'gdefault' option value is not used. You may also find this wiki useful. It was written by an early adopter of Vim9 script: https://github.com/lacygoill/wiki/blob/master/vim/vim9.md + *:++* *:--* +The ++ and -- commands have been added. They are very similar to adding or +subtracting one: > + ++var + var += 1 + --var + var -= 1 + +Using ++var or --var in an expression is not supported yet. + ============================================================================== 3. New style functions *fast-functions* diff --git a/runtime/ftplugin/eruby.vim b/runtime/ftplugin/eruby.vim index 3c18bada78..e67b00b278 100644 --- a/runtime/ftplugin/eruby.vim +++ b/runtime/ftplugin/eruby.vim @@ -3,7 +3,7 @@ " Maintainer: Tim Pope " URL: https://github.com/vim-ruby/vim-ruby " Release Coordinator: Doug Kearns -" Last Change: 2019 Jan 06 +" Last Change: 2020 Jun 28 " Only do this when not done yet for this buffer if exists("b:did_ftplugin") @@ -118,7 +118,7 @@ endif " TODO: comments= setlocal commentstring=<%#%s%> -let b:undo_ftplugin = "setl cms< " +let b:undo_ftplugin = "setl cms< " . \ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin let &cpo = s:save_cpo diff --git a/runtime/ftplugin/ruby.vim b/runtime/ftplugin/ruby.vim index b4a8eaa0d8..4a476fd8cf 100644 --- a/runtime/ftplugin/ruby.vim +++ b/runtime/ftplugin/ruby.vim @@ -3,7 +3,7 @@ " Maintainer: Tim Pope " URL: https://github.com/vim-ruby/vim-ruby " Release Coordinator: Doug Kearns -" Last Change: 2019 Nov 06 +" Last Change: 2020 Feb 13 if (exists("b:did_ftplugin")) finish @@ -112,7 +112,7 @@ else if !exists('g:ruby_default_path') if has("ruby") && has("win32") ruby ::VIM::command( 'let g:ruby_default_path = split("%s",",")' % $:.join(%q{,}) ) - elseif executable('ruby') + elseif executable('ruby') && !empty($HOME) let g:ruby_default_path = s:query_path($HOME) else let g:ruby_default_path = map(split($RUBYLIB,':'), 'v:val ==# "." ? "" : v:val') diff --git a/runtime/gvim.desktop b/runtime/gvim.desktop index 8da62cac4e..b07679c0bc 100644 --- a/runtime/gvim.desktop +++ b/runtime/gvim.desktop @@ -5,6 +5,7 @@ Name[de]=GVim Name[eo]=GVim Name[fr]=GVim +Name[it]=GVim Name[ru]=GVim Name[sr]=GVim Name[tr]=GVim @@ -13,6 +14,7 @@ Name=GVim GenericName[de]=Texteditor GenericName[eo]=Tekstoredaktilo GenericName[fr]=Éditeur de texte +GenericName[it]=Editor di testi GenericName[ja]=テキストエディタ GenericName[ru]=Текстовый редактор GenericName[sr]=Едитор текст @@ -22,6 +24,7 @@ GenericName=Text Editor Comment[de]=Textdateien bearbeiten Comment[eo]=Redakti tekstajn dosierojn Comment[fr]=Éditer des fichiers texte +Comment[it]=Edita file di testo Comment[ja]=テキストファイルを編集します Comment[ru]=Редактирование текстовых файлов Comment[sr]=Уређујте текст фајлове @@ -60,7 +63,6 @@ Comment[hr]=Uređivanje tekstualne datoteke Comment[hu]=Szövegfájlok szerkesztése Comment[id]=Edit file teks Comment[is]=Vinna með textaskrár -Comment[it]=Modifica file di testo Comment[kn]=ಪಠ್ಯ ಕಡತಗಳನ್ನು ಸಂಪಾದಿಸು Comment[ko]=텍스트 파일을 편집합니다 Comment[lt]=Redaguoti tekstines bylas @@ -102,6 +104,7 @@ Type=Application Keywords[de]=Text;Editor; Keywords[eo]=Teksto;redaktilo; Keywords[fr]=Texte;éditeur; +Keywords[it]=Testo;editor; Keywords[ja]=テキスト;エディタ; Keywords[ru]=текст;текстовый редактор; Keywords[sr]=Текст;едитор; @@ -111,6 +114,7 @@ Keywords=Text;editor; Icon[de]=gvim Icon[eo]=gvim Icon[fr]=gvim +Icon[it]=gvim Icon[ru]=gvim Icon[sr]=gvim Icon=gvim diff --git a/runtime/indent/ruby.vim b/runtime/indent/ruby.vim index 657aa763b1..2a267fdab3 100644 --- a/runtime/indent/ruby.vim +++ b/runtime/indent/ruby.vim @@ -4,6 +4,7 @@ " Previous Maintainer: Nikolai Weibull " URL: https://github.com/vim-ruby/vim-ruby " Release Coordinator: Doug Kearns +" Last Change: 2021 Feb 03 " 0. Initialization {{{1 " ================= diff --git a/runtime/syntax/8th.vim b/runtime/syntax/8th.vim index ddc1084c9f..d543489b72 100644 --- a/runtime/syntax/8th.vim +++ b/runtime/syntax/8th.vim @@ -293,7 +293,7 @@ syn region eighthComment start="\zs\\" end="$" contains=eighthTodo " Define the default highlighting. if !exists("did_eighth_syntax_inits") let did_eighth_syntax_inits=1 - " The default methods for highlighting. Can be overriden later. + " The default methods for highlighting. Can be overridden later. hi def link eighthTodo Todo hi def link eighthOperators Operator hi def link eighthMath Number diff --git a/runtime/syntax/help.vim b/runtime/syntax/help.vim index a4c34cd466..2516967807 100644 --- a/runtime/syntax/help.vim +++ b/runtime/syntax/help.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: Vim help file " Maintainer: Bram Moolenaar (Bram@vim.org) -" Last Change: 2020 Jul 28 +" Last Change: 2021 Jun 13 " Quit when a (custom) syntax file was already loaded if exists("b:current_syntax") @@ -76,6 +76,7 @@ syn match helpSpecial "\[line]" syn match helpSpecial "\[count]" syn match helpSpecial "\[offset]" syn match helpSpecial "\[cmd]" +syn match helpNormal "vim9\[cmd]" syn match helpSpecial "\[num]" syn match helpSpecial "\[+num]" syn match helpSpecial "\[-num]" diff --git a/runtime/syntax/redif.vim b/runtime/syntax/redif.vim index 9fa9064a86..198d5c7530 100644 --- a/runtime/syntax/redif.vim +++ b/runtime/syntax/redif.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: ReDIF " Maintainer: Axel Castellane -" Last Change: 2013 April 17 +" Last Change: 2021 Jun 17 " Original Author: Axel Castellane " Source: http://openlib.org/acmes/root/docu/redif_1.html " File Extension: rdf @@ -932,7 +932,7 @@ highlight redifFieldDeprecated term=undercurl cterm=undercurl gui=undercurl guis " Sync: The template-type (ReDIF-Paper, ReDIF-Archive, etc.) influences which " fields can follow. Thus sync must search backwards for it. " -" I would like to simply ask VIM to search backward for the first occurence of +" I would like to simply ask VIM to search backward for the first occurrence of " /^Template-Type:/, but it does not seem to be possible, so I have to start " from the beginning of the file... This might slow down a lot for files that " contain a lot of Template-Type statements. diff --git a/runtime/syntax/ruby.vim b/runtime/syntax/ruby.vim index 0de63d0ef3..13d6d9efd8 100644 --- a/runtime/syntax/ruby.vim +++ b/runtime/syntax/ruby.vim @@ -3,7 +3,7 @@ " Maintainer: Doug Kearns " URL: https://github.com/vim-ruby/vim-ruby " Release Coordinator: Doug Kearns -" Last Change: 2019 Jul 13 +" Last Change: 2021 Jun 06 " ---------------------------------------------------------------------------- " " Previous Maintainer: Mirko Nasato @@ -66,7 +66,7 @@ endfunction com! -nargs=* SynFold call s:run_syntax_fold() " Not-Top Cluster {{{1 -syn cluster rubyNotTop contains=@rubyCommentNotTop,@rubyStringNotTop,@rubyRegexpSpecial,@rubyDeclaration,@rubyExceptionHandler,@rubyClassOperator,rubyConditional,rubyModuleName,rubyClassName,rubySymbolDelimiter,rubyParentheses +syn cluster rubyNotTop contains=@rubyCommentNotTop,@rubyStringNotTop,@rubyRegexpSpecial,@rubyDeclaration,@rubyExceptionHandler,@rubyClassOperator,rubyConditional,rubyModuleName,rubyClassName,rubySymbolDelimiter,rubyParentheses,@Spell " Whitespace Errors {{{1 if exists("ruby_space_errors") @@ -92,7 +92,7 @@ if exists("ruby_operators") || exists("ruby_pseudo_operators") syn match rubyBooleanOperator "\%(\w\|[^\x00-\x7F]\)\@1\@!\|-=\|/=\|\*\*=\|\*=\|&&=\|&=\|||=\||=\|%=\|+=\|>>=\|<<=\|\^=" - syn match rubyAssignmentOperator "=>\@!" containedin=rubyBlockParameterList " TODO: this is inelegant + syn match rubyAssignmentOperator "=>\@!" contained containedin=rubyBlockParameterList " TODO: this is inelegant syn match rubyEqualityOperator "===\|==\|!=\|!\~\|=\~" syn region rubyBracketOperator matchgroup=rubyOperator start="\%(\%(\w\|[^\x00-\x7F]\)[?!]\=\|[]})]\)\@2<=\[" end="]" contains=ALLBUT,@rubyNotTop @@ -134,10 +134,10 @@ syn match rubyCurlyBraceEscape "\\[{}]" contained display syn match rubyAngleBracketEscape "\\[<>]" contained display syn match rubySquareBracketEscape "\\[[\]]" contained display -syn region rubyNestedParentheses start="(" skip="\\\\\|\\)" matchgroup=rubyString end=")" transparent contained -syn region rubyNestedCurlyBraces start="{" skip="\\\\\|\\}" matchgroup=rubyString end="}" transparent contained -syn region rubyNestedAngleBrackets start="<" skip="\\\\\|\\>" matchgroup=rubyString end=">" transparent contained -syn region rubyNestedSquareBrackets start="\[" skip="\\\\\|\\\]" matchgroup=rubyString end="\]" transparent contained +syn region rubyNestedParentheses start="(" skip="\\\\\|\\)" end=")" transparent contained +syn region rubyNestedCurlyBraces start="{" skip="\\\\\|\\}" end="}" transparent contained +syn region rubyNestedAngleBrackets start="<" skip="\\\\\|\\>" end=">" transparent contained +syn region rubyNestedSquareBrackets start="\[" skip="\\\\\|\\\]" end="\]" transparent contained syn cluster rubySingleCharEscape contains=rubyBackslashEscape,rubyQuoteEscape,rubySpaceEscape,rubyParenthesisEscape,rubyCurlyBraceEscape,rubyAngleBracketEscape,rubySquareBracketEscape syn cluster rubyNestedBrackets contains=rubyNested.\+ @@ -193,7 +193,7 @@ SynFold ':' syn region rubySymbol matchgroup=rubySymbolDelimiter start="[]})\"': syn match rubyCapitalizedMethod "\%(\%(^\|[^.]\)\.\s*\)\@\%(\s*(\)\@=" -syn region rubyParentheses start="(" end=")" contains=ALLBUT,@rubyNotTop containedin=rubyBlockParameterList +syn region rubyParentheses start="(" end=")" contains=ALLBUT,@rubyNotTop contained containedin=rubyBlockParameterList syn region rubyBlockParameterList start="\%(\%(\\|{\)\_s*\)\@32<=|" end="|" contains=ALLBUT,@rubyNotTop,@rubyProperOperator if exists('ruby_global_variable_error') @@ -332,7 +332,7 @@ SynFold '<<' syn region rubyString start=+\%(\%(class\|::\|\.\@1 -" Last Change: May 20, 2021 -" Version: 8.2-03 +" Last Change: June 20, 2021 +" Version: 8.2-06 " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_VIM " Automatically generated keyword lists: {{{1 @@ -19,12 +19,12 @@ syn keyword vimTodo contained COMBAK FIXME TODO XXX syn cluster vimCommentGroup contains=vimTodo,@Spell " regular vim commands {{{2 -syn keyword vimCommand contained a ar[gs] argl[ocal] ba[ll] bl[ast] brea[k] buffers ca caf[ter] cbo[ttom] cex[pr] cgete[xpr] cl[ist] cn[ext] colo[rscheme] cons[t] cs d[elete] delel delf[unction] dif[fupdate] difft[his] dli[st] ds[earch] echoc[onsole] em[enu] endw[hile] export filt[er] fo[ld] fu[nction] gvim helpt[ags] iabc[lear] import isp[lit] keepa l[ist] laf[ter] lbel[ow] lcscope lf[ile] lgr[ep] lli[st] lnf[ile] lol[der] lt[ag] lw[indow] menut[ranslate] mkvie[w] nbc[lose] noh[lsearch] ol[dfiles] pa[ckadd] po[p] prof[ile] pta[g] ptr[ewind] py3f[ile] pythonx quita[ll] redraws[tatus] rew[ind] rubyf[ile] sIg sa[rgument] sba[ll] sbr[ewind] scl scscope sfir[st] sgl sic sin sm[ap] snoreme spelld[ump] spellw[rong] srg sta[g] sts[elect] sus[pend] syncbind tabN[ext] tabl[ast] tabr[ewind] tcld[o] tj[ump] tlu tno[remap] tu[nmenu] undol[ist] v vie[w] vmapc[lear] wa[ll] winp[os] wundo xme xr[estore] +syn keyword vimCommand contained a ar[gs] argl[ocal] ba[ll] bl[ast] brea[k] buffers ca caf[ter] cbo[ttom] cex[pr] cgete[xpr] cl[ist] cn[ext] colo[rscheme] cons[t] cs d[elete] delel delf[unction] dif[fupdate] difft[his] dli[st] ds[earch] echoc[onsole] em[enu] endw[hile] export filt[er] fo[ld] fu[nction] gvim helpt[ags] iabc[lear] import isp[lit] keepa l[ist] laf[ter] lbel[ow] lcscope lf[ile] lgr[ep] lli[st] lnf[ile] lol[der] lt[ag] lw[indow] menut[ranslate] mkvie[w] nbc[lose] noh[lsearch] ol[dfiles] pa[ckadd] po[p] prof[ile] pta[g] ptr[ewind] py3f[ile] pythonx quita[ll] redraws[tatus] rew[ind] rubyf[ile] sIg sa[rgument] sba[ll] sbr[ewind] scl scscope sfir[st] sgl sic sin sm[ap] snoreme spelld[ump] spellw[rong] srg sta[g] sts[elect] sus[pend] syncbind tabN[ext] tabl[ast] tabr[ewind] tcld[o] tj[ump] tlu tno[remap] tu[nmenu] undol[ist] v vie[w] viu[sage] wa[ll] winp[os] wundo xme xr[estore] syn keyword vimCommand contained ab arga[dd] argu[ment] bad[d] bm[odified] breaka[dd] bun[load] cabc[lear] cal[l] cc cf[ile] changes cla[st] cnew[er] com cope[n] cscope debug delep dell diffg[et] dig[raphs] do dsp[lit] echoe[rr] en[dif] ene[w] exu[sage] fin[d] foldc[lose] g h[elp] hi if in iuna[bbrev] keepalt la[st] lan[guage] lbo[ttom] ld[o] lfdo lgrepa[dd] lma lo[adview] lop[en] lua m[ove] mes[sages] mod[e] nbs[tart] nor omapc[lear] packl[oadall] popu[p] profd[el] ptf[irst] pts[elect] py3f[ile] pyx r[ead] redrawt[abline] ri[ght] rundo sIl sal[l] sbf[irst] sc scp se[t] sg sgn sie sip sme snoremenu spelli[nfo] spr[evious] sri star[tinsert] substitutepattern sv[iew] syntime tabc[lose] tabm[ove] tabs tclf[ile] tl[ast] tlunmenu to[pleft] tunma[p] unh[ide] var vim9[cmd] vne[w] wh[ile] wn[ext] wv[iminfo] xmenu xunme syn keyword vimCommand contained abc[lear] argd[elete] as[cii] balt bn[ext] breakd[el] bw[ipeout] cabo[ve] cat[ch] ccl[ose] cfdo chd[ir] class cnf[ile] comc[lear] cp[revious] cstag debugg[reedy] deletel delm[arks] diffo[ff] dir doau e[dit] echom[sg] enddef eval f[ile] fina[lly] foldd[oopen] go[to] ha[rdcopy] hid[e] ij[ump] inor j[oin] keepj[umps] lab[ove] lat lc[d] le[ft] lfir[st] lh[elpgrep] lmak[e] loadk lp[revious] luado ma[rk] mk[exrc] mz[scheme] new nore on[ly] pc[lose] pp[op] promptf[ind] ptj[ump] pu[t] py[thon] pyxdo rec[over] reg[isters] rightb[elow] rv[iminfo] sIn san[dbox] sbl[ast] scI scr[iptnames] setf[iletype] sgI sgp sig sir smenu so[urce] spellr[are] sr srl startg[replace] substituterepeat sw[apname] t tabd[o] tabn[ext] tags te[aroff] tlm tm[enu] tp[revious] type unl ve[rsion] vim9s[cript] vs[plit] win[size] wp[revious] x[it] xnoreme xunmenu -syn keyword vimCommand contained abo[veleft] argdo au bd[elete] bo[tright] breakl[ist] cN[ext] cad[dbuffer] cb[uffer] cd cfir[st] che[ckpath] cle[arjumps] cnor comp[iler] cpf[ile] cun def deletep delp diffp[atch] disa[ssemble] doaut ea echon endf[unction] ex files fini[sh] folddoc[losed] gr[ep] helpc[lose] his[tory] il[ist] interface ju[mps] keepp[atterns] lad[dexpr] later lch[dir] lefta[bove] lg[etfile] lhi[story] lmapc[lear] loadkeymap lpf[ile] luafile mak[e] mks[ession] mzf[ile] nmapc[lear] nos[wapfile] opt[ions] pe[rl] pre[serve] promptr[epl] ptl[ast] pw[d] pydo pyxfile red[o] res[ize] ru[ntime] sI sIp sav[eas] sbm[odified] sce scripte[ncoding] setg[lobal] sgc sgr sign sl[eep] smile sor[t] spellr[epall] srI srn startr[eplace] sun[hide] sy tN[ext] tabe[dit] tabnew tc[l] ter[minal] tlmenu tma[p] tr[ewind] u[ndo] unlo[ckvar] verb[ose] vim[grep] wN[ext] winc[md] wq xa[ll] xnoremenu xwininfo -syn keyword vimCommand contained addd arge[dit] bN[ext] bel[owright] bp[revious] bro[wse] cNf[ile] cadde[xpr] cbe[fore] cdo cg[etfile] checkt[ime] clo[se] co[py] con[tinue] cq[uit] cuna[bbrev] defc[ompile] deletl dep diffpu[t] dj[ump] dp earlier el[se] endfo[r] exi[t] filet fir[st] foldo[pen] grepa[dd] helpf[ind] i imapc[lear] intro k lN[ext] laddb[uffer] lb[uffer] lcl[ose] leg[acy] lgetb[uffer] ll lne[xt] loc[kmarks] lr[ewind] lv[imgrep] marks mksp[ell] n[ext] noa nu[mber] ownsyntax ped[it] prev[ious] ps[earch] ptn[ext] py3 pyf[ile] q[uit] redi[r] ret[ab] rub[y] sIc sIr sbN[ext] sbn[ext] scg scriptv[ersion] setl[ocal] sge sh[ell] sil[ent] sla[st] sn[ext] sp[lit] spellr[rare] src srp stj[ump] sunme syn ta[g] tabf[ind] tabo[nly] tcd tf[irst] tln tmapc[lear] try una[bbreviate] uns[ilent] vert[ical] vimgrepa[dd] w[rite] windo wqa[ll] xmapc[lear] xprop y[ank] -syn keyword vimCommand contained al[l] argg[lobal] b[uffer] bf[irst] br[ewind] bufdo c[hange] caddf[ile] cbel[ow] ce[nter] cgetb[uffer] chi[story] cmapc[lear] col[der] conf[irm] cr[ewind] cw[indow] delc[ommand] deletp di[splay] diffs[plit] dl dr[op] ec elsei[f] endt[ry] exp filetype fix[del] for gui helpg[rep] ia imp is[earch] kee[pmarks] lNf[ile] laddf[ile] lbe[fore] lcs lex[pr] lgete[xpr] lla[st] lnew[er] lockv[ar] ls lvimgrepa[dd] mat[ch] mkv[imrc] nb[key] noautocmd o[pen] p[rint] perld[o] pro ptN[ext] ptp[revious] py3do python3 qa[ll] redr[aw] retu[rn] rubyd[o] sIe sN[ext] sb[uffer] sbp[revious] sci scs sf[ind] sgi si sim[alt] sm[agic] sno[magic] spe[llgood] spellu[ndo] sre[wind] st[op] stopi[nsert] sunmenu sync tab tabfir[st] tabp[revious] tch[dir] th[row] tlnoremenu tn[ext] ts[elect] undoj[oin] up[date] vi[sual] viu[sage] +syn keyword vimCommand contained abo[veleft] argdo au bd[elete] bo[tright] breakl[ist] cN[ext] cad[dbuffer] cb[uffer] cd cfir[st] che[ckpath] cle[arjumps] cnor comp[iler] cpf[ile] cun def deletep delp diffp[atch] disa[ssemble] doaut ea echon endf[unction] ex files fini[sh] folddoc[losed] gr[ep] helpc[lose] his[tory] il[ist] interface ju[mps] keepp[atterns] lad[dexpr] later lch[dir] lefta[bove] lg[etfile] lhi[story] lmapc[lear] loadkeymap lpf[ile] luafile mak[e] mks[ession] mzf[ile] nmapc[lear] nos[wapfile] opt[ions] pe[rl] pre[serve] promptr[epl] ptl[ast] pw[d] pydo pyxfile red[o] res[ize] ru[ntime] sI sIp sav[eas] sbm[odified] sce scripte[ncoding] setg[lobal] sgc sgr sign sl[eep] smile sor[t] spellr[epall] srI srn startr[eplace] sun[hide] sy tN[ext] tabe[dit] tabnew tc[d] ter[minal] tlmenu tma[p] tr[ewind] u[ndo] unlo[ckvar] verb[ose] vim[grep] wN[ext] winc[md] wq xa[ll] xnoremenu xwininfo +syn keyword vimCommand contained addd arge[dit] bN[ext] bel[owright] bp[revious] bro[wse] cNf[ile] cadde[xpr] cbe[fore] cdo cg[etfile] checkt[ime] clo[se] co[py] con[tinue] cq[uit] cuna[bbrev] defc[ompile] deletl dep diffpu[t] dj[ump] dp earlier el[se] endfo[r] exi[t] filet fir[st] foldo[pen] grepa[dd] helpf[ind] i imapc[lear] intro k lN[ext] laddb[uffer] lb[uffer] lcl[ose] leg[acy] lgetb[uffer] ll lne[xt] loc[kmarks] lr[ewind] lv[imgrep] marks mksp[ell] n[ext] noa nu[mber] ownsyntax ped[it] prev[ious] ps[earch] ptn[ext] py3 pyf[ile] q[uit] redi[r] ret[ab] rub[y] sIc sIr sbN[ext] sbn[ext] scg scriptv[ersion] setl[ocal] sge sh[ell] sil[ent] sla[st] sn[ext] sp[lit] spellr[rare] src srp stj[ump] sunme syn ta[g] tabf[ind] tabo[nly] tch[dir] tf[irst] tln tmapc[lear] try una[bbreviate] uns[ilent] vert[ical] vimgrepa[dd] w[rite] windo wqa[ll] xmapc[lear] xprop y[ank] +syn keyword vimCommand contained al[l] argg[lobal] b[uffer] bf[irst] br[ewind] bufdo c[hange] caddf[ile] cbel[ow] ce[nter] cgetb[uffer] chi[story] cmapc[lear] col[der] conf[irm] cr[ewind] cw[indow] delc[ommand] deletp di[splay] diffs[plit] dl dr[op] ec elsei[f] endt[ry] exp filetype fix[del] for gui helpg[rep] ia imp is[earch] kee[pmarks] lNf[ile] laddf[ile] lbe[fore] lcs lex[pr] lgete[xpr] lla[st] lnew[er] lockv[ar] ls lvimgrepa[dd] mat[ch] mkv[imrc] nb[key] noautocmd o[pen] p[rint] perld[o] pro ptN[ext] ptp[revious] py3do python3 qa[ll] redr[aw] retu[rn] rubyd[o] sIe sN[ext] sb[uffer] sbp[revious] sci scs sf[ind] sgi si sim[alt] sm[agic] sno[magic] spe[llgood] spellu[ndo] sre[wind] st[op] stopi[nsert] sunmenu sync tab tabfir[st] tabp[revious] tcl th[row] tlnoremenu tn[ext] ts[elect] undoj[oin] up[date] vi[sual] syn match vimCommand contained "\" syn keyword vimStdPlugin contained Arguments Asm Break Cfilter Clear Continue DiffOrig Evaluate Finish Gdb Lfilter Man N[ext] Over P[rint] Program Run S Source Step Stop Termdebug TermdebugCommand TOhtml Winbar XMLent XMLns @@ -78,12 +78,12 @@ syn match vimHLGroup contained "Conceal" syn case match " Function Names {{{2 -syn keyword vimFuncName contained abs argc assert_equal assert_match atan browsedir bufname byteidxcomp charcol ch_evalexpr ch_logfile ch_sendraw complete cos deepcopy echoraw eventhandler exp feedkeys findfile fmod foldlevel funcref getbufline getcharpos getcmdwintype getenv getftype getmarklist getqflist gettabvar getwinpos glob2regpat hasmapto hlexists index inputsave isdirectory job_getchannel job_stop json_encode line listener_flush luaeval mapset matchdelete matchstr mkdir or popup_clear popup_filter_yesno popup_hide popup_notification prevnonblank prompt_setprompt prop_remove prop_type_list pyxeval readdirex reltime remote_peek rename rubyeval screenpos searchdecl serverlist setcharsearch setline setreg sha256 sign_getplaced sign_unplace slice sound_playfile sqrt str2nr strftime strpart submatch synID systemlist taglist term_dumpload term_getcursor term_getstatus term_scrape term_setrestore test_autochdir test_ignore_error test_null_job test_override test_srand_seed timer_start tr undofile visualmode win_execute winheight winnr win_splitmove -syn keyword vimFuncName contained acos argidx assert_equalfile assert_nobeep atan2 bufadd bufnr call charidx ch_evalraw ch_open ch_setoptions complete_add cosh delete empty executable expand filereadable flatten fnameescape foldtext function getbufvar getcharsearch getcompletion getfontname getimstatus getmatches getreg gettabwinvar getwinposx globpath histadd hlID input inputsecret isinf job_info join keys line2byte listener_remove map match matchend matchstrpos mode pathshorten popup_close popup_findinfo popup_list popup_setoptions printf prop_add prop_type_add pum_getpos rand readfile reltimefloat remote_read repeat screenattr screenrow searchpair setbufline setcmdpos setloclist settabvar shellescape sign_jump sign_unplacelist sort sound_stop srand strcharlen strgetchar strptime substitute synIDattr tabpagebuflist tan term_dumpwrite term_getjob term_gettitle term_sendkeys term_setsize test_feedinput test_null_blob test_null_list test_refcount test_unknown timer_stop trim undotree wildmenumode win_findbuf win_id2tabwin winrestcmd winwidth -syn keyword vimFuncName contained add arglistid assert_exception assert_notequal balloon_gettext bufexists bufwinid ceil ch_canread ch_getbufnr ch_read ch_status complete_check count deletebufline environ execute expandcmd filewritable flattennew fnamemodify foldtextresult garbagecollect getchangelist getcmdline getcurpos getfperm getjumplist getmousepos getreginfo gettagstack getwinposy has histdel hostname inputdialog insert islocked job_setoptions js_decode len lispindent localtime maparg matchadd matchfuzzy max mzeval perleval popup_create popup_findpreview popup_locate popup_settext prompt_getprompt prop_clear prop_type_change pumvisible range reduce reltimestr remote_send resolve screenchar screenstring searchpairpos setbufvar setcursorcharpos setmatches settabwinvar shiftwidth sign_place simplify sound_clear spellbadword state strcharpart stridx strridx swapinfo synIDtrans tabpagenr tanh term_getaltscreen term_getline term_gettty term_setansicolors term_start test_garbagecollect_now test_null_channel test_null_partial test_scrollbar test_void timer_stopall trunc uniq winbufnr win_getid win_id2win winrestview wordcount -syn keyword vimFuncName contained and argv assert_fails assert_notmatch balloon_show buflisted bufwinnr changenr ch_close ch_getjob ch_readblob cindent complete_info cscope_connection did_filetype escape exepath extend filter float2nr foldclosed foreground get getchar getcmdpos getcursorcharpos getfsize getline getpid getregtype gettext getwinvar has_key histget iconv inputlist interrupt isnan job_start js_encode libcall list2str log mapcheck matchaddpos matchfuzzypos menu_info nextnonblank popup_atcursor popup_dialog popup_getoptions popup_menu popup_show prompt_setcallback prop_find prop_type_delete py3eval readblob reg_executing remote_expr remote_startserver reverse screenchars search searchpos setcellwidths setenv setpos settagstack sign_define sign_placelist sin soundfold spellsuggest str2float strchars string strtrans swapname synstack tabpagewinnr tempname term_getansicolors term_getscrolled terminalprops term_setapi term_wait test_garbagecollect_soon test_null_dict test_null_string test_setmouse timer_info tolower type values wincol win_gettype winlayout winsaveview writefile -syn keyword vimFuncName contained append asin assert_false assert_report balloon_split bufload byte2line char2nr ch_close_in ch_info ch_readraw clearmatches confirm cursor diff_filler eval exists extendnew finddir floor foldclosedend fullcommand getbufinfo getcharmod getcmdtype getcwd getftime getloclist getpos gettabinfo getwininfo glob haslocaldir histnr indent inputrestore invert items job_status json_decode libcallnr listener_add log10 mapnew matcharg matchlist min nr2char popup_beval popup_filter_menu popup_getpos popup_move pow prompt_setinterrupt prop_list prop_type_get pyeval readdir reg_recording remote_foreground remove round screencol searchcount server2client setcharpos setfperm setqflist setwinvar sign_getdefined sign_undefine sinh sound_playevent split str2list strdisplaywidth strlen strwidth synconcealed system tagfiles term_dumpdiff term_getattr term_getsize term_list term_setkill test_alloc_fail test_getvalue test_null_function test_option_not_set test_settime timer_pause toupper typename virtcol windowsversion win_gotoid winline win_screenpos xor -syn keyword vimFuncName contained appendbufline assert_beeps assert_inrange assert_true browse bufloaded byteidx charclass chdir ch_log ch_sendexpr col copy debugbreak diff_hlID +syn keyword vimFuncName contained abs argc assert_equal assert_match atan browsedir bufname byteidxcomp charcol ch_evalexpr ch_logfile ch_sendraw complete cos deepcopy echoraw executable expand filereadable flatten fnameescape foldtext function getbufvar getcharsearch getcmdwintype getenv getftype getmarklist getqflist gettabvar getwinpos glob2regpat hasmapto hlexists index inputsave isdirectory job_getchannel job_stop json_encode line listener_flush luaeval mapset matchdelete matchstr mkdir or popup_clear popup_filter_yesno popup_hide popup_notification prevnonblank prompt_setprompt prop_remove prop_type_list pyxeval readdirex reltime remote_peek rename rubyeval screenpos searchdecl serverlist setcharsearch setline setreg sha256 sign_getplaced sign_unplace slice sound_playfile sqrt str2nr strftime strpart submatch synID systemlist taglist term_dumpload term_getcursor term_getstatus term_scrape term_setrestore test_autochdir test_ignore_error test_null_job test_override test_srand_seed timer_start tr undofile visualmode win_execute winheight winnr win_splitmove +syn keyword vimFuncName contained acos argidx assert_equalfile assert_nobeep atan2 bufadd bufnr call charidx ch_evalraw ch_open ch_setoptions complete_add cosh delete empty execute expandcmd filewritable flattennew fnamemodify foldtextresult garbagecollect getchangelist getcharstr getcompletion getfontname getimstatus getmatches getreg gettabwinvar getwinposx globpath histadd hlID input inputsecret isinf job_info join keys line2byte listener_remove map match matchend matchstrpos mode pathshorten popup_close popup_findinfo popup_list popup_setoptions printf prop_add prop_type_add pum_getpos rand readfile reltimefloat remote_read repeat screenattr screenrow searchpair setbufline setcmdpos setloclist settabvar shellescape sign_jump sign_unplacelist sort sound_stop srand strcharlen strgetchar strptime substitute synIDattr tabpagebuflist tan term_dumpwrite term_getjob term_gettitle term_sendkeys term_setsize test_feedinput test_null_blob test_null_list test_refcount test_unknown timer_stop trim undotree wildmenumode win_findbuf win_id2tabwin winrestcmd winwidth +syn keyword vimFuncName contained add arglistid assert_exception assert_notequal balloon_gettext bufexists bufwinid ceil ch_canread ch_getbufnr ch_read ch_status complete_check count deletebufline environ exepath extend filter float2nr foldclosed foreground get getchar getcmdline getcurpos getfperm getjumplist getmousepos getreginfo gettagstack getwinposy has histdel hostname inputdialog insert islocked job_setoptions js_decode len lispindent localtime maparg matchadd matchfuzzy max mzeval perleval popup_create popup_findpreview popup_locate popup_settext prompt_getprompt prop_clear prop_type_change pumvisible range reduce reltimestr remote_send resolve screenchar screenstring searchpairpos setbufvar setcursorcharpos setmatches settabwinvar shiftwidth sign_place simplify sound_clear spellbadword state strcharpart stridx strridx swapinfo synIDtrans tabpagenr tanh term_getaltscreen term_getline term_gettty term_setansicolors term_start test_garbagecollect_now test_null_channel test_null_partial test_scrollbar test_void timer_stopall trunc uniq winbufnr win_getid win_id2win winrestview wordcount +syn keyword vimFuncName contained and argv assert_fails assert_notmatch balloon_show buflisted bufwinnr changenr ch_close ch_getjob ch_readblob cindent complete_info cscope_connection did_filetype escape exists extendnew finddir floor foldclosedend fullcommand getbufinfo getcharmod getcmdpos getcursorcharpos getfsize getline getpid getregtype gettext getwinvar has_key histget iconv inputlist interrupt isnan job_start js_encode libcall list2str log mapcheck matchaddpos matchfuzzypos menu_info nextnonblank popup_atcursor popup_dialog popup_getoptions popup_menu popup_show prompt_setcallback prop_find prop_type_delete py3eval readblob reg_executing remote_expr remote_startserver reverse screenchars search searchpos setcellwidths setenv setpos settagstack sign_define sign_placelist sin soundfold spellsuggest str2float strchars string strtrans swapname synstack tabpagewinnr tempname term_getansicolors term_getscrolled terminalprops term_setapi term_wait test_garbagecollect_soon test_null_dict test_null_string test_setmouse timer_info tolower type values wincol win_gettype winlayout winsaveview writefile +syn keyword vimFuncName contained append asin assert_false assert_report balloon_split bufload byte2line char2nr ch_close_in ch_info ch_readraw clearmatches confirm cursor diff_filler eval exp feedkeys findfile fmod foldlevel funcref getbufline getcharpos getcmdtype getcwd getftime getloclist getpos gettabinfo getwininfo glob haslocaldir histnr indent inputrestore invert items job_status json_decode libcallnr listener_add log10 mapnew matcharg matchlist min nr2char popup_beval popup_filter_menu popup_getpos popup_move pow prompt_setinterrupt prop_list prop_type_get pyeval readdir reg_recording remote_foreground remove round screencol searchcount server2client setcharpos setfperm setqflist setwinvar sign_getdefined sign_undefine sinh sound_playevent split str2list strdisplaywidth strlen strwidth synconcealed system tagfiles term_dumpdiff term_getattr term_getsize term_list term_setkill test_alloc_fail test_getvalue test_null_function test_option_not_set test_settime timer_pause toupper typename virtcol windowsversion win_gotoid winline win_screenpos xor +syn keyword vimFuncName contained appendbufline assert_beeps assert_inrange assert_true browse bufloaded byteidx charclass chdir ch_log ch_sendexpr col copy debugbreak diff_hlID eventhandler "--- syntax here and above generated by mkvimvim --- " Special Vim Highlighting (not automatic) {{{1 @@ -227,7 +227,7 @@ syn keyword vimAugroupKey contained aug[roup] " Operators: {{{2 " ========= -syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimRegister,vimContinue,vim9Comment +syn cluster vimOperGroup contains=vimEnvvar,vimFunc,vimFuncVar,vimOper,vimOperParen,vimNumber,vimString,vimType,vimRegister,vimContinue,vim9Comment syn match vimOper "\%#=1\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\)[?#]\{0,2}" skipwhite nextgroup=vimString,vimSpecFile syn match vimOper "\(\" skipwhite nextgroup=vimString,vimSpecFile syn match vimOper "||\|&&\|[-+.!]" skipwhite nextgroup=vimString,vimSpecFile @@ -241,12 +241,13 @@ endif " ========= syn cluster vimFuncList contains=vimCommand,vimFunctionError,vimFuncKey,Tag,vimFuncSID syn cluster vimFuncBodyList contains=vimAbb,vimAddress,vimAugroupKey,vimAutoCmd,vimCmplxRepeat,vimComment,vim9Comment,vimContinue,vimCtrlChar,vimEcho,vimEchoHL,vimEnvvar,vimExecute,vimIsCommand,vimFBVar,vimFunc,vimFunction,vimFuncVar,vimGlobal,vimHighlight,vimIsCommand,vimLet,vimLetHereDoc,vimLineComment,vimMap,vimMark,vimNorm,vimNotation,vimNotFunc,vimNumber,vimOper,vimOperParen,vimRegion,vimRegister,vimSearch,vimSet,vimSpecFile,vimString,vimSubst,vimSynLine,vimUnmap,vimUserCommand -syn match vimFunction "\<\(fu\%[nction]\|def\)!\=\s\+\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)*\ze\s*(" contains=@vimFuncList nextgroup=vimFuncBody +syn match vimFunction "\<\(fu\%[nction]\)!\=\s\+\%(<[sS][iI][dD]>\|[sSgGbBwWtTlL]:\)\=\%(\i\|[#.]\|{.\{-1,}}\)*\ze\s*(" contains=@vimFuncList nextgroup=vimFuncBody +syn match vimFunction "\\|\" + " Special Filenames, Modifiers, Extension Removal: {{{2 " =============================================== syn match vimSpecFile "" nextgroup=vimSpecFileMod,vimSubst @@ -384,7 +388,7 @@ syn match vimCmplxRepeat '[^a-zA-Z_/\\()]q[0-9a-zA-Z"]\>'lc=1 syn match vimCmplxRepeat '@[0-9a-z".=@:]\ze\($\|[^a-zA-Z]\>\)' " Set command and associated set-options (vimOptions) with comment {{{2 -syn region vimSet matchgroup=vimCommand start="\<\%(setl\%[ocal]\|setg\%[lobal]\|se\%[t]\)\>" skip="\%(\\\\\)*\\." end="$" end="|" matchgroup=vimNotation end="<[cC][rR]>" oneline keepend contains=vimSetEqual,vimOption,vimErrSetting,vimComment,vim9Comment,vimSetString,vimSetMod +syn region vimSet matchgroup=vimCommand start="\<\%(setl\%[ocal]\|setg\%[lobal]\|se\%[t]\)\>" skip="\%(\\\\\)*\\.\n\@!" end="$" end="|" matchgroup=vimNotation end="<[cC][rR]>" keepend contains=vimSetEqual,vimOption,vimErrSetting,vimComment,vim9Comment,vimSetString,vimSetMod syn region vimSetEqual contained start="[=:]\|[-+^]=" skip="\\\\\|\\\s" end="[| \t]"me=e-1 end="$" contains=vimCtrlChar,vimSetSep,vimNotation,vimEnvvar syn region vimSetString contained start=+="+hs=s+1 skip=+\\\\\|\\"+ end=+"+ contains=vimCtrlChar syn match vimSetSep contained "[,:]" @@ -419,7 +423,7 @@ syn case match " Maps: {{{2 " ==== syn match vimMap "\!\=\ze\s*[^(]" skipwhite nextgroup=vimMapMod,vimMapLhs -syn keyword vimMap cm[ap] cno[remap] im[ap] ino[remap] lm[ap] ln[oremap] nm[ap] nn[oremap] no[remap] om[ap] ono[remap] smap snor[emap] tno[remap] tm[ap] vm[ap] vn[oremap] xm[ap] xn[oremap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs +syn keyword vimMap cm[ap] cno[remap] im[ap] ino[remap] lm[ap] ln[oremap] nm[ap] nn[oremap] no[remap] om[ap] ono[remap] smap snor[emap] tno[remap] tm[ap] vm[ap] vmapc[lear] vn[oremap] xm[ap] xn[oremap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs syn keyword vimMap mapc[lear] smapc[lear] syn keyword vimUnmap cu[nmap] iu[nmap] lu[nmap] nun[map] ou[nmap] sunm[ap] tunma[p] unm[ap] unm[ap] vu[nmap] xu[nmap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs syn match vimMapLhs contained "\S\+" contains=vimNotation,vimCtrlChar skipwhite nextgroup=vimMapRhs @@ -1002,6 +1006,7 @@ if !exists("skip_vim_syntax_inits") hi def link vimSyntax vimCommand hi def link vimSynType vimSpecial hi def link vimTodo Todo + hi def link vimType Type hi def link vimUnmap vimMap hi def link vimUserAttrbCmpltFunc Special hi def link vimUserAttrbCmplt vimSpecial diff --git a/runtime/vim.desktop b/runtime/vim.desktop index aeefcc821e..4c19669a05 100644 --- a/runtime/vim.desktop +++ b/runtime/vim.desktop @@ -5,6 +5,7 @@ Name[de]=Vim Name[eo]=Vim Name[fr]=Vim +Name[it]=Vim Name[ru]=Vim Name[sr]=Vim Name[tr]=Vim @@ -13,6 +14,7 @@ Name=Vim GenericName[de]=Texteditor GenericName[eo]=Tekstoredaktilo GenericName[fr]=Éditeur de texte +GenericName[it]=Editor di testi GenericName[ja]=テキストエディタ GenericName[ru]=Текстовый редактор GenericName[sr]=Едитор текст @@ -22,6 +24,7 @@ GenericName=Text Editor Comment[de]=Textdateien bearbeiten Comment[eo]=Redakti tekstajn dosierojn Comment[fr]=Éditer des fichiers texte +Comment[it]=Edita file di testo Comment[ja]=テキストファイルを編集します Comment[ru]=Редактирование текстовых файлов Comment[sr]=Уређујте текст фајлове @@ -60,7 +63,6 @@ Comment[hr]=Uređivanje tekstualne datoteke Comment[hu]=Szövegfájlok szerkesztése Comment[id]=Edit file teks Comment[is]=Vinna með textaskrár -Comment[it]=Modifica file di testo Comment[kn]=ಪಠ್ಯ ಕಡತಗಳನ್ನು ಸಂಪಾದಿಸು Comment[ko]=텍스트 파일을 편집합니다 Comment[lt]=Redaguoti tekstines bylas @@ -102,6 +104,7 @@ Type=Application Keywords[de]=Text;Editor; Keywords[eo]=Teksto;redaktilo; Keywords[fr]=Texte;éditeur; +Keywords[it]=Testo;editor; Keywords[ja]=テキスト;エディタ; Keywords[ru]=текст;текстовый редактор; Keywords[sr]=Текст;едитор; @@ -111,6 +114,7 @@ Keywords=Text;editor; Icon[de]=gvim Icon[eo]=gvim Icon[fr]=gvim +Icon[it]=gvim Icon[ru]=gvim Icon[sr]=gvim Icon=gvim diff --git a/src/po/gvim.desktop.in b/src/po/gvim.desktop.in index c775bf0ff3..a673650212 100644 --- a/src/po/gvim.desktop.in +++ b/src/po/gvim.desktop.in @@ -40,7 +40,6 @@ Comment[hr]=Uređivanje tekstualne datoteke Comment[hu]=Szövegfájlok szerkesztése Comment[id]=Edit file teks Comment[is]=Vinna með textaskrár -Comment[it]=Modifica file di testo Comment[kn]=ಪಠ್ಯ ಕಡತಗಳನ್ನು ಸಂಪಾದಿಸು Comment[ko]=텍스트 파일을 편집합니다 Comment[lt]=Redaguoti tekstines bylas diff --git a/src/po/it.po b/src/po/it.po index 8925c922dc..ec1d5b52bb 100644 --- a/src/po/it.po +++ b/src/po/it.po @@ -15,8 +15,8 @@ msgid "" msgstr "" "Project-Id-Version: vim 8.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-04-10 21:36+0200\n" -"PO-Revision-Date: 2019-04-10 22:10+0100\n" +"POT-Creation-Date: 2021-06-14 23:05+0200\n" +"PO-Revision-Date: 2021-06-14 23:10+0100\n" "Last-Translator: Antonio Colombo \n" "Language-Team: Italian\n" "Language: it\n" @@ -25,12 +25,28 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgid "E163: There is only one file to edit" +msgstr "E163: C' un solo file da elaborare" + +msgid "E164: Cannot go before first file" +msgstr "E164: Non posso andare davanti al primo file" + +msgid "E165: Cannot go beyond last file" +msgstr "E165: Non posso oltrepassare l'ultimo file" + +msgid "E610: No argument to delete" +msgstr "E610: Nessun argomento da eliminare" + +msgid "E249: window layout changed unexpectedly" +msgstr "E249: la struttura della finestra inaspettatamente cambiata" + msgid "--Deleted--" msgstr "--Cancellato--" msgid "auto-removing autocommand: %s " msgstr "auto-rimozione dell'autocomando: %s " +#. the group doesn't exist msgid "E367: No such group: \"%s\"" msgstr "E367: Gruppo inesistente: \"%s\"" @@ -49,6 +65,7 @@ msgstr "E216: Evento inesistente: %s" msgid "E216: No such group or event: %s" msgstr "E216: Evento o gruppo inesistente: %s" +#. Highlight title msgid "" "\n" "--- Autocommands ---" @@ -60,7 +77,7 @@ msgid "E680: : invalid buffer number " msgstr "E680: : numero buffer non valido" msgid "E217: Can't execute autocommands for ALL events" -msgstr "E217: Non posso eseguire autocomandi for TUTTI gli eventi" +msgstr "E217: Non posso eseguire autocomandi per TUTTI gli eventi" msgid "No matching autocommands" msgstr "Nessun autocomando corrispondente" @@ -77,6 +94,9 @@ msgstr "Eseguo %s" msgid "autocommand %s" msgstr "autocomando %s" +msgid "E972: Blob value does not have the right number of bytes" +msgstr "E972: Il valore del Blob non ha il numero giusto di byte" + msgid "E831: bf_key_init() called with empty password" msgstr "E831: chiamata a bf_key_init() con password nulla" @@ -110,8 +130,28 @@ msgstr "E83: Non riesco ad allocare un buffer, uso l'altro..." msgid "E931: Buffer cannot be registered" msgstr "E931: Non riesco a registrare il buffer" -msgid "E937: Attempt to delete a buffer that is in use" -msgstr "E937: Tentativo di eliminare un buffer ancora usato" +msgid "E937: Attempt to delete a buffer that is in use: %s" +msgstr "E937: Tentativo di eliminare un buffer ancora usato: %s" + +msgid "E90: Cannot unload last buffer" +msgstr "E90: Non riesco a scaricare l'ultimo buffer" + +msgid "E84: No modified buffer found" +msgstr "E84: Nessun buffer risulta modificato" + +#. back where we started, didn't find anything. +msgid "E85: There is no listed buffer" +msgstr "E85: Non c' alcun buffer elencato" + +msgid "E87: Cannot go beyond last buffer" +msgstr "E87: Non posso oltrepassare l'ultimo buffer" + +msgid "E88: Cannot go before first buffer" +msgstr "E88: Non posso andare prima del primo buffer" + +msgid "E89: No write since last change for buffer %d (add ! to override)" +msgstr "" +"E89: Buffer %d non salvato dopo modifica (aggiungi ! per eseguire comunque)" msgid "E515: No buffers were unloaded" msgstr "E515: Nessun buffer scaricato" @@ -137,25 +177,6 @@ msgid_plural "%d buffers wiped out" msgstr[0] "%d buffer cancellato" msgstr[1] "%d buffer cancellati" -msgid "E90: Cannot unload last buffer" -msgstr "E90: Non riesco a scaricare l'ultimo buffer" - -msgid "E84: No modified buffer found" -msgstr "E84: Nessun buffer risulta modificato" - -msgid "E85: There is no listed buffer" -msgstr "E85: Non c' alcun buffer elencato" - -msgid "E87: Cannot go beyond last buffer" -msgstr "E87: Non posso oltrepassare l'ultimo buffer" - -msgid "E88: Cannot go before first buffer" -msgstr "E88: Non posso andare prima del primo buffer" - -msgid "E89: No write since last change for buffer %d (add ! to override)" -msgstr "" -"E89: Buffer %d non salvato dopo modifica (aggiungi ! per eseguire comunque)" - msgid "E948: Job still running (add ! to end the job)" msgstr "E948: Lavoro ancora in esecuzione (aggiungi! per terminarlo)" @@ -192,17 +213,14 @@ msgstr " [Modificato]" msgid "[Not edited]" msgstr "[Non elaborato]" -msgid "[New file]" -msgstr "[File nuovo]" - msgid "[Read errors]" msgstr "[Errori in lettura]" msgid "[RO]" -msgstr "[Sola Lettura]" +msgstr "[Sola-Lettura]" msgid "[readonly]" -msgstr "[in sola lettura]" +msgstr "[sola-lettura]" msgid "%ld line --%d%%--" msgid_plural "%ld lines --%d%%--" @@ -215,6 +233,7 @@ msgstr "riga %ld di %ld --%d%%-- col " msgid "[No Name]" msgstr "[Senza nome]" +#. must be a help buffer msgid "help" msgstr "aiuto" @@ -233,31 +252,178 @@ msgstr "Fon" msgid "Top" msgstr "Cim" -msgid "" -"\n" -"# Buffer list:\n" -msgstr "" -"\n" -"# Lista Buffer:\n" - msgid "E382: Cannot write, 'buftype' option is set" msgstr "E382: Non posso scrivere, l'opzione 'buftype' impostata" msgid "[Prompt]" msgstr "[Richiesta]" +msgid "[Popup]" +msgstr "[Dinamico]" + msgid "[Scratch]" msgstr "[Volatile]" +#. 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 "AVVISO: File modificato dopo essere stato letto!!!" + +msgid "Do you really want to write to it" +msgstr "Vuoi davvero riscriverlo" + +msgid "[New]" +msgstr "[Nuovo]" + +msgid "[New File]" +msgstr "[File nuovo]" + +msgid "E676: No matching autocommands for acwrite buffer" +msgstr "E676: Nessun autocomando corrispondente per buffer acwrite" + +msgid "E203: Autocommands deleted or unloaded buffer to be written" +msgstr "E203: Buffer in scrittura cancellato o scaricato dagli autocomandi" + +msgid "E204: Autocommand changed number of lines in unexpected way" +msgstr "E204: L'autocomando ha modificato numero righe in maniera imprevista" + +msgid "NetBeans disallows writes of unmodified buffers" +msgstr "NetBeans non permette la scrittura di un buffer non modificato" + +msgid "Partial writes disallowed for NetBeans buffers" +msgstr "Scrittura parziale disabilitata per i buffer di NetBeans" + +msgid "is a directory" +msgstr " una directory" + +msgid "is not a file or writable device" +msgstr "non un file o un dispositivo su cui si possa scrivere" + +msgid "writing to device disabled with 'opendevice' option" +msgstr "scrittura su periferica disabilitata con l'opzione 'opendevice'" + +msgid "is read-only (add ! to override)" +msgstr " in sola-lettura (aggiungi ! per eseguire comunque)" + +msgid "E506: Can't write to backup file (add ! to override)" +msgstr "" +"E506: Non posso scrivere sul file di backup (aggiungi ! per eseguire " +"comunque)" + +msgid "E507: Close error for backup file (add ! to override)" +msgstr "" +"E507: Errore in chiusura sul file di backup (aggiungi ! per eseguire " +"comunque)" + +msgid "E508: Can't read file for backup (add ! to override)" +msgstr "" +"E508: Non riesco a leggere il file di backup (aggiungi ! per eseguire " +"comunque)" + +msgid "E509: Cannot create backup file (add ! to override)" +msgstr "" +"E509: Non posso creare il file di backup (aggiungi ! per eseguire comunque)" + +msgid "E510: Can't make backup file (add ! to override)" +msgstr "" +"E510: Non posso fare il file di backup (aggiungi ! per eseguire comunque)" + +msgid "E214: Can't find temp file for writing" +msgstr "E214: Non riesco a trovare un file 'temp' su cui scrivere" + +msgid "E213: Cannot convert (add ! to write without conversion)" +msgstr "" +"E213: Non riesco a convertire (aggiungi ! per scrivere senza conversione)" + +msgid "E166: Can't open linked file for writing" +msgstr "E166: Non posso aprire il file collegato ('linked') in scrittura" + +msgid "E212: Can't open file for writing" +msgstr "E212: Non posso aprire il file in scrittura" + +msgid "E949: File changed while writing" +msgstr "E949: File modificato in fase di riscrittura" + +msgid "E512: Close failed" +msgstr "E512: Chiusura fallita" + +msgid "E513: write error, conversion failed (make 'fenc' empty to override)" +msgstr "" +"E513: errore in scrittura, conversione fallita (rendere 'fenc' nullo per " +"eseguire comunque)" + +msgid "" +"E513: write error, conversion failed in line %ld (make 'fenc' empty to " +"override)" +msgstr "" +"E513: errore in scrittura, conversione fallita alla riga %ld (rendere 'fenc' " +"nullo per eseguire comunque)" + +msgid "E514: write error (file system full?)" +msgstr "E514: errore in scrittura ('File System' pieno?)" + +msgid " CONVERSION ERROR" +msgstr " ERRORE DI CONVERSIONE" + +msgid " in line %ld;" +msgstr " alla riga %ld;" + +msgid "[NOT converted]" +msgstr "[NON convertito]" + +msgid "[converted]" +msgstr "[convertito]" + +msgid "[Device]" +msgstr "[Dispositivo]" + +msgid " [a]" +msgstr " [a]" + +msgid " appended" +msgstr " aggiunto in fondo" + +msgid " [w]" +msgstr " [s]" + +msgid " written" +msgstr " scritti" + +msgid "E205: Patchmode: can't save original file" +msgstr "E205: Patchmode: non posso salvare il file originale" + +msgid "E206: patchmode: can't touch empty original file" +msgstr "E206: Patchmode: non posso alterare il file vuoto originale" + +msgid "E207: Can't delete backup file" +msgstr "E207: Non riesco a cancellare il file di backup" + +msgid "" +"\n" +"WARNING: Original file may be lost or damaged\n" +msgstr "" +"\n" +"AVVISO: Il file originale pu essere perso o danneggiato\n" + +msgid "don't quit the editor until the file is successfully written!" +msgstr "non uscire dall'editor prima della fine della scrittura del file!" + +msgid "W10: Warning: Changing a readonly file" +msgstr "W10: Avviso: Modifica a un file in sola-lettura" + msgid "E902: Cannot connect to port" -msgstr "E902: Non posso commettermi alla porta" +msgstr "E902: Non posso connettermi alla porta" + +msgid "E898: socket() in channel_connect()" +msgstr "E898: socket() in channel_connect()" + +msgid "E901: getaddrinfo() in channel_open(): %s" +msgstr "E901: getaddrinfo() in channel_open(): %s" msgid "E901: gethostbyname() in channel_open()" msgstr "E901: gethostbyname() in channel_open()" -msgid "E898: socket() in channel_open()" -msgstr "E898: socket() in channel_open()" - msgid "E903: received command with non-string argument" msgstr "E903: il comando ricevuto non aveva come argomento una stringa" @@ -268,7 +434,10 @@ msgid "E904: third argument for call must be a list" msgstr "E904: il terzo argomento della chiamata dev'essere una Lista" msgid "E905: received unknown command: %s" -msgstr "E905: recevuto comando non conosciuto: %s" +msgstr "E905: ricevuto comando sconosciuto: %s" + +msgid "E906: not an open channel" +msgstr "E906: canale non aperto" msgid "E630: %s(): write while not connected" msgstr "E630: %s(): scrittura in mancanza di connessione" @@ -282,17 +451,55 @@ msgstr "E917: Non posso usare callback con %s()" msgid "E912: cannot use ch_evalexpr()/ch_sendexpr() with a raw or nl channel" msgstr "E912: non posso usare ch_evalexpr() con un canale grezzo o nl" -msgid "E906: not an open channel" -msgstr "E906: canale non aperto" +msgid "No display" +msgstr "Manca display" -msgid "E920: _io file requires _name to be set" -msgstr "E920: il file _io necessita di impostare _name" +#. Failed to send, abort. +msgid ": Send failed.\n" +msgstr ": Invio fallito.\n" -msgid "E915: in_io buffer requires in_buf or in_name to be set" -msgstr "E915: il buffer in_io necessita di impostare in_buf o in_name" +#. Let vim start normally. +msgid ": Send failed. Trying to execute locally\n" +msgstr ": Invio fallito. Tento di eseguire localmente\n" -msgid "E918: buffer must be loaded: %s" -msgstr "E918: il buffer dev'essere caricato: %s" +msgid "%d of %d edited" +msgstr "%d di %d elaborato" + +msgid "No display: Send expression failed.\n" +msgstr "Nessun display: Invio di espressione fallito.\n" + +msgid ": Send expression failed.\n" +msgstr ": Invio di espressione fallito.\n" + +msgid "E240: No connection to the X server" +msgstr "E240: Manca connessione con server Vim" + +msgid "E241: Unable to send to %s" +msgstr "E241: Impossibile inviare a %s" + +msgid "E277: Unable to read a server reply" +msgstr "E277: Non riesco a leggere una risposta del server" + +msgid "E941: already started a server" +msgstr "E941: un server gi stato predisposto" + +msgid "E942: +clientserver feature not available" +msgstr "E942: funzionalit +clientserver non disponibile" + +msgid "E258: Unable to send to client" +msgstr "E258: Impossibile inviare al client" + +msgid "Used CUT_BUFFER0 instead of empty selection" +msgstr "Uso CUT_BUFFER0 invece che una scelta nulla" + +msgid "tagname" +msgstr "nome_tag" + +msgid " kind file\n" +msgstr " tipo file\n" + +msgid "'history' option is zero" +msgstr "l'opzione 'history' a zero" msgid "E821: File is encrypted with unknown method" msgstr "E821: File cifrato con metodo sconosciuto" @@ -312,17 +519,41 @@ msgstr "Le chiavi non corrispondono!" msgid "[crypted]" msgstr "[cifrato]" -msgid "E720: Missing colon in Dictionary: %s" -msgstr "E720: Manca ':' nel Dizionario: %s" +msgid "Entering Debug mode. Type \"cont\" to continue." +msgstr "Entro modalit Debug. Batti \"cont\" per continuare." -msgid "E721: Duplicate key in Dictionary: \"%s\"" -msgstr "E721: Chiave duplicata nel Dizionario: \"%s\"" +msgid "Oldval = \"%s\"" +msgstr "Vecchioval = \"%s\"" -msgid "E722: Missing comma in Dictionary: %s" -msgstr "E722: Manca virgola nel Dizionario: %s" +msgid "Newval = \"%s\"" +msgstr "Nuovoval = \"%s\"" -msgid "E723: Missing end of Dictionary '}': %s" -msgstr "E723: Manca '}' a fine Dizionario: %s" +msgid "line %ld: %s" +msgstr "riga %ld: %s" + +msgid "cmd: %s" +msgstr "com: %s" + +msgid "frame is zero" +msgstr "al livello zero" + +msgid "frame at highest level: %d" +msgstr "al livello pi alto: %d" + +msgid "Breakpoint in \"%s%s\" line %ld" +msgstr "Pausa in \"%s%s\" riga %ld" + +msgid "E161: Breakpoint not found: %s" +msgstr "E161: Breakpoint %s non trovato" + +msgid "No breakpoints defined" +msgstr "Nessun 'breakpoint' definito" + +msgid "%3d %s %s line %ld" +msgstr "%3d %s %s riga %ld" + +msgid "%3d expr %s" +msgstr "%3d espr %s" msgid "extend() argument" msgstr "argomento di extend()" @@ -445,7 +676,7 @@ msgid "Dingbats" msgstr "Dingbat" msgid "CJK symbols and punctuation" -msgstr "Simboli e punteggiatura ChinJapKorea" +msgstr "Simboli e punteggiatura CJK" msgid "Hiragana" msgstr "Hiragana" @@ -465,42 +696,6 @@ msgstr "E105: Uso di :loadkeymap fuori da un file di comandi" msgid "E791: Empty keymap entry" msgstr "E791: Nessuna keymap per questo tasto" -msgid "E18: Unexpected characters in :let" -msgstr "E18: Caratteri non previsti in :let" - -msgid "E121: Undefined variable: %s" -msgstr "E121: Variabile non definita: %s" - -msgid "E111: Missing ']'" -msgstr "E111: Manca ']'" - -msgid "E719: Cannot use [:] with a Dictionary" -msgstr "E719: Non posso usare [:] con un Dizionario" - -msgid "E734: Wrong variable type for %s=" -msgstr "E734: Tipo di variabile errato per %s=" - -msgid "E461: Illegal variable name: %s" -msgstr "E461: Nome di variabile non consentito: %s" - -msgid "E806: using Float as a String" -msgstr "E806: Uso di un Numero-a-virgola-mobile come una Stringa" - -msgid "E985: .= is not supported with script version 2" -msgstr "E985: .= non supportato con script versione 2" - -msgid "E687: Less targets than List items" -msgstr "E687: Destinazioni pi numerose degli elementi di Lista" - -msgid "E688: More targets than List items" -msgstr "E688: Destinazioni meno numerose degli elementi di Lista" - -msgid "Double ; in list of variables" -msgstr "Doppio ; nella lista di variabili" - -msgid "E738: Can't list variables for %s" -msgstr "E738: Non riesco a elencare le variabili per %s" - msgid "E689: Can only index a List, Dictionary or Blob" msgstr "E689: Posso indicizzare solo una Lista, un Dizionario o un Blob" @@ -510,123 +705,124 @@ msgstr "E708: [:] dev'essere alla fine" msgid "E709: [:] requires a List or Blob value" msgstr "E709: [:] richiede un valore Lista o Blob" -msgid "E972: Blob value does not have the right number of bytes" -msgstr "E972: Il valore del Blob non ha il numero giusto di byte" +msgid "E996: Cannot lock a range" +msgstr "E996: Non posso bloccare un intervallo" -msgid "E710: List value has more items than target" -msgstr "E710: Il valore Lista ha pi elementi della destinazione" +msgid "E996: Cannot lock a list or dict" +msgstr "E996: Non posso bloccare una Lista o un Dizionario" -msgid "E711: List value has not enough items" -msgstr "E711: Il valore Lista non ha elementi sufficienti" - -msgid "E690: Missing \"in\" after :for" -msgstr "E690: Manca \"in\" dopo :for" - -msgid "E108: No such variable: \"%s\"" -msgstr "E108: Variabile inesistente: \"%s\"" - -msgid "E940: Cannot lock or unlock variable %s" -msgstr "E940: Non riesco a bloccare o sbloccare la variabile %s" - -msgid "E743: variable nested too deep for (un)lock" -msgstr "E743: variabile troppo nidificata per lock/unlock" - -msgid "E109: Missing ':' after '?'" -msgstr "E109: Manca ':' dopo '?'" - -msgid "E804: Cannot use '%' with Float" -msgstr "E804: Non si pu usare '%' con un Numero-a-virgola-mobile" - -msgid "E973: Blob literal should have an even number of hex characters" -msgstr "" -"E973: Una stringa Blob dovrebbe avere un numero pari di caratteri esadecimali" - -msgid "E110: Missing ')'" -msgstr "E110: Manca ')'" +msgid "E260: Missing name after ->" +msgstr "E260: Manca nome dopo ->" msgid "E695: Cannot index a Funcref" msgstr "E695: Non posso indicizzare un Funcref" -msgid "E909: Cannot index a special variable" -msgstr "E909: Non posso indicizzare una variabile speciale" - -msgid "E112: Option name missing: %s" -msgstr "E112: Nome Opzione mancante: %s" - -msgid "E113: Unknown option: %s" -msgstr "E113: Opzione inesistente: %s" - -msgid "E114: Missing quote: %s" -msgstr "E114: Manca '\"': %s" - -msgid "E115: Missing quote: %s" -msgstr "E115: Manca apostrofo: %s" - msgid "Not enough memory to set references, garbage collection aborted!" msgstr "Memoria insufficiente per impostarlo, recupero memoria fallito!" msgid "E724: variable nested too deep for displaying" msgstr "E724: variabile troppo nidificata per la visualizzazione" -msgid "E805: Using a Float as a Number" -msgstr "E805: Uso di un Numero-a-virgola-mobile come un Numero" +msgid "E698: variable nested too deep for making a copy" +msgstr "E698: Variabile troppo nidificata per poterla copiare" -msgid "E703: Using a Funcref as a Number" -msgstr "E703: Uso di una Funcref come un Numero" +msgid "" +"\n" +"\tLast set from " +msgstr "" +"\n" +"\tImpostata l'ultima volta da " -msgid "E745: Using a List as a Number" -msgstr "E745: Uso di una Lista come un Numero" +msgid "E158: Invalid buffer name: %s" +msgstr "E158: Nome buffer non valido: %s" -msgid "E728: Using a Dictionary as a Number" -msgstr "E728: Uso di un Dizionario come un Numero" +#. +#. * 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" -msgid "E910: Using a Job as a Number" -msgstr "E910: Uso di un Job come un Numero" +msgid "E980: lowlevel input not supported" +msgstr "E980: input a livello basso non supportato" -msgid "E913: Using a Channel as a Number" -msgstr "E913: Uso di un Canale come un Numero" +msgid "E700: Unknown function: %s" +msgstr "E700: Funzione sconosciuta: %s" -msgid "E974: Using a Blob as a Number" -msgstr "E974: Uso di un Blob come un Numero" +msgid "E922: expected a dict" +msgstr "E922: Atteso un Dizionario" -msgid "E891: Using a Funcref as a Float" -msgstr "E891: Uso di una Funcref come un Numero-a-virgola-mobile" +msgid "E923: Second argument of function() must be a list or a dict" +msgstr "" +"E923: Il secondo argomento di function() dev'essere una Lista o un Dizionario" -msgid "E892: Using a String as a Float" -msgstr "E892: Uso di una Stringa come un Numero-a-virgola-mobile" +msgid "" +"&OK\n" +"&Cancel" +msgstr "" +"&OK\n" +"&Non eseguire" -msgid "E893: Using a List as a Float" -msgstr "E893: Uso di una Lista come un Numero-a-virgola-mobile" +msgid "called inputrestore() more often than inputsave()" +msgstr "inputrestore() chiamata pi volte di inputsave()" -msgid "E894: Using a Dictionary as a Float" -msgstr "E894: Uso di un Dizionario come un Numero-a-virgola-mobile" +msgid "E786: Range not allowed" +msgstr "E786: Intervallo non consentito" -msgid "E907: Using a special value as a Float" -msgstr "E907: Uso di un valore speciale come un Numero-a-virgola-mobile" +msgid "E701: Invalid type for len()" +msgstr "E701: Tipo non valido per len()" -msgid "E911: Using a Job as a Float" -msgstr "E911: Uso di un Job come un Numero-a-virgola-mobile" +msgid "E726: Stride is zero" +msgstr "E726: Incremento indice a zero" -msgid "E914: Using a Channel as a Float" -msgstr "E914: Uso di un Canale come un Numero-a-virgola-mobile" +msgid "E727: Start past end" +msgstr "E727: Indice iniziale superiore a quello finale" -msgid "E975: Using a Blob as a Float" -msgstr "E975: Uso di un Blob come un Numero-a-virgola-mobile" +msgid "E962: Invalid action: '%s'" +msgstr "E962: Azione non valida: '%s'" -msgid "E729: using Funcref as a String" -msgstr "E729: Uso di una Funcref come una Stringa" +msgid "E935: invalid submatch number: %d" +msgstr "E935: numero di sotto-corrispondenza non valido: %d" -msgid "E730: using List as a String" -msgstr "E730: Uso di una Lista come una Stringa" +msgid "E991: cannot use =<< here" +msgstr "E991: non posso usare =<< qui" -msgid "E731: using Dictionary as a String" -msgstr "E731: Uso di un Dizionario come una Stringa" +msgid "E221: Marker cannot start with lower case letter" +msgstr "E221: Un marcatore non pu iniziare con una lettera minuscola" -msgid "E976: using Blob as a String" -msgstr "E976: Uso di un Blob come una Stringa" +msgid "E172: Missing marker" +msgstr "E172: Manca un marcatore" -msgid "E908: using an invalid value as a String" -msgstr "E908: Uso di un valore non valido come una Stringa" +msgid "E990: Missing end marker '%s'" +msgstr "E990: Manca marcatore di fine '%s'" + +msgid "E985: .= is not supported with script version >= 2" +msgstr "E985: .= non supportato con la versione di script >= 2" + +msgid "E687: Less targets than List items" +msgstr "E687: Destinazioni pi numerose degli elementi di Lista" + +msgid "E688: More targets than List items" +msgstr "E688: Destinazioni meno numerose degli elementi di Lista" + +msgid "E452: Double ; in list of variables" +msgstr "E452: Doppio ; nella lista di variabili" + +msgid "E738: Can't list variables for %s" +msgstr "E738: Non riesco a elencare le variabili per %s" + +msgid "E996: Cannot lock an environment variable" +msgstr "E996: Non posso bloccare una variabile di ambiente" + +msgid "E996: Cannot lock a register" +msgstr "E996: Non posso bloccare un registro" + +msgid "E108: No such variable: \"%s\"" +msgstr "E108: Variabile inesistente: \"%s\"" + +msgid "E743: variable nested too deep for (un)lock" +msgstr "E743: variabile troppo nidificata per lock/unlock" msgid "E963: setting %s to value with wrong type" msgstr "E963: impostazione di %s a un valore di tipo errato" @@ -650,183 +846,6 @@ msgstr "Sconosciuto" msgid "E742: Cannot change value of %s" msgstr "E742: Non riesco a cambiare il valore di %s" -msgid "E698: variable nested too deep for making a copy" -msgstr "E698: Variabile troppo nidificata per poterla copiare" - -msgid "" -"\n" -"# global variables:\n" -msgstr "" -"\n" -"# variabili globali:\n" - -msgid "" -"\n" -"\tLast set from " -msgstr "" -"\n" -"\tImpostata l'ultima volta da " - -msgid " line " -msgstr " riga " - -msgid "E977: Can only compare Blob with Blob" -msgstr "E977: Posso confrontare un Blob solo con un altro Blob" - -msgid "E691: Can only compare List with List" -msgstr "E691: Posso confrontare una Lista solo con un'altra Lista" - -msgid "E692: Invalid operation for List" -msgstr "E692: Operazione non valida per Liste" - -msgid "E735: Can only compare Dictionary with Dictionary" -msgstr "E735: Posso confrontare un Dizionario solo con un altro Dizionario" - -msgid "E736: Invalid operation for Dictionary" -msgstr "E736: Operazione non valida per Dizionari" - -msgid "E694: Invalid operation for Funcrefs" -msgstr "E694: Operazione non valida per Funcref" - -msgid "map() argument" -msgstr "argomento di map()" - -msgid "filter() argument" -msgstr "argomento di filter()" - -msgid "E686: Argument of %s must be a List" -msgstr "E686: L'argomento di %s dev'essere una Lista" - -msgid "E899: Argument of %s must be a List or Blob" -msgstr "E899: L'argomento di %s dev'essere una Lista o un Blob" - -msgid "E928: String required" -msgstr "E928: Stringa necessaria" - -msgid "E957: Invalid window number" -msgstr "E957: Numero di finestra non valido" - -msgid "E808: Number or Float required" -msgstr "E808: Ci vuole un Numero o un Numero-a-virgola-mobile" - -msgid "add() argument" -msgstr "argomento di add()" - -msgid "E158: Invalid buffer name: %s" -msgstr "E158: Nome buffer non valido: %s" - -msgid "E785: complete() can only be used in Insert mode" -msgstr "E785: complete() pu essere usata solo in modalit inserimento" - -msgid "&Ok" -msgstr "&OK" - -msgid "E980: lowlevel input not supported" -msgstr "E980: input lowlevel non supportato" - -msgid "+-%s%3ld line: " -msgid_plural "+-%s%3ld lines: " -msgstr[0] "+-%s%3ld riga: " -msgstr[1] "+-%s%3ld righe: " - -msgid "E700: Unknown function: %s" -msgstr "E700: Funzione sconosciuta: %s" - -msgid "E922: expected a dict" -msgstr "E922: aspettavo un Dizionario" - -msgid "E923: Second argument of function() must be a list or a dict" -msgstr "" -"E923: Il secondo argomento di function() dev'essere una Lista o un Dizionario" - -msgid "" -"&OK\n" -"&Cancel" -msgstr "" -"&OK\n" -"&Non eseguire" - -msgid "called inputrestore() more often than inputsave()" -msgstr "inputrestore() chiamata pi volte di inputsave()" - -msgid "insert() argument" -msgstr "argomento di insert()" - -msgid "E786: Range not allowed" -msgstr "E786: Intervallo non consentito" - -msgid "E916: not a valid job" -msgstr "E916: job non valido" - -msgid "E701: Invalid type for len()" -msgstr "E701: Tipo non valido per len()" - -msgid "E798: ID is reserved for \":match\": %d" -msgstr "E798: ID riservato per \":match\": %d" - -msgid "E726: Stride is zero" -msgstr "E726: Incremento indice a zero" - -msgid "E727: Start past end" -msgstr "E727: Indice iniziale superiore a quello finale" - -msgid "" -msgstr "" - -msgid "E240: No connection to the X server" -msgstr "E240: Manca connessione con server Vim" - -msgid "E241: Unable to send to %s" -msgstr "E241: Impossibile inviare a %s" - -msgid "E277: Unable to read a server reply" -msgstr "E277: Non riesco a leggere una risposta del server" - -msgid "E941: already started a server" -msgstr "E941: un server gi stato predisposto" - -msgid "E942: +clientserver feature not available" -msgstr "E942: funzionalit +clientserver non disponibile" - -msgid "remove() argument" -msgstr "argomento di remove()" - -msgid "E655: Too many symbolic links (cycle?)" -msgstr "E655: Troppi link simbolici (circolarit?)" - -msgid "reverse() argument" -msgstr "argomento di reverse()" - -msgid "E258: Unable to send to client" -msgstr "E258: Impossibile inviare al client" - -msgid "E927: Invalid action: '%s'" -msgstr "E927: Azione non valida: '%s'" - -msgid "E962: Invalid action: '%s'" -msgstr "E962: Azione non valida: '%s'" - -msgid "sort() argument" -msgstr "argomento di sort()" - -msgid "uniq() argument" -msgstr "argomento di uniq()" - -msgid "E702: Sort compare function failed" -msgstr "E702: Funzione confronto nel sort non riuscita" - -msgid "E882: Uniq compare function failed" -msgstr "E882: Funzione confronto in uniq non riuscita" - -msgid "(Invalid)" -msgstr "(Non valido)" - -msgid "E935: invalid submatch number: %d" -msgstr "E935: nomeri di sotto-corrispondenza non valido: %d" - -msgid "E677: Error writing temp file" -msgstr "E677: Errore in scrittura su file temporaneo" - msgid "E921: Invalid callback argument" msgstr "E921: Argomento callback non valido" @@ -849,7 +868,7 @@ msgid "> %d, Hex %08x, Octal %o" msgstr "> %d, Esa %08x, Ottale %o" msgid "E134: Cannot move a range of lines into itself" -msgstr "E134: Movimento di righe verso se stesse non valido" +msgstr "E134: Non si pu muovere un intervallo di righe in se stesso" msgid "%ld line moved" msgid_plural "%ld lines moved" @@ -865,64 +884,8 @@ msgstr "E135: *Filter* Gli autocomandi non devono modificare il buffer in uso" msgid "[No write since last change]\n" msgstr "[Non salvato dopo l'ultima modifica]\n" -msgid "%sviminfo: %s in line: " -msgstr "%sviminfo: %s nella riga: " - -msgid "E136: viminfo: Too many errors, skipping rest of file" -msgstr "E136: viminfo: Troppi errori, ignoro il resto del file" - -msgid "Reading viminfo file \"%s\"%s%s%s" -msgstr "Lettura file viminfo \"%s\"%s%s%s" - -msgid " info" -msgstr " informazione" - -msgid " marks" -msgstr " mark" - -msgid " oldfiles" -msgstr " file elaborati in precedenza" - -msgid " FAILED" -msgstr " FALLITO" - -msgid "E137: Viminfo file is not writable: %s" -msgstr "E137: File viminfo \"%s\" inaccessibile in scrittura" - -msgid "E929: Too many viminfo temp files, like %s!" -msgstr "E929: Troppi file temporanei viminfo, come %s!" - -msgid "E138: Can't write viminfo file %s!" -msgstr "E138: Non riesco a scrivere il file viminfo %s!" - -msgid "Writing viminfo file \"%s\"" -msgstr "Scrivo file viminfo \"%s\"" - -msgid "E886: Can't rename viminfo file to %s!" -msgstr "E886: Non riesco a rinominare il file viminfo a %s!" - -msgid "# This viminfo file was generated by Vim %s.\n" -msgstr "# Questo file viminfo stato generato da Vim %s.\n" - -msgid "" -"# You may edit it if you're careful!\n" -"\n" -msgstr "" -"# File modificabile, attento a quel che fai!\n" -"\n" - -msgid "# Value of 'encoding' when this file was written\n" -msgstr "# Valore di 'encoding' al momento della scrittura di questo file\n" - -msgid "Illegal starting char" -msgstr "Carattere iniziale non consentito" - -msgid "" -"\n" -"# Bar lines, copied verbatim:\n" -msgstr "" -"\n" -"# Righe che iniziano con '|', semplicemente copiate:\n" +msgid "E503: \"%s\" is not a file or writable device" +msgstr "E503: \"%s\" non un file o un dispositivo scrivibile" msgid "Save As" msgstr "Salva con Nome" @@ -960,12 +923,12 @@ msgid "" "It may still be possible to write it.\n" "Do you wish to try?" msgstr "" -"I permessi di \"%s\" sono di sola lettura.\n" +"I permessi di \"%s\" sono di sola-lettura.\n" "Questo potrebbe non impedire la scrittura.\n" "Vuoi provare?" msgid "E505: \"%s\" is read-only (add ! to override)" -msgstr "E505: \"%s\" in sola lettura (aggiungi ! per eseguire comunque)" +msgstr "E505: \"%s\" in sola-lettura (aggiungi ! per eseguire comunque)" msgid "Edit File" msgstr "Elabora File" @@ -1009,6 +972,7 @@ msgid_plural "%ld substitutions on %ld lines" msgstr[0] "%ld sostituzione in %ld righe" msgstr[1] "%ld sostituzioni in %ld righe" +#. will increment global_busy to break out of the loop msgid "E147: Cannot do :global recursive with a range" msgstr "E147: :global non pu essere usato ricorsivamente con un intervallo" @@ -1021,87 +985,9 @@ msgstr "Espressione trovata su ogni riga: %s" msgid "Pattern not found: %s" msgstr "Espressione non trovata: %s" -msgid "" -"\n" -"# Last Substitute String:\n" -"$" -msgstr "" -"\n" -"# Ultima Stringa Sostituzione:\n" -"$" - -msgid "E478: Don't panic!" -msgstr "E478: Non lasciarti prendere dal panico!" - -msgid "E661: Sorry, no '%s' help for %s" -msgstr "E661: Spiacente, nessun aiuto '%s' per %s" - -msgid "E149: Sorry, no help for %s" -msgstr "E149: Spiacente, nessun aiuto per %s" - -msgid "Sorry, help file \"%s\" not found" -msgstr "Spiacente, non trovo file di aiuto \"%s\"" - -msgid "E151: No match: %s" -msgstr "E151: Nessuna corrispondenza: %s" - -msgid "E152: Cannot open %s for writing" -msgstr "E152: Non posso aprire %s in scrittura" - -msgid "E153: Unable to open %s for reading" -msgstr "E153: Non riesco ad aprire %s in lettura" - -msgid "E670: Mix of help file encodings within a language: %s" -msgstr "E670: Codifiche diverse fra file di aiuto nella stessa lingua: %s" - -msgid "E154: Duplicate tag \"%s\" in file %s/%s" -msgstr "E154: Tag duplicato \"%s\" nel file %s/%s" - -msgid "E150: Not a directory: %s" -msgstr "E150: %s non una directory" - msgid "No old files" msgstr "Nessun file elaborato in precedenza" -msgid "Entering Debug mode. Type \"cont\" to continue." -msgstr "Entro modalit Debug. Batti \"cont\" per continuare." - -msgid "Oldval = \"%s\"" -msgstr "Vecchioval = \"%s\"" - -msgid "Newval = \"%s\"" -msgstr "Nuovoval = \"%s\"" - -msgid "line %ld: %s" -msgstr "riga %ld: %s" - -msgid "cmd: %s" -msgstr "com: %s" - -msgid "frame is zero" -msgstr "al livello zero" - -msgid "frame at highest level: %d" -msgstr "al livello pi alto: %d" - -msgid "Breakpoint in \"%s%s\" line %ld" -msgstr "Pausa in \"%s%s\" riga %ld" - -msgid "E161: Breakpoint not found: %s" -msgstr "E161: Breakpoint %s non trovato" - -msgid "No breakpoints defined" -msgstr "Nessun 'breakpoint' definito" - -msgid "%3d %s %s line %ld" -msgstr "%3d %s %s riga %ld" - -msgid "%3d expr %s" -msgstr "%3d espr %s" - -msgid "E750: First use \":profile start {fname}\"" -msgstr "E750: Usare prima \":profile start {fname}\"" - msgid "Save changes to \"%s\"?" msgstr "Salvare modifiche a \"%s\"?" @@ -1115,27 +1001,9 @@ msgid "Warning: Entered other buffer unexpectedly (check autocommands)" msgstr "" "Avviso: Entrato in altro buffer inaspettatamente (controllare autocomandi)" -msgid "E163: There is only one file to edit" -msgstr "E163: C' un solo file da elaborare" - -msgid "E164: Cannot go before first file" -msgstr "E164: Non posso andare davanti al primo file" - -msgid "E165: Cannot go beyond last file" -msgstr "E165: Non posso oltrepassare l'ultimo file" - msgid "E666: compiler not supported: %s" msgstr "E666: compilatore non supportato: %s" -msgid "Searching for \"%s\" in \"%s\"" -msgstr "Cerco \"%s\" in \"%s\"" - -msgid "Searching for \"%s\"" -msgstr "Cerco \"%s\"" - -msgid "not found in '%s': \"%s\"" -msgstr "non trovato in '%s': \"%s\"" - msgid "W20: Required python version 2.x not supported, ignoring file: %s" msgstr "" "W20: Versione richiesta di python 2.x non supportata, ignoro il file: %s" @@ -1144,72 +1012,15 @@ msgid "W21: Required python version 3.x not supported, ignoring file: %s" msgstr "" "W21: Versione richiesta di python 3.x non supportata, ignoro il file: %s" -msgid "Source Vim script" -msgstr "Esegui script Vim" - -msgid "Cannot source a directory: \"%s\"" -msgstr "Non riesco ad eseguire una directory: \"%s\"" - -msgid "could not source \"%s\"" -msgstr "non riesco ad eseguire \"%s\"" - -msgid "line %ld: could not source \"%s\"" -msgstr "riga %ld: non riesco ad eseguire \"%s\"" - -msgid "sourcing \"%s\"" -msgstr "eseguo \"%s\"" - -msgid "line %ld: sourcing \"%s\"" -msgstr "riga %ld: eseguo \"%s\"" - -msgid "finished sourcing %s" -msgstr "esecuzione di %s terminata" - -msgid "continuing in %s" -msgstr "continuo in %s" - -msgid "modeline" -msgstr "modeline" - -msgid "--cmd argument" -msgstr "argomento --cmd" - -msgid "-c argument" -msgstr "argomento -c" - -msgid "environment variable" -msgstr "variabile d'ambiente" - -msgid "error handler" -msgstr "gestore di errore" - -msgid "W15: Warning: Wrong line separator, ^M may be missing" -msgstr "W15: Avviso: Separatore di riga errato, forse manca ^M" - -msgid "E167: :scriptencoding used outside of a sourced file" -msgstr "E167: :scriptencoding usato fuori da un file di comandi" - -msgid "E984: :scriptversion used outside of a sourced file" -msgstr "E984: :scriptversion usato fuori da un file di comandi" - -msgid "E999: scriptversion not supported: %d" -msgstr "E999: scriptversion non supportata: %d" - -msgid "E168: :finish used outside of a sourced file" -msgstr "E168: :finish usato fuori da file di comandi" - -msgid "Current %slanguage: \"%s\"" -msgstr "Lingua %sin uso: \"%s\"" - -msgid "E197: Cannot set language to \"%s\"" -msgstr "E197: Non posso impostare lingua a \"%s\"" - msgid "Entering Ex mode. Type \"visual\" to go to Normal mode." msgstr "Entro modalit Ex. Batti \"visual\" per tornare a modalit Normale." msgid "E501: At end-of-file" msgstr "E501: Alla fine-file" +msgid "Executing: %s" +msgstr "Sto eseguendo: %s" + msgid "E169: Command too recursive" msgstr "E169: Comando troppo ricorsivo" @@ -1222,9 +1033,6 @@ msgstr "Fine del file di comandi" msgid "End of function" msgstr "Fine funzione" -msgid "E464: Ambiguous use of user-defined command" -msgstr "E464: Uso ambiguo di comando definito dall'utente" - msgid "E492: Not an editor command" msgstr "E492: Non un comando dell'editor" @@ -1243,6 +1051,12 @@ msgstr "E494: Usa w oppure w>>" msgid "E943: Command table needs to be updated, run 'make cmdidxs'" msgstr "E943: Tabella dei comandi da aggiornare, eseguire 'make cmdidxs'" +msgid "" +"INTERNAL: Cannot use EX_DFLALL with ADDR_NONE, ADDR_UNSIGNED or ADDR_QUICKFIX" +msgstr "" +"INTERNO: Non posso usare EX_DFLALL con ADDR_NONE, ADDR_UNSIGNED o " +"ADDR_QUICKFIX" + msgid "E319: Sorry, the command is not available in this version" msgstr "E319: Spiacente, comando non disponibile in questa versione" @@ -1256,68 +1070,6 @@ msgid_plural "E173: %d more files to edit" msgstr[0] "E173: %d ulteriore file da elaborare" msgstr[1] "E173: %d ulteriori file da elaborare" -msgid "E174: Command already exists: add ! to replace it: %s" -msgstr "E174: Il comando esiste gi: aggiungi ! per sostituirlo: %s" - -msgid "" -"\n" -" Name Args Address Complete Definition" -msgstr "" -"\n" -" Nome Arg. Indir. Completo Definizione" - -msgid "No user-defined commands found" -msgstr "Non trovo comandi definiti dall'utente" - -msgid "E175: No attribute specified" -msgstr "E175: Nessun attributo specificato" - -msgid "E176: Invalid number of arguments" -msgstr "E176: Numero di argomenti non valido" - -msgid "E177: Count cannot be specified twice" -msgstr "E177: Non si pu specificare due volte il contatore" - -msgid "E178: Invalid default value for count" -msgstr "E178: Valore predefinito del contatore non valido" - -msgid "E179: argument required for -complete" -msgstr "E179: argomento necessario per -complete" - -msgid "E179: argument required for -addr" -msgstr "E179: argomento necessario per -addr" - -msgid "E181: Invalid attribute: %s" -msgstr "E181: Attributo non valido: %s" - -msgid "E182: Invalid command name" -msgstr "E182: Nome comando non valido" - -msgid "E183: User defined commands must start with an uppercase letter" -msgstr "" -"E183: I comandi definiti dall'utente devono iniziare con lettera maiuscola" - -msgid "E841: Reserved name, cannot be used for user defined command" -msgstr "E841: Nome riservato, non usabile in un comando definito dall'utente" - -msgid "E184: No such user-defined command: %s" -msgstr "E184: Comando definito dall'utente %s inesistente" - -msgid "E180: Invalid address type value: %s" -msgstr "E180: Tipo di indirizzo non valido: %s" - -msgid "E180: Invalid complete value: %s" -msgstr "E180: Valore %s non valido per 'complete'" - -msgid "E468: Completion argument only allowed for custom completion" -msgstr "" -"E468: Argomento di completamento consentito solo per completamento " -"personalizzato" - -msgid "E467: Custom completion requires a function argument" -msgstr "" -"E467: Il completamento personalizzato richiede un argomento di funzione" - msgid "unknown" msgstr "sconosciuto" @@ -1328,19 +1080,19 @@ msgid "Greetings, Vim user!" msgstr "Salve, utente Vim!" msgid "E784: Cannot close last tab page" -msgstr "E784: Non posso chiudere l'ultima linguetta" +msgstr "E784: Non posso chiudere l'ultima pagina di linguette" msgid "Already only one tab page" -msgstr "C' gi una linguetta sola" +msgstr "C' gi un'unica pagina di linguette" msgid "Edit File in new tab page" -msgstr "Apri il File in una nuova finestra" +msgstr "Apri il File in una nuova pagina di linguette" msgid "Edit File in new window" msgstr "Apri il File in una nuova finestra" msgid "Tab page %d" -msgstr "Linguetta %d" +msgstr "Pagina di linguette %d" msgid "No swap file" msgstr "Non posso creare un file di swap" @@ -1373,19 +1125,10 @@ msgid "E466: :winpos requires two number arguments" msgstr "E466: :winpos richiede due argomenti numerici" msgid "E930: Cannot use :redir inside execute()" -msgstr "E930: Non possibile usare :redir all'interno di execute()" +msgstr "E930: Non si pu usare :redir all'interno di execute()" msgid "Save Redirection" -msgstr "Salva Redirezione" - -msgid "Save View" -msgstr "Salva Veduta" - -msgid "Save Session" -msgstr "Salva Sessione" - -msgid "Save Setup" -msgstr "Salva Setup" +msgstr "Salva Ridirezione" msgid "E739: Cannot create directory: %s" msgstr "E739: Non posso creare la directory: %s" @@ -1396,9 +1139,10 @@ msgstr "E189: \"%s\" esiste (aggiungi ! per eseguire comunque)" msgid "E190: Cannot open \"%s\" for writing" msgstr "E190: Non riesco ad aprire \"%s\" in scrittura" +#. set mark msgid "E191: Argument must be a letter or forward/backward quote" msgstr "" -"E191: L'argomento dev'essere una lettera, oppure un apice/apice retroverso" +"E191: L'argomento dev'essere una lettera, oppure un apice/apice inversa" msgid "E192: Recursive use of :normal too deep" msgstr "E192: Uso ricorsivo di :normal troppo esteso" @@ -1424,21 +1168,22 @@ msgid "E498: no :source file name to substitute for \"\"" msgstr "" "E498: nessun nome di file :source trovato da sostituire per \"\"" +msgid "E489: no call stack to substitute for \"\"" +msgstr "E489: nessuna stack di chiamata da sostituire per \"\"" + msgid "E842: no line number to use for \"\"" msgstr "E842: nessun numero di riga da usare per \"\"" msgid "E961: no line number to use for \"\"" msgstr "E961: nessun numero di riga da usare per \"\"" +#, no-c-format msgid "E499: Empty file name for '%' or '#', only works with \":p:h\"" msgstr "E499: Un nome di file nullo per '%' o '#', va bene solo con \":p:h\"" msgid "E500: Evaluates to an empty string" msgstr "E500: Il valore una stringa nulla" -msgid "E195: Cannot open viminfo file for reading" -msgstr "E195: Non posso aprire il file viminfo in lettura" - msgid "Untitled" msgstr "Senza Nome" @@ -1448,6 +1193,7 @@ msgstr "E196: Digrammi non supportati in questa versione" msgid "E608: Cannot :throw exceptions with 'Vim' prefix" msgstr "E608: Impossibile lanciare eccezioni con prefisso 'Vim'" +#. always scroll up, don't overwrite msgid "Exception thrown: %s" msgstr "Eccezione lanciata: %s" @@ -1460,6 +1206,7 @@ msgstr "Eccezione scartata: %s" msgid "%s, line %ld" msgstr "%s, riga %ld" +#. always scroll up, don't overwrite msgid "Exception caught: %s" msgstr "Eccezione intercettata: %s" @@ -1481,21 +1228,13 @@ msgstr "Errore ed interruzione" msgid "Error" msgstr "Errore" +#. if (pending & CSTP_INTERRUPT) msgid "Interrupt" msgstr "Interruzione" msgid "E579: :if nesting too deep" msgstr "E579: nidificazione di :if troppo estesa" -msgid "E580: :endif without :if" -msgstr "E580: :endif senza :if" - -msgid "E581: :else without :if" -msgstr "E581: :else senza :if" - -msgid "E582: :elseif without :if" -msgstr "E582: :elseif senza :if" - msgid "E583: multiple :else" msgstr "E583: :else multipli" @@ -1505,35 +1244,25 @@ msgstr "E584: :elseif dopo :else" msgid "E585: :while/:for nesting too deep" msgstr "E585: nidificazione di :while/:for troppo estesa" -msgid "E586: :continue without :while or :for" -msgstr "E586: :continue senza :while o :for" - -msgid "E587: :break without :while or :for" -msgstr "E587: :break senza :while o :for" - msgid "E732: Using :endfor with :while" msgstr "E732: Uso di :endfor con :while" msgid "E733: Using :endwhile with :for" msgstr "E733: Uso di :endwhile con :for" +msgid "E579: block nesting too deep" +msgstr "E579: nidificazione di blocco troppo estesa" + msgid "E601: :try nesting too deep" msgstr "E601: nidificazione di :try troppo estesa" -msgid "E603: :catch without :try" -msgstr "E603: :catch senza :try" - +#. Give up for a ":catch" after ":finally" and ignore it. +#. Just parse. msgid "E604: :catch after :finally" msgstr "E604: :catch dopo :finally" -msgid "E606: :finally without :try" -msgstr "E606: :finally senza :try" - -msgid "E607: multiple :finally" -msgstr "E607: :finally multipli" - -msgid "E602: :endtry without :try" -msgstr "E602: :endtry senza :try" +msgid "E193: :enddef not inside a function" +msgstr "E193: :enddef non contenuto in una funzione" msgid "E193: :endfunction not inside a function" msgstr "E193: :endfunction non contenuto in una funzione" @@ -1544,36 +1273,8 @@ msgstr "E788: Non consentito aprire ora un altro buffer" msgid "E811: Not allowed to change buffer information now" msgstr "E811: Non consentito modificare informazioni del buffer ora" -msgid "tagname" -msgstr "nome_tag" - -msgid " kind file\n" -msgstr " tipo file\n" - -msgid "'history' option is zero" -msgstr "l'opzione 'history' a zero" - -msgid "" -"\n" -"# %s History (newest to oldest):\n" -msgstr "" -"\n" -"# %s Storia (da pi recente a meno recente):\n" - -msgid "Command Line" -msgstr "Riga di Comando" - -msgid "Search String" -msgstr "Stringa di Ricerca" - -msgid "Expression" -msgstr "Espressione" - -msgid "Input Line" -msgstr "Riga di Input" - -msgid "Debug Line" -msgstr "Riga di Debug" +msgid "[Command Line]" +msgstr "[Riga-di-comando]" msgid "E199: Active window or buffer deleted" msgstr "E199: Finestra attiva o buffer cancellato" @@ -1584,18 +1285,12 @@ msgstr "E812: Gli autocomandi hanno modificato il buffer o il nome del buffer" msgid "Illegal file name" msgstr "Nome di file non consentito" -msgid "is a directory" -msgstr " una directory" - msgid "is not a file" msgstr "non un file" msgid "is a device (disabled with 'opendevice' option)" msgstr " una periferica (disabilitata con l'opzione 'opendevice')" -msgid "[New File]" -msgstr "[File nuovo]" - msgid "[New DIRECTORY]" msgstr "[Nuova DIRECTORY]" @@ -1612,11 +1307,12 @@ msgid "E201: *ReadPre autocommands must not change current buffer" msgstr "E201: Gli autocomandi *ReadPre non devono modificare il buffer in uso" msgid "Vim: Reading from stdin...\n" -msgstr "Vim: Leggo da 'stdin'...\n" +msgstr "Vim: Leggo da stdin...\n" msgid "Reading from stdin..." -msgstr "Leggo da 'stdin'..." +msgstr "Leggo da stdin..." +#. Re-opening the original file failed! msgid "E202: Conversion made file unreadable!" msgstr "E202: La conversione ha reso il file illeggibile!" @@ -1627,7 +1323,7 @@ msgid "[socket]" msgstr "[socket]" msgid "[character special]" -msgstr "[character special]" +msgstr "[speciale carattere]" msgid "[CR missing]" msgstr "[manca CR]" @@ -1635,12 +1331,6 @@ msgstr "[manca CR]" msgid "[long lines split]" msgstr "[righe lunghe divise]" -msgid "[NOT converted]" -msgstr "[NON convertito]" - -msgid "[converted]" -msgstr "[convertito]" - msgid "[CONVERSION ERROR in line %ld]" msgstr "[ERRORE DI CONVERSIONE alla riga %ld]" @@ -1659,130 +1349,6 @@ msgstr "Conversione fallita con 'charconvert'" msgid "can't read output of 'charconvert'" msgstr "non riesco a leggere il risultato di 'charconvert'" -msgid "E676: No matching autocommands for acwrite buffer" -msgstr "E676: Nessun autocomando corrispondente per buffer acwrite" - -msgid "E203: Autocommands deleted or unloaded buffer to be written" -msgstr "E203: Buffer in scrittura cancellato o scaricato dagli autocomandi" - -msgid "E204: Autocommand changed number of lines in unexpected way" -msgstr "E204: L'autocomando ha modificato numero righe in maniera imprevista" - -msgid "NetBeans disallows writes of unmodified buffers" -msgstr "NetBeans non permette la scrittura di un buffer non modificato" - -msgid "Partial writes disallowed for NetBeans buffers" -msgstr "Scrittura parziale disabilitata per i buffer di NetBeans" - -msgid "is not a file or writable device" -msgstr "non un file o un dispositivo su cui si possa scrivere" - -msgid "writing to device disabled with 'opendevice' option" -msgstr "scrittura su periferica disabilitata con l'opzione 'opendevice'" - -msgid "is read-only (add ! to override)" -msgstr " in sola lettura (aggiungi ! per eseguire comunque)" - -msgid "E506: Can't write to backup file (add ! to override)" -msgstr "" -"E506: Non posso scrivere sul file di backup (aggiungi ! per eseguire " -"comunque)" - -msgid "E507: Close error for backup file (add ! to override)" -msgstr "" -"E507: Errore in chiusura sul file di backup (aggiungi ! per eseguire " -"comunque)" - -msgid "E508: Can't read file for backup (add ! to override)" -msgstr "" -"E508: Non riesco a leggere il file di backup (aggiungi ! per eseguire " -"comunque)" - -msgid "E509: Cannot create backup file (add ! to override)" -msgstr "" -"E509: Non posso creare il file di backup (aggiungi ! per eseguire comunque)" - -msgid "E510: Can't make backup file (add ! to override)" -msgstr "" -"E510: Non posso fare il file di backup (aggiungi ! per eseguire comunque)" - -msgid "E214: Can't find temp file for writing" -msgstr "E214: Non riesco a trovare un file 'temp' su cui scrivere" - -msgid "E213: Cannot convert (add ! to write without conversion)" -msgstr "" -"E213: Non riesco a convertire (aggiungi ! per scrivere senza conversione)" - -msgid "E166: Can't open linked file for writing" -msgstr "E166: Non posso aprire il file collegato ('linked') in scrittura" - -msgid "E212: Can't open file for writing" -msgstr "E212: Non posso aprire il file in scrittura" - -msgid "E949: File changed while writing" -msgstr "E949: File modificato in fase di riscrittura" - -msgid "E512: Close failed" -msgstr "E512: Chiusura fallita" - -msgid "E513: write error, conversion failed (make 'fenc' empty to override)" -msgstr "" -"E513: errore in scrittura, conversione fallita (rendere 'fenc' nullo per " -"eseguire comunque)" - -msgid "" -"E513: write error, conversion failed in line %ld (make 'fenc' empty to " -"override)" -msgstr "" -"E513: errore in scrittura, conversione fallita alla riga %ld (rendere 'fenc' " -"nullo per eseguire comunque)" - -msgid "E514: write error (file system full?)" -msgstr "E514: errore in scrittura ('File System' pieno?)" - -msgid " CONVERSION ERROR" -msgstr " ERRORE DI CONVERSIONE" - -msgid " in line %ld;" -msgstr " alla riga %ld;" - -msgid "[Device]" -msgstr "[Dispositivo]" - -msgid "[New]" -msgstr "[Nuovo]" - -msgid " [a]" -msgstr " [a]" - -msgid " appended" -msgstr " aggiunto in fondo" - -msgid " [w]" -msgstr " [s]" - -msgid " written" -msgstr " scritti" - -msgid "E205: Patchmode: can't save original file" -msgstr "E205: Patchmode: non posso salvare il file originale" - -msgid "E206: patchmode: can't touch empty original file" -msgstr "E206: patchmode: non posso alterare il file vuoto originale" - -msgid "E207: Can't delete backup file" -msgstr "E207: Non riesco a cancellare il file di backup" - -msgid "" -"\n" -"WARNING: Original file may be lost or damaged\n" -msgstr "" -"\n" -"AVVISO: Il file originale pu essere perso o danneggiato\n" - -msgid "don't quit the editor until the file is successfully written!" -msgstr "non uscire dall'editor prima della fine della scrittura del file!" - msgid "[dos]" msgstr "[DOS]" @@ -1806,10 +1372,10 @@ msgid_plural "%ld lines, " msgstr[0] "%ld riga," msgstr[1] "%ld righe," -msgid "%lld character" -msgid_plural "%lld characters" -msgstr[0] "%lld carattere" -msgstr[1] "%lld caratteri" +msgid "%lld byte" +msgid_plural "%lld bytes" +msgstr[0] "%lld byte" +msgstr[1] "%lld byte" msgid "[noeol]" msgstr "[noeol]" @@ -1817,12 +1383,6 @@ msgstr "[noeol]" msgid "[Incomplete last line]" msgstr "[Manca carattere di fine riga]" -msgid "WARNING: The file has been changed since reading it!!!" -msgstr "AVVISO: File modificato dopo essere stato letto!!!" - -msgid "Do you really want to write to it" -msgstr "Vuoi davvero riscriverlo" - msgid "E208: Error writing to \"%s\"" msgstr "E208: Errore in scrittura di \"%s\"" @@ -1873,10 +1433,10 @@ msgstr "" "&Carica File" msgid "E462: Could not prepare for reloading \"%s\"" -msgstr "E462: Non riesco a preparare per ri-caricare \"%s\"" +msgstr "E462: Non riesco a preparare per ricaricare \"%s\"" msgid "E321: Could not reload \"%s\"" -msgstr "E321: Non riesco a ri-caricare \"%s\"" +msgstr "E321: Non riesco a ricaricare \"%s\"" msgid "E219: Missing {." msgstr "E219: Manca {." @@ -1884,6 +1444,31 @@ msgstr "E219: Manca {." msgid "E220: Missing }." msgstr "E220: Manca }." +msgid "" +msgstr "" + +msgid "E655: Too many symbolic links (cycle?)" +msgstr "E655: Troppi link simbolici (circolarit?)" + +msgid "writefile() first argument must be a List or a Blob" +msgstr "il primo argomento di writefile() dev'essere una Lista o un Blob" + +msgid "Select Directory dialog" +msgstr "Scelta Directory dialogo" + +msgid "Save File dialog" +msgstr "Salva File dialogo" + +msgid "Open File dialog" +msgstr "Apri File dialogo" + +#. TODO: non-GUI file selector here +msgid "E338: Sorry, no file browser in console mode" +msgstr "E338: Spiacente, niente esplorazione file in modalit console" + +msgid "no matches" +msgstr "nessuna corrispondenza" + msgid "E854: path too long for completion" msgstr "E854: percorso troppo lungo per il completamento" @@ -1912,6 +1497,9 @@ msgstr "E446: Nessun nome file sotto il cursore" msgid "E447: Can't find file \"%s\" in path" msgstr "E447: Non riesco a trovare il file \"%s\" nel percorso" +msgid "E808: Number or Float required" +msgstr "E808: Richiesto un Numero o un Numero-a-virgola-mobile" + msgid "E490: No fold found" msgstr "E490: Non trovo alcuna piegatura" @@ -1926,32 +1514,16 @@ msgid_plural "+--%3ld lines folded " msgstr[0] "+--%3ld riga piegata " msgstr[1] "+--%3ld righe piegate " +msgid "+-%s%3ld line: " +msgid_plural "+-%s%3ld lines: " +msgstr[0] "+-%s%3ld riga: " +msgstr[1] "+-%s%3ld righe: " + msgid "E222: Add to read buffer" msgstr "E222: Aggiunto al buffer di lettura" msgid "E223: recursive mapping" -msgstr "E223: mapping ricorsivo" - -msgid "E224: global abbreviation already exists for %s" -msgstr "E224: una abbreviazione globale gi esiste per %s" - -msgid "E225: global mapping already exists for %s" -msgstr "E225: un mapping globale gi esiste per %s" - -msgid "E226: abbreviation already exists for %s" -msgstr "E226: una abbreviazione gi esiste per %s" - -msgid "E227: mapping already exists for %s" -msgstr "E227: un mapping gi esiste per %s" - -msgid "No abbreviation found" -msgstr "Non trovo l'abbreviazione" - -msgid "No mapping found" -msgstr "Non trovo il mapping" - -msgid "E228: makemap: Illegal mode" -msgstr "E228: makemap: modo non consentito" +msgstr "E223: mappatura ricorsiva" msgid "E851: Failed to create a new process for the GUI" msgstr "E851: Creazione di un nuovo processo fallita per la GUI" @@ -1966,7 +1538,7 @@ msgid "E230: Cannot read from \"%s\"" msgstr "E230: Non posso leggere da \"%s\"" msgid "E665: Cannot start GUI, no valid font found" -msgstr "E665: Non posso inizializzare la GUI, nessun font valido trovato" +msgstr "E665: Non posso inizializzare la GUI, nessun carattere valido trovato" msgid "E231: 'guifontwide' invalid" msgstr "E231: 'guifontwide' non valido" @@ -1974,9 +1546,6 @@ msgstr "E231: 'guifontwide' non valido" msgid "E599: Value of 'imactivatekey' is invalid" msgstr "E599: Valore di 'imactivatekey' non valido" -msgid "E254: Cannot allocate color %s" -msgstr "E254: Non riesco ad allocare il colore %s" - msgid "No match at cursor, finding next" msgstr "Nessuna corrispondenza al cursore, cerco la prossima" @@ -1984,7 +1553,7 @@ msgid " " msgstr " " msgid "E616: vim_SelFile: can't get font %s" -msgstr "E616: vim_SelFile: non riesco a trovare il font %s" +msgstr "E616: vim_SelFile: non riesco a trovare il carattere %s" msgid "E614: vim_SelFile: can't return to current directory" msgstr "E614: vim_SelFile: non posso tornare alla directory in uso" @@ -2002,7 +1571,7 @@ msgid "Cancel" msgstr "Non eseguire" msgid "Scrollbar Widget: Could not get geometry of thumb pixmap." -msgstr "Scrollbar Widget: Non riesco a ottenere geometria del 'thumb pixmap'." +msgstr "Scrollbar Widget: Non riesco a ottenere geometria di 'thumb pixmap'." msgid "Vim dialog" msgstr "Dialogo Vim" @@ -2010,15 +1579,15 @@ msgstr "Dialogo Vim" msgid "E232: Cannot create BalloonEval with both message and callback" msgstr "E232: Non riesco a creare 'BalloonEval' con sia messaggio che callback" -msgid "_Cancel" -msgstr "_Annulla" - msgid "_Save" msgstr "_Salva" msgid "_Open" msgstr "_Apri" +msgid "_Cancel" +msgstr "_Annulla" + msgid "_OK" msgstr "_OK" @@ -2052,15 +1621,18 @@ msgstr "Trova cosa:" msgid "Replace with:" msgstr "Sostituisci con:" +#. whole word only button msgid "Match whole word only" msgstr "Cerca solo la parola intera" +#. match case button msgid "Match case" msgstr "Maiuscole/minuscole" msgid "Direction" msgstr "Direzione" +#. 'Up' and 'Down' buttons msgid "Up" msgstr "Su" @@ -2080,7 +1652,7 @@ msgid "_Close" msgstr "_Chiudi" msgid "Vim: Received \"die\" request from session manager\n" -msgstr "Vim: Ricevuta richiesta \"die\" dal session manager\n" +msgstr "Vim: Ricevuta richiesta \"die\" dal Session Manager\n" msgid "Close tab" msgstr "Chiudi linguetta" @@ -2139,11 +1711,13 @@ msgstr "Trova stringa" msgid "Find & Replace" msgstr "Trova & Sostituisci" +#. 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 "Non Utilizzato" msgid "Directory\t*.nothing\n" -msgstr "Directory\t*.nothing\n" +msgstr "Directory\t*.niente\n" msgid "E671: Cannot find window title \"%s\"" msgstr "E671: Non trovo il titolo della finestra \"%s\"" @@ -2151,22 +1725,25 @@ msgstr "E671: Non trovo il titolo della finestra \"%s\"" msgid "E243: Argument not supported: \"-%s\"; Use the OLE version." msgstr "E243: Argomento non supportato: \"-%s\"; Usa la versione OLE." +msgid "E988: GUI cannot be used. Cannot execute gvim.exe." +msgstr "E988: GUI non utilizzabile. Non riesco a eseguire gvim.exe." + msgid "E672: Unable to open window inside MDI application" msgstr "E672: Non posso aprire la finestra in un'applicazione MDI" msgid "Vim E458: Cannot allocate colormap entry, some colors may be incorrect" msgstr "" -"Vim E458: Non riesco ad allocare elemento di colormap, possibili colori " -"errati" +"Vim E458: Non riesco ad allocare elemento di colormap, alcuni colori possono " +"essere errati" msgid "E250: Fonts for the following charsets are missing in fontset %s:" msgstr "E250: Mancano descrizioni per i seguenti caratteri nel font: %s" msgid "E252: Fontset name: %s" -msgstr "E252: Nome fontset: %s" +msgstr "E252: Nome carattere: %s" msgid "Font '%s' is not fixed-width" -msgstr "Il font '%s' non di larghezza fissa" +msgstr "Il carattere '%s' non di larghezza fissa" msgid "E253: Fontset name: %s" msgstr "E253: Nome fontset: %s" @@ -2186,8 +1763,26 @@ msgstr "Larghezza di Font0: %d" msgid "Font%d width: %d" msgstr "Larghezza di Font%d: %d" +msgid "E284: Cannot set IC values" +msgstr "E284: Non posso assegnare valori IC" + +msgid "E285: Failed to create input context" +msgstr "E285: Creazione di un contesto di input fallita" + +msgid "E286: Failed to open input method" +msgstr "E286: Apertura Metodo di Input fallita" + +msgid "E287: Warning: Could not set destroy callback to IM" +msgstr "E287: Avviso: Non posso assegnare IM a 'destroy callback'" + +msgid "E288: input method doesn't support any style" +msgstr "E288: Metodo di Input non sopporta alcuno stile" + +msgid "E289: input method doesn't support my preedit type" +msgstr "E289: Metodo di Input non supporta il mio tipo di preedit" + msgid "Invalid font specification" -msgstr "Specifica di font non valida" +msgstr "Specifica di carattere non valida" msgid "&Dismiss" msgstr "&D Non ora" @@ -2196,11 +1791,12 @@ msgid "no specific match" msgstr "nessuna corrispondenza specifica" msgid "Vim - Font Selector" -msgstr "Vim - Selettore Font" +msgstr "Vim - Selettore Caratteri" msgid "Name:" msgstr "Nome:" +#. create toggle button msgid "Show size in Points" msgstr "Mostra dimensione in Punti" @@ -2208,7 +1804,7 @@ msgid "Encoding:" msgstr "Codifica:" msgid "Font:" -msgstr "Font:" +msgstr "Carattere:" msgid "Style:" msgstr "Stile:" @@ -2216,9 +1812,6 @@ msgstr "Stile:" msgid "Size:" msgstr "Dimensione:" -msgid "E256: Hangul automata ERROR" -msgstr "E256: ERRORE processore Hangul" - msgid "E550: Missing colon" msgstr "E550: Manca ':'" @@ -2226,7 +1819,7 @@ msgid "E551: Illegal component" msgstr "E551: Componente non consentito" msgid "E552: digit expected" -msgstr "E552: aspettavo un numero" +msgstr "E552: Atteso un numero" msgid "Page %d" msgstr "Pagina %d" @@ -2247,7 +1840,7 @@ msgid "Printing aborted" msgstr "Stampa non completata" msgid "E455: Error writing to PostScript output file" -msgstr "E455: Errore in scrittura a file PostScript di output" +msgstr "E455: Errore in scrittura su file PostScript di output" msgid "E624: Can't open file \"%s\"" msgstr "E624: Non riesco ad aprire il file \"%s\"" @@ -2271,7 +1864,7 @@ msgid "E674: printmbcharset cannot be empty with multi-byte encoding." msgstr "E674: printmbcharset non pu essere nullo con codifica multi-byte." msgid "E675: No default font specified for multi-byte printing." -msgstr "E675: Font predefinito non specificato per stampa multi-byte." +msgstr "E675: Carattere predefinito non specificato per stampa multi-byte." msgid "E324: Can't open PostScript output file" msgstr "E324: Non riesco ad aprire file PostScript di output" @@ -2300,6 +1893,93 @@ msgstr "E365: Non riesco ad aprire file PostScript" msgid "Print job sent." msgstr "Richiesta di stampa inviata." +msgid "E478: Don't panic!" +msgstr "E478: Non lasciarti prendere dal panico!" + +msgid "E661: Sorry, no '%s' help for %s" +msgstr "E661: Spiacente, nessun aiuto '%s' per %s" + +msgid "E149: Sorry, no help for %s" +msgstr "E149: Spiacente, nessun aiuto per %s" + +msgid "Sorry, help file \"%s\" not found" +msgstr "Spiacente, non trovo file di aiuto \"%s\"" + +msgid "E151: No match: %s" +msgstr "E151: Nessuna corrispondenza: %s" + +msgid "E152: Cannot open %s for writing" +msgstr "E152: Non posso aprire %s in scrittura" + +msgid "E153: Unable to open %s for reading" +msgstr "E153: Non riesco ad aprire %s in lettura" + +msgid "E670: Mix of help file encodings within a language: %s" +msgstr "E670: Codifiche diverse fra file di aiuto nella stessa lingua: %s" + +msgid "E154: Duplicate tag \"%s\" in file %s/%s" +msgstr "E154: Tag duplicato \"%s\" nel file %s/%s" + +msgid "E150: Not a directory: %s" +msgstr "E150: %s non una directory" + +msgid "E679: recursive loop loading syncolor.vim" +msgstr "E679: ciclo ricorsivo nel caricamento di syncolor.vim" + +msgid "E411: highlight group not found: %s" +msgstr "E411: gruppo evidenziazione non trovato: %s" + +msgid "E412: Not enough arguments: \":highlight link %s\"" +msgstr "E412: Argomenti non sufficienti: \":highlight link %s\"" + +msgid "E413: Too many arguments: \":highlight link %s\"" +msgstr "E413: Troppi argomenti: \":highlight link %s\"" + +msgid "E414: group has settings, highlight link ignored" +msgstr "E414: 'group' ha impostazioni, 'highlight link' ignorato" + +msgid "E415: unexpected equal sign: %s" +msgstr "E415: segno '=' inatteso: %s" + +msgid "E416: missing equal sign: %s" +msgstr "E416: manca segno '=': %s" + +msgid "E417: missing argument: %s" +msgstr "E417: manca argomento: %s" + +msgid "E418: Illegal value: %s" +msgstr "E418: Valore non consentito: %s" + +msgid "E419: FG color unknown" +msgstr "E419: colore di testo sconosciuto" + +msgid "E420: BG color unknown" +msgstr "E420: colore di sfondo sconosciuto" + +msgid "E453: UL color unknown" +msgstr "E453: colore UL sconosciuto" + +msgid "E421: Color name or number not recognized: %s" +msgstr "E421: Numero o nome di colore non riconosciuto: %s" + +msgid "E422: terminal code too long: %s" +msgstr "E422: codice terminale troppo lungo: %s" + +msgid "E423: Illegal argument: %s" +msgstr "E423: Argomento non consentito: %s" + +msgid "E424: Too many different highlighting attributes in use" +msgstr "E424: Troppi gruppi evidenziazione differenti in uso" + +msgid "E669: Unprintable character in group name" +msgstr "E669: Carattere non stampabile in un nome di gruppo" + +msgid "W18: Invalid character in group name" +msgstr "W18: Carattere non valido in un nome di gruppo" + +msgid "E849: Too many highlight and syntax groups" +msgstr "E849: Troppi gruppi di evidenziazione e sintassi" + msgid "Add a new database" msgstr "Aggiungi un nuovo database" @@ -2322,7 +2002,7 @@ msgid "E560: Usage: cs[cope] %s" msgstr "E560: Uso: cs[cope] %s" msgid "This cscope command does not support splitting the window.\n" -msgstr "Questo comando cscope non gestisce la divisione delle schermo.\n" +msgstr "Questo comando cscope non gestisce la divisione della finestra.\n" msgid "E562: Usage: cstag " msgstr "E562: Uso: cstag " @@ -2349,7 +2029,7 @@ msgid "E561: unknown cscope search type" msgstr "E561: tipo di ricerca cscope sconosciuta" msgid "E566: Could not create cscope pipes" -msgstr "E566: Non riesco a creare pipes cscope" +msgstr "E566: Non riesco a creare pipe cscope" msgid "E622: Could not fork for cscope" msgstr "E622: Non riesco a fare fork per cscope" @@ -2422,6 +2102,7 @@ msgstr "E261: connessione cscope %s non trovata" msgid "cscope connection %s closed" msgstr "connessione cscope %s chiusa" +#. should not reach here msgid "E570: fatal error in cs_manage_matches" msgstr "E570: errore irreparabile in cs_manage_matches" @@ -2480,7 +2161,7 @@ msgid "hidden option" msgstr "opzione nascosta" msgid "unknown option" -msgstr "opzione inesistente" +msgstr "opzione sconosciuta" msgid "window index is out of range" msgstr "indice della finestra non nell'intervallo" @@ -2516,7 +2197,7 @@ msgid "window is invalid" msgstr "finestra non valida" msgid "linenr out of range" -msgstr "numero riga non nell'intervallo" +msgstr "numero di riga non nell'intervallo" msgid "not allowed in the Vim sandbox" msgstr "non consentito in ambiente protetto" @@ -2545,7 +2226,7 @@ msgid "E837: This Vim cannot execute :py3 after using :python" msgstr "E837: Impossibile usare ora :py3 dopo aver usato :python" msgid "E265: $_ must be an instance of String" -msgstr "E265: $_ dev'essere un'istanza di String" +msgstr "E265: $_ dev'essere un'istanza di Stringa" msgid "" "E266: Sorry, this command is disabled, the Ruby library could not be loaded." @@ -2554,16 +2235,16 @@ msgstr "" "programmi Ruby." msgid "E267: unexpected return" -msgstr "E267: return imprevisto" +msgstr "E267: return inatteso" msgid "E268: unexpected next" -msgstr "E268: next imprevisto" +msgstr "E268: next inatteso" msgid "E269: unexpected break" -msgstr "E269: break imprevisto" +msgstr "E269: break inatteso" msgid "E270: unexpected redo" -msgstr "E270: redo imprevisto" +msgstr "E270: redo inatteso" msgid "E271: retry outside of rescue clause" msgstr "E271: retry fuori da clausola rescue" @@ -2580,14 +2261,15 @@ msgstr "numero buffer non valido" msgid "not implemented yet" msgstr "non ancora implementato" +#. ??? msgid "cannot set line(s)" -msgstr "non posso impostare riga(he)" +msgstr "non posso impostare riga/he" msgid "invalid mark name" -msgstr "nome di mark non valido" +msgstr "nome di marcatura non valido" msgid "mark not set" -msgstr "mark non impostato" +msgstr "marcatura non impostata" msgid "row %d column %d" msgstr "riga %d colonna %d" @@ -2596,13 +2278,13 @@ msgid "cannot insert/append line" msgstr "non riesco a inserire/aggiungere riga" msgid "line number out of range" -msgstr "numero riga non nell'intervallo" +msgstr "numero di riga non nell'intervallo" msgid "unknown flag: " -msgstr "opzione inesistente: " +msgstr "flag sconosciuto: " msgid "unknown vimOption" -msgstr "'vimOption' inesistente" +msgstr "'vimOption' sconosciuta" msgid "keyboard interrupt" msgstr "interruzione dalla tastiera" @@ -2616,6 +2298,7 @@ msgid "" msgstr "" "non posso registrare comando callback: buffer/finestra gi in cancellazione" +#. This should never happen. Famous last word? msgid "" "E280: TCL FATAL ERROR: reflist corrupt!? Please report this to vim-dev@vim." "org" @@ -2652,12 +2335,22 @@ msgstr "E573: Identificativo di server non valido: %s" msgid "E251: VIM instance registry property is badly formed. Deleted!" msgstr "E251: Propriet registry relative a VIM non adeguate. Cancellate!" -msgid " Keyword completion (^N^P)" -msgstr " Completamento Keyword (^N^P)" +msgid "%ld lines to indent... " +msgstr "%ld righe da rientrare... " +msgid "%ld line indented " +msgid_plural "%ld lines indented " +msgstr[0] "%ld riga rientrata " +msgstr[1] "%ld righe rientrate " + +msgid " Keyword completion (^N^P)" +msgstr " Completamento parola (^N^P)" + +#. CTRL_X_NORMAL, ^P/^N compl. msgid " ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)" msgstr " modalit ^X (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)" +#. CTRL_X_SCROLL: depends on state msgid " Whole line completion (^L^N^P)" msgstr " Completamento riga intera (^L^N^P)" @@ -2668,11 +2361,12 @@ msgid " Tag completion (^]^N^P)" msgstr " Completamento Tag (^]^N^P)" msgid " Path pattern completion (^N^P)" -msgstr " Completamento modello Path (^N^P)" +msgstr " Completamento Modello percorso (^N^P)" msgid " Definition completion (^D^N^P)" msgstr " Completamento Definizione (^D^N^P)" +#. CTRL_X_FINISHED msgid " Dictionary completion (^K^N^P)" msgstr " Completamento Dizionario (^K^N^P)" @@ -2680,7 +2374,7 @@ msgid " Thesaurus completion (^T^N^P)" msgstr " Completamento Thesaurus (^T^N^P)" msgid " Command-line completion (^V^N^P)" -msgstr " Completamento riga comandi (^V^N^P)" +msgstr " Completamento riga-di-comando (^V^N^P)" msgid " User defined completion (^U^N^P)" msgstr " Completamento definito dall'utente (^U^N^P)" @@ -2692,14 +2386,18 @@ msgid " Spelling suggestion (s^N^P)" msgstr " Suggerimento ortografico (s^N^P)" msgid " Keyword Local completion (^N^P)" -msgstr " Completamento Keyword Locale (^N^P)" +msgstr " Completamento Parola Locale (^N^P)" +#. values for cp_flags +#. the original text when the expansion begun +#. cp_fname is allocated +#. use CONT_S_IPOS for compl_cont_status +#. ins_compl_equal() always returns TRUE +#. ins_compl_equal() ignores case +#. use fast_breakcheck instead of ui_breakcheck msgid "Hit end of paragraph" msgstr "Giunto alla fine del paragrafo" -msgid "E839: Completion function changed window" -msgstr "E839: La funzione di completamento ha modificato la finestra" - msgid "E840: Completion function deleted text" msgstr "E840: La funzione di completamento ha eliminato del testo" @@ -2710,7 +2408,7 @@ msgid "'thesaurus' option is empty" msgstr "l'opzione 'thesaurus' non impostata" msgid "Scanning dictionary: %s" -msgstr "Scansione dizionario: %s" +msgstr "Scansione Dizionario: %s" msgid " (insert) Scroll (^E/^Y)" msgstr " (inserisci) Scroll (^E/^Y)" @@ -2718,6 +2416,10 @@ msgstr " (inserisci) Scroll (^E/^Y)" msgid " (replace) Scroll (^E/^Y)" msgstr " (sostituisci) Scroll (^E/^Y)" +msgid "E785: complete() can only be used in Insert mode" +msgstr "E785: complete() pu essere usata solo in modalit inserimento" + +#. reset in msg_trunc_attr() msgid "Scanning: %s" msgstr "Scansione: %s" @@ -2730,6 +2432,9 @@ msgstr "corrispondenza nel file" msgid " Adding" msgstr " Aggiungo" +#. 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 "-- Ricerca..." @@ -2748,14 +2453,77 @@ msgstr "corrispondenza %d di %d" msgid "match %d" msgstr "corrispondenza %d" +msgid "E920: _io file requires _name to be set" +msgstr "E920: il file _io necessita di impostare _name" + +msgid "E915: in_io buffer requires in_buf or in_name to be set" +msgstr "E915: il buffer in_io necessita di impostare in_buf o in_name" + +msgid "E918: buffer must be loaded: %s" +msgstr "E918: il buffer dev'essere caricato: %s" + +msgid "E916: not a valid job" +msgstr "E916: job non valido" + +msgid "E491: json decode error at '%s'" +msgstr "E491: errore di decodifica json a '%s'" + msgid "E938: Duplicate key in JSON: \"%s\"" msgstr "E938: Chiave duplicata in JSON: \"%s\"" +msgid "E899: Argument of %s must be a List or Blob" +msgstr "E899: L'argomento di %s dev'essere una Lista o un Blob" + +msgid "E900: maxdepth must be non-negative number" +msgstr "E900: maxdepth dev'essere un numero non-negativo" + +msgid "flatten() argument" +msgstr "argomento di flatten()" + msgid "E696: Missing comma in List: %s" msgstr "E696: Manca virgola nella Lista: %s" -msgid "E697: Missing end of List ']': %s" -msgstr "E697: Manca ']' a fine Lista: %s" +msgid "sort() argument" +msgstr "argomento di sort()" + +msgid "uniq() argument" +msgstr "argomento di uniq()" + +msgid "E702: Sort compare function failed" +msgstr "E702: Funzione confronto in sort fallita" + +msgid "E882: Uniq compare function failed" +msgstr "E882: Funzione confronto in uniq fallita" + +msgid "map() argument" +msgstr "argomento di map()" + +msgid "mapnew() argument" +msgstr "argomento di mapnew()" + +msgid "filter() argument" +msgstr "argomento di filter()" + +msgid "add() argument" +msgstr "argomento di add()" + +msgid "extendnew() argument" +msgstr "argomento di extendnew()" + +msgid "insert() argument" +msgstr "argomento di insert()" + +msgid "remove() argument" +msgstr "argomento di remove()" + +msgid "reverse() argument" +msgstr "argomento di reverse()" + +msgid "Current %slanguage: \"%s\"" +msgstr "Lingua %sin uso: \"%s\"" + +msgid "E197: Cannot set language to \"%s\"" +msgstr "E197: Non posso impostare lingua a \"%s\"" msgid "Unknown option argument" msgstr "Argomento di opzione sconosciuto" @@ -2809,6 +2577,7 @@ msgstr "Vim: Avviso: Output non diretto a un terminale\n" msgid "Vim: Warning: Input is not from a terminal\n" msgstr "Vim: Avviso: Input non proveniente da un terminale\n" +#. just in case.. msgid "pre-vimrc command line" msgstr "riga comandi prima di vimrc" @@ -2903,25 +2672,25 @@ msgid "-d\t\t\tDiff mode (like \"vimdiff\")" msgstr "-d\t\t\tModalit Diff (come \"vimdiff\")" msgid "-y\t\t\tEasy mode (like \"evim\", modeless)" -msgstr "-y\t\t\tModalit Facile (come \"evim\", senza modalit)" +msgstr "-y\t\t\tModo Facile (come \"evim\", senza modi)" msgid "-R\t\t\tReadonly mode (like \"view\")" -msgstr "-R\t\t\tModalit Sola Lettura (come \"view\")" +msgstr "-R\t\t\tModo Sola-Lettura (come \"view\")" msgid "-Z\t\t\tRestricted mode (like \"rvim\")" msgstr "-Z\t\t\tModalit Ristretta (come \"rvim\")" msgid "-m\t\t\tModifications (writing files) not allowed" -msgstr "-m\t\t\tRiscritture del file non consentita" +msgstr "-m\t\t\tModifiche (riscritture file) non consentita" msgid "-M\t\t\tModifications in text not allowed" -msgstr "-M\t\t\tModifiche nel file non consentite" +msgstr "-M\t\t\tModifiche nel testo non consentite" msgid "-b\t\t\tBinary mode" msgstr "-b\t\t\tModalit Binaria" msgid "-l\t\t\tLisp mode" -msgstr "-l\t\t\tModalit Lisp" +msgstr "-l\t\t\tModo Lisp" msgid "-C\t\t\tCompatible with Vi: 'compatible'" msgstr "-C\t\t\tCompatibile con Vi: 'compatible'" @@ -2978,13 +2747,13 @@ msgid "--noplugin\t\tDon't load plugin scripts" msgstr "--noplugin\t\tNon caricare script plugin" msgid "-p[N]\t\tOpen N tab pages (default: one for each file)" -msgstr "-o[N]\t\tApri N linguette (predefinito: una per ogni file)" +msgstr "-o[N]\t\tApri N pagine di linguette (predefinito: una per ogni file)" msgid "-o[N]\t\tOpen N windows (default: one for each file)" msgstr "-o[N]\t\tApri N finestre (predefinito: una per ogni file)" msgid "-O[N]\t\tLike -o but split vertically" -msgstr "-O[N]\t\tCome -o ma dividi le finestre in verticale" +msgstr "-O[N]\t\tCome -o, ma dividi le finestre in verticale" msgid "+\t\t\tStart at end of file" msgstr "+\t\t\tPosizionati alla fine del file" @@ -3030,7 +2799,7 @@ msgstr "--remote-silent Stessa cosa, ignora se non esiste un server" msgid "" "--remote-wait As --remote but wait for files to have been edited" msgstr "" -"--remote-wait Come --remote ma aspetta che i file siano elaborati" +"--remote-wait Come --remote, ma aspetta che i file siano elaborati" msgid "" "--remote-wait-silent Same, don't complain if there is no server" @@ -3040,8 +2809,8 @@ msgstr "" msgid "" "--remote-tab[-wait][-silent] As --remote but use tab page per file" msgstr "" -"--remote-tab[-wait][-silent] Come --remote ma apre una linguetta per " -"file" +"--remote-tab[-wait][-silent] Come --remote, ma apre una pagina di " +"linguette per file" msgid "--remote-send \tSend to a Vim server and exit" msgstr "--remote-send \tInvia a un server Vim ed esci" @@ -3121,11 +2890,10 @@ msgid "-borderwidth \tUse a border width of (also: -bw)" msgstr "-borderwidth \tUsa larghezza per bordo (anche: -bw)" msgid "-scrollbarwidth Use a scrollbar width of (also: -sw)" -msgstr "" -"-scrollbarwidth Usa larghezza per scrollbar (anche: -sw)" +msgstr "-scrollbarwidth Usa larghezza per scorrere (anche: -sw)" msgid "-menuheight \tUse a menu bar height of (also: -mh)" -msgstr "-menuheight \tUsa altezza per barra menu (anche: -mh)" +msgstr "-menuheight \tUsa altezza per barra men (anche: -mh)" msgid "-reverse\t\tUse reverse video (also: -rv)" msgstr "-reverse\t\tUsa colori invertiti (anche: -rv)" @@ -3163,30 +2931,43 @@ msgstr "-P \tApri Vim in un'applicazione padre" msgid "--windowid \tOpen Vim inside another win32 widget" msgstr "--windowid \tApri Vim dentro un altro widget win32" -msgid "No display" -msgstr "Manca display" +msgid "E224: global abbreviation already exists for %s" +msgstr "E224: una abbreviazione globale gi esiste per %s" -msgid ": Send failed.\n" -msgstr ": Invio fallito.\n" +msgid "E225: global mapping already exists for %s" +msgstr "E225: una mappatura globale gi esiste per %s" -msgid ": Send failed. Trying to execute locally\n" -msgstr ": Invio fallito. Tento di eseguire localmente\n" +msgid "E226: abbreviation already exists for %s" +msgstr "E226: un'abbreviazione gi esiste per %s" -msgid "%d of %d edited" -msgstr "%d di %d elaborato" +msgid "E227: mapping already exists for %s" +msgstr "E227: una mappatura gi esiste per %s" -msgid "No display: Send expression failed.\n" -msgstr "Nessun display: Invio di espressione fallito.\n" +msgid "No abbreviation found" +msgstr "Non trovo l'abbreviazione" -msgid ": Send expression failed.\n" -msgstr ": Invio di espressione fallito.\n" +msgid "No mapping found" +msgstr "Non trovo la mappatura" + +msgid "E228: makemap: Illegal mode" +msgstr "E228: makemap: modo non consentito" + +msgid "E460: entries missing in mapset() dict argument" +msgstr "E460: elemento non presente nell'argomento dict di mapset()" + +msgid "E357: 'langmap': Matching character missing for %s" +msgstr "E357: 'langmap': Manca carattere corrispondente per %s" + +msgid "E358: 'langmap': Extra characters after semicolon: %s" +msgstr "E358: 'langmap': Caratteri in pi dopo il ';': %s" msgid "No marks set" -msgstr "Nessun mark impostato" +msgstr "Nessuna marcatura impostata" msgid "E283: No marks matching \"%s\"" -msgstr "E283: Nessun mark corrispondente a \"%s\"" +msgstr "E283: Nessuna marcatura corrispondente a \"%s\"" +#. Highlight title msgid "" "\n" "mark line col file/text" @@ -3194,6 +2975,7 @@ msgstr "" "\n" "mark riga col.file/testo" +#. Highlight title msgid "" "\n" " jump line col file/text" @@ -3201,6 +2983,7 @@ msgstr "" "\n" " salt.riga col.file/testo" +#. Highlight title msgid "" "\n" "change line col text" @@ -3208,51 +2991,27 @@ msgstr "" "\n" "modif riga col testo" -msgid "" -"\n" -"# File marks:\n" -msgstr "" -"\n" -"# File mark:\n" +msgid "E799: Invalid ID: %d (must be greater than or equal to 1)" +msgstr "E799: ID non valido: %d (dev'essere maggiore o uguale a 1)" -msgid "" -"\n" -"# Jumplist (newest first):\n" -msgstr "" -"\n" -"# Jumplist (dai pi recenti):\n" +msgid "E801: ID already taken: %d" +msgstr "E801: ID gi utilizzato: %d" -msgid "" -"\n" -"# History of marks within files (newest to oldest):\n" -msgstr "" -"\n" -"# Storia dei mark all'interno dei file (dai pi recenti ai meno recenti):\n" +msgid "E290: List or number required" +msgstr "E290: necessaria una Lista o un Numero" -msgid "Missing '>'" -msgstr "Manca '>'" +msgid "E802: Invalid ID: %d (must be greater than or equal to 1)" +msgstr "E802: ID non valido: %d (dev'essere maggiore o uguale a 1)" + +msgid "E803: ID not found: %d" +msgstr "E803: ID non trovato: %d" + +msgid "E798: ID is reserved for \":match\": %d" +msgstr "E798: ID riservato per \":match\": %d" msgid "E543: Not a valid codepage" msgstr "E543: Codepage non valido" -msgid "E284: Cannot set IC values" -msgstr "E284: Non posso assegnare valori IC" - -msgid "E285: Failed to create input context" -msgstr "E285: Creazione di un contesto di input fallita" - -msgid "E286: Failed to open input method" -msgstr "E286: Apertura 'input method' fallita" - -msgid "E287: Warning: Could not set destroy callback to IM" -msgstr "E287: Avviso: Non posso assegnare IM a 'destroy callback'" - -msgid "E288: input method doesn't support any style" -msgstr "E288: 'input method' non sopporta alcuno stile" - -msgid "E289: input method doesn't support my preedit type" -msgstr "E289: 'input method' non supporta il mio tipo di preedit" - msgid "E293: block was not locked" msgstr "E293: il blocco non era riservato" @@ -3283,6 +3042,7 @@ msgstr "E298: Non riesco a leggere blocco numero 2?" msgid "E843: Error while updating swap file crypt" msgstr "E843: Errore aggiornando cifratura dello swap file" +#. could not (re)open the swap file, what can we do???? msgid "E301: Oops, lost the swap file!!!" msgstr "E301: Ahim, lo swap file perduto!!!" @@ -3422,7 +3182,8 @@ msgstr "E311: Recupero Interrotto" msgid "" "E312: Errors detected while recovering; look for lines starting with ???" -msgstr "E312: Errori durante recupero; controlla righe che iniziano con ???" +msgstr "" +"E312: Trovati errori durante recupero; controlla righe che iniziano con ???" msgid "See \":help E312\" for more information." msgstr "Vedere \":help E312\" per ulteriori informazioni." @@ -3446,16 +3207,24 @@ msgstr "" msgid "" "\n" -"You may want to delete the .swp file now.\n" -"\n" +"You may want to delete the .swp file now." msgstr "" "\n" -" consigliato cancellare il file .swp adesso.\n" +"Adesso si potrebbe cancellare il file di .swp." + +#. Warn there could be an active Vim on the same file, the user may +#. want to kill it. +msgid "" "\n" +"Note: process STILL RUNNING: " +msgstr "" +"\n" +"Nota: processo ANCORA IN ESECUZIONE:" msgid "Using crypt key from swap file for the text file.\n" msgstr "Uso la chiave di cifratura del file swap per il file di testo.\n" +#. use msg() to start the scrolling properly msgid "Swap files found:" msgstr "Swap file trovati:" @@ -3559,10 +3328,10 @@ msgid "E314: Preserve failed" msgstr "E314: Preservazione fallita" msgid "E315: ml_get: invalid lnum: %ld" -msgstr "E315: ml_get: numero riga non valido: %ld" +msgstr "E315: ml_get: numero di riga non valido: %ld" -msgid "E316: ml_get: cannot find line %ld" -msgstr "E316: ml_get: non riesco a trovare la riga %ld" +msgid "E316: ml_get: cannot find line %ld in buffer %d %s" +msgstr "E316: ml_get: non riesco a trovare la riga %ld nel buffer %d %s" msgid "E317: pointer block id wrong 3" msgstr "E317: ID blocco puntatori errato 3" @@ -3589,7 +3358,7 @@ msgid "pe_line_count is zero" msgstr "pe_line_count a zero" msgid "E322: line number out of range: %ld past the end" -msgstr "E322: numero riga non ammissibile: %ld dopo la fine" +msgstr "E322: numero di riga non ammissibile: %ld dopo la fine" msgid "E323: line count wrong in block %ld" msgstr "E323: contatore righe errato nel blocco %ld" @@ -3622,6 +3391,8 @@ msgstr " NON TROVATO" msgid " NEWER than swap file!\n" msgstr " PI RECENTE dello swap file!\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" @@ -3656,6 +3427,9 @@ msgstr "" "\"\n" " per non ricevere ancora questo messaggio.\n" +msgid "Found a swap file that is not useful, deleting it" +msgstr "Trovato un file di swap inutile, lo cancello" + msgid "Swap file \"" msgstr "Swap file \"" @@ -3701,51 +3475,57 @@ msgstr "E326: Trovati troppi swap file" msgid "E327: Part of menu-item path is not sub-menu" msgstr "" -"E327: Parte del percorso di questo elemento di Menu non un sotto-Menu" +"E327: Parte del percorso di questo elemento di Men non un sotto-Men" msgid "E329: No menu \"%s\"" -msgstr "E329: Nessun Menu \"%s\"" +msgstr "E329: Nessun Men \"%s\"" +#. Only a mnemonic or accelerator is not valid. msgid "E792: Empty menu name" -msgstr "E792: Nome menu vuoto" +msgstr "E792: Nome Men vuoto" msgid "E330: Menu path must not lead to a sub-menu" -msgstr "E330: Il percorso del Menu non deve condurre a un sotto-Menu" +msgstr "E330: Il percorso del Men non deve condurre a un sotto-Men" msgid "E331: Must not add menu items directly to menu bar" msgstr "" -"E331: Non devi aggiungere elementi di Menu direttamente alla barra Menu" +"E331: Non si devono aggiungere elementi di Men direttamente alla barra Men" msgid "E332: Separator cannot be part of a menu path" -msgstr "E332: Il separatore non pu far parte di un percorso di Menu" +msgstr "E332: Il separatore non pu far parte di un percorso di Men" +#. Now we have found the matching menu, and we list the mappings +#. Highlight title msgid "" "\n" "--- Menus ---" msgstr "" "\n" -"--- Menu ---" +"--- Men ---" msgid "Tear off this menu" -msgstr "Togli questo Menu" +msgstr "Togli questo Men" msgid "E335: Menu not defined for %s mode" -msgstr "E335: Menu non definito per la modalit %s" +msgstr "E335: Men non definito per la modalit %s" msgid "E333: Menu path must lead to a menu item" -msgstr "E333: Il percorso Menu deve condurre ad un elemento Menu" +msgstr "E333: Il percorso Men deve condurre ad un elemento Men" msgid "E334: Menu not found: %s" -msgstr "E334: Menu non trovato: %s" +msgstr "E334: Men non trovato: %s" msgid "E336: Menu path must lead to a sub-menu" -msgstr "E336: Il percorso Menu deve condurre ad un sotto-Menu" +msgstr "E336: Il percorso Men deve condurre ad un sotto-Men" msgid "E337: Menu not found - check menu names" -msgstr "E337: Menu non trovato - controlla nomi Menu" +msgstr "E337: Men non trovato - controlla nomi Men" + +msgid "Error detected while compiling %s:" +msgstr "Trovato errore compilando %s:" msgid "Error detected while processing %s:" -msgstr "Errore/i eseguendo %s:" +msgstr "Trovato errore eseguendo %s:" msgid "line %4ld:" msgstr "riga %4ld:" @@ -3753,8 +3533,10 @@ msgstr "riga %4ld:" msgid "E354: Invalid register name: '%s'" msgstr "E354: Nome registro non valido: '%s'" +#. Translator: Please replace the name and email address +#. with the appropriate text for your translation. msgid "Messages maintainer: Bram Moolenaar " -msgstr "Manutentore messaggi: Vlad Sandrini " +msgstr "Manutentore messaggi: Antonio Colombo " msgid "Interrupt: " msgstr "Interruzione: " @@ -3794,18 +3576,6 @@ msgstr "" "&D Scarta Tutto\n" "&Cancella" -msgid "Select Directory dialog" -msgstr "Scelta Directory dialogo" - -msgid "Save File dialog" -msgstr "Salva File dialogo" - -msgid "Open File dialog" -msgstr "Apri File dialogo" - -msgid "E338: Sorry, no file browser in console mode" -msgstr "E338: Spiacente, niente esplorazione file in modalit console" - msgid "E766: Insufficient arguments for printf()" msgstr "E766: Argomenti non sufficienti per printf()" @@ -3815,15 +3585,13 @@ msgstr "E807: Numero-a-virgola-mobile atteso come argomento per printf()" msgid "E767: Too many arguments to printf()" msgstr "E767: Troppi argomenti per printf()" -msgid "W10: Warning: Changing a readonly file" -msgstr "W10: Avviso: Modifica a un file in sola-lettura" - -msgid "Type number and or click with mouse (empty cancels): " +msgid "Type number and or click with the mouse (q or empty cancels): " msgstr "" -"Inserire un numero e o fare clic (lasciare vuoto per annullare): " +"Inserire un numero e dare o fare clic col mouse (q o vuoto per " +"annullare): " -msgid "Type number and (empty cancels): " -msgstr "Inserire numero e (vuoto per annullare): " +msgid "Type number and (q or empty cancels): " +msgstr "Inserire numero e dare (q o vuoto per annullare): " msgid "%ld more line" msgid_plural "%ld more lines" @@ -3841,6 +3609,9 @@ msgstr " (Interrotto)" msgid "Beep!" msgstr "Beep!" +msgid "E677: Error writing temp file" +msgstr "E677: Errore in scrittura su file temporaneo" + msgid "ERROR: " msgstr "ERRORE: " @@ -3858,17 +3629,14 @@ msgstr "" "[chiamate] totale re/malloc() %lu, totale free() %lu\n" "\n" -msgid "E340: Line is becoming too long" -msgstr "E340: La riga sta diventando troppo lunga" - -msgid "E341: Internal error: lalloc(%ld, )" -msgstr "E341: Errore interno: lalloc(%ld, )" +msgid "E341: Internal error: lalloc(0, )" +msgstr "E341: Errore interno: lalloc(0, )" msgid "E342: Out of memory! (allocating %lu bytes)" msgstr "E342: Non c' pi memoria! (stavo allocando %lu byte)" msgid "Calling shell to execute: \"%s\"" -msgstr "Chiamo lo shell per eseguire: \"%s\"" +msgstr "Chiamo la shell per eseguire: \"%s\"" msgid "E545: Missing colon" msgstr "E545: Manca ':'" @@ -3880,7 +3648,7 @@ msgid "E547: Illegal mouseshape" msgstr "E547: Forma del mouse non consentita" msgid "E548: digit expected" -msgstr "E548: aspettavo un numero" +msgstr "E548: Atteso un numero" msgid "E549: Illegal percentage" msgstr "E549: Percentuale non consentita" @@ -3899,17 +3667,11 @@ msgid "E511: netbeans already connected" msgstr "E511: netbeans gi connesso" msgid "E505: %s is read-only (add ! to override)" -msgstr "E505: %s in sola lettura (aggiungi ! per eseguire comunque)" +msgstr "E505: %s in sola-lettura (aggiungi ! per eseguire comunque)" msgid "E349: No identifier under cursor" msgstr "E349: Nessun identificativo sotto il cursore" -msgid "E774: 'operatorfunc' is empty" -msgstr "E774: opzione 'operatorfunc' non impostata" - -msgid "E775: Eval feature not available" -msgstr "E775: Funzionalit [eval] non disponibile" - msgid "Warning: terminal cannot highlight" msgstr "Avviso: il terminale non in grado di evidenziare" @@ -3944,17 +3706,7 @@ msgid_plural "%ld lines %sed %d times" msgstr[0] "%ld righe %sa %d volta" msgstr[1] "%ld righe %se %d volte" -msgid "%ld lines to indent... " -msgstr "%ld righe da rientrare... " - -msgid "%ld line indented " -msgid_plural "%ld lines indented " -msgstr[0] "%ld riga rientrata " -msgstr[1] "%ld righe rientrate " - -msgid "E748: No previously used register" -msgstr "E748: Nessun registro usato in precedenza" - +#. must display the prompt msgid "cannot yank; delete anyway" msgstr "non riesco a salvare in un registro; cancello comunque" @@ -3963,51 +3715,10 @@ msgid_plural "%ld lines changed" msgstr[0] "%ld riga cambiata" msgstr[1] "%ld righe cambiate" -msgid "freeing %ld lines" -msgstr "libero %ld righe" - -msgid " into \"%c" -msgstr " in \"%c" - -msgid "block of %ld line yanked%s" -msgid_plural "block of %ld lines yanked%s" -msgstr[0] "blocco di %ld riga messo in registro%s" -msgstr[1] "blocco di %ld righe messo in registro%s" - -msgid "%ld line yanked%s" -msgid_plural "%ld lines yanked%s" -msgstr[0] "%ld riga messa in registro%s" -msgstr[1] "%ld righe messe in registro%s" - -msgid "E353: Nothing in register %s" -msgstr "E353: Niente nel registro %s" - -msgid "" -"\n" -"--- Registers ---" -msgstr "" -"\n" -"--- Registri ---" - -msgid "Illegal register name" -msgstr "Nome registro non ammesso" - -msgid "" -"\n" -"# Registers:\n" -msgstr "" -"\n" -"# Registri:\n" - -msgid "E574: Unknown register type %d" -msgstr "E574: Tipo di registro sconosciuto: %d" - -msgid "" -"E883: search pattern and expression register may not contain two or more " -"lines" -msgstr "" -"E883: espressione di ricerca e registro dell'espressione non possono " -"contenere due o pi righe" +msgid "%d line changed" +msgid_plural "%d lines changed" +msgstr[0] "%d riga cambiata" +msgstr[1] "%d righe cambiate" msgid "%ld Cols; " msgstr "%ld Col.; " @@ -4037,11 +3748,14 @@ msgstr "" msgid "(+%lld for BOM)" msgstr "(+%lld per BOM)" -msgid "Thanks for flying Vim" -msgstr "Grazie per aver volato con Vim" +msgid "E774: 'operatorfunc' is empty" +msgstr "E774: opzione 'operatorfunc' non impostata" + +msgid "E775: Eval feature not available" +msgstr "E775: Funzionalit [eval] non disponibile" msgid "E518: Unknown option" -msgstr "E518: Opzione inesistente" +msgstr "E518: Opzione sconosciuta" msgid "E519: Option not supported" msgstr "E519: Opzione non supportata" @@ -4049,104 +3763,25 @@ msgstr "E519: Opzione non supportata" msgid "E520: Not allowed in a modeline" msgstr "E520: Non consentito in una 'modeline'" +msgid "E992: Not allowed in a modeline when 'modelineexpr' is off" +msgstr "E992: Non consentito in una modeline quando a 'modelineexpr' vale off" + msgid "E846: Key code not set" -msgstr "E846: Key code non impostato" +msgstr "E846: Codice di tasto non impostato" msgid "E521: Number required after =" -msgstr "E521: Ci vuole un numero dopo =" +msgstr "E521: Richiesto un numero dopo =" msgid "E522: Not found in termcap" msgstr "E522: Non trovato in 'termcap'" -msgid "E539: Illegal character <%s>" -msgstr "E539: Carattere non consentito <%s>" - -msgid "For option %s" -msgstr "Per opzione %s" - -msgid "E529: Cannot set 'term' to empty string" -msgstr "E529: Non posso assegnare a 'term' il valore 'stringa nulla'" - -msgid "E530: Cannot change term in GUI" -msgstr "E530: Non posso modificare 'term' mentre sono nella GUI" - -msgid "E531: Use \":gui\" to start the GUI" -msgstr "E531: Usa \":gui\" per far partire la GUI" - -msgid "E589: 'backupext' and 'patchmode' are equal" -msgstr "E589: 'backupext' e 'patchmode' sono uguali" - -msgid "E834: Conflicts with value of 'listchars'" -msgstr "E834: Conflitto con il valore di 'listchars'" - -msgid "E835: Conflicts with value of 'fillchars'" -msgstr "E835: Conflitto con il valore di 'fillchars'" - -msgid "E617: Cannot be changed in the GTK+ 2 GUI" -msgstr "E617: Non pu essere cambiato nella GUI GTK+ 2" - -msgid "E950: Cannot convert between %s and %s" -msgstr "E950: Non si pu convertire da %s a %s" - -msgid "E524: Missing colon" -msgstr "E524: Manca ':'" - -msgid "E525: Zero length string" -msgstr "E525: Stringa nulla" - -msgid "E526: Missing number after <%s>" -msgstr "E526: Manca numero dopo <%s>" - -msgid "E527: Missing comma" -msgstr "E527: Manca virgola" - -msgid "E528: Must specify a ' value" -msgstr "E528: Devi specificare un valore '" - -msgid "E595: contains unprintable or wide character" -msgstr "E595: contiene carattere 'wide' o non-stampabile" - -msgid "E596: Invalid font(s)" -msgstr "E596: Font non validi" - -msgid "E597: can't select fontset" -msgstr "E597: non posso selezionare fontset" - -msgid "E598: Invalid fontset" -msgstr "E598: Fontset non valido" - -msgid "E533: can't select wide font" -msgstr "E533: non posso selezionare 'wide font'" - -msgid "E534: Invalid wide font" -msgstr "E534: 'Wide font' non valido" - -msgid "E535: Illegal character after <%c>" -msgstr "E535: Carattere non consentito dopo <%c>" - -msgid "E536: comma required" -msgstr "E536: virgola mancante" - -msgid "E537: 'commentstring' must be empty or contain %s" -msgstr "E537: 'commentstring' dev'essere nulla o contenere %s" - -msgid "E538: No mouse support" -msgstr "E538: Manca supporto mouse" - -msgid "E540: Unclosed expression sequence" -msgstr "E540: Espressione non terminata" - - -msgid "E542: unbalanced groups" -msgstr "E542: gruppi sbilanciati" - msgid "E946: Cannot make a terminal with running job modifiable" msgstr "" "E946: Non posso aprire un terminale mentre ci sono lavori modificabili in " "esecuzione" msgid "E590: A preview window already exists" -msgstr "E590: Una finestra di pre-visualizzazione esiste gi" +msgstr "E590: Una finestra di anteprima esiste gi" msgid "W17: Arabic requires UTF-8, do ':set encoding=utf-8'" msgstr "W17: Arabo richiede UTF-8, esegui ':set encoding=utf-8'" @@ -4161,10 +3796,13 @@ msgid "E594: Need at least %d columns" msgstr "E594: Servono almeno %d colonne" msgid "E355: Unknown option: %s" -msgstr "E355: Opzione inesistente: %s" +msgstr "E355: Opzione sconosciuta: %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. msgid "E521: Number required: &%s = '%s'" -msgstr "E521: Ci vuole un numero: &%s = '%s'" +msgstr "E521: Richiesto un numero: &%s = '%s'" msgid "" "\n" @@ -4197,11 +3835,83 @@ msgstr "" msgid "E356: get_varp ERROR" msgstr "E356: ERRORE get_varp" -msgid "E357: 'langmap': Matching character missing for %s" -msgstr "E357: 'langmap': Manca carattere corrispondente per %s" +msgid "E539: Illegal character <%s>" +msgstr "E539: Carattere non consentito <%s>" -msgid "E358: 'langmap': Extra characters after semicolon: %s" -msgstr "E358: 'langmap': Caratteri in pi dopo il ';': %s" +msgid "For option %s" +msgstr "Per opzione %s" + +msgid "E540: Unclosed expression sequence" +msgstr "E540: Espressione non terminata" + +msgid "E542: unbalanced groups" +msgstr "E542: gruppi sbilanciati" + +msgid "E529: Cannot set 'term' to empty string" +msgstr "E529: Non posso assegnare a 'term' il valore 'stringa nulla'" + +msgid "E530: Cannot change term in GUI" +msgstr "E530: Non posso modificare 'term' mentre sono nella GUI" + +msgid "E531: Use \":gui\" to start the GUI" +msgstr "E531: Usa \":gui\" per far partire la GUI" + +msgid "E589: 'backupext' and 'patchmode' are equal" +msgstr "E589: 'backupext' e 'patchmode' sono uguali" + +msgid "E835: Conflicts with value of 'fillchars'" +msgstr "E835: Conflitto con il valore di 'fillchars'" + +msgid "E834: Conflicts with value of 'listchars'" +msgstr "E834: Conflitto con il valore di 'listchars'" + +msgid "E617: Cannot be changed in the GTK+ 2 GUI" +msgstr "E617: Non pu essere cambiato nella GUI GTK+ 2" + +msgid "E950: Cannot convert between %s and %s" +msgstr "E950: Non si pu convertire da %s a %s" + +msgid "E524: Missing colon" +msgstr "E524: Manca ':'" + +msgid "E525: Zero length string" +msgstr "E525: Stringa nulla" + +msgid "E526: Missing number after <%s>" +msgstr "E526: Manca numero dopo <%s>" + +msgid "E527: Missing comma" +msgstr "E527: Manca virgola" + +msgid "E528: Must specify a ' value" +msgstr "E528: Devi specificare un valore '" + +msgid "E595: 'showbreak' contains unprintable or wide character" +msgstr "E595: 'showbreak' contiene carattere non-stampabili o larghi" + +msgid "E596: Invalid font(s)" +msgstr "E596: Caratteri non validi" + +msgid "E597: can't select fontset" +msgstr "E597: non posso selezionare fontset" + +msgid "E598: Invalid fontset" +msgstr "E598: Fontset non valido" + +msgid "E533: can't select wide font" +msgstr "E533: non posso selezionare 'wide font'" + +msgid "E534: Invalid wide font" +msgstr "E534: 'Wide font' non valido" + +msgid "E535: Illegal character after <%c>" +msgstr "E535: Carattere non consentito dopo <%c>" + +msgid "E536: comma required" +msgstr "E536: virgola mancante" + +msgid "E537: 'commentstring' must be empty or contain %s" +msgstr "E537: 'commentstring' dev'essere nulla o contenere %s" msgid "cannot open " msgstr "non riesco ad aprire " @@ -4230,8 +3940,9 @@ msgstr "non posso modificare modalit msgid "mch_get_shellsize: not a console??\n" msgstr "mch_get_shellsize: non una console??\n" +#. if Vim opened a window: Executing a shell may cause crashes msgid "E360: Cannot execute shell with -f option" -msgstr "E360: Non posso eseguire lo shell con l'opzione -f" +msgstr "E360: Non posso eseguire la shell con l'opzione -f" msgid "Cannot execute " msgstr "Non riesco a eseguire " @@ -4258,7 +3969,7 @@ msgid "to %s on %s" msgstr "a %s su %s" msgid "E613: Unknown printer font: %s" -msgstr "E613: Font per stampante sconosciuto: %s" +msgstr "E613: Carattere di stampa sconosciuto: %s" msgid "E238: Print error: %s" msgstr "E238: Errore durante stampa: %s" @@ -4267,13 +3978,15 @@ msgid "Printing '%s'" msgstr "Stampato: '%s'" msgid "E244: Illegal charset name \"%s\" in font name \"%s\"" -msgstr "E244: Nome di charset non consentito \"%s\" nel fonte di nome \"%s\"" +msgstr "" +"E244: Nome di charset non consentito \"%s\" nel carattere di nome \"%s\"" msgid "E244: Illegal quality name \"%s\" in font name \"%s\"" -msgstr "E244: Nome di qualit non consentito \"%s\" nel font di nome \"%s\"" +msgstr "" +"E244: Nome di qualit non consentito \"%s\" nel carattere di nome \"%s\"" msgid "E245: Illegal char '%c' in font name \"%s\"" -msgstr "E245: Carattere non consentito '%c' nel font di nome \"%s\"" +msgstr "E245: Carattere non consentito '%c' nel carattere di nome \"%s\"" msgid "Opening the X display took %ld msec" msgstr "Attivazione visualizzazione X ha richiesto %ld msec" @@ -4285,6 +3998,9 @@ msgstr "" "\n" "Vim: Preso errore X\n" +msgid "restoring display %s" +msgstr "ripristino display %s" + msgid "Testing the X display failed" msgstr "Prova visualizzazione X fallita" @@ -4316,21 +4032,21 @@ msgid "" "Cannot execute shell sh\n" msgstr "" "\n" -"Non riesco a eseguire shell sh\n" +"Non riesco a eseguire la shell sh\n" msgid "" "\n" "shell returned " msgstr "" "\n" -"shell terminato con return-code " +"shell terminata con return-code " msgid "" "\n" "Cannot create pipes\n" msgstr "" "\n" -"Non posso creare 'pipe'\n" +"Non posso creare pipe\n" msgid "" "\n" @@ -4344,7 +4060,7 @@ msgid "" "Cannot execute shell " msgstr "" "\n" -"Non riesco a eseguire shell " +"Non riesco a eseguire la shell " msgid "" "\n" @@ -4405,11 +4121,39 @@ msgid "Vim Warning" msgstr "Avviso da Vim" msgid "shell returned %d" -msgstr "shell terminato con return-code %d" +msgstr "shell terminata con codice di ritorno %d" + +msgid "E861: Cannot open a second popup with a terminal" +msgstr "E861: Non posso aprire una seconda finestra dinamica con un terminale" + +msgid "E450: buffer number, text or a list required" +msgstr "E450: occorre un numero di buffer, del testo, o una Lista" + +msgid "E997: Tabpage not found: %d" +msgstr "E997: Pagina-di-linguette non trovata: %d" + +msgid "E993: window %d is not a popup window" +msgstr "E993: la finestra %d non una finestra dinamica" + +msgid "E994: Not allowed in a popup window" +msgstr "E994: Non consentito in una finestra dinamica" + +msgid "E863: Not allowed for a terminal in a popup window" +msgstr "E863: Non consentito per un terminale in una finestra dinamica" + +msgid "E750: First use \":profile start {fname}\"" +msgstr "E750: Usare prima \":profile start {fname}\"" + +msgid "E553: No more items" +msgstr "E553: Non ci sono pi elementi" + +msgid "E925: Current quickfix list was changed" +msgstr "E925: La Lista quickfix corrente stata cambiata" msgid "E926: Current location list was changed" msgstr "E926: La lista delle locazioni corrente stata cambiata" +#. Each errorformat pattern can occur only once msgid "E372: Too many %%%c in format string" msgstr "E372: Troppi %%%c nella stringa di 'format'" @@ -4419,6 +4163,7 @@ msgstr "E373: %%%c imprevisto nella stringa di 'format'" msgid "E374: Missing ] in format string" msgstr "E374: Manca ] nella stringa di 'format'" +#. TODO: scanf()-like: %*ud, %*3c, %*f, ... ? msgid "E375: Unsupported %%%c in format string" msgstr "E375: %%%c non supportato nella stringa di 'format'" @@ -4428,21 +4173,16 @@ msgstr "E376: %%%c non valido nel prefisso della stringa di 'format'" msgid "E377: Invalid %%%c in format string" msgstr "E377: %%%c non valido nella stringa di 'format'" +#. nothing found msgid "E378: 'errorformat' contains no pattern" msgstr "E378: 'errorformat' non contiene alcun modello" msgid "E379: Missing or empty directory name" msgstr "E379: Nome directory mancante o nullo" -msgid "E553: No more items" -msgstr "E553: Non ci sono pi elementi" - msgid "E924: Current window was closed" msgstr "E924: La finestra corrente stata chiusa" -msgid "E925: Current quickfix was changed" -msgstr "E925: Il quickfix corrente stato cambiato" - msgid "(%d of %d)%s%s: " msgstr "(%d di %d)%s%s: " @@ -4470,11 +4210,17 @@ msgstr "E683: Nome file mancante o espressione non valida" msgid "Cannot open file \"%s\"" msgstr "Non riesco ad aprire il file \"%s\"" +msgid "cannot have both a list and a \"what\" argument" +msgstr "non si pu avere come argomenti sia una Lista che un \"what\"" + msgid "E681: Buffer is not loaded" msgstr "E681: Buffer non caricato" msgid "E777: String or List expected" -msgstr "E777: aspettavo Stringa o Lista" +msgstr "E777: attesa Stringa o Lista" + +msgid "E927: Invalid action: '%s'" +msgstr "E927: Azione non valida: '%s'" msgid "E369: invalid item in %s%%[]" msgstr "E369: elemento non valido in %s%%[]" @@ -4512,33 +4258,28 @@ msgstr "E70: %s%%[] vuoto" msgid "E956: Cannot use pattern recursively" msgstr "E956: Uso ricorsivo di espressione di ricerca non consentito" +msgid "E654: missing delimiter after search pattern: %s" +msgstr "E654: manca un delimitatore dopo l'espressione di ricerca: %s" + +msgid "E554: Syntax error in %s{...}" +msgstr "E554: Errore sintattico in %s{...}" + +msgid "E888: (NFA regexp) cannot repeat %s" +msgstr "E888: (NFA regexp) non riesco a ripetere %s" + +msgid "" +"E864: \\%#= can only be followed by 0, 1, or 2. The automatic engine will be " +"used " +msgstr "" +"E864: \\%#= pu essere seguito solo da 0, 1 o 2. Sar usato il motore " +"automatico " + +msgid "Switching to backtracking RE engine for pattern: " +msgstr "Passo alla ricerca di RE col vecchio metodo: " + msgid "E65: Illegal back reference" msgstr "E65: Riferimento all'indietro non consentito" -msgid "E339: Pattern too long" -msgstr "E339: Espressione troppo lunga" - -msgid "E50: Too many \\z(" -msgstr "E50: Troppe \\z(" - -msgid "E51: Too many %s(" -msgstr "E51: Troppe %s(" - -msgid "E52: Unmatched \\z(" -msgstr "E52: Senza riscontro: \\z(" - -msgid "E59: invalid character after %s@" -msgstr "E59: Carattere non valido dopo %s@" - -msgid "E60: Too many complex %s{...}s" -msgstr "E60: Troppi %s{...}s complessi" - -msgid "E61: Nested %s*" -msgstr "E61: %s* nidificato" - -msgid "E62: Nested %s%c" -msgstr "E62: %s%c nidificato" - msgid "E63: invalid use of \\_" msgstr "E63: uso non valido di \\_" @@ -4554,25 +4295,33 @@ msgstr "E678: Carattere non valido dopo %s%%[dxouU]" msgid "E71: Invalid character after %s%%" msgstr "E71: Carattere non valido dopo %s%%" -msgid "E554: Syntax error in %s{...}" -msgstr "E554: Errore sintattico in %s{...}" +msgid "E59: invalid character after %s@" +msgstr "E59: Carattere non valido dopo %s@" + +msgid "E60: Too many complex %s{...}s" +msgstr "E60: Troppi %s{...}s complessi" + +msgid "E61: Nested %s*" +msgstr "E61: %s* nidificato" + +msgid "E62: Nested %s%c" +msgstr "E62: %s%c nidificato" + +msgid "E50: Too many \\z(" +msgstr "E50: Troppe \\z(" + +msgid "E51: Too many %s(" +msgstr "E51: Troppe %s(" + +msgid "E52: Unmatched \\z(" +msgstr "E52: Senza riscontro: \\z(" + +msgid "E339: Pattern too long" +msgstr "E339: Espressione troppo lunga" msgid "External submatches:\n" msgstr "Sotto-corrispondenze esterne:\n" -msgid "E888: (NFA regexp) cannot repeat %s" -msgstr "E888: (NFA regexp) non riesco a ripetere %s" - -msgid "" -"E864: \\%#= can only be followed by 0, 1, or 2. The automatic engine will be " -"used " -msgstr "" -"E864: \\%#= pu essere seguito solo da 0, 1 o 2. Sar usato il motore " -"automatico " - -msgid "Switching to backtracking RE engine for pattern: " -msgstr "Passo alla ricerca di RE col vecchio metodo: " - msgid "E865: (NFA) Regexp end encountered prematurely" msgstr "E865: (NFA) Fine prematura dell'espressione regolare" @@ -4582,15 +4331,16 @@ msgstr "E866: (NFA regexp) %c fuori posto" msgid "E877: (NFA regexp) Invalid character class: %d" msgstr "E877: (NFA regexp) Classe di caratteri non valida: %d" -msgid "E867: (NFA) Unknown operator '\\z%c'" -msgstr "E867: (NFA) Operatore sconosciuto '\\z%c'" - msgid "E951: \\% value too large" msgstr "E951: \\% valore troppo grande" +msgid "E867: (NFA) Unknown operator '\\z%c'" +msgstr "E867: (NFA) Operatore sconosciuto '\\z%c'" + msgid "E867: (NFA) Unknown operator '\\%%%c'" msgstr "E867: (NFA) Operatore sconosciuto '\\%%%c'" +#. should never happen msgid "E868: Error building NFA with equivalence class!" msgstr "E868: Errore nel build di NFA con classe di equivalenza!" @@ -4600,9 +4350,11 @@ msgstr "E869: (NFA) Operatore sconosciuto '\\@%c'" msgid "E870: (NFA regexp) Error reading repetition limits" msgstr "E870: (NFA regexp) Errore nella lettura dei limiti di ripetizione" +#. Can't have a multi follow a multi. msgid "E871: (NFA regexp) Can't have a multi follow a multi" msgstr "E871: (NFA regexp) Non si pu avere multi dopo multi" +#. Too many `(' msgid "E872: (NFA regexp) Too many '('" msgstr "E872: (NFA regexp) Troppi '('" @@ -4630,7 +4382,44 @@ msgid "E876: (NFA regexp) Not enough space to store the whole NFA " msgstr "E876: (NFA regexp) Non c' spazio per immagazzinare l'intero NFA " msgid "E878: (NFA) Could not allocate memory for branch traversal!" -msgstr "E878: (NFA) Non posso allocare memoria per il zigzag di ramo!" +msgstr "E878: (NFA) Non posso allocare memoria per lo zigzag di ramo!" + +msgid "E748: No previously used register" +msgstr "E748: Nessun registro usato in precedenza" + +msgid "freeing %ld lines" +msgstr "libero %ld righe" + +msgid " into \"%c" +msgstr " in \"%c" + +msgid "block of %ld line yanked%s" +msgid_plural "block of %ld lines yanked%s" +msgstr[0] "blocco di %ld riga messo in registro%s" +msgstr[1] "blocco di %ld righe messo in registro%s" + +msgid "%ld line yanked%s" +msgid_plural "%ld lines yanked%s" +msgstr[0] "%ld riga messa in registro%s" +msgstr[1] "%ld righe messe in registro%s" + +msgid "E353: Nothing in register %s" +msgstr "E353: Niente nel registro %s" + +#. Highlight title +msgid "" +"\n" +"Type Name Content" +msgstr "" +"\n" +"Tipo Nome Contenuto" + +msgid "" +"E883: search pattern and expression register may not contain two or more " +"lines" +msgstr "" +"E883: espressione di ricerca e registro dell'espressione non possono " +"contenere due o pi righe" msgid " VREPLACE" msgstr " V-SOSTITUISCI" @@ -4683,6 +4472,72 @@ msgstr " SELEZIONA BLOCCO" msgid "recording" msgstr "registrazione" +msgid "Searching for \"%s\" in \"%s\"" +msgstr "Cerco \"%s\" in \"%s\"" + +msgid "Searching for \"%s\"" +msgstr "Cerco \"%s\"" + +msgid "not found in '%s': \"%s\"" +msgstr "non trovato in '%s': \"%s\"" + +msgid "Source Vim script" +msgstr "Esegui script Vim" + +msgid "Cannot source a directory: \"%s\"" +msgstr "Non riesco ad eseguire una directory: \"%s\"" + +msgid "could not source \"%s\"" +msgstr "non riesco ad eseguire \"%s\"" + +msgid "line %ld: could not source \"%s\"" +msgstr "riga %ld: non riesco ad eseguire \"%s\"" + +msgid "sourcing \"%s\"" +msgstr "eseguo \"%s\"" + +msgid "line %ld: sourcing \"%s\"" +msgstr "riga %ld: eseguo \"%s\"" + +msgid "finished sourcing %s" +msgstr "esecuzione di %s terminata" + +msgid "continuing in %s" +msgstr "continuo in %s" + +msgid "modeline" +msgstr "modeline" + +msgid "--cmd argument" +msgstr "argomento --cmd" + +msgid "-c argument" +msgstr "argomento -c" + +msgid "environment variable" +msgstr "variabile d'ambiente" + +msgid "error handler" +msgstr "gestore di errore" + +msgid "changed window size" +msgstr "dimensione finestra modificata" + +msgid "W15: Warning: Wrong line separator, ^M may be missing" +msgstr "W15: Avviso: Separatore di riga errato, forse manca ^M" + +msgid "E167: :scriptencoding used outside of a sourced file" +msgstr "E167: :scriptencoding usato fuori da un file di comandi" + +msgid "E984: :scriptversion used outside of a sourced file" +msgstr "E984: :scriptversion usato fuori da un file di comandi" + +msgid "E999: scriptversion not supported: %d" +msgstr "E999: scriptversion non supportata: %d" + +msgid "E168: :finish used outside of a sourced file" +msgstr "E168: :finish usato fuori da file di comandi" + msgid "E383: Invalid search string: %s" msgstr "E383: Stringa di ricerca non valida: %s" @@ -4698,6 +4553,7 @@ msgstr "E386: '?' o '/' atteso dopo ';'" msgid " (includes previously listed match)" msgstr " (comprese corrispondenze elencate prima)" +#. cursor at status line msgid "--- Included files " msgstr "--- File inclusi " @@ -4734,17 +4590,14 @@ msgstr "E388: Non sono riuscito a trovare la definizione" msgid "E389: Couldn't find pattern" msgstr "E389: Non sono riuscito a trovare il modello" -msgid "Substitute " -msgstr "Sostituzione " +msgid "Save View" +msgstr "Salva Veduta" -msgid "" -"\n" -"# Last %sSearch Pattern:\n" -"~" -msgstr "" -"\n" -"# Ult. %sEspressione di Ricerca:\n" -"~" +msgid "Save Session" +msgstr "Salva Sessione" + +msgid "Save Setup" +msgstr "Salva Setup" msgid "[Deleted]" msgstr "[Cancellato]" @@ -4798,9 +4651,6 @@ msgstr " (NON TROVATO)" msgid " (not supported)" msgstr " (non supportata)" -msgid "E756: Spell checking is not enabled" -msgstr "E756: Controllo ortografico non abilitato" - msgid "Warning: Cannot find word list \"%s_%s.spl\" or \"%s_ascii.spl\"" msgstr "Avviso: Non trovo lista parole \"%s_%s.spl\" o \"%s_ascii.spl\"" @@ -4810,21 +4660,11 @@ msgstr "Avviso: Non trovo lista parole \"%s.%s.spl\" o \"%s.ascii.spl\"" msgid "E797: SpellFileMissing autocommand deleted buffer" msgstr "E797: L'autocomando 'SpellFileMissing' ha cancellato il buffer" +#. This is probably an error. Give a warning and +#. accept the words anyway. msgid "Warning: region %s not supported" msgstr "Avviso: regione %s non supportata" -msgid "Sorry, no suggestions" -msgstr "Spiacente, nessun suggerimento" - -msgid "Sorry, only %ld suggestions" -msgstr "Spiacente, solo %ld suggerimenti" - -msgid "Change \"%.*s\" to:" -msgstr "Cambiare \"%.*s\" in:" - -msgid " < \"%.*s\"" -msgstr " < \"%.*s\"" - msgid "E752: No previous spell replacement" msgstr "E752: Nessuna sostituzione ortografica precedente" @@ -4892,7 +4732,7 @@ msgid "Invalid value for FLAG in %s line %d: %s" msgstr "Valore di FLAG non valido in %s riga %d: %s" msgid "FLAG after using flags in %s line %d: %s" -msgstr "FLAG dopo l'uso di flags in %s riga %d: %s" +msgstr "FLAG dopo l'uso di flag in %s riga %d: %s" msgid "" "Defining COMPOUNDFORBIDFLAG after PFX item may give wrong results in %s line " @@ -4985,7 +4825,7 @@ msgid "%s value differs from what is used in another .aff file" msgstr "Il valore di %s diverso da quello usato in un altro file .aff" msgid "Reading dictionary file %s..." -msgstr "Lettura file dizionario %s..." +msgstr "Lettura file Dizionario %s..." msgid "E760: No word count in %s" msgstr "E760: Nessun contatore parole in %s" @@ -5008,26 +4848,29 @@ msgstr "%d parole con caratteri non-ASCII ignorate in %s" msgid "Reading word file %s..." msgstr "Lettura file parole %s..." -msgid "Duplicate /encoding= line ignored in %s line %d: %s" -msgstr "Riga /encoding= duplicata ignorata in %s riga %d: %s" +msgid "Conversion failure for word in %s line %ld: %s" +msgstr "Conversione fallita per una parola in %s riga %ld: %s" -msgid "/encoding= line after word ignored in %s line %d: %s" -msgstr "Riga /encoding= dopo parola ignorata in %s riga %d: %s" +msgid "Duplicate /encoding= line ignored in %s line %ld: %s" +msgstr "Riga /encoding= duplicata ignorata in %s riga %ld: %s" -msgid "Duplicate /regions= line ignored in %s line %d: %s" -msgstr "Riga /regions= duplicata ignorata in %s riga %d: %s" +msgid "/encoding= line after word ignored in %s line %ld: %s" +msgstr "Riga /encoding= dopo parola ignorata in %s riga %ld: %s" -msgid "Too many regions in %s line %d: %s" -msgstr "Troppe regioni in %s riga %d: %s" +msgid "Duplicate /regions= line ignored in %s line %ld: %s" +msgstr "Riga /regions= duplicata ignorata in %s riga %ld: %s" -msgid "/ line ignored in %s line %d: %s" -msgstr "Riga / ignorata in %s riga %d: %s" +msgid "Too many regions in %s line %ld: %s" +msgstr "Troppe regioni in %s riga %ld: %s" -msgid "Invalid region nr in %s line %d: %s" -msgstr "N. regione non valido in %s riga %d: %s" +msgid "/ line ignored in %s line %ld: %s" +msgstr "Riga / ignorata in %s riga %ld: %s" -msgid "Unrecognized flags in %s line %d: %s" -msgstr "Flag non riconosciuti in %s riga %d: %s" +msgid "Invalid region nr in %s line %ld: %s" +msgstr "N. regione non valido in %s riga %ld: %s" + +msgid "Unrecognized flags in %s line %ld: %s" +msgstr "Flag non riconosciuti in %s riga %ld: %s" msgid "Ignored %d words with non-ASCII characters" msgstr "%d parole con caratteri non-ASCII ignorate" @@ -5035,12 +4878,16 @@ msgstr "%d parole con caratteri non-ASCII ignorate" msgid "E845: Insufficient memory, word list will be incomplete" msgstr "E845: Memoria insufficiente, la lista parole sar incompleta" -msgid "Compressed %d of %d nodes; %d (%d%%) remaining" -msgstr "%d di %d nodi compressi; ne restano %d (%d%%)" +msgid "Compressed %s: %ld of %ld nodes; %ld (%ld%%) remaining" +msgstr "Compressi %s: %ld di %ld nodi; ne restano %ld (%ld%%)" msgid "Reading back spell file..." msgstr "Rilettura file ortografico..." +#. +#. * Go through the trie of good words, soundfold each word and add it to +#. * the soundfold trie. +#. msgid "Performing soundfolding..." msgstr "Eseguo soundfolding..." @@ -5080,15 +4927,37 @@ msgstr "E765: 'spellfile' non ha %d elementi" msgid "Word '%.*s' removed from %s" msgstr "Parola '%.*s' rimossa da %s" +msgid "Seek error in spellfile" +msgstr "Errore di posizionamento nel file di spell" + msgid "Word '%.*s' added to %s" msgstr "Parola '%.*s' aggiunta a %s" msgid "E763: Word characters differ between spell files" msgstr "E763: Caratteri di parola differenti nei file ortografici" +#. This should have been checked when generating the .spl +#. file. msgid "E783: duplicate char in MAP entry" msgstr "E783: carattere duplicato nell'elemento MAP" +msgid "Sorry, no suggestions" +msgstr "Spiacente, nessun suggerimento" + +msgid "Sorry, only %ld suggestions" +msgstr "Spiacente, solo %ld suggerimenti" + +#. for when 'cmdheight' > 1 +#. avoid more prompt +msgid "Change \"%.*s\" to:" +msgstr "Cambiare \"%.*s\" in:" + +msgid " < \"%.*s\"" +msgstr " < \"%.*s\"" + +msgid "E390: Illegal argument: %s" +msgstr "E390: Argomento non consentito: %s" + msgid "No Syntax items defined for this buffer" msgstr "Nessun elemento sintattico definito per questo buffer" @@ -5101,15 +4970,18 @@ msgstr "syntax conceal attivo" msgid "syntax conceal off" msgstr "syntax conceal inattivo" -msgid "E390: Illegal argument: %s" -msgstr "E390: Argomento non consentito: %s" - msgid "syntax case ignore" msgstr "syntax, ignorare maiuscolo/minuscolo" msgid "syntax case match" msgstr "syntax, considerare maiuscolo/minuscolo" +msgid "syntax foldlevel start" +msgstr "syntax, inizio di livello di piegatura" + +msgid "syntax foldlevel minimum" +msgstr "syntax, livello di piegatura minimo" + msgid "syntax spell toplevel" msgstr "syntax, effettua spell sul testo" @@ -5134,6 +5006,9 @@ msgstr "sincronizzo i commenti nello stile C" msgid "no syncing" msgstr "nessuna sincronizzazione" +msgid "syncing starts at the first line" +msgstr "la sincronizzazione inizia alla prima riga" + msgid "syncing starts " msgstr "la sincronizzazione inizia " @@ -5164,6 +5039,9 @@ msgstr "" msgid "E392: No such syntax cluster: %s" msgstr "E392: 'cluster' sintattico inesistente: %s" +msgid "from the first line" +msgstr "dalla prima riga" + msgid "minimal " msgstr "minimale " @@ -5246,61 +5124,7 @@ msgstr "E410: Sotto-comando :syntax non valido: %s" msgid "" " TOTAL COUNT MATCH SLOWEST AVERAGE NAME PATTERN" msgstr "" -" TOTALE CONT. CORRIS. PIU LENTO MEDIA NOME MODELLO" - -msgid "E679: recursive loop loading syncolor.vim" -msgstr "E679: ciclo ricorsivo nel caricamento di syncolor.vim" - -msgid "E411: highlight group not found: %s" -msgstr "E411: gruppo evidenziazione non trovato: %s" - -msgid "E412: Not enough arguments: \":highlight link %s\"" -msgstr "E412: Argomenti non sufficienti: \":highlight link %s\"" - -msgid "E413: Too many arguments: \":highlight link %s\"" -msgstr "E413: Troppi argomenti: \":highlight link %s\"" - -msgid "E414: group has settings, highlight link ignored" -msgstr "E414: 'group' ha impostazioni, 'highlight link' ignorato" - -msgid "E415: unexpected equal sign: %s" -msgstr "E415: segno '=' inatteso: %s" - -msgid "E416: missing equal sign: %s" -msgstr "E416: manca segno '=': %s" - -msgid "E417: missing argument: %s" -msgstr "E417: manca argomento: %s" - -msgid "E418: Illegal value: %s" -msgstr "E418: Valore non consentito: %s" - -msgid "E419: FG color unknown" -msgstr "E419: colore di testo sconosciuto" - -msgid "E420: BG color unknown" -msgstr "E420: colore di sfondo sconosciuto" - -msgid "E421: Color name or number not recognized: %s" -msgstr "E421: Numero o nome di colore non riconosciuto: %s" - -msgid "E422: terminal code too long: %s" -msgstr "E422: codice terminale troppo lungo: %s" - -msgid "E423: Illegal argument: %s" -msgstr "E423: Argomento non consentito: %s" - -msgid "E424: Too many different highlighting attributes in use" -msgstr "E424: Troppi gruppi evidenziazione differenti in uso" - -msgid "E669: Unprintable character in group name" -msgstr "E669: Carattere non stampabile in un nome di gruppo" - -msgid "W18: Invalid character in group name" -msgstr "W18: Carattere non valido in un nome di gruppo" - -msgid "E849: Too many highlight and syntax groups" -msgstr "E849: Troppi gruppi di evidenziazione e sintassi" +" TOTALE CONT. CORRIS. PI LENTO MEDIA NOME MODELLO" msgid "E555: at bottom of tag stack" msgstr "E555: al fondo dello stack dei tag" @@ -5308,6 +5132,12 @@ msgstr "E555: al fondo dello stack dei tag" msgid "E556: at top of tag stack" msgstr "E556: in cima allo stack dei tag" +msgid "E986: cannot modify the tag stack within tagfunc" +msgstr "E986: non posso modificare lo stack dei tag all'interno di tagfunc" + +msgid "E987: invalid return value from tagfunc" +msgstr "E987: valore non valido restituito da tagfunc" + msgid "E425: Cannot go before first matching tag" msgstr "E425: Non posso andare prima del primo tag corrispondente" @@ -5323,6 +5153,7 @@ msgstr "E428: Non posso andare oltre l'ultimo tag corrispondente" msgid "File \"%s\" does not exist" msgstr "Il file \"%s\" non esiste" +#. Give an indication of the number of matching tags msgid "tag %d of %d%s" msgstr "tag %d di %d%s" @@ -5341,12 +5172,13 @@ msgstr " # pri tipo tag" msgid "file\n" msgstr "file\n" +#. Highlight title msgid "" "\n" " # TO tag FROM line in file/text" msgstr "" "\n" -" # A tag DA__ riga in file/testo" +" # A_ tag DA__ riga in file/testo" msgid "Searching tags file %s" msgstr "Ricerca nel tag file %s" @@ -5354,9 +5186,6 @@ msgstr "Ricerca nel tag file %s" msgid "E430: Tag file path truncated for %s\n" msgstr "E430: Percorso tag file troncato per %s\n" -msgid "Ignoring long line in tags file" -msgstr "Riga lunga ignorata nel tag file" - msgid "E431: Format error in tags file \"%s\"" msgstr "E431: Errore di formato nel tag file \"%s\"" @@ -5366,9 +5195,13 @@ msgstr "Prima del byte %ld" msgid "E432: Tags file not sorted: %s" msgstr "E432: Tag file non ordinato alfabeticamente: %s" +#. never opened any tags file msgid "E433: No tags file" msgstr "E433: Nessun tag file" +msgid "Ignoring long line in tags file" +msgstr "Riga lunga ignorata nel tag file" + msgid "E434: Can't find tag pattern" msgstr "E434: Non riesco a trovare modello tag" @@ -5399,6 +5232,7 @@ msgstr "E436: Nessuna descrizione per \"%s\" in 'termcap'" msgid "E437: terminal capability \"cm\" required" msgstr "E437: capacit \"cm\" del terminale necessaria" +#. Highlight title msgid "" "\n" "--- Terminal keys ---" @@ -5409,6 +5243,12 @@ msgstr "" msgid "Cannot open $VIMRUNTIME/rgb.txt" msgstr "Non riesco ad aprire $VIMRUNTIME/rgb.txt" +msgid "E181: Invalid attribute: %s" +msgstr "E181: Attributo non valido: %s" + +msgid "E279: Sorry, ++shell is not supported on this system" +msgstr "E279: Spiacente, ++shell non supportato in questo sistema" + msgid "Kill job in \"%s\"?" msgstr "Cancello lavoro \"%s\"?" @@ -5451,11 +5291,17 @@ msgstr "E966: Numero di riga non valido: %ld" msgid "E965: missing property type name" msgstr "E965: Nome del tipo di propriet non disponibile" +msgid "E275: Cannot add text property to unloaded buffer" +msgstr "E275: Non posso aggiungere propriet di testo a un buffer scaricato" + msgid "E967: text property info corrupted" -msgstr "E967: informazione sul testo corrotta" +msgstr "E967: informazione sulle propriet del testo corrotta" msgid "E968: Need at least one of 'id' or 'type'" -msgstr "E968: Serve almeno conoscere 'id' o 'type'" +msgstr "E968: Occorre conoscere almeno un 'id' o 'type'" + +msgid "E860: Need 'id' and 'type' with 'both'" +msgstr "E860: Servono 'id' e 'type' specificando 'both'" msgid "E969: Property type %s already defined" msgstr "E969: Tipo di propriet %s gi definito" @@ -5463,18 +5309,123 @@ msgstr "E969: Tipo di propriet msgid "E970: Unknown highlight group name: '%s'" msgstr "E970: Nome gruppo di evidenziazione sconosciuto: '%s'" +msgid "(Invalid)" +msgstr "(Non valido)" + +msgid "%a %b %d %H:%M:%S %Y" +msgstr "%a %b %d %H:%M:%S %Y" + +msgid "%ld second ago" +msgid_plural "%ld seconds ago" +msgstr[0] "%ld secondo fa" +msgstr[1] "%ld secondi fa" + +msgid "E805: Using a Float as a Number" +msgstr "E805: Uso di un Numero-a-virgola-mobile come un Numero" + +msgid "E703: Using a Funcref as a Number" +msgstr "E703: Uso di una Funcref come un Numero" + +msgid "E745: Using a List as a Number" +msgstr "E745: Uso di una Lista come un Numero" + +msgid "E728: Using a Dictionary as a Number" +msgstr "E728: Uso di un Dizionario come un Numero" + +msgid "E611: Using a Special as a Number" +msgstr "E611: Uso di uno Special come un Numero" + +msgid "E910: Using a Job as a Number" +msgstr "E910: Uso di un Job come un Numero" + +msgid "E913: Using a Channel as a Number" +msgstr "E913: Uso di un Canale come un Numero" + +msgid "E974: Using a Blob as a Number" +msgstr "E974: Uso di un Blob come un Numero" + +msgid "E891: Using a Funcref as a Float" +msgstr "E891: Uso di una Funcref come un Numero-a-virgola-mobile" + +msgid "E892: Using a String as a Float" +msgstr "E892: Uso di una Stringa come un Numero-a-virgola-mobile" + +msgid "E893: Using a List as a Float" +msgstr "E893: Uso di una Lista come un Numero-a-virgola-mobile" + +msgid "E894: Using a Dictionary as a Float" +msgstr "E894: Uso di un Dizionario come un Numero-a-virgola-mobile" + +msgid "E362: Using a boolean value as a Float" +msgstr "E362: Uso di un valore booleano come un Numero-a-virgola-mobile" + +msgid "E907: Using a special value as a Float" +msgstr "E907: Uso di un valore speciale come un Numero-a-virgola-mobile" + +msgid "E911: Using a Job as a Float" +msgstr "E911: Uso di un Job come un Numero-a-virgola-mobile" + +msgid "E914: Using a Channel as a Float" +msgstr "E914: Uso di un Canale come un Numero-a-virgola-mobile" + +msgid "E975: Using a Blob as a Float" +msgstr "E975: Uso di un Blob come un Numero-a-virgola-mobile" + +msgid "E729: using Funcref as a String" +msgstr "E729: Uso di una Funcref come una Stringa" + +msgid "E730: using List as a String" +msgstr "E730: Uso di una Lista come una Stringa" + +msgid "E731: using Dictionary as a String" +msgstr "E731: Uso di un Dizionario come una Stringa" + +msgid "E976: using Blob as a String" +msgstr "E976: Uso di un Blob come una Stringa" + +msgid "E977: Can only compare Blob with Blob" +msgstr "E977: Posso confrontare un Blob solo con un altro Blob" + +msgid "E691: Can only compare List with List" +msgstr "E691: Posso confrontare una Lista solo con un'altra Lista" + +msgid "E692: Invalid operation for List" +msgstr "E692: Operazione non valida per Liste" + +msgid "E735: Can only compare Dictionary with Dictionary" +msgstr "E735: Posso confrontare un Dizionario solo con un altro Dizionario" + +msgid "E736: Invalid operation for Dictionary" +msgstr "E736: Operazione non valida per Dizionari" + +msgid "E694: Invalid operation for Funcrefs" +msgstr "E694: Operazione non valida per Funcref" + +msgid "E112: Option name missing: %s" +msgstr "E112: Nome Opzione mancante: %s" + +msgid "E973: Blob literal should have an even number of hex characters" +msgstr "" +"E973: Una stringa Blob dovrebbe avere un numero pari di caratteri esadecimali" + +msgid "E114: Missing quote: %s" +msgstr "E114: Manca '\"': %s" + +msgid "E115: Missing quote: %s" +msgstr "E115: Manca apostrofo: %s" + msgid "new shell started\n" -msgstr "fatto eseguire nuovo shell\n" +msgstr "fatto eseguire nuova shell\n" msgid "Vim: Error reading input, exiting...\n" msgstr "Vim: Errore leggendo l'input, esco...\n" -msgid "Used CUT_BUFFER0 instead of empty selection" -msgstr "Uso CUT_BUFFER0 invece che una scelta nulla" - +#. This happens when the FileChangedRO autocommand changes the +#. file in a way it becomes shorter. msgid "E881: Line count changed unexpectedly" msgstr "E881: Contatore righe inaspettatamente cambiato" +#. must display the prompt msgid "No undo possible; continue anyway" msgstr "'undo' non pi possibile; continuo comunque" @@ -5518,7 +5469,7 @@ msgid "E832: Non-encrypted file has encrypted undo file: %s" msgstr "E832: File non cifrato con file Undo cifrato: %s" msgid "E826: Undo file decryption failed: %s" -msgstr "E826: Decifratura fallita del file Undo: %s" +msgstr "E826: Decodifica fallita del file Undo: %s" msgid "E827: Undo file is encrypted: %s" msgstr "E827: File Undo cifrato: %s" @@ -5577,11 +5528,6 @@ msgstr "Nessuna modifica, Undo impossibile" msgid "number changes when saved" msgstr "numero modif. quando salv." -msgid "%ld second ago" -msgid_plural "%ld seconds ago" -msgstr[0] "%ld secondo fa" -msgstr[1] "%ld secondi fa" - msgid "E790: undojoin is not allowed after undo" msgstr "E790: undojoin non consentito dopo undo" @@ -5591,6 +5537,65 @@ msgstr "E439: lista 'undo' non valida" msgid "E440: undo line missing" msgstr "E440: riga di 'undo' mancante" +msgid "" +"\n" +" Name Args Address Complete Definition" +msgstr "" +"\n" +" Nome Arg. Indir. Completo Definizione" + +msgid "No user-defined commands found" +msgstr "Non trovo comandi definiti dall'utente" + +msgid "E180: Invalid address type value: %s" +msgstr "E180: Tipo di indirizzo non valido: %s" + +msgid "E180: Invalid complete value: %s" +msgstr "E180: Valore %s non valido per 'complete'" + +msgid "E468: Completion argument only allowed for custom completion" +msgstr "" +"E468: Argomento di completamento consentito solo per completamento " +"personalizzato" + +msgid "E467: Custom completion requires a function argument" +msgstr "" +"E467: Il completamento personalizzato richiede un argomento di funzione" + +msgid "E175: No attribute specified" +msgstr "E175: Nessun attributo specificato" + +msgid "E176: Invalid number of arguments" +msgstr "E176: Numero di argomenti non valido" + +msgid "E177: Count cannot be specified twice" +msgstr "E177: Non si pu specificare due volte il contatore" + +msgid "E178: Invalid default value for count" +msgstr "E178: Valore predefinito del contatore non valido" + +msgid "E179: argument required for -complete" +msgstr "E179: argomento necessario per -complete" + +msgid "E179: argument required for -addr" +msgstr "E179: argomento necessario per -addr" + +msgid "E174: Command already exists: add ! to replace it: %s" +msgstr "E174: Il comando esiste gi: aggiungi ! per sostituirlo: %s" + +msgid "E182: Invalid command name" +msgstr "E182: Nome comando non valido" + +msgid "E183: User defined commands must start with an uppercase letter" +msgstr "" +"E183: I comandi definiti dall'utente devono iniziare con lettera maiuscola" + +msgid "E841: Reserved name, cannot be used for user defined command" +msgstr "E841: Nome riservato, non usabile in un comando definito dall'utente" + +msgid "E184: No such user-defined command: %s" +msgstr "E184: Comando definito dall'utente %s inesistente" + msgid "E122: Function %s already exists, add ! to replace it" msgstr "E122: La funzione %s esiste gi, aggiungi ! per sostituirla" @@ -5609,6 +5614,18 @@ msgstr "E125: Argomento non consentito: %s" msgid "E853: Duplicate argument name: %s" msgstr "E853: Nome argomento duplicato: %s" +msgid "E989: Non-default argument follows default argument" +msgstr "E989: Argomento non di default dopo argomento di default" + +msgid "E126: Missing :endfunction" +msgstr "E126: Manca :endfunction" + +msgid "W22: Text found after :endfunction: %s" +msgstr "W22: Trovato testo dopo :endfunction: %s" + +msgid "E451: Expected }: %s" +msgstr "E451: Atteso }: %s" + msgid "E740: Too many arguments for function %s" msgstr "E740: Troppi argomenti per la funzione: %s" @@ -5634,14 +5651,8 @@ msgstr "%s ritorno %s" msgid "E699: Too many arguments" msgstr "E699: Troppi argomenti" -msgid "E117: Unknown function: %s" -msgstr "E117: Funzione sconosciuta: %s" - -msgid "E933: Function was deleted: %s" -msgstr "E933: Funzione eliminata: %s" - -msgid "E119: Not enough arguments for function: %s" -msgstr "E119: La funzione: %s richiede pi argomenti" +msgid "E276: Cannot use function as a method: %s" +msgstr "E276: Non posso usare la funzione come un metodo: %s" msgid "E120: Using not in a script context: %s" msgstr "E120: Uso di fuori dal contesto di uno script: %s" @@ -5658,6 +5669,9 @@ msgstr "E128: Il nome funzione deve iniziare con maiuscola o \"s:\": %s" msgid "E884: Function name cannot contain a colon: %s" msgstr "E884: Il nome della funzione non pu contenere un due punti: %s" +msgid "E454: function list was modified" +msgstr "E454: la lista funzioni stata cambiata" + msgid "E123: Undefined function: %s" msgstr "E123: Funzione non definita: %s" @@ -5669,13 +5683,7 @@ msgstr "E862: Non si pu msgid "E932: Closure function should not be at top level: %s" msgstr "" -"E932: La funzione di chiusura non novrebbe essere al livello pi alto: %s" - -msgid "E126: Missing :endfunction" -msgstr "E126: Manca :endfunction" - -msgid "W22: Text found after :endfunction: %s" -msgstr "W22: Trovato testo dopo :endfunction: %s" +"E932: La funzione di chiusura non dovrebbe essere al livello pi alto: %s" msgid "E707: Function name conflicts with variable: %s" msgstr "E707: Nome funzione in conflitto con la variabile: %s" @@ -5692,12 +5700,23 @@ msgstr "E131: Non posso eliminare la funzione %s: msgid "E133: :return not inside a function" msgstr "E133: :return fuori da una funzione" -msgid "E107: Missing parentheses: %s" -msgstr "E107: Mancano parentesi: %s" - msgid "%s (%s, compiled %s)" msgstr "%s (%s, compilato %s)" +msgid "" +"\n" +"MS-Windows 64-bit GUI/console version" +msgstr "" +"\n" +"Versione MS-Windows 64-bit GUI/console" + +msgid "" +"\n" +"MS-Windows 32-bit GUI/console version" +msgstr "" +"\n" +"Versione MS-Windows 32-bit GUI/console" + msgid "" "\n" "MS-Windows 64-bit GUI version" @@ -5833,18 +5852,15 @@ msgstr "con GUI X11-neXtaw." msgid "with X11-Athena GUI." msgstr "con GUI X11-Athena." +msgid "with Haiku GUI." +msgstr "con GUI Haiku." + msgid "with Photon GUI." msgstr "con GUI Photon." msgid "with GUI." msgstr "con GUI." -msgid "with Carbon GUI." -msgstr "con GUI Carbon." - -msgid "with Cocoa GUI." -msgstr "con GUI Cocoa." - msgid " Features included (+) or not (-):\n" msgstr " Funzionalit incluse (+) o escluse (-):\n" @@ -5882,7 +5898,7 @@ msgid " defaults file: \"" msgstr " file dei default: \"" msgid " system menu file: \"" -msgstr " file menu di sistema: \"" +msgstr " file men di sistema: \"" msgid " fall-back for $VIM: \"" msgstr " $VIM di riserva: \"" @@ -5971,6 +5987,183 @@ msgstr "batti :help register per informazioni " msgid "menu Help->Sponsor/Register for information " msgstr "menu Aiuto->Sponsor/Registrazione per informazioni " +msgid "[end of lines]" +msgstr "[fine delle righe]" + +msgid "global" +msgstr "global" + +msgid "buffer" +msgstr "buffer" + +msgid "window" +msgstr "window" + +msgid "tab" +msgstr "tab" + +msgid "" +"\n" +"# Buffer list:\n" +msgstr "" +"\n" +"# Lista Buffer:\n" + +msgid "" +"\n" +"# %s History (newest to oldest):\n" +msgstr "" +"\n" +"# %s Storia (da pi recente a meno recente):\n" + +msgid "Command Line" +msgstr "Riga-di-comando" + +msgid "Search String" +msgstr "Stringa di Ricerca" + +msgid "Expression" +msgstr "Espressione" + +msgid "Input Line" +msgstr "Riga di Input" + +msgid "Debug Line" +msgstr "Riga di Debug" + +msgid "" +"\n" +"# Bar lines, copied verbatim:\n" +msgstr "" +"\n" +"# Righe che iniziano con '|', semplicemente copiate:\n" + +msgid "%sviminfo: %s in line: " +msgstr "%sviminfo: %s nella riga: " + +msgid "E136: viminfo: Too many errors, skipping rest of file" +msgstr "E136: viminfo: Troppi errori, ignoro il resto del file" + +msgid "" +"\n" +"# global variables:\n" +msgstr "" +"\n" +"# variabili globali:\n" + +msgid "" +"\n" +"# Last Substitute String:\n" +"$" +msgstr "" +"\n" +"# Ultima Stringa Sostituzione:\n" +"$" + +msgid "" +"\n" +"# Last %sSearch Pattern:\n" +"~" +msgstr "" +"\n" +"# Ult. %sEspressione di Ricerca:\n" +"~" + +msgid "Substitute " +msgstr "Sostituzione " + +msgid "Illegal register name" +msgstr "Nome registro non ammesso" + +msgid "" +"\n" +"# Registers:\n" +msgstr "" +"\n" +"# Registri:\n" + +msgid "E574: Unknown register type %d" +msgstr "E574: Tipo di registro sconosciuto: %d" + +msgid "" +"\n" +"# History of marks within files (newest to oldest):\n" +msgstr "" +"\n" +"# Storia delle marcature all'interno dei file (dalle pi recenti alle meno " +"recenti):\n" + +msgid "" +"\n" +"# File marks:\n" +msgstr "" +"\n" +"# File mark:\n" + +#. Write the jumplist with -' +msgid "" +"\n" +"# Jumplist (newest first):\n" +msgstr "" +"\n" +"# Jumplist (dai pi recenti):\n" + +msgid "Missing '>'" +msgstr "Manca '>'" + +msgid "Illegal starting char" +msgstr "Carattere iniziale non consentito" + +#. Write the info: +msgid "# This viminfo file was generated by Vim %s.\n" +msgstr "# Questo file viminfo stato generato da Vim %s.\n" + +msgid "" +"# You may edit it if you're careful!\n" +"\n" +msgstr "" +"# File modificabile, attento a quel che fai!\n" +"\n" + +msgid "# Value of 'encoding' when this file was written\n" +msgstr "# Valore di 'encoding' al momento della scrittura di questo file\n" + +msgid "Reading viminfo file \"%s\"%s%s%s%s" +msgstr "Lettura file viminfo \"%s\"%s%s%s%s" + +msgid " info" +msgstr " informazione" + +msgid " marks" +msgstr " marcature" + +msgid " oldfiles" +msgstr " file elaborati in precedenza" + +msgid " FAILED" +msgstr " FALLITO" + +#. avoid a wait_return for this message, it's annoying +msgid "E137: Viminfo file is not writable: %s" +msgstr "E137: File viminfo \"%s\" inaccessibile in scrittura" + +#. They all exist? Must be something wrong! Don't write +#. the viminfo file then. +msgid "E929: Too many viminfo temp files, like %s!" +msgstr "E929: Troppi file temporanei viminfo, come %s!" + +msgid "E138: Can't write viminfo file %s!" +msgstr "E138: Non riesco a scrivere il file viminfo %s!" + +msgid "Writing viminfo file \"%s\"" +msgstr "Scrivo file viminfo \"%s\"" + +msgid "E886: Can't rename viminfo file to %s!" +msgstr "E886: Non riesco a rinominare il file viminfo a %s!" + +msgid "E195: Cannot open viminfo file for reading" +msgstr "E195: Non posso aprire il file viminfo in lettura" + msgid "Already only one window" msgstr "C' gi una finestra sola" @@ -5978,7 +6171,10 @@ msgid "E92: Buffer %ld not found" msgstr "E92: Buffer %ld non trovato" msgid "E441: There is no preview window" -msgstr "E441: Non c' una finestra di pre-visualizzazione" +msgstr "E441: Non c' una finestra di anteprima" + +msgid "E242: Can't split a window while closing another" +msgstr "E242: Non posso dividere una finestra mentre ne sto chiudendo un'altra" msgid "E442: Can't split topleft and botright at the same time" msgstr "E442: Non riesco a dividere ALTO-SX e BASSO-DX contemporaneamente" @@ -5989,9 +6185,6 @@ msgstr "E443: Non posso ruotare quando un'altra finestra msgid "E444: Cannot close last window" msgstr "E444: Non riesco a chiudere l'ultima finestra" -msgid "E813: Cannot close autocmd window" -msgstr "E813: Non riesco a chiudere la finestra autocomandi" - msgid "E814: Cannot close window, only autocmd window would remain" msgstr "" "E814: Non posso chiudere questa finestra, rimarrebbe solo la finestra " @@ -6000,20 +6193,8 @@ msgstr "" msgid "E445: Other window contains changes" msgstr "E445: Altre finestre contengono modifiche" -msgid "E799: Invalid ID: %d (must be greater than or equal to 1)" -msgstr "E799: ID non valido: %d (dev'essere maggiore o uguale a 1)" - -msgid "E801: ID already taken: %d" -msgstr "E801: ID gi utilizzato: %d" - -msgid "E290: List or number required" -msgstr "E290: necessaria una Lista o un Numero" - -msgid "E802: Invalid ID: %d (must be greater than or equal to 1)" -msgstr "E802: ID non valido: %d (dev'essere maggiore o uguale a 1)" - -msgid "E803: ID not found: %d" -msgstr "E803: ID non trovato: %d" +msgid "E366: Not allowed to enter a popup window" +msgstr "E366: Non si pu inserire testo in una finestra dinamica" msgid "E370: Could not load library %s" msgstr "E370: Non riesco a caricare la libreria %s" @@ -6025,7 +6206,8 @@ msgstr "" msgid "E299: Perl evaluation forbidden in sandbox without the Safe module" msgstr "" -"E299: Valorizzazione Perl vietata in ambiente protetto senza il modulo Safe" +"E299: Valorizzazione Perl non consentita in ambiente protetto senza il " +"modulo Safe" msgid "Edit with &multiple Vims" msgstr "Apri con &molti Vim" @@ -6059,9 +6241,641 @@ msgstr "errore gvimext.dll" msgid "Path length too long!" msgstr "Percorso file troppo lungo!" +msgid "E121: Undefined variable: %s" +msgstr "E121: Variabile non definita: %s" + +msgid "E121: Undefined variable: %c:%s" +msgstr "E121: Variabile non definita: %c:%s" + +msgid "E464: Ambiguous use of user-defined command" +msgstr "E464: Uso ambiguo di comando definito dall'utente" + +msgid "E476: Invalid command" +msgstr "E476: Comando non valido" + +msgid "E476: Invalid command: %s" +msgstr "E476: Comando non valido: %s" + +msgid "E710: List value has more items than targets" +msgstr "E710: Il valore della Lista ha pi elementi che destinazioni" + +msgid "E711: List value does not have enough items" +msgstr "E711: Il valore della Lista non ha elementi sufficienti" + +msgid "E719: Cannot slice a Dictionary" +msgstr "E719: Non posso suddividere un Dizionario" + +msgid "" +"E856: \"assert_fails()\" second argument must be a string or a list with one " +"or two strings" +msgstr "" +"E856: Il secondo argomento di \"assert_fails()\" dev'essere una stringa o " +"una Lista con una o due stringhe" + +msgid "E908: using an invalid value as a String: %s" +msgstr "E908: Uso di un valore non valido come una Stringa: %s" + +msgid "E909: Cannot index a special variable" +msgstr "E909: Non posso indicizzare una variabile speciale" + +msgid "E1100: Command not supported in Vim9 script (missing :var?): %s" +msgstr "E1100: Comando non supportato negli script Vim9 (manca :var?): %s" + +msgid "E1001: Variable not found: %s" +msgstr "E1001: Variabile non trovata: %s" + +msgid "E1002: Syntax error at %s" +msgstr "E1002: Errore sintattico in %s" + +msgid "E1003: Missing return value" +msgstr "E1003: Manca il valore restituito" + +msgid "E1004: White space required before and after '%s' at \"%s\"" +msgstr "E1004: Spazio bianco necessario prima e dopo '%s' in \"%s\"" + +msgid "E1005: Too many argument types" +msgstr "E1005: Troppi tipi di argomento" + +msgid "E1006: %s is used as an argument" +msgstr "E1006: %s usato come argomento" + +msgid "E1007: Mandatory argument after optional argument" +msgstr "E1007: Argomento obbligatorio dopo un argomento opzionale" + +msgid "E1008: Missing " +msgstr "E1008: Manca " + +msgid "E1009: Missing > after type" +msgstr "E1009: Manca > dopo tipo" + +msgid "E1010: Type not recognized: %s" +msgstr "E1010: Tipo non riconosciuto: %s" + +msgid "E1011: Name too long: %s" +msgstr "E1011: Nome troppo lungo: %s" + +msgid "E1012: Type mismatch; expected %s but got %s" +msgstr "E1012: Tipo non corrispondente; atteso %s, ma ottenuto %s" + +msgid "E1013: Argument %d: type mismatch, expected %s but got %s" +msgstr "" +"E1013: Argomento %d: tipo non corrispondente, atteso %s, ma ottenuto %s" + +msgid "E1014: Invalid key: %s" +msgstr "E1014: Chiave non valida: %s" + +msgid "E1015: Name expected: %s" +msgstr "E1015: Atteso un nome: %s" + +msgid "E1016: Cannot declare a %s variable: %s" +msgstr "E1016: Non si pu dichiarare una %s variabile: %s" + +msgid "E1016: Cannot declare an environment variable: %s" +msgstr "E1016: Non si pu dichiarare una variabile d'ambiente: %s" + +msgid "E1017: Variable already declared: %s" +msgstr "E1017: Variabile gi dichiarata: %s" + +msgid "E1018: Cannot assign to a constant: %s" +msgstr "E1018: Non posso assegnare a una costante: %s" + +msgid "E1019: Can only concatenate to string" +msgstr "E1019: Posso solo concatenare a una stringa" + +msgid "E1020: Cannot use an operator on a new variable: %s" +msgstr "E1020: Non posso usare un operatore su una variabile nuova: %s" + +msgid "E1021: Const requires a value" +msgstr "E1021: Const richiede un valore" + +msgid "E1022: Type or initialization required" +msgstr "E1022: Tipo o inizializzazione richiesta" + +msgid "E1023: Using a Number as a Bool: %lld" +msgstr "E1023: Uso di un Numero come valore Booleano: %lld" + +msgid "E1024: Using a Number as a String" +msgstr "E1024: Uso di un Numero come una Stringa" + +msgid "E1025: Using } outside of a block scope" +msgstr "E1025: Uso di } all'esterno di un blocco" + +msgid "E1026: Missing }" +msgstr "E1026: Manca }" + +msgid "E1027: Missing return statement" +msgstr "E1027: Manca istruzione :return" + +msgid "E1028: Compiling :def function failed" +msgstr "E1028: Compilazione di funzione :def fallita" + +msgid "E1029: Expected %s but got %s" +msgstr "E1029: Atteso %s ma ottenuto %s" + +msgid "E1030: Using a String as a Number: \"%s\"" +msgstr "E1030: Uso di una Stringa come un Numero: \"%s\"" + +msgid "E1031: Cannot use void value" +msgstr "E1031: Non posso usare valore nullo" + +msgid "E1032: Missing :catch or :finally" +msgstr "E1032: Manca :catch o :finally" + +msgid "E1033: Catch unreachable after catch-all" +msgstr "E1033: Catch non raggiungibile dopo aver richiesto catch-all" + +msgid "E1034: Cannot use reserved name %s" +msgstr "E1034: Non posso usare il nome riservato %s" + +msgid "E1035: % requires number arguments" +msgstr "E1035: % richiede come argomenti dei numeri" + +msgid "E1036: %c requires number or float arguments" +msgstr "" +"E1036: %c richiede come argomenti dei Numeri o dei Numeri-a-virgola-mobile" + +msgid "E1037: Cannot use \"%s\" with %s" +msgstr "E1037: Non posso usare \"%s\" con %s" + +msgid "E1038: \"vim9script\" can only be used in a script" +msgstr "E1038: \"vim9script\" pu solo essere usato in uno script" + +msgid "E1039: \"vim9script\" must be the first command in a script" +msgstr "E1039: \"vim9script\" dev'essere il primo comando in uno script" + +msgid "E1040: Cannot use :scriptversion after :vim9script" +msgstr "E1040: Non si pu usare :scriptversion dopo :vim9script" + +msgid "E1041: Redefining script item %s" +msgstr "E1041: Ridefinisco elemento di script %s" + +msgid "E1042: Export can only be used in vim9script" +msgstr "E1042: Export pu essere usato solo in vim9script" + +msgid "E1043: Invalid command after :export" +msgstr "E1043: Comando non valido dopo :export" + +msgid "E1044: Export with invalid argument" +msgstr "E1044: Export con argomento non valido" + +msgid "E1045: Missing \"as\" after *" +msgstr "E1045: Manca \"as\" dopo *" + +msgid "E1046: Missing comma in import" +msgstr "E1046: Manca virgola in import" + +msgid "E1047: Syntax error in import" +msgstr "E1047: Errore di sintassi in import" + +msgid "E1048: Item not found in script: %s" +msgstr "E1048: Elemento non trovato nello script: %s" + +msgid "E1049: Item not exported in script: %s" +msgstr "E1049: Elemento non esportato nello script: %s" + +msgid "E1050: Colon required before a range: %s" +msgstr "E1050: Un due punti necessario prima di un intervallo: %s" + +msgid "E1051: Wrong argument type for +" +msgstr "E1051: Tipo di argomento errato per +" + +msgid "E1052: Cannot declare an option: %s" +msgstr "E1052: Non si pu dichiarare un'opzione: %s" + +msgid "E1053: Could not import \"%s\"" +msgstr "E1053: Non riesco a importare \"%s\"" + +msgid "E1054: Variable already declared in the script: %s" +msgstr "E1054: Variabile gi dichiarata nello script: %s" + +msgid "E1055: Missing name after ..." +msgstr "E1055: Manca nome dopo ..." + +msgid "E1056: Expected a type: %s" +msgstr "E1056: Atteso un tipo: %s" + +msgid "E1057: Missing :enddef" +msgstr "E1057: Manca :enddef" + +msgid "E1058: Function nesting too deep" +msgstr "E1058: Nidificazione della funzione troppo estesa" + +msgid "E1059: No white space allowed before colon: %s" +msgstr "E1059: Nessuno spazio bianco consentito prima dei due punti: %s" + +msgid "E1060: Expected dot after name: %s" +msgstr "E1060: Atteso un punto dopo il nome: %s" + +msgid "E1061: Cannot find function %s" +msgstr "E1061: Non riesco a trovare la funzione %s" + +msgid "E1062: Cannot index a Number" +msgstr "E1062: Non posso indicizzare un Numero" + +msgid "E1063: Type mismatch for v: variable" +msgstr "E1063: Tipo non corrispondente per una variabile v:" + +msgid "E1066: Cannot declare a register: %s" +msgstr "E1066: Non posso dichiarare un registro: %s" + +msgid "E1067: Separator mismatch: %s" +msgstr "E1067: Manca il separatore corrispondente: %s" + +msgid "E1068: No white space allowed before '%s': %s" +msgstr "E1068: Nessuno spazio bianco consentito prima di '%s': %s" + +msgid "E1069: White space required after '%s': %s" +msgstr "E1069: Spazio bianco necessario dopo '%s': %s" + +msgid "E1070: Missing \"from\"" +msgstr "E1070: Manca \"from\"" + +msgid "E1071: Invalid string after \"from\"" +msgstr "E1071: Stringa non valida dopo \"from\"" + +msgid "E1072: Cannot compare %s with %s" +msgstr "E1072: Non posso confrontare %s con %s" + +msgid "E1073: Name already defined: %s" +msgstr "E1073: Nome gi definito: %s" + +msgid "E1074: No white space allowed after dot" +msgstr "E1074: Nessuno spazio bianco consentito dopo il punto" + +msgid "E1075: Namespace not supported: %s" +msgstr "E1075: Spazio-dei-nomi non supportato: %s" + +msgid "E1076: This Vim is not compiled with float support" +msgstr "" +"E1076: Questo Vim non stato compilato col supporto per i Numeri-a-virgola-" +"mobile" + +msgid "E1077: Missing argument type for %s" +msgstr "E1077: Manca tipo di argomento per %s" + +msgid "E1081: Cannot unlet %s" +msgstr "E1081: Non posso annullare %s" + +msgid "E1082: Cannot use a namespaced variable: %s" +msgstr "E1082: Non posso usare una variabile di uno spazio-dei-nomi: %s" + +msgid "E1083: Missing backtick" +msgstr "E1083: Manca apice inverso" + +msgid "E1084: Cannot delete Vim9 script function %s" +msgstr "E1084: Non posso eliminare la funzione di script Vim9 %s" + +msgid "E1085: Not a callable type: %s" +msgstr "E1085: Tipo che non pu essere chiamato: %s" + +msgid "E1086: Cannot use :function inside :def" +msgstr "E1086: Non posso usare :function all'interno di :def" + +msgid "E1087: Cannot use an index when declaring a variable" +msgstr "E1087: Non posso usare un indice nella dichiarazione di una variabile" + +msgid "E1089: Unknown variable: %s" +msgstr "E1089: Variabile sconosciuta: %s" + +msgid "E1090: Cannot assign to argument %s" +msgstr "E1090: Non posso assegnare all'argomento %s" + +msgid "E1091: Function is not compiled: %s" +msgstr "E1091: La funzione non compilata: %s" + +msgid "E1092: Cannot use a list for a declaration" +msgstr "E1092: Non posso usare una Lista per una dichiarazione" + +msgid "E1093: Expected %d items but got %d" +msgstr "E1093: Attesi %d elementi, ma ottenuti %d" + +msgid "E1094: Import can only be used in a script" +msgstr "E1094: Import pu solo essere usato in uno script" + +msgid "E1095: Unreachable code after :return" +msgstr "E1095: Codice irraggiungibile dopo :return" + +msgid "E1096: Returning a value in a function without a return type" +msgstr "" +"E1096: Restituito valore in una funzione in cui il tipo di ritorno non " +"stato definito" + +msgid "E1097: Line incomplete" +msgstr "E1097: Riga incompleta" + +msgid "E1099: Unknown error while executing %s" +msgstr "E1099: Errore sconosciuto mentre era in esecuzione %s" + +msgid "E1101: Cannot declare a script variable in a function: %s" +msgstr "" +"E1101: Non si pu dichiarare una variabile di script in una funzione: %s" + +msgid "E1102: Lambda function not found: %s" +msgstr "E1102: Funzione Lambda non trovata: %s" + +msgid "E1103: Dictionary not set" +msgstr "E1103: Dizionario non impostato" + +msgid "E1104: Missing >" +msgstr "E1104: Manca >" + +msgid "E1105: Cannot convert %s to string" +msgstr "E1105: Non posso convertire %s a una Stringa" + +msgid "E1106: One argument too many" +msgstr "E1106: Un argomento di troppo" + +msgid "E1106: %d arguments too many" +msgstr "E1106: %d argomenti di troppo" + +msgid "E1107: String, List, Dict or Blob required" +msgstr "E1107: Necessaria Stringa, Lista, Dizionario o Blob" + +msgid "E1108: Item not found: %s" +msgstr "E1108: Elemento non trovato: %s" + +msgid "E1109: List item %d is not a List" +msgstr "E1109: L'elemento di Lista %d non una Lista" + +msgid "E1110: List item %d does not contain 3 numbers" +msgstr "E1110: L'elemento di Lista %d non contiene 3 numeri" + +msgid "E1111: List item %d range invalid" +msgstr "E1111: Intervallo dell'elemento di Lista %d non valido" + +msgid "E1112: List item %d cell width invalid" +msgstr "E1112: Elemento di Lista %d con larghezza di cella non valida" + +msgid "E1113: Overlapping ranges for 0x%lx" +msgstr "E1113: Intervalli sovrapposti per 0x%lx" + +msgid "E1114: Only values of 0x100 and higher supported" +msgstr "E1114: Solo valori 0x100 o pi elevati sono supportati" + +msgid "E1115: \"assert_fails()\" fourth argument must be a number" +msgstr "E1115: il quarto argomento di \"assert_fails()\" dev'essere un Numero" + +msgid "E1116: \"assert_fails()\" fifth argument must be a string" +msgstr "" +"E1116: Il quinto argomento di \"assert_fails()\" dev'essere una Stringa" + +msgid "E1117: Cannot use ! with nested :def" +msgstr "E1117: Non posso usare ! con :def nidificate" + +msgid "E1118: Cannot change list" +msgstr "E1118: Non posso cambiare Lista" + +msgid "E1119: Cannot change list item" +msgstr "E1119: Non posso cambiare elemento di Lista" + +msgid "E1120: Cannot change dict" +msgstr "E1120: Non posso cambiare Dizionario" + +msgid "E1121: Cannot change dict item" +msgstr "E1121: Non posso cambiare elemento di Dizionario" + +msgid "E1122: Variable is locked: %s" +msgstr "E1122: Variabile bloccata: %s" + +msgid "E1123: Missing comma before argument: %s" +msgstr "E1123: Manca virgola prima dell'argomento: %s" + +msgid "E1124: \"%s\" cannot be used in legacy Vim script" +msgstr "E1124: \"%s\" non si pu usare negli script Vim tradizionali" + +msgid "E1125: Final requires a value" +msgstr "E1125: :final richiede un valore" + +msgid "E1126: Cannot use :let in Vim9 script" +msgstr "E1126: Non si pu usare :let negli script Vim9" + +msgid "E1127: Missing name after dot" +msgstr "E1127: Manca il nome dopo il punto" + +msgid "E1128: } without {" +msgstr "E1128: } senza {" + +msgid "E1129: Throw with empty string" +msgstr "E1129: :throw di una stringa nulla" + +msgid "E1130: Cannot add to null list" +msgstr "E1130: Non si pu aggiungere a una Lista nulla" + +msgid "E1131: Cannot add to null blob" +msgstr "E1131: Non si pu aggiungere a un Blob nullo" + +msgid "E1132: Missing function argument" +msgstr "E1132: Manca l'argomento della funzione" + +msgid "E1133: Cannot extend a null dict" +msgstr "E1133: Non si pu estendere un Dizionario nullo" + +msgid "E1134: Cannot extend a null list" +msgstr "E1134: Non si pu estendere una Lista nulla" + +msgid "E1135: Using a String as a Bool: \"%s\"" +msgstr "E1135: Uso di una Stringa come valore Booleano: \"%s\"" + +msgid "E1135: mapping must end with " +msgstr "E1135: La mappatura di deve terminare con un " + +msgid "E1136: mapping must end with before second " +msgstr "" +"E1136: La mappatura di deve terminare con un prima di un secondo " +"" + +msgid "E1137: mapping must not include %s key" +msgstr "E1137: La mappatura di non deve includere il tasto %s" + +msgid "E1138: Using a Bool as a Number" +msgstr "E1138: Uso di un valore Booleano come un Numero" + +msgid "E1139: Missing matching bracket after dict key" +msgstr "E1139: Manca parentesi di chiusura dopo una chiave di Dizionario" + +msgid "E1140: For argument must be a sequence of lists" +msgstr "E1140: L'argomento di :for dev'essere una sequenza di Liste" + +msgid "E1141: Indexable type required" +msgstr "E1141: Il tipo dev'essere indicizzabile" + +msgid "E1142: Non-empty string required" +msgstr "E1142: Richiesta stringa non vuota" + +msgid "E1143: Empty expression: \"%s\"" +msgstr "E1143: Espressione vuota: \"%s\"" + +msgid "E1144: Command \"%s\" is not followed by white space: %s" +msgstr "E1144: Il comando \"%s\" non seguito da uno spazio bianco: %s" + +msgid "E1145: Missing heredoc end marker: %s" +msgstr "E1145: Manca marcatore della fine del quidoc: %s" + +msgid "E1146: Command not recognized: %s" +msgstr "E1146: Comando non riconosciuto: %s" + +msgid "E1147: List not set" +msgstr "E1147: Lista non impostata" + +msgid "E1148: Cannot index a %s" +msgstr "E1148: Non posso indicizzare un/a %s" + +msgid "E1149: Script variable is invalid after reload in function %s" +msgstr "" +"E1149: Variabile di script non valida dopo essere stata ricaricata nella " +"funzione %s" + +msgid "E1150: Script variable type changed" +msgstr "E1150: Modificato tipo della variabile di script" + +msgid "E1151: Mismatched endfunction" +msgstr "E1151: :endfunction senza corrispondenza" + +msgid "E1152: Mismatched enddef" +msgstr "E1152: :enddef senza corrispondenza" + +msgid "E1153: Invalid operation for bool" +msgstr "E1153: Operazione non valida per un valore Booleano" + +msgid "E1154: Divide by zero" +msgstr "E1154: Divisione per zero" + +msgid "E1155: Cannot define autocommands for ALL events" +msgstr "E1155: Non posso definire autocomandi per TUTTI gli eventi" + +msgid "E1156: Cannot change the argument list recursively" +msgstr "E1156: Non si pu cambiare la lista degli argomenti ricorsivamente" + +msgid "E1157: Missing return type" +msgstr "E1157: Manca tipo di valore restituito" + +msgid "E1158: Cannot use flatten() in Vim9 script" +msgstr "E1158: Non si pu usare flatten() in uno script Vim9" + +msgid "E1159: Cannot split a window when closing the buffer" +msgstr "" +"E1159: Non posso dividere una finestra mentre ne sto chiudendo il buffer" + +msgid "E1160: Cannot use a default for variable arguments" +msgstr "" +"E1160: Non posso usare un valore di default per argomenti di tipo variabile" + +msgid "E1161: Cannot json encode a %s" +msgstr "E1161: Non si pu codificare json un/a %s" + +msgid "E1162: Register name must be one character: %s" +msgstr "E1162: Il nome di registro dev'essere un carattere singolo: %s" + +msgid "E1163: Variable %d: type mismatch, expected %s but got %s" +msgstr "" +"E1163: Variabile %d: tipo non corrispondente, atteso %s, ma ottenuto %s" + +msgid "E1164: vim9cmd must be followed by a command" +msgstr "E1164: vim9cmd dev'essere seguito da un comando" + +msgid "E1165: Cannot use a range with an assignment: %s" +msgstr "E1165: Non posso usare un intervallo in un'assegnazione: %s" + +msgid "E1166: Cannot use a range with a dictionary" +msgstr "E1166: Non posso usare un intervallo con un Dizionario" + +msgid "E1167: Argument name shadows existing variable: %s" +msgstr "E1167: Il nome dell'argomento nasconde una variabile esistente: %s" + +msgid "E1168: Argument already declared in the script: %s" +msgstr "E1168: Argomento gi dichiarato nello script: %s" + +msgid "E1169: 'import * as {name}' not supported here" +msgstr "E1169: 'import * come {name}' non supportato qui" + +msgid "E1170: Cannot use #{ to start a comment" +msgstr "E1170: Non si pu usare #{ per iniziare un commento" + +msgid "E1171: Missing } after inline function" +msgstr "E1171: Manca } dopo una funzione in-linea" + +msgid "E1172: Cannot use default values in a lambda" +msgstr "E1172: Non si possono usare valori di default in un'espressione lambda" + +msgid "E1173: Text found after enddef: %s" +msgstr "E1173: Trovato del testo dopo enddef: %s" + +msgid "E1174: String required for argument %d" +msgstr "E1174: Una Stringa richiesta per argomento %d" + +msgid "E1175: Non-empty string required for argument %d" +msgstr "E1175: Una Stringa non vuota richiesta come argomento %d" + +msgid "E1176: Misplaced command modifier" +msgstr "E1176: Modificatore di comando fuori posto" + +msgid "E1177: For loop on %s not supported" +msgstr "E1177: Ciclo :for su %s non supportato" + +msgid "E1178: Cannot lock or unlock a local variable" +msgstr "E1178: Non si pu bloccare o sbloccare una variabile locale" + +msgid "" +"E1179: Failed to extract PWD from %s, check your shell's config related to " +"OSC 7" +msgstr "" +"E1179: Non riesco a estrarre PWD da %s, controllare la configurazione della " +"vostra shell relativa a OSC 7" + +msgid "E1180: Variable arguments type must be a list: %s" +msgstr "E1180: Il tipo di argomento delle variabili dev'essere una Lista: %s" + +msgid "E1181: Cannot use an underscore here" +msgstr "E1181: Non si pu usare un trattino basso qui" + +msgid "E1182: Blob required" +msgstr "E1182: richiesto un Blob" + +msgid "E1183: Cannot use a range with an assignment operator: %s" +msgstr "" +"E1183: Non si pu usare un intervallo con un operatore di assegnazione: %s" + +msgid "E1184: Blob not set" +msgstr "E1184: Blob non impostato" + +msgid "E1185: Cannot nest :redir" +msgstr "E1185: Non si pu nidificare :redir" + +msgid "E1185: Missing :redir END" +msgstr "E1185: Manca END per :redir" + +msgid "E1186: Expression does not result in a value: %s" +msgstr "E1186: L'espressione non produce un valore: %s" + +msgid "E1187: Failed to source defaults.vim" +msgstr "E1187: Non riesco a eseguire lo script defaults.vim" + +msgid "E1188: Cannot open a terminal from the command line window" +msgstr "" +"E1188: Non riesco ad aprire un terminale dalla finestra della riga-di-comando" + +msgid "E1189: Cannot use :legacy with this command: %s" +msgstr "E1189: Non si pu usare :legacy con questo comando: %s" + +msgid "E1190: One argument too few" +msgstr "E1190: Manca un argomento" + +msgid "E1190: %d arguments too few" +msgstr "E1190: Mancano %d argomenti" + +msgid "E1191: Call to function that failed to compile: %s" +msgstr "E1191: Chiamata a funzione che non si riesce a compilare: %s" + +msgid "E1192: Empty function name" +msgstr "E1192: Nome funzione vuoto" + msgid "--No lines in buffer--" msgstr "--File vuoto--" +#. +#. * 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: Comando finito male" @@ -6076,15 +6890,27 @@ msgstr "E11: Non valido nella finestra comandi; esegue, CTRL-C ignora" msgid "E12: Command not allowed from exrc/vimrc in current dir or tag search" msgstr "" -"E12: Comando non consentito da exrc/vimrc nella dir. in uso o nella ricerca " -"tag" +"E12: Comando non consentito da exrc/vimrc nella directory in uso o nella " +"ricerca tag" msgid "E171: Missing :endif" msgstr "E171: Manca :endif" +msgid "E603: :catch without :try" +msgstr "E603: :catch senza :try" + +msgid "E606: :finally without :try" +msgstr "E606: :finally senza :try" + +msgid "E607: multiple :finally" +msgstr "E607: :finally multipli" + msgid "E600: Missing :endtry" msgstr "E600: Manca :endtry" +msgid "E602: :endtry without :try" +msgstr "E602: :endtry senza :try" + msgid "E170: Missing :endwhile" msgstr "E170: Manca :endwhile" @@ -6110,7 +6936,7 @@ msgid "E235: Unknown font: %s" msgstr "E235: Font sconosciuto: %s" msgid "E236: Font \"%s\" is not fixed-width" -msgstr "E236: Font \"%s\" non di larghezza fissa" +msgstr "E236: Carattere \"%s\" non di larghezza fissa" msgid "E473: Internal error" msgstr "E473: Errore interno" @@ -6121,9 +6947,6 @@ msgstr "E685: Errore interno: %s" msgid "Interrupted" msgstr "Interrotto" -msgid "E14: Invalid address" -msgstr "E14: Indirizzo non valido" - msgid "E474: Invalid argument" msgstr "E474: Argomento non valido" @@ -6139,18 +6962,18 @@ msgstr "E475: Valore non valido per l'argomento %s" msgid "E475: Invalid value for argument %s: %s" msgstr "E475: Valore non valido per l'argomento %s: %s" -msgid "E15: Invalid expression: %s" -msgstr "E15: Espressione non valida: %s" +msgid "E15: Invalid expression: \"%s\"" +msgstr "E15: Espressione non valida: \"%s\"" msgid "E16: Invalid range" msgstr "E16: Intervallo non valido" -msgid "E476: Invalid command" -msgstr "E476: Comando non valido" - msgid "E17: \"%s\" is a directory" msgstr "E17: \"%s\" una directory" +msgid "E756: Spell checking is not possible" +msgstr "E756: Controllo ortografico non possibile" + msgid "E364: Library call failed for \"%s()\"" msgstr "E364: Chiamata a libreria fallita per \"%s()\"" @@ -6161,10 +6984,10 @@ msgid "E448: Could not load library function %s" msgstr "E448: Non posso caricare la funzione di libreria %s" msgid "E19: Mark has invalid line number" -msgstr "E19: 'Mark' con numero riga non valido" +msgstr "E19: Marcatura con numero di riga non valido" msgid "E20: Mark not set" -msgstr "E20: 'Mark' non impostato" +msgstr "E20: Marcatura non impostata" msgid "E21: Cannot make changes, 'modifiable' is off" msgstr "E21: Non posso fare modifiche, 'modifiable' inibito" @@ -6203,7 +7026,7 @@ msgid "E30: No previous command line" msgstr "E30: Nessuna riga comandi precedente" msgid "E31: No such mapping" -msgstr "E31: Mapping inesistente" +msgstr "E31: Mappatura inesistente" msgid "E479: No match" msgstr "E479: Nessuna corrispondenza" @@ -6248,7 +7071,7 @@ msgid "E38: Null argument" msgstr "E38: Argomento nullo" msgid "E39: Number expected" -msgstr "E39: Mi aspettavo un numero" +msgstr "E39: Atteso un numero" msgid "E40: Can't open errorfile %s" msgstr "E40: Non riesco ad aprire il file errori %s" @@ -6284,7 +7107,16 @@ msgid "E44: Corrupted regexp program" msgstr "E44: Programma 'regexp' corrotto" msgid "E45: 'readonly' option is set (add ! to override)" -msgstr "E45: file in sola lettura (aggiungi ! per eseguire comunque)" +msgstr "E45: file in sola-lettura (aggiungi ! per eseguire comunque)" + +msgid "E734: Wrong variable type for %s=" +msgstr "E734: Tipo di variabile errato per %s=" + +msgid "E461: Illegal variable name: %s" +msgstr "E461: Nome di variabile non consentito: %s" + +msgid "E995: Cannot modify existing variable" +msgstr "E995: Non posso modificare una variabile esistente" msgid "E46: Cannot change read-only variable \"%s\"" msgstr "E46: Non posso cambiare la variabile read-only \"%s\"" @@ -6293,6 +7125,9 @@ msgid "E794: Cannot set variable in the sandbox: \"%s\"" msgstr "" "E794: Non posso impostare la variabile read-only in ambiente protetto: \"%s\"" +msgid "E928: String required" +msgstr "E928: Stringa necessaria" + msgid "E713: Cannot use empty key for Dictionary" msgstr "E713: Non posso usare una chiave nulla per il Dizionario" @@ -6311,8 +7146,14 @@ msgstr "E978: Operazione non valida per Blob" msgid "E118: Too many arguments for function: %s" msgstr "E118: Troppi argomenti per la funzione: %s" -msgid "E716: Key not present in Dictionary: %s" -msgstr "E716: Chiave assente dal Dizionario: %s" +msgid "E119: Not enough arguments for function: %s" +msgstr "E119: La funzione: %s richiede pi argomenti" + +msgid "E933: Function was deleted: %s" +msgstr "E933: Funzione eliminata: %s" + +msgid "E716: Key not present in Dictionary: \"%s\"" +msgstr "E716: Chiave assente dal Dizionario: \"%s\"" msgid "E714: List required" msgstr "E714: necessaria una Lista" @@ -6320,12 +7161,34 @@ msgstr "E714: msgid "E897: List or Blob required" msgstr "E897: necessaria una Lista o un Blob" +msgid "E697: Missing end of List ']': %s" +msgstr "E697: Manca ']' a fine Lista: %s" + msgid "E712: Argument of %s must be a List or Dictionary" msgstr "E712: L'argomento di %s dev'essere una Lista o un Dizionario" msgid "E896: Argument of %s must be a List, Dictionary or Blob" msgstr "E896: L'argomento di %s dev'essere una Lista, un Dizionario o un Blob" +msgid "E804: Cannot use '%' with Float" +msgstr "E804: Non si pu usare '%' con un Numero-a-virgola-mobile" + +msgid "E996: Cannot lock an option" +msgstr "E996: Non posso bloccare un'opzione" + +msgid "E113: Unknown option: %s" +msgstr "E113: Opzione sconosciuta: %s" + +msgid "E18: Unexpected characters in :let" +msgstr "E18: Caratteri non attesi in :let" + +msgid "E998: Reduce of an empty %s with no initial value" +msgstr "" +"E998: Reduce di un valore vuoto %s, e non stato dato un valore iniziale" + +msgid "E857: Dictionary key \"%s\" required" +msgstr "E857: Chiave di Dizionario \"%s\" richiesta" + msgid "E47: Error while reading errorfile" msgstr "E47: Errore leggendo il file errori" @@ -6335,11 +7198,17 @@ msgstr "E48: Non consentito in ambiente protetto" msgid "E523: Not allowed here" msgstr "E523: Non consentito qui" +msgid "E578: Not allowed to change text here" +msgstr "E578: Non possibile modificare testo qui" + +msgid "E565: Not allowed to change text or change window" +msgstr "E565: Non possibile modificare testo o cambiare finestra" + msgid "E359: Screen mode setting not supported" msgstr "E359: Impostazione modalit schermo non supportata" msgid "E49: Invalid scroll size" -msgstr "E49: Quantit di 'scroll' non valida" +msgstr "E49: Quantit di scorrimento non valida" msgid "E91: 'shell' option is empty" msgstr "E91: opzione 'shell' non impostata" @@ -6368,8 +7237,11 @@ msgstr "E77: Troppi nomi file" msgid "E488: Trailing characters" msgstr "E488: Caratteri in pi a fine comando" +msgid "E488: Trailing characters: %s" +msgstr "E488: Caratteri in pi alla fine: %s" + msgid "E78: Unknown mark" -msgstr "E78: 'Mark' sconosciuto" +msgstr "E78: Marcatura sconosciuta" msgid "E79: Cannot expand wildcards" msgstr "E79: Non posso espandere 'wildcard'" @@ -6389,6 +7261,24 @@ msgstr "E939: Un contatore positivo msgid "E81: Using not in a script context" msgstr "E81: Uso di fuori dal contesto di uno script" +msgid "E107: Missing parentheses: %s" +msgstr "E107: Mancano parentesi: %s" + +msgid "E110: Missing ')'" +msgstr "E110: Manca ')'" + +msgid "E720: Missing colon in Dictionary: %s" +msgstr "E720: Manca ':' nel Dizionario: %s" + +msgid "E721: Duplicate key in Dictionary: \"%s\"" +msgstr "E721: Chiave duplicata nel Dizionario: \"%s\"" + +msgid "E722: Missing comma in Dictionary: %s" +msgstr "E722: Manca virgola nel Dizionario: %s" + +msgid "E723: Missing end of Dictionary '}': %s" +msgstr "E723: Manca '}' a fine Dizionario: %s" + msgid "E449: Invalid expression received" msgstr "E449: Ricevuta un'espressione non valida" @@ -6396,7 +7286,7 @@ msgid "E463: Region is guarded, cannot modify" msgstr "E463: Regione protetta, impossibile modificare" msgid "E744: NetBeans does not allow changes in read-only files" -msgstr "E744: NetBeans non permette modifiche a file di sola lettura" +msgstr "E744: NetBeans non permette modifiche a file in sola-lettura" msgid "E363: pattern uses more memory than 'maxmempattern'" msgstr "E363: l'espressione usa troppa memoria rispetto a 'maxmempattern'" @@ -6419,14 +7309,62 @@ msgstr "E764: opzione '%s' non impostata" msgid "E850: Invalid register name" msgstr "E850: Nome registro non valido" +msgid "E806: using Float as a String" +msgstr "E806: Uso di un Numero-a-virgola-mobile come una Stringa" + msgid "E919: Directory not found in '%s': \"%s\"" msgstr "E919: Directory non trovata in '%s': \"%s\"" msgid "E952: Autocommand caused recursive behavior" msgstr "E952: L'autocomando ha generato un comportamento ricorsivo" +msgid "E813: Cannot close autocmd or popup window" +msgstr "E813: Non riesco a chiudere finestra autocomandi o dinamica" + msgid "E328: Menu only exists in another mode" -msgstr "E328: I Menu esistono solo in un'altra modalit" +msgstr "E328: I Men esistono solo in un'altra modalit" + +msgid "E957: Invalid window number" +msgstr "E957: Numero di finestra non valido" + +msgid "E686: Argument of %s must be a List" +msgstr "E686: L'argomento di %s dev'essere una Lista" + +msgid "E109: Missing ':' after '?'" +msgstr "E109: Manca ':' dopo '?'" + +msgid "E690: Missing \"in\" after :for" +msgstr "E690: Manca \"in\" dopo :for" + +msgid "E117: Unknown function: %s" +msgstr "E117: Funzione sconosciuta: %s" + +msgid "E111: Missing ']'" +msgstr "E111: Manca ']'" + +msgid "E581: :else without :if" +msgstr "E581: :else senza :if" + +msgid "E582: :elseif without :if" +msgstr "E582: :elseif senza :if" + +msgid "E580: :endif without :if" +msgstr "E580: :endif senza :if" + +msgid "E586: :continue without :while or :for" +msgstr "E586: :continue senza :while o :for" + +msgid "E587: :break without :while or :for" +msgstr "E587: :break senza :while o :for" + +msgid "E274: No white space allowed before parenthesis" +msgstr "E274: Nessuno spazio bianco consentito prima delle parentesi" + +msgid "E940: Cannot lock or unlock variable %s" +msgstr "E940: Non riesco a bloccare o sbloccare la variabile %s" + +msgid "E254: Cannot allocate color %s" +msgstr "E254: Non riesco ad allocare il colore %s" msgid "search hit TOP, continuing at BOTTOM" msgstr "raggiunta la CIMA nella ricerca, continuo dal FONDO" @@ -6434,6 +7372,9 @@ msgstr "raggiunta la CIMA nella ricerca, continuo dal FONDO" msgid "search hit BOTTOM, continuing at TOP" msgstr "raggiunto il FONDO nella ricerca, continuo dalla CIMA" +msgid " line " +msgstr " riga " + msgid "Need encryption key for \"%s\"" msgstr "Serve una chiave di cifratura per \"%s\"" @@ -6441,16 +7382,16 @@ msgid "empty keys are not allowed" msgstr "chiavi nulle non consentite" msgid "dictionary is locked" -msgstr "il dizionario bloccato" +msgstr "il Dizionario bloccato" msgid "list is locked" msgstr "la lista bloccata" msgid "failed to add key '%s' to dictionary" -msgstr "non non riusciato ad aggiungere la chiave '%s' al dizionario" +msgstr "non riesco ad aggiungere la chiave '%s' al Dizionario" msgid "index must be int or slice, not %s" -msgstr "l'indice deve'essere un intero o un intervallo, non %s" +msgstr "l'indice dev'essere un intero o un intervallo, non %s" msgid "expected str() or unicode() instance, but got %s" msgstr "attesa istanza di str() o unicode(), trovato invece %s" @@ -6507,7 +7448,7 @@ msgid "cannot delete vim.Dictionary attributes" msgstr "non riesco a cancellare gli attributi vim.Dictionary" msgid "cannot modify fixed dictionary" -msgstr "non posso modificare il dizionario fisso" +msgstr "non posso modificare il Dizionario fisso" msgid "cannot set attribute %s" msgstr "non posso impostare attributo %s" @@ -6525,8 +7466,10 @@ msgstr "il costruttore di lista non accetta parole chiave come argomenti" msgid "list index out of range" msgstr "Indice di Lista fuori intervallo" +#. No more suitable format specifications in python-2.3 msgid "internal error: failed to get Vim list item %d" -msgstr "errore interno: non ho potuto ottenere l'elemento di Vim list %d" +msgstr "" +"errore interno: non sono riuscito a ottenere l'elemento di Lista di Vim %d" msgid "slice step cannot be zero" msgstr "il passo scorrendo un intervallo non pu essere zero" @@ -6536,17 +7479,17 @@ msgstr "" "tentativo di assegnare una sequenza maggiore di %d a un intervallo esteso" msgid "internal error: no Vim list item %d" -msgstr "errore interno: non c' un elemento di vim list %d" +msgstr "errore interno: non c' elemento di Lista di Vim %d" msgid "internal error: not enough list items" -msgstr "errore interno: non ci sono abbastanza elementi per la lista" +msgstr "errore interno: non ci sono abbastanza elementi per la Lista" msgid "internal error: failed to add item to list" -msgstr "errore interno: non ho potuto aggiungere un elemento alla lista" +msgstr "errore interno: non ho potuto aggiungere un elemento alla Lista" msgid "attempt to assign sequence of size %d to extended slice of size %d" msgstr "" -"tentativo di assegnare sequenza di dimensione %d a un intervallo esteso di " +"tentativo di assegnare sequenza di dimensione %d a un intervallo esteso di " "dimensione %d" msgid "failed to add item to list" @@ -6577,22 +7520,22 @@ msgid "problem while switching windows" msgstr "problema nel cambio finestra" msgid "unable to unset global option %s" -msgstr "impossibile deimpostare l'opzione globale %s" +msgstr "impossibile rimuovere l'opzione globale %s" msgid "unable to unset option %s which does not have global value" -msgstr "impossibile deimpostare l'opzione %s che non ha un valore globale" +msgstr "impossibile rimuovere l'opzione %s che non ha un valore globale" msgid "attempt to refer to deleted tab page" -msgstr "tentativo di riferimento a linguetta cancellata" +msgstr "tentativo di riferimento a pagina di linguette cancellata" msgid "no such tab page" -msgstr "linguetta inesistente" +msgstr "pagina di linguette inesistente" msgid "attempt to refer to deleted window" msgstr "tentativo di riferimento a una finestra cancellata" msgid "readonly attribute: buffer" -msgstr "attributo in sola lettura: buffer" +msgstr "attributo in sola-lettura: buffer" msgid "cursor position outside buffer" msgstr "posizione cursore fuori dal buffer" @@ -6607,7 +7550,7 @@ msgid "failed to rename buffer" msgstr "cambio nome buffer non riuscito" msgid "mark name must be a single character" -msgstr "il nome mark dev'essere un carattere singolo" +msgstr "il nome marcatura dev'essere un carattere singolo" msgid "expected vim.Buffer object, but got %s" msgstr "atteso oggetto vim.Buffer, trovato %s" @@ -6620,7 +7563,7 @@ msgstr "atteso oggetto vim.Window, trovato %s" msgid "failed to find window in the current tab page" msgstr "" -"non stato possibile trovare la finestra nella pagina con linguette corrente" +"non stato possibile trovare la finestra nella pagina di linguette corrente" msgid "did not switch to the specified window" msgstr "passaggio alla finestra specificata non effettuato" @@ -6629,7 +7572,7 @@ msgid "expected vim.TabPage object, but got %s" msgstr "atteso oggetto vim.TabPage, trovato %s" msgid "did not switch to the specified tab page" -msgstr "passaggio alla linguetta specificata non effettuato" +msgstr "passaggio alla pagina di linguette specificata non effettuato" msgid "failed to run the code" msgstr "esecuzione del codice non riuscita" @@ -6642,7 +7585,7 @@ msgstr "" "E859: Conversione non riuscita dell'oggetto python risultato a un valore vim" msgid "unable to convert %s to a Vim dictionary" -msgstr "impossibile convertire %s a dizionario vim" +msgstr "impossibile convertire %s a Dizionario vim" msgid "unable to convert %s to a Vim list" msgstr "impossibile convertire %s a Lista vim" @@ -6718,3 +7661,1464 @@ msgstr "" "Sorgenti C (*.c, *.h)\t*.c;*.h\n" "Sorgenti C++ (*.cpp, *.hpp)\t*.cpp;*.hpp\n" "File di Vim (*.vim, _vimrc, _gvimrc)\t*.vim;_vimrc;_gvimrc\n" + +#. Translators: This is the Application Name used in the GVim desktop file +msgid "GVim" +msgstr "GVim" + +#. Translators: This is the Generic Application Name used in the Vim desktop file +msgid "Text Editor" +msgstr "Editor di testi" + +#. Translators: This is the comment used in the Vim desktop file +msgid "Edit text files" +msgstr "Edita file di testo" + +#. Translators: Search terms to find this application. Do NOT change the semicolons! The list MUST also end with a semicolon! +msgid "Text;editor;" +msgstr "Testo;editor;" + +#. Translators: This is the Icon file name. Do NOT translate +msgid "gvim" +msgstr "gvim" + +#. Translators: This is the Application Name used in the Vim desktop file +msgid "Vim" +msgstr "Vim" + +msgid "(local to window)" +msgstr "(locale alla finestra)" + +msgid "(local to buffer)" +msgstr "(locale al buffer)" + +msgid "(global or local to buffer)" +msgstr "(globale o locale al buffer)" + +msgid "" +"\" Each \"set\" line shows the current value of an option (on the left)." +msgstr "" +"\" Ogni riga \"set\" mostra il valore corrente di un'opzione (a sinistra)." + +msgid "\" Hit on a \"set\" line to execute it." +msgstr "\" Batti su una riga \"set\" per eseguirla." + +msgid "\" A boolean option will be toggled." +msgstr "\" Un'opzione booleana sar invertita." + +msgid "" +"\" For other options you can edit the value before hitting " +"." +msgstr "" +"\" Per altre opzioni si pu modificare un comando prima di " +"battere ." + +msgid "\" Hit on a help line to open a help window on this option." +msgstr "" +"\" Batti su una riga di help per aprire una finestra di help " +"relativa all'opzione." + +msgid "\" Hit on an index line to jump there." +msgstr "\" Batti su una riga di indice per saltare l." + +msgid "\" Hit on a \"set\" line to refresh it." +msgstr "\" Batti su una riga di \"set\" per aggiornarla." + +msgid "important" +msgstr "importante" + +msgid "behave very Vi compatible (not advisable)" +msgstr "funziona in modo molto compatibile con Vi (non consigliabile)" + +msgid "list of flags to specify Vi compatibility" +msgstr "lista di flag per specificare il grado di compatibilit con Vi" + +msgid "use Insert mode as the default mode" +msgstr "usa modo Insert come modo di default" + +msgid "paste mode, insert typed text literally" +msgstr "mode Paste, inserisce letteralmente testo battuto" + +msgid "key sequence to toggle paste mode" +msgstr "sequenza di tasti per attivare/disattivare modo Paste" + +msgid "list of directories used for runtime files and plugins" +msgstr "" +"lista di directory dove cercare i file da utilizzare in esecuzione e i plugin" + +msgid "list of directories used for plugin packages" +msgstr "lista di directory dove cercare i pacchetti di plugin" + +msgid "name of the main help file" +msgstr "nome del file di help principale" + +msgid "moving around, searching and patterns" +msgstr "movimenti, ricerche e modelli di ricerca" + +msgid "list of flags specifying which commands wrap to another line" +msgstr "" +"lista di flag che specificano quali comandi possono agire anche su pi di " +"una riga" + +msgid "" +"many jump commands move the cursor to the first non-blank\n" +"character of a line" +msgstr "" +"numerosi comandi di salto muovono il cursore al primo carattere\n" +"visibile su una riga" + +msgid "nroff macro names that separate paragraphs" +msgstr "nomi macro nroff che separano fra loro i paragrafi" + +msgid "nroff macro names that separate sections" +msgstr "macro nroff che separano tra loro le sezioni" + +msgid "list of directory names used for file searching" +msgstr "lista di nomi di directory usati per cercare dei file" + +msgid "list of directory names used for :cd" +msgstr "lista di nomi di directory usate per :cd" + +msgid "change to directory of file in buffer" +msgstr "cambia alla directory del file nel buffer corrente" + +msgid "change to pwd of shell in terminal buffer" +msgstr "cambia alla directory dello shell nel buffer di terminale" + +msgid "search commands wrap around the end of the buffer" +msgstr "" +"i comandi di ricerca ricominciano dall'inizio del file una volta raggiunta " +"la fine del buffer" + +msgid "show match for partly typed search command" +msgstr "mostra corrispondenze per comandi di ricerca solo parzialmente immessi" + +msgid "change the way backslashes are used in search patterns" +msgstr "" +"modifica il modo in cui le barre inverse vengono usate nelle espressioni " +"regolari di ricerca" + +msgid "select the default regexp engine used" +msgstr "scegli l'algoritmo di ricerca di default da usare nelle ricerche" + +msgid "ignore case when using a search pattern" +msgstr "ignora maiuscolo/minuscolo nelle espressioni di ricerca" + +msgid "override 'ignorecase' when pattern has upper case characters" +msgstr "" +"ignora l'opzione 'ignorecase' quando l'espressione di ricerca contiene " +"caratteri maiuscoli" + +msgid "what method to use for changing case of letters" +msgstr "metodo da usare per convertire maiuscolo a minuscolo e viceversa" + +msgid "maximum amount of memory in Kbyte used for pattern matching" +msgstr "massima quantit di memoria in Kbyte da usare nella ricerca" + +msgid "pattern for a macro definition line" +msgstr "modello per la riga di definizione di una macro" + +msgid "pattern for an include-file line" +msgstr "modello per una riga che include un file" + +msgid "expression used to transform an include line to a file name" +msgstr "" +"espressione da usare per trasformare un'istruzione di \"include\" in un nome " +"di file" + +msgid "tags" +msgstr "tag" + +msgid "use binary searching in tags files" +msgstr "usare ricerca binaria nei file di tag" + +msgid "number of significant characters in a tag name or zero" +msgstr "numero di caratteri significativi in un nome di tag, oppure zero" + +msgid "list of file names to search for tags" +msgstr "lista di nomi di file in cui cercare tag" + +msgid "" +"how to handle case when searching in tags files:\n" +"\"followic\" to follow 'ignorecase', \"ignore\" or \"match\"" +msgstr "" +"come gestire maiuscolo/minuscolo nella ricerca nei file di tag:\n" +"\"followic\" per usare il valore di 'ignorecase', \"ignore\" o \"match\"" + +msgid "file names in a tags file are relative to the tags file" +msgstr "" +"i nomi di file in un file di tag sono espressi a partire dalla posizione del " +"file di tag" + +msgid "a :tag command will use the tagstack" +msgstr "un comando :tag user la pila dei tag (tagstack)" + +msgid "when completing tags in Insert mode show more info" +msgstr "" +"quando si completa un tag in modo Insert, mostra ulteriori informazioni" + +msgid "a function to be used to perform tag searches" +msgstr "una funziona da usare per effettuare le ricerche di tag" + +msgid "command for executing cscope" +msgstr "comando per eseguire cscope" + +msgid "use cscope for tag commands" +msgstr "usare cscope per i comandi di tag" + +msgid "0 or 1; the order in which \":cstag\" performs a search" +msgstr "0 o 1; ordine in cui \":cstag\" effettua una ricerca" + +msgid "give messages when adding a cscope database" +msgstr "metti messaggi quando si aggiunge un database cscope" + +msgid "how many components of the path to show" +msgstr "quanti componenti del percorso del nome di un file mostrare" + +msgid "when to open a quickfix window for cscope" +msgstr "Quando aprire una finestra quickfix per cscope" + +msgid "file names in a cscope file are relative to that file" +msgstr "" +"i nomi di file in un file cscope sono espressi a partire dalla posizione del " +"file stesso" + +msgid "displaying text" +msgstr "visualizza del testo" + +msgid "number of lines to scroll for CTRL-U and CTRL-D" +msgstr "numero di righe da scorrere con i comandi CTRL-U e CTRL-D" + +msgid "number of screen lines to show around the cursor" +msgstr "" +"numero di righe dello schermo da mostrare attorno alla riga che contiene il " +"cursore" + +msgid "long lines wrap" +msgstr "righe lunghe vanno a capo" + +msgid "wrap long lines at a character in 'breakat'" +msgstr "" +"spezza righe lunghe quando si incontra uno dei caratteri specificati in " +"'breakat'" + +msgid "preserve indentation in wrapped text" +msgstr "" +"mantieni l'indentatura nel testo che occupa pi di una riga dello schermo" + +msgid "adjust breakindent behaviour" +msgstr "specifica comportamento dell'opzione 'breakindent'" + +msgid "which characters might cause a line break" +msgstr "quali caratteri potrebbero causare un'interruzione di riga" + +msgid "string to put before wrapped screen lines" +msgstr "" +"stringa da visualizzare prima delle righe di continuazione sullo schermo di " +"ogni riga lunga" + +msgid "minimal number of columns to scroll horizontally" +msgstr "numero minimo di colonne da far scorrere in orizzontale" + +msgid "minimal number of columns to keep left and right of the cursor" +msgstr "" +"numero minimo di colonne da mantenere a destra e a sinistra del cursore" + +msgid "" +"include \"lastline\" to show the last line even if it doesn't fit\n" +"include \"uhex\" to show unprintable characters as a hex number" +msgstr "" +"includere \"lastline\" per mostrare ultima riga anche se non completa\n" +"includere \"uhex\" per mostrare caratteri non visibile come numeri " +"esadecimali" + +msgid "characters to use for the status line, folds and filler lines" +msgstr "" +"caratteri da usare per riga di status, piegature e righe di riempimento" + +msgid "number of lines used for the command-line" +msgstr "numero di righe da usare per la riga-di-comando" + +msgid "width of the display" +msgstr "larghezza della videata" + +msgid "number of lines in the display" +msgstr "numero di righe della videata" + +msgid "number of lines to scroll for CTRL-F and CTRL-B" +msgstr "numero di righe da scorrere con i comandi CTRL-F e CTRL-B" + +msgid "don't redraw while executing macros" +msgstr "non aggiornare lo schermo mentre si stanno eseguendo delle macro" + +msgid "timeout for 'hlsearch' and :match highlighting in msec" +msgstr "timeout per evidenziare 'hlsearch' e :match in millisecondi" + +msgid "" +"delay in msec for each char written to the display\n" +"(for debugging)" +msgstr "" +"ritardo in millisecondi per ogni carattere inviato allo schermo\n" +"(per debugging)" + +msgid "show as ^I and end-of-line as $" +msgstr "mostra come ^I e fine-riga come $" + +msgid "list of strings used for list mode" +msgstr "lista di stringhe da usare per il modo List" + +msgid "show the line number for each line" +msgstr "mostra numero di riga per ogni riga" + +msgid "show the relative line number for each line" +msgstr "mostra numero di riga relativo per ogni riga" + +msgid "number of columns to use for the line number" +msgstr "numero di colonne da usare per visualizzare numero di riga" + +msgid "controls whether concealable text is hidden" +msgstr "controlla se il testo nascondibile nascosto" + +msgid "modes in which text in the cursor line can be concealed" +msgstr "modi nei quali la riga del cursore pu essere nascosta" + +msgid "syntax, highlighting and spelling" +msgstr "sintassi, evidenziazione e correzione ortografica" + +msgid "\"dark\" or \"light\"; the background color brightness" +msgstr "\"dark\" o \"light\"; scuro/chiaro, colore di sfondo" + +msgid "type of file; triggers the FileType event when set" +msgstr "tipo di file; fa scattare evento FileType quando impostato" + +msgid "name of syntax highlighting used" +msgstr "nome dell'evidenziazione sintattica usata" + +msgid "maximum column to look for syntax items" +msgstr "massimo numero di colonna per controllare elementi sintattici" + +msgid "which highlighting to use for various occasions" +msgstr "evidenziazione da usare per varie occasioni" + +msgid "highlight all matches for the last used search pattern" +msgstr "evidenzia tutte le occorrenze dell'ultima ricerca effettuata" + +msgid "highlight group to use for the window" +msgstr "gruppo di evidenziazione da usare per la finestra" + +msgid "use GUI colors for the terminal" +msgstr "usa colori della GUI per il terminale" + +msgid "highlight the screen column of the cursor" +msgstr "evidenzia la colonna del cursore sullo schermo" + +msgid "highlight the screen line of the cursor" +msgstr "evidenzia la riga del cursore sullo schermo" + +msgid "specifies which area 'cursorline' highlights" +msgstr "specifica quali aree 'cursorline' evidenzia" + +msgid "columns to highlight" +msgstr "colonne da evidenziare" + +msgid "highlight spelling mistakes" +msgstr "evidenzia errori ortografici" + +msgid "list of accepted languages" +msgstr "lista dei linguaggi accettati" + +msgid "file that \"zg\" adds good words to" +msgstr "file a cui \"zg\" aggiunge le parole \"buone\" indicate" + +msgid "pattern to locate the end of a sentence" +msgstr "espressione per individuare la fine di una frase" + +msgid "flags to change how spell checking works" +msgstr "flag per cambiare come funziona la correzione ortografica" + +msgid "methods used to suggest corrections" +msgstr "metodi usati per suggerire correzioni" + +msgid "amount of memory used by :mkspell before compressing" +msgstr "" +"quantit di memoria usata da :mkspell prima di comprimere il file risultante" + +msgid "multiple windows" +msgstr "finestre multiple" + +msgid "0, 1 or 2; when to use a status line for the last window" +msgstr "0, 1 o 2; quando usare la riga di status per l'ultima finestra" + +msgid "alternate format to be used for a status line" +msgstr "formato alternativo da usare per una riga di status" + +msgid "make all windows the same size when adding/removing windows" +msgstr "" +"rendere tutte le finestre di dimensioni uguali quando si aggiungono o " +"rimuovono finestre" + +msgid "in which direction 'equalalways' works: \"ver\", \"hor\" or \"both\"" +msgstr "direzione in cui 'equalalways' funziona: \"ver\", \"hor\" o \"both\"" + +msgid "minimal number of lines used for the current window" +msgstr "numero minimo di righe usato per la finestra corrente" + +msgid "minimal number of lines used for any window" +msgstr "numero minimo di righe usato per ognuna delle finestre" + +msgid "keep the height of the window" +msgstr "mantieni l'altezza della finestra" + +msgid "keep the width of the window" +msgstr "mantenere la larghezza della finestra" + +msgid "minimal number of columns used for the current window" +msgstr "numero minimo di colonne usate per la finestra corrente" + +msgid "minimal number of columns used for any window" +msgstr "numero minimo di colonne usate per qualsiasi finestra" + +msgid "initial height of the help window" +msgstr "altezza iniziale della finestra di help" + +msgid "use a popup window for preview" +msgstr "usa una finestra dinamica per le anteprime" + +msgid "default height for the preview window" +msgstr "altezza di default per la finestra precedente" + +msgid "identifies the preview window" +msgstr "identifica la finestra di anteprima" + +msgid "don't unload a buffer when no longer shown in a window" +msgstr "non scaricare un buffer quando non appare pi in alcuna finestra" + +msgid "" +"\"useopen\" and/or \"split\"; which window to use when jumping\n" +"to a buffer" +msgstr "" +"\"useopen\" e/o \"split\"; che finestra usare quando si salta a un buffer" + +msgid "a new window is put below the current one" +msgstr "una nuova finestra va sotto quella corrente" + +msgid "a new window is put right of the current one" +msgstr "una nuova finestra va a destra di quella corrente" + +msgid "this window scrolls together with other bound windows" +msgstr "questa finestra scorre insieme alle altre a essa collegate" + +msgid "\"ver\", \"hor\" and/or \"jump\"; list of options for 'scrollbind'" +msgstr "\"ver\", \"hor\" e/o \"jump\"; lista delle opzioni per 'scrollbind'" + +msgid "this window's cursor moves together with other bound windows" +msgstr "" +"il cursore di questa finestra di sposta insieme a quelli delle finestre " +"collegate" + +msgid "size of a terminal window" +msgstr "dimensione di una finestra-terminale" + +msgid "key that precedes Vim commands in a terminal window" +msgstr "tasto che precede comandi Vim in una finestra-terminale" + +msgid "max number of lines to keep for scrollback in a terminal window" +msgstr "" +"numero massimo di linee da ricordare per scorrere indietro in una finestra-" +"terminale" + +msgid "type of pty to use for a terminal window" +msgstr "typo di pty da usare per una finestra-terminale" + +msgid "name of the winpty dynamic library" +msgstr "nome della libreria dinamica winpty" + +msgid "multiple tab pages" +msgstr "pi di una pagina di linguette" + +msgid "0, 1 or 2; when to use a tab pages line" +msgstr "0, 1 o 2; quando usare riga che descrive pagine di linguette" + +msgid "maximum number of tab pages to open for -p and \"tab all\"" +msgstr "massimo numero di pagine di linguette da aprire per -p e \"tab all\"" + +msgid "custom tab pages line" +msgstr "riga personalizzata per le pagine di linguette" + +msgid "custom tab page label for the GUI" +msgstr "etichetta personalizzata per le pagine di linguette nella GUI" + +msgid "custom tab page tooltip for the GUI" +msgstr "suggerimento personalizzato per le pagine di linguette nella GUI" + +msgid "terminal" +msgstr "terminale" + +msgid "name of the used terminal" +msgstr "nome del terminale usato" + +msgid "alias for 'term'" +msgstr "alias per 'term'" + +msgid "check built-in termcaps first" +msgstr "controlla prima le opzioni di terminale predefinite" + +msgid "terminal connection is fast" +msgstr "la connessione del terminale veloce" + +msgid "terminal that requires extra redrawing" +msgstr "terminale che richiede ulteriore ridisegno" + +msgid "recognize keys that start with in Insert mode" +msgstr "riconosci tasti funzione che iniziano con in modo Insert" + +msgid "minimal number of lines to scroll at a time" +msgstr "numero minimo di righe da scorrere per volta" + +msgid "maximum number of lines to use scrolling instead of redrawing" +msgstr "" +"numero massimo di righe in cui usare lo scorrimento invece di ridisegnare lo " +"schermo" + +msgid "specifies what the cursor looks like in different modes" +msgstr "specifica l'aspetto del cursore nei vari modi" + +msgid "show info in the window title" +msgstr "mostra informazioni nel titolo della finestra" + +msgid "percentage of 'columns' used for the window title" +msgstr "percentuale di 'columns' usate per il titolo della finestra" + +msgid "when not empty, string to be used for the window title" +msgstr "se non nulla, stringa da usare come titolo della finestra" + +msgid "string to restore the title to when exiting Vim" +msgstr "stringa di ripristino del titolo quando di esce da Vim" + +msgid "set the text of the icon for this window" +msgstr "imposta testo dell'icona per questa finestra" + +msgid "when not empty, text for the icon of this window" +msgstr "se non nulla, testo per l'icona di questa finestra" + +msgid "restore the screen contents when exiting Vim" +msgstr "ripristina i contenuti dello schermo all'uscita da Vim" + +msgid "using the mouse" +msgstr "usando il mouse" + +msgid "list of flags for using the mouse" +msgstr "lista dei flag per usare il mouse" + +msgid "the window with the mouse pointer becomes the current one" +msgstr "rende corrente la finestra che contiene il puntatore del mouse" + +msgid "the window with the mouse pointer scrolls with the mouse wheel" +msgstr "la finestra col puntatore del mouse scorre con la rotella del mouse" + +msgid "hide the mouse pointer while typing" +msgstr "nasconde il puntatore del mouse mentre si immette testo" + +msgid "" +"\"extend\", \"popup\" or \"popup_setpos\"; what the right\n" +"mouse button is used for" +msgstr "" +"\"extend\", \"popup\" o \"popup_setpos\"; come usare il\n" +"bottone destro del mouse" + +msgid "maximum time in msec to recognize a double-click" +msgstr "tempo massimo in millisecondi per riconoscere un doppio-clic" + +msgid "\"xterm\", \"xterm2\", \"sgr\", etc.; type of mouse" +msgstr "\"xterm\", \"xterm2\", \"sgr\", etc.; tipo di mouse" + +msgid "what the mouse pointer looks like in different modes" +msgstr "come appare il puntatore del mouse nei differenti modi" + +msgid "GUI" +msgstr "GUI" + +msgid "list of font names to be used in the GUI" +msgstr "lista di nomi di carattere da usare nella GUI" + +msgid "pair of fonts to be used, for multibyte editing" +msgstr "" +"coppia di caratteri da usare, per editare file con caratteri multi-byte" + +msgid "list of font names to be used for double-wide characters" +msgstr "lista di nomi di carattere da usare per caratteri a doppia larghezza" + +msgid "use smooth, antialiased fonts" +msgstr "usare font pi leggibili, anti-alias" + +msgid "list of flags that specify how the GUI works" +msgstr "lista di flag che specificano come funziona le GUI" + +msgid "\"icons\", \"text\" and/or \"tooltips\"; how to show the toolbar" +msgstr "" +"\"icons\", \"text\" e/o \"tooltips\"; come mostrare la barra degli strumenti" + +msgid "size of toolbar icons" +msgstr "dimensione icone sulla barra degli strumenti" + +msgid "room (in pixels) left above/below the window" +msgstr "spazio (in pixel) da lasciare sopra/sotto la finestra" + +msgid "options for text rendering" +msgstr "opzioni per la renderizzazione del testo" + +msgid "use a pseudo-tty for I/O to external commands" +msgstr "usare una pseudo-tty per i comandi esterni di I/O" + +msgid "" +"\"last\", \"buffer\" or \"current\": which directory used for the file " +"browser" +msgstr "" +"\"last\", \"buffer\" o \"current\": quale directory usare per esplorare i " +"file" + +msgid "language to be used for the menus" +msgstr "lingua da usare per i men" + +msgid "maximum number of items in one menu" +msgstr "numero massimo di elementi in un men" + +msgid "\"no\", \"yes\" or \"menu\"; how to use the ALT key" +msgstr "\"no\", \"yes\" o \"menu\"; come usare il tasto ALT" + +msgid "number of pixel lines to use between characters" +msgstr "numero di righe di pixel da usare fra un carattere e l'altro" + +msgid "delay in milliseconds before a balloon may pop up" +msgstr "ritardo in millisecondi prima di visualizzare una didascalia" + +msgid "use balloon evaluation in the GUI" +msgstr "valuta le didascalie nella GUI" + +msgid "use balloon evaluation in the terminal" +msgstr "valuta le didascalie nella finestra-terminale" + +msgid "expression to show in balloon eval" +msgstr "espressione da mostrare nella valutazione di una didascalia" + +msgid "printing" +msgstr "in stampa" + +msgid "list of items that control the format of :hardcopy output" +msgstr "lista degli elementi che controllano il formato output di :hardcopy" + +msgid "name of the printer to be used for :hardcopy" +msgstr "nome della stampante da usare per :hardcopy" + +msgid "expression used to print the PostScript file for :hardcopy" +msgstr "espressione usata per stampare file PostScript da :hardcopy" + +msgid "name of the font to be used for :hardcopy" +msgstr "nome del carattere da usare per :hardcopy" + +msgid "format of the header used for :hardcopy" +msgstr "formato dell'intestazione usata per :hardcopy" + +msgid "encoding used to print the PostScript file for :hardcopy" +msgstr "codifica usata per stampare il file PostScript da :hardcopy" + +msgid "the CJK character set to be used for CJK output from :hardcopy" +msgstr "il carattere CJK da usare per output CJK da :hardcopy" + +msgid "list of font names to be used for CJK output from :hardcopy" +msgstr "lista di nomi di carattere da usare per output CJK da :hardcopy" + +msgid "messages and info" +msgstr "messaggi e informazioni" + +msgid "add 's' flag in 'shortmess' (don't show search message)" +msgstr "aggiungi 's' flag in 'shortmess' (non mostrare messaggi di ricerca)" + +msgid "list of flags to make messages shorter" +msgstr "lista di flag su come abbreviare messaggi" + +msgid "show (partial) command keys in the status line" +msgstr "mostra (in parte) tasti di comando nella riga di status" + +msgid "display the current mode in the status line" +msgstr "visualizza modo corrente nella riga di status" + +msgid "show cursor position below each window" +msgstr "mostra la posizione del cursore sotto ogni finestra" + +msgid "alternate format to be used for the ruler" +msgstr "formato alternativo da usare per il righello" + +msgid "threshold for reporting number of changed lines" +msgstr "soglia sopra la quale riferire il numero di righe modificate" + +msgid "the higher the more messages are given" +msgstr "quanto pi alto, tanto pi dettagliati sono i messaggi" + +msgid "file to write messages in" +msgstr "file su cui scrivere i messaggi" + +msgid "pause listings when the screen is full" +msgstr "fare sosta nella visualizzazione elenchi quando lo schermo pieno" + +msgid "start a dialog when a command fails" +msgstr "iniziare un dialogo quando un comando non riuscito" + +msgid "ring the bell for error messages" +msgstr "suonare il campanello con i messaggi di errore" + +msgid "use a visual bell instead of beeping" +msgstr "usare un campanello visivo invece che sonoro" + +msgid "do not ring the bell for these reasons" +msgstr "non suonare il campanelli in questi casi" + +msgid "list of preferred languages for finding help" +msgstr "lista dei linguaggi preferiti per ottenere aiuto" + +msgid "selecting text" +msgstr "selezione di testo" + +msgid "\"old\", \"inclusive\" or \"exclusive\"; how selecting text behaves" +msgstr "\"old\", \"inclusive\" o \"exclusive\"; modi per scegliere testo" + +msgid "" +"\"mouse\", \"key\" and/or \"cmd\"; when to start Select mode\n" +"instead of Visual mode" +msgstr "" +"\"mouse\", \"key\" e/o \"cmd\"; quando iniziare modo Select\n" +"invece che modo Visual" + +msgid "" +"\"unnamed\" to use the * register like unnamed register\n" +"\"autoselect\" to always put selected text on the clipboard" +msgstr "" +"\"unnamed\" per usare registro * come registro senza nome\n" +"\"autoselect\" per mettere sempre il testo selezionato nella clipboard" + +msgid "\"startsel\" and/or \"stopsel\"; what special keys can do" +msgstr "\"startsel\" e/o \"stopsel\"; cosa fare usando tasti speciali" + +msgid "editing text" +msgstr "in edito su testo" + +msgid "maximum number of changes that can be undone" +msgstr "massimo numero di modifiche che possono essere annullate" + +msgid "automatically save and restore undo history" +msgstr "salvare e ripristinare automaticamente storia degli annullamenti" + +msgid "list of directories for undo files" +msgstr "lista di directory per i file di annullamento" + +msgid "maximum number lines to save for undo on a buffer reload" +msgstr "" +"massimo numero di righe da salvare per annullamento se si ricarica il buffer" + +msgid "changes have been made and not written to a file" +msgstr "" +"sono state fatte modifiche che non sono ancora state salvate su un file" + +msgid "buffer is not to be written" +msgstr "buffer da non salvare su disco" + +msgid "changes to the text are possible" +msgstr " possibile modificare il testo" + +msgid "line length above which to break a line" +msgstr "lunghezza di riga sopra la quale spezzare la riga stessa" + +msgid "margin from the right in which to break a line" +msgstr "margine da destra sopra il quale spezzare la riga stessa" + +msgid "specifies what , CTRL-W, etc. can do in Insert mode" +msgstr "specificare cose , CTRL-W, etc. possono fare in modo Insert" + +msgid "definition of what comment lines look like" +msgstr "definizione di come sono individuate le righe di commento" + +msgid "list of flags that tell how automatic formatting works" +msgstr "lista di flag con specifiche riguardo alla formattazione automatica" + +msgid "pattern to recognize a numbered list" +msgstr "espressione che permette di riconoscere una lista numerata" + +msgid "expression used for \"gq\" to format lines" +msgstr "espressione usata da \"gq\" per formattare righe" + +msgid "specifies how Insert mode completion works for CTRL-N and CTRL-P" +msgstr "" +"specificare come funziona il completamente in modo Insert per CTRL-N e CTRL-P" + +msgid "whether to use a popup menu for Insert mode completion" +msgstr "se usare un men dinamico per il completamento in modo Insert" + +msgid "options for the Insert mode completion info popup" +msgstr "" +"opzioni per il pannello dinamico con le informazioni di completamento in " +"modo Insert" + +msgid "maximum height of the popup menu" +msgstr "massima altezza del men dinamico" + +msgid "minimum width of the popup menu" +msgstr "larghezza minima del men dinamico" + +msgid "user defined function for Insert mode completion" +msgstr "funzione definita dall'utente per il completamento in modo Insert" + +msgid "function for filetype-specific Insert mode completion" +msgstr "" +"funzione per il completamento in modo Insert a seconda del tipo di file" + +msgid "list of dictionary files for keyword completion" +msgstr "lista di file dizionario per il completamento di parole chiave" + +msgid "list of thesaurus files for keyword completion" +msgstr "lista di file di sinonimi per il completamento di parole chiave" + +msgid "adjust case of a keyword completion match" +msgstr "" +"tener conto di maiuscolo/minuscolo nelle corrispondenze di completamento" + +msgid "enable entering digraphs with c1 c2" +msgstr "abilitare immissione lettere non in tastiera con c1 c2" + +msgid "the \"~\" command behaves like an operator" +msgstr "il comando \"~\" si comporta come un operatore" + +msgid "function called for the \"g@\" operator" +msgstr "funzione chiamata per l'operatore \"g@\"" + +msgid "when inserting a bracket, briefly jump to its match" +msgstr "" +"se si inserisce parentesi, saltare per un momento alla parentesi " +"corrispondente" + +msgid "tenth of a second to show a match for 'showmatch'" +msgstr "" +"decimi di secondo per evidenziare corrispondenza col comando 'showmatch'" + +msgid "list of pairs that match for the \"%\" command" +msgstr "lista di coppie corrispondenti per il comando \"%\"" + +msgid "use two spaces after '.' when joining a line" +msgstr "usare due spazi dopo un '.' quando si unisce una riga" + +msgid "" +"\"alpha\", \"octal\", \"hex\", \"bin\" and/or \"unsigned\"; number formats\n" +"recognized for CTRL-A and CTRL-X commands" +msgstr "" +"\"alpha\", \"octal\", \"hex\", \"bin\" e/o \"unsigned\"; tipi di numeri\n" +"riconosciuti dai comandi CTRL-A e CTRL-X" + +msgid "tabs and indenting" +msgstr "tabulazioni e indentatura" + +msgid "number of spaces a in the text stands for" +msgstr "numero di spazi in un testo quando si inserisce " + +msgid "number of spaces used for each step of (auto)indent" +msgstr "numero di spazi usati per ogni rientro di (auto)indent" + +msgid "list of number of spaces a tab counts for" +msgstr "lista del numero di spazi a cui ogni tab corrisponde" + +msgid "list of number of spaces a soft tabsstop counts for" +msgstr "lista del numero di spazi a cui ogni softtabstop corrisponde" + +msgid "a in an indent inserts 'shiftwidth' spaces" +msgstr "un in un'indentatura inserisce 'shiftwidth' spazi" + +msgid "if non-zero, number of spaces to insert for a " +msgstr "se diverso da zero, numero di spazi da inserire per un " + +msgid "round to 'shiftwidth' for \"<<\" and \">>\"" +msgstr "arrotondare a 'shiftwidth' per \"<<\" e \">>\"" + +msgid "expand to spaces in Insert mode" +msgstr "cambiare in spazi in modo Insert" + +msgid "automatically set the indent of a new line" +msgstr "impostare automaticamente indentatura di ogni nuova riga" + +msgid "do clever autoindenting" +msgstr "fare auto-indentatura intelligente" + +msgid "enable specific indenting for C code" +msgstr "abilitare indentatura specifica per codice C" + +msgid "options for C-indenting" +msgstr "opzioni per indentatura-C" + +msgid "keys that trigger C-indenting in Insert mode" +msgstr "tasti che iniziano indentatura-C in modo Insert" + +msgid "list of words that cause more C-indent" +msgstr "lista di parole che innescano ulteriore indentatura-C" + +msgid "expression used to obtain the indent of a line" +msgstr "espressione usata per ottenere indentatura di una riga" + +msgid "keys that trigger indenting with 'indentexpr' in Insert mode" +msgstr "tasti che iniziano indentatura con 'indentexpr' in modo Insert" + +msgid "copy whitespace for indenting from previous line" +msgstr "copiare la parte di spazi bianchi di indentatura dalla riga precedente" + +msgid "preserve kind of whitespace when changing indent" +msgstr "conservare tipo di spazi bianchi quando si cambia indentatura" + +msgid "enable lisp mode" +msgstr "abilita Modo Lisp" + +msgid "words that change how lisp indenting works" +msgstr "parole che modificano funzionamento indentatura Lisp" + +msgid "folding" +msgstr "piegatura" + +msgid "unset to display all folds open" +msgstr "rimuovere per vedere aperte tutte le piegature" + +msgid "folds with a level higher than this number will be closed" +msgstr "piegature a livello pi alto di questo numero resteranno chiuse" + +msgid "value for 'foldlevel' when starting to edit a file" +msgstr "valore di 'foldlevel' all'inizio della modifica di un file" + +msgid "width of the column used to indicate folds" +msgstr "larghezza della colonna usare per indicare piegature" + +msgid "expression used to display the text of a closed fold" +msgstr "espressione usata per visualizzare testo di una piegatura chiusa" + +msgid "set to \"all\" to close a fold when the cursor leaves it" +msgstr "" +"impostare a \"all\" per chiudere una piegatura quando il cursore la lascia" + +msgid "specifies for which commands a fold will be opened" +msgstr "specificare per quali comandi una piegatura verr aperta" + +msgid "minimum number of screen lines for a fold to be closed" +msgstr "" +"numero minimo di righe sullo schermo per visualizzare come chiusa una " +"piegatura" + +msgid "template for comments; used to put the marker in" +msgstr "modello per i commenti; usata per metterci delle marcature" + +msgid "" +"folding type: \"manual\", \"indent\", \"expr\", \"marker\",\n" +"\"syntax\" or \"diff\"" +msgstr "" +"tipo di piegatura: \"manual\", \"indent\", \"expr\", \"marker\",\n" +"\"syntax\" o \"diff\"" + +msgid "expression used when 'foldmethod' is \"expr\"" +msgstr "espressione usata quando 'foldmethod' \"expr\"" + +msgid "used to ignore lines when 'foldmethod' is \"indent\"" +msgstr "usare per ignorare righe quando 'foldmethod' \"indent\"" + +msgid "markers used when 'foldmethod' is \"marker\"" +msgstr "marcature usate quando 'foldmethod' \"marker\"" + +msgid "maximum fold depth for when 'foldmethod' is \"indent\" or \"syntax\"" +msgstr "" +"massima profondit piegature quando 'foldmethod' \"indent\" o \"syntax\"" + +msgid "diff mode" +msgstr "modo Diff" + +msgid "use diff mode for the current window" +msgstr "usare modo Diff per la finestra corrente" + +msgid "options for using diff mode" +msgstr "opzioni per usare modo Diff" + +msgid "expression used to obtain a diff file" +msgstr "espressioni usate per ottenere un file diff" + +msgid "expression used to patch a file" +msgstr "espressione usata per applicare patch a un file" + +msgid "mapping" +msgstr "mappatura" + +msgid "maximum depth of mapping" +msgstr "massima profondit delle mappature" + +msgid "recognize mappings in mapped keys" +msgstr "riconoscere le mappature nei tasti mappati" + +msgid "allow timing out halfway into a mapping" +msgstr "consenti timeout durante una mappatura" + +msgid "allow timing out halfway into a key code" +msgstr "consenti timeout durante una mappatura con uso di tasti mappati" + +msgid "time in msec for 'timeout'" +msgstr "tempo in millisecondi prima di andare in 'timeout'" + +msgid "time in msec for 'ttimeout'" +msgstr "tempo in millisecondi prima di andare in 'ttimeout'" + +msgid "reading and writing files" +msgstr "lettura e scrittura file" + +msgid "enable using settings from modelines when reading a file" +msgstr "consenti uso di impostazioni da modeline durante la lettura di un file" + +msgid "allow setting expression options from a modeline" +msgstr "consenti impostazione di opzioni tramite espressioni da modeline" + +msgid "number of lines to check for modelines" +msgstr "numero di righe da controllare alla ricerca di modeline" + +msgid "binary file editing" +msgstr "modifica di file binario" + +msgid "last line in the file has an end-of-line" +msgstr "l'ultima riga del file ha una fine-riga" + +msgid "fixes missing end-of-line at end of text file" +msgstr "rimediare alla mancanza di una fine-riga a fine file" + +msgid "prepend a Byte Order Mark to the file" +msgstr "aggiungi all'inizio del file un Byte Order Mark" + +msgid "end-of-line format: \"dos\", \"unix\" or \"mac\"" +msgstr "formato fine-riga: \"dos\", \"unix\" o \"mac\"" + +msgid "list of file formats to look for when editing a file" +msgstr "lista di formati di file da controllare quando si edita un file" + +msgid "obsolete, use 'fileformat'" +msgstr "obsoleto, usare 'fileformat'" + +msgid "obsolete, use 'fileformats'" +msgstr "obsoleto, usare 'fileformats'" + +msgid "writing files is allowed" +msgstr "la riscrittura dei file consentita" + +msgid "write a backup file before overwriting a file" +msgstr "scrivere un file di backup, prima di riscrivere un file" + +msgid "keep a backup after overwriting a file" +msgstr "tenere un file di backup, dopo aver riscritto un file" + +msgid "patterns that specify for which files a backup is not made" +msgstr "modelli che specificano per quali file non fare un backup" + +msgid "whether to make the backup as a copy or rename the existing file" +msgstr "se fare, come backup, una copia del file, oppure se rinominarlo" + +msgid "list of directories to put backup files in" +msgstr "lista di directory in cui scrivere i file di backup" + +msgid "file name extension for the backup file" +msgstr "estensione nome file da usare per i file di backup" + +msgid "automatically write a file when leaving a modified buffer" +msgstr "scrivere automaticamente un file, all'uscita da un buffer modificato" + +msgid "as 'autowrite', but works with more commands" +msgstr "come 'autowrite', ma funzione con un numero maggiore di comandi" + +msgid "always write without asking for confirmation" +msgstr "scrivi sempre, senza mai chiedere conferma" + +msgid "automatically read a file when it was modified outside of Vim" +msgstr "leggi automaticamente un file quando stato modificato non da Vim" + +msgid "keep oldest version of a file; specifies file name extension" +msgstr "" +"conserva la versione pi vecchia di un file; specifica l'estensione da usare" + +msgid "forcibly sync the file to disk after writing it" +msgstr "forza una scrittura fisica su disco del file, dopo averlo riscritto" + +msgid "use 8.3 file names" +msgstr "usare nomi di file nel formato 8.3" + +msgid "encryption method for file writing: zip, blowfish or blowfish2" +msgstr "metodo di cifratura con cui scrivere file: zip, blowfish o blowfish2" + +msgid "the swap file" +msgstr "il file di swap" + +msgid "list of directories for the swap file" +msgstr "lista di directory dove mettere il file di swap" + +msgid "use a swap file for this buffer" +msgstr "usare un file di swap per questo buffer" + +msgid "\"sync\", \"fsync\" or empty; how to flush a swap file to disk" +msgstr "" +"\"sync\", \"fsync\" o nullo; come forzare la scrittura su disco di un file " +"di swap" + +msgid "number of characters typed to cause a swap file update" +msgstr "numero di caratteri immessi per forzare aggiornamento del file di swap" + +msgid "time in msec after which the swap file will be updated" +msgstr "" +"tempo in millisecondi trascorso il quale il file di swap verr aggiornato" + +msgid "maximum amount of memory in Kbyte used for one buffer" +msgstr "massima quantit di memoria in Kbyte da usare per un buffer" + +msgid "maximum amount of memory in Kbyte used for all buffers" +msgstr "massima quantit di memoria in Kbyte da usare per tutti i buffer" + +msgid "command line editing" +msgstr "edit della riga-di-comando" + +msgid "how many command lines are remembered" +msgstr "quante righe di comando sono ricordate" + +msgid "key that triggers command-line expansion" +msgstr "tasto che innesca l'espansione della riga-di-comando" + +msgid "like 'wildchar' but can also be used in a mapping" +msgstr "come 'wildchar', ma pu anche essere usato in una mappatura" + +msgid "specifies how command line completion works" +msgstr "specifica come funziona il completamento della riga-di-comando" + +msgid "empty or \"tagfile\" to list file name of matching tags" +msgstr "empty o \"tagfile\" per listare nome file dei tag corrispondenti" + +msgid "list of file name extensions that have a lower priority" +msgstr "lista delle estensioni di nomi file con priorit pi bassa" + +msgid "list of file name extensions added when searching for a file" +msgstr "" +"lista delle estensioni aggiunte ai nomi di file quando si effettua la " +"ricerca di un file" + +msgid "list of patterns to ignore files for file name completion" +msgstr "lista di modelli da ignorare nel completamento dei nomi di file" + +msgid "ignore case when using file names" +msgstr "ignorare maiuscolo/minuscolo usando nomi di file" + +msgid "ignore case when completing file names" +msgstr "ignorare maiuscolo/minuscolo nel completamento dei nomi di file" + +msgid "command-line completion shows a list of matches" +msgstr "" +"il completamente della riga-di-comando mostra una lista di corrispondenze" + +msgid "key used to open the command-line window" +msgstr "tasto usato per aprire la finestra delle righe-di-comando" + +msgid "height of the command-line window" +msgstr "altezza della finestra delle righe-di-comando" + +msgid "executing external commands" +msgstr "eseguire comandi esterni" + +msgid "name of the shell program used for external commands" +msgstr "nome della shell da usare per i programmi esterni" + +msgid "when to use the shell or directly execute a command" +msgstr "quando usare la shell, oppure eseguire direttamente un comando" + +msgid "character(s) to enclose a shell command in" +msgstr "caratteri fra cui inserire un comando della shell" + +msgid "like 'shellquote' but include the redirection" +msgstr "come 'shellquote' ma comprende la ridirezione" + +msgid "characters to escape when 'shellxquote' is (" +msgstr "caratteri da proteggere quando 'shellxquote' (" + +msgid "argument for 'shell' to execute a command" +msgstr "argomento da passare alla 'shell' per poter eseguire un comando" + +msgid "used to redirect command output to a file" +msgstr "usato per ridirigere l'output di un comando a un file" + +msgid "use a temp file for shell commands instead of using a pipe" +msgstr "" +"usare un file temporaneo per i comandi della shell, invece che usare una pipe" + +msgid "program used for \"=\" command" +msgstr "programma usato per il comando \"=\"" + +msgid "program used to format lines with \"gq\" command" +msgstr "programma usato per formattare le righe col comando \"gq\"" + +msgid "program used for the \"K\" command" +msgstr "programma usato per il comando \"K\"" + +msgid "warn when using a shell command and a buffer has changes" +msgstr "" +"avvisare quando si sta usando un comando della shell e un buffer ha avuto " +"delle modifiche" + +msgid "running make and jumping to errors (quickfix)" +msgstr "eseguire make e saltare agli errori (quickfix)" + +msgid "name of the file that contains error messages" +msgstr "nome del file che contiene i messaggi di errore" + +msgid "list of formats for error messages" +msgstr "lista di formati dei messaggi di errore" + +msgid "program used for the \":make\" command" +msgstr "programma usato per invocare \":make\"" + +msgid "string used to put the output of \":make\" in the error file" +msgstr "stringa usata per porre l'output di \":make\" nel file degli errori" + +msgid "name of the errorfile for the 'makeprg' command" +msgstr "nome del file degli errori per il comando 'makeprg'" + +msgid "program used for the \":grep\" command" +msgstr "programma usato per il comando \":grep\"" + +msgid "list of formats for output of 'grepprg'" +msgstr "lista di formati per l'output di 'grepprg'" + +msgid "encoding of the \":make\" and \":grep\" output" +msgstr "codifica dell'output dei programmi \":make\" e \":grep\"" + +msgid "function to display text in the quickfix window" +msgstr "funzione che visualizza del testo nella finestra quickfix" + +msgid "system specific" +msgstr "proprio del sistema" + +msgid "use forward slashes in file names; for Unix-like shells" +msgstr "usare barre nei nomi di file; per shell di tipo Unix" + +msgid "specifies slash/backslash used for completion" +msgstr "specificare se va usato barra o barra inversa nel completamento" + +msgid "language specific" +msgstr "proprio del linguaggio" + +msgid "specifies the characters in a file name" +msgstr "specifica i caratteri contenuti in un nome di file" + +msgid "specifies the characters in an identifier" +msgstr "specifica i caratteri contenuti in un identificatore" + +msgid "specifies the characters in a keyword" +msgstr "specifica i caratteri contenuti in una parola" + +msgid "specifies printable characters" +msgstr "specifica i caratteri stampabili" + +msgid "specifies escape characters in a string" +msgstr "specifica i caratteri di protezione in un stringa" + +msgid "display the buffer right-to-left" +msgstr "visualizza il buffer da destra a sinistra" + +msgid "when to edit the command-line right-to-left" +msgstr "quando editare la riga-di-comando da destra a sinistra" + +msgid "insert characters backwards" +msgstr "inserire i caratteri all'indietro" + +msgid "allow CTRL-_ in Insert and Command-line mode to toggle 'revins'" +msgstr "" +"consentire CTRL-_ nei modi Insert e Command-line per innescare/disinnescare " +"'revins'" + +msgid "the ASCII code for the first letter of the Hebrew alphabet" +msgstr "il codice ASCII per la prima lettera dell'alfabeto ebraico" + +msgid "use Hebrew keyboard mapping" +msgstr "usare mappatura tastiera ebraica" + +msgid "use phonetic Hebrew keyboard mapping" +msgstr "usare mappatura tastiera fonetica ebraica" + +msgid "prepare for editing Arabic text" +msgstr "preparare per editare test in arabo" + +msgid "perform shaping of Arabic characters" +msgstr "assumere la forma dei caratteri arabi" + +msgid "terminal will perform bidi handling" +msgstr "il terminale effettua gestione bidirezionalit del testo" + +msgid "name of a keyboard mapping" +msgstr "nome di una mappatura di tastiera" + +msgid "list of characters that are translated in Normal mode" +msgstr "lista dei caratteri che vengono tradotti in modo Normal" + +msgid "apply 'langmap' to mapped characters" +msgstr "applicare 'langmap' ai caratteri mappati" + +msgid "when set never use IM; overrules following IM options" +msgstr "" +"se impostata, non usare mai IM [Input Method]; prevale sulle seguenti " +"opzioni IM" + +msgid "in Insert mode: 1: use :lmap; 2: use IM; 0: neither" +msgstr "in modo Insert: 1: usare :lmap; 2: usare IM; 0: nessuno dei due" + +msgid "input method style, 0: on-the-spot, 1: over-the-spot" +msgstr "" +"stile del metodo di input, 0: on-the-spot [in questo punto], 1: over-the-" +"spot [sopra questo punto]" + +msgid "entering a search pattern: 1: use :lmap; 2: use IM; 0: neither" +msgstr "" +"per immettere espressione di ricerca: 1: usare :lmap; 2: usare IM; 0: " +"nessuno dei due" + +msgid "when set always use IM when starting to edit a command line" +msgstr "se impostato, usare sempre IM iniziando a editare una riga-di-comando" + +msgid "function to obtain IME status" +msgstr "funzione per sapere se l'IME disponibile oppure no" + +msgid "function to enable/disable IME" +msgstr "funzione per abilitare/disabilitare IME" + +msgid "multi-byte characters" +msgstr "caratteri multi-byte" + +msgid "" +"character encoding used in Vim: \"latin1\", \"utf-8\",\n" +"\"euc-jp\", \"big5\", etc." +msgstr "" +"codifica caratteri usata in Vim: \"latin1\", \"utf-8\",\n" +"\"euc-jp\", \"big5\", etc." + +msgid "character encoding for the current file" +msgstr "codifica caratteri per il file corrente" + +msgid "automatically detected character encodings" +msgstr "codifica caratteri determinata automaticamente" + +msgid "character encoding used by the terminal" +msgstr "codifica caratteri usata dal terminale" + +msgid "expression used for character encoding conversion" +msgstr "espressione usata per convertire codifica caratteri" + +msgid "delete combining (composing) characters on their own" +msgstr "cancella caratteri combinati (composti) un byte alla volta" + +msgid "maximum number of combining (composing) characters displayed" +msgstr "numero massimo di caratteri combinati (composti) visualizzati" + +msgid "key that activates the X input method" +msgstr "tasto che attiva il metodo di input X" + +msgid "width of ambiguous width characters" +msgstr "larghezza dei caratteri a larghezza ambigua" + +msgid "emoji characters are full width" +msgstr "i caratteri emoji sono a larghezza piena" + +msgid "various" +msgstr "vari" + +msgid "" +"when to use virtual editing: \"block\", \"insert\", \"all\"\n" +"and/or \"onemore\"" +msgstr "" +"quando usare virtual edit: \"block\", \"insert\", \"all\"\n" +"e/o \"onemore\"" + +msgid "list of autocommand events which are to be ignored" +msgstr "lista di autocomandi per eventi da ignorare" + +msgid "load plugin scripts when starting up" +msgstr "caricare script plugin alla partenza di Vim" + +msgid "enable reading .vimrc/.exrc/.gvimrc in the current directory" +msgstr "consenti lettura di .vimrc/.exrc/.gvimrc dalla directory corrente" + +msgid "safer working with script files in the current directory" +msgstr "" +" pi sicuro lavorare con file di script contenuti nella directory corrente" + +msgid "use the 'g' flag for \":substitute\"" +msgstr "usare il flag 'g' flag con \":substitute\"" + +msgid "'g' and 'c' flags of \":substitute\" toggle" +msgstr "attiva/disattiva flag 'g' e 'c' di \":substitute\"" + +msgid "allow reading/writing devices" +msgstr "consenti lettura/scrittura di dispositivi" + +msgid "maximum depth of function calls" +msgstr "profondit massima delle chiamate a funzione" + +msgid "list of words that specifies what to put in a session file" +msgstr "lista di parole che specifica cosa mettere in un file di sessione" + +msgid "list of words that specifies what to save for :mkview" +msgstr "lista di parole che specifica cosa salvare con :mkview" + +msgid "directory where to store files with :mkview" +msgstr "directory in cui memorizzare file ottenuti con :mkview" + +msgid "list that specifies what to write in the viminfo file" +msgstr "lista che specifica cosa scrivere nel file viminfo" + +msgid "file name used for the viminfo file" +msgstr "nome del file da usare per contenere le informazioni viminfo" + +msgid "what happens with a buffer when it's no longer in a window" +msgstr "che fare quando un buffer non pi visibile in alcuna finestra" + +msgid "empty, \"nofile\", \"nowrite\", \"quickfix\", etc.: type of buffer" +msgstr "vuoto, \"nofile\", \"nowrite\", \"quickfix\", etc.: tipi di buffer" + +msgid "whether the buffer shows up in the buffer list" +msgstr "se il buffer incluso nella lista dei buffer" + +msgid "set to \"msg\" to see all error messages" +msgstr "impostare a \"msg\" per vedere tutti i messaggi di errore" + +msgid "whether to show the signcolumn" +msgstr "se mostrare la colonna che contiene il segno" + +msgid "interval in milliseconds between polls for MzScheme threads" +msgstr "intervallo in millisecondi fra ricerche di task MzScheme" + +msgid "name of the Lua dynamic library" +msgstr "nome della libreria dinamica Lua" + +msgid "name of the Perl dynamic library" +msgstr "nome della libreria dinamica Perl" + +msgid "whether to use Python 2 or 3" +msgstr "se usare Python 2 o 3" + +msgid "name of the Python 2 dynamic library" +msgstr "nome della libreria dinamica Python 2" + +msgid "name of the Python 2 home directory" +msgstr "nome della home directory di Python 2" + +msgid "name of the Python 3 dynamic library" +msgstr "nome della libreria dinamica Python 3" + +msgid "name of the Python 3 home directory" +msgstr "nome della home directory di Python 3" + +msgid "name of the Ruby dynamic library" +msgstr "nome della libreria dinamica Ruby" + +msgid "name of the Tcl dynamic library" +msgstr "nome della libreria dinamica Tcl" + +msgid "name of the MzScheme dynamic library" +msgstr "nome della libreria dinamica MzScheme" + +msgid "name of the MzScheme GC dynamic library" +msgstr "nome della libreria dinamica MzScheme GC" diff --git a/src/po/vim.desktop.in b/src/po/vim.desktop.in index 6359184c28..7c58442738 100644 --- a/src/po/vim.desktop.in +++ b/src/po/vim.desktop.in @@ -40,7 +40,6 @@ Comment[hr]=Uređivanje tekstualne datoteke Comment[hu]=Szövegfájlok szerkesztése Comment[id]=Edit file teks Comment[is]=Vinna með textaskrár -Comment[it]=Modifica file di testo Comment[kn]=ಪಠ್ಯ ಕಡತಗಳನ್ನು ಸಂಪಾದಿಸು Comment[ko]=텍스트 파일을 편집합니다 Comment[lt]=Redaguoti tekstines bylas From 577dc93da9ec78684576bff71328d40f24bd6dd8 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 27 Jun 2021 15:35:40 +0200 Subject: [PATCH 30/35] patch 8.2.3065: Vim9: error when sourcing script twice and reusing function Problem: Vim9: error when sourcing script twice and reusing a function name. Solution: Check if the function is dead. (closes #8463) --- src/testdir/test_vim9_script.vim | 21 +++++++++++++++++++++ src/version.c | 2 ++ src/vim9compile.c | 5 +++-- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim index 84bf907cd7..3ff34a2475 100644 --- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -1519,6 +1519,27 @@ def Test_vim9script_reload_noclear() delete('XExportReload') delfunc g:Values unlet g:loadCount + + lines =<< trim END + vim9script + def Inner() + enddef + END + lines->writefile('XreloadScript.vim') + source XreloadScript.vim + + lines =<< trim END + vim9script + def Outer() + def Inner() + enddef + enddef + defcompile + END + lines->writefile('XreloadScript.vim') + source XreloadScript.vim + + delete('XreloadScript.vim') enddef def Test_vim9script_reload_import() diff --git a/src/version.c b/src/version.c index 12f6648195..d07a320856 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3065, /**/ 3064, /**/ diff --git a/src/vim9compile.c b/src/vim9compile.c index 46f543284a..e746ea9d3d 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -498,8 +498,9 @@ check_defined(char_u *p, size_t len, cctx_T *cctx, int is_arg) || (ufunc = find_func_even_dead(p, FALSE, cctx)) != NULL) { // A local or script-local function can shadow a global function. - if (ufunc == NULL || !func_is_global(ufunc) - || (p[0] == 'g' && p[1] == ':')) + if (ufunc == NULL || ((ufunc->uf_flags & FC_DEAD) == 0 + && (!func_is_global(ufunc) + || (p[0] == 'g' && p[1] == ':')))) { if (is_arg) semsg(_(e_argument_name_shadows_existing_variable_str), p); From 17d868b8b268c9b9670421039d1a772341937add Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 27 Jun 2021 16:29:53 +0200 Subject: [PATCH 31/35] patch 8.2.3066: Vim9: debugging lambda does not work Problem: Vim9: debugging lambda does not work. Solution: Use the compile type of the function when compiling a lambda. (closes #8412) --- src/testdir/test_debugger.vim | 29 ++++++++++++++++++++++++++++- src/version.c | 2 ++ src/vim9compile.c | 2 +- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/testdir/test_debugger.vim b/src/testdir/test_debugger.vim index 4601319f8d..dbf2000462 100644 --- a/src/testdir/test_debugger.vim +++ b/src/testdir/test_debugger.vim @@ -932,7 +932,7 @@ func Test_Backtrace_DefFunction() call delete('Xtest2.vim') endfunc -func Test_debug_DefFunction() +func Test_debug_def_and_legacy_function() CheckCWD let file =<< trim END vim9script @@ -1068,6 +1068,33 @@ func Test_debug_def_function() call delete('Xtest.vim') endfunc +func Test_debug_def_function_with_lambda() + CheckCWD + let lines =<< trim END + vim9script + def g:Func() + var s = 'a' + ['b']->map((_, v) => s) + echo "done" + enddef + breakadd func 2 g:Func + END + call writefile(lines, 'XtestLambda.vim') + + let buf = RunVimInTerminal('-S XtestLambda.vim', {}) + + call RunDbgCmd(buf, + \ ':call g:Func()', + \ ['function Func', 'line 2: [''b'']->map((_, v) => s)']) + call RunDbgCmd(buf, + \ 'next', + \ ['function Func', 'line 3: echo "done"']) + + call RunDbgCmd(buf, 'cont') + call StopVimInTerminal(buf) + call delete('XtestLambda.vim') +endfunc + func Test_debug_backtrace_level() CheckCWD let lines =<< trim END diff --git a/src/version.c b/src/version.c index d07a320856..9bb7c4f981 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3066, /**/ 3065, /**/ diff --git a/src/vim9compile.c b/src/vim9compile.c index e746ea9d3d..c5758cc182 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -3622,7 +3622,7 @@ compile_lambda(char_u **arg, cctx_T *cctx) // compile_return(). if (ufunc->uf_ret_type->tt_type == VAR_VOID) ufunc->uf_ret_type = &t_unknown; - compile_def_function(ufunc, FALSE, COMPILE_TYPE(ufunc), cctx); + compile_def_function(ufunc, FALSE, cctx->ctx_compile_type, cctx); // evalarg.eval_tofree_cmdline may have a copy of the last line and "*arg" // points into it. Point to the original line to avoid a dangling pointer. From 1d1ce613cdc74721499660b1d8911de164e2862d Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 27 Jun 2021 19:02:52 +0200 Subject: [PATCH 32/35] patch 8.2.3067: building fails with Athena Problem: Building fails with Athena. (Elimar Riesebieter) Solution: Adjust #ifdefs and add the 'drop_file' feature. --- src/evalfunc.c | 7 +++++++ src/testdir/test_gui.vim | 4 ++++ src/testing.c | 2 +- src/version.c | 2 ++ 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/evalfunc.c b/src/evalfunc.c index 2539515bc8..d3b2cde657 100644 --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -4576,6 +4576,13 @@ f_has(typval_T *argvars, typval_T *rettv) 1 #else 0 +#endif + }, + {"drop_file", +#ifdef HAVE_DROP_FILE + 1 +#else + 0 #endif }, {"emacs_tags", diff --git a/src/testdir/test_gui.vim b/src/testdir/test_gui.vim index 5c18d5d227..762e332edc 100644 --- a/src/testdir/test_gui.vim +++ b/src/testdir/test_gui.vim @@ -1160,12 +1160,16 @@ endfunc " Test for dropping files into a window in GUI func DropFilesInCmdLine() + CheckFeature drop_file + call feedkeys(":\"", 'L') call test_gui_drop_files(['a.c', 'b.c'], &lines, 1, 0) call feedkeys("\", 'L') endfunc func Test_gui_drop_files() + CheckFeature drop_file + call assert_fails('call test_gui_drop_files(1, 1, 1, 0)', 'E474:') call assert_fails('call test_gui_drop_files(["x"], "", 1, 0)', 'E474:') call assert_fails('call test_gui_drop_files(["x"], 1, "", 0)', 'E474:') diff --git a/src/testing.c b/src/testing.c index b32eb1a374..f01f73a42e 100644 --- a/src/testing.c +++ b/src/testing.c @@ -1260,7 +1260,7 @@ f_test_settime(typval_T *argvars, typval_T *rettv UNUSED) void f_test_gui_drop_files(typval_T *argvars UNUSED, typval_T *rettv UNUSED) { -# ifdef FEAT_GUI +#if defined(HAVE_DROP_FILE) int row; int col; int_u mods; diff --git a/src/version.c b/src/version.c index 9bb7c4f981..c43fd3ff4a 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3067, /**/ 3066, /**/ From d887297ad0164516dd52cdab0308c3626337d124 Mon Sep 17 00:00:00 2001 From: Christian Brabandt Date: Sun, 27 Jun 2021 21:30:14 +0200 Subject: [PATCH 33/35] patch 8.2.3068: Unicode tables are slightly outdated Problem: Unicode tables are slightly outdated. Solution: Update the tables for Unicode release 13. (Christian Brabandt closes #8430) --- runtime/tools/unicode.vim | 26 +++++++++--- src/mbyte.c | 85 +++++++++++++++++++++++++-------------- src/version.c | 2 + 3 files changed, 78 insertions(+), 35 deletions(-) diff --git a/runtime/tools/unicode.vim b/runtime/tools/unicode.vim index 5859f34738..6da013ef89 100644 --- a/runtime/tools/unicode.vim +++ b/runtime/tools/unicode.vim @@ -195,6 +195,13 @@ func! BuildWidthTable(pattern, tableName) let end = -1 let ranges = [] let dataidx = 0 + " Account for indentation differences between ambiguous and doublewidth + " table in mbyte.c + if a:pattern == 'A' + let spc = ' ' + else + let spc = "\t" + endif for p in s:widthprops if p[1][0] =~ a:pattern if p[0] =~ '\.\.' @@ -229,7 +236,7 @@ func! BuildWidthTable(pattern, tableName) else if start >= 0 " produce previous range - call add(ranges, printf("\t{0x%04x, 0x%04x},", start, end)) + call add(ranges, printf("%s{0x%04x, 0x%04x},", spc, start, end)) if a:pattern == 'A' call add(s:ambitable, [start, end]) else @@ -243,7 +250,7 @@ func! BuildWidthTable(pattern, tableName) endif endfor if start >= 0 - call add(ranges, printf("\t{0x%04x, 0x%04x},", start, end)) + call add(ranges, printf("%s{0x%04x, 0x%04x},", spc, start, end)) if a:pattern == 'A' call add(s:ambitable, [start, end]) else @@ -254,11 +261,20 @@ func! BuildWidthTable(pattern, tableName) " New buffer to put the result in. new exe "file " . a:tableName - call setline(1, " static struct interval " . a:tableName . "[] =") - call setline(2, " {") + if a:pattern == 'A' + call setline(1, "static struct interval " . a:tableName . "[] =") + call setline(2, "{") + else + call setline(1, " static struct interval " . a:tableName . "[] =") + call setline(2, " {") + endif call append('$', ranges) call setline('$', getline('$')[:-2]) " remove last comma - call setline(line('$') + 1, " };") + if a:pattern == 'A' + call setline(line('$') + 1, "};") + else + call setline(line('$') + 1, " };") + endif wincmd p endfunc diff --git a/src/mbyte.c b/src/mbyte.c index fb0c4820ba..8ac15d38a9 100644 --- a/src/mbyte.c +++ b/src/mbyte.c @@ -1389,7 +1389,8 @@ utf_char2cells(int c) {0x26ce, 0x26ce}, {0x26d4, 0x26d4}, {0x26ea, 0x26ea}, - {0x26f2, 0x26f5}, + {0x26f2, 0x26f3}, + {0x26f5, 0x26f5}, {0x26fa, 0x26fa}, {0x26fd, 0x26fd}, {0x2705, 0x2705}, @@ -1414,8 +1415,7 @@ utf_char2cells(int c) {0x3099, 0x30ff}, {0x3105, 0x312f}, {0x3131, 0x318e}, - {0x3190, 0x31ba}, - {0x31c0, 0x31e3}, + {0x3190, 0x31e3}, {0x31f0, 0x321e}, {0x3220, 0x3247}, {0x3250, 0x4dbf}, @@ -1431,8 +1431,10 @@ utf_char2cells(int c) {0xff01, 0xff60}, {0xffe0, 0xffe6}, {0x16fe0, 0x16fe3}, + {0x16ff0, 0x16ff1}, {0x17000, 0x187f7}, - {0x18800, 0x18af2}, + {0x18800, 0x18cd5}, + {0x18d00, 0x18d08}, {0x1b000, 0x1b11e}, {0x1b150, 0x1b152}, {0x1b164, 0x1b167}, @@ -1467,20 +1469,22 @@ utf_char2cells(int c) {0x1f680, 0x1f6c5}, {0x1f6cc, 0x1f6cc}, {0x1f6d0, 0x1f6d2}, - {0x1f6d5, 0x1f6d5}, + {0x1f6d5, 0x1f6d7}, {0x1f6eb, 0x1f6ec}, - {0x1f6f4, 0x1f6fa}, + {0x1f6f4, 0x1f6fc}, {0x1f7e0, 0x1f7eb}, - {0x1f90d, 0x1f971}, - {0x1f973, 0x1f976}, - {0x1f97a, 0x1f9a2}, - {0x1f9a5, 0x1f9aa}, - {0x1f9ae, 0x1f9ca}, + {0x1f90c, 0x1f93a}, + {0x1f93c, 0x1f945}, + {0x1f947, 0x1f978}, + {0x1f97a, 0x1f9cb}, {0x1f9cd, 0x1f9ff}, - {0x1fa70, 0x1fa73}, + {0x1fa70, 0x1fa74}, {0x1fa78, 0x1fa7a}, - {0x1fa80, 0x1fa82}, - {0x1fa90, 0x1fa95}, + {0x1fa80, 0x1fa86}, + {0x1fa90, 0x1faa8}, + {0x1fab0, 0x1fab6}, + {0x1fac0, 0x1fac2}, + {0x1fad0, 0x1fad6}, {0x20000, 0x2fffd}, {0x30000, 0x3fffd} }; @@ -2350,7 +2354,7 @@ utf_iscomposing(int c) {0x0b3e, 0x0b44}, {0x0b47, 0x0b48}, {0x0b4b, 0x0b4d}, - {0x0b56, 0x0b57}, + {0x0b55, 0x0b57}, {0x0b62, 0x0b63}, {0x0b82, 0x0b82}, {0x0bbe, 0x0bc2}, @@ -2377,7 +2381,7 @@ utf_iscomposing(int c) {0x0d4a, 0x0d4d}, {0x0d57, 0x0d57}, {0x0d62, 0x0d63}, - {0x0d82, 0x0d83}, + {0x0d81, 0x0d83}, {0x0dca, 0x0dca}, {0x0dcf, 0x0dd4}, {0x0dd6, 0x0dd6}, @@ -2424,7 +2428,7 @@ utf_iscomposing(int c) {0x1a55, 0x1a5e}, {0x1a60, 0x1a7c}, {0x1a7f, 0x1a7f}, - {0x1ab0, 0x1abe}, + {0x1ab0, 0x1ac0}, {0x1b00, 0x1b04}, {0x1b34, 0x1b44}, {0x1b6b, 0x1b73}, @@ -2453,6 +2457,7 @@ utf_iscomposing(int c) {0xa806, 0xa806}, {0xa80b, 0xa80b}, {0xa823, 0xa827}, + {0xa82c, 0xa82c}, {0xa880, 0xa881}, {0xa8b4, 0xa8c5}, {0xa8e0, 0xa8f1}, @@ -2488,6 +2493,7 @@ utf_iscomposing(int c) {0x10a3f, 0x10a3f}, {0x10ae5, 0x10ae6}, {0x10d24, 0x10d27}, + {0x10eab, 0x10eac}, {0x10f46, 0x10f50}, {0x11000, 0x11002}, {0x11038, 0x11046}, @@ -2500,6 +2506,7 @@ utf_iscomposing(int c) {0x11180, 0x11182}, {0x111b3, 0x111c0}, {0x111c9, 0x111cc}, + {0x111ce, 0x111cf}, {0x1122c, 0x11237}, {0x1123e, 0x1123e}, {0x112df, 0x112ea}, @@ -2522,6 +2529,11 @@ utf_iscomposing(int c) {0x116ab, 0x116b7}, {0x1171d, 0x1172b}, {0x1182c, 0x1183a}, + {0x11930, 0x11935}, + {0x11937, 0x11938}, + {0x1193b, 0x1193e}, + {0x11940, 0x11940}, + {0x11942, 0x11943}, {0x119d1, 0x119d7}, {0x119da, 0x119e0}, {0x119e4, 0x119e4}, @@ -2549,6 +2561,8 @@ utf_iscomposing(int c) {0x16f4f, 0x16f4f}, {0x16f51, 0x16f87}, {0x16f8f, 0x16f92}, + {0x16fe4, 0x16fe4}, + {0x16ff0, 0x16ff1}, {0x1bc9d, 0x1bc9e}, {0x1d165, 0x1d169}, {0x1d16d, 0x1d172}, @@ -2650,6 +2664,7 @@ static struct interval emoji_all[] = {0x2699, 0x2699}, {0x269b, 0x269c}, {0x26a0, 0x26a1}, + {0x26a7, 0x26a7}, {0x26aa, 0x26ab}, {0x26b0, 0x26b1}, {0x26bd, 0x26be}, @@ -2695,7 +2710,8 @@ static struct interval emoji_all[] = {0x3299, 0x3299}, {0x1f004, 0x1f004}, {0x1f0cf, 0x1f0cf}, - {0x1f170, 0x1f189}, + {0x1f170, 0x1f171}, + {0x1f17e, 0x1f17f}, {0x1f18e, 0x1f18e}, {0x1f191, 0x1f19a}, {0x1f1e6, 0x1f1ff}, @@ -2735,21 +2751,25 @@ static struct interval emoji_all[] = {0x1f5fa, 0x1f64f}, {0x1f680, 0x1f6c5}, {0x1f6cb, 0x1f6d2}, + {0x1f6d5, 0x1f6d7}, {0x1f6e0, 0x1f6e5}, {0x1f6e9, 0x1f6e9}, {0x1f6eb, 0x1f6ec}, {0x1f6f0, 0x1f6f0}, - {0x1f6f3, 0x1f6f9}, - {0x1f910, 0x1f93a}, - {0x1f93c, 0x1f93e}, - {0x1f940, 0x1f945}, - {0x1f947, 0x1f970}, - {0x1f973, 0x1f976}, - {0x1f97a, 0x1f97a}, - {0x1f97c, 0x1f9a2}, - {0x1f9b0, 0x1f9b9}, - {0x1f9c0, 0x1f9c2}, - {0x1f9d0, 0x1f9ff} + {0x1f6f3, 0x1f6fc}, + {0x1f7e0, 0x1f7eb}, + {0x1f90c, 0x1f93a}, + {0x1f93c, 0x1f945}, + {0x1f947, 0x1f978}, + {0x1f97a, 0x1f9cb}, + {0x1f9cd, 0x1f9ff}, + {0x1fa70, 0x1fa74}, + {0x1fa78, 0x1fa7a}, + {0x1fa80, 0x1fa86}, + {0x1fa90, 0x1faa8}, + {0x1fab0, 0x1fab6}, + {0x1fac0, 0x1fac2}, + {0x1fad0, 0x1fad6} }; /* @@ -3097,6 +3117,8 @@ static convertStruct foldCase[] = {0xa7c4,0xa7c4,-1,-48}, {0xa7c5,0xa7c5,-1,-42307}, {0xa7c6,0xa7c6,-1,-35384}, + {0xa7c7,0xa7c9,2,1}, + {0xa7f5,0xa7f5,-1,1}, {0xab70,0xabbf,1,-38864}, {0xff21,0xff3a,1,32}, {0x10400,0x10427,1,40}, @@ -3321,6 +3343,8 @@ static convertStruct toLower[] = {0xa7c4,0xa7c4,-1,-48}, {0xa7c5,0xa7c5,-1,-42307}, {0xa7c6,0xa7c6,-1,-35384}, + {0xa7c7,0xa7c9,2,1}, + {0xa7f5,0xa7f5,-1,1}, {0xff21,0xff3a,1,32}, {0x10400,0x10427,1,40}, {0x104b0,0x104d3,1,40}, @@ -3509,7 +3533,8 @@ static convertStruct toUpper[] = {0xa794,0xa794,-1,48}, {0xa797,0xa7a9,2,-1}, {0xa7b5,0xa7bf,2,-1}, - {0xa7c3,0xa7c3,-1,-1}, + {0xa7c3,0xa7c8,5,-1}, + {0xa7ca,0xa7f6,44,-1}, {0xab53,0xab53,-1,-928}, {0xab70,0xabbf,1,-38864}, {0xff41,0xff5a,1,-32}, diff --git a/src/version.c b/src/version.c index c43fd3ff4a..0106bf7159 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3068, /**/ 3067, /**/ From 108010aa4720ef023a8ac59004fc0f2bc11125af Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 27 Jun 2021 22:03:33 +0200 Subject: [PATCH 34/35] patch 8.2.3069: error messages are spread out Problem: Error messages are spread out. Solution: Move some error messages to errors.h. Use clearer names. --- src/arglist.c | 4 ++-- src/buffer.c | 4 ++-- src/channel.c | 4 ++-- src/errors.h | 38 +++++++++++++++++++++++++++++++ src/eval.c | 16 ++++++------- src/evalfunc.c | 2 +- src/evalvars.c | 8 +++---- src/evalwindow.c | 6 ++--- src/ex_cmds.c | 12 +++++----- src/ex_docmd.c | 57 ++++++++++++++++++++++++----------------------- src/ex_getln.c | 2 +- src/filepath.c | 4 ++-- src/fold.c | 2 +- src/getchar.c | 2 +- src/globals.h | 20 ----------------- src/indent.c | 2 +- src/list.c | 2 +- src/map.c | 2 +- src/mark.c | 4 ++-- src/normal.c | 6 ++--- src/ops.c | 2 +- src/optionstr.c | 4 ++-- src/popupwin.c | 2 +- src/quickfix.c | 6 ++--- src/spellfile.c | 4 ++-- src/textprop.c | 8 +++---- src/typval.c | 2 +- src/undo.c | 2 +- src/userfunc.c | 2 +- src/version.c | 2 ++ src/vim9compile.c | 4 ++-- src/window.c | 4 ++-- 32 files changed, 130 insertions(+), 109 deletions(-) diff --git a/src/arglist.c b/src/arglist.c index 79628fda62..863b1cc6a9 100644 --- a/src/arglist.c +++ b/src/arglist.c @@ -832,7 +832,7 @@ ex_argdelete(exarg_T *eap) { // Don't give an error for ":%argdel" if the list is empty. if (eap->line1 != 1 || eap->line2 != 0) - emsg(_(e_invrange)); + emsg(_(e_invalid_range)); } else { @@ -920,7 +920,7 @@ do_arg_all( #ifdef FEAT_CMDWIN if (cmdwin_type != 0) { - emsg(_(e_cmdwin)); + emsg(_(e_invalid_in_cmdline_window)); return; } #endif diff --git a/src/buffer.c b/src/buffer.c index d038e3c922..59f51aaf7a 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -2407,7 +2407,7 @@ buflist_getfile( if (buf == NULL) { if ((options & GETF_ALT) && n == 0) - emsg(_(e_noalt)); + emsg(_(e_no_alternate_file)); else semsg(_("E92: Buffer %d not found"), n); return FAIL; @@ -3516,7 +3516,7 @@ getaltfname( if (buflist_name_nr(0, &fname, &dummy) == FAIL) { if (errmsg) - emsg(_(e_noalt)); + emsg(_(e_no_alternate_file)); return NULL; } return fname; diff --git a/src/channel.c b/src/channel.c index 2a93e2578c..5818dc399b 100644 --- a/src/channel.c +++ b/src/channel.c @@ -1232,7 +1232,7 @@ channel_set_options(channel_T *channel, jobopt_T *opt) if (!buf->b_p_ma && !channel->ch_part[PART_OUT].ch_nomodifiable) { - emsg(_(e_modifiable)); + emsg(_(e_cannot_make_changes_modifiable_is_off)); } else { @@ -1278,7 +1278,7 @@ channel_set_options(channel_T *channel, jobopt_T *opt) !opt->jo_modifiable[PART_ERR]; if (!buf->b_p_ma && !channel->ch_part[PART_ERR].ch_nomodifiable) { - emsg(_(e_modifiable)); + emsg(_(e_cannot_make_changes_modifiable_is_off)); } else { diff --git a/src/errors.h b/src/errors.h index 00894ef21c..f2624dfc1d 100644 --- a/src/errors.h +++ b/src/errors.h @@ -10,6 +10,44 @@ * Definition of error messages, sorted on error number. */ +EXTERN char e_backslash_should_be_followed_by[] + INIT(= N_("E10: \\ should be followed by /, ? or &")); +#ifdef FEAT_CMDWIN +EXTERN char e_invalid_in_cmdline_window[] + INIT(= N_("E11: Invalid in command-line window; executes, CTRL-C quits")); +#endif +EXTERN char e_command_not_allowed_from_vimrc_in_current_dir_or_tag_search[] + INIT(= N_("E12: Command not allowed from exrc/vimrc in current dir or tag search")); +EXTERN char e_file_exists[] + INIT(= N_("E13: File exists (add ! to override)")); +#ifdef FEAT_EVAL +EXTERN char e_invalid_expression_str[] + INIT(= N_("E15: Invalid expression: \"%s\"")); +#endif +EXTERN char e_invalid_range[] + INIT(= N_("E16: Invalid range")); +#if defined(UNIX) || defined(FEAT_SYN_HL) || defined(FEAT_SPELL) +EXTERN char e_src_is_directory[] + INIT(= N_("E17: \"%s\" is a directory")); +#endif +#ifdef FEAT_EVAL +EXTERN char e_unexpected_characters_in_let[] + INIT(= N_("E18: Unexpected characters in :let")); +EXTERN char e_unexpected_characters_in_assignment[] + INIT(= N_("E18: Unexpected characters in assignment")); +#endif +EXTERN char e_mark_has_invalid_line_number[] + INIT(= N_("E19: Mark has invalid line number")); +EXTERN char e_mark_not_set[] + INIT(= N_("E20: Mark not set")); +EXTERN char e_cannot_make_changes_modifiable_is_off[] + INIT(= N_("E21: Cannot make changes, 'modifiable' is off")); +EXTERN char e_scripts_nested_too_deep[] + INIT(= N_("E22: Scripts nested too deep")); +EXTERN char e_no_alternate_file[] + INIT(= N_("E23: No alternate file")); +EXTERN char e_no_such_abbreviation[] + INIT(= N_("E24: No such abbreviation")); #ifdef FEAT_EVAL EXTERN char e_undefined_variable_str[] INIT(= N_("E121: Undefined variable: %s")); diff --git a/src/eval.c b/src/eval.c index 7990c23f00..f57001647c 100644 --- a/src/eval.c +++ b/src/eval.c @@ -216,7 +216,7 @@ eval1_emsg(char_u **arg, typval_T *rettv, exarg_T *eap) // Also check called_emsg for when using assert_fails(). if (!aborting() && did_emsg == did_emsg_before && called_emsg == called_emsg_before) - semsg(_(e_invexpr2), start); + semsg(_(e_invalid_expression_str), start); } clear_evalarg(&evalarg, eap); return ret; @@ -297,7 +297,7 @@ eval_expr_typval(typval_T *expr, typval_T *argv, int argc, typval_T *rettv) if (*skipwhite(s) != NUL) // check for trailing chars after expr { clear_tv(rettv); - semsg(_(e_invexpr2), s); + semsg(_(e_invalid_expression_str), s); return FAIL; } } @@ -2268,7 +2268,7 @@ eval0( if (end_error) semsg(_(e_trailing_arg), p); else - semsg(_(e_invexpr2), arg); + semsg(_(e_invalid_expression_str), arg); } // Some of the expression may not have been consumed. Do not check for @@ -2758,7 +2758,7 @@ eval4(char_u **arg, typval_T *rettv, evalarg_T *evalarg) if (vim9script && type_is && (p[len] == '?' || p[len] == '#')) { - semsg(_(e_invexpr2), p); + semsg(_(e_invalid_expression_str), p); clear_tv(rettv); return FAIL; } @@ -3367,7 +3367,7 @@ eval_leader(char_u **arg, int vim9) // ++, --, -+ and +- are not accepted in Vim9 script if (vim9 && (*p == '-' || *p == '+') && (*n == '-' || *n == '+')) { - semsg(_(e_invexpr2), s); + semsg(_(e_invalid_expression_str), s); return FAIL; } p = n; @@ -3441,7 +3441,7 @@ eval7( #endif )) { - semsg(_(e_invexpr2), *arg); + semsg(_(e_invalid_expression_str), *arg); ++*arg; return FAIL; } @@ -5607,7 +5607,7 @@ get_name_len( // Only give an error when there is something, otherwise it will be // reported at a higher level. if (len == 0 && verbose && **arg != NUL) - semsg(_(e_invexpr2), *arg); + semsg(_(e_invalid_expression_str), *arg); return len; } @@ -6153,7 +6153,7 @@ ex_echo(exarg_T *eap) */ if (!aborting() && did_emsg == did_emsg_before && called_emsg == called_emsg_before) - semsg(_(e_invexpr2), arg_start); + semsg(_(e_invalid_expression_str), arg_start); need_clr_eos = FALSE; break; } diff --git a/src/evalfunc.c b/src/evalfunc.c index d3b2cde657..6c467d8ae5 100644 --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -2923,7 +2923,7 @@ f_eval(typval_T *argvars, typval_T *rettv) if (s == NULL || eval1(&s, rettv, &EVALARG_EVALUATE) == FAIL) { if (p != NULL && !aborting()) - semsg(_(e_invexpr2), p); + semsg(_(e_invalid_expression_str), p); need_clr_eos = FALSE; rettv->v_type = VAR_NUMBER; rettv->vval.v_number = 0; diff --git a/src/evalvars.c b/src/evalvars.c index dc66eb6919..1b3d1f6b1f 100644 --- a/src/evalvars.c +++ b/src/evalvars.c @@ -1334,7 +1334,7 @@ ex_let_one( semsg(_(e_letwrong), op); else if (endchars != NULL && vim_strchr(endchars, *skipwhite(arg)) == NULL) - emsg(_(e_letunexp)); + emsg(_(e_unexpected_characters_in_let)); else if (!check_secure()) { c1 = name[len]; @@ -1379,7 +1379,7 @@ ex_let_one( p = find_option_end(&arg, &opt_flags); if (p == NULL || (endchars != NULL && vim_strchr(endchars, *skipwhite(p)) == NULL)) - emsg(_(e_letunexp)); + emsg(_(e_unexpected_characters_in_let)); else { long n = 0; @@ -1481,7 +1481,7 @@ ex_let_one( semsg(_(e_letwrong), op); else if (endchars != NULL && vim_strchr(endchars, *skipwhite(arg + 1)) == NULL) - emsg(_(e_letunexp)); + emsg(_(e_unexpected_characters_in_let)); else { char_u *ptofree = NULL; @@ -1520,7 +1520,7 @@ ex_let_one( { if (endchars != NULL && vim_strchr(endchars, *skipwhite(lv.ll_name_end)) == NULL) - emsg(_(e_letunexp)); + emsg(_(e_unexpected_characters_in_let)); else { set_var_lval(&lv, p, tv, copy, flags, op, var_idx); diff --git a/src/evalwindow.c b/src/evalwindow.c index b1b60d1533..0e1a202da3 100644 --- a/src/evalwindow.c +++ b/src/evalwindow.c @@ -363,7 +363,7 @@ get_winnr(tabpage_T *tp, typval_T *argvar) if (invalid_arg) { - semsg(_(e_invexpr2), arg); + semsg(_(e_invalid_expression_str), arg); nr = 0; } } @@ -636,7 +636,7 @@ f_tabpagenr(typval_T *argvars UNUSED, typval_T *rettv) nr = valid_tabpage(lastused_tabpage) ? tabpage_index(lastused_tabpage) : 0; else - semsg(_(e_invexpr2), arg); + semsg(_(e_invalid_expression_str), arg); } } else @@ -726,7 +726,7 @@ f_win_gotoid(typval_T *argvars, typval_T *rettv) #ifdef FEAT_CMDWIN if (cmdwin_type != 0) { - emsg(_(e_cmdwin)); + emsg(_(e_invalid_in_cmdline_window)); return; } #endif diff --git a/src/ex_cmds.c b/src/ex_cmds.c index d8c5a12c72..7e0bd64ab7 100644 --- a/src/ex_cmds.c +++ b/src/ex_cmds.c @@ -2120,7 +2120,7 @@ check_overwrite( // with UNIX it is possible to open a directory if (mch_isdir(ffname)) { - semsg(_(e_isadir2), ffname); + semsg(_(e_src_is_directory), ffname); return FAIL; } #endif @@ -2137,7 +2137,7 @@ check_overwrite( else #endif { - emsg(_(e_exists)); + emsg(_(e_file_exists)); return FAIL; } } @@ -3586,7 +3586,7 @@ check_secure(void) if (secure) { secure = 2; - emsg(_(e_curdir)); + emsg(_(e_command_not_allowed_from_vimrc_in_current_dir_or_tag_search)); return TRUE; } #ifdef HAVE_SANDBOX @@ -3729,7 +3729,7 @@ ex_substitute(exarg_T *eap) ++cmd; if (vim_strchr((char_u *)"/?&", *cmd) == NULL) { - emsg(_(e_backslash)); + emsg(_(e_backslash_should_be_followed_by)); return; } if (*cmd != '&') @@ -3944,7 +3944,7 @@ ex_substitute(exarg_T *eap) if (!subflags.do_count && !curbuf->b_p_ma) { // Substitution is not allowed in non-'modifiable' buffer - emsg(_(e_modifiable)); + emsg(_(e_cannot_make_changes_modifiable_is_off)); return; } @@ -4903,7 +4903,7 @@ ex_global(exarg_T *eap) ++cmd; if (vim_strchr((char_u *)"/?&", *cmd) == NULL) { - emsg(_(e_backslash)); + emsg(_(e_backslash_should_be_followed_by)); return; } if (*cmd == '&') diff --git a/src/ex_docmd.c b/src/ex_docmd.c index 027d139da4..62d50b2d95 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -1997,7 +1997,7 @@ do_one_cmd( } if (ea.line2 < 0) - errormsg = _(e_invrange); + errormsg = _(e_invalid_range); else { if (ea.line2 == 0) @@ -2124,7 +2124,7 @@ do_one_cmd( if (!curbuf->b_p_ma && (ea.argt & EX_MODIFY)) { // Command not allowed in non-'modifiable' buffer - errormsg = _(e_modifiable); + errormsg = _(e_cannot_make_changes_modifiable_is_off); goto doend; } @@ -2134,7 +2134,7 @@ do_one_cmd( if (cmdwin_type != 0 && !(ea.argt & EX_CMDWIN)) { // Command not allowed in the command line window - errormsg = _(e_cmdwin); + errormsg = _(e_invalid_in_cmdline_window); goto doend; } #endif @@ -2996,7 +2996,7 @@ parse_command_modifiers( { if (tabnr < 0 || tabnr > LAST_TAB_NR) { - *errormsg = _(e_invrange); + *errormsg = _(e_invalid_range); return FAIL; } cmod->cmod_tab = tabnr + 1; @@ -3239,14 +3239,14 @@ parse_cmd_address(exarg_T *eap, char **errormsg, int silent) { // there is no Vim command which uses '%' and // ADDR_WINDOWS or ADDR_TABS - *errormsg = _(e_invrange); + *errormsg = _(e_invalid_range); return FAIL; } break; case ADDR_TABS_RELATIVE: case ADDR_UNSIGNED: case ADDR_QUICKFIX: - *errormsg = _(e_invrange); + *errormsg = _(e_invalid_range); return FAIL; case ADDR_ARGUMENTS: if (ARGCOUNT == 0) @@ -3278,7 +3278,7 @@ parse_cmd_address(exarg_T *eap, char **errormsg, int silent) // '*' - visual area if (eap->addr_type != ADDR_LINES) { - *errormsg = _(e_invrange); + *errormsg = _(e_invalid_range); return FAIL; } @@ -3923,7 +3923,7 @@ addr_error(cmd_addr_T addr_type) if (addr_type == ADDR_NONE) emsg(_(e_norange)); else - emsg(_(e_invrange)); + emsg(_(e_invalid_range)); } /* @@ -4210,7 +4210,7 @@ get_address( i = RE_SEARCH; else { - emsg(_(e_backslash)); + emsg(_(e_backslash_should_be_followed_by)); cmd = NULL; goto error; } @@ -4312,7 +4312,7 @@ get_address( if (addr_type == ADDR_TABS_RELATIVE) { - emsg(_(e_invrange)); + emsg(_(e_invalid_range)); cmd = NULL; goto error; } @@ -4460,7 +4460,7 @@ invalid_range(exarg_T *eap) if ( eap->line1 < 0 || eap->line2 < 0 || eap->line1 > eap->line2) - return _(e_invrange); + return _(e_invalid_range); if (eap->argt & EX_RANGE) { @@ -4472,46 +4472,46 @@ invalid_range(exarg_T *eap) + (eap->cmdidx == CMD_diffget) #endif ) - return _(e_invrange); + return _(e_invalid_range); break; case ADDR_ARGUMENTS: // add 1 if ARGCOUNT is 0 if (eap->line2 > ARGCOUNT + (!ARGCOUNT)) - return _(e_invrange); + return _(e_invalid_range); break; case ADDR_BUFFERS: // Only a boundary check, not whether the buffers actually // exist. if (eap->line1 < 1 || eap->line2 > get_highest_fnum()) - return _(e_invrange); + return _(e_invalid_range); break; case ADDR_LOADED_BUFFERS: buf = firstbuf; while (buf->b_ml.ml_mfp == NULL) { if (buf->b_next == NULL) - return _(e_invrange); + return _(e_invalid_range); buf = buf->b_next; } if (eap->line1 < buf->b_fnum) - return _(e_invrange); + return _(e_invalid_range); buf = lastbuf; while (buf->b_ml.ml_mfp == NULL) { if (buf->b_prev == NULL) - return _(e_invrange); + return _(e_invalid_range); buf = buf->b_prev; } if (eap->line2 > buf->b_fnum) - return _(e_invrange); + return _(e_invalid_range); break; case ADDR_WINDOWS: if (eap->line2 > LAST_WIN_NR) - return _(e_invrange); + return _(e_invalid_range); break; case ADDR_TABS: if (eap->line2 > LAST_TAB_NR) - return _(e_invrange); + return _(e_invalid_range); break; case ADDR_TABS_RELATIVE: case ADDR_OTHER: @@ -4521,14 +4521,14 @@ invalid_range(exarg_T *eap) #ifdef FEAT_QUICKFIX // No error for value that is too big, will use the last entry. if (eap->line2 <= 0) - return _(e_invrange); + return _(e_invalid_range); #endif break; case ADDR_QUICKFIX_VALID: #ifdef FEAT_QUICKFIX if ((eap->line2 != 1 && eap->line2 > qf_get_valid_size(eap)) || eap->line2 < 0) - return _(e_invrange); + return _(e_invalid_range); #endif break; case ADDR_UNSIGNED: @@ -5187,7 +5187,8 @@ ex_autocmd(exarg_T *eap) if (secure) { secure = 2; - eap->errmsg = _(e_curdir); + eap->errmsg = + _(e_command_not_allowed_from_vimrc_in_current_dir_or_tag_search); } else if (eap->cmdidx == CMD_autocmd) do_autocmd(eap->arg, eap->forceit); @@ -5842,7 +5843,7 @@ get_tabpage_arg(exarg_T *eap) { if (unaccept_arg0 && eap->line2 == 0) { - eap->errmsg = _(e_invrange); + eap->errmsg = _(e_invalid_range); tab_number = 0; } else @@ -5852,7 +5853,7 @@ get_tabpage_arg(exarg_T *eap) { --tab_number; if (tab_number < unaccept_arg0) - eap->errmsg = _(e_invrange); + eap->errmsg = _(e_invalid_range); } } } @@ -6564,7 +6565,7 @@ ex_tabnext(exarg_T *eap) tab_number = eap->line2; if (tab_number < 1) { - eap->errmsg = _(e_invrange); + eap->errmsg = _(e_invalid_range); return; } } @@ -7715,7 +7716,7 @@ ex_copymove(exarg_T *eap) */ if (n == MAXLNUM || n < 0 || n > curbuf->b_ml.ml_line_count) { - emsg(_(e_invrange)); + emsg(_(e_invalid_range)); return; } @@ -8163,7 +8164,7 @@ open_exfile( // with Unix it is possible to open a directory if (mch_isdir(fname)) { - semsg(_(e_isadir2), fname); + semsg(_(e_src_is_directory), fname); return NULL; } #endif diff --git a/src/ex_getln.c b/src/ex_getln.c index e7d71a510f..22f1cf6d2f 100644 --- a/src/ex_getln.c +++ b/src/ex_getln.c @@ -2622,7 +2622,7 @@ get_text_locked_msg(void) { #ifdef FEAT_CMDWIN if (cmdwin_type != 0) - return e_cmdwin; + return e_invalid_in_cmdline_window; #endif if (textwinlock != 0) return e_textwinlock; diff --git a/src/filepath.c b/src/filepath.c index 69bc8b5f49..0e29977227 100644 --- a/src/filepath.c +++ b/src/filepath.c @@ -856,7 +856,7 @@ f_delete(typval_T *argvars, typval_T *rettv) // delete a directory recursively rettv->vval.v_number = delete_recursive(name); else - semsg(_(e_invexpr2), flags); + semsg(_(e_invalid_expression_str), flags); } /* @@ -1685,7 +1685,7 @@ read_file_or_blob(typval_T *argvars, typval_T *rettv, int always_blob) if (mch_isdir(fname)) { - semsg(_(e_isadir2), fname); + semsg(_(e_src_is_directory), fname); return; } if (*fname == NUL || (fd = mch_fopen((char *)fname, READBIN)) == NULL) diff --git a/src/fold.c b/src/fold.c index 75b436a67e..f10294d756 100644 --- a/src/fold.c +++ b/src/fold.c @@ -1762,7 +1762,7 @@ foldCreateMarkers(linenr_T start, linenr_T end) { if (!curbuf->b_p_ma) { - emsg(_(e_modifiable)); + emsg(_(e_cannot_make_changes_modifiable_is_off)); return; } parseMarker(curwin); diff --git a/src/getchar.c b/src/getchar.c index 149bf55a0a..39aee22f8d 100644 --- a/src/getchar.c +++ b/src/getchar.c @@ -1447,7 +1447,7 @@ openscript( { if (curscript + 1 == NSCRIPT) { - emsg(_(e_nesting)); + emsg(_(e_scripts_nested_too_deep)); return; } diff --git a/src/globals.h b/src/globals.h index 07acc2602b..dd24cbbae3 100644 --- a/src/globals.h +++ b/src/globals.h @@ -1581,11 +1581,6 @@ EXTERN int netbeansSuppressNoLines INIT(= 0); // skip "No lines in buffer" */ EXTERN char e_abort[] INIT(= N_("E470: Command aborted")); EXTERN char e_argreq[] INIT(= N_("E471: Argument required")); -EXTERN char e_backslash[] INIT(= N_("E10: \\ should be followed by /, ? or &")); -#ifdef FEAT_CMDWIN -EXTERN char e_cmdwin[] INIT(= N_("E11: Invalid in command-line window; executes, CTRL-C quits")); -#endif -EXTERN char e_curdir[] INIT(= N_("E12: Command not allowed from exrc/vimrc in current dir or tag search")); #ifdef FEAT_EVAL EXTERN char e_endif[] INIT(= N_("E171: Missing :endif")); EXTERN char e_catch[] INIT(= N_("E603: :catch without :try")); @@ -1598,7 +1593,6 @@ EXTERN char e_endfor[] INIT(= N_("E170: Missing :endfor")); EXTERN char e_while[] INIT(= N_("E588: :endwhile without :while")); EXTERN char e_for[] INIT(= N_("E588: :endfor without :for")); #endif -EXTERN char e_exists[] INIT(= N_("E13: File exists (add ! to override)")); EXTERN char e_failed[] INIT(= N_("E472: Command failed")); #if defined(FEAT_GUI) && defined(FEAT_XFONTSET) EXTERN char e_fontset[] INIT(= N_("E234: Unknown fontset: %s")); @@ -1618,13 +1612,6 @@ EXTERN char e_invarg2[] INIT(= N_("E475: Invalid argument: %s")); EXTERN char e_duparg2[] INIT(= N_("E983: Duplicate argument: %s")); EXTERN char e_invargval[] INIT(= N_("E475: Invalid value for argument %s")); EXTERN char e_invargNval[] INIT(= N_("E475: Invalid value for argument %s: %s")); -#ifdef FEAT_EVAL -EXTERN char e_invexpr2[] INIT(= N_("E15: Invalid expression: \"%s\"")); -#endif -EXTERN char e_invrange[] INIT(= N_("E16: Invalid range")); -#if defined(UNIX) || defined(FEAT_SYN_HL) || defined(FEAT_SPELL) -EXTERN char e_isadir2[] INIT(= N_("E17: \"%s\" is a directory")); -#endif #ifdef FEAT_SPELL EXTERN char e_no_spell[] INIT(= N_("E756: Spell checking is not possible")); #endif @@ -1646,12 +1633,6 @@ EXTERN char e_fsync[] INIT(= N_("E667: Fsync failed")); EXTERN char e_loadlib[] INIT(= N_("E370: Could not load library %s")); EXTERN char e_loadfunc[] INIT(= N_("E448: Could not load library function %s")); #endif -EXTERN char e_markinval[] INIT(= N_("E19: Mark has invalid line number")); -EXTERN char e_marknotset[] INIT(= N_("E20: Mark not set")); -EXTERN char e_modifiable[] INIT(= N_("E21: Cannot make changes, 'modifiable' is off")); -EXTERN char e_nesting[] INIT(= N_("E22: Scripts nested too deep")); -EXTERN char e_noalt[] INIT(= N_("E23: No alternate file")); -EXTERN char e_noabbr[] INIT(= N_("E24: No such abbreviation")); EXTERN char e_nobang[] INIT(= N_("E477: No ! allowed")); #if !defined(FEAT_GUI) || defined(VIMDLL) EXTERN char e_nogvim[] INIT(= N_("E25: GUI cannot be used: Not enabled at compile time")); @@ -1733,7 +1714,6 @@ EXTERN char e_listdictblobarg[] INIT(= N_("E896: Argument of %s must be a List, EXTERN char e_modulus[] INIT(= N_("E804: Cannot use '%' with Float")); EXTERN char e_const_option[] INIT(= N_("E996: Cannot lock an option")); EXTERN char e_unknown_option[] INIT(= N_("E113: Unknown option: %s")); -EXTERN char e_letunexp[] INIT(= N_("E18: Unexpected characters in :let")); EXTERN char e_reduceempty[] INIT(= N_("E998: Reduce of an empty %s with no initial value")); EXTERN char e_no_dict_key[] INIT(= N_("E857: Dictionary key \"%s\" required")); #endif diff --git a/src/indent.c b/src/indent.c index e1c6f522a9..a26344b7d6 100644 --- a/src/indent.c +++ b/src/indent.c @@ -991,7 +991,7 @@ op_reindent(oparg_T *oap, int (*how)(void)) // Don't even try when 'modifiable' is off. if (!curbuf->b_p_ma) { - emsg(_(e_modifiable)); + emsg(_(e_cannot_make_changes_modifiable_is_off)); return; } diff --git a/src/list.c b/src/list.c index b67dcefb1b..6041bd2c39 100644 --- a/src/list.c +++ b/src/list.c @@ -1556,7 +1556,7 @@ list_remove(typval_T *argvars, typval_T *rettv, char_u *arg_errmsg) break; } if (li == NULL) // didn't find "item2" after "item" - emsg(_(e_invrange)); + emsg(_(e_invalid_range)); else { vimlist_remove(l, item, item2); diff --git a/src/map.c b/src/map.c index 9923522b14..1f935ba0ef 100644 --- a/src/map.c +++ b/src/map.c @@ -2717,7 +2717,7 @@ do_exmap(exarg_T *eap, int isabbrev) { case 1: emsg(_(e_invarg)); break; - case 2: emsg((isabbrev ? _(e_noabbr) : _(e_nomap))); + case 2: emsg((isabbrev ? _(e_no_such_abbreviation) : _(e_nomap))); break; } } diff --git a/src/mark.c b/src/mark.c index 6107c9ac4e..b5f2a7e80a 100644 --- a/src/mark.c +++ b/src/mark.c @@ -588,12 +588,12 @@ check_mark(pos_T *pos) // lnum is negative if mark is in another file can can't get that // file, error message already give then. if (pos->lnum == 0) - emsg(_(e_marknotset)); + emsg(_(e_mark_not_set)); return FAIL; } if (pos->lnum > curbuf->b_ml.ml_line_count) { - emsg(_(e_markinval)); + emsg(_(e_mark_has_invalid_line_number)); return FAIL; } return OK; diff --git a/src/normal.c b/src/normal.c index b2d0c011ea..18f14ec4e1 100644 --- a/src/normal.c +++ b/src/normal.c @@ -5210,7 +5210,7 @@ nv_Replace(cmdarg_T *cap) else if (!checkclearopq(cap->oap)) { if (!curbuf->b_p_ma) - emsg(_(e_modifiable)); + emsg(_(e_cannot_make_changes_modifiable_is_off)); else { if (virtual_active()) @@ -5235,7 +5235,7 @@ nv_vreplace(cmdarg_T *cap) else if (!checkclearopq(cap->oap)) { if (!curbuf->b_p_ma) - emsg(_(e_modifiable)); + emsg(_(e_cannot_make_changes_modifiable_is_off)); else { if (cap->extra_char == Ctrl_V) // get another character @@ -7075,7 +7075,7 @@ nv_edit(cmdarg_T *cap) else if (!curbuf->b_p_ma && !p_im) { // Only give this error when 'insertmode' is off. - emsg(_(e_modifiable)); + emsg(_(e_cannot_make_changes_modifiable_is_off)); clearop(cap->oap); if (cap->cmdchar == K_PS) // drop the pasted text diff --git a/src/ops.c b/src/ops.c index 73faa1649e..8f2ca8e369 100644 --- a/src/ops.c +++ b/src/ops.c @@ -621,7 +621,7 @@ op_delete(oparg_T *oap) if (!curbuf->b_p_ma) { - emsg(_(e_modifiable)); + emsg(_(e_cannot_make_changes_modifiable_is_off)); return FAIL; } diff --git a/src/optionstr.c b/src/optionstr.c index 47aee35be3..4c1cacc5cf 100644 --- a/src/optionstr.c +++ b/src/optionstr.c @@ -971,7 +971,7 @@ ambw_end: if (gvarp == &p_fenc) { if (!curbuf->b_p_ma && opt_flags != OPT_GLOBAL) - errmsg = e_modifiable; + errmsg = e_cannot_make_changes_modifiable_is_off; else if (vim_strchr(*varp, ',') != NULL) // No comma allowed in 'fileencoding'; catches confusing it // with 'fileencodings'. @@ -1130,7 +1130,7 @@ ambw_end: else if (gvarp == &p_ff) { if (!curbuf->b_p_ma && !(opt_flags & OPT_GLOBAL)) - errmsg = e_modifiable; + errmsg = e_cannot_make_changes_modifiable_is_off; else if (check_opt_strings(*varp, p_ff_values, FALSE) != OK) errmsg = e_invarg; else diff --git a/src/popupwin.c b/src/popupwin.c index cd343f819d..8751bb4059 100644 --- a/src/popupwin.c +++ b/src/popupwin.c @@ -61,7 +61,7 @@ popup_options_one(dict_T *dict, char_u *key) n = strtol((char *)s, (char **)&endp, 10); if (endp != NULL && *skipwhite(endp) != NUL) { - semsg(_(e_invexpr2), val); + semsg(_(e_invalid_expression_str), val); return 0; } } diff --git a/src/quickfix.c b/src/quickfix.c index 36574b80f7..4ac4a01a10 100644 --- a/src/quickfix.c +++ b/src/quickfix.c @@ -3830,7 +3830,7 @@ qf_history(exarg_T *eap) qf_update_buffer(qi, NULL); } else - emsg(_(e_invrange)); + emsg(_(e_invalid_range)); return; } @@ -5655,7 +5655,7 @@ ex_cbelow(exarg_T *eap) if (eap->addr_count > 0 && eap->line2 <= 0) { - emsg(_(e_invrange)); + emsg(_(e_invalid_range)); return; } @@ -7817,7 +7817,7 @@ cbuffer_process_args( if (eap->line1 < 1 || eap->line1 > buf->b_ml.ml_line_count || eap->line2 < 1 || eap->line2 > buf->b_ml.ml_line_count) { - emsg(_(e_invrange)); + emsg(_(e_invalid_range)); return FAIL; } diff --git a/src/spellfile.c b/src/spellfile.c index 264264c621..058558eb32 100644 --- a/src/spellfile.c +++ b/src/spellfile.c @@ -5972,12 +5972,12 @@ mkspell( // time. if (!over_write && mch_stat((char *)wfname, &st) >= 0) { - emsg(_(e_exists)); + emsg(_(e_file_exists)); goto theend; } if (mch_isdir(wfname)) { - semsg(_(e_isadir2), wfname); + semsg(_(e_src_is_directory), wfname); goto theend; } diff --git a/src/textprop.c b/src/textprop.c index bd9a77cada..9255003c67 100644 --- a/src/textprop.c +++ b/src/textprop.c @@ -549,7 +549,7 @@ f_prop_clear(typval_T *argvars, typval_T *rettv UNUSED) } if (start < 1 || end < 1) { - emsg(_(e_invrange)); + emsg(_(e_invalid_range)); return; } @@ -646,7 +646,7 @@ f_prop_find(typval_T *argvars, typval_T *rettv) if (lnum < 1 || lnum > buf->b_ml.ml_line_count) { - emsg(_(e_invrange)); + emsg(_(e_invalid_range)); return; } @@ -779,7 +779,7 @@ f_prop_list(typval_T *argvars, typval_T *rettv) } if (lnum < 1 || lnum > buf->b_ml.ml_line_count) { - emsg(_(e_invrange)); + emsg(_(e_invalid_range)); return; } @@ -839,7 +839,7 @@ f_prop_remove(typval_T *argvars, typval_T *rettv) end = tv_get_number(&argvars[2]); if (start < 1 || end < 1) { - emsg(_(e_invrange)); + emsg(_(e_invalid_range)); return; } } diff --git a/src/typval.c b/src/typval.c index 21ecd87d04..22e935816d 100644 --- a/src/typval.c +++ b/src/typval.c @@ -1328,7 +1328,7 @@ eval_number( : STR2NR_ALL, &n, NULL, 0, TRUE); if (len == 0) { - semsg(_(e_invexpr2), *arg); + semsg(_(e_invalid_expression_str), *arg); return FAIL; } *arg += len; diff --git a/src/undo.c b/src/undo.c index 4b1158a69e..c16bcacded 100644 --- a/src/undo.c +++ b/src/undo.c @@ -316,7 +316,7 @@ undo_allowed(void) // Don't allow changes when 'modifiable' is off. if (!curbuf->b_p_ma) { - emsg(_(e_modifiable)); + emsg(_(e_cannot_make_changes_modifiable_is_off)); return FALSE; } diff --git a/src/userfunc.c b/src/userfunc.c index 4756bf9d3a..06fca0cf01 100644 --- a/src/userfunc.c +++ b/src/userfunc.c @@ -4864,7 +4864,7 @@ ex_call(exarg_T *eap) { // If the function deleted lines or switched to another buffer // the line number may become invalid. - emsg(_(e_invrange)); + emsg(_(e_invalid_range)); break; } curwin->w_cursor.lnum = lnum; diff --git a/src/version.c b/src/version.c index 0106bf7159..b81ad3b96f 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3069, /**/ 3068, /**/ diff --git a/src/vim9compile.c b/src/vim9compile.c index c5758cc182..e3e1721f13 100644 --- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -4991,7 +4991,7 @@ compile_expr4(char_u **arg, cctx_T *cctx, ppconst_T *ppconst) } if (type_is && (p[len] == '?' || p[len] == '#')) { - semsg(_(e_invexpr2), *arg); + semsg(_(e_invalid_expression_str), *arg); return FAIL; } // extra question mark appended: ignore case @@ -5821,7 +5821,7 @@ get_var_dest( if (p == NULL) { // cannot happen? - emsg(_(e_letunexp)); + emsg(_(e_unexpected_characters_in_assignment)); return FAIL; } cc = *p; diff --git a/src/window.c b/src/window.c index 3a68762a59..09067b081d 100644 --- a/src/window.c +++ b/src/window.c @@ -130,7 +130,7 @@ do_window( do { \ if (cmdwin_type != 0) \ { \ - emsg(_(e_cmdwin)); \ + emsg(_(e_invalid_in_cmdline_window)); \ return; \ } \ } while (0) @@ -187,7 +187,7 @@ do_window( ? curwin->w_alt_fnum : Prenum) == NULL) { if (Prenum == 0) - emsg(_(e_noalt)); + emsg(_(e_no_alternate_file)); else semsg(_("E92: Buffer %ld not found"), Prenum); break; From ffec6dd16a766180429addaa78928c773a3c9832 Mon Sep 17 00:00:00 2001 From: Yegappan Lakshmanan Date: Sun, 27 Jun 2021 22:09:59 +0200 Subject: [PATCH 35/35] patch 8.2.3070: not enough testing for shell use Problem: Not enough testing for shell use. Solution: Add a bit more testing. (Yegappan Lakshmanan, closes #8469) --- src/testdir/test_shell.vim | 45 ++++++++++++++++++++++++++++++++---- src/testdir/test_startup.vim | 21 ----------------- src/version.c | 2 ++ 3 files changed, 43 insertions(+), 25 deletions(-) diff --git a/src/testdir/test_shell.vim b/src/testdir/test_shell.vim index abfa1596e9..f992b8ede6 100644 --- a/src/testdir/test_shell.vim +++ b/src/testdir/test_shell.vim @@ -5,9 +5,8 @@ source check.vim source shared.vim func Test_shell_options() - " For each shell, the following options are checked: - " 'shellcmdflag', 'shellpipe', 'shellquote', 'shellredir', 'shellxescape', - " 'shellxquote' + " The expected value of 'shellcmdflag', 'shellpipe', 'shellquote', + " 'shellredir', 'shellxescape', 'shellxquote' for the supported shells. let shells = [] if has('unix') let shells += [['sh', '-c', '2>&1| tee', '', '>%s 2>&1', '', ''], @@ -39,6 +38,8 @@ func Test_shell_options() \ ['tcsh.exe', '-c', '>&', '', '>&', '"&|<>()@^', '"']] endif + " start a new Vim instance with 'shell' set to each of the supported shells + " and check the default shell option settings let after =<< trim END let l = [&shell, &shellcmdflag, &shellpipe, &shellquote] let l += [&shellredir, &shellxescape, &shellxquote] @@ -51,6 +52,7 @@ func Test_shell_options() endif endfor + " Test shellescape() for each of the shells. for e in shells exe 'set shell=' .. e[0] if e[0] =~# '.*csh$' || e[0] =~# '.*csh.exe$' @@ -62,8 +64,20 @@ func Test_shell_options() endif call assert_equal(str1, shellescape("cmd \"arg1\" 'arg2' !%#"), e[0]) call assert_equal(str2, shellescape("cmd \"arg1\" 'arg2' !%#", 1), e[0]) + + " Try running an external command with the shell. + if executable(e[0]) + " set the shell options for the current 'shell' + let [&shellcmdflag, &shellpipe, &shellquote, &shellredir, + \ &shellxescape, &shellxquote] = e[1:6] + new + r !echo hello + call assert_equal('hello', substitute(getline(2), '\W', '', 'g'), e[0]) + bwipe! + endif endfor - set shell& + set shell& shellcmdflag& shellpipe& shellquote& + set shellredir& shellxescape& shellxquote& call delete('Xtestout') endfunc @@ -95,6 +109,7 @@ func Test_shellquote() call assert_match(': "#echo Hello#"', v) endfunc +" Test for the 'shellescape' option func Test_shellescape() let save_shell = &shell set shell=bash @@ -156,4 +171,26 @@ func Test_shellxquote() call delete('Xlog') endfunc +" Test for using the shell set in the $SHELL environment variable +func Test_set_shell() + let after =<< trim [CODE] + call writefile([&shell], "Xtestout") + quit! + [CODE] + + if has('win32') + let $SHELL = 'C:\with space\cmd.exe' + let expected = '"C:\with space\cmd.exe"' + else + let $SHELL = '/bin/with space/sh' + let expected = '/bin/with\ space/sh' + endif + + if RunVimPiped([], after, '', '') + let lines = readfile('Xtestout') + call assert_equal(expected, lines[0]) + endif + call delete('Xtestout') +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/testdir/test_startup.vim b/src/testdir/test_startup.vim index a6e52ce573..9872f0b4f5 100644 --- a/src/testdir/test_startup.vim +++ b/src/testdir/test_startup.vim @@ -733,27 +733,6 @@ func Test_read_stdin() call delete('Xtestout') endfunc -func Test_set_shell() - let after =<< trim [CODE] - call writefile([&shell], "Xtestout") - quit! - [CODE] - - if has('win32') - let $SHELL = 'C:\with space\cmd.exe' - let expected = '"C:\with space\cmd.exe"' - else - let $SHELL = '/bin/with space/sh' - let expected = '/bin/with\ space/sh' - endif - - if RunVimPiped([], after, '', '') - let lines = readfile('Xtestout') - call assert_equal(expected, lines[0]) - endif - call delete('Xtestout') -endfunc - func Test_progpath() " Tests normally run with "./vim" or "../vim", these must have been expanded " to a full path. diff --git a/src/version.c b/src/version.c index b81ad3b96f..9ec6877d84 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 3070, /**/ 3069, /**/