From 8b199cb2fe5f9c2380937bfd5ea0654bdaef2918 Mon Sep 17 00:00:00 2001 From: Billy Vong Date: Sun, 29 Oct 2017 11:06:47 -0700 Subject: [PATCH 01/76] health: add node health check --- runtime/autoload/health/provider.vim | 62 ++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/runtime/autoload/health/provider.vim b/runtime/autoload/health/provider.vim index 0eaa678459..806a9d043b 100644 --- a/runtime/autoload/health/provider.vim +++ b/runtime/autoload/health/provider.vim @@ -487,9 +487,71 @@ function! s:check_ruby() abort endif endfunction +function! s:check_node() abort + call health#report_start('Node provider (optional)') + + let loaded_var = 'g:loaded_node_provider' + if exists(loaded_var) && !exists('*provider#node#Call') + call health#report_info('Disabled. '.loaded_var.'='.eval(loaded_var)) + return + endif + + if !executable('node') || !executable('npm') || !executable('yarn') + call health#report_warn( + \ '`node` and `npm` must be in $PATH.', + \ ['Install Node.js and verify that `node` and `npm` commands work.']) + return + endif + call health#report_info('Node: '. s:system('node -v')) + + let host = provider#node#Detect() + if empty(host) + call health#report_warn('Missing "neovim" npm package.', + \ ['Run in shell: npm install -g neovim', + \ 'Is the npm bin directory in $PATH?']) + return + endif + call health#report_info('Host: '. host) + + let latest_npm_cmd = has('win32') ? 'cmd /c npm info neovim --json' : 'npm info neovim --json' + let latest_npm = s:system(split(latest_npm_cmd)) + if s:shell_error || empty(latest_npm) + call health#report_error('Failed to run: '. latest_npm_cmd, + \ ["Make sure you're connected to the internet.", + \ 'Are you behind a firewall or proxy?']) + return + endif + if !empty(latest_npm) + try + let pkg_data = json_decode(latest_npm) + catch /E474/ + return 'error: '.latest_npm + endtry + let latest_npm = get(get(pkg_data, 'dist-tags', {}), 'latest', 'unable to parse') + endif + + let current_npm_cmd = host .' --version' + let current_npm = s:system(current_npm_cmd) + if s:shell_error + call health#report_error('Failed to run: '. current_npm_cmd, + \ ['Report this issue with the output of: ', current_npm_cmd]) + return + endif + + if s:version_cmp(current_npm, latest_npm) == -1 + call health#report_warn( + \ printf('Package "neovim" is out-of-date. Installed: %s, latest: %s', + \ current_npm, latest_npm), + \ ['Run in shell: npm update neovim']) + else + call health#report_ok('Latest "neovim" npm is installed: '. current_npm) + endif +endfunction + function! health#provider#check() abort call s:check_clipboard() call s:check_python(2) call s:check_python(3) call s:check_ruby() + call s:check_node() endfunction From 7890157931a3fdfddb647a06e27346071c55564c Mon Sep 17 00:00:00 2001 From: Billy Vong Date: Sun, 29 Oct 2017 11:10:33 -0700 Subject: [PATCH 02/76] remote: add node.js as a remote plugin provider --- runtime/autoload/provider/node.vim | 82 ++++++++++++++++++++++++++++++ runtime/autoload/remote/host.vim | 4 ++ 2 files changed, 86 insertions(+) create mode 100644 runtime/autoload/provider/node.vim diff --git a/runtime/autoload/provider/node.vim b/runtime/autoload/provider/node.vim new file mode 100644 index 0000000000..8a2a105bb4 --- /dev/null +++ b/runtime/autoload/provider/node.vim @@ -0,0 +1,82 @@ +if exists('g:loaded_node_provider') + finish +endif +let g:loaded_node_provider = 1 + +let s:stderr = {} +let s:job_opts = {'rpc': v:true} + +function! s:job_opts.on_stderr(chan_id, data, event) + let stderr = get(s:stderr, a:chan_id, ['']) + let last = remove(stderr, -1) + let a:data[0] = last.a:data[0] + call extend(stderr, a:data) + let s:stderr[a:chan_id] = stderr +endfunction + +function! provider#node#Detect() abort + return exepath('neovim-node-host') +endfunction + +function! provider#node#Prog() + return s:prog +endfunction + +function! provider#node#Require(host) abort + if s:err != '' + echoerr s:err + return + endif + + let args = ['node'] + + if !empty($NVIM_NODE_HOST_DEBUG) + call add(args, '--inspect-brk') + endif + + call add(args , provider#node#Prog()) + + try + let channel_id = jobstart(args, s:job_opts) + if rpcrequest(channel_id, 'poll') ==# 'ok' + return channel_id + endif + catch + echomsg v:throwpoint + echomsg v:exception + for row in get(s:stderr, channel_id, []) + echomsg row + endfor + endtry + throw remote#host#LoadErrorForHost(a:host.orig_name, '$NVIM_NODE_LOG_FILE') +endfunction + +function! provider#node#Call(method, args) + if s:err != '' + echoerr s:err + return + endif + + if !exists('s:host') + try + let s:host = remote#host#Require('node') + catch + let s:err = v:exception + echohl WarningMsg + echomsg v:exception + echohl None + return + endtry + endif + return call('rpcrequest', insert(insert(a:args, 'node_'.a:method), s:host)) +endfunction + + +let s:err = '' +let s:prog = provider#node#Detect() + +if empty(s:prog) + let s:err = 'Cannot find the "neovim" node package. Try :CheckHealth' +endif + +call remote#host#RegisterPlugin('node-provider', 'node', []) diff --git a/runtime/autoload/remote/host.vim b/runtime/autoload/remote/host.vim index e695fb7df7..dfaab7d246 100644 --- a/runtime/autoload/remote/host.vim +++ b/runtime/autoload/remote/host.vim @@ -199,3 +199,7 @@ call remote#host#Register('python3', '*', " Ruby call remote#host#Register('ruby', '*.rb', \ function('provider#ruby#Require')) + +" nodejs +call remote#host#Register('node', '*', + \ function('provider#node#Require')) From eed10f7e23a7ec27e5ba147379fb6acbfcb10c20 Mon Sep 17 00:00:00 2001 From: Billy Vong Date: Tue, 31 Oct 2017 08:35:29 -0700 Subject: [PATCH 03/76] use `provider#stderr_collector` --- runtime/autoload/provider/node.vim | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/runtime/autoload/provider/node.vim b/runtime/autoload/provider/node.vim index 8a2a105bb4..ce2740e813 100644 --- a/runtime/autoload/provider/node.vim +++ b/runtime/autoload/provider/node.vim @@ -3,16 +3,7 @@ if exists('g:loaded_node_provider') endif let g:loaded_node_provider = 1 -let s:stderr = {} -let s:job_opts = {'rpc': v:true} - -function! s:job_opts.on_stderr(chan_id, data, event) - let stderr = get(s:stderr, a:chan_id, ['']) - let last = remove(stderr, -1) - let a:data[0] = last.a:data[0] - call extend(stderr, a:data) - let s:stderr[a:chan_id] = stderr -endfunction +let s:job_opts = {'rpc': v:true, 'on_stderr': function('provider#stderr_collector')} function! provider#node#Detect() abort return exepath('neovim-node-host') @@ -44,10 +35,13 @@ function! provider#node#Require(host) abort catch echomsg v:throwpoint echomsg v:exception - for row in get(s:stderr, channel_id, []) + for row in provider#get_stderr(channel_id) echomsg row endfor endtry + finally + call provider#clear_stderr(channel_id) + endtry throw remote#host#LoadErrorForHost(a:host.orig_name, '$NVIM_NODE_LOG_FILE') endfunction From 860ecd705588470b52094b7036c016b2af15f8c9 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Mon, 23 Oct 2017 01:50:26 +0200 Subject: [PATCH 04/76] vim-patch:8.0.0096: has('ttyin'), has('ttyout') Nvim note: intentionally did not include `--ttyfail` since its purpose is not clear. (And it isn't used in any Vim test files/scripts). --- Problem: When the input or output is not a tty Vim appears to hang. Solution: Add the --ttyfail argument. Also add the "ttyin" and "ttyout" features to be able to check in Vim script. https://github.com/vim/vim/commit/2cab0e191055a8145ccd46cd52869fbb9798b971 --- runtime/doc/eval.txt | 2 ++ src/nvim/eval.c | 4 ++++ src/nvim/globals.h | 27 ++++++++++++++------------- src/nvim/main.c | 6 ++++-- 4 files changed, 24 insertions(+), 15 deletions(-) diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 300bdd061e..271adc833d 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -8317,6 +8317,8 @@ termresponse Compiled with support for |t_RV| and |v:termresponse|. textobjects Compiled with support for |text-objects|. timers Compiled with |timer_start()| support. title Compiled with window title support |'title'|. +ttyin input is a terminal (tty) +ttyout output is a terminal (tty) unix Unix version of Vim. unnamedplus Compiled with support for "unnamedplus" in 'clipboard' user_commands User-defined commands. diff --git a/src/nvim/eval.c b/src/nvim/eval.c index c7cb51ac29..9752851d4e 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -10672,6 +10672,10 @@ static void f_has(typval_T *argvars, typval_T *rettv, FunPtr fptr) n = has_nvim_version(name + 5); } else if (STRICMP(name, "vim_starting") == 0) { n = (starting != 0); + } else if (STRICMP(name, "ttyin") == 0) { + n = stdin_isatty; + } else if (STRICMP(name, "ttyout") == 0) { + n = stdout_isatty; } else if (STRICMP(name, "multi_byte_encoding") == 0) { n = has_mbyte != 0; #if defined(USE_ICONV) && defined(DYNAMIC_ICONV) diff --git a/src/nvim/globals.h b/src/nvim/globals.h index 0f3e132bc0..8f804ff888 100644 --- a/src/nvim/globals.h +++ b/src/nvim/globals.h @@ -564,21 +564,22 @@ EXTERN int ru_col; /* column for ruler */ EXTERN int ru_wid; /* 'rulerfmt' width of ruler when non-zero */ EXTERN int sc_col; /* column for shown command */ -/* - * When starting or exiting some things are done differently (e.g. screen - * updating). - */ +// +// When starting or exiting some things are done differently (e.g. screen +// updating). +// + +// First NO_SCREEN, then NO_BUFFERS, then 0 when startup finished. EXTERN int starting INIT(= NO_SCREEN); -/* first NO_SCREEN, then NO_BUFFERS and then - * set to 0 when starting up finished */ -EXTERN int exiting INIT(= FALSE); -/* TRUE when planning to exit Vim. Might - * still keep on running if there is a changed - * buffer. */ -// volatile because it is used in signal handler deathtrap(). +// true when planning to exit. Might keep running if there is a changed buffer. +EXTERN int exiting INIT(= false); +// is stdin a terminal? +EXTERN int stdin_isatty INIT(= true); +// is stdout a terminal? +EXTERN int stdout_isatty INIT(= true); +// true when doing full-screen output, otherwise only writing some messages. +// volatile because it is used in a signal handler. EXTERN volatile int full_screen INIT(= false); -// TRUE when doing full-screen output -// otherwise only writing some messages EXTERN int restricted INIT(= FALSE); // TRUE when started in restricted mode (-Z) diff --git a/src/nvim/main.c b/src/nvim/main.c index ea7a58bda3..93afe11f3a 100644 --- a/src/nvim/main.c +++ b/src/nvim/main.c @@ -1240,8 +1240,10 @@ static void init_startuptime(mparm_T *paramp) static void check_and_set_isatty(mparm_T *paramp) { - paramp->input_isatty = os_isatty(fileno(stdin)); - paramp->output_isatty = os_isatty(fileno(stdout)); + stdin_isatty + = paramp->input_isatty = os_isatty(fileno(stdin)); + stdout_isatty + = paramp->output_isatty = os_isatty(fileno(stdout)); paramp->err_isatty = os_isatty(fileno(stderr)); TIME_MSG("window checked"); } From 68bef0a57de3c376406a0391c9ccd4099f7a0328 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Tue, 31 Oct 2017 13:28:16 +0100 Subject: [PATCH 05/76] test: has("ttyin"), has("ttyout") --- test/functional/core/startup_spec.lua | 89 +++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 test/functional/core/startup_spec.lua diff --git a/test/functional/core/startup_spec.lua b/test/functional/core/startup_spec.lua new file mode 100644 index 0000000000..08b59db627 --- /dev/null +++ b/test/functional/core/startup_spec.lua @@ -0,0 +1,89 @@ +local helpers = require('test.functional.helpers')(after_each) +local Screen = require('test.functional.ui.screen') + +local clear = helpers.clear +local command = helpers.command +local eq = helpers.eq +local funcs = helpers.funcs +local nvim_prog = helpers.nvim_prog +local nvim_set = helpers.nvim_set +local read_file = helpers.read_file +local retry = helpers.retry + +describe('startup', function() + before_each(function() + clear() + end) + after_each(function() + os.remove('Xtest_startup_ttyout') + end) + + it('pipe at both ends: has("ttyin")==0 has("ttyout")==0', function() + -- system() puts a pipe at both ends. + local out = funcs.system({ nvim_prog, '-u', 'NONE', '-i', 'NONE', '--headless', + '--cmd', nvim_set, + '-c', [[echo has('ttyin') has('ttyout')]], + '+q' }) + eq('0 0', out) + end) + it('with --embed: has("ttyin")==0 has("ttyout")==0', function() + local screen = Screen.new(25, 3) + -- Remote UI connected by --embed. + screen:attach() + command([[echo has('ttyin') has('ttyout')]]) + screen:expect([[ + ^ | + ~ | + 0 0 | + ]]) + end) + it('in a TTY: has("ttyin")==1 has("ttyout")==1', function() + local screen = Screen.new(25, 3) + screen:attach() + -- Running in :terminal + command([[exe printf("terminal %s -u NONE -i NONE --cmd \"]] + ..nvim_set..[[\" ]] + ..[[-c \"echo has('ttyin') has('ttyout')\""]] + ..[[, shellescape(v:progpath))]]) + screen:expect([[ + ^ | + 1 1 | + | + ]]) + end) + it('output to pipe: has("ttyin")==1 has("ttyout")==0', function() + local screen = Screen.new(25, 5) + screen:attach() + -- Running in :terminal + command([[exe printf("terminal %s -u NONE -i NONE --cmd \"]] + ..nvim_set..[[\" ]] + ..[[-c \"call writefile([has('ttyin'), has('ttyout')], 'Xtest_startup_ttyout')\"]] + ..[[-c q | cat -v"]] -- Output to a pipe. + ..[[, shellescape(v:progpath))]]) + retry(nil, 3000, function() + screen:sleep(1) + eq('1\n0\n', -- stdin is a TTY, stdout is a pipe + read_file('Xtest_startup_ttyout')) + end) + end) + it('input from pipe: has("ttyin")==0 has("ttyout")==1', function() + local screen = Screen.new(25, 5) + screen:attach() + if iswin() then + command([[set shellcmdflag=/s\ /c shellxquote=\"]]) + end + -- Running in :terminal + command([[exe printf("terminal echo foo | ]] -- Input from a pipe. + ..[[%s -u NONE -i NONE --cmd \"]] + ..nvim_set..[[\" ]] + ..[[-c \"call writefile([has('ttyin'), has('ttyout')], 'Xtest_startup_ttyout')\"]] + ..[[-c q -- -"]] + ..[[, shellescape(v:progpath))]]) + retry(nil, 3000, function() + screen:sleep(1) + eq('0\n1\n', -- stdin is a pipe, stdout is a TTY + read_file('Xtest_startup_ttyout')) + end) + end) +end) + From 54cac3033f2c6e27c677681e8ca6d21e3fd9fc0a Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Thu, 2 Nov 2017 11:10:25 +0100 Subject: [PATCH 06/76] test: startup_spec: cmd.exe escaping --- test/functional/core/startup_spec.lua | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/functional/core/startup_spec.lua b/test/functional/core/startup_spec.lua index 08b59db627..ae7f949e52 100644 --- a/test/functional/core/startup_spec.lua +++ b/test/functional/core/startup_spec.lua @@ -9,6 +9,7 @@ local nvim_prog = helpers.nvim_prog local nvim_set = helpers.nvim_set local read_file = helpers.read_file local retry = helpers.retry +local iswin = helpers.iswin describe('startup', function() before_each(function() @@ -40,6 +41,9 @@ describe('startup', function() it('in a TTY: has("ttyin")==1 has("ttyout")==1', function() local screen = Screen.new(25, 3) screen:attach() + if iswin() then + command([[set shellcmdflag=/s\ /c shellxquote=\"]]) + end -- Running in :terminal command([[exe printf("terminal %s -u NONE -i NONE --cmd \"]] ..nvim_set..[[\" ]] @@ -54,6 +58,9 @@ describe('startup', function() it('output to pipe: has("ttyin")==1 has("ttyout")==0', function() local screen = Screen.new(25, 5) screen:attach() + if iswin() then + command([[set shellcmdflag=/s\ /c shellxquote=\"]]) + end -- Running in :terminal command([[exe printf("terminal %s -u NONE -i NONE --cmd \"]] ..nvim_set..[[\" ]] From c598c3ac770b4ae1bdcda06224fa18300eac1455 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Tue, 7 Nov 2017 00:51:03 +0100 Subject: [PATCH 07/76] doc: deprecate 'highlight'; remove howto.txt (#7497) --- runtime/doc/cmdline.txt | 2 +- runtime/doc/deprecated.txt | 1 + runtime/doc/help.txt | 1 - runtime/doc/howto.txt | 96 -------------------------------------- runtime/doc/intro.txt | 6 +-- runtime/doc/options.txt | 21 ++------- runtime/doc/quickref.txt | 1 - runtime/doc/syntax.txt | 7 +-- runtime/doc/various.txt | 3 +- runtime/doc/vim_diff.txt | 2 +- runtime/doc/visual.txt | 3 +- runtime/doc/windows.txt | 16 ++----- src/nvim/syntax.c | 2 +- 13 files changed, 20 insertions(+), 141 deletions(-) delete mode 100644 runtime/doc/howto.txt diff --git a/runtime/doc/cmdline.txt b/runtime/doc/cmdline.txt index 4222a5b6f7..d29d3be45f 100644 --- a/runtime/doc/cmdline.txt +++ b/runtime/doc/cmdline.txt @@ -361,7 +361,7 @@ These are the commands that can be used: *c_CTRL-D* CTRL-D List names that match the pattern in front of the cursor. When showing file names, directories are highlighted (see - 'highlight' option). Names where 'suffixes' matches are moved + |highlight-groups|). Names where 'suffixes' matches are moved to the end. The 'wildoptions' option can be set to "tagfile" to list the file of matching tags. diff --git a/runtime/doc/deprecated.txt b/runtime/doc/deprecated.txt index b3e2f7a92f..f3d4f16244 100644 --- a/runtime/doc/deprecated.txt +++ b/runtime/doc/deprecated.txt @@ -47,6 +47,7 @@ Modifiers ~ Options ~ *'fe'* 'fenc'+'enc' before Vim 6.0; no longer used. +*'highlight'* *'hl'* Names of builtin |highlight-groups| cannot be changed. *'langnoremap'* Deprecated alias to 'nolangremap'. *'vi'* *'viminfo'* Deprecated alias to 'shada' option. diff --git a/runtime/doc/help.txt b/runtime/doc/help.txt index 1eda111297..5e4c095130 100644 --- a/runtime/doc/help.txt +++ b/runtime/doc/help.txt @@ -93,7 +93,6 @@ General subjects ~ |helphelp.txt| about using the help files |index.txt| alphabetical index of all commands |help-tags| all the tags you can jump to (index of tags) -|howto.txt| how to do the most common editing tasks |tips.txt| various tips on using Vim |message.txt| (error) messages and explanations |develop.txt| development of Nvim diff --git a/runtime/doc/howto.txt b/runtime/doc/howto.txt deleted file mode 100644 index 33c8552463..0000000000 --- a/runtime/doc/howto.txt +++ /dev/null @@ -1,96 +0,0 @@ -*howto.txt* Nvim - - - VIM REFERENCE MANUAL by Bram Moolenaar - - -How to ... *howdoi* *how-do-i* *howto* *how-to* - -|tutor| get started -|:quit| exit? I'm trapped, help me! -|initialization| initialize Vim -|vimrc-intro| write a Vim script file (vimrc) -|suspend| suspend Vim -|usr_11.txt| recover after a crash -|07.4| keep a backup of my file when writing over it - -|usr_07.txt| edit files -|23.4| edit binary files -|usr_24.txt| insert text -|deleting| delete text -|usr_04.txt| change text -|04.5| copy and move text -|usr_25.txt| format text -|30.6| format comments -|30.2| indent C programs -|25.3| automatically set indent - -|usr_26.txt| repeat commands -|02.5| undo and redo - -|usr_03.txt| move around -|word-motions| word motions -|left-right-motions| left-right motions -|up-down-motions| up-down motions -|object-motions| text-object motions -|various-motions| various motions -|object-select| text-object selection -|'whichwrap'| move over line breaks -|'virtualedit'| move to where there is no text -|usr_27.txt| specify pattern for searches -|tags-and-searches| do tags and special searches -|29.4| search in include'd files used to find - variables, functions, or macros -|K| look up manual for the keyword under cursor - -|03.7| scroll -|'sidescroll'| scroll horizontally/sideways -|'scrolloff'| set visible context lines - -|mode-switching| change modes -|04.4| use Visual mode -|'insertmode'| start Vim in Insert mode - -|40.1| map keys -|24.7| create abbreviations - -|ins-expandtab| expand a tab to spaces in Insert mode -|i_CTRL-R| insert contents of a register in Insert mode -|24.3| complete words in Insert mode -|25.1| break a line before it gets too long - -|20.1| do command-line editing -|20.3| do command-line completion -|'cmdheight'| increase the height of command-line -|10.3| specify command-line ranges -|40.3| specify commands to be executed automatically - before/after reading/writing entering/leaving a - buffer/window - -|'autowrite'| write automatically -|30.1| speedup edit-compile-edit cycle or compile and fix - errors within Vim - -|options| set options -|auto-setting| set options automatically -|term-dependent-settings| set options depending on terminal name -|save-settings| save settings -|:quote| comment my .vim files -|'helpheight'| change the default help height -|'highlight'| set various highlighting modes -|'title'| set the window title -|'icon'| set window icon title -|'report'| avoid seeing the change messages on every line -|'shortmess'| avoid |hit-enter| prompts - -|mouse-using| use mouse with Vim -|usr_08.txt| manage multiple windows and buffers -|gui.txt| use the gui - -|You can't! (yet)| do dishes using Vim - -|usr_06.txt| switch on syntax highlighting -|2html.vim| convert a colored file to HTML -|less| use Vim like less or more with syntax highlighting - - vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime/doc/intro.txt b/runtime/doc/intro.txt index 30524fb6aa..d71e73ceac 100644 --- a/runtime/doc/intro.txt +++ b/runtime/doc/intro.txt @@ -713,9 +713,9 @@ special situation. Vim will show only part of the line, around where the cursor is. There are no special characters shown, so that you can edit all parts of this line. -The '@' occasion in the 'highlight' option can be used to set special -highlighting for the '@' and '~' characters. This makes it possible to -distinguish them from real characters in the buffer. +The |hl-NonText| highlight group can be used to set special highlighting +for the '@' and '~' characters. This makes it possible to distinguish them +from real characters in the buffer. The 'showbreak' option contains the string to put in front of wrapped lines. diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 433b083942..045f3ada45 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -3094,11 +3094,6 @@ A jump table for the options with a short description can be found at |Q_op|. WARNING: It's easy to forget that you have changes in hidden buffers. Think twice when using ":q!" or ":qa!". - *'highlight'* *'hl'* -'highlight' 'hl' Removed. |vim-differences| - global - The builtin |highlight-groups| cannot be changed. - *'history'* *'hi'* 'history' 'hi' number (Vim default: 10000, Vi default: 0) global @@ -3127,10 +3122,8 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the |+extra_search| feature} When there is a previous search pattern, highlight all its matches. - The type of highlighting used can be set with the 'l' occasion in the - 'highlight' option. This uses the "Search" highlight group by - default. Note that only the matching text is highlighted, any offsets - are not applied. + The |hl-Search| highlight group determines the highlighting. Note that + only the matching text is highlighted, any offsets are not applied. See also: 'incsearch' and |:match|. When you get bored looking at the highlighted matches, you can turn it off with |:nohlsearch|. This does not change the option value, as @@ -3298,7 +3291,7 @@ A jump table for the options with a short description can be found at |Q_op|. Vim only searches for about half a second. With a complicated pattern and/or a lot of text the match may not be found. This is to avoid that Vim hangs while you are typing the pattern. - The highlighting can be set with the 'i' flag in 'highlight'. + The |hl-IncSearch| highlight group determines the highlighting. See also: 'hlsearch'. CTRL-L can be used to add one character from after the current match to the command line. If 'ignorecase' and 'smartcase' are set and the @@ -5346,8 +5339,7 @@ A jump table for the options with a short description can be found at |Q_op|. < Only printable single-cell characters are allowed, excluding and comma (in a future version the comma might be used to separate the part that is shown at the end and at the start of a line). - The characters are highlighted according to the '@' flag in - 'highlight'. + The |hl-NonText| highlight group determines the highlighting. Note that tabs after the showbreak will be displayed differently. If you want the 'showbreak' to appear in between line numbers, add the "n" flag to 'cpoptions'. @@ -5402,10 +5394,7 @@ A jump table for the options with a short description can be found at |Q_op|. 'showmode' 'smd' boolean (Vim default: on, Vi default: off) global If in Insert, Replace or Visual mode put a message on the last line. - Use the 'M' flag in 'highlight' to set the type of highlighting for - this message. - When |XIM| may be used the message will include "XIM". But this - doesn't mean XIM is really active. + The |hl-ModeMsg| highlight group determines the highlighting. *'showtabline'* *'stal'* 'showtabline' 'stal' number (default 1) diff --git a/runtime/doc/quickref.txt b/runtime/doc/quickref.txt index c4c3dcad88..16fdc6bda9 100644 --- a/runtime/doc/quickref.txt +++ b/runtime/doc/quickref.txt @@ -721,7 +721,6 @@ Short explanation of each option: *option-list* 'helpheight' 'hh' minimum height of a new help window 'helplang' 'hlg' preferred help languages 'hidden' 'hid' don't unload buffer when it is |abandon|ed -'highlight' 'hl' sets highlighting mode for various occasions 'hlsearch' 'hls' highlight matches with last search pattern 'history' 'hi' number of command-lines that are remembered 'hkmap' 'hk' Hebrew keyboard mapping diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt index d87825e489..6cbee8c108 100644 --- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -4543,12 +4543,11 @@ is mostly used, because it looks better. ============================================================================== 12. Highlight command *:highlight* *:hi* *E28* *E411* *E415* -There are three types of highlight groups: +There are two types of highlight groups: +- The built-in |highlight-groups|. - The ones used for specific languages. For these the name starts with the name of the language. Many of these don't have any attributes, but are linked to a group of the second type. -- The ones used for all syntax languages. -- The ones used for the 'highlight' option. *hitest.vim* You can see all the groups currently active with this command: > :so $VIMRUNTIME/syntax/hitest.vim @@ -5080,8 +5079,6 @@ defaults back: > It is a bit of a wrong name, since it does not reset any syntax items, it only affects the highlighting. -This doesn't change the colors for the 'highlight' option. - Note that the syntax colors that you set in your vimrc file will also be reset back to their Vim default. Note that if you are using a color scheme, the colors defined by the color diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt index 9150f3a809..e58eb7a1d0 100644 --- a/runtime/doc/various.txt +++ b/runtime/doc/various.txt @@ -102,8 +102,7 @@ g8 Print the hex values of the bytes used in the *:nu* *:number* :[range]nu[mber] [count] [flags] Same as :print, but precede each line with its line - number. (See also 'highlight' and 'numberwidth' - option). + number. (See also |hl-LineNr| and 'numberwidth'). See |ex-flags| for [flags]. *:#* diff --git a/runtime/doc/vim_diff.txt b/runtime/doc/vim_diff.txt index 6959d64989..d37b9be4e3 100644 --- a/runtime/doc/vim_diff.txt +++ b/runtime/doc/vim_diff.txt @@ -377,7 +377,7 @@ Other options: 'esckeys' 'guioptions' "t" flag was removed *'guipty'* (Nvim uses pipes and PTYs consistently on all platforms.) - 'highlight' (the builtin |highlight-groups| cannot be changed) + 'highlight' (Names of builtin |highlight-groups| cannot be changed.) *'imactivatefunc'* *'imaf'* *'imactivatekey'* *'imak'* *'imstatusfunc'* *'imsf'* diff --git a/runtime/doc/visual.txt b/runtime/doc/visual.txt index 6c4d44edb6..176ce562d8 100644 --- a/runtime/doc/visual.txt +++ b/runtime/doc/visual.txt @@ -25,8 +25,7 @@ Using Visual mode consists of three parts: 3. Type an operator command. The highlighted characters will be operated upon. -The 'highlight' option can be used to set the display mode to use for -highlighting in Visual mode. +The |hl-Visual| group determines the highlighting of the visual selection. The 'virtualedit' option can be used to allow positioning the cursor to positions where there is no actual character. diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt index c37362a497..9224fd59ff 100644 --- a/runtime/doc/windows.txt +++ b/runtime/doc/windows.txt @@ -106,18 +106,10 @@ This option can be local to the window, so that you can have a different status line in each window. Normally, inversion is used to display the status line. This can be changed -with the 's' character in the 'highlight' option. For example, "sb" sets it to -bold characters. If no highlighting is used for the status line ("sn"), the -'^' character is used for the current window, and '=' for other windows. If -the mouse is supported and enabled with the 'mouse' option, a status line can -be dragged to resize windows. - -Note: If you expect your status line to be in reverse video and it isn't, -check if the 'highlight' option contains "si". In version 3.0, this meant to -invert the status line. Now it should be "sr", reverse the status line, as -"si" now stands for italic! If italic is not available on your terminal, the -status line is inverted anyway; you will only see this problem on terminals -that have |terminfo| capabilities for italics. +with the |hl-StatusLine| highlight group. If no highlighting is used for the +status line, the '^' character is used for the current window, and '=' for +other windows. If 'mouse' is enabled, a status line can be dragged to resize +windows. ============================================================================== 3. Opening and closing a window *opening-window* *E36* diff --git a/src/nvim/syntax.c b/src/nvim/syntax.c index 70bda42d83..913fd05482 100644 --- a/src/nvim/syntax.c +++ b/src/nvim/syntax.c @@ -79,7 +79,7 @@ struct hl_group { #define SG_LINK 8 // link has been set /// @} -// highlight groups for 'highlight' option +// builtin |highlight-groups| static garray_T highlight_ga = GA_EMPTY_INIT_VALUE; static inline struct hl_group * HL_TABLE(void) From 7bcbf5d45620209b652b7bdd669878dbacd08dbe Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Tue, 7 Nov 2017 00:53:26 +0100 Subject: [PATCH 08/76] health.vim: show TUI-related env vars (#7498) ref #7473 ref #7490 --- runtime/autoload/health/nvim.vim | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/runtime/autoload/health/nvim.vim b/runtime/autoload/health/nvim.vim index 7f6e943dc9..f8beaf6a0f 100644 --- a/runtime/autoload/health/nvim.vim +++ b/runtime/autoload/health/nvim.vim @@ -173,6 +173,11 @@ function! s:check_terminal() abort call health#report_info('key_dc (kdch1) terminfo entry: ' \ .(empty(kbs_entry) ? '? (not found)' : kdch1_entry)) endif + for env_var in ['XTERM_VERSION', 'VTE_VERSION', 'TERM_PROGRAM', 'COLORTERM', 'SSH_TTY'] + if !empty(eval('$'.env_var)) + call health#report_info(printf("$%s='%s'", env_var, eval('$'.env_var))) + endif + endfor endfunction function! health#nvim#check() abort From dc9290109481e5e0d0c224fecb217ceb5a4c978d Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Tue, 7 Nov 2017 00:29:19 +0100 Subject: [PATCH 09/76] vim-patch.sh: new option `-P` --- scripts/vim-patch.sh | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/scripts/vim-patch.sh b/scripts/vim-patch.sh index 4f6bb40488..fd1d2a200b 100755 --- a/scripts/vim-patch.sh +++ b/scripts/vim-patch.sh @@ -22,9 +22,10 @@ usage() { echo "Options:" echo " -h Show this message and exit." echo " -l Show list of Vim patches missing from Neovim." - echo " -p {vim-revision} Download and apply the Vim patch vim-revision." - echo " vim-revision can be a version number of the " - echo " format '7.4.xxx' or a Git commit hash." + echo " -p {vim-revision} Download and generate the specified Vim patch." + echo " vim-revision can be a version number '8.0.xxx'" + echo " or a valid Git ref (hash, tag, etc.)." + echo " -P {vim-revision} Download, generate and apply the Vim patch." echo " -g {vim-revision} Download the Vim patch vim-revision." echo " vim-revision can be a version number of the " echo " format '7.4.xxx' or a Git commit hash." @@ -32,7 +33,7 @@ usage() { echo " -r {pr-number} Review a vim-patch pull request to Neovim." echo echo "Set VIM_SOURCE_DIR to change where Vim's sources are stored." - echo "The default is '${VIM_SOURCE_DIR_DEFAULT}'." + echo "Default is '${VIM_SOURCE_DIR_DEFAULT}'." } # Checks if a program is in the user's PATH, and is executable. @@ -186,6 +187,7 @@ get_vim_patch() { stage_patch() { get_vim_patch "$1" + local try_apply="${2:-}" local git_remote git_remote="$(find_git_remote)" @@ -215,14 +217,23 @@ stage_patch() { echo "✔ ${output}" || (echo "✘ ${output}"; false) - printf "\nInstructions: - Proceed to port the patch. This may help: - patch -p1 < ${patch_file} + if test -n "$try_apply" ; then + if ! check_executable patch; then + printf "\n✘ 'patch' command not found\n" + else + printf "\nApplying patch...\n" + patch -p1 < "${patch_file}" + fi + printf "\nInstructions:\n Proceed to port the patch.\n" + else + printf "\nInstructions:\n Proceed to port the patch.\n Try the 'patch' command (or use '${BASENAME} -P ...' next time):\n patch -p1 < ${patch_file}\n" + fi - Stage your changes ('git add ...') and use 'git commit --amend' to commit. + printf " + Stage your changes ('git add ...'), then use 'git commit --amend' to commit. - To port additional patches related to ${vim_version} and add them to the - current branch, call '${BASENAME} -p' again. + To port more patches (if any) related to ${vim_version}, + run '${BASENAME}' again. * Do this only for _related_ patches (otherwise it increases the size of the pull request, making it harder to review) @@ -446,7 +457,7 @@ review_pr() { clean_files } -while getopts "hlp:g:r:s" opt; do +while getopts "hlp:P:g:r:s" opt; do case ${opt} in h) usage @@ -460,6 +471,10 @@ while getopts "hlp:g:r:s" opt; do stage_patch "${OPTARG}" exit 0 ;; + P) + stage_patch "${OPTARG}" TRY_APPLY + exit 0 + ;; g) get_vim_patch "${OPTARG}" exit 0 From 0312fc2ddb4144a2fd0d323d742c41f625405420 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Tue, 7 Nov 2017 00:46:08 +0100 Subject: [PATCH 10/76] vim-patch:3c2881dc1195 Update runtime files. Add Rust support. https://github.com/vim/vim/commit/3c2881dc1195f53ebafc387378399ddd6cb677a7 --- runtime/autoload/rust.vim | 415 ++++++++++++++++++++++++++++++++++ runtime/autoload/rustfmt.vim | 107 +++++++++ runtime/compiler/cargo.vim | 35 +++ runtime/compiler/rustc.vim | 46 ++++ runtime/doc/eval.txt | 5 +- runtime/doc/filetype.txt | 6 + runtime/doc/fold.txt | 4 +- runtime/doc/ft_rust.txt | 237 +++++++++++++++++++ runtime/doc/helphelp.txt | 3 +- runtime/doc/remote.txt | 1 + runtime/doc/usr_41.txt | 1 + runtime/ftplugin/hamster.vim | 3 +- runtime/ftplugin/rust.vim | 197 ++++++++++++++++ runtime/indent/javascript.vim | 243 ++++++++++---------- runtime/indent/rust.vim | 213 +++++++++++++++++ runtime/syntax/rust.vim | 295 ++++++++++++++++++++++++ 16 files changed, 1689 insertions(+), 122 deletions(-) create mode 100644 runtime/autoload/rust.vim create mode 100644 runtime/autoload/rustfmt.vim create mode 100644 runtime/compiler/cargo.vim create mode 100644 runtime/compiler/rustc.vim create mode 100644 runtime/doc/ft_rust.txt create mode 100644 runtime/ftplugin/rust.vim create mode 100644 runtime/indent/rust.vim create mode 100644 runtime/syntax/rust.vim diff --git a/runtime/autoload/rust.vim b/runtime/autoload/rust.vim new file mode 100644 index 0000000000..34a3b41773 --- /dev/null +++ b/runtime/autoload/rust.vim @@ -0,0 +1,415 @@ +" Author: Kevin Ballard +" Description: Helper functions for Rust commands/mappings +" Last Modified: May 27, 2014 +" For bugs, patches and license go to https://github.com/rust-lang/rust.vim + +" Jump {{{1 + +function! rust#Jump(mode, function) range + let cnt = v:count1 + normal! m' + if a:mode ==# 'v' + norm! gv + endif + let foldenable = &foldenable + set nofoldenable + while cnt > 0 + execute "call Jump_" . a:function . "()" + let cnt = cnt - 1 + endwhile + let &foldenable = foldenable +endfunction + +function! s:Jump_Back() + call search('{', 'b') + keepjumps normal! w99[{ +endfunction + +function! s:Jump_Forward() + normal! j0 + call search('{', 'b') + keepjumps normal! w99[{% + call search('{') +endfunction + +" Run {{{1 + +function! rust#Run(bang, args) + let args = s:ShellTokenize(a:args) + if a:bang + let idx = index(l:args, '--') + if idx != -1 + let rustc_args = idx == 0 ? [] : l:args[:idx-1] + let args = l:args[idx+1:] + else + let rustc_args = l:args + let args = [] + endif + else + let rustc_args = [] + endif + + let b:rust_last_rustc_args = l:rustc_args + let b:rust_last_args = l:args + + call s:WithPath(function("s:Run"), rustc_args, args) +endfunction + +function! s:Run(dict, rustc_args, args) + let exepath = a:dict.tmpdir.'/'.fnamemodify(a:dict.path, ':t:r') + if has('win32') + let exepath .= '.exe' + endif + + let relpath = get(a:dict, 'tmpdir_relpath', a:dict.path) + let rustc_args = [relpath, '-o', exepath] + a:rustc_args + + let rustc = exists("g:rustc_path") ? g:rustc_path : "rustc" + + let pwd = a:dict.istemp ? a:dict.tmpdir : '' + let output = s:system(pwd, shellescape(rustc) . " " . join(map(rustc_args, 'shellescape(v:val)'))) + if output != '' + echohl WarningMsg + echo output + echohl None + endif + if !v:shell_error + exe '!' . shellescape(exepath) . " " . join(map(a:args, 'shellescape(v:val)')) + endif +endfunction + +" Expand {{{1 + +function! rust#Expand(bang, args) + let args = s:ShellTokenize(a:args) + if a:bang && !empty(l:args) + let pretty = remove(l:args, 0) + else + let pretty = "expanded" + endif + call s:WithPath(function("s:Expand"), pretty, args) +endfunction + +function! s:Expand(dict, pretty, args) + try + let rustc = exists("g:rustc_path") ? g:rustc_path : "rustc" + + if a:pretty =~? '^\%(everybody_loops$\|flowgraph=\)' + let flag = '--xpretty' + else + let flag = '--pretty' + endif + let relpath = get(a:dict, 'tmpdir_relpath', a:dict.path) + let args = [relpath, '-Z', 'unstable-options', l:flag, a:pretty] + a:args + let pwd = a:dict.istemp ? a:dict.tmpdir : '' + let output = s:system(pwd, shellescape(rustc) . " " . join(map(args, 'shellescape(v:val)'))) + if v:shell_error + echohl WarningMsg + echo output + echohl None + else + new + silent put =output + 1 + d + setl filetype=rust + setl buftype=nofile + setl bufhidden=hide + setl noswapfile + " give the buffer a nice name + let suffix = 1 + let basename = fnamemodify(a:dict.path, ':t:r') + while 1 + let bufname = basename + if suffix > 1 | let bufname .= ' ('.suffix.')' | endif + let bufname .= '.pretty.rs' + if bufexists(bufname) + let suffix += 1 + continue + endif + exe 'silent noautocmd keepalt file' fnameescape(bufname) + break + endwhile + endif + endtry +endfunction + +function! rust#CompleteExpand(lead, line, pos) + if a:line[: a:pos-1] =~ '^RustExpand!\s*\S*$' + " first argument and it has a ! + let list = ["normal", "expanded", "typed", "expanded,identified", "flowgraph=", "everybody_loops"] + if !empty(a:lead) + call filter(list, "v:val[:len(a:lead)-1] == a:lead") + endif + return list + endif + + return glob(escape(a:lead, "*?[") . '*', 0, 1) +endfunction + +" Emit {{{1 + +function! rust#Emit(type, args) + let args = s:ShellTokenize(a:args) + call s:WithPath(function("s:Emit"), a:type, args) +endfunction + +function! s:Emit(dict, type, args) + try + let output_path = a:dict.tmpdir.'/output' + + let rustc = exists("g:rustc_path") ? g:rustc_path : "rustc" + + let relpath = get(a:dict, 'tmpdir_relpath', a:dict.path) + let args = [relpath, '--emit', a:type, '-o', output_path] + a:args + let pwd = a:dict.istemp ? a:dict.tmpdir : '' + let output = s:system(pwd, shellescape(rustc) . " " . join(map(args, 'shellescape(v:val)'))) + if output != '' + echohl WarningMsg + echo output + echohl None + endif + if !v:shell_error + new + exe 'silent keepalt read' fnameescape(output_path) + 1 + d + if a:type == "llvm-ir" + setl filetype=llvm + let extension = 'll' + elseif a:type == "asm" + setl filetype=asm + let extension = 's' + endif + setl buftype=nofile + setl bufhidden=hide + setl noswapfile + if exists('l:extension') + " give the buffer a nice name + let suffix = 1 + let basename = fnamemodify(a:dict.path, ':t:r') + while 1 + let bufname = basename + if suffix > 1 | let bufname .= ' ('.suffix.')' | endif + let bufname .= '.'.extension + if bufexists(bufname) + let suffix += 1 + continue + endif + exe 'silent noautocmd keepalt file' fnameescape(bufname) + break + endwhile + endif + endif + endtry +endfunction + +" Utility functions {{{1 + +" Invokes func(dict, ...) +" Where {dict} is a dictionary with the following keys: +" 'path' - The path to the file +" 'tmpdir' - The path to a temporary directory that will be deleted when the +" function returns. +" 'istemp' - 1 if the path is a file inside of {dict.tmpdir} or 0 otherwise. +" If {istemp} is 1 then an additional key is provided: +" 'tmpdir_relpath' - The {path} relative to the {tmpdir}. +" +" {dict.path} may be a path to a file inside of {dict.tmpdir} or it may be the +" existing path of the current buffer. If the path is inside of {dict.tmpdir} +" then it is guaranteed to have a '.rs' extension. +function! s:WithPath(func, ...) + let buf = bufnr('') + let saved = {} + let dict = {} + try + let saved.write = &write + set write + let dict.path = expand('%') + let pathisempty = empty(dict.path) + + " Always create a tmpdir in case the wrapped command wants it + let dict.tmpdir = tempname() + call mkdir(dict.tmpdir) + + if pathisempty || !saved.write + let dict.istemp = 1 + " if we're doing this because of nowrite, preserve the filename + if !pathisempty + let filename = expand('%:t:r').".rs" + else + let filename = 'unnamed.rs' + endif + let dict.tmpdir_relpath = filename + let dict.path = dict.tmpdir.'/'.filename + + let saved.mod = &mod + set nomod + + silent exe 'keepalt write! ' . fnameescape(dict.path) + if pathisempty + silent keepalt 0file + endif + else + let dict.istemp = 0 + update + endif + + call call(a:func, [dict] + a:000) + finally + if bufexists(buf) + for [opt, value] in items(saved) + silent call setbufvar(buf, '&'.opt, value) + unlet value " avoid variable type mismatches + endfor + endif + if has_key(dict, 'tmpdir') | silent call s:RmDir(dict.tmpdir) | endif + endtry +endfunction + +function! rust#AppendCmdLine(text) + call setcmdpos(getcmdpos()) + let cmd = getcmdline() . a:text + return cmd +endfunction + +" Tokenize the string according to sh parsing rules +function! s:ShellTokenize(text) + " states: + " 0: start of word + " 1: unquoted + " 2: unquoted backslash + " 3: double-quote + " 4: double-quoted backslash + " 5: single-quote + let l:state = 0 + let l:current = '' + let l:args = [] + for c in split(a:text, '\zs') + if l:state == 0 || l:state == 1 " unquoted + if l:c ==# ' ' + if l:state == 0 | continue | endif + call add(l:args, l:current) + let l:current = '' + let l:state = 0 + elseif l:c ==# '\' + let l:state = 2 + elseif l:c ==# '"' + let l:state = 3 + elseif l:c ==# "'" + let l:state = 5 + else + let l:current .= l:c + let l:state = 1 + endif + elseif l:state == 2 " unquoted backslash + if l:c !=# "\n" " can it even be \n? + let l:current .= l:c + endif + let l:state = 1 + elseif l:state == 3 " double-quote + if l:c ==# '\' + let l:state = 4 + elseif l:c ==# '"' + let l:state = 1 + else + let l:current .= l:c + endif + elseif l:state == 4 " double-quoted backslash + if stridx('$`"\', l:c) >= 0 + let l:current .= l:c + elseif l:c ==# "\n" " is this even possible? + " skip it + else + let l:current .= '\'.l:c + endif + let l:state = 3 + elseif l:state == 5 " single-quoted + if l:c == "'" + let l:state = 1 + else + let l:current .= l:c + endif + endif + endfor + if l:state != 0 + call add(l:args, l:current) + endif + return l:args +endfunction + +function! s:RmDir(path) + " sanity check; make sure it's not empty, /, or $HOME + if empty(a:path) + echoerr 'Attempted to delete empty path' + return 0 + elseif a:path == '/' || a:path == $HOME + echoerr 'Attempted to delete protected path: ' . a:path + return 0 + endif + return system("rm -rf " . shellescape(a:path)) +endfunction + +" Executes {cmd} with the cwd set to {pwd}, without changing Vim's cwd. +" If {pwd} is the empty string then it doesn't change the cwd. +function! s:system(pwd, cmd) + let cmd = a:cmd + if !empty(a:pwd) + let cmd = 'cd ' . shellescape(a:pwd) . ' && ' . cmd + endif + return system(cmd) +endfunction + +" Playpen Support {{{1 +" Parts of gist.vim by Yasuhiro Matsumoto reused +" gist.vim available under the BSD license, available at +" http://github.com/mattn/gist-vim +function! s:has_webapi() + if !exists("*webapi#http#post") + try + call webapi#http#post() + catch + endtry + endif + return exists("*webapi#http#post") +endfunction + +function! rust#Play(count, line1, line2, ...) abort + redraw + + let l:rust_playpen_url = get(g:, 'rust_playpen_url', 'https://play.rust-lang.org/') + let l:rust_shortener_url = get(g:, 'rust_shortener_url', 'https://is.gd/') + + if !s:has_webapi() + echohl ErrorMsg | echomsg ':RustPlay depends on webapi.vim (https://github.com/mattn/webapi-vim)' | echohl None + return + endif + + let bufname = bufname('%') + if a:count < 1 + let content = join(getline(a:line1, a:line2), "\n") + else + let save_regcont = @" + let save_regtype = getregtype('"') + silent! normal! gvy + let content = @" + call setreg('"', save_regcont, save_regtype) + endif + + let body = l:rust_playpen_url."?code=".webapi#http#encodeURI(content) + + if strlen(body) > 5000 + echohl ErrorMsg | echomsg 'Buffer too large, max 5000 encoded characters ('.strlen(body).')' | echohl None + return + endif + + let payload = "format=simple&url=".webapi#http#encodeURI(body) + let res = webapi#http#post(l:rust_shortener_url.'create.php', payload, {}) + let url = res.content + + redraw | echomsg 'Done: '.url +endfunction + +" }}}1 + +" vim: set noet sw=8 ts=8: diff --git a/runtime/autoload/rustfmt.vim b/runtime/autoload/rustfmt.vim new file mode 100644 index 0000000000..a689b5e00d --- /dev/null +++ b/runtime/autoload/rustfmt.vim @@ -0,0 +1,107 @@ +" Author: Stephen Sugden +" +" Adapted from https://github.com/fatih/vim-go +" For bugs, patches and license go to https://github.com/rust-lang/rust.vim + +if !exists("g:rustfmt_autosave") + let g:rustfmt_autosave = 0 +endif + +if !exists("g:rustfmt_command") + let g:rustfmt_command = "rustfmt" +endif + +if !exists("g:rustfmt_options") + let g:rustfmt_options = "" +endif + +if !exists("g:rustfmt_fail_silently") + let g:rustfmt_fail_silently = 0 +endif + +let s:got_fmt_error = 0 + +function! s:RustfmtCommandRange(filename, line1, line2) + let l:arg = {"file": shellescape(a:filename), "range": [a:line1, a:line2]} + return printf("%s %s --write-mode=overwrite --file-lines '[%s]'", g:rustfmt_command, g:rustfmt_options, json_encode(l:arg)) +endfunction + +function! s:RustfmtCommand(filename) + return g:rustfmt_command . " --write-mode=overwrite " . g:rustfmt_options . " " . shellescape(a:filename) +endfunction + +function! s:RunRustfmt(command, curw, tmpname) + if exists("*systemlist") + let out = systemlist(a:command) + else + let out = split(system(a:command), '\r\?\n') + endif + + if v:shell_error == 0 || v:shell_error == 3 + " remove undo point caused via BufWritePre + try | silent undojoin | catch | endtry + + " Replace current file with temp file, then reload buffer + call rename(a:tmpname, expand('%')) + silent edit! + let &syntax = &syntax + + " only clear location list if it was previously filled to prevent + " clobbering other additions + if s:got_fmt_error + let s:got_fmt_error = 0 + call setloclist(0, []) + lwindow + endif + elseif g:rustfmt_fail_silently == 0 + " otherwise get the errors and put them in the location list + let errors = [] + + for line in out + " src/lib.rs:13:5: 13:10 error: expected `,`, or `}`, found `value` + let tokens = matchlist(line, '^\(.\{-}\):\(\d\+\):\(\d\+\):\s*\(\d\+:\d\+\s*\)\?\s*error: \(.*\)') + if !empty(tokens) + call add(errors, {"filename": @%, + \"lnum": tokens[2], + \"col": tokens[3], + \"text": tokens[5]}) + endif + endfor + + if empty(errors) + % | " Couldn't detect rustfmt error format, output errors + endif + + if !empty(errors) + call setloclist(0, errors, 'r') + echohl Error | echomsg "rustfmt returned error" | echohl None + endif + + let s:got_fmt_error = 1 + lwindow + " We didn't use the temp file, so clean up + call delete(a:tmpname) + endif + + call winrestview(a:curw) +endfunction + +function! rustfmt#FormatRange(line1, line2) + let l:curw = winsaveview() + let l:tmpname = expand("%:p:h") . "/." . expand("%:p:t") . ".rustfmt" + call writefile(getline(1, '$'), l:tmpname) + + let command = s:RustfmtCommandRange(l:tmpname, a:line1, a:line2) + + call s:RunRustfmt(command, l:curw, l:tmpname) +endfunction + +function! rustfmt#Format() + let l:curw = winsaveview() + let l:tmpname = expand("%:p:h") . "/." . expand("%:p:t") . ".rustfmt" + call writefile(getline(1, '$'), l:tmpname) + + let command = s:RustfmtCommand(l:tmpname) + + call s:RunRustfmt(command, l:curw, l:tmpname) +endfunction diff --git a/runtime/compiler/cargo.vim b/runtime/compiler/cargo.vim new file mode 100644 index 0000000000..bd48666bc9 --- /dev/null +++ b/runtime/compiler/cargo.vim @@ -0,0 +1,35 @@ +" Vim compiler file +" Compiler: Cargo Compiler +" Maintainer: Damien Radtke +" Latest Revision: 2014 Sep 24 +" For bugs, patches and license go to https://github.com/rust-lang/rust.vim + +if exists('current_compiler') + finish +endif +runtime compiler/rustc.vim +let current_compiler = "cargo" + +let s:save_cpo = &cpo +set cpo&vim + +if exists(':CompilerSet') != 2 + command -nargs=* CompilerSet setlocal +endif + +if exists('g:cargo_makeprg_params') + execute 'CompilerSet makeprg=cargo\ '.escape(g:cargo_makeprg_params, ' \|"').'\ $*' +else + CompilerSet makeprg=cargo\ $* +endif + +" Ignore general cargo progress messages +CompilerSet errorformat+= + \%-G%\\s%#Downloading%.%#, + \%-G%\\s%#Compiling%.%#, + \%-G%\\s%#Finished%.%#, + \%-G%\\s%#error:\ Could\ not\ compile\ %.%#, + \%-G%\\s%#To\ learn\ more\\,%.%# + +let &cpo = s:save_cpo +unlet s:save_cpo diff --git a/runtime/compiler/rustc.vim b/runtime/compiler/rustc.vim new file mode 100644 index 0000000000..c27bdc9c0c --- /dev/null +++ b/runtime/compiler/rustc.vim @@ -0,0 +1,46 @@ +" Vim compiler file +" Compiler: Rust Compiler +" Maintainer: Chris Morgan +" Latest Revision: 2013 Jul 12 +" For bugs, patches and license go to https://github.com/rust-lang/rust.vim + +if exists("current_compiler") + finish +endif +let current_compiler = "rustc" + +let s:cpo_save = &cpo +set cpo&vim + +if exists(":CompilerSet") != 2 + command -nargs=* CompilerSet setlocal +endif + +if exists("g:rustc_makeprg_no_percent") && g:rustc_makeprg_no_percent != 0 + CompilerSet makeprg=rustc +else + CompilerSet makeprg=rustc\ \% +endif + +" Old errorformat (before nightly 2016/08/10) +CompilerSet errorformat= + \%f:%l:%c:\ %t%*[^:]:\ %m, + \%f:%l:%c:\ %*\\d:%*\\d\ %t%*[^:]:\ %m, + \%-G%f:%l\ %s, + \%-G%*[\ ]^, + \%-G%*[\ ]^%*[~], + \%-G%*[\ ]... + +" New errorformat (after nightly 2016/08/10) +CompilerSet errorformat+= + \%-G, + \%-Gerror:\ aborting\ %.%#, + \%-Gerror:\ Could\ not\ compile\ %.%#, + \%Eerror:\ %m, + \%Eerror[E%n]:\ %m, + \%Wwarning:\ %m, + \%Inote:\ %m, + \%C\ %#-->\ %f:%l:%c + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 7bf148a833..319ae26060 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -2201,12 +2201,13 @@ readfile({fname} [, {binary} [, {max}]]) reltime([{start} [, {end}]]) List get time value reltimefloat({time}) Float turn the time value into a Float reltimestr({time}) String turn time value into a String -remote_expr({server}, {string} [, {idvar}]) +remote_expr({server}, {string} [, {idvar} [, {timeout}]]) String send expression remote_foreground({server}) Number bring Vim server to the foreground remote_peek({serverid} [, {retvar}]) Number check for reply string -remote_read({serverid}) String read reply string +remote_read({serverid} [, {timeout}]) + String read reply string remote_send({server}, {string} [, {idvar}]) String send key sequence remove({list}, {idx} [, {end}]) any remove items {idx}-{end} from {list} diff --git a/runtime/doc/filetype.txt b/runtime/doc/filetype.txt index 7f1e98fed4..ed223e57db 100644 --- a/runtime/doc/filetype.txt +++ b/runtime/doc/filetype.txt @@ -724,6 +724,12 @@ Format description: not recognized here as well. +RUST *ft-rust* + +Since the text for this plugin is rather long it has been put in a separate +file: |ft_rust.txt|. + + SQL *ft-sql* Since the text for this plugin is rather long it has been put in a separate diff --git a/runtime/doc/fold.txt b/runtime/doc/fold.txt index fc8484b741..c644d63280 100644 --- a/runtime/doc/fold.txt +++ b/runtime/doc/fold.txt @@ -73,7 +73,7 @@ This will call a function to compute the fold level: > :set foldexpr=MyFoldLevel(v:lnum) This will make a fold out of paragraphs separated by blank lines: > :set foldexpr=getline(v:lnum)=~'^\\s*$'&&getline(v:lnum+1)=~'\\S'?'<1':1 -this does the same: > +This does the same: > :set foldexpr=getline(v:lnum-1)=~'^\\s*$'&&getline(v:lnum)=~'\\S'?'>1':1 Note that backslashes must be used to escape characters that ":set" handles @@ -197,7 +197,7 @@ and the level given by the marker: 1. If a marker with the same fold level is encountered, the previous fold ends and another fold with the same level starts. 2. If a marker with a higher fold level is found, a nested fold is started. -3. if a marker with a lower fold level is found, all folds up to and including +3. If a marker with a lower fold level is found, all folds up to and including this level end and a fold with the specified level starts. The number indicates the fold level. A zero cannot be used (a marker with diff --git a/runtime/doc/ft_rust.txt b/runtime/doc/ft_rust.txt new file mode 100644 index 0000000000..b6e974e371 --- /dev/null +++ b/runtime/doc/ft_rust.txt @@ -0,0 +1,237 @@ +*ft_rust.txt* Filetype plugin for Rust + +============================================================================== +CONTENTS *rust* *ft-rust* + +1. Introduction |rust-intro| +2. Settings |rust-settings| +3. Commands |rust-commands| +4. Mappings |rust-mappings| + +============================================================================== +INTRODUCTION *rust-intro* + +This plugin provides syntax and supporting functionality for the Rust +filetype. + +============================================================================== +SETTINGS *rust-settings* + +This plugin has a few variables you can define in your vimrc that change the +behavior of the plugin. + + *g:rustc_path* +g:rustc_path~ + Set this option to the path to rustc for use in the |:RustRun| and + |:RustExpand| commands. If unset, "rustc" will be located in $PATH: > + let g:rustc_path = $HOME."/bin/rustc" +< + + *g:rustc_makeprg_no_percent* +g:rustc_makeprg_no_percent~ + Set this option to 1 to have 'makeprg' default to "rustc" instead of + "rustc %": > + let g:rustc_makeprg_no_percent = 1 +< + + *g:rust_conceal* +g:rust_conceal~ + Set this option to turn on the basic |conceal| support: > + let g:rust_conceal = 1 +< + + *g:rust_conceal_mod_path* +g:rust_conceal_mod_path~ + Set this option to turn on |conceal| for the path connecting token + "::": > + let g:rust_conceal_mod_path = 1 +< + + *g:rust_conceal_pub* +g:rust_conceal_pub~ + Set this option to turn on |conceal| for the "pub" token: > + let g:rust_conceal_pub = 1 +< + + *g:rust_recommended_style* +g:rust_recommended_style~ + Set this option to enable vim indentation and textwidth settings to + conform to style conventions of the rust standard library (i.e. use 4 + spaces for indents and sets 'textwidth' to 99). This option is enabled + by default. To disable it: > + let g:rust_recommended_style = 0 +< + + *g:rust_fold* +g:rust_fold~ + Set this option to turn on |folding|: > + let g:rust_fold = 1 +< + Value Effect ~ + 0 No folding + 1 Braced blocks are folded. All folds are open by + default. + 2 Braced blocks are folded. 'foldlevel' is left at the + global value (all folds are closed by default). + + *g:rust_bang_comment_leader* +g:rust_bang_comment_leader~ + Set this option to 1 to preserve the leader on multi-line doc comments + using the /*! syntax: > + let g:rust_bang_comment_leader = 1 +< + + *g:ftplugin_rust_source_path* +g:ftplugin_rust_source_path~ + Set this option to a path that should be prepended to 'path' for Rust + source files: > + let g:ftplugin_rust_source_path = $HOME.'/dev/rust' +< + + *g:rustfmt_command* +g:rustfmt_command~ + Set this option to the name of the 'rustfmt' executable in your $PATH. If + not specified it defaults to 'rustfmt' : > + let g:rustfmt_command = 'rustfmt' +< + *g:rustfmt_autosave* +g:rustfmt_autosave~ + Set this option to 1 to run |:RustFmt| automatically when saving a + buffer. If not specified it defaults to 0 : > + let g:rustfmt_autosave = 0 +< + *g:rustfmt_fail_silently* +g:rustfmt_fail_silently~ + Set this option to 1 to prevent 'rustfmt' from populating the + |location-list| with errors. If not specified it defaults to 0: > + let g:rustfmt_fail_silently = 0 +< + *g:rustfmt_options* +g:rustfmt_options~ + Set this option to a string of options to pass to 'rustfmt'. The + write-mode is already set to 'overwrite'. If not specified it + defaults to '' : > + let g:rustfmt_options = '' +< + + *g:rust_playpen_url* +g:rust_playpen_url~ + Set this option to override the url for the playpen to use: > + let g:rust_playpen_url = 'https://play.rust-lang.org/' +< + + *g:rust_shortener_url* +g:rust_shortener_url~ + Set this option to override the url for the url shortener: > + let g:rust_shortener_url = 'https://is.gd/' +< + + +============================================================================== +COMMANDS *rust-commands* + +:RustRun [args] *:RustRun* +:RustRun! [rustc-args] [--] [args] + Compiles and runs the current file. If it has unsaved changes, + it will be saved first using |:update|. If the current file is + an unnamed buffer, it will be written to a temporary file + first. The compiled binary is always placed in a temporary + directory, but is run from the current directory. + + The arguments given to |:RustRun| will be passed to the + compiled binary. + + If ! is specified, the arguments are passed to rustc instead. + A "--" argument will separate the rustc arguments from the + arguments passed to the binary. + + If |g:rustc_path| is defined, it is used as the path to rustc. + Otherwise it is assumed rustc can be found in $PATH. + +:RustExpand [args] *:RustExpand* +:RustExpand! [TYPE] [args] + Expands the current file using --pretty and displays the + results in a new split. If the current file has unsaved + changes, it will be saved first using |:update|. If the + current file is an unnamed buffer, it will be written to a + temporary file first. + + The arguments given to |:RustExpand| will be passed to rustc. + This is largely intended for specifying various --cfg + configurations. + + If ! is specified, the first argument is the expansion type to + pass to rustc --pretty. Otherwise it will default to + "expanded". + + If |g:rustc_path| is defined, it is used as the path to rustc. + Otherwise it is assumed rustc can be found in $PATH. + +:RustEmitIr [args] *:RustEmitIr* + Compiles the current file to LLVM IR and displays the results + in a new split. If the current file has unsaved changes, it + will be saved first using |:update|. If the current file is an + unnamed buffer, it will be written to a temporary file first. + + The arguments given to |:RustEmitIr| will be passed to rustc. + + If |g:rustc_path| is defined, it is used as the path to rustc. + Otherwise it is assumed rustc can be found in $PATH. + +:RustEmitAsm [args] *:RustEmitAsm* + Compiles the current file to assembly and displays the results + in a new split. If the current file has unsaved changes, it + will be saved first using |:update|. If the current file is an + unnamed buffer, it will be written to a temporary file first. + + The arguments given to |:RustEmitAsm| will be passed to rustc. + + If |g:rustc_path| is defined, it is used as the path to rustc. + Otherwise it is assumed rustc can be found in $PATH. + +:RustPlay *:RustPlay* + This command will only work if you have web-api.vim installed + (available at https://github.com/mattn/webapi-vim). It sends the + current selection, or if nothing is selected, the entirety of the + current buffer to the Rust playpen, and emits a message with the + shortened URL to the playpen. + + |g:rust_playpen_url| is the base URL to the playpen, by default + "https://play.rust-lang.org/". + + |g:rust_shortener_url| is the base url for the shorterner, by + default "https://is.gd/" + +:RustFmt *:RustFmt* + Runs |g:rustfmt_command| on the current buffer. If + |g:rustfmt_options| is set then those will be passed to the + executable. + + If |g:rustfmt_fail_silently| is 0 (the default) then it + will populate the |location-list| with the errors from + |g:rustfmt_command|. If |g:rustfmt_fail_silently| is set to 1 + then it will not populate the |location-list|. + +:RustFmtRange *:RustFmtRange* + Runs |g:rustfmt_command| with selected range. See + |:RustFmt| for any other information. + +============================================================================== +MAPPINGS *rust-mappings* + +This plugin defines mappings for |[[| and |]]| to support hanging indents. + +It also has a few other mappings: + + *rust_* + Executes |:RustRun| with no arguments. + Note: This binding is only available in MacVim. + + *rust_* + Populates the command line with |:RustRun|! using the + arguments given to the last invocation, but does not + execute it. + Note: This binding is only available in MacVim. + +============================================================================== + vim:tw=78:sw=4:noet:ts=8:ft=help:norl: diff --git a/runtime/doc/helphelp.txt b/runtime/doc/helphelp.txt index f8164a6982..adc72d1835 100644 --- a/runtime/doc/helphelp.txt +++ b/runtime/doc/helphelp.txt @@ -140,7 +140,8 @@ Help on help files *helphelp* already opened, then the location list for that window is used. Otherwise, a new help window is opened and the location list for that window is set. The - location list for the current window is not changed. + location list for the current window is not changed + then. *:exu* *:exusage* :exu[sage] Show help on Ex commands. Added to simulate the Nvi diff --git a/runtime/doc/remote.txt b/runtime/doc/remote.txt index 67bfb0b48e..963d5f1972 100644 --- a/runtime/doc/remote.txt +++ b/runtime/doc/remote.txt @@ -137,6 +137,7 @@ the description in |eval.txt| or use CTRL-] on the function name to jump to the full explanation. synopsis explanation ~ + remote_startserver( name) run a server remote_expr( server, string, idvar) send expression remote_send( server, string, idvar) send key sequence serverlist() get a list of available servers diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt index 4f6a5aa5ab..0f4e2767ab 100644 --- a/runtime/doc/usr_41.txt +++ b/runtime/doc/usr_41.txt @@ -888,6 +888,7 @@ GUI: *gui-functions* Vim server: *server-functions* serverlist() return the list of server names + remote_startserve() run a server remote_send() send command characters to a Vim server remote_expr() evaluate an expression in a Vim server server2client() send a reply to a client of a Vim server diff --git a/runtime/ftplugin/hamster.vim b/runtime/ftplugin/hamster.vim index 29711fb093..6c0630fe04 100644 --- a/runtime/ftplugin/hamster.vim +++ b/runtime/ftplugin/hamster.vim @@ -2,7 +2,7 @@ " Language: Hamster Script " Version: 2.0.6.0 " Maintainer: David Fishburn -" Last Change: 2017 Mar 07 +" Last Change: 2017 Mar 18 " Only do this when not done yet for this buffer if exists("b:did_ftplugin") @@ -14,7 +14,6 @@ let b:did_ftplugin = 1 let s:cpo_save = &cpo set cpo&vim -set cpo-=C let b:undo_ftplugin = "setl fo< com< tw< commentstring<" \ . "| unlet! b:match_ignorecase b:match_words b:match_skip" diff --git a/runtime/ftplugin/rust.vim b/runtime/ftplugin/rust.vim new file mode 100644 index 0000000000..7efca5985b --- /dev/null +++ b/runtime/ftplugin/rust.vim @@ -0,0 +1,197 @@ +" Language: Rust +" Description: Vim ftplugin for Rust +" Maintainer: Chris Morgan +" Maintainer: Kevin Ballard +" Last Change: June 08, 2016 +" For bugs, patches and license go to https://github.com/rust-lang/rust.vim + +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +let s:save_cpo = &cpo +set cpo&vim + +augroup rust.vim +autocmd! + +" Variables {{{1 + +" The rust source code at present seems to typically omit a leader on /*! +" comments, so we'll use that as our default, but make it easy to switch. +" This does not affect indentation at all (I tested it with and without +" leader), merely whether a leader is inserted by default or not. +if exists("g:rust_bang_comment_leader") && g:rust_bang_comment_leader != 0 + " Why is the `,s0:/*,mb:\ ,ex:*/` there, you ask? I don't understand why, + " but without it, */ gets indented one space even if there were no + " leaders. I'm fairly sure that's a Vim bug. + setlocal comments=s1:/*,mb:*,ex:*/,s0:/*,mb:\ ,ex:*/,:///,://!,:// +else + setlocal comments=s0:/*!,m:\ ,ex:*/,s1:/*,mb:*,ex:*/,:///,://!,:// +endif +setlocal commentstring=//%s +setlocal formatoptions-=t formatoptions+=croqnl +" j was only added in 7.3.541, so stop complaints about its nonexistence +silent! setlocal formatoptions+=j + +" smartindent will be overridden by indentexpr if filetype indent is on, but +" otherwise it's better than nothing. +setlocal smartindent nocindent + +if !exists("g:rust_recommended_style") || g:rust_recommended_style != 0 + setlocal tabstop=4 shiftwidth=4 softtabstop=4 expandtab + setlocal textwidth=99 +endif + +" This includeexpr isn't perfect, but it's a good start +setlocal includeexpr=substitute(v:fname,'::','/','g') + +setlocal suffixesadd=.rs + +if exists("g:ftplugin_rust_source_path") + let &l:path=g:ftplugin_rust_source_path . ',' . &l:path +endif + +if exists("g:loaded_delimitMate") + if exists("b:delimitMate_excluded_regions") + let b:rust_original_delimitMate_excluded_regions = b:delimitMate_excluded_regions + endif + + let s:delimitMate_extra_excluded_regions = ',rustLifetimeCandidate,rustGenericLifetimeCandidate' + + " For this buffer, when delimitMate issues the `User delimitMate_map` + " event in the autocommand system, add the above-defined extra excluded + " regions to delimitMate's state, if they have not already been added. + autocmd User + \ if expand('') ==# 'delimitMate_map' && match( + \ delimitMate#Get("excluded_regions"), + \ s:delimitMate_extra_excluded_regions) == -1 + \| let b:delimitMate_excluded_regions = + \ delimitMate#Get("excluded_regions") + \ . s:delimitMate_extra_excluded_regions + \|endif + + " For this buffer, when delimitMate issues the `User delimitMate_unmap` + " event in the autocommand system, delete the above-defined extra excluded + " regions from delimitMate's state (the deletion being idempotent and + " having no effect if the extra excluded regions are not present in the + " targeted part of delimitMate's state). + autocmd User + \ if expand('') ==# 'delimitMate_unmap' + \| let b:delimitMate_excluded_regions = substitute( + \ delimitMate#Get("excluded_regions"), + \ '\C\V' . s:delimitMate_extra_excluded_regions, + \ '', 'g') + \|endif +endif + +if has("folding") && exists('g:rust_fold') && g:rust_fold != 0 + let b:rust_set_foldmethod=1 + setlocal foldmethod=syntax + if g:rust_fold == 2 + setlocal foldlevel< + else + setlocal foldlevel=99 + endif +endif + +if has('conceal') && exists('g:rust_conceal') && g:rust_conceal != 0 + let b:rust_set_conceallevel=1 + setlocal conceallevel=2 +endif + +" Motion Commands {{{1 + +" Bind motion commands to support hanging indents +nnoremap [[ :call rust#Jump('n', 'Back') +nnoremap ]] :call rust#Jump('n', 'Forward') +xnoremap [[ :call rust#Jump('v', 'Back') +xnoremap ]] :call rust#Jump('v', 'Forward') +onoremap [[ :call rust#Jump('o', 'Back') +onoremap ]] :call rust#Jump('o', 'Forward') + +" Commands {{{1 + +" See |:RustRun| for docs +command! -nargs=* -complete=file -bang -buffer RustRun call rust#Run(0, ) + +" See |:RustExpand| for docs +command! -nargs=* -complete=customlist,rust#CompleteExpand -bang -buffer RustExpand call rust#Expand(0, ) + +" See |:RustEmitIr| for docs +command! -nargs=* -buffer RustEmitIr call rust#Emit("llvm-ir", ) + +" See |:RustEmitAsm| for docs +command! -nargs=* -buffer RustEmitAsm call rust#Emit("asm", ) + +" See |:RustPlay| for docs +command! -range=% RustPlay :call rust#Play(, , , ) + +" See |:RustFmt| for docs +command! -buffer RustFmt call rustfmt#Format() + +" See |:RustFmtRange| for docs +command! -range -buffer RustFmtRange call rustfmt#FormatRange(, ) + +" Mappings {{{1 + +" Bind ⌘R in MacVim to :RustRun +nnoremap :RustRun +" Bind ⌘⇧R in MacVim to :RustRun! pre-filled with the last args +nnoremap :RustRun! =join(b:rust_last_rustc_args)erust#AppendCmdLine(' -- ' . join(b:rust_last_args)) + +if !exists("b:rust_last_rustc_args") || !exists("b:rust_last_args") + let b:rust_last_rustc_args = [] + let b:rust_last_args = [] +endif + +" Cleanup {{{1 + +let b:undo_ftplugin = " + \ setlocal formatoptions< comments< commentstring< includeexpr< suffixesadd< + \|setlocal tabstop< shiftwidth< softtabstop< expandtab< textwidth< + \|if exists('b:rust_original_delimitMate_excluded_regions') + \|let b:delimitMate_excluded_regions = b:rust_original_delimitMate_excluded_regions + \|unlet b:rust_original_delimitMate_excluded_regions + \|else + \|unlet! b:delimitMate_excluded_regions + \|endif + \|if exists('b:rust_set_foldmethod') + \|setlocal foldmethod< foldlevel< + \|unlet b:rust_set_foldmethod + \|endif + \|if exists('b:rust_set_conceallevel') + \|setlocal conceallevel< + \|unlet b:rust_set_conceallevel + \|endif + \|unlet! b:rust_last_rustc_args b:rust_last_args + \|delcommand RustRun + \|delcommand RustExpand + \|delcommand RustEmitIr + \|delcommand RustEmitAsm + \|delcommand RustPlay + \|nunmap + \|nunmap + \|nunmap [[ + \|nunmap ]] + \|xunmap [[ + \|xunmap ]] + \|ounmap [[ + \|ounmap ]] + \|set matchpairs-=<:> + \" + +" }}}1 + +" Code formatting on save +if get(g:, "rustfmt_autosave", 0) + autocmd BufWritePre *.rs silent! call rustfmt#Format() +endif + +augroup END + +let &cpo = s:save_cpo +unlet s:save_cpo + +" vim: set noet sw=8 ts=8: diff --git a/runtime/indent/javascript.vim b/runtime/indent/javascript.vim index a6f1e1a8f8..304c0fe24f 100644 --- a/runtime/indent/javascript.vim +++ b/runtime/indent/javascript.vim @@ -2,7 +2,7 @@ " Language: Javascript " Maintainer: Chris Paul ( https://github.com/bounceme ) " URL: https://github.com/pangloss/vim-javascript -" Last Change: December 31, 2016 +" Last Change: March 21, 2017 " Only load this indent file when no other was loaded. if exists('b:did_indent') @@ -14,6 +14,10 @@ let b:did_indent = 1 setlocal indentexpr=GetJavascriptIndent() setlocal autoindent nolisp nosmartindent setlocal indentkeys+=0],0) +" Testable with something like: +" vim -eNs "+filetype plugin indent on" "+syntax on" "+set ft=javascript" \ +" "+norm! gg=G" '+%print' '+:q!' testfile.js \ +" | diff -uBZ testfile.js - let b:undo_indent = 'setlocal indentexpr< smartindent< autoindent< indentkeys<' @@ -32,10 +36,14 @@ if exists('*shiftwidth') endfunction else function s:sw() - return &sw + return &l:shiftwidth == 0 ? &l:tabstop : &l:shiftwidth endfunction endif +" Performance for forwards search(): start search at pos rather than masking +" matches before pos. +let s:z = has('patch-7.4.984') ? 'z' : '' + " searchpair() wrapper if has('reltime') function s:GetPair(start,end,flags,skip,time,...) @@ -48,34 +56,41 @@ else endif " Regex of syntax group names that are or delimit string or are comments. -let s:syng_strcom = 'string\|comment\|regex\|special\|doc\|template' -let s:syng_str = 'string\|template' +let s:syng_strcom = 'string\|comment\|regex\|special\|doc\|template\%(braces\)\@!' +let s:syng_str = 'string\|template\|special' let s:syng_com = 'comment\|doc' " Expression used to check whether we should skip a match with searchpair(). let s:skip_expr = "synIDattr(synID(line('.'),col('.'),0),'name') =~? '".s:syng_strcom."'" +function s:parse_cino(f) abort + return float2nr(eval(substitute(substitute(join(split( + \ matchstr(&cino,'.*'.a:f.'\zs[^,]*'), 's',1), '*'.s:W) + \ , '^-\=\zs\*','',''), '^-\=\zs\.','0.',''))) +endfunction + function s:skip_func() - if !s:free || search('\m`\|\*\/','nW',s:looksyn) - let s:free = !eval(s:skip_expr) - let s:looksyn = s:free ? line('.') : s:looksyn - return !s:free + if getline('.') =~ '\%<'.col('.').'c\/.\{-}\/\|\%>'.col('.').'c[''"]\|\\$' + return eval(s:skip_expr) + elseif s:checkIn || search('\m`\|\${\|\*\/','nW'.s:z,s:looksyn) + let s:checkIn = eval(s:skip_expr) endif let s:looksyn = line('.') - return (search('\m\/','nbW',s:looksyn) || search('\m[''"]\|\\$','nW',s:looksyn)) && eval(s:skip_expr) + return s:checkIn endfunction function s:alternatePair(stop) let pos = getpos('.')[1:2] - while search('\m[][(){}]','bW',a:stop) - if !s:skip_func() - let idx = stridx('])}',s:looking_at()) - if idx + 1 - if !s:GetPair(['\[','(','{'][idx], '])}'[idx],'bW','s:skip_func()',2000,a:stop) - break - endif - else - return + let pat = '[][(){};]' + while search('\m'.pat,'bW',a:stop) + if s:skip_func() | continue | endif + let idx = stridx('])};',s:looking_at()) + if idx is 3 | let pat = '[{}()]' | continue | endif + if idx + 1 + if s:GetPair(['\[','(','{'][idx], '])}'[idx],'bW','s:skip_func()',2000,a:stop) <= 0 + break endif + else + return endif endwhile call call('cursor',pos) @@ -100,93 +115,91 @@ function s:token() return s:looking_at() =~ '\k' ? expand('') : s:looking_at() endfunction -function s:b_token() - if s:looking_at() =~ '\k' - call search('\m\<','cbW') - endif - return search('\m\S','bW') -endfunction - function s:previous_token() - let l:n = line('.') - while s:b_token() - if (s:looking_at() == '/' || line('.') != l:n && search('\m\/\/','nbW', - \ line('.'))) && s:syn_at(line('.'),col('.')) =~? s:syng_com - call search('\m\_[^/]\zs\/[/*]','bW') + let l:pos = getpos('.')[1:2] + if search('\m\k\{1,}\zs\k\|\S','bW') + if (getline('.')[col('.')-2:col('.')-1] == '*/' || line('.') != l:pos[0] && + \ getline('.') =~ '\%<'.col('.').'c\/\/') && s:syn_at(line('.'),col('.')) =~? s:syng_com + while search('\m\S\ze\_s*\/[/*]','bW') + if s:syn_at(line('.'),col('.')) !~? s:syng_com + return s:token() + endif + endwhile else return s:token() endif - endwhile + endif + call call('cursor',l:pos) return '' endfunction -function s:others(p) - return "((line2byte(line('.')) + col('.')) <= ".(line2byte(a:p[0]) + a:p[1]).") || ".s:skip_expr -endfunction - -function s:tern_skip(p) - return s:GetPair('{','}','nbW',s:others(a:p),200,a:p[0]) > 0 -endfunction - -function s:tern_col(p) - return s:GetPair('?',':\@ 0 -endfunction - -function s:label_col() - let pos = getpos('.')[1:2] - let [s:looksyn,s:free] = pos - call s:alternatePair(0) - if s:save_pos('s:IsBlock') - let poss = getpos('.')[1:2] - return call('cursor',pos) || !s:tern_col(poss) - elseif s:looking_at() == ':' - return !s:tern_col([0,0]) +function s:expr_col() + if getline('.')[col('.')-2] == ':' + return 1 endif + let bal = 0 + while search('\m[{}?:;]','bW') + if eval(s:skip_expr) | continue | endif + " switch (looking_at()) + exe { '}': "if s:GetPair('{','}','bW',s:skip_expr,200) <= 0 | return | endif", + \ ';': "return", + \ '{': "return getpos('.')[1:2] != b:js_cache[1:] && !s:IsBlock()", + \ ':': "let bal -= getline('.')[max([col('.')-2,0]):col('.')] !~ '::'", + \ '?': "let bal += 1 | if bal > 0 | return 1 | endif" }[s:looking_at()] + endwhile endfunction " configurable regexes that define continuation lines, not including (, {, or [. let s:opfirst = '^' . get(g:,'javascript_opfirst', - \ '\%([<>=,?^%|*/&]\|\([-.:+]\)\1\@!\|!=\|in\%(stanceof\)\=\>\)') + \ '\C\%([<>=,?^%|*/&]\|\([-.:+]\)\1\@!\|!=\|in\%(stanceof\)\=\>\)') let s:continuation = get(g:,'javascript_continuation', - \ '\%([<=,.~!?/*^%|&:]\|+\@\|\<\%(typeof\|delete\|void\|in\|instanceof\)\)') . '$' + \ '\C\%([-+<>=,.~!?/*^%|&:]\|\<\%(typeof\|new\|delete\|void\|in\|instanceof\|await\)\)') . '$' function s:continues(ln,con) - return !cursor(a:ln, match(' '.a:con,s:continuation)) && - \ eval((['s:syn_at(line("."),col(".")) !~? "regex"'] + - \ repeat(['s:previous_token() != "."'],5) + [1])[ - \ index(split('/ typeof in instanceof void delete'),s:token())]) + if !cursor(a:ln, match(' '.a:con,s:continuation)) + let teol = s:looking_at() + if teol == '/' + return s:syn_at(line('.'),col('.')) !~? 'regex' + elseif teol =~ '[-+>]' + return getline('.')[col('.')-2] != tr(teol,'>','=') + elseif teol =~ '\l' + return s:previous_token() != '.' + elseif teol == ':' + return s:expr_col() + endif + return 1 + endif endfunction " get the line of code stripped of comments and move cursor to the last " non-comment char. function s:Trim(ln) let pline = substitute(getline(a:ln),'\s*$','','') - let l:max = max([match(pline,'.*[^/]\zs\/[/*]'),0]) - while l:max && s:syn_at(a:ln, strlen(pline)) =~? s:syng_com - let pline = substitute(strpart(pline, 0, l:max),'\s*$','','') - let l:max = max([match(pline,'.*[^/]\zs\/[/*]'),0]) + let l:max = max([strridx(pline,'//'), strridx(pline,'/*')]) + while l:max != -1 && s:syn_at(a:ln, strlen(pline)) =~? s:syng_com + let pline = pline[: l:max] + let l:max = max([strridx(pline,'//'), strridx(pline,'/*')]) + let pline = substitute(pline[:-2],'\s*$','','') endwhile - return cursor(a:ln,strlen(pline)) ? pline : pline + return pline is '' || cursor(a:ln,strlen(pline)) ? pline : pline endfunction " Find line above 'lnum' that isn't empty or in a comment function s:PrevCodeLine(lnum) - let l:n = prevnonblank(a:lnum) + let [l:pos, l:n] = [getpos('.')[1:2], prevnonblank(a:lnum)] while l:n if getline(l:n) =~ '^\s*\/[/*]' - if (stridx(getline(l:n),'`') > 0 || getline(l:n-1)[-1:] == '\') && - \ s:syn_at(l:n,1) =~? s:syng_str - return l:n - endif let l:n = prevnonblank(l:n-1) - elseif s:syn_at(l:n,1) =~? s:syng_com - let l:n = s:save_pos('eval', - \ 'cursor('.l:n.',1) + search(''\m\/\*'',"bW")') + elseif stridx(getline(l:n), '*/') + 1 && s:syn_at(l:n,1) =~? s:syng_com + call cursor(l:n,1) + keepjumps norm! [* + let l:n = search('\m\S','nbW') else - return l:n + break endif endwhile + call call('cursor',l:pos) + return l:n endfunction " Check if line 'lnum' has a balanced amount of parentheses. @@ -201,7 +214,9 @@ function s:Balanced(lnum) return endif endif - let pos = match(l:line, '[][(){}]', pos + 1) + let pos = match(l:line, (l:open ? + \ '['.escape(tr(l:line[pos],'({[]})',')}][{(').l:line[pos],']').']' : + \ '[][(){}]'), pos + 1) endwhile return !l:open endfunction @@ -210,11 +225,11 @@ function s:OneScope(lnum) let pline = s:Trim(a:lnum) let kw = 'else do' if pline[-1:] == ')' && s:GetPair('(', ')', 'bW', s:skip_expr, 100) > 0 - call s:previous_token() - let kw = 'for if let while with' - if index(split('await each'),s:token()) + 1 + if s:previous_token() =~# '^\%(await\|each\)$' call s:previous_token() let kw = 'for' + else + let kw = 'for if let while with' endif endif return pline[-2:] == '=>' || index(split(kw),s:token()) + 1 && @@ -246,18 +261,23 @@ function s:IsBlock() if s:looking_at() == '{' let l:n = line('.') let char = s:previous_token() - let syn = char =~ '[{>/]' ? s:syn_at(line('.'),col('.')-(char == '{')) : '' - if syn =~? 'xml\|jsx' + if match(s:stack,'\cxml\|jsx') + 1 && s:syn_at(line('.'),col('.')-1) =~? 'xml\|jsx' return char != '{' elseif char =~ '\k' - return index(split('return const let import export yield default delete var await void typeof throw case new in instanceof') - \ ,char) < (line('.') != l:n) || s:previous_token() == '.' + if char ==# 'type' + return s:previous_token() !~# '^\%(im\|ex\)port$' + endif + return index(split('return const let import export extends yield default delete var await void typeof throw case new of in instanceof') + \ ,char) < (line('.') != l:n) || s:save_pos('s:previous_token') == '.' elseif char == '>' - return getline('.')[col('.')-2] == '=' || syn =~? '^jsflow' + return getline('.')[col('.')-2] == '=' || s:syn_at(line('.'),col('.')) =~? '^jsflow' elseif char == ':' - return getline('.')[col('.')-2] != ':' && s:label_col() + return !s:save_pos('s:expr_col') + elseif char == '/' + return s:syn_at(line('.'),col('.')) =~? 'regex' endif - return syn =~? 'regex' || char !~ '[-=~!<*+,/?^%|&([]' + return char !~ '[=~!<*,?^%|&([]' && + \ (char !~ '[-+]' || l:n != line('.') && getline('.')[col('.')-2] == char) endif endfunction @@ -266,7 +286,9 @@ function GetJavascriptIndent() " Get the current line. call cursor(v:lnum,1) let l:line = getline('.') - let syns = s:syn_at(v:lnum, 1) + " use synstack as it validates syn state and works in an empty line + let s:stack = map(synstack(v:lnum,1),"synIDattr(v:val,'name')") + let syns = get(s:stack,-1,'') " start with strings,comments,etc. if syns =~? s:syng_com @@ -275,7 +297,7 @@ function GetJavascriptIndent() elseif l:line !~ '^\s*\/[/*]' return -1 endif - elseif syns =~? s:syng_str && l:line !~ '^[''"]' + elseif syns =~? s:syng_str if b:js_cache[0] == v:lnum - 1 && s:Balanced(v:lnum-1) let b:js_cache[0] = v:lnum endif @@ -295,69 +317,60 @@ function GetJavascriptIndent() endif " the containing paren, bracket, or curly. Many hacks for performance - let idx = strlen(l:line) ? stridx('])}',l:line[0]) : -1 + let idx = index([']',')','}'],l:line[0]) if b:js_cache[0] >= l:lnum && b:js_cache[0] < v:lnum && \ (b:js_cache[0] > l:lnum || s:Balanced(l:lnum)) call call('cursor',b:js_cache[1:]) else - let [s:looksyn, s:free, top] = [v:lnum - 1, 1, (!indent(l:lnum) && + let [s:looksyn, s:checkIn, top] = [v:lnum - 1, 0, (!indent(l:lnum) && \ s:syn_at(l:lnum,1) !~? s:syng_str) * l:lnum] if idx + 1 - call s:GetPair(['\[','(','{'][idx], '])}'[idx],'bW','s:skip_func()',2000,top) - elseif indent(v:lnum) && syns =~? 'block' + call s:GetPair(['\[','(','{'][idx],'])}'[idx],'bW','s:skip_func()',2000,top) + elseif getline(v:lnum) !~ '^\S' && syns =~? 'block' call s:GetPair('{','}','bW','s:skip_func()',2000,top) else call s:alternatePair(top) endif endif - if idx + 1 || l:line[:1] == '|}' - if idx == 2 && search('\m\S','bW',line('.')) && s:looking_at() == ')' - call s:GetPair('(',')','bW',s:skip_expr,200) - endif - return indent('.') - endif - let b:js_cache = [v:lnum] + (line('.') == v:lnum ? [0,0] : getpos('.')[1:2]) let num = b:js_cache[1] let [s:W, isOp, bL, switch_offset] = [s:sw(),0,0,0] if !num || s:IsBlock() + let ilnum = line('.') let pline = s:save_pos('s:Trim',l:lnum) if num && s:looking_at() == ')' && s:GetPair('(', ')', 'bW', s:skip_expr, 100) > 0 - let num = line('.') - if s:previous_token() ==# 'switch' && s:previous_token() != '.' - if &cino !~ ':' || !has('float') + let num = ilnum == num ? line('.') : num + if idx < 0 && s:previous_token() ==# 'switch' && s:previous_token() != '.' + if &cino !~ ':' let switch_offset = s:W else - let cinc = matchlist(&cino,'.*:\(-\)\=\([0-9.]*\)\(s\)\=\C') - let switch_offset = float2nr(str2float(cinc[1].(strlen(cinc[2]) ? cinc[2] : strlen(cinc[3]))) - \ * (strlen(cinc[3]) ? s:W : 1)) + let switch_offset = max([-indent(num),s:parse_cino(':')]) endif if pline[-1:] != '.' && l:line =~# '^\%(default\|case\)\>' return indent(num) + switch_offset endif endif endif - if pline[-1:] !~ '[{;]' - if pline =~# ':\@ +" Last Change: 2017 Mar 21 +" For bugs, patches and license go to https://github.com/rust-lang/rust.vim + +" Only load this indent file when no other was loaded. +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +setlocal cindent +setlocal cinoptions=L0,(0,Ws,J1,j1 +setlocal cinkeys=0{,0},!^F,o,O,0[,0] +" Don't think cinwords will actually do anything at all... never mind +setlocal cinwords=for,if,else,while,loop,impl,mod,unsafe,trait,struct,enum,fn,extern + +" Some preliminary settings +setlocal nolisp " Make sure lisp indenting doesn't supersede us +setlocal autoindent " indentexpr isn't much help otherwise +" Also do indentkeys, otherwise # gets shoved to column 0 :-/ +setlocal indentkeys=0{,0},!^F,o,O,0[,0] + +setlocal indentexpr=GetRustIndent(v:lnum) + +" Only define the function once. +if exists("*GetRustIndent") + finish +endif + +let s:save_cpo = &cpo +set cpo&vim + +" Come here when loading the script the first time. + +function! s:get_line_trimmed(lnum) + " Get the line and remove a trailing comment. + " Use syntax highlighting attributes when possible. + " NOTE: this is not accurate; /* */ or a line continuation could trick it + let line = getline(a:lnum) + let line_len = strlen(line) + if has('syntax_items') + " If the last character in the line is a comment, do a binary search for + " the start of the comment. synID() is slow, a linear search would take + " too long on a long line. + if synIDattr(synID(a:lnum, line_len, 1), "name") =~ 'Comment\|Todo' + let min = 1 + let max = line_len + while min < max + let col = (min + max) / 2 + if synIDattr(synID(a:lnum, col, 1), "name") =~ 'Comment\|Todo' + let max = col + else + let min = col + 1 + endif + endwhile + let line = strpart(line, 0, min - 1) + endif + return substitute(line, "\s*$", "", "") + else + " Sorry, this is not complete, nor fully correct (e.g. string "//"). + " Such is life. + return substitute(line, "\s*//.*$", "", "") + endif +endfunction + +function! s:is_string_comment(lnum, col) + if has('syntax_items') + for id in synstack(a:lnum, a:col) + let synname = synIDattr(id, "name") + if synname == "rustString" || synname =~ "^rustComment" + return 1 + endif + endfor + else + " without syntax, let's not even try + return 0 + endif +endfunction + +function GetRustIndent(lnum) + + " Starting assumption: cindent (called at the end) will do it right + " normally. We just want to fix up a few cases. + + let line = getline(a:lnum) + + if has('syntax_items') + let synname = synIDattr(synID(a:lnum, 1, 1), "name") + if synname == "rustString" + " If the start of the line is in a string, don't change the indent + return -1 + elseif synname =~ '\(Comment\|Todo\)' + \ && line !~ '^\s*/\*' " not /* opening line + if synname =~ "CommentML" " multi-line + if line !~ '^\s*\*' && getline(a:lnum - 1) =~ '^\s*/\*' + " This is (hopefully) the line after a /*, and it has no + " leader, so the correct indentation is that of the + " previous line. + return GetRustIndent(a:lnum - 1) + endif + endif + " If it's in a comment, let cindent take care of it now. This is + " for cases like "/*" where the next line should start " * ", not + " "* " as the code below would otherwise cause for module scope + " Fun fact: " /*\n*\n*/" takes two calls to get right! + return cindent(a:lnum) + endif + endif + + " cindent gets second and subsequent match patterns/struct members wrong, + " as it treats the comma as indicating an unfinished statement:: + " + " match a { + " b => c, + " d => e, + " f => g, + " }; + + " Search backwards for the previous non-empty line. + let prevlinenum = prevnonblank(a:lnum - 1) + let prevline = s:get_line_trimmed(prevlinenum) + while prevlinenum > 1 && prevline !~ '[^[:blank:]]' + let prevlinenum = prevnonblank(prevlinenum - 1) + let prevline = s:get_line_trimmed(prevlinenum) + endwhile + + " Handle where clauses nicely: subsequent values should line up nicely. + if prevline[len(prevline) - 1] == "," + \ && prevline =~# '^\s*where\s' + return indent(prevlinenum) + 6 + endif + + if prevline[len(prevline) - 1] == "," + \ && s:get_line_trimmed(a:lnum) !~ '^\s*[\[\]{}]' + \ && prevline !~ '^\s*fn\s' + \ && prevline !~ '([^()]\+,$' + \ && s:get_line_trimmed(a:lnum) !~ '^\s*\S\+\s*=>' + " Oh ho! The previous line ended in a comma! I bet cindent will try to + " take this too far... For now, let's normally use the previous line's + " indent. + + " One case where this doesn't work out is where *this* line contains + " square or curly brackets; then we normally *do* want to be indenting + " further. + " + " Another case where we don't want to is one like a function + " definition with arguments spread over multiple lines: + " + " fn foo(baz: Baz, + " baz: Baz) // <-- cindent gets this right by itself + " + " Another case is similar to the previous, except calling a function + " instead of defining it, or any conditional expression that leaves + " an open paren: + " + " foo(baz, + " baz); + " + " if baz && (foo || + " bar) { + " + " Another case is when the current line is a new match arm. + " + " There are probably other cases where we don't want to do this as + " well. Add them as needed. + return indent(prevlinenum) + endif + + if !has("patch-7.4.355") + " cindent before 7.4.355 doesn't do the module scope well at all; e.g.:: + " + " static FOO : &'static [bool] = [ + " true, + " false, + " false, + " true, + " ]; + " + " uh oh, next statement is indented further! + + " Note that this does *not* apply the line continuation pattern properly; + " that's too hard to do correctly for my liking at present, so I'll just + " start with these two main cases (square brackets and not returning to + " column zero) + + call cursor(a:lnum, 1) + if searchpair('{\|(', '', '}\|)', 'nbW', + \ 's:is_string_comment(line("."), col("."))') == 0 + if searchpair('\[', '', '\]', 'nbW', + \ 's:is_string_comment(line("."), col("."))') == 0 + " Global scope, should be zero + return 0 + else + " At the module scope, inside square brackets only + "if getline(a:lnum)[0] == ']' || search('\[', '', '\]', 'nW') == a:lnum + if line =~ "^\\s*]" + " It's the closing line, dedent it + return 0 + else + return &shiftwidth + endif + endif + endif + endif + + " Fall back on cindent, which does it mostly right + return cindent(a:lnum) +endfunction + +let &cpo = s:save_cpo +unlet s:save_cpo diff --git a/runtime/syntax/rust.vim b/runtime/syntax/rust.vim new file mode 100644 index 0000000000..57343301e0 --- /dev/null +++ b/runtime/syntax/rust.vim @@ -0,0 +1,295 @@ +" Vim syntax file +" Language: Rust +" Maintainer: Patrick Walton +" Maintainer: Ben Blum +" Maintainer: Chris Morgan +" Last Change: Feb 24, 2016 +" For bugs, patches and license go to https://github.com/rust-lang/rust.vim + +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" Syntax definitions {{{1 +" Basic keywords {{{2 +syn keyword rustConditional match if else +syn keyword rustRepeat for loop while +syn keyword rustTypedef type nextgroup=rustIdentifier skipwhite skipempty +syn keyword rustStructure struct enum nextgroup=rustIdentifier skipwhite skipempty +syn keyword rustUnion union nextgroup=rustIdentifier skipwhite skipempty contained +syn match rustUnionContextual /\/ + +syn keyword rustInvalidBareKeyword crate + +syn keyword rustPubScopeCrate crate contained +syn match rustPubScopeDelim /[()]/ contained +syn match rustPubScope /([^()]*)/ contained contains=rustPubScopeDelim,rustPubScopeCrate,rustSuper,rustModPath,rustModPathSep,rustSelf transparent + +syn keyword rustExternCrate crate contained nextgroup=rustIdentifier,rustExternCrateString skipwhite skipempty +" This is to get the `bar` part of `extern crate "foo" as bar;` highlighting. +syn match rustExternCrateString /".*"\_s*as/ contained nextgroup=rustIdentifier skipwhite transparent skipempty contains=rustString,rustOperator +syn keyword rustObsoleteExternMod mod contained nextgroup=rustIdentifier skipwhite skipempty + +syn match rustIdentifier contains=rustIdentifierPrime "\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" display contained +syn match rustFuncName "\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" display contained + +syn region rustBoxPlacement matchgroup=rustBoxPlacementParens start="(" end=")" contains=TOP contained +" Ideally we'd have syntax rules set up to match arbitrary expressions. Since +" we don't, we'll just define temporary contained rules to handle balancing +" delimiters. +syn region rustBoxPlacementBalance start="(" end=")" containedin=rustBoxPlacement transparent +syn region rustBoxPlacementBalance start="\[" end="\]" containedin=rustBoxPlacement transparent +" {} are handled by rustFoldBraces + +syn region rustMacroRepeat matchgroup=rustMacroRepeatDelimiters start="$(" end=")" contains=TOP nextgroup=rustMacroRepeatCount +syn match rustMacroRepeatCount ".\?[*+]" contained +syn match rustMacroVariable "$\w\+" + +" Reserved (but not yet used) keywords {{{2 +syn keyword rustReservedKeyword alignof become do offsetof priv pure sizeof typeof unsized yield abstract virtual final override macro + +" Built-in types {{{2 +syn keyword rustType isize usize char bool u8 u16 u32 u64 u128 f32 +syn keyword rustType f64 i8 i16 i32 i64 i128 str Self + +" Things from the libstd v1 prelude (src/libstd/prelude/v1.rs) {{{2 +" This section is just straight transformation of the contents of the prelude, +" to make it easy to update. + +" Reexported core operators {{{3 +syn keyword rustTrait Copy Send Sized Sync +syn keyword rustTrait Drop Fn FnMut FnOnce + +" Reexported functions {{{3 +" There’s no point in highlighting these; when one writes drop( or drop::< it +" gets the same highlighting anyway, and if someone writes `let drop = …;` we +" don’t really want *that* drop to be highlighted. +"syn keyword rustFunction drop + +" Reexported types and traits {{{3 +syn keyword rustTrait Box +syn keyword rustTrait ToOwned +syn keyword rustTrait Clone +syn keyword rustTrait PartialEq PartialOrd Eq Ord +syn keyword rustTrait AsRef AsMut Into From +syn keyword rustTrait Default +syn keyword rustTrait Iterator Extend IntoIterator +syn keyword rustTrait DoubleEndedIterator ExactSizeIterator +syn keyword rustEnum Option +syn keyword rustEnumVariant Some None +syn keyword rustEnum Result +syn keyword rustEnumVariant Ok Err +syn keyword rustTrait SliceConcatExt +syn keyword rustTrait String ToString +syn keyword rustTrait Vec + +" Other syntax {{{2 +syn keyword rustSelf self +syn keyword rustBoolean true false + +" If foo::bar changes to foo.bar, change this ("::" to "\."). +" If foo::bar changes to Foo::bar, change this (first "\w" to "\u"). +syn match rustModPath "\w\(\w\)*::[^<]"he=e-3,me=e-3 +syn match rustModPathSep "::" + +syn match rustFuncCall "\w\(\w\)*("he=e-1,me=e-1 +syn match rustFuncCall "\w\(\w\)*::<"he=e-3,me=e-3 " foo::(); + +" This is merely a convention; note also the use of [A-Z], restricting it to +" latin identifiers rather than the full Unicode uppercase. I have not used +" [:upper:] as it depends upon 'noignorecase' +"syn match rustCapsIdent display "[A-Z]\w\(\w\)*" + +syn match rustOperator display "\%(+\|-\|/\|*\|=\|\^\|&\||\|!\|>\|<\|%\)=\?" +" This one isn't *quite* right, as we could have binary-& with a reference +syn match rustSigil display /&\s\+[&~@*][^)= \t\r\n]/he=e-1,me=e-1 +syn match rustSigil display /[&~@*][^)= \t\r\n]/he=e-1,me=e-1 +" This isn't actually correct; a closure with no arguments can be `|| { }`. +" Last, because the & in && isn't a sigil +syn match rustOperator display "&&\|||" +" This is rustArrowCharacter rather than rustArrow for the sake of matchparen, +" so it skips the ->; see http://stackoverflow.com/a/30309949 for details. +syn match rustArrowCharacter display "->" +syn match rustQuestionMark display "?\([a-zA-Z]\+\)\@!" + +syn match rustMacro '\w\(\w\)*!' contains=rustAssert,rustPanic +syn match rustMacro '#\w\(\w\)*' contains=rustAssert,rustPanic + +syn match rustEscapeError display contained /\\./ +syn match rustEscape display contained /\\\([nrt0\\'"]\|x\x\{2}\)/ +syn match rustEscapeUnicode display contained /\\u{\x\{1,6}}/ +syn match rustStringContinuation display contained /\\\n\s*/ +syn region rustString start=+b"+ skip=+\\\\\|\\"+ end=+"+ contains=rustEscape,rustEscapeError,rustStringContinuation +syn region rustString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=rustEscape,rustEscapeUnicode,rustEscapeError,rustStringContinuation,@Spell +syn region rustString start='b\?r\z(#*\)"' end='"\z1' contains=@Spell + +syn region rustAttribute start="#!\?\[" end="\]" contains=rustString,rustDerive,rustCommentLine,rustCommentBlock,rustCommentLineDocError,rustCommentBlockDocError +syn region rustDerive start="derive(" end=")" contained contains=rustDeriveTrait +" This list comes from src/libsyntax/ext/deriving/mod.rs +" Some are deprecated (Encodable, Decodable) or to be removed after a new snapshot (Show). +syn keyword rustDeriveTrait contained Clone Hash RustcEncodable RustcDecodable Encodable Decodable PartialEq Eq PartialOrd Ord Rand Show Debug Default FromPrimitive Send Sync Copy + +" Number literals +syn match rustDecNumber display "\<[0-9][0-9_]*\%([iu]\%(size\|8\|16\|32\|64\|128\)\)\=" +syn match rustHexNumber display "\<0x[a-fA-F0-9_]\+\%([iu]\%(size\|8\|16\|32\|64\|128\)\)\=" +syn match rustOctNumber display "\<0o[0-7_]\+\%([iu]\%(size\|8\|16\|32\|64\|128\)\)\=" +syn match rustBinNumber display "\<0b[01_]\+\%([iu]\%(size\|8\|16\|32\|64\|128\)\)\=" + +" Special case for numbers of the form "1." which are float literals, unless followed by +" an identifier, which makes them integer literals with a method call or field access, +" or by another ".", which makes them integer literals followed by the ".." token. +" (This must go first so the others take precedence.) +syn match rustFloat display "\<[0-9][0-9_]*\.\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\|\.\)\@!" +" To mark a number as a normal float, it must have at least one of the three things integral values don't have: +" a decimal point and more numbers; an exponent; and a type suffix. +syn match rustFloat display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\%([eE][+-]\=[0-9_]\+\)\=\(f32\|f64\)\=" +syn match rustFloat display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\=\%([eE][+-]\=[0-9_]\+\)\(f32\|f64\)\=" +syn match rustFloat display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\=\%([eE][+-]\=[0-9_]\+\)\=\(f32\|f64\)" + +" For the benefit of delimitMate +syn region rustLifetimeCandidate display start=/&'\%(\([^'\\]\|\\\(['nrt0\\\"]\|x\x\{2}\|u{\x\{1,6}}\)\)'\)\@!/ end=/[[:cntrl:][:space:][:punct:]]\@=\|$/ contains=rustSigil,rustLifetime +syn region rustGenericRegion display start=/<\%('\|[^[cntrl:][:space:][:punct:]]\)\@=')\S\@=/ end=/>/ contains=rustGenericLifetimeCandidate +syn region rustGenericLifetimeCandidate display start=/\%(<\|,\s*\)\@<='/ end=/[[:cntrl:][:space:][:punct:]]\@=\|$/ contains=rustSigil,rustLifetime + +"rustLifetime must appear before rustCharacter, or chars will get the lifetime highlighting +syn match rustLifetime display "\'\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" +syn match rustLabel display "\'\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*:" +syn match rustCharacterInvalid display contained /b\?'\zs[\n\r\t']\ze'/ +" The groups negated here add up to 0-255 but nothing else (they do not seem to go beyond ASCII). +syn match rustCharacterInvalidUnicode display contained /b'\zs[^[:cntrl:][:graph:][:alnum:][:space:]]\ze'/ +syn match rustCharacter /b'\([^\\]\|\\\(.\|x\x\{2}\)\)'/ contains=rustEscape,rustEscapeError,rustCharacterInvalid,rustCharacterInvalidUnicode +syn match rustCharacter /'\([^\\]\|\\\(.\|x\x\{2}\|u{\x\{1,6}}\)\)'/ contains=rustEscape,rustEscapeUnicode,rustEscapeError,rustCharacterInvalid + +syn match rustShebang /\%^#![^[].*/ +syn region rustCommentLine start="//" end="$" contains=rustTodo,@Spell +syn region rustCommentLineDoc start="//\%(//\@!\|!\)" end="$" contains=rustTodo,@Spell +syn region rustCommentLineDocError start="//\%(//\@!\|!\)" end="$" contains=rustTodo,@Spell contained +syn region rustCommentBlock matchgroup=rustCommentBlock start="/\*\%(!\|\*[*/]\@!\)\@!" end="\*/" contains=rustTodo,rustCommentBlockNest,@Spell +syn region rustCommentBlockDoc matchgroup=rustCommentBlockDoc start="/\*\%(!\|\*[*/]\@!\)" end="\*/" contains=rustTodo,rustCommentBlockDocNest,@Spell +syn region rustCommentBlockDocError matchgroup=rustCommentBlockDocError start="/\*\%(!\|\*[*/]\@!\)" end="\*/" contains=rustTodo,rustCommentBlockDocNestError,@Spell contained +syn region rustCommentBlockNest matchgroup=rustCommentBlock start="/\*" end="\*/" contains=rustTodo,rustCommentBlockNest,@Spell contained transparent +syn region rustCommentBlockDocNest matchgroup=rustCommentBlockDoc start="/\*" end="\*/" contains=rustTodo,rustCommentBlockDocNest,@Spell contained transparent +syn region rustCommentBlockDocNestError matchgroup=rustCommentBlockDocError start="/\*" end="\*/" contains=rustTodo,rustCommentBlockDocNestError,@Spell contained transparent +" FIXME: this is a really ugly and not fully correct implementation. Most +" importantly, a case like ``/* */*`` should have the final ``*`` not being in +" a comment, but in practice at present it leaves comments open two levels +" deep. But as long as you stay away from that particular case, I *believe* +" the highlighting is correct. Due to the way Vim's syntax engine works +" (greedy for start matches, unlike Rust's tokeniser which is searching for +" the earliest-starting match, start or end), I believe this cannot be solved. +" Oh you who would fix it, don't bother with things like duplicating the Block +" rules and putting ``\*\@ Date: Tue, 7 Nov 2017 01:05:23 +0100 Subject: [PATCH 11/76] vim-patch:e0720cbf63eb Update runtime files. https://github.com/vim/vim/commit/e0720cbf63eb3045be8d965e3182c0c392c7b5e9 --- runtime/doc/filetype.txt | 4 +- runtime/doc/ft_rust.txt | 2 +- runtime/doc/message.txt | 7 + runtime/doc/usr_41.txt | 4 +- runtime/filetype.vim | 5 +- runtime/indent/php.vim | 73 ++++-- runtime/plugin/matchit.vim | 24 +- runtime/syntax/sas.vim | 482 ++++++++++++++++++------------------- 8 files changed, 324 insertions(+), 277 deletions(-) diff --git a/runtime/doc/filetype.txt b/runtime/doc/filetype.txt index ed223e57db..377864b128 100644 --- a/runtime/doc/filetype.txt +++ b/runtime/doc/filetype.txt @@ -309,12 +309,12 @@ define yourself. There are a few ways to avoid this: You need to define your own mapping before the plugin is loaded (before editing a file of that type). The plugin will then skip installing the default mapping. - + *no_mail_maps* 3. Disable defining mappings for a specific filetype by setting a variable, which contains the name of the filetype. For the "mail" filetype this would be: > :let no_mail_maps = 1 - +< *no_plugin_maps* 4. Disable defining mappings for all filetypes by setting a variable: > :let no_plugin_maps = 1 < diff --git a/runtime/doc/ft_rust.txt b/runtime/doc/ft_rust.txt index b6e974e371..c2e21e40bb 100644 --- a/runtime/doc/ft_rust.txt +++ b/runtime/doc/ft_rust.txt @@ -1,7 +1,7 @@ *ft_rust.txt* Filetype plugin for Rust ============================================================================== -CONTENTS *rust* *ft-rust* +CONTENTS *rust* 1. Introduction |rust-intro| 2. Settings |rust-settings| diff --git a/runtime/doc/message.txt b/runtime/doc/message.txt index 904b9dfce4..c381b07330 100644 --- a/runtime/doc/message.txt +++ b/runtime/doc/message.txt @@ -744,6 +744,13 @@ a user-defined command. You tried to set an option after startup that only allows changes during startup. + *E943* > + Command table needs to be updated, run 'make cmdidxs' + +This can only happen when changing the source code, when adding a command in +src/ex_cmds.h. The lookup table then needs to be updated, by running: > + make cmdidxs + ============================================================================== 3. Messages *messages* diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt index 0f4e2767ab..be88a35369 100644 --- a/runtime/doc/usr_41.txt +++ b/runtime/doc/usr_41.txt @@ -2227,8 +2227,8 @@ plugin for the mail filetype: > endif Two global variables are used: -no_plugin_maps disables mappings for all filetype plugins -no_mail_maps disables mappings for a specific filetype +|no_plugin_maps| disables mappings for all filetype plugins +|no_mail_maps| disables mappings for the "mail" filetype USER COMMANDS diff --git a/runtime/filetype.vim b/runtime/filetype.vim index 79fbcbca00..6de4f2fbb8 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -1,7 +1,7 @@ " Vim support file to detect file types " " Maintainer: Bram Moolenaar -" Last Change: 2017 Mar 13 +" Last Change: 2017 Mar 27 " Listen very carefully, I will say this only once if exists("did_load_filetypes") @@ -284,7 +284,8 @@ au BufNewFile,BufRead *.bib setf bib au BufNewFile,BufRead *.bst setf bst " BIND configuration -au BufNewFile,BufRead named.conf,rndc.conf setf named +" sudoedit uses namedXXXX.conf +au BufNewFile,BufRead named*.conf,rndc*.conf setf named " BIND zone au BufNewFile,BufRead named.root setf bindzone diff --git a/runtime/indent/php.vim b/runtime/indent/php.vim index 07ecd8f141..06b49f3cb6 100644 --- a/runtime/indent/php.vim +++ b/runtime/indent/php.vim @@ -3,8 +3,8 @@ " Author: John Wellesz " URL: http://www.2072productions.com/vim/indent/php.vim " Home: https://github.com/2072/PHP-Indenting-for-VIm -" Last Change: 2015 September 8th -" Version: 1.60 +" Last Change: 2017 March 12th +" Version: 1.62 " " " Type :help php-indent for available options @@ -141,11 +141,13 @@ let s:PHP_validVariable = '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*' let s:notPhpHereDoc = '\%(break\|return\|continue\|exit\|die\|else\)' let s:blockstart = '\%(\%(\%(}\s*\)\=else\%(\s\+\)\=\)\=if\>\|\%(}\s*\)\?else\>\|do\>\|while\>\|switch\>\|case\>\|default\>\|for\%(each\)\=\>\|declare\>\|class\>\|trait\>\|use\>\|interface\>\|abstract\>\|final\>\|try\>\|\%(}\s*\)\=catch\>\|\%(}\s*\)\=finally\>\)' let s:functionDecl = '\\%(\s\+'.s:PHP_validVariable.'\)\=\s*(.*' -let s:endline= '\s*\%(//.*\|#.*\|/\*.*\*/\s*\)\=$' +let s:endline = '\s*\%(//.*\|#.*\|/\*.*\*/\s*\)\=$' +let s:unstated = '\%(^\s*'.s:blockstart.'.*)\|\%(//.*\)\@\)'.s:endline -let s:terminated = '\%(\%(;\%(\s*\%(?>\|}\)\)\=\|<<<\s*[''"]\=\a\w*[''"]\=$\|^\s*}\|^\s*'.s:PHP_validVariable.':\)'.s:endline.'\)\|^[^''"`]*[''"`]$' +let s:terminated = '\%(\%(;\%(\s*\%(?>\|}\)\)\=\|<<<\s*[''"]\=\a\w*[''"]\=$\|^\s*}\|^\s*'.s:PHP_validVariable.':\)'.s:endline.'\)' let s:PHP_startindenttag = '\)\@!\|]*>\%(.*<\/script>\)\@!' +let s:structureHead = '^\s*\%(' . s:blockstart . '\)\|'. s:functionDecl . s:endline . '\|\' @@ -214,10 +216,28 @@ function! GetLastRealCodeLNum(startline) " {{{ let lnum = lnum - 1 endwhile elseif lastline =~ '^[^''"`]*[''"`][;,]'.s:endline - let tofind=substitute( lastline, '^.*\([''"`]\)[;,].*$', '^[^\1]\\+[\1]$', '') - while getline(lnum) !~? tofind && lnum > 1 - let lnum = lnum - 1 + + let tofind=substitute( lastline, '^.*\([''"`]\)[;,].*$', '^[^\1]\\+[\1]$\\|^[^\1]\\+[=([]\\s*[\1]', '') + let trylnum = lnum + while getline(trylnum) !~? tofind && trylnum > 1 + let trylnum = trylnum - 1 endwhile + + if trylnum == 1 + break + else + if lastline =~ ';'.s:endline + while getline(trylnum) !~? s:terminated && getline(trylnum) !~? '{'.s:endline && trylnum > 1 + let trylnum = prevnonblank(trylnum - 1) + endwhile + + + if trylnum == 1 + break + end + end + let lnum = trylnum + end else break endif @@ -262,7 +282,7 @@ function! FindOpenBracket(lnum, blockStarter) " {{{ while line > 1 let linec = getline(line) - if linec =~ s:terminated || linec =~ '^\s*\%(' . s:blockstart . '\)\|'. s:functionDecl . s:endline + if linec =~ s:terminated || linec =~ s:structureHead break endif @@ -273,6 +293,20 @@ function! FindOpenBracket(lnum, blockStarter) " {{{ return line endfun " }}} +let s:blockChars = {'{':1, '[': 1, '(': 1, ')':-1, ']':-1, '}':-1} +function! BalanceDirection (str) + + let balance = 0 + + for c in split(a:str, '\zs') + if has_key(s:blockChars, c) + let balance += s:blockChars[c] + endif + endfor + + return balance +endfun + function! FindTheIfOfAnElse (lnum, StopAfterFirstPrevElse) " {{{ if getline(a:lnum) =~# '^\s*}\s*else\%(if\)\=\>' @@ -457,7 +491,7 @@ function! GetPhpIndent() if synname!="" if synname == "SpecStringEntrails" - let b:InPHPcode = -1 + let b:InPHPcode = -1 " thumb down let b:InPHPcode_tofind = "" elseif synname != "phpHereDoc" && synname != "phpHereDocDelimiter" let b:InPHPcode = 1 @@ -540,7 +574,7 @@ function! GetPhpIndent() let b:InPHPcode_and_script = 1 endif - elseif last_line =~ '^[^''"`]\+[''"`]$' + elseif last_line =~ '^[^''"`]\+[''"`]$' " a string identifier with nothing after it and no other string identifier before let b:InPHPcode = -1 let b:InPHPcode_tofind = substitute( last_line, '^.*\([''"`]\).*$', '^[^\1]*\1[;,]$', '') elseif last_line =~? '<<<\s*[''"]\=\a\w*[''"]\=$' @@ -660,7 +694,8 @@ function! GetPhpIndent() let terminated = s:terminated - let unstated = '\%(^\s*'.s:blockstart.'.*)\|\%(//.*\)\@\)'.endline + let unstated = s:unstated + if ind != b:PHP_default_indenting && cline =~# '^\s*else\%(if\)\=\>' let b:PHP_CurrentIndentLevel = b:PHP_default_indenting @@ -673,7 +708,7 @@ function! GetPhpIndent() while last_line_num > 1 - if previous_line =~ terminated || previous_line =~ '^\s*\%(' . s:blockstart . '\)\|'. s:functionDecl . endline + if previous_line =~ terminated || previous_line =~ s:structureHead let ind = indent(last_line_num) @@ -689,7 +724,7 @@ function! GetPhpIndent() endwhile elseif last_line =~# unstated && cline !~ '^\s*);\='.endline - let ind = ind + s:sw() + let ind = ind + s:sw() " we indent one level further when the preceding line is not stated return ind + addSpecial elseif (ind != b:PHP_default_indenting || last_line =~ '^[)\]]' ) && last_line =~ terminated @@ -699,7 +734,7 @@ function! GetPhpIndent() let isSingleLineBlock = 0 while 1 - if ! isSingleLineBlock && previous_line =~ '^\s*}\|;\s*}'.endline + if ! isSingleLineBlock && previous_line =~ '^\s*}\|;\s*}'.endline " XXX call cursor(last_line_num, 1) if previous_line !~ '^}' @@ -780,10 +815,10 @@ function! GetPhpIndent() if !LastLineClosed - if last_line =~# '[{(\[]'.endline || last_line =~? '\h\w*\s*(.*,$' && AntepenultimateLine !~ '[,(\[]'.endline + if last_line =~# '[{(\[]'.endline || last_line =~? '\h\w*\s*(.*,$' && AntepenultimateLine !~ '[,(\[]'.endline && BalanceDirection(last_line) > 0 let dontIndent = 0 - if last_line =~ '\S\+\s*{'.endline && last_line !~ '^\s*)\s*{'.endline && last_line !~ '^\s*\%(' . s:blockstart . '\)\|'. s:functionDecl . s:endline + if last_line =~ '\S\+\s*{'.endline && last_line !~ '^\s*[)\]]\+\s*{'.endline && last_line !~ s:structureHead let dontIndent = 1 endif @@ -797,9 +832,9 @@ function! GetPhpIndent() return ind + addSpecial endif - elseif last_line =~ '\S\+\s*),'.endline + elseif last_line =~ '\S\+\s*),'.endline && BalanceDirection(last_line) < 0 call cursor(lnum, 1) - call search('),'.endline, 'W') + call search('),'.endline, 'W') " line never begins with ) so no need for 'c' flag let openedparent = searchpair('(', '', ')', 'bW', 'Skippmatch()') if openedparent != lnum let ind = indent(openedparent) @@ -809,7 +844,7 @@ function! GetPhpIndent() let ind = ind + s:sw() - elseif AntepenultimateLine =~ '{'.endline || AntepenultimateLine =~ terminated || AntepenultimateLine =~# s:defaultORcase + elseif AntepenultimateLine =~ '{'.endline && AntepenultimateLine !~? '^\s*use\>' || AntepenultimateLine =~ terminated || AntepenultimateLine =~# s:defaultORcase let ind = ind + s:sw() endif diff --git a/runtime/plugin/matchit.vim b/runtime/plugin/matchit.vim index f275f7b36d..a73b063766 100644 --- a/runtime/plugin/matchit.vim +++ b/runtime/plugin/matchit.vim @@ -1,7 +1,7 @@ " matchit.vim: (global plugin) Extended "%" matching -" Last Change: 2016 Aug 21 +" Last Change: 2017 March 26 " Maintainer: Benji Fisher PhD -" Version: 1.13.2, for Vim 6.3+ +" Version: 1.13.3, for Vim 6.3+ " Fix from Tommy Allen included. " Fix from Fernando Torres included. " Improvement from Ken Takata included. @@ -90,12 +90,15 @@ let s:notslash = '\\\@ -" Last Change: 2012 Apr 20 -" Corrected bug causing some keywords to appear as strings instead -" 18 Jul 2008 by Paulo Tanimoto -" Fixed comments with * taking multiple lines. -" Fixed highlighting of macro keywords. -" Added words to cases that didn't fit anywhere. -" 02 Jun 2003 -" Added highlighting for additional keywords and such; -" Attempted to match SAS default syntax colors; -" Changed syncing so it doesn't lose colors on large blocks; -" Much thanks to Bob Heckel for knowledgeable tweaking. -" quit when a syntax file was already loaded -if exists("b:current_syntax") - finish +" Language: SAS +" Maintainer: Zhen-Huan Hu +" Original Maintainer: James Kidd +" Version: 3.0.0 +" Last Change: Mar 10, 2017 +" +" 2017 Mar 7 +" +" Upgrade version number to 3.0. Improvements include: +" - Improve sync speed +" - Largely enhance precision +" - Update keywords in the latest SAS (as of Mar 2017) +" - Add syntaxes for date/time constants +" - Add syntax for data lines +" - Add (back) syntax for TODO in comments +" +" 2017 Feb 9 +" +" Add syntax folding +" +" 2016 Oct 10 +" +" Add highlighting for functions +" +" 2016 Sep 14 +" +" Change the implementation of syntaxing +" macro function names so that macro parameters same +" as SAS keywords won't be highlighted +" (Thank Joug Raw for the suggestion) +" Add section highlighting: +" - Use /** and **/ to define a section +" - It functions the same as a comment but +" with different highlighting +" +" 2016 Jun 14 +" +" Major changes so upgrade version number to 2.0 +" Overhaul the entire script (again). Improvements include: +" - Higher precision +" - Faster synchronization +" - Separate color for control statements +" - Highlight hash and java objects +" - Highlight macro variables in double quoted strings +" - Update all syntaxes based on SAS 9.4 +" - Add complete SAS/GRAPH and SAS/STAT procedure syntaxes +" - Add Proc TEMPLATE and GTL syntaxes +" - Add complete DS2 syntaxes +" - Add basic IML syntaxes +" - Many other improvements and bug fixes +" Drop support for VIM version < 600 + +if version < 600 + syntax clear +elseif exists('b:current_syntax') + finish endif +let s:cpo_save = &cpo +set cpo&vim + syn case ignore -syn region sasString start=+"+ skip=+\\\\\|\\"+ end=+"+ -syn region sasString start=+'+ skip=+\\\\\|\\"+ end=+'+ +" Basic SAS syntaxes +syn keyword sasOperator and eq ge gt in le lt ne not of or +syn keyword sasReserved _all_ _automatic_ _char_ _character_ _data_ _infile_ _last_ _n_ _name_ _null_ _num_ _numeric_ _temporary_ _user_ _webout_ +" Strings +syn region sasString start=+'+ skip=+''+ end=+'+ contains=@Spell +syn region sasString start=+"+ skip=+""+ end=+"+ contains=sasMacroVariable,@Spell +" Constants +syn match sasNumber /\v<\d+%(\.\d+)=%(>|e[\-+]=\d+>)/ display +syn match sasDateTime /\v(['"])\d{2}%(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\d{2}%(\d{2})=:\d{2}:\d{2}%(:\d{2})=%(am|pm)\1dt>/ display +syn match sasDateTime /\v(['"])\d{2}%(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\d{2}%(\d{2})=\1d>/ display +syn match sasDateTime /\v(['"])\d{2}:\d{2}%(:\d{2})=%(am|pm)\1t>/ display +" Comments +syn keyword sasTodo todo tbd fixme contained +syn region sasComment start='/\*' end='\*/' contains=sasTodo +syn region sasComment start='\v%(^|;)\s*\zs\%=\*' end=';'me=s-1 contains=sasTodo +syn region sasSectLbl matchgroup=sasSectLblEnds start='/\*\*\s*' end='\s*\*\*/' concealends +" Macros +syn match sasMacroVariable '\v\&+\w+%(\.\w+)=' display +syn match sasMacroReserved '\v\%%(abort|by|copy|display|do|else|end|global|goto|if|include|input|let|list|local|macro|mend|put|return|run|symdel|syscall|sysexec|syslput|sysrput|then|to|until|window|while)>' display +syn region sasMacroFunction matchgroup=sasMacroFunctionName start='\v\%\w+\ze\(' end=')'he=s-1 contains=@sasBasicSyntax,sasMacroFunction +syn region sasMacroFunction matchgroup=sasMacroFunctionName start='\v\%q=sysfunc\ze\(' end=')'he=s-1 contains=@sasBasicSyntax,sasMacroFunction,sasDataStepFunction +" Syntax cluster for basic SAS syntaxes +syn cluster sasBasicSyntax contains=sasOperator,sasReserved,sasNumber,sasDateTime,sasString,sasComment,sasMacroReserved,sasMacroFunction,sasMacroVariable,sasSectLbl -" Want region from 'cards;' to ';' to be captured (Bob Heckel) -syn region sasCards start="^\s*CARDS.*" end="^\s*;\s*$" -syn region sasCards start="^\s*DATALINES.*" end="^\s*;\s*$" +" Formats +syn match sasFormat '\v\$\w+\.' display contained +syn match sasFormat '\v<\w+\.%(\d+>)=' display contained +syn region sasFormatContext start='.' end=';'me=s-1 contained contains=@sasBasicSyntax,sasFormat -syn match sasNumber "-\=\<\d*\.\=[0-9_]\>" +" Define global statements that can be accessed out of data step or procedures +syn keyword sasGlobalStatementKeyword catname dm endsas filename footnote footnote1 footnote2 footnote3 footnote4 footnote5 footnote6 footnote7 footnote8 footnote9 footnote10 missing libname lock ods options page quit resetline run sasfile skip sysecho title title1 title2 title3 title4 title5 title6 title7 title8 title9 title10 contained +syn keyword sasGlobalStatementODSKeyword chtml csvall docbook document escapechar epub epub2 epub3 exclude excel graphics html html3 html5 htmlcss imode listing markup output package path pcl pdf preferences phtml powerpoint printer proclabel proctitle ps results rtf select show tagsets trace usegopt verify wml contained +syn match sasGlobalStatement '\v%(^|;)\s*\zs\h\w*>' display transparent contains=sasGlobalStatementKeyword +syn match sasGlobalStatement '\v%(^|;)\s*\zsods>' display transparent contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty -" Block comment -syn region sasComment start="/\*" end="\*/" contains=sasTodo +" Data step statements, 9.4 +syn keyword sasDataStepFunctionName abs addr addrlong airy allcomb allperm anyalnum anyalpha anycntrl anydigit anyfirst anygraph anylower anyname anyprint anypunct anyspace anyupper anyxdigit arcos arcosh arsin arsinh artanh atan atan2 attrc attrn band beta betainv blackclprc blackptprc blkshclprc blkshptprc blshift bnot bor brshift bxor byte cat catq cats catt catx cdf ceil ceilz cexist char choosec choosen cinv close cmiss cnonct coalesce coalescec collate comb compare compbl compfuzz compged complev compound compress constant convx convxp cos cosh cot count countc countw csc css cumipmt cumprinc curobs cv daccdb daccdbsl daccsl daccsyd dacctab dairy datdif date datejul datepart datetime day dclose dcreate depdb depdbsl depsl depsyd deptab dequote deviance dhms dif digamma dim dinfo divide dnum dopen doptname doptnum dosubl dread dropnote dsname dsncatlgd dur durp effrate envlen erf erfc euclid exist exp fact fappend fclose fcol fcopy fdelete fetch fetchobs fexist fget fileexist filename fileref finance find findc findw finfo finv fipname fipnamel fipstate first floor floorz fmtinfo fnonct fnote fopen foptname foptnum fpoint fpos fput fread frewind frlen fsep fuzz fwrite gaminv gamma garkhclprc garkhptprc gcd geodist geomean geomeanz getoption getvarc getvarn graycode harmean harmeanz hbound hms holiday holidayck holidaycount holidayname holidaynx holidayny holidaytest hour htmldecode htmlencode ibessel ifc ifn index indexc indexw input inputc inputn int intcindex intck intcycle intfit intfmt intget intindex intnx intrr intseas intshift inttest intz iorcmsg ipmt iqr irr jbessel juldate juldate7 kurtosis lag largest lbound lcm lcomb left length lengthc lengthm lengthn lexcomb lexcombi lexperk lexperm lfact lgamma libname libref log log1px log10 log2 logbeta logcdf logistic logpdf logsdf lowcase lperm lpnorm mad margrclprc margrptprc max md5 mdy mean median min minute missing mod modexist module modulec modulen modz month mopen mort msplint mvalid contained +syn keyword sasDataStepFunctionName n netpv nliteral nmiss nomrate normal notalnum notalpha notcntrl notdigit note notfirst notgraph notlower notname notprint notpunct notspace notupper notxdigit npv nvalid nwkdom open ordinal pathname pctl pdf peek peekc peekclong peeklong perm pmt point poisson ppmt probbeta probbnml probbnrm probchi probf probgam probhypr probit probmc probnegb probnorm probt propcase prxchange prxmatch prxparen prxparse prxposn ptrlongadd put putc putn pvp qtr quantile quote ranbin rancau rand ranexp rangam range rank rannor ranpoi rantbl rantri ranuni rename repeat resolve reverse rewind right rms round rounde roundz saving savings scan sdf sec second sha256 sha256hex sha256hmachex sign sin sinh skewness sleep smallest soapweb soapwebmeta soapwipservice soapwipsrs soapws soapwsmeta soundex spedis sqrt squantile std stderr stfips stname stnamel strip subpad substr substrn sum sumabs symexist symget symglobl symlocal sysexist sysget sysmsg sysparm sysprocessid sysprocessname sysprod sysrc system tan tanh time timepart timevalue tinv tnonct today translate transtrn tranwrd trigamma trim trimn trunc tso typeof tzoneid tzonename tzoneoff tzones2u tzoneu2s uniform upcase urldecode urlencode uss uuidgen var varfmt varinfmt varlabel varlen varname varnum varray varrayx vartype verify vformat vformatd vformatdx vformatn vformatnx vformatw vformatwx vformatx vinarray vinarrayx vinformat vinformatd vinformatdx vinformatn vinformatnx vinformatw vinformatwx vinformatx vlabel vlabelx vlength vlengthx vname vnamex vtype vtypex vvalue vvaluex week weekday whichc whichn wto year yieldp yrdif yyq zipcity zipcitydistance zipfips zipname zipnamel zipstate contained +syn keyword sasDataStepCallRoutineName allcomb allcombi allperm cats catt catx compcost execute graycode is8601_convert label lexcomb lexcombi lexperk lexperm logistic missing module poke pokelong prxchange prxdebug prxfree prxnext prxposn prxsubstr ranbin rancau rancomb ranexp rangam rannor ranperk ranperm ranpoi rantbl rantri ranuni scan set sleep softmax sortc sortn stdize streaminit symput symputx system tanh tso vname vnext wto contained +syn region sasDataStepFunctionContext start='(' end=')' contained contains=@sasBasicSyntax,sasDataStepFunction +syn region sasDataStepFunctionFormatContext start='(' end=')' contained contains=@sasBasicSyntax,sasDataStepFunction,sasFormat +syn match sasDataStepFunction '\v<\w+\ze\(' contained contains=sasDataStepFunctionName,sasDataStepCallRoutineName nextgroup=sasDataStepFunctionContext +syn match sasDataStepFunction '\v%(input|put)\ze\(' contained contains=sasDataStepFunctionName nextgroup=sasDataStepFunctionFormatContext +syn keyword sasDataStepHashMethodName add check clear definedata definedone definekey delete do_over equals find find_next find_prev first has_next has_prev last next output prev ref remove removedup replace replacedup reset_dup setcur sum sumdup contained +syn region sasDataStepHashMethodContext start='(' end=')' contained contains=@sasBasicSyntax,sasDataStepFunction +syn match sasDataStepHashMethod '\v\.\w+\ze\(' contained contains=sasDataStepHashMethodName nextgroup=sasDataStepHashMethodContext +syn keyword sasDataStepHashAttributeName item_size num_items contained +syn match sasDataStepHashAttribute '\v\.\w+>\ze\_[^(]' display contained contains=sasDataStepHashAttributeName +syn keyword sasDataStepControl continue do end go goto if leave link otherwise over return select to until when while contained +syn keyword sasDataStepControl else then contained nextgroup=sasDataStepStatementKeyword skipwhite skipnl skipempty +syn keyword sasDataStepHashOperator _new_ contained +syn keyword sasDataStepStatementKeyword abort array attrib by call cards cards4 datalines datalines4 dcl declare delete describe display drop error execute file format infile informat input keep label length lines lines4 list lostcard merge modify output put putlog redirect remove rename replace retain set stop update where window contained +syn keyword sasDataStepStatementHashKeyword hash hiter javaobj contained +syn match sasDataStepStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasDataStepStatementKeyword,sasGlobalStatementKeyword +syn match sasDataStepStatement '\v%(^|;)\s*\zs%(dcl|declare)>' display contained contains=sasDataStepStatementKeyword nextgroup=sasDataStepStatementHashKeyword skipwhite skipnl skipempty +syn match sasDataStepStatement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty +syn match sasDataStepStatement '\v%(^|;)\s*\zs%(format|informat|input|put)>' display contained contains=sasDataStepStatementKeyword nextgroup=sasFormatContext skipwhite skipnl skipempty +syn match sasDataStepStatement '\v%(^|;)\s*\zs%(cards|datalines|lines)4=\s*;' display contained contains=sasDataStepStatementKeyword nextgroup=sasDataLine skipwhite skipnl skipempty +syn region sasDataLine start='^' end='^;'me=s-1 contained +syn region sasDataStep matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsdata>' end='\v%(^|;)\s*%(run|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,@sasDataStepSyntax +syn cluster sasDataStepSyntax contains=sasDataStepFunction,sasDataStepHashOperator,sasDataStepHashAttribute,sasDataStepHashMethod,sasDataStepControl,sasDataStepStatement -" Ignore misleading //JCL SYNTAX... (Bob Heckel) -syn region sasComment start="[^/][^/]/\*" end="\*/" contains=sasTodo +" Procedures, base SAS, 9.4 +syn keyword sasProcStatementKeyword abort age append array attrib audit block break by calid cdfplot change checkbox class classlev column compute contents copy create datarow dbencoding define delete deletefunc deletesubr delimiter device dialog dur endcomp exact exchange exclude explore fin fmtlib fontfile fontpath format formats freq function getnames guessingrows hbar hdfs histogram holidur holifin holistart holivar id idlabel informat inset invalue item key keylabel keyword label line link listfunc listsubr mapmiss mapreduce mean menu messages meta modify opentype outargs outdur outfin output outstart pageby partial picture pie pig plot ppplot printer probplot profile prompter qqplot radiobox ranks rbreak rbutton rebuild record remove rename repair report roptions save select selection separator source star start statistics struct submenu subroutine sum sumby table tables test text trantab truetype type1 types value var vbar ways weight where with write contained +syn match sasProcStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasProcStatementKeyword,sasGlobalStatementKeyword +syn match sasProcStatement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty +syn match sasProcStatement '\v%(^|;)\s*\zs%(format|informat)>' display contained contains=sasProcStatementKeyword nextgroup=sasFormatContext skipwhite skipnl skipempty +syn region sasProc matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc%(\s+\h\w*)=>' end='\v%(^|;)\s*%(run|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDataStepFunction,sasProcStatement +syn region sasProc matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+%(catalog|chart|datasets|document|plot)>' end='\v%(^|;)\s*%(quit|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDataStepFunction,sasProcStatement -" Previous code for comments was written by Bob Heckel -" Comments with * may take multiple lines (Paulo Tanimoto) -syn region sasComment start=";\s*\*"hs=s+1 end=";" contains=sasTodo +" Procedures, SAS/GRAPH, 9.4 +syn keyword sasGraphProcStatementKeyword add area axis bar block bubble2 byline cc ccopy cdef cdelete chart cmap choro copy delete device dial donut exclude flow format fs goptions gout grid group hbar hbar3d hbullet hslider htrafficlight id igout label legend list modify move nobyline note pattern pie pie3d plot plot2 preview prism quit rename replay select scatter speedometer star surface symbol tc tcopy tdef tdelete template tile toggle treplay vbar vbar3d vtrafficlight vbullet vslider where contained +syn match sasGraphProcStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasGraphProcStatementKeyword,sasGlobalStatementKeyword +syn match sasGraphProcStatement '\v%(^|;)\s*\zsformat>' display contained contains=sasGraphProcStatementKeyword nextgroup=sasFormatContext skipwhite skipnl skipempty +syn region sasGraphProc matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+%(g3d|g3grid|ganno|gcontour|gdevice|geocode|gfont|ginside|goptions|gproject|greduce|gremove|mapimport)>' end='\v%(^|;)\s*%(run|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDataStepFunction,sasGraphProcStatement +syn region sasGraphProc matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+%(gareabar|gbarline|gchart|gkpi|gmap|gplot|gradar|greplay|gslide|gtile)>' end='\v%(^|;)\s*%(quit|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDataStepFunction,sasGraphProcStatement -" Comments with * starting after a semicolon (Paulo Tanimoto) -syn region sasComment start="^\s*\*" end=";" contains=sasTodo +" Procedures, SAS/STAT, 14.1 +syn keyword sasAnalyticalProcStatementKeyword absorb add array assess baseline bayes beginnodata bivar bootstrap bounds by cdfplot cells class cluster code compute condition contrast control coordinates copy cosan cov covtest coxreg der design determ deviance direct directions domain effect effectplot effpart em endnodata equality estimate exact exactoptions factor factors fcs filter fitindex format freq fwdlink gender grid group grow hazardratio height hyperprior id impjoint inset insetgroup invar invlink ippplot lincon lineqs lismod lmtests location logistic loglin lpredplot lsmeans lsmestimate manova matings matrix mcmc mean means missmodel mnar model modelaverage modeleffects monotone mstruct mtest multreg name nlincon nloptions oddsratio onecorr onesamplefreq onesamplemeans onewayanova outfiles output paired pairedfreq pairedmeans parameters parent parms partial partition path pathdiagram pcov performance plot population poststrata power preddist predict predpplot priors process probmodel profile prune pvar ram random ratio reference refit refmodel renameparm repeated replicate repweights response restore restrict retain reweight ridge rmsstd roc roccontrast rules samplesize samplingunit seed size scale score selection show simtests simulate slice std stderr store strata structeq supplementary table tables test testclass testfreq testfunc testid time transform treatments trend twosamplefreq twosamplemeans towsamplesurvival twosamplewilcoxon uds units univar var variance varnames weight where with zeromodel contained +syn match sasAnalyticalProcStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasAnalyticalProcStatementKeyword,sasGlobalStatementKeyword +syn match sasAnalyticalProcStatement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty +syn match sasAnalyticalProcStatement '\v%(^|;)\s*\zsformat>' display contained contains=sasAnalyticalProcStatementKeyword nextgroup=sasFormatContext skipwhite skipnl skipempty +syn region sasAnalyticalProc matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+%(aceclus|adaptivereg|bchoice|boxplot|calis|cancorr|candisc|cluster|corresp|discrim|distance|factor|fastclus|fmm|freq|gam|gampl|gee|genmod|glimmix|glmmod|glmpower|glmselect|hpcandisc|hpfmm|hpgenselect|hplmixed|hplogistic|hpmixed|hpnlmod|hppls|hpprincomp|hpquantselect|hpreg|hpsplit|iclifetest|icphreg|inbreed|irt|kde|krige2d|lattice|lifereg|lifetest|loess|logistic|mcmc|mds|mi|mianalyze|mixed|modeclus|multtest|nested|nlin|nlmixed|npar1way|orthoreg|phreg|plm|pls|power|princomp|prinqual|probit|quantlife|quantreg|quantselect|robustreg|rsreg|score|seqdesign|seqtest|sim2d|simnormal|spp|stdize|stdrate|stepdisc|surveyfreq|surveyimpute|surveylogistic|surveymeans|surveyphreg|surveyreg|surveyselect|tpspline|transreg|tree|ttest|varclus|varcomp|variogram)>' end='\v%(^|;)\s*%(run|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDataStepControl,sasDataStepFunction,sasAnalyticalProcStatement +syn region sasAnalyticalProc matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+%(anova|arima|catmod|factex|glm|model|optex|plan|reg)>' end='\v%(^|;)\s*%(quit|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDataStepControl,sasDataStepFunction,sasAnalyticalProcStatement -" This line defines macro variables in code. "hi def link" at end of file -" defines the color scheme. Begin region with ampersand and end with -" any non-word character offset by -1; put ampersand in the skip list -" just in case it is used to concatenate macro variable values. +" Procedures, ODS graphics, 9.4 +syn keyword sasODSGraphicsProcStatementKeyword band block bubble by colaxis compare dattrvar density dot dropline dynamic ellipse ellipseparm format fringe gradlegend hbar hbarbasic hbarparm hbox heatmap heatmapparm highlow histogram hline inset keylegend label lineparm loess matrix needle parent panelby pbspline plot polygon refline reg rowaxis scatter series spline step style styleattrs symbolchar symbolimage text vbar vbarbasic vbarparm vbox vector vline waterfall where xaxis x2axis yaxis y2axis yaxistable contained +syn match sasODSGraphicsProcStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasODSGraphicsProcStatementKeyword,sasGlobalStatementKeyword +syn match sasODSGraphicsProcStatement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty +syn match sasODSGraphicsProcStatement '\v%(^|;)\s*\zsformat>' display contained contains=sasODSGraphicsProcStatementKeyword nextgroup=sasFormatContext skipwhite skipnl skipempty +syn region sasODSGraphicsProc matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+%(sgdesign|sgpanel|sgplot|sgrender|sgscatter)>' end='\v%(^|;)\s*%(run|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDataStepFunction,sasODSGraphicsProcStatement -" Thanks to ronald hllwarth for this fix to an intra-versioning -" problem with this little feature +" Proc TEMPLATE, 9.4 +syn keyword sasProcTemplateClause as into +syn keyword sasProcTemplateStatementKeyword block break cellstyle class close column compute continue define delete delstream do done dynamic edit else end eval flush footer header import iterate link list mvar ndent next nmvar notes open path put putl putlog putq putstream putvars replace set source stop style test text text2 text3 translate trigger unblock unset xdent contained +syn keyword sasProcTemplateStatementComplexKeyword cellvalue column crosstabs event footer header statgraph style table tagset contained +syn keyword sasProcTemplateGTLStatementKeyword axislegend axistable bandplot barchart barchartparm begingraph beginpolygon beginpolyline bihistogram3dparm blockplot boxplot boxplotparm bubbleplot continuouslegend contourplotparm dendrogram discretelegend drawarrow drawimage drawline drawoval drawrectangle drawtext dropline ellipse ellipseparm endgraph endinnermargin endlayout endpolygon endpolyline endsidebar entry entryfootnote entrytitle fringeplot heatmap heatmapparm highlowplot histogram histogramparm innermargin layout legenditem legendtextitems linechart lineparm loessplot mergedlegend modelband needleplot pbsplineplot polygonplot referenceline regressionplot scatterplot seriesplot sidebar stepplot surfaceplotparm symbolchar symbolimage textplot vectorplot waterfallchart contained +syn keyword sasProcTemplateGTLComplexKeyword datalattice datapanel globallegend gridded lattice overlay overlayequated overlay3d region contained +syn match sasProcTemplateStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasProcTemplateStatementKeyword,sasProcTemplateGTLStatementKeyword,sasGlobalStatementKeyword +syn match sasProcTemplateStatement '\v%(^|;)\s*\zsdefine>' display contained contains=sasProcTemplateStatementKeyword nextgroup=sasProcTemplateStatementComplexKeyword skipwhite skipnl skipempty +syn match sasProcTemplateStatement '\v%(^|;)\s*\zslayout>' display contained contains=sasProcTemplateGTLStatementKeyword nextgroup=sasProcTemplateGTLComplexKeyword skipwhite skipnl skipempty +syn match sasProcTemplateStatement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty +syn region sasProcTemplate matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+template>' end='\v%(^|;)\s*%(run|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasProcTemplateClause,sasProcTemplateStatement -syn region sasMacroVar start="&" skip="[_&]" end="\W"he=e-1 +" Proc SQL, 9.4 +syn keyword sasProcSQLFunctionName avg count css cv freq max mean median min n nmiss prt range std stderr sum sumwgt t uss var contained +syn region sasProcSQLFunctionContext start='(' end=')' contained contains=@sasBasicSyntax,sasProcSQLFunction +syn match sasProcSQLFunction '\v<\w+\ze\(' contained contains=sasProcSQLFunctionName,sasDataStepFunctionName nextgroup=sasProcSQLFunctionContext +syn keyword sasProcSQLClause add asc between by calculated cascade case check connection constraint cross desc distinct drop else end escape except exists foreign from full group having in inner intersect into is join key left libname like modify natural newline notrim null on order outer primary references restrict right separated set then to trimmed union unique user using values when where contained +syn keyword sasProcSQLClause as contained nextgroup=sasProcSQLStatementKeyword skipwhite skipnl skipempty +syn keyword sasProcSQLStatementKeyword connect delete disconnect execute insert reset select update validate contained +syn keyword sasProcSQLStatementComplexKeyword alter create describe drop contained nextgroup=sasProcSQLStatementNextKeyword skipwhite skipnl skipempty +syn keyword sasProcSQLStatementNextKeyword index table view contained +syn match sasProcSQLStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasProcSQLStatementKeyword,sasGlobalStatementKeyword +syn match sasProcSQLStatement '\v%(^|;)\s*\zs%(alter|create|describe|drop)>' display contained contains=sasProcSQLStatementComplexKeyword nextgroup=sasProcSQLStatementNextKeyword skipwhite skipnl skipempty +syn match sasProcSQLStatement '\v%(^|;)\s*\zsvalidate>' display contained contains=sasProcSQLStatementKeyword nextgroup=sasProcSQLStatementKeyword,sasProcSQLStatementComplexKeyword skipwhite skipnl skipempty +syn match sasProcSQLStatement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty +syn region sasProcSQL matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+sql>' end='\v%(^|;)\s*%(quit|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasProcSQLFunction,sasProcSQLClause,sasProcSQLStatement +" SAS/DS2, 9.4 +syn keyword sasDS2FunctionName abs anyalnum anyalpha anycntrl anydigit anyfirst anygraph anylower anyname anyprint anypunct anyspace anyupper anyxdigit arcos arcosh arsin arsinh artanh atan atan2 band beta betainv blackclprc blackptprc blkshclprc blkshptprc blshift bnot bor brshift bxor byte cat cats catt catx ceil ceilz choosec choosen cmp cmpt coalesce coalescec comb compare compbl compfuzz compound compress constant convx convxp cos cosh count countc countw css cumipmt cumprinc cv datdif date datejul datepart datetime day dequote deviance dhms dif digamma dim divide dur durp effrate erf erfc exp fact find findc findw floor floorz fmtinfo fuzz gaminv gamma garkhclprc garkhptprc gcd geodist geomean geomeanz harmean harmeanz hbound hms holiday hour index indexc indexw inputc inputn int intcindex intck intcycle intdt intfit intget intindex intnest intnx intrr intseas intshift inttest intts intz ipmt iqr irr juldate juldate7 kcount kstrcat kstrip kupdate kupdates kurtosis lag largest lbound lcm left length lengthc lengthm lengthn lgamma log logbeta log10 log1px log2 lowcase mad margrclprc margrptprc max md5 mdy mean median min minute missing mod modz month mort n ndims netpv nmiss nomrate notalnum notalpha notcntrl notdigit notfirst notgraph notlower notname notprint notpunct notspace notupper notxdigit npv null nwkdom ordinal pctl perm pmt poisson power ppmt probbeta probbnml probbnrm probchi probdf probf probgam probhypr probit probmc probmed probnegb probnorm probt prxchange prxmatch prxparse prxposn put pvp qtr quote ranbin rancau rand ranexp rangam range rank rannor ranpoi rantbl rantri ranuni repeat reverse right rms round rounde roundz savings scan sec second sha256hex sha256hmachex sign sin sinh skewness sleep smallest sqlexec sqrt std stderr streaminit strip substr substrn sum sumabs tan tanh time timepart timevalue tinv to_date to_double to_time to_timestamp today translate transtrn tranwrd trigamma trim trimn trunc uniform upcase uss uuidgen var verify vformat vinarray vinformat vlabel vlength vname vtype week weekday whichc whichn year yieldp yrdif yyq contained +syn region sasDS2FunctionContext start='(' end=')' contained contains=@sasBasicSyntax,sasDS2Function +syn match sasDS2Function '\v<\w+\ze\(' contained contains=sasDS2FunctionName nextgroup=sasDS2FunctionContext +syn keyword sasDS2Control continue data dcl declare do drop else end enddata endpackage endthread from go goto if leave method otherwise package point return select then thread to until when while contained +syn keyword sasDS2StatementKeyword array by forward keep merge output put rename retain set stop vararray varlist contained +syn keyword sasDS2StatementComplexKeyword package thread contained +syn match sasDS2Statement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasDS2StatementKeyword,sasGlobalStatementKeyword +syn match sasDS2Statement '\v%(^|;)\s*\zs%(dcl|declare|drop)>' display contained contains=sasDS2StatementKeyword nextgroup=sasDS2StatementComplexKeyword skipwhite skipnl skipempty +syn match sasDS2Statement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty +syn region sasDS2 matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+ds2>' end='\v%(^|;)\s*%(quit|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasDS2Function,sasDS2Control,sasDS2Statement -" I dont think specific PROCs need to be listed if use this line (Bob Heckel). -syn match sasProc "^\s*PROC \w\+" -syn keyword sasStep RUN QUIT DATA +" SAS/IML, 14.1 +syn keyword sasIMLFunctionName abs all allcomb allperm any apply armasim bin blankstr block branks bspline btran byte char choose col colvec concat contents convexit corr corr2cov countmiss countn countunique cov cov2corr covlag cshape cusum cuprod cv cvexhull datasets design designf det diag dif dimension distance do duration echelon eigval eigvec element exp expmatrix expandgrid fft forward froot full gasetup geomean ginv hadamard half hankel harmean hdir hermite homogen i ifft insert int inv invupdt isempty isskipped j jroot kurtosis lag length loc log logabsdet mad magic mahalanobis max mean median min mod moduleic modulein name ncol ndx2sub nleng norm normal nrow num opscal orpol parentname palette polyroot prod product pv quartile rancomb randdirichlet randfun randmultinomial randmvt randnormal randwishart ranperk ranperm range rank ranktie rates ratio remove repeat root row rowcat rowcatc rowvec rsubstr sample setdif shape shapecol skewness solve sparse splinev spot sqrsym sqrt sqrvech ssq standard std storage sub2ndx substr sum sweep symsqr t toeplitz trace trisolv type uniform union unique uniqueby value var vecdiag vech xmult xsect yield contained +syn keyword sasIMLCallRoutineName appcort armacov armalik bar box change comport delete eigen execute exportdatasettor exportmatrixtor farmacov farmafit farmalik farmasim fdif gaend gagetmem gagetval gainit gareeval garegen gasetcro gasetmut gasetobj gasetsel gblkvp gblkvpd gclose gdelete gdraw gdrawl geneig ggrid ginclude gopen gpie gpiexy gpoint gpoly gport gportpop gportstk gscale gscript gset gshow gsorth gstart gstop gstrlen gtext gvtext gwindow gxaxis gyaxis heatmapcont heatmapdisc histogram importdatasetfromr importmatrixfromr ipf itsolver kalcvf kalcvs kaldff kaldfs lav lcp lms lp lpsolve lts lupdt marg maxqform mcd milpsolve modulei mve nlpcg nlpdd nlpfdd nlpfea nlphqn nlplm nlpnms nlpnra nlpnrr nlpqn nlpqua nlptr ode odsgraph ortvec pgraf push qntl qr quad queue randgen randseed rdodt rupdt rename rupdt rzlind scatter seq seqscale seqshift seqscale seqshift series solvelin sort sortndx sound spline splinec svd tabulate tpspline tpsplnev tsbaysea tsdecomp tsmlocar tsmlomar tsmulmar tspears tspred tsroot tstvcar tsunimar valset varmacov varmalik varmasim vnormal vtsroot wavft wavget wavift wavprint wavthrsh contained +syn region sasIMLFunctionContext start='(' end=')' contained contains=@sasBasicSyntax,sasIMLFunction +syn match sasIMLFunction '\v<\w+\ze\(' contained contains=sasIMLFunctionName,sasDataStepFunction nextgroup=sasIMLFunctionContext +syn keyword sasIMLControl abort by do else end finish goto if link pause quit resume return run start stop then to until while contained +syn keyword sasIMLStatementKeyword append call close closefile create delete display edit file find force free index infile input list load mattrib print purge read remove replace reset save setin setout show sort store summary use window contained +syn match sasIMLStatement '\v%(^|;)\s*\zs\h\w*>' display contained contains=sasIMLStatementKeyword,sasGlobalStatementKeyword +syn match sasIMLStatement '\v%(^|;)\s*\zsods>' display contained contains=sasGlobalStatementKeyword nextgroup=sasGlobalStatementODSKeyword skipwhite skipnl skipempty +syn region sasIML matchgroup=sasSectionKeyword start='\v%(^|;)\s*\zsproc\s+iml>' end='\v%(^|;)\s*%(quit|data|proc|endsas)>'me=s-1 fold contains=@sasBasicSyntax,sasIMLFunction,sasIMLControl,sasIMLStatement +" Macro definition +syn region sasMacro start='\v\%macro>' end='\v\%mend>' fold keepend contains=@sasBasicSyntax,@sasDataStepSyntax,sasDataStep,sasProc,sasODSGraphicsProc,sasGraphProc,sasAnalyticalProc,sasProcTemplate,sasProcSQL,sasDS2,sasIML -" Base SAS Procs - version 8.1 - -syn keyword sasConditional DO ELSE END IF THEN UNTIL WHILE - -syn keyword sasStatement ABORT ARRAY ATTRIB BY CALL CARDS CARDS4 CATNAME -syn keyword sasStatement CONTINUE DATALINES DATALINES4 DELETE DISPLAY -syn keyword sasStatement DM DROP ENDSAS ERROR FILE FILENAME FOOTNOTE -syn keyword sasStatement FORMAT GOTO INFILE INFORMAT INPUT KEEP -syn keyword sasStatement LABEL LEAVE LENGTH LIBNAME LINK LIST LOSTCARD -syn keyword sasStatement MERGE MISSING MODIFY OPTIONS OUTPUT PAGE -syn keyword sasStatement PUT REDIRECT REMOVE RENAME REPLACE RETAIN -syn keyword sasStatement RETURN SELECT SET SKIP STARTSAS STOP TITLE -syn keyword sasStatement UPDATE WAITSAS WHERE WINDOW X SYSTASK - -" Keywords that are used in Proc SQL -" I left them as statements because SAS's enhanced editor highlights -" them the same as normal statements used in data steps (Jim Kidd) - -syn keyword sasStatement ADD AND ALTER AS CASCADE CHECK CREATE -syn keyword sasStatement DELETE DESCRIBE DISTINCT DROP FOREIGN -syn keyword sasStatement FROM GROUP HAVING INDEX INSERT INTO IN -syn keyword sasStatement KEY LIKE MESSAGE MODIFY MSGTYPE NOT -syn keyword sasStatement NULL ON OR ORDER PRIMARY REFERENCES -syn keyword sasStatement RESET RESTRICT SELECT SET TABLE -syn keyword sasStatement UNIQUE UPDATE VALIDATE VIEW WHERE - -" Match declarations have to appear one per line (Paulo Tanimoto) -syn match sasStatement "FOOTNOTE\d" -syn match sasStatement "TITLE\d" - -" Match declarations have to appear one per line (Paulo Tanimoto) -syn match sasMacro "%BQUOTE" -syn match sasMacro "%NRBQUOTE" -syn match sasMacro "%CMPRES" -syn match sasMacro "%QCMPRES" -syn match sasMacro "%COMPSTOR" -syn match sasMacro "%DATATYP" -syn match sasMacro "%DISPLAY" -syn match sasMacro "%DO" -syn match sasMacro "%ELSE" -syn match sasMacro "%END" -syn match sasMacro "%EVAL" -syn match sasMacro "%GLOBAL" -syn match sasMacro "%GOTO" -syn match sasMacro "%IF" -syn match sasMacro "%INDEX" -syn match sasMacro "%INPUT" -syn match sasMacro "%KEYDEF" -syn match sasMacro "%LABEL" -syn match sasMacro "%LEFT" -syn match sasMacro "%LENGTH" -syn match sasMacro "%LET" -syn match sasMacro "%LOCAL" -syn match sasMacro "%LOWCASE" -syn match sasMacro "%MACRO" -syn match sasMacro "%MEND" -syn match sasMacro "%NRBQUOTE" -syn match sasMacro "%NRQUOTE" -syn match sasMacro "%NRSTR" -syn match sasMacro "%PUT" -syn match sasMacro "%QCMPRES" -syn match sasMacro "%QLEFT" -syn match sasMacro "%QLOWCASE" -syn match sasMacro "%QSCAN" -syn match sasMacro "%QSUBSTR" -syn match sasMacro "%QSYSFUNC" -syn match sasMacro "%QTRIM" -syn match sasMacro "%QUOTE" -syn match sasMacro "%QUPCASE" -syn match sasMacro "%SCAN" -syn match sasMacro "%STR" -syn match sasMacro "%SUBSTR" -syn match sasMacro "%SUPERQ" -syn match sasMacro "%SYSCALL" -syn match sasMacro "%SYSEVALF" -syn match sasMacro "%SYSEXEC" -syn match sasMacro "%SYSFUNC" -syn match sasMacro "%SYSGET" -syn match sasMacro "%SYSLPUT" -syn match sasMacro "%SYSPROD" -syn match sasMacro "%SYSRC" -syn match sasMacro "%SYSRPUT" -syn match sasMacro "%THEN" -syn match sasMacro "%TO" -syn match sasMacro "%TRIM" -syn match sasMacro "%UNQUOTE" -syn match sasMacro "%UNTIL" -syn match sasMacro "%UPCASE" -syn match sasMacro "%VERIFY" -syn match sasMacro "%WHILE" -syn match sasMacro "%WINDOW" - -" SAS Functions - -syn keyword sasFunction ABS ADDR AIRY ARCOS ARSIN ATAN ATTRC ATTRN -syn keyword sasFunction BAND BETAINV BLSHIFT BNOT BOR BRSHIFT BXOR -syn keyword sasFunction BYTE CDF CEIL CEXIST CINV CLOSE CNONCT COLLATE -syn keyword sasFunction COMPBL COMPOUND COMPRESS COS COSH CSS CUROBS -syn keyword sasFunction CV DACCDB DACCDBSL DACCSL DACCSYD DACCTAB -syn keyword sasFunction DAIRY DATE DATEJUL DATEPART DATETIME DAY -syn keyword sasFunction DCLOSE DEPDB DEPDBSL DEPDBSL DEPSL DEPSL -syn keyword sasFunction DEPSYD DEPSYD DEPTAB DEPTAB DEQUOTE DHMS -syn keyword sasFunction DIF DIGAMMA DIM DINFO DNUM DOPEN DOPTNAME -syn keyword sasFunction DOPTNUM DREAD DROPNOTE DSNAME ERF ERFC EXIST -syn keyword sasFunction EXP FAPPEND FCLOSE FCOL FDELETE FETCH FETCHOBS -syn keyword sasFunction FEXIST FGET FILEEXIST FILENAME FILEREF FINFO -syn keyword sasFunction FINV FIPNAME FIPNAMEL FIPSTATE FLOOR FNONCT -syn keyword sasFunction FNOTE FOPEN FOPTNAME FOPTNUM FPOINT FPOS -syn keyword sasFunction FPUT FREAD FREWIND FRLEN FSEP FUZZ FWRITE -syn keyword sasFunction GAMINV GAMMA GETOPTION GETVARC GETVARN HBOUND -syn keyword sasFunction HMS HOSTHELP HOUR IBESSEL INDEX INDEXC -syn keyword sasFunction INDEXW INPUT INPUTC INPUTN INT INTCK INTNX -syn keyword sasFunction INTRR IRR JBESSEL JULDATE KURTOSIS LAG LBOUND -syn keyword sasFunction LEFT LENGTH LGAMMA LIBNAME LIBREF LOG LOG10 -syn keyword sasFunction LOG2 LOGPDF LOGPMF LOGSDF LOWCASE MAX MDY -syn keyword sasFunction MEAN MIN MINUTE MOD MONTH MOPEN MORT N -syn keyword sasFunction NETPV NMISS NORMAL NOTE NPV OPEN ORDINAL -syn keyword sasFunction PATHNAME PDF PEEK PEEKC PMF POINT POISSON POKE -syn keyword sasFunction PROBBETA PROBBNML PROBCHI PROBF PROBGAM -syn keyword sasFunction PROBHYPR PROBIT PROBNEGB PROBNORM PROBT PUT -syn keyword sasFunction PUTC PUTN QTR QUOTE RANBIN RANCAU RANEXP -syn keyword sasFunction RANGAM RANGE RANK RANNOR RANPOI RANTBL RANTRI -syn keyword sasFunction RANUNI REPEAT RESOLVE REVERSE REWIND RIGHT -syn keyword sasFunction ROUND SAVING SCAN SDF SECOND SIGN SIN SINH -syn keyword sasFunction SKEWNESS SOUNDEX SPEDIS SQRT STD STDERR STFIPS -syn keyword sasFunction STNAME STNAMEL SUBSTR SUM SYMGET SYSGET SYSMSG -syn keyword sasFunction SYSPROD SYSRC SYSTEM TAN TANH TIME TIMEPART -syn keyword sasFunction TINV TNONCT TODAY TRANSLATE TRANWRD TRIGAMMA -syn keyword sasFunction TRIM TRIMN TRUNC UNIFORM UPCASE USS VAR -syn keyword sasFunction VARFMT VARINFMT VARLABEL VARLEN VARNAME -syn keyword sasFunction VARNUM VARRAY VARRAYX VARTYPE VERIFY VFORMAT -syn keyword sasFunction VFORMATD VFORMATDX VFORMATN VFORMATNX VFORMATW -syn keyword sasFunction VFORMATWX VFORMATX VINARRAY VINARRAYX VINFORMAT -syn keyword sasFunction VINFORMATD VINFORMATDX VINFORMATN VINFORMATNX -syn keyword sasFunction VINFORMATW VINFORMATWX VINFORMATX VLABEL -syn keyword sasFunction VLABELX VLENGTH VLENGTHX VNAME VNAMEX VTYPE -syn keyword sasFunction VTYPEX WEEKDAY YEAR YYQ ZIPFIPS ZIPNAME ZIPNAMEL -syn keyword sasFunction ZIPSTATE - -" Handy settings for using vim with log files -syn keyword sasLogMsg NOTE -syn keyword sasWarnMsg WARNING -syn keyword sasErrMsg ERROR - -" Always contained in a comment (Bob Heckel) -syn keyword sasTodo TODO TBD FIXME contained - -" These don't fit anywhere else (Bob Heckel). -" Added others that were missing. -syn keyword sasUnderscore _ALL_ _AUTOMATIC_ _CHARACTER_ _INFILE_ _N_ _NAME_ _NULL_ _NUMERIC_ _USER_ _WEBOUT_ - -" End of SAS Functions - -" Define the default highlighting. -" Only when an item doesn't have highlighting yet - - -" Default sas enhanced editor color syntax -hi sComment term=bold cterm=NONE ctermfg=Green ctermbg=Black gui=NONE guifg=DarkGreen guibg=White -hi sCard term=bold cterm=NONE ctermfg=Black ctermbg=Yellow gui=NONE guifg=Black guibg=LightYellow -hi sDate_Time term=NONE cterm=bold ctermfg=Green ctermbg=Black gui=bold guifg=SeaGreen guibg=White -hi sKeyword term=NONE cterm=NONE ctermfg=Blue ctermbg=Black gui=NONE guifg=Blue guibg=White -hi sFmtInfmt term=NONE cterm=NONE ctermfg=LightGreen ctermbg=Black gui=NONE guifg=SeaGreen guibg=White -hi sString term=NONE cterm=NONE ctermfg=Magenta ctermbg=Black gui=NONE guifg=Purple guibg=White -hi sText term=NONE cterm=NONE ctermfg=White ctermbg=Black gui=bold guifg=Black guibg=White -hi sNumber term=NONE cterm=bold ctermfg=Green ctermbg=Black gui=bold guifg=SeaGreen guibg=White -hi sProc term=NONE cterm=bold ctermfg=Blue ctermbg=Black gui=bold guifg=Navy guibg=White -hi sSection term=NONE cterm=bold ctermfg=Blue ctermbg=Black gui=bold guifg=Navy guibg=White -hi mDefine term=NONE cterm=bold ctermfg=White ctermbg=Black gui=bold guifg=Black guibg=White -hi mKeyword term=NONE cterm=NONE ctermfg=Blue ctermbg=Black gui=NONE guifg=Blue guibg=White -hi mReference term=NONE cterm=bold ctermfg=White ctermbg=Black gui=bold guifg=Blue guibg=White -hi mSection term=NONE cterm=NONE ctermfg=Blue ctermbg=Black gui=bold guifg=Navy guibg=White -hi mText term=NONE cterm=NONE ctermfg=White ctermbg=Black gui=bold guifg=Black guibg=White - -" Colors that closely match SAS log colors for default color scheme -hi lError term=NONE cterm=NONE ctermfg=Red ctermbg=Black gui=none guifg=Red guibg=White -hi lWarning term=NONE cterm=NONE ctermfg=Green ctermbg=Black gui=none guifg=Green guibg=White -hi lNote term=NONE cterm=NONE ctermfg=Cyan ctermbg=Black gui=none guifg=Blue guibg=White - - -" Special hilighting for the SAS proc section - -hi def link sasComment sComment -hi def link sasConditional sKeyword -hi def link sasStep sSection -hi def link sasFunction sKeyword -hi def link sasMacro mKeyword -hi def link sasMacroVar NonText -hi def link sasNumber sNumber -hi def link sasStatement sKeyword -hi def link sasString sString -hi def link sasProc sProc -" (Bob Heckel) -hi def link sasTodo Todo -hi def link sasErrMsg lError -hi def link sasWarnMsg lWarning -hi def link sasLogMsg lNote -hi def link sasCards sCard -" (Bob Heckel) -hi def link sasUnderscore PreProc +" Define default highlighting +hi def link sasComment Comment +hi def link sasTodo Delimiter +hi def link sasSectLbl Title +hi def link sasSectLblEnds Comment +hi def link sasNumber Number +hi def link sasDateTime Constant +hi def link sasString String +hi def link sasDataStepControl Keyword +hi def link sasProcTemplateClause Keyword +hi def link sasProcSQLClause Keyword +hi def link sasDS2Control Keyword +hi def link sasIMLControl Keyword +hi def link sasOperator Operator +hi def link sasGlobalStatementKeyword Statement +hi def link sasGlobalStatementODSKeyword Statement +hi def link sasSectionKeyword Statement +hi def link sasDataStepFunctionName Function +hi def link sasDataStepCallRoutineName Function +hi def link sasDataStepStatementKeyword Statement +hi def link sasDataStepStatementHashKeyword Statement +hi def link sasDataStepHashOperator Operator +hi def link sasDataStepHashMethodName Function +hi def link sasDataStepHashAttributeName Identifier +hi def link sasProcStatementKeyword Statement +hi def link sasODSGraphicsProcStatementKeyword Statement +hi def link sasGraphProcStatementKeyword Statement +hi def link sasAnalyticalProcStatementKeyword Statement +hi def link sasProcTemplateStatementKeyword Statement +hi def link sasProcTemplateStatementComplexKeyword Statement +hi def link sasProcTemplateGTLStatementKeyword Statement +hi def link sasProcTemplateGTLComplexKeyword Statement +hi def link sasProcSQLFunctionName Function +hi def link sasProcSQLStatementKeyword Statement +hi def link sasProcSQLStatementComplexKeyword Statement +hi def link sasProcSQLStatementNextKeyword Statement +hi def link sasDS2FunctionName Function +hi def link sasDS2StatementKeyword Statement +hi def link sasIMLFunctionName Function +hi def link sasIMLCallRoutineName Function +hi def link sasIMLStatementKeyword Statement +hi def link sasMacroReserved PreProc +hi def link sasMacroVariable Define +hi def link sasMacroFunctionName Define +hi def link sasDataLine SpecialChar +hi def link sasFormat SpecialChar +hi def link sasReserved Special " Syncronize from beginning to keep large blocks from losing " syntax coloring while moving through code. @@ -264,4 +261,5 @@ syn sync fromstart let b:current_syntax = "sas" -" vim: ts=8 +let &cpo = s:cpo_save +unlet s:cpo_save From ef7af078ef41fabbf3ca9d25acb6a1062a0716a7 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Tue, 7 Nov 2017 01:09:09 +0100 Subject: [PATCH 12/76] vim-patch:cd5c8f825078 Update runtime files. https://github.com/vim/vim/commit/cd5c8f82507822467232ab71e1ebbaae19595916 --- runtime/compiler/rst.vim | 23 +++-- runtime/doc/autocmd.txt | 2 +- runtime/doc/eval.txt | 37 ++++++-- runtime/doc/insert.txt | 3 +- runtime/indent/r.vim | 28 +++--- runtime/indent/rhelp.vim | 2 +- runtime/macros/less.vim | 12 ++- runtime/syntax/autohotkey.vim | 14 +-- runtime/syntax/r.vim | 173 ++++++++++++++++++++++++++++------ runtime/syntax/rmd.vim | 94 ++++++++++++------ 10 files changed, 291 insertions(+), 97 deletions(-) diff --git a/runtime/compiler/rst.vim b/runtime/compiler/rst.vim index c34bd3ba81..392bea6ae0 100644 --- a/runtime/compiler/rst.vim +++ b/runtime/compiler/rst.vim @@ -1,7 +1,8 @@ " Vim compiler file -" Compiler: reStructuredText Documentation Format +" Compiler: sphinx >= 1.0.8, http://www.sphinx-doc.org +" Description: reStructuredText Documentation Format " Previous Maintainer: Nikolai Weibull -" Latest Revision: 2006-04-19 +" Latest Revision: 2017-03-31 if exists("current_compiler") finish @@ -11,12 +12,18 @@ let current_compiler = "rst" let s:cpo_save = &cpo set cpo&vim -setlocal errorformat= - \%f:%l:\ (%tEBUG/0)\ %m, - \%f:%l:\ (%tNFO/1)\ %m, - \%f:%l:\ (%tARNING/2)\ %m, - \%f:%l:\ (%tRROR/3)\ %m, - \%f:%l:\ (%tEVERE/3)\ %m, +if exists(":CompilerSet") != 2 + command -nargs=* CompilerSet setlocal +endif + +CompilerSet errorformat= + \%f\\:%l:\ %tEBUG:\ %m, + \%f\\:%l:\ %tNFO:\ %m, + \%f\\:%l:\ %tARNING:\ %m, + \%f\\:%l:\ %tRROR:\ %m, + \%f\\:%l:\ %tEVERE:\ %m, + \%f\\:%s:\ %tARNING:\ %m, + \%f\\:%s:\ %tRROR:\ %m, \%D%*\\a[%*\\d]:\ Entering\ directory\ `%f', \%X%*\\a[%*\\d]:\ Leaving\ directory\ `%f', \%DMaking\ %*\\a\ in\ %f diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt index 2850c8058f..709e7ffed6 100644 --- a/runtime/doc/autocmd.txt +++ b/runtime/doc/autocmd.txt @@ -616,7 +616,7 @@ FileChangedShell When Vim notices that the modification time of to tell Vim what to do next. NOTE: When this autocommand is executed, the current buffer "%" may be different from the - buffer that was changed "". + buffer that was changed, which is in "". NOTE: The commands must not change the current buffer, jump to another buffer or delete a buffer. *E246* *E811* diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 319ae26060..d9b47a3ab0 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -4078,13 +4078,16 @@ getcompletion({pat}, {type} [, {filtered}]) *getcompletion()* getcurpos() Get the position of the cursor. This is like getpos('.'), but includes an extra item in the list: [bufnum, lnum, col, off, curswant] ~ - The "curswant" number is the preferred column when moving the - cursor vertically. - This can be used to save and restore the cursor position: > - let save_cursor = getcurpos() - MoveTheCursorAround - call setpos('.', save_cursor) -< + The "curswant" number is the preferred column when moving the + cursor vertically. Also see |getpos()|. + + This can be used to save and restore the cursor position: > + let save_cursor = getcurpos() + MoveTheCursorAround + call setpos('.', save_cursor) +< Note that this only works within the window. See + |winrestview()| for restoring more state. + getcwd([{winnr}[, {tabnr}]]) *getcwd()* With no arguments the result is a String, which is the name of the current effective working directory. With {winnr} or @@ -4382,11 +4385,13 @@ gettabwinvar({tabnr}, {winnr}, {varname} [, {def}]) *gettabwinvar()* getwinposx() The result is a Number, which is the X coordinate in pixels of the left hand side of the GUI Vim window. The result will be -1 if the information is not available. + The value can be used with `:winpos`. *getwinposy()* getwinposy() The result is a Number, which is the Y coordinate in pixels of the top of the GUI Vim window. The result will be -1 if the information is not available. + The value can be used with `:winpos`. getwininfo([{winid}]) *getwininfo()* Returns information about windows as a List with Dictionaries. @@ -8271,7 +8276,7 @@ lispindent Compiled with support for lisp indenting. listcmds Compiled with commands for the buffer list |:files| and the argument list |arglist|. localmap Compiled with local mappings and abbr. |:map-local| -mac macOS version of Vim. +mac macOS version of Nvim. menu Compiled with support for |:menu|. mksession Compiled with support for |:mksession|. modify_fname Compiled with file name modifiers. |filename-modifiers| @@ -10417,6 +10422,22 @@ missing: > : echo "You will _never_ see this message" :endif +To execute a command only when the |+eval| feature is disabled requires a trick, +as this example shows: > + if 1 + nnoremap : :" + endif + normal :set history=111 + if 1 + nunmap : + endif + +The "" here is a real CR character, type CTRL-V Enter to get it. + +When the |+eval| feature is available the ":" is remapped to add a double +quote, which has the effect of commenging-out the command. without the +|+eval| feature the nnoremap command is skipped and the command is executed. + ============================================================================== 11. The sandbox *eval-sandbox* *sandbox* *E48* diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt index f3bde9d8d2..f6b2ef7bc3 100644 --- a/runtime/doc/insert.txt +++ b/runtime/doc/insert.txt @@ -146,7 +146,8 @@ CTRL-R CTRL-R {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-R* CTRL-R CTRL-O {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-O* Insert the contents of a register literally and don't auto-indent. Does the same as pasting with the mouse - ||. + ||. When the register is linewise this will + insert the text above the current line, like with `P`. Does not replace characters! The '.' register (last inserted text) is still inserted as typed. diff --git a/runtime/indent/r.vim b/runtime/indent/r.vim index 01f3812ed2..373b0e65df 100644 --- a/runtime/indent/r.vim +++ b/runtime/indent/r.vim @@ -274,7 +274,7 @@ function GetRIndent() let nlnum = s:Get_prev_line(nlnum) let nline = SanitizeRLine(getline(nlnum)) . nline endwhile - if nline =~ '^\s*function\s*(' && indent(nlnum) == &sw + if nline =~ '^\s*function\s*(' && indent(nlnum) == shiftwidth() return 0 endif endif @@ -285,7 +285,7 @@ function GetRIndent() " line is an incomplete command: if line =~ '\<\(if\|while\|for\|function\)\s*()$' || line =~ '\$' - return indent(lnum) + &sw + return indent(lnum) + shiftwidth() endif " Deal with () and [] @@ -293,14 +293,14 @@ function GetRIndent() let pb = s:Get_paren_balance(line, '(', ')') if line =~ '^\s*{$' || line =~ '(\s*{' || (pb == 0 && (line =~ '{$' || line =~ '(\s*{$')) - return indent(lnum) + &sw + return indent(lnum) + shiftwidth() endif let s:curtabstop = repeat(' ', &tabstop) if g:r_indent_align_args == 1 if pb > 0 && line =~ '{$' - return s:Get_last_paren_idx(line, '(', ')', pb) + &sw + return s:Get_last_paren_idx(line, '(', ')', pb) + shiftwidth() endif let bb = s:Get_paren_balance(line, '[', ']') @@ -364,11 +364,11 @@ function GetRIndent() if oline =~ g:r_indent_op_pattern && s:Get_paren_balance(line, "(", ")") == 0 return indent(lnum) else - return indent(lnum) + &sw + return indent(lnum) + shiftwidth() endif else if oline =~ g:r_indent_op_pattern && s:Get_paren_balance(line, "(", ")") == 0 - return indent(lnum) - &sw + return indent(lnum) - shiftwidth() endif endif endif @@ -383,7 +383,7 @@ function GetRIndent() let line = linepiece . line endwhile if line =~ '{$' && post_block == 0 - return indent(lnum) + &sw + return indent(lnum) + shiftwidth() endif " Now we can do some tests again @@ -393,19 +393,19 @@ function GetRIndent() if post_block == 0 let newl = SanitizeRLine(line) if newl =~ '\<\(if\|while\|for\|function\)\s*()$' || newl =~ '\ -" Last Change: 2015 Nov 15 +" Last Change: 2017 Mar 31 " Avoid loading this file twice, allow the user to define his own script. if exists("loaded_less") @@ -81,6 +81,10 @@ fun! s:Help() echo "\n" echo "/pattern Search for pattern ?pattern Search backward for pattern" echo "n next pattern match N Previous pattern match" + if &foldmethod != "manual" + echo "\n" + echo "zR open all folds zm increase fold level" + endif echo "\n" echo ":n Next file :p Previous file" echo "\n" @@ -96,7 +100,11 @@ map map map map -map z +" If 'foldmethod' was changed keep the "z" commands, e.g. "zR" to open all +" folds. +if &foldmethod == "manual" + map z +endif map fun! s:NextPage() if line(".") == line("$") diff --git a/runtime/syntax/autohotkey.vim b/runtime/syntax/autohotkey.vim index 3b826af6f5..c6a68f7a21 100644 --- a/runtime/syntax/autohotkey.vim +++ b/runtime/syntax/autohotkey.vim @@ -2,7 +2,7 @@ " Language: AutoHotkey script file " Maintainer: Michael Wong " https://github.com/mmikeww/autohotkey.vim -" Latest Revision: 2017-01-23 +" Latest Revision: 2017-04-03 " Previous Maintainers: SungHyun Nam " Nikolai Weibull @@ -106,6 +106,7 @@ syn keyword autohotkeyCommand \ FormatTime IfInString IfNotInString Sort StringCaseSense StringGetPos \ StringLeft StringRight StringLower StringUpper StringMid StringReplace \ StringSplit StringTrimLeft StringTrimRight StringLen + \ StrSplit StrReplace Throw \ Control ControlClick ControlFocus ControlGet ControlGetFocus \ ControlGetPos ControlGetText ControlMove ControlSend ControlSendRaw \ ControlSetText Menu PostMessage SendMessage SetControlDelay @@ -119,17 +120,18 @@ syn keyword autohotkeyCommand \ SetCapsLockState SetNumLockState SetScrollLockState syn keyword autohotkeyFunction - \ InStr RegExMatch RegExReplace StrLen SubStr Asc Chr + \ InStr RegExMatch RegExReplace StrLen SubStr Asc Chr Func \ DllCall VarSetCapacity WinActive WinExist IsLabel OnMessage \ Abs Ceil Exp Floor Log Ln Mod Round Sqrt Sin Cos Tan ASin ACos ATan \ FileExist GetKeyState NumGet NumPut StrGet StrPut RegisterCallback \ IsFunc Trim LTrim RTrim IsObject Object Array FileOpen \ ComObjActive ComObjArray ComObjConnect ComObjCreate ComObjGet \ ComObjError ComObjFlags ComObjQuery ComObjType ComObjValue ComObject + \ Format Exception syn keyword autohotkeyStatement \ Break Continue Exit ExitApp Gosub Goto OnExit Pause Return - \ Suspend Reload + \ Suspend Reload new class extends syn keyword autohotkeyRepeat \ Loop @@ -138,7 +140,7 @@ syn keyword autohotkeyConditional \ IfExist IfNotExist If IfEqual IfLess IfGreater Else \ IfWinExist IfWinNotExist IfWinActive IfWinNotActive \ IfNotEqual IfLessOrEqual IfGreaterOrEqual - \ while until for in + \ while until for in try catch finally syn match autohotkeyPreProcStart \ nextgroup= @@ -178,7 +180,7 @@ syn keyword autohotkeyPreProc \ Warn syn keyword autohotkeyMatchClass - \ ahk_group ahk_class ahk_id ahk_pid + \ ahk_group ahk_class ahk_id ahk_pid ahk_exe syn match autohotkeyNumbers \ display @@ -217,7 +219,7 @@ syn match autohotkeyHotkey \ contains=autohotkeyKey, \ autohotkeyHotkeyDelimiter \ display - \ '^.\{-}::' + \ '^\s*\S*\%( Up\)\?::' syn match autohotkeyKey \ contained diff --git a/runtime/syntax/r.vim b/runtime/syntax/r.vim index 30a5b23f84..45ff498b3b 100644 --- a/runtime/syntax/r.vim +++ b/runtime/syntax/r.vim @@ -5,10 +5,10 @@ " Tom Payne " Contributor: Johannes Ranke " Homepage: https://github.com/jalvesaq/R-Vim-runtime -" Last Change: Thu Aug 25, 2016 08:52PM +" Last Change: Sat Apr 08, 2017 07:01PM " Filenames: *.R *.r *.Rhistory *.Rt " -" NOTE: The highlighting of R functions is defined in +" NOTE: The highlighting of R functions might be defined in " runtime files created by a filetype plugin, if installed. " " CONFIGURATION: @@ -18,7 +18,7 @@ " " ROxygen highlighting can be turned off by " -" let r_hl_roxygen = 0 +" let r_syntax_hl_roxygen = 0 " " Some lines of code were borrowed from Zhuojun Chen. @@ -26,13 +26,25 @@ if exists("b:current_syntax") finish endif -syn iskeyword @,48-57,_,. +if has("patch-7.4.1142") + syn iskeyword @,48-57,_,. +else + setlocal iskeyword=@,48-57,_,. +endif + +" The variables g:r_hl_roxygen and g:r_syn_minlines were renamed on April 8, 2017. +if exists("g:r_hl_roxygen") + let g:r_syntax_hl_roxygen = g:r_hl_roxygen +endif +if exists("g:r_syn_minlines") + let g:r_syntax_minlines = g:r_syn_minlines +endif if exists("g:r_syntax_folding") && g:r_syntax_folding setlocal foldmethod=syntax endif -if !exists("g:r_hl_roxygen") - let g:r_hl_roxygen = 1 +if !exists("g:r_syntax_hl_roxygen") + let g:r_syntax_hl_roxygen = 1 endif syn case match @@ -42,19 +54,106 @@ syn match rCommentTodo contained "\(BUG\|FIXME\|NOTE\|TODO\):" syn match rComment contains=@Spell,rCommentTodo,rOBlock "#.*" " Roxygen -if g:r_hl_roxygen - syn region rOBlock start="^\s*\n#\{1,2}' " start="\%^#\{1,2}' " end="^\(#\{1,2}'\)\@!" contains=rOTitle,rOKeyword,rOExamples,@Spell keepend - syn region rOTitle start="^\s*\n#\{1,2}' " start="\%^#\{1,2}' " end="^\(#\{1,2}'\s*$\)\@=" contained contains=rOCommentKey - syn match rOCommentKey "#\{1,2}'" containedin=rOTitle contained +if g:r_syntax_hl_roxygen + " A roxygen block can start at the beginning of a file (first version) and + " after a blank line (second version). It ends when a line that does not + " contain a roxygen comment. In the following comments, any line containing + " a roxygen comment marker (one or two hash signs # followed by a single + " quote ' and preceded only by whitespace) is called a roxygen line. A + " roxygen line containing only a roxygen comment marker, optionally followed + " by whitespace is called an empty roxygen line. - syn region rOExamples start="^#\{1,2}' @examples.*"rs=e+1,hs=e+1 end="^\(#\{1,2}' @.*\)\@=" end="^\(#\{1,2}'\)\@!" contained contains=rOKeyword + " First we match all roxygen blocks as containing only a title. In case an + " empty roxygen line ending the title or a tag is found, this will be + " overriden later by the definitions of rOBlock. + syn match rOTitleBlock "\%^\(\s*#\{1,2}' .*\n\)\{1,}" contains=rOCommentKey,rOTitleTag + syn match rOTitleBlock "^\s*\n\(\s*#\{1,2}' .*\n\)\{1,}" contains=rOCommentKey,rOTitleTag - syn match rOKeyword contained "@\(param\|return\|name\|rdname\|examples\|example\|include\|docType\)" - syn match rOKeyword contained "@\(S3method\|TODO\|aliases\|alias\|assignee\|author\|callGraphDepth\|callGraph\)" - syn match rOKeyword contained "@\(callGraphPrimitives\|concept\|exportClass\|exportMethod\|exportPattern\|export\|formals\)" - syn match rOKeyword contained "@\(format\|importClassesFrom\|importFrom\|importMethodsFrom\|import\|keywords\|useDynLib\)" - syn match rOKeyword contained "@\(method\|noRd\|note\|references\|seealso\|setClass\|slot\|source\|title\|usage\)" - syn match rOKeyword contained "@\(family\|template\|templateVar\|description\|details\|inheritParams\|field\)" + " When a roxygen block has a title and additional content, the title + " consists of one or more roxygen lines (as little as possible are matched), + " followed either by an empty roxygen line + syn region rOBlock start="\%^\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" end="^\s*\(#\{1,2}'\)\@!" contains=rOTitle,rOTag,rOExamples,@Spell keepend fold + syn region rOBlock start="^\s*\n\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" end="^\s*\(#\{1,2}'\)\@!" contains=rOTitle,rOTag,rOExamples,@Spell keepend fold + + " or by a roxygen tag (we match everything starting with @ but not @@ which is used as escape sequence for a literal @). + syn region rOBlock start="\%^\(\s*#\{1,2}' .*\n\)\{-}\s*#\{1,2}' @\(@\)\@!" end="^\s*\(#\{1,2}'\)\@!" contains=rOTitle,rOTag,rOExamples,@Spell keepend fold + syn region rOBlock start="^\s*\n\(\s*#\{1,2}' .*\n\)\{-}\s*#\{1,2}' @\(@\)\@!" end="^\s*\(#\{1,2}'\)\@!" contains=rOTitle,rOTag,rOExamples,@Spell keepend fold + + " If a block contains an @rdname, @describeIn tag, it may have paragraph breaks, but does not have a title + syn region rOBlockNoTitle start="\%^\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*\n\(\s*#\{1,2}'.*\n\)\{-}\s*#\{1,2}' @rdname" end="^\s*\(#\{1,2}'\)\@!" contains=rOTag,rOExamples,@Spell keepend fold + syn region rOBlockNoTitle start="^\s*\n\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*\n\(\s*#\{1,2}'.*\n\)\{-}\s*#\{1,2}' @rdname" end="^\s*\(#\{1,2}'\)\@!" contains=rOTag,rOExamples,@Spell keepend fold + syn region rOBlockNoTitle start="\%^\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*\n\(\s*#\{1,2}'.*\n\)\{-}\s*#\{1,2}' @describeIn" end="^\s*\(#\{1,2}'\)\@!" contains=rOTag,rOExamples,@Spell keepend fold + syn region rOBlockNoTitle start="^\s*\n\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*\n\(\s*#\{1,2}'.*\n\)\{-}\s*#\{1,2}' @describeIn" end="^\s*\(#\{1,2}'\)\@!" contains=rOTag,rOExamples,@Spell keepend fold + + " A title as part of a block is always at the beginning of the block, i.e. + " either at the start of a file or after a completely empty line. + syn match rOTitle "\%^\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" contained contains=rOCommentKey,rOTitleTag + syn match rOTitle "^\s*\n\(\s*#\{1,2}' .*\n\)\{-1,}\s*#\{1,2}'\s*$" contained contains=rOCommentKey,rOTitleTag + syn match rOTitleTag contained "@title" + + syn match rOCommentKey "#\{1,2}'" contained + syn region rOExamples start="^#\{1,2}' @examples.*"rs=e+1,hs=e+1 end="^\(#\{1,2}' @.*\)\@=" end="^\(#\{1,2}'\)\@!" contained contains=rOTag fold + + " rOTag list generated from the lists in + " https://github.com/klutometis/roxygen/R/rd.R and + " https://github.com/klutometis/roxygen/R/namespace.R + " using s/^ \([A-Za-z0-9]*\) = .*/ syn match rOTag contained "@\1"/ + " Plus we need the @include tag + + " rd.R + syn match rOTag contained "@aliases" + syn match rOTag contained "@author" + syn match rOTag contained "@backref" + syn match rOTag contained "@concept" + syn match rOTag contained "@describeIn" + syn match rOTag contained "@description" + syn match rOTag contained "@details" + syn match rOTag contained "@docType" + syn match rOTag contained "@encoding" + syn match rOTag contained "@evalRd" + syn match rOTag contained "@example" + syn match rOTag contained "@examples" + syn match rOTag contained "@family" + syn match rOTag contained "@field" + syn match rOTag contained "@format" + syn match rOTag contained "@inherit" + syn match rOTag contained "@inheritParams" + syn match rOTag contained "@inheritDotParams" + syn match rOTag contained "@inheritSection" + syn match rOTag contained "@keywords" + syn match rOTag contained "@method" + syn match rOTag contained "@name" + syn match rOTag contained "@md" + syn match rOTag contained "@noMd" + syn match rOTag contained "@noRd" + syn match rOTag contained "@note" + syn match rOTag contained "@param" + syn match rOTag contained "@rdname" + syn match rOTag contained "@rawRd" + syn match rOTag contained "@references" + syn match rOTag contained "@return" + syn match rOTag contained "@section" + syn match rOTag contained "@seealso" + syn match rOTag contained "@slot" + syn match rOTag contained "@source" + syn match rOTag contained "@template" + syn match rOTag contained "@templateVar" + syn match rOTag contained "@title" + syn match rOTag contained "@usage" + " namespace.R + syn match rOTag contained "@export" + syn match rOTag contained "@exportClass" + syn match rOTag contained "@exportMethod" + syn match rOTag contained "@exportPattern" + syn match rOTag contained "@import" + syn match rOTag contained "@importClassesFrom" + syn match rOTag contained "@importFrom" + syn match rOTag contained "@importMethodsFrom" + syn match rOTag contained "@rawNamespace" + syn match rOTag contained "@S3method" + syn match rOTag contained "@useDynLib" + " other + syn match rOTag contained "@include" endif @@ -168,12 +267,28 @@ syn match rBraceError "[)}]" contained syn match rCurlyError "[)\]]" contained syn match rParenError "[\]}]" contained -if !exists("g:R_hi_fun") - let g:R_hi_fun = 1 +" Use Nvim-R to highlight functions dynamically if it is installed +if !exists("g:r_syntax_fun_pattern") + let s:ff = split(substitute(globpath(&rtp, "R/functions.vim"), "functions.vim", "", "g"), "\n") + if len(s:ff) > 0 + let g:r_syntax_fun_pattern = 0 + else + let g:r_syntax_fun_pattern = 1 + endif endif -if g:R_hi_fun - " Nvim-R: - runtime R/functions.vim + +" Only use Nvim-R to highlight functions if they should not be highlighted +" according to a generic pattern +if g:r_syntax_fun_pattern == 1 + syn match rFunction '[0-9a-zA-Z_\.]\+\s*\ze(' +else + if !exists("g:R_hi_fun") + let g:R_hi_fun = 1 + endif + if g:R_hi_fun + " Nvim-R: + runtime R/functions.vim + endif endif syn match rDollar display contained "\$" @@ -205,8 +320,8 @@ if &filetype == "rhelp" syn match rhSection "\\dontrun\>" endif -if exists("r_syn_minlines") - exe "syn sync minlines=" . r_syn_minlines +if exists("r_syntax_minlines") + exe "syn sync minlines=" . r_syntax_minlines else syn sync minlines=40 endif @@ -243,15 +358,17 @@ hi def link rStatement Statement hi def link rString String hi def link rStrError Error hi def link rType Type -if g:r_hl_roxygen - hi def link rOKeyword Title - hi def link rOBlock Comment +if g:r_syntax_hl_roxygen + hi def link rOTitleTag Operator + hi def link rOTag Operator + hi def link rOTitleBlock Title + hi def link rOBlock Comment + hi def link rOBlockNoTitle Comment hi def link rOTitle Title hi def link rOCommentKey Comment hi def link rOExamples SpecialComment endif - let b:current_syntax="r" " vim: ts=8 sw=2 diff --git a/runtime/syntax/rmd.vim b/runtime/syntax/rmd.vim index 48fb5e079c..05435354ad 100644 --- a/runtime/syntax/rmd.vim +++ b/runtime/syntax/rmd.vim @@ -1,17 +1,26 @@ " markdown Text with R statements " Language: markdown with R code chunks " Homepage: https://github.com/jalvesaq/R-Vim-runtime -" Last Change: Tue Jun 28, 2016 10:09AM +" Last Change: Sat Jan 28, 2017 10:06PM " " CONFIGURATION: -" To highlight chunk headers as R code, put in your vimrc: +" To highlight chunk headers as R code, put in your vimrc (e.g. .config/nvim/init.vim): " let rmd_syn_hl_chunk = 1 +" +" For highlighting pandoc extensions to markdown like citations and TeX and +" many other advanced features like folding of markdown sections, it is +" recommended to install the vim-pandoc filetype plugin as well as the +" vim-pandoc-syntax filetype plugin from https://github.com/vim-pandoc. +" +" TODO: +" - Provide highlighting for rmarkdown parameters in yaml header if exists("b:current_syntax") finish endif -" load all of pandoc info +" load all of pandoc info, e.g. from +" https://github.com/vim-pandoc/vim-pandoc-syntax runtime syntax/pandoc.vim if exists("b:current_syntax") let rmdIsPandoc = 1 @@ -22,28 +31,54 @@ else if exists("b:current_syntax") unlet b:current_syntax endif + + " load all of the yaml syntax highlighting rules into @yaml + syntax include @yaml syntax/yaml.vim + if exists("b:current_syntax") + unlet b:current_syntax + endif + + " highlight yaml block commonly used for front matter + syntax region rmdYamlBlock matchgroup=rmdYamlBlockDelim start="^---" matchgroup=rmdYamlBlockDelim end="^---" contains=@yaml keepend fold endif -" load all of the r syntax highlighting rules into @R -syntax include @R syntax/r.vim -if exists("b:current_syntax") - unlet b:current_syntax -endif - -if exists("g:rmd_syn_hl_chunk") - " highlight R code inside chunk header - syntax match rmdChunkDelim "^[ \t]*```{r" contained - syntax match rmdChunkDelim "}$" contained +if !exists("g:rmd_syn_langs") + let g:rmd_syn_langs = ["r"] else - syntax match rmdChunkDelim "^[ \t]*```{r.*}$" contained + let s:hasr = 0 + for s:lng in g:rmd_syn_langs + if s:lng == "r" + let s:hasr = 1 + endif + endfor + if s:hasr == 0 + let g:rmd_syn_langs += ["r"] + endif endif -syntax match rmdChunkDelim "^[ \t]*```$" contained -syntax region rmdChunk start="^[ \t]*``` *{r.*}$" end="^[ \t]*```$" contains=@R,rmdChunkDelim keepend fold + +for s:lng in g:rmd_syn_langs + exe 'syntax include @' . toupper(s:lng) . ' syntax/'. s:lng . '.vim' + if exists("b:current_syntax") + unlet b:current_syntax + endif + exe 'syntax region rmd' . toupper(s:lng) . 'Chunk start="^[ \t]*``` *{\(' . s:lng . '\|r.*engine\s*=\s*["' . "']" . s:lng . "['" . '"]\).*}$" end="^[ \t]*```$" contains=@' . toupper(s:lng) . ',rmd' . toupper(s:lng) . 'ChunkDelim keepend fold' + + if exists("g:rmd_syn_hl_chunk") && s:lng == "r" + " highlight R code inside chunk header + syntax match rmdRChunkDelim "^[ \t]*```{r" contained + syntax match rmdRChunkDelim "}$" contained + else + exe 'syntax match rmd' . toupper(s:lng) . 'ChunkDelim "^[ \t]*```{\(' . s:lng . '\|r.*engine\s*=\s*["' . "']" . s:lng . "['" . '"]\).*}$" contained' + endif + exe 'syntax match rmd' . toupper(s:lng) . 'ChunkDelim "^[ \t]*```$" contained' +endfor + " also match and syntax highlight in-line R code -syntax match rmdEndInline "`" contained -syntax match rmdBeginInline "`r " contained -syntax region rmdrInline start="`r " end="`" contains=@R,rmdBeginInline,rmdEndInline keepend +syntax region rmdrInline matchgroup=rmdInlineDelim start="`r " end="`" contains=@R containedin=pandocLaTeXRegion,yamlFlowString keepend +" I was not able to highlight rmdrInline inside a pandocLaTeXCommand, although +" highlighting works within pandocLaTeXRegion and yamlFlowString. +syntax cluster texMathZoneGroup add=rmdrInline " match slidify special marker syntax match rmdSlidifySpecial "\*\*\*" @@ -56,8 +91,6 @@ if rmdIsPandoc == 0 if exists("b:current_syntax") unlet b:current_syntax endif - " Extend cluster - syn cluster texMathZoneGroup add=rmdrInline " Inline syntax match rmdLaTeXInlDelim "\$" syntax match rmdLaTeXInlDelim "\\\$" @@ -65,19 +98,24 @@ if rmdIsPandoc == 0 " Region syntax match rmdLaTeXRegDelim "\$\$" contained syntax match rmdLaTeXRegDelim "\$\$latex$" contained - syntax region rmdLaTeXRegion start="^\$\$" skip="\\\$" end="\$\$$" contains=@LaTeX,rmdLaTeXSt,rmdLaTeXRegDelim keepend - syntax region rmdLaTeXRegion2 start="^\\\[" end="\\\]" contains=@LaTeX,rmdLaTeXSt,rmdLaTeXRegDelim keepend + syntax match rmdLaTeXSt "\\[a-zA-Z]\+" + syntax region rmdLaTeXRegion start="^\$\$" skip="\\\$" end="\$\$$" contains=@LaTeX,rmdLaTeXRegDelim keepend + syntax region rmdLaTeXRegion2 start="^\\\[" end="\\\]" contains=@LaTeX,rmdLaTeXRegDelim keepend + hi def link rmdBlockQuote Comment hi def link rmdLaTeXSt Statement hi def link rmdLaTeXInlDelim Special hi def link rmdLaTeXRegDelim Special endif -syn sync match rmdSyncChunk grouphere rmdChunk "^[ \t]*``` *{r" +for s:lng in g:rmd_syn_langs + exe 'syn sync match rmd' . toupper(s:lng) . 'SyncChunk grouphere rmd' . toupper(s:lng) . 'Chunk /^[ \t]*``` *{\(' . s:lng . '\|r.*engine\s*=\s*["' . "']" . s:lng . "['" . '"]\)/' +endfor -hi def link rmdChunkDelim Special -hi def link rmdBeginInline Special -hi def link rmdEndInline Special -hi def link rmdBlockQuote Comment +hi def link rmdYamlBlockDelim Delim +for s:lng in g:rmd_syn_langs + exe 'hi def link rmd' . toupper(s:lng) . 'ChunkDelim Special' +endfor +hi def link rmdInlineDelim Special hi def link rmdSlidifySpecial Special let b:current_syntax = "rmd" From 49a627dbd913f92d708c0eace7f7878fd6d18d3e Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Tue, 7 Nov 2017 01:17:06 +0100 Subject: [PATCH 13/76] vim-patch:94237495c03f Updated runtime files. https://github.com/vim/vim/commit/94237495c03f919a60b262fdcd3861e1931fc45a --- runtime/doc/editing.txt | 7 ++ runtime/doc/eval.txt | 4 +- runtime/doc/index.txt | 30 +++--- runtime/filetype.vim | 7 +- runtime/syntax/zsh.vim | 226 +++++----------------------------------- 5 files changed, 54 insertions(+), 220 deletions(-) diff --git a/runtime/doc/editing.txt b/runtime/doc/editing.txt index 0099d14822..9f771374ed 100644 --- a/runtime/doc/editing.txt +++ b/runtime/doc/editing.txt @@ -1364,6 +1364,13 @@ If you want to automatically reload a file when it has been changed outside of Vim, set the 'autoread' option. This doesn't work at the moment you write the file though, only when the file wasn't changed inside of Vim. +If you do not want to be asked or automatically reload the file, you can use +this: > + set buftype=nofile + +Or, when starting gvim from a shell: > + gvim file.log -c "set buftype=nofile" + Note that if a FileChangedShell autocommand is defined you will not get a warning message or prompt. The autocommand is expected to handle this. diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index d9b47a3ab0..23612d1216 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -6843,7 +6843,7 @@ setqflist({list} [, {action}[, {what}]]) *setqflist()* This function can be used to create a quickfix list independent of the 'errorformat' setting. Use a command like - ":cc 1" to jump to the first position. + `:cc 1` to jump to the first position. *setreg()* @@ -10435,7 +10435,7 @@ as this example shows: > The "" here is a real CR character, type CTRL-V Enter to get it. When the |+eval| feature is available the ":" is remapped to add a double -quote, which has the effect of commenging-out the command. without the +quote, which has the effect of commenting-out the command. without the |+eval| feature the nnoremap command is skipped and the command is executed. ============================================================================== diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt index bde4bcb630..0d6fb26ed6 100644 --- a/runtime/doc/index.txt +++ b/runtime/doc/index.txt @@ -298,10 +298,10 @@ tag char note action in Normal mode ~ |B| B 1 cursor N WORDS backward |C| ["x]C 2 change from the cursor position to the end of the line, and N-1 more lines [into - buffer x]; synonym for "c$" + register x]; synonym for "c$" |D| ["x]D 2 delete the characters under the cursor until the end of the line and N-1 more - lines [into buffer x]; synonym for "d$" + lines [into register x]; synonym for "d$" |E| E 1 cursor forward to the end of WORD N |F| F{char} 1 cursor to the Nth occurrence of {char} to the left @@ -318,13 +318,13 @@ tag char note action in Normal mode ~ opposite direction |O| O 2 begin a new line above the cursor and insert text, repeat N times -|P| ["x]P 2 put the text [from buffer x] before the +|P| ["x]P 2 put the text [from register x] before the cursor N times |Q| Q switch to "Ex" mode |R| R 2 enter replace mode: overtype existing characters, repeat the entered text N-1 times -|S| ["x]S 2 delete N lines [into buffer x] and start +|S| ["x]S 2 delete N lines [into register x] and start insert; synonym for "cc". |T| T{char} 1 cursor till after Nth occurrence of {char} to the left @@ -332,8 +332,8 @@ tag char note action in Normal mode ~ |V| V start linewise Visual mode |W| W 1 cursor N WORDS forward |X| ["x]X 2 delete N characters before the cursor [into - buffer x] -|Y| ["x]Y yank N lines [into buffer x]; synonym for + register x] +|Y| ["x]Y yank N lines [into register x]; synonym for "yy" |ZZ| ZZ store current file if modified, and exit |ZQ| ZQ exit current file always @@ -356,12 +356,12 @@ tag char note action in Normal mode ~ |`}| `} 1 cursor to the end of the current paragraph |a| a 2 append text after the cursor N times |b| b 1 cursor N words backward -|c| ["x]c{motion} 2 delete Nmove text [into buffer x] and start +|c| ["x]c{motion} 2 delete Nmove text [into register x] and + start insert +|cc| ["x]cc 2 delete N lines [into register x] and start insert -|cc| ["x]cc 2 delete N lines [into buffer x] and start - insert -|d| ["x]d{motion} 2 delete Nmove text [into buffer x] -|dd| ["x]dd 2 delete N lines [into buffer x] +|d| ["x]d{motion} 2 delete Nmove text [into register x] +|dd| ["x]dd 2 delete N lines [into register x] |do| do 2 same as ":diffget" |dp| dp 2 same as ":diffput" |e| e 1 cursor forward to the end of word N @@ -387,16 +387,16 @@ tag char note action in Normal mode ~ |q?| q? edit ? command-line in command-line window |r| r{char} 2 replace N chars with {char} |s| ["x]s 2 (substitute) delete N characters [into - buffer x] and start insert + register x] and start insert |t| t{char} 1 cursor till before Nth occurrence of {char} to the right |u| u 2 undo changes |v| v start characterwise Visual mode |w| w 1 cursor N words forward |x| ["x]x 2 delete N characters under and after the - cursor [into buffer x] -|y| ["x]y{motion} yank Nmove text [into buffer x] -|yy| ["x]yy yank N lines [into buffer x] + cursor [into register x] +|y| ["x]y{motion} yank Nmove text [into register x] +|yy| ["x]yy yank N lines [into register x] |z| z{char} commands starting with 'z', see |z| below |{| { 1 cursor N paragraphs backward |bar| | 1 cursor to column N diff --git a/runtime/filetype.vim b/runtime/filetype.vim index 6de4f2fbb8..1bfbca5764 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -1,7 +1,7 @@ " Vim support file to detect file types " " Maintainer: Bram Moolenaar -" Last Change: 2017 Mar 27 +" Last Change: 2017 Apr 20 " Listen very carefully, I will say this only once if exists("did_load_filetypes") @@ -2128,7 +2128,10 @@ au BufNewFile,BufRead ssh_config,*/.ssh/config setf sshconfig au BufNewFile,BufRead sshd_config setf sshdconfig " Stata -au BufNewFile,BufRead *.ado,*.class,*.do,*.imata,*.mata setf stata +au BufNewFile,BufRead *.ado,*.do,*.imata,*.mata setf stata +" Also *.class, but not when it's a Java bytecode file +au BufNewFile,BufRead *.class + \ if getline(1) !~ "^\xca\xfe\xba\xbe" | setf stata | endif " SMCL au BufNewFile,BufRead *.hlp,*.ihlp,*.smcl setf smcl diff --git a/runtime/syntax/zsh.vim b/runtime/syntax/zsh.vim index 0d385a35d0..c69ef153a0 100644 --- a/runtime/syntax/zsh.vim +++ b/runtime/syntax/zsh.vim @@ -2,9 +2,9 @@ " Language: Zsh shell script " Maintainer: Christian Brabandt " Previous Maintainer: Nikolai Weibull -" Latest Revision: 2016-02-15 +" Latest Revision: 2017-04-10 " License: Vim (see :h license) -" Repository: https://github.com/chrisbra/vim-zsh +" Repository: https://github.com/chrisbra/vim-zsh if exists("b:current_syntax") finish @@ -24,7 +24,7 @@ endif syn keyword zshTodo contained TODO FIXME XXX NOTE -syn region zshComment oneline start='\%(^\|\s*\)#' end='$' +syn region zshComment oneline start='\%(^\|\s\+\)#' end='$' \ contains=zshTodo,@Spell fold syn region zshComment start='^\s*#' end='^\%(\s*#\)\@!' @@ -88,33 +88,20 @@ syn match zshVariable '\<\h\w*' contained syn match zshVariableDef '\<\h\w*\ze+\==' " XXX: how safe is this? syn region zshVariableDef oneline - \ start='\$\@' -if s:zsh_syntax_variables =~ 'short\|all' - syn match zshShortDeref '\$[!#$*@?_-]\w\@!' - syn match zshShortDeref '\$[=^~]*[#+]*\d\+\>' -endif +syn match zshLongDeref '\$\%(ARGC\|argv\|status\|pipestatus\|CPUTYPE\|EGID\|EUID\|ERRNO\|GID\|HOST\|LINENO\|LOGNAME\)' +syn match zshLongDeref '\$\%(MACHTYPE\|OLDPWD OPTARG\|OPTIND\|OSTYPE\|PPID\|PWD\|RANDOM\|SECONDS\|SHLVL\|signals\)' +syn match zshLongDeref '\$\%(TRY_BLOCK_ERROR\|TTY\|TTYIDLE\|UID\|USERNAME\|VENDOR\|ZSH_NAME\|ZSH_VERSION\|REPLY\|reply\|TERM\)' -if s:zsh_syntax_variables =~ 'long\|all' - syn match zshLongDeref '\$\%(ARGC\|argv\|status\|pipestatus\|CPUTYPE\|EGID\|EUID\|ERRNO\|GID\|HOST\|LINENO\|LOGNAME\)' - syn match zshLongDeref '\$\%(MACHTYPE\|OLDPWD OPTARG\|OPTIND\|OSTYPE\|PPID\|PWD\|RANDOM\|SECONDS\|SHLVL\|signals\)' - syn match zshLongDeref '\$\%(TRY_BLOCK_ERROR\|TTY\|TTYIDLE\|UID\|USERNAME\|VENDOR\|ZSH_NAME\|ZSH_VERSION\|REPLY\|reply\|TERM\)' -endif - -if s:zsh_syntax_variables =~ 'all' - syn match zshDeref '\$[=^~]*[#+]*\h\w*\>' -else - syn match zshDeref transparent contains=NONE '\$[=^~]*[#+]*\h\w*\>' -endif +syn match zshDollarVar '\$\h\w*' +syn match zshDeref '\$[=^~]*[#+]*\h\w*\>' syn match zshCommands '\%(^\|\s\)[.:]\ze\s' syn keyword zshCommands alias autoload bg bindkey break bye cap cd @@ -126,10 +113,10 @@ syn keyword zshCommands alias autoload bg bindkey break bye cap cd \ functions getcap getln getopts hash history \ jobs kill let limit log logout popd print \ printf pushd pushln pwd r read readonly - \ rehash return sched set setcap setopt shift + \ rehash return sched set setcap shift \ source stat suspend test times trap true \ ttyctl type ulimit umask unalias unfunction - \ unhash unlimit unset unsetopt vared wait + \ unhash unlimit unset vared wait \ whence where which zcompile zformat zftp zle \ zmodload zparseopts zprof zpty zregexparse \ zsocket zstyle ztcp @@ -145,163 +132,9 @@ syn keyword zshCommands alias autoload bg bindkey break bye cap cd " done syn case ignore -syn keyword zshOptions aliases allexport all_export alwayslastprompt - \ always_last_prompt always_lastprompt alwaystoend always_to_end appendcreate - \ append_create appendhistory append_history autocd auto_cd autocontinue - \ auto_continue autolist auto_list - \ automenu auto_menu autonamedirs auto_name_dirs - \ autoparamkeys auto_param_keys autoparamslash - \ auto_param_slash autopushd auto_pushd autoremoveslash - \ auto_remove_slash autoresume auto_resume badpattern bad_pattern - \ banghist bang_hist bareglobqual bare_glob_qual - \ bashautolist bash_auto_list bashrematch bash_rematch - \ beep bgnice bg_nice braceccl brace_ccl braceexpand brace_expand - \ bsdecho bsd_echo caseglob case_glob casematch case_match - \ cbases c_bases cdablevars cdable_vars cd_able_vars chasedots chase_dots - \ chaselinks chase_links checkjobs check_jobs - \ clobber combiningchars combining_chars completealiases - \ complete_aliases completeinword complete_in_word - \ continueonerror continue_on_error correct - \ correctall correct_all cprecedences c_precedences - \ cshjunkiehistory csh_junkie_history cshjunkieloops - \ csh_junkie_loops cshjunkiequotes csh_junkie_quotes - \ csh_nullcmd csh_null_cmd cshnullcmd csh_null_cmd cshnullglob csh_null_glob - \ debugbeforecmd debug_before_cmd dotglob dot_glob dvorak - \ emacs equals errexit err_exit errreturn err_return evallineno - \ eval_lineno exec extendedglob extended_glob extendedhistory - \ extended_history flowcontrol flow_control forcefloat - \ force_float functionargzero function_argzero function_arg_zero glob globalexport - \ global_export globalrcs global_rcs globassign glob_assign - \ globcomplete glob_complete globdots glob_dots glob_subst - \ globsubst globstarshort glob_star_short hashall hash_all hashcmds - \ hash_cmds hashdirs hash_dirs hashexecutablesonly hash_executables_only - \ hashlistall hash_list_all histallowclobber hist_allow_clobber histappend - \ hist_append histbeep hist_beep hist_expand hist_expire_dups_first - \ histexpand histexpiredupsfirst histfcntllock hist_fcntl_lock - \ histfindnodups hist_find_no_dups histignorealldups - \ hist_ignore_all_dups histignoredups hist_ignore_dups - \ histignorespace hist_ignore_space histlexwords hist_lex_words - \ histnofunctions hist_no_functions histnostore hist_no_store - \ histreduceblanks hist_reduce_blanks histsavebycopy - \ hist_save_by_copy histsavenodups hist_save_no_dups - \ histsubstpattern hist_subst_pattern histverify hist_verify - \ hup ignorebraces ignore_braces ignoreclosebraces ignore_close_braces - \ ignoreeof ignore_eof incappendhistory inc_append_history - \ incappendhistorytime inc_append_history_time interactive - \ interactivecomments interactive_comments ksharrays ksh_arrays - \ kshautoload ksh_autoload kshglob ksh_glob kshoptionprint - \ ksh_option_print kshtypeset ksh_typeset kshzerosubscript - \ ksh_zero_subscript listambiguous list_ambiguous listbeep - \ list_beep listpacked list_packed listrowsfirst list_rows_first - \ listtypes list_types localloops local_loops localoptions - \ local_options localpatterns local_patterns localtraps - \ local_traps log login longlistjobs long_list_jobs magicequalsubst - \ magic_equal_subst mailwarn mail_warn mail_warning mark_dirs - \ mailwarning markdirs menucomplete menu_complete monitor - \ multibyte multi_byte multifuncdef multi_func_def multios - \ multi_os nomatch no_match notify nullglob null_glob numericglobsort - \ numeric_glob_sort octalzeroes octal_zeroes onecmd one_cmd - \ overstrike over_strike pathdirs path_dirs pathscript - \ path_script physical pipefail pipe_fail posixaliases - \ posix_aliases posixargzero posix_arg_zero posix_argzero posixbuiltins - \ posix_builtins posixcd posix_cd posixidentifiers posix_identifiers - \ posixjobs posix_jobs posixstrings posix_strings posixtraps - \ posix_traps printeightbit print_eight_bit printexitvalue - \ print_exit_value privileged promptbang prompt_bang promptcr - \ prompt_cr promptpercent prompt_percent promptsp prompt_sp - \ promptsubst prompt_subst promptvars prompt_vars pushdignoredups - \ pushd_ignore_dups pushdminus pushd_minus pushdsilent pushd_silent - \ pushdtohome pushd_to_home rcexpandparam rc_expandparam rc_expand_param rcquotes - \ rc_quotes rcs recexact rec_exact rematchpcre re_match_pcre rematch_pcre - \ restricted rmstarsilent rm_star_silent rmstarwait rm_star_wait - \ sharehistory share_history shfileexpansion sh_file_expansion - \ shglob sh_glob shinstdin shin_stdin shnullcmd sh_nullcmd - \ shoptionletters sh_option_letters shortloops short_loops shwordsplit - \ sh_word_split singlecommand single_command singlelinezle single_line_zle - \ sourcetrace source_trace stdin sunkeyboardhack sun_keyboard_hack - \ trackall track_all transientrprompt transient_rprompt - \ trapsasync traps_async typesetsilent type_set_silent typeset_silent unset verbose vi - \ warncreateglobal warn_create_global xtrace zle -syn keyword zshOptions noaliases no_aliases noallexport no_allexport noall_export no_all_export noalwayslastprompt no_alwayslastprompt - \ noalways_lastprompt no_always_lastprompt no_always_last_prompt noalwaystoend no_alwaystoend noalways_to_end no_always_to_end - \ noappendcreate no_appendcreate no_append_create noappendhistory no_appendhistory noappend_history no_append_history noautocd - \ no_autocd no_auto_cd noautocontinue no_autocontinue noauto_continue no_auto_continue noautolist no_autolist noauto_list - \ no_auto_list noautomenu no_automenu noauto_menu no_auto_menu noautonamedirs no_autonamedirs noauto_name_dirs - \ no_auto_name_dirs noautoparamkeys no_autoparamkeys noauto_param_keys no_auto_param_keys noautoparamslash no_autoparamslash - \ noauto_param_slash no_auto_param_slash noautopushd no_autopushd noauto_pushd no_auto_pushd noautoremoveslash no_autoremoveslash - \ noauto_remove_slash no_auto_remove_slash noautoresume no_autoresume noauto_resume no_auto_resume nobadpattern no_badpattern no_bad_pattern - \ nobanghist no_banghist nobang_hist no_bang_hist nobareglobqual no_bareglobqual nobare_glob_qual no_bare_glob_qual - \ nobashautolist no_bashautolist nobash_auto_list no_bash_auto_list nobashrematch no_bashrematch nobash_rematch no_bash_rematch - \ nobeep no_beep nobgnice no_bgnice no_bg_nice nobraceccl no_braceccl nobrace_ccl no_brace_ccl nobraceexpand no_braceexpand nobrace_expand no_brace_expand - \ nobsdecho no_bsdecho nobsd_echo no_bsd_echo nocaseglob no_caseglob nocase_glob no_case_glob nocasematch no_casematch nocase_match no_case_match - \ nocbases no_cbases no_c_bases nocdablevars no_cdablevars no_cdable_vars nocd_able_vars no_cd_able_vars nochasedots no_chasedots nochase_dots no_chase_dots - \ nochaselinks no_chaselinks nochase_links no_chase_links nocheckjobs no_checkjobs nocheck_jobs no_check_jobs - \ noclobber no_clobber nocombiningchars no_combiningchars nocombining_chars no_combining_chars nocompletealiases no_completealiases - \ nocomplete_aliases no_complete_aliases nocompleteinword no_completeinword nocomplete_in_word no_complete_in_word - \ nocontinueonerror no_continueonerror nocontinue_on_error no_continue_on_error nocorrect no_correct - \ nocorrectall no_correctall nocorrect_all no_correct_all nocprecedences no_cprecedences noc_precedences no_c_precedences - \ nocshjunkiehistory no_cshjunkiehistory nocsh_junkie_history no_csh_junkie_history nocshjunkieloops no_cshjunkieloops - \ nocsh_junkie_loops no_csh_junkie_loops nocshjunkiequotes no_cshjunkiequotes nocsh_junkie_quotes no_csh_junkie_quotes - \ nocshnullcmd no_cshnullcmd no_csh_nullcmd nocsh_null_cmd no_csh_null_cmd nocshnullglob no_cshnullglob nocsh_null_glob no_csh_null_glob - \ nodebugbeforecmd no_debugbeforecmd nodebug_before_cmd no_debug_before_cmd nodotglob no_dotglob nodot_glob no_dot_glob nodvorak no_dvorak - \ noemacs no_emacs noequals no_equals noerrexit no_errexit noerr_exit no_err_exit noerrreturn no_errreturn noerr_return no_err_return noevallineno no_evallineno - \ noeval_lineno no_eval_lineno noexec no_exec noextendedglob no_extendedglob noextended_glob no_extended_glob noextendedhistory no_extendedhistory - \ noextended_history no_extended_history noflowcontrol no_flowcontrol noflow_control no_flow_control noforcefloat no_forcefloat - \ noforce_float no_force_float nofunctionargzero no_functionargzero nofunction_arg_zero no_function_argzero no_function_arg_zero noglob no_glob noglobalexport no_globalexport - \ noglobal_export no_global_export noglobalrcs no_globalrcs noglobal_rcs no_global_rcs noglobassign no_globassign noglob_assign no_glob_assign - \ noglobcomplete no_globcomplete noglob_complete no_glob_complete noglobdots no_globdots noglob_dots no_glob_dots - \ noglobstarshort no_glob_star_short noglob_subst no_glob_subst - \ noglobsubst no_globsubst nohashall no_hashall nohash_all no_hash_all nohashcmds no_hashcmds nohash_cmds no_hash_cmds nohashdirs no_hashdirs - \ nohash_dirs no_hash_dirs nohashexecutablesonly no_hashexecutablesonly nohash_executables_only no_hash_executables_only nohashlistall no_hashlistall - \ nohash_list_all no_hash_list_all nohistallowclobber no_histallowclobber nohist_allow_clobber no_hist_allow_clobber nohistappend no_histappend - \ nohist_append no_hist_append nohistbeep no_histbeep nohist_beep no_hist_beep nohist_expand no_hist_expand nohist_expire_dups_first no_hist_expire_dups_first - \ nohistexpand no_histexpand nohistexpiredupsfirst no_histexpiredupsfirst nohistfcntllock no_histfcntllock nohist_fcntl_lock no_hist_fcntl_lock - \ nohistfindnodups no_histfindnodups nohist_find_no_dups no_hist_find_no_dups nohistignorealldups no_histignorealldups - \ nohist_ignore_all_dups no_hist_ignore_all_dups nohistignoredups no_histignoredups nohist_ignore_dups no_hist_ignore_dups - \ nohistignorespace no_histignorespace nohist_ignore_space no_hist_ignore_space nohistlexwords no_histlexwords nohist_lex_words no_hist_lex_words - \ nohistnofunctions no_histnofunctions nohist_no_functions no_hist_no_functions nohistnostore no_histnostore nohist_no_store no_hist_no_store - \ nohistreduceblanks no_histreduceblanks nohist_reduce_blanks no_hist_reduce_blanks nohistsavebycopy no_histsavebycopy - \ nohist_save_by_copy no_hist_save_by_copy nohistsavenodups no_histsavenodups nohist_save_no_dups no_hist_save_no_dups - \ nohistsubstpattern no_histsubstpattern nohist_subst_pattern no_hist_subst_pattern nohistverify no_histverify nohist_verify no_hist_verify - \ nohup no_hup noignorebraces no_ignorebraces noignore_braces no_ignore_braces noignoreclosebraces no_ignoreclosebraces noignore_close_braces no_ignore_close_braces - \ noignoreeof no_ignoreeof noignore_eof no_ignore_eof noincappendhistory no_incappendhistory noinc_append_history no_inc_append_history - \ noincappendhistorytime no_incappendhistorytime noinc_append_history_time no_inc_append_history_time nointeractive no_interactive - \ nointeractivecomments no_interactivecomments nointeractive_comments no_interactive_comments noksharrays no_ksharrays noksh_arrays no_ksh_arrays - \ nokshautoload no_kshautoload noksh_autoload no_ksh_autoload nokshglob no_kshglob noksh_glob no_ksh_glob nokshoptionprint no_kshoptionprint - \ noksh_option_print no_ksh_option_print nokshtypeset no_kshtypeset noksh_typeset no_ksh_typeset nokshzerosubscript no_kshzerosubscript - \ noksh_zero_subscript no_ksh_zero_subscript nolistambiguous no_listambiguous nolist_ambiguous no_list_ambiguous nolistbeep no_listbeep - \ nolist_beep no_list_beep nolistpacked no_listpacked nolist_packed no_list_packed nolistrowsfirst no_listrowsfirst nolist_rows_first no_list_rows_first - \ nolisttypes no_listtypes nolist_types no_list_types nolocalloops no_localloops nolocal_loops no_local_loops nolocaloptions no_localoptions - \ nolocal_options no_local_options nolocalpatterns no_localpatterns nolocal_patterns no_local_patterns nolocaltraps no_localtraps - \ nolocal_traps no_local_traps nolog no_log nologin no_login nolonglistjobs no_longlistjobs nolong_list_jobs no_long_list_jobs nomagicequalsubst no_magicequalsubst - \ nomagic_equal_subst no_magic_equal_subst nomailwarn no_mailwarn nomail_warn no_mail_warn nomail_warning no_mail_warning nomark_dirs no_mark_dirs - \ nomailwarning no_mailwarning nomarkdirs no_markdirs nomenucomplete no_menucomplete nomenu_complete no_menu_complete nomonitor no_monitor - \ nomultibyte no_multibyte nomulti_byte no_multi_byte nomultifuncdef no_multifuncdef nomulti_func_def no_multi_func_def nomultios no_multios - \ nomulti_os no_multi_os nonomatch no_nomatch nono_match no_no_match nonotify no_notify nonullglob no_nullglob nonull_glob no_null_glob nonumericglobsort no_numericglobsort - \ nonumeric_glob_sort no_numeric_glob_sort nooctalzeroes no_octalzeroes nooctal_zeroes no_octal_zeroes noonecmd no_onecmd noone_cmd no_one_cmd - \ nooverstrike no_overstrike noover_strike no_over_strike nopathdirs no_pathdirs nopath_dirs no_path_dirs nopathscript no_pathscript - \ nopath_script no_path_script nophysical no_physical nopipefail no_pipefail nopipe_fail no_pipe_fail noposixaliases no_posixaliases - \ noposix_aliases no_posix_aliases noposixargzero no_posixargzero no_posix_argzero noposix_arg_zero no_posix_arg_zero noposixbuiltins no_posixbuiltins - \ noposix_builtins no_posix_builtins noposixcd no_posixcd noposix_cd no_posix_cd noposixidentifiers no_posixidentifiers noposix_identifiers no_posix_identifiers - \ noposixjobs no_posixjobs noposix_jobs no_posix_jobs noposixstrings no_posixstrings noposix_strings no_posix_strings noposixtraps no_posixtraps - \ noposix_traps no_posix_traps noprinteightbit no_printeightbit noprint_eight_bit no_print_eight_bit noprintexitvalue no_printexitvalue - \ noprint_exit_value no_print_exit_value noprivileged no_privileged nopromptbang no_promptbang noprompt_bang no_prompt_bang nopromptcr no_promptcr - \ noprompt_cr no_prompt_cr nopromptpercent no_promptpercent noprompt_percent no_prompt_percent nopromptsp no_promptsp noprompt_sp no_prompt_sp - \ nopromptsubst no_promptsubst noprompt_subst no_prompt_subst nopromptvars no_promptvars noprompt_vars no_prompt_vars nopushdignoredups no_pushdignoredups - \ nopushd_ignore_dups no_pushd_ignore_dups nopushdminus no_pushdminus nopushd_minus no_pushd_minus nopushdsilent no_pushdsilent nopushd_silent no_pushd_silent - \ nopushdtohome no_pushdtohome nopushd_to_home no_pushd_to_home norcexpandparam no_rcexpandparam norc_expandparam no_rc_expandparam no_rc_expand_param norcquotes no_rcquotes - \ norc_quotes no_rc_quotes norcs no_rcs norecexact no_recexact norec_exact no_rec_exact norematchpcre no_rematchpcre nore_match_pcre no_re_match_pcre no_rematch_pcre - \ norestricted no_restricted normstarsilent no_rmstarsilent norm_star_silent no_rm_star_silent normstarwait no_rmstarwait norm_star_wait no_rm_star_wait - \ nosharehistory no_sharehistory noshare_history no_share_history noshfileexpansion no_shfileexpansion nosh_file_expansion no_sh_file_expansion - \ noshglob no_shglob nosh_glob no_sh_glob noshinstdin no_shinstdin noshin_stdin no_shin_stdin noshnullcmd no_shnullcmd nosh_nullcmd no_sh_nullcmd - \ noshoptionletters no_shoptionletters nosh_option_letters no_sh_option_letters noshortloops no_shortloops noshort_loops no_short_loops noshwordsplit no_shwordsplit - \ nosh_word_split no_sh_word_split nosinglecommand no_singlecommand nosingle_command no_single_command nosinglelinezle no_singlelinezle nosingle_line_zle no_single_line_zle - \ nosourcetrace no_sourcetrace nosource_trace no_source_trace nostdin no_stdin nosunkeyboardhack no_sunkeyboardhack nosun_keyboard_hack no_sun_keyboard_hack - \ notrackall no_trackall notrack_all no_track_all notransientrprompt no_transientrprompt notransient_rprompt no_transient_rprompt - \ notrapsasync no_trapsasync notrapasync no_trapasync no_traps_async notypesetsilent no_typesetsilent notype_set_silent no_type_set_silent no_typeset_silent \nounset no_unset - \ noverbose no_verbose novi no_vi nowarncreateglobal no_warncreateglobal nowarn_create_global no_warn_create_global noxtrace no_xtrace nozle no_zle -syn case match +syn match zshOptStart /^\s*\%(\%(\%(un\)\?setopt\)\|set\s+[-+]o\)/ nextgroup=zshOption skipwhite +syn match zshOption /\%(\%(no_\?\)\?aliases\)\|\%(\%(no_\?\)\?allexport\)\|\%(\%(no_\?\)\?all_export\)\|\%(\%(no_\?\)\?alwayslastprompt\)\|\%(\%(no_\?\)\?always_last_prompt\)\|\%(\%(no_\?\)\?always_lastprompt\)\|\%(\%(no_\?\)\?alwaystoend\)\|\%(\%(no_\?\)\?always_to_end\)\|\%(\%(no_\?\)\?appendcreate\)\|\%(\%(no_\?\)\?append_create\)\|\%(\%(no_\?\)\?appendhistory\)\|\%(\%(no_\?\)\?append_history\)\|\%(\%(no_\?\)\?autocd\)\|\%(\%(no_\?\)\?auto_cd\)\|\%(\%(no_\?\)\?autocontinue\)\|\%(\%(no_\?\)\?auto_continue\)\|\%(\%(no_\?\)\?autolist\)\|\%(\%(no_\?\)\?auto_list\)\|\%(\%(no_\?\)\?automenu\)\|\%(\%(no_\?\)\?auto_menu\)\|\%(\%(no_\?\)\?autonamedirs\)\|\%(\%(no_\?\)\?auto_name_dirs\)\|\%(\%(no_\?\)\?autoparamkeys\)\|\%(\%(no_\?\)\?auto_param_keys\)\|\%(\%(no_\?\)\?autoparamslash\)\|\%(\%(no_\?\)\?auto_param_slash\)\|\%(\%(no_\?\)\?autopushd\)\|\%(\%(no_\?\)\?auto_pushd\)\|\%(\%(no_\?\)\?autoremoveslash\)\|\%(\%(no_\?\)\?auto_remove_slash\)\|\%(\%(no_\?\)\?autoresume\)\|\%(\%(no_\?\)\?auto_resume\)\|\%(\%(no_\?\)\?badpattern\)\|\%(\%(no_\?\)\?bad_pattern\)\|\%(\%(no_\?\)\?banghist\)\|\%(\%(no_\?\)\?bang_hist\)\|\%(\%(no_\?\)\?bareglobqual\)\|\%(\%(no_\?\)\?bare_glob_qual\)\|\%(\%(no_\?\)\?bashautolist\)\|\%(\%(no_\?\)\?bash_auto_list\)\|\%(\%(no_\?\)\?bashrematch\)\|\%(\%(no_\?\)\?bash_rematch\)\|\%(\%(no_\?\)\?beep\)\|\%(\%(no_\?\)\?bgnice\)\|\%(\%(no_\?\)\?bg_nice\)\|\%(\%(no_\?\)\?braceccl\)\|\%(\%(no_\?\)\?brace_ccl\)\|\%(\%(no_\?\)\?braceexpand\)\|\%(\%(no_\?\)\?brace_expand\)\|\%(\%(no_\?\)\?bsdecho\)\|\%(\%(no_\?\)\?bsd_echo\)\|\%(\%(no_\?\)\?caseglob\)\|\%(\%(no_\?\)\?case_glob\)\|\%(\%(no_\?\)\?casematch\)\|\%(\%(no_\?\)\?case_match\)\|\%(\%(no_\?\)\?cbases\)\|\%(\%(no_\?\)\?c_bases\)\|\%(\%(no_\?\)\?cdablevars\)\|\%(\%(no_\?\)\?cdable_vars\)\|\%(\%(no_\?\)\?cd_able_vars\)\|\%(\%(no_\?\)\?chasedots\)\|\%(\%(no_\?\)\?chase_dots\)\|\%(\%(no_\?\)\?chaselinks\)\|\%(\%(no_\?\)\?chase_links\)\|\%(\%(no_\?\)\?checkjobs\)\|\%(\%(no_\?\)\?check_jobs\)\|\%(\%(no_\?\)\?clobber\)\|\%(\%(no_\?\)\?combiningchars\)\|\%(\%(no_\?\)\?combining_chars\)\|\%(\%(no_\?\)\?completealiases\)\|\%(\%(no_\?\)\?complete_aliases\)\|\%(\%(no_\?\)\?completeinword\)\|\%(\%(no_\?\)\?complete_in_word\)\|\%(\%(no_\?\)\?continueonerror\)\|\%(\%(no_\?\)\?continue_on_error\)\|\%(\%(no_\?\)\?correct\)\|\%(\%(no_\?\)\?correctall\)\|\%(\%(no_\?\)\?correct_all\)\|\%(\%(no_\?\)\?cprecedences\)\|\%(\%(no_\?\)\?c_precedences\)\|\%(\%(no_\?\)\?cshjunkiehistory\)\|\%(\%(no_\?\)\?csh_junkie_history\)\|\%(\%(no_\?\)\?cshjunkieloops\)\|\%(\%(no_\?\)\?csh_junkie_loops\)\|\%(\%(no_\?\)\?cshjunkiequotes\)\|\%(\%(no_\?\)\?csh_junkie_quotes\)\|\%(\%(no_\?\)\?csh_nullcmd\)\|\%(\%(no_\?\)\?csh_null_cmd\)\|\%(\%(no_\?\)\?cshnullcmd\)\|\%(\%(no_\?\)\?csh_null_cmd\)\|\%(\%(no_\?\)\?cshnullglob\)\|\%(\%(no_\?\)\?csh_null_glob\)\|\%(\%(no_\?\)\?debugbeforecmd\)\|\%(\%(no_\?\)\?debug_before_cmd\)\|\%(\%(no_\?\)\?dotglob\)\|\%(\%(no_\?\)\?dot_glob\)\|\%(\%(no_\?\)\?dvorak\)\|\%(\%(no_\?\)\?emacs\)\|\%(\%(no_\?\)\?equals\)\|\%(\%(no_\?\)\?errexit\)\|\%(\%(no_\?\)\?err_exit\)\|\%(\%(no_\?\)\?errreturn\)\|\%(\%(no_\?\)\?err_return\)\|\%(\%(no_\?\)\?evallineno\)\|\%(\%(no_\?\)\?eval_lineno\)\|\%(\%(no_\?\)\?exec\)\|\%(\%(no_\?\)\?extendedglob\)\|\%(\%(no_\?\)\?extended_glob\)\|\%(\%(no_\?\)\?extendedhistory\)\|\%(\%(no_\?\)\?extended_history\)\|\%(\%(no_\?\)\?flowcontrol\)\|\%(\%(no_\?\)\?flow_control\)\|\%(\%(no_\?\)\?forcefloat\)\|\%(\%(no_\?\)\?force_float\)\|\%(\%(no_\?\)\?functionargzero\)\|\%(\%(no_\?\)\?function_argzero\)\|\%(\%(no_\?\)\?function_arg_zero\)\|\%(\%(no_\?\)\?glob\)\|\%(\%(no_\?\)\?globalexport\)\|\%(\%(no_\?\)\?global_export\)\|\%(\%(no_\?\)\?globalrcs\)\|\%(\%(no_\?\)\?global_rcs\)\|\%(\%(no_\?\)\?globassign\)\|\%(\%(no_\?\)\?glob_assign\)\|\%(\%(no_\?\)\?globcomplete\)\|\%(\%(no_\?\)\?glob_complete\)\|\%(\%(no_\?\)\?globdots\)\|\%(\%(no_\?\)\?glob_dots\)\|\%(\%(no_\?\)\?glob_subst\)\|\%(\%(no_\?\)\?globsubst\)\|\%(\%(no_\?\)\?globstarshort\)\|\%(\%(no_\?\)\?glob_star_short\)\|\%(\%(no_\?\)\?hashall\)\|\%(\%(no_\?\)\?hash_all\)\|\%(\%(no_\?\)\?hashcmds\)\|\%(\%(no_\?\)\?hash_cmds\)\|\%(\%(no_\?\)\?hashdirs\)\|\%(\%(no_\?\)\?hash_dirs\)\|\%(\%(no_\?\)\?hashexecutablesonly\)\|\%(\%(no_\?\)\?hash_executables_only\)\|\%(\%(no_\?\)\?hashlistall\)\|\%(\%(no_\?\)\?hash_list_all\)\|\%(\%(no_\?\)\?histallowclobber\)\|\%(\%(no_\?\)\?hist_allow_clobber\)\|\%(\%(no_\?\)\?histappend\)\|\%(\%(no_\?\)\?hist_append\)\|\%(\%(no_\?\)\?histbeep\)\|\%(\%(no_\?\)\?hist_beep\)\|\%(\%(no_\?\)\?hist_expand\)\|\%(\%(no_\?\)\?hist_expire_dups_first\)\|\%(\%(no_\?\)\?histexpand\)\|\%(\%(no_\?\)\?histexpiredupsfirst\)\|\%(\%(no_\?\)\?histfcntllock\)\|\%(\%(no_\?\)\?hist_fcntl_lock\)\|\%(\%(no_\?\)\?histfindnodups\)\|\%(\%(no_\?\)\?hist_find_no_dups\)\|\%(\%(no_\?\)\?histignorealldups\)\|\%(\%(no_\?\)\?hist_ignore_all_dups\)\|\%(\%(no_\?\)\?histignoredups\)\|\%(\%(no_\?\)\?hist_ignore_dups\)\|\%(\%(no_\?\)\?histignorespace\)\|\%(\%(no_\?\)\?hist_ignore_space\)\|\%(\%(no_\?\)\?histlexwords\)\|\%(\%(no_\?\)\?hist_lex_words\)\|\%(\%(no_\?\)\?histnofunctions\)\|\%(\%(no_\?\)\?hist_no_functions\)\|\%(\%(no_\?\)\?histnostore\)\|\%(\%(no_\?\)\?hist_no_store\)\|\%(\%(no_\?\)\?histreduceblanks\)\|\%(\%(no_\?\)\?hist_reduce_blanks\)\|\%(\%(no_\?\)\?histsavebycopy\)\|\%(\%(no_\?\)\?hist_save_by_copy\)\|\%(\%(no_\?\)\?histsavenodups\)\|\%(\%(no_\?\)\?hist_save_no_dups\)\|\%(\%(no_\?\)\?histsubstpattern\)\|\%(\%(no_\?\)\?hist_subst_pattern\)\|\%(\%(no_\?\)\?histverify\)\|\%(\%(no_\?\)\?hist_verify\)\|\%(\%(no_\?\)\?hup\)\|\%(\%(no_\?\)\?ignorebraces\)\|\%(\%(no_\?\)\?ignore_braces\)\|\%(\%(no_\?\)\?ignoreclosebraces\)\|\%(\%(no_\?\)\?ignore_close_braces\)\|\%(\%(no_\?\)\?ignoreeof\)\|\%(\%(no_\?\)\?ignore_eof\)\|\%(\%(no_\?\)\?incappendhistory\)\|\%(\%(no_\?\)\?inc_append_history\)\|\%(\%(no_\?\)\?incappendhistorytime\)\|\%(\%(no_\?\)\?inc_append_history_time\)\|\%(\%(no_\?\)\?interactive\)\|\%(\%(no_\?\)\?interactivecomments\)\|\%(\%(no_\?\)\?interactive_comments\)\|\%(\%(no_\?\)\?ksharrays\)\|\%(\%(no_\?\)\?ksh_arrays\)\|\%(\%(no_\?\)\?kshautoload\)\|\%(\%(no_\?\)\?ksh_autoload\)\|\%(\%(no_\?\)\?kshglob\)\|\%(\%(no_\?\)\?ksh_glob\)\|\%(\%(no_\?\)\?kshoptionprint\)\|\%(\%(no_\?\)\?ksh_option_print\)\|\%(\%(no_\?\)\?kshtypeset\)\|\%(\%(no_\?\)\?ksh_typeset\)\|\%(\%(no_\?\)\?kshzerosubscript\)\|\%(\%(no_\?\)\?ksh_zero_subscript\)\|\%(\%(no_\?\)\?listambiguous\)\|\%(\%(no_\?\)\?list_ambiguous\)\|\%(\%(no_\?\)\?listbeep\)\|\%(\%(no_\?\)\?list_beep\)\|\%(\%(no_\?\)\?listpacked\)\|\%(\%(no_\?\)\?list_packed\)\|\%(\%(no_\?\)\?listrowsfirst\)\|\%(\%(no_\?\)\?list_rows_first\)\|\%(\%(no_\?\)\?listtypes\)\|\%(\%(no_\?\)\?list_types\)\|\%(\%(no_\?\)\?localloops\)\|\%(\%(no_\?\)\?local_loops\)\|\%(\%(no_\?\)\?localoptions\)\|\%(\%(no_\?\)\?local_options\)\|\%(\%(no_\?\)\?localpatterns\)\|\%(\%(no_\?\)\?local_patterns\)\|\%(\%(no_\?\)\?localtraps\)\|\%(\%(no_\?\)\?local_traps\)\|\%(\%(no_\?\)\?log\)\|\%(\%(no_\?\)\?login\)\|\%(\%(no_\?\)\?longlistjobs\)\|\%(\%(no_\?\)\?long_list_jobs\)\|\%(\%(no_\?\)\?magicequalsubst\)\|\%(\%(no_\?\)\?magic_equal_subst\)\|\%(\%(no_\?\)\?mailwarn\)\|\%(\%(no_\?\)\?mail_warn\)\|\%(\%(no_\?\)\?mail_warning\)\|\%(\%(no_\?\)\?mark_dirs\)\|\%(\%(no_\?\)\?mailwarning\)\|\%(\%(no_\?\)\?markdirs\)\|\%(\%(no_\?\)\?menucomplete\)\|\%(\%(no_\?\)\?menu_complete\)\|\%(\%(no_\?\)\?monitor\)\|\%(\%(no_\?\)\?multibyte\)\|\%(\%(no_\?\)\?multi_byte\)\|\%(\%(no_\?\)\?multifuncdef\)\|\%(\%(no_\?\)\?multi_func_def\)\|\%(\%(no_\?\)\?multios\)\|\%(\%(no_\?\)\?multi_os\)\|\%(\%(no_\?\)\?nomatch\)\|\%(\%(no_\?\)\?no_match\)\|\%(\%(no_\?\)\?notify\)\|\%(\%(no_\?\)\?nullglob\)\|\%(\%(no_\?\)\?null_glob\)\|\%(\%(no_\?\)\?numericglobsort\)\|\%(\%(no_\?\)\?numeric_glob_sort\)\|\%(\%(no_\?\)\?octalzeroes\)\|\%(\%(no_\?\)\?octal_zeroes\)\|\%(\%(no_\?\)\?onecmd\)\|\%(\%(no_\?\)\?one_cmd\)\|\%(\%(no_\?\)\?overstrike\)\|\%(\%(no_\?\)\?over_strike\)\|\%(\%(no_\?\)\?pathdirs\)\|\%(\%(no_\?\)\?path_dirs\)\|\%(\%(no_\?\)\?pathscript\)\|\%(\%(no_\?\)\?path_script\)\|\%(\%(no_\?\)\?physical\)\|\%(\%(no_\?\)\?pipefail\)\|\%(\%(no_\?\)\?pipe_fail\)\|\%(\%(no_\?\)\?posixaliases\)\|\%(\%(no_\?\)\?posix_aliases\)\|\%(\%(no_\?\)\?posixargzero\)\|\%(\%(no_\?\)\?posix_arg_zero\)\|\%(\%(no_\?\)\?posix_argzero\)\|\%(\%(no_\?\)\?posixbuiltins\)\|\%(\%(no_\?\)\?posix_builtins\)\|\%(\%(no_\?\)\?posixcd\)\|\%(\%(no_\?\)\?posix_cd\)\|\%(\%(no_\?\)\?posixidentifiers\)\|\%(\%(no_\?\)\?posix_identifiers\)\|\%(\%(no_\?\)\?posixjobs\)\|\%(\%(no_\?\)\?posix_jobs\)\|\%(\%(no_\?\)\?posixstrings\)\|\%(\%(no_\?\)\?posix_strings\)\|\%(\%(no_\?\)\?posixtraps\)\|\%(\%(no_\?\)\?posix_traps\)\|\%(\%(no_\?\)\?printeightbit\)\|\%(\%(no_\?\)\?print_eight_bit\)\|\%(\%(no_\?\)\?printexitvalue\)\|\%(\%(no_\?\)\?print_exit_value\)\|\%(\%(no_\?\)\?privileged\)\|\%(\%(no_\?\)\?promptbang\)\|\%(\%(no_\?\)\?prompt_bang\)\|\%(\%(no_\?\)\?promptcr\)\|\%(\%(no_\?\)\?prompt_cr\)\|\%(\%(no_\?\)\?promptpercent\)\|\%(\%(no_\?\)\?prompt_percent\)\|\%(\%(no_\?\)\?promptsp\)\|\%(\%(no_\?\)\?prompt_sp\)\|\%(\%(no_\?\)\?promptsubst\)\|\%(\%(no_\?\)\?prompt_subst\)\|\%(\%(no_\?\)\?promptvars\)\|\%(\%(no_\?\)\?prompt_vars\)\|\%(\%(no_\?\)\?pushdignoredups\)\|\%(\%(no_\?\)\?pushd_ignore_dups\)\|\%(\%(no_\?\)\?pushdminus\)\|\%(\%(no_\?\)\?pushd_minus\)\|\%(\%(no_\?\)\?pushdsilent\)\|\%(\%(no_\?\)\?pushd_silent\)\|\%(\%(no_\?\)\?pushdtohome\)\|\%(\%(no_\?\)\?pushd_to_home\)\|\%(\%(no_\?\)\?rcexpandparam\)\|\%(\%(no_\?\)\?rc_expandparam\)\|\%(\%(no_\?\)\?rc_expand_param\)\|\%(\%(no_\?\)\?rcquotes\)\|\%(\%(no_\?\)\?rc_quotes\)\|\%(\%(no_\?\)\?rcs\)\|\%(\%(no_\?\)\?recexact\)\|\%(\%(no_\?\)\?rec_exact\)\|\%(\%(no_\?\)\?rematchpcre\)\|\%(\%(no_\?\)\?re_match_pcre\)\|\%(\%(no_\?\)\?rematch_pcre\)\|\%(\%(no_\?\)\?restricted\)\|\%(\%(no_\?\)\?rmstarsilent\)\|\%(\%(no_\?\)\?rm_star_silent\)\|\%(\%(no_\?\)\?rmstarwait\)\|\%(\%(no_\?\)\?rm_star_wait\)\|\%(\%(no_\?\)\?sharehistory\)\|\%(\%(no_\?\)\?share_history\)\|\%(\%(no_\?\)\?shfileexpansion\)\|\%(\%(no_\?\)\?sh_file_expansion\)\|\%(\%(no_\?\)\?shglob\)\|\%(\%(no_\?\)\?sh_glob\)\|\%(\%(no_\?\)\?shinstdin\)\|\%(\%(no_\?\)\?shin_stdin\)\|\%(\%(no_\?\)\?shnullcmd\)\|\%(\%(no_\?\)\?sh_nullcmd\)\|\%(\%(no_\?\)\?shoptionletters\)\|\%(\%(no_\?\)\?sh_option_letters\)\|\%(\%(no_\?\)\?shortloops\)\|\%(\%(no_\?\)\?short_loops\)\|\%(\%(no_\?\)\?shwordsplit\)\|\%(\%(no_\?\)\?sh_word_split\)\|\%(\%(no_\?\)\?singlecommand\)\|\%(\%(no_\?\)\?single_command\)\|\%(\%(no_\?\)\?singlelinezle\)\|\%(\%(no_\?\)\?single_line_zle\)\|\%(\%(no_\?\)\?sourcetrace\)\|\%(\%(no_\?\)\?source_trace\)\|\%(\%(no_\?\)\?stdin\)\|\%(\%(no_\?\)\?sunkeyboardhack\)\|\%(\%(no_\?\)\?sun_keyboard_hack\)\|\%(\%(no_\?\)\?trackall\)\|\%(\%(no_\?\)\?track_all\)\|\%(\%(no_\?\)\?transientrprompt\)\|\%(\%(no_\?\)\?transient_rprompt\)\|\%(\%(no_\?\)\?trapsasync\)\|\%(\%(no_\?\)\?traps_async\)\|\%(\%(no_\?\)\?typesetsilent\)\|\%(\%(no_\?\)\?type_set_silent\)\|\%(\%(no_\?\)\?typeset_silent\)\|\%(\%(no_\?\)\?unset\)\|\%(\%(no_\?\)\?verbose\)\|\%(\%(no_\?\)\?vi\)\|\%(\%(no_\?\)\?warncreateglobal\)\|\%(\%(no_\?\)\?warn_create_global\)\|\%(\%(no_\?\)\?xtrace\)\|\%(\%(no_\?\)\?zle\)/ nextgroup=zshOption skipwhite contained syn keyword zshTypes float integer local typeset declare private @@ -319,9 +152,9 @@ syn cluster zshSubst contains=zshSubst,zshOldSubst,zshMathSubst syn region zshSubst matchgroup=zshSubstDelim transparent \ start='\$(' skip='\\)' end=')' contains=TOP fold syn region zshParentheses transparent start='(' skip='\\)' end=')' fold +syn region zshGlob start='(#' end=')' syn region zshMathSubst matchgroup=zshSubstDelim transparent - \ start='\$((' skip='\\)' - \ matchgroup=zshSubstDelim end='))' + \ start='\$((' skip='\\)' end='))' \ contains=zshParentheses,@zshSubst,zshNumber, \ @zshDerefs,zshString keepend fold syn region zshBrackets contained transparent start='{' skip='\\}' @@ -359,23 +192,13 @@ hi def link zshRedir Operator hi def link zshVariable None hi def link zshVariableDef zshVariable hi def link zshDereferencing PreProc -if s:zsh_syntax_variables =~ 'short\|all' - hi def link zshShortDeref zshDereferencing -else - hi def link zshShortDeref None -endif -if s:zsh_syntax_variables =~ 'long\|all' - hi def link zshLongDeref zshDereferencing -else - hi def link zshLongDeref None -endif -if s:zsh_syntax_variables =~ 'all' - hi def link zshDeref zshDereferencing -else - hi def link zshDeref None -endif +hi def link zshShortDeref zshDereferencing +hi def link zshLongDeref zshDereferencing +hi def link zshDeref zshDereferencing +hi def link zshDollarVar zshDereferencing hi def link zshCommands Keyword -hi def link zshOptions Constant +hi def link zshOptStart Keyword +hi def link zshOption Constant hi def link zshTypes Type hi def link zshSwitches Special hi def link zshNumber Number @@ -383,6 +206,7 @@ hi def link zshSubst PreProc hi def link zshMathSubst zshSubst hi def link zshOldSubst zshSubst hi def link zshSubstDelim zshSubst +hi def link zshGlob zshSubst let b:current_syntax = "zsh" From 60179b8a3be5ffeb5543660c45a71d99634259ee Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Tue, 7 Nov 2017 01:20:13 +0100 Subject: [PATCH 14/76] vim-patch:0635ee682481 Runtime file updates https://github.com/vim/vim/commit/0635ee682481e2da0d39cd970b3cb573a1c12a17 --- runtime/syntax/php.vim | 50 +++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/runtime/syntax/php.vim b/runtime/syntax/php.vim index 278fc1358c..8f78beff94 100644 --- a/runtime/syntax/php.vim +++ b/runtime/syntax/php.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: php PHP 3/4/5/7 " Maintainer: Jason Woofenden -" Last Change: Dec 11, 2016 +" Last Change: Apr 28, 2017 " URL: https://jasonwoof.com/gitweb/?p=vim-syntax.git;a=blob;f=php.vim;hb=HEAD " Former Maintainers: Peter Hodge " Debian VIM Maintainers @@ -11,32 +11,28 @@ " colourscheme, because elflord's colours will better highlight the break-points " (Statements) in your code. " -" Options: php_sql_query = 1 for SQL syntax highlighting inside strings -" php_htmlInStrings = 1 for HTML syntax highlighting inside strings -" php_baselib = 1 for highlighting baselib functions -" php_asp_tags = 1 for highlighting ASP-style short tags -" php_parent_error_close = 1 for highlighting parent error ] or ) -" php_parent_error_open = 1 for skipping an php end tag, if there exists an open ( or [ without a closing one -" php_oldStyle = 1 for using old colorstyle -" php_noShortTags = 1 don't sync as php -" php_folding = 1 for folding classes and functions -" php_folding = 2 for folding all { } regions -" php_sync_method = x -" x=-1 to sync by search ( default ) -" x>0 to sync at least x lines backwards -" x=0 to sync from start -" -" Added by Peter Hodge On June 9, 2006: -" php_special_functions = 1|0 to highlight functions with abnormal behaviour -" php_alt_comparisons = 1|0 to highlight comparison operators in an alternate colour -" php_alt_assignByReference = 1|0 to highlight '= &' in an alternate colour -" -" Note: these all default to 1 (On), so you would set them to '0' to turn them off. -" E.g., in your .vimrc or _vimrc file: -" let php_special_functions = 0 -" let php_alt_comparisons = 0 -" let php_alt_assignByReference = 0 -" Unletting these variables will revert back to their default (On). +" Options: +" Set to anything to enable: +" php_sql_query SQL syntax highlighting inside strings +" php_htmlInStrings HTML syntax highlighting inside strings +" php_baselib highlighting baselib functions +" php_asp_tags highlighting ASP-style short tags +" php_parent_error_close highlighting parent error ] or ) +" php_parent_error_open skipping an php end tag, if there exists +" an open ( or [ without a closing one +" php_oldStyle use old colorstyle +" php_noShortTags don't sync as php +" Set to a specific value: +" php_folding = 1 fold classes and functions +" php_folding = 2 fold all { } regions +" php_sync_method = x where x is an integer: +" -1 sync by search ( default ) +" >0 sync at least x lines backwards +" 0 sync from start +" Set to 0 to _disable_: (Added by Peter Hodge On June 9, 2006) +" php_special_functions = 0 highlight functions with abnormal behaviour +" php_alt_comparisons = 0 comparison operators in an alternate colour +" php_alt_assignByReference = 0 '= &' in an alternate colour " " " Note: From 78223bc97f6c7b4376ff9b8708e2bec4cea92f6d Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Tue, 7 Nov 2017 01:20:56 +0100 Subject: [PATCH 15/76] vim-patch:b4d6c3ea4a59 Update runtime files. https://github.com/vim/vim/commit/b4d6c3ea4a59c6d8d4e0e52120596866f0edd510 --- runtime/doc/options.txt | 6 ++ runtime/doc/pi_matchit.txt | 7 ++- runtime/doc/usr_44.txt | 2 +- runtime/filetype.vim | 11 ++-- runtime/ftplugin/sbt.vim | 15 +++++ runtime/indent/sh.vim | 19 +++--- runtime/indent/tex.vim | 119 ++++++++++++++++++++----------------- runtime/syntax/c.vim | 58 +++++++----------- runtime/syntax/sbt.vim | 32 ++++++++++ 9 files changed, 161 insertions(+), 108 deletions(-) create mode 100644 runtime/ftplugin/sbt.vim create mode 100644 runtime/syntax/sbt.vim diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 045f3ada45..20526677e9 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -711,6 +711,12 @@ A jump table for the options with a short description can be found at |Q_op|. < Vim will guess the value. In the GUI this should work correctly, in other cases Vim might not be able to guess the right value. + When the t_BG option is set, Vim will use it to request the background + color from the terminal. If the returned RGB value is dark/light and + 'background' is not dark/light, 'background' will be set and the + screen is redrawn. This may have side effects, make t_BG empty in + your .vimrc if you suspect this problem. + When starting the GUI, the default value for 'background' will be "light". When the value is not set in the gvimrc, and Vim detects that the background is actually quite dark, 'background' is set to diff --git a/runtime/doc/pi_matchit.txt b/runtime/doc/pi_matchit.txt index c711cd588f..652734f7bb 100644 --- a/runtime/doc/pi_matchit.txt +++ b/runtime/doc/pi_matchit.txt @@ -1,6 +1,6 @@ *pi_matchit.txt* Extended "%" matching -For Vim version 6.3. Last change: 2015 May 21 +For Vim version 6.3. Last change: 2017 May 14 *matchit* *matchit.vim* @@ -211,7 +211,7 @@ Examples: In LaTeX, since "%" is used as the comment character, you can > :let b:match_skip = 'r:%' < Unfortunately, this will skip anything after "\%", an escaped "%". To - allow for this, and also "\\%" (an excaped backslash followed by the + allow for this, and also "\\%" (an escaped backslash followed by the comment character) you can > :let b:match_skip = 'r:\(^\|[^\\]\)\(\\\\\)*%' < @@ -356,7 +356,8 @@ The back reference '\'.d refers to the same thing as '\'.b:match_table[d] in The various |:vmap|s defined in the script (%, |g%|, |[%|, |]%|, |a%|) may have undesired effects in Select mode |Select-mode-mapping|. At least, if you want to replace the selection with any character in "ag%[]" there will be a -pause of |'updatetime'| first. +pause of |'updatetime'| first. E.g., "yV%" would normally work linewise, but +the plugin mapping makes it characterwise. It would be nice if "\0" were recognized as the entire pattern. That is, it would be nice if "foo:\end\0" had the same effect as "\(foo\):\end\1". diff --git a/runtime/doc/usr_44.txt b/runtime/doc/usr_44.txt index fcd6b71219..b06557b950 100644 --- a/runtime/doc/usr_44.txt +++ b/runtime/doc/usr_44.txt @@ -686,7 +686,7 @@ that included files do this too, you might have to reset "b:current_syntax" if you include two files. If you want your syntax file to work with Vim 5.x, add a check for v:version. -See yacc.vim for an example. +Find an syntax file in the Vim 7.2 distribution for an example. Do not include anything that is a user preference. Don't set 'tabstop', 'expandtab', etc. These belong in a filetype plugin. diff --git a/runtime/filetype.vim b/runtime/filetype.vim index 1bfbca5764..a6ecdd401a 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -1,7 +1,7 @@ " Vim support file to detect file types " " Maintainer: Bram Moolenaar -" Last Change: 2017 Apr 20 +" Last Change: 2017 May 27 " Listen very carefully, I will say this only once if exists("did_load_filetypes") @@ -976,7 +976,7 @@ au BufNewFile,BufRead */etc/initng/*/*.i,*.ii setf initng " Innovation Data Processing au BufRead,BufNewFile upstream.dat\c,upstream.*.dat\c,*.upstream.dat\c setf upstreamdat -au BufRead,BufNewFile upstream.log\c,upstream.*.log\c,*.upstream.log\c setf upstreamlog +au BufRead,BufNewFile fdrupstream.log,upstream.log\c,upstream.*.log\c,*.upstream.log\c,UPSTREAM-*.log\c setf upstreamlog au BufRead,BufNewFile upstreaminstall.log\c,upstreaminstall.*.log\c,*.upstreaminstall.log\c setf upstreaminstalllog au BufRead,BufNewFile usserver.log\c,usserver.*.log\c,*.usserver.log\c setf usserverlog au BufRead,BufNewFile usw2kagt.log\c,usw2kagt.*.log\c,*.usw2kagt.log\c setf usw2kagtlog @@ -1414,8 +1414,8 @@ if has("fname_case") else au BufNewFile,BufRead *.pl call s:FTpl() endif -au BufNewFile,BufRead *.plx,*.al setf perl -au BufNewFile,BufRead *.p6,*.pm6,*.pl6 setf perl6 +au BufNewFile,BufRead *.plx,*.al,*.psgi setf perl +au BufNewFile,BufRead *.p6,*.pm6,*.pl6 setf perl6 func! s:FTpl() if exists("g:filetype_pl") @@ -1802,6 +1802,9 @@ au BufNewFile,BufRead *.sa setf sather " Scala au BufNewFile,BufRead *.scala setf scala +" SBT - Scala Build Tool +au BufNewFile,BufRead *.sbt setf sbt + " Scilab au BufNewFile,BufRead *.sci,*.sce setf scilab diff --git a/runtime/ftplugin/sbt.vim b/runtime/ftplugin/sbt.vim new file mode 100644 index 0000000000..309d30e503 --- /dev/null +++ b/runtime/ftplugin/sbt.vim @@ -0,0 +1,15 @@ +" Vim filetype plugin file +" Language: sbt +" Maintainer: Steven Dobay +" License: Same as Vim +" Last Change: 2017.04.30 +" ---------------------------------------------------------------------------- + +if exists('b:did_ftplugin') || &cp + finish +endif + +let b:did_ftplugin = 1 + +runtime! ftplugin/scala.vim + diff --git a/runtime/indent/sh.vim b/runtime/indent/sh.vim index aca110f504..ae4f4b53c4 100644 --- a/runtime/indent/sh.vim +++ b/runtime/indent/sh.vim @@ -3,10 +3,12 @@ " Maintainer: Christian Brabandt " Previous Maintainer: Peter Aronoff " Original Author: Nikolai Weibull -" Latest Revision: 2016-06-27 +" Latest Revision: 2017-05-02 " License: Vim (see :h license) " Repository: https://github.com/chrisbra/vim-sh-indent " Changelog: +" 20170502: - get rid of buffer-shiftwidth function +" 20160912: - preserve indentation of here-doc blocks " 20160627: - detect heredocs correctly " 20160213: - detect function definition correctly " 20160202: - use shiftwidth() function @@ -33,15 +35,11 @@ endif let s:cpo_save = &cpo set cpo&vim -function s:buffer_shiftwidth() - return shiftwidth() -endfunction - let s:sh_indent_defaults = { - \ 'default': function('s:buffer_shiftwidth'), - \ 'continuation-line': function('s:buffer_shiftwidth'), - \ 'case-labels': function('s:buffer_shiftwidth'), - \ 'case-statements': function('s:buffer_shiftwidth'), + \ 'default': function('shiftwidth'), + \ 'continuation-line': function('shiftwidth'), + \ 'case-labels': function('shiftwidth'), + \ 'case-statements': function('shiftwidth'), \ 'case-breaks': 0 } function! s:indent_value(option) @@ -110,6 +108,9 @@ function! GetShIndent() let ind -= s:indent_value('case-breaks') elseif s:is_here_doc(line) let ind = 0 + " statements, executed within a here document. Keep the current indent + elseif match(map(synstack(v:lnum, 1), 'synIDattr(v:val, "name")'), '\c\mheredoc') > -1 + return indent(v:lnum) endif return ind diff --git a/runtime/indent/tex.vim b/runtime/indent/tex.vim index 0150bb9623..fc6cc0a638 100644 --- a/runtime/indent/tex.vim +++ b/runtime/indent/tex.vim @@ -1,8 +1,8 @@ " Vim indent file " Language: LaTeX -" Maintainer: YiChao Zhou +" Maintainer: Yichao Zhou " Created: Sat, 16 Feb 2002 16:50:19 +0100 -" Version: 0.9.2 +" Version: 0.9.4 " Please email me if you found something I can do. Comments, bug report and " feature request are welcome. @@ -15,49 +15,53 @@ " 2005/06/15, Moshe Kaminsky " (*) New variables: " g:tex_items, g:tex_itemize_env, g:tex_noindent_env -" 2011/3/6, by Zhou YiChao +" 2011/3/6, by Yichao Zhou " (*) Don't change indentation of lines starting with '%' " I don't see any code with '%' and it doesn't work properly " so I add some code. " (*) New features: Add smartindent-like indent for "{}" and "[]". " (*) New variables: g:tex_indent_brace -" 2011/9/25, by Zhou Yichao +" 2011/9/25, by Yichao Zhou " (*) Bug fix: smartindent-like indent for "[]" " (*) New features: Align with "&". " (*) New variable: g:tex_indent_and. -" 2011/10/23 by Zhou Yichao +" 2011/10/23 by Yichao Zhou " (*) Bug fix: improve the smartindent-like indent for "{}" and " "[]". -" 2012/02/27 by Zhou Yichao +" 2012/02/27 by Yichao Zhou " (*) Bug fix: support default folding marker. " (*) Indent with "&" is not very handy. Make it not enable by " default. -" 2012/03/06 by Zhou Yichao +" 2012/03/06 by Yichao Zhou " (*) Modify "&" behavior and make it default again. Now "&" " won't align when there are more then one "&" in the previous " line. " (*) Add indent "\left(" and "\right)" " (*) Trust user when in "verbatim" and "lstlisting" -" 2012/03/11 by Zhou Yichao +" 2012/03/11 by Yichao Zhou " (*) Modify "&" so that only indent when current line start with " "&". -" 2012/03/12 by Zhou Yichao +" 2012/03/12 by Yichao Zhou " (*) Modify indentkeys. -" 2012/03/18 by Zhou Yichao +" 2012/03/18 by Yichao Zhou " (*) Add &cpo -" 2013/05/02 by Zhou Yichao +" 2013/05/02 by Yichao Zhou " (*) Fix problem about GetTeXIndent checker. Thank Albert Netymk " for reporting this. -" 2014/06/23 by Zhou Yichao +" 2014/06/23 by Yichao Zhou " (*) Remove the feature g:tex_indent_and because it is buggy. " (*) If there is not any obvious indentation hints, we do not " alert our user's current indentation. " (*) g:tex_indent_brace now only works if the open brace is the " last character of that line. -" 2014/08/03 by Zhou Yichao +" 2014/08/03 by Yichao Zhou " (*) Indent current line if last line has larger indentation -" 2014/08/09 by Zhou Yichao -" (*) Add missing return value for s:GetEndIndentation(...) +" 2016/11/08 by Yichao Zhou +" (*) Fix problems for \[ and \]. Thanks Bruno for reporting. +" 2017/04/30 by Yichao Zhou +" (*) Fix a bug between g:tex_noindent_env and g:tex_indent_items +" Now g:tex_noindent_env='document\|verbatim\|itemize' (Emacs +" style) is supported. Thanks Miles Wheeler for reporting. " " }}} @@ -81,44 +85,44 @@ " % Example 2 " \tikzexternalize[ " prefix=tikz] -" +" " * g:tex_indent_items " " If this variable is set, item-environments are indented like Emacs does " it, i.e., continuation lines are indented with a shiftwidth. -" +" " NOTE: I've already set the variable below; delete the corresponding line " if you don't like this behaviour. " " Per default, it is unset. -" +" " set unset " ---------------------------------------------------------------- -" \begin{itemize} \begin{itemize} +" \begin{itemize} \begin{itemize} " \item blablabla \item blablabla -" bla bla bla bla bla bla +" bla bla bla bla bla bla " \item blablabla \item blablabla -" bla bla bla bla bla bla -" \end{itemize} \end{itemize} +" bla bla bla bla bla bla +" \end{itemize} \end{itemize} " " " * g:tex_items " -" A list of tokens to be considered as commands for the beginning of an item -" command. The tokens should be separated with '\|'. The initial '\' should +" A list of tokens to be considered as commands for the beginning of an item +" command. The tokens should be separated with '\|'. The initial '\' should " be escaped. The default is '\\bibitem\|\\item'. " " * g:tex_itemize_env -" -" A list of environment names, separated with '\|', where the items (item -" commands matching g:tex_items) may appear. The default is +" +" A list of environment names, separated with '\|', where the items (item +" commands matching g:tex_items) may appear. The default is " 'itemize\|description\|enumerate\|thebibliography'. " " * g:tex_noindent_env " -" A list of environment names. separated with '\|', where no indentation is +" A list of environment names. separated with '\|', where no indentation is " required. The default is 'document\|verbatim'. -" }}} +" }}} " Only define the function once if exists("b:did_indent") @@ -146,7 +150,7 @@ if g:tex_indent_items let g:tex_itemize_env = 'itemize\|description\|enumerate\|thebibliography' endif if !exists('g:tex_items') - let g:tex_items = '\\bibitem\|\\item' + let g:tex_items = '\\bibitem\|\\item' endif else let g:tex_items = '' @@ -177,7 +181,7 @@ function! GetTeXIndent() " {{{ " At the start of the file use zero indent. if lnum == 0 - return 0 + return 0 endif let line = substitute(getline(lnum), '\s*%.*', '','g') " last line @@ -191,9 +195,9 @@ function! GetTeXIndent() " {{{ return indent(v:lnum) end endif - + if lnum == 0 - return 0 + return 0 endif let ind = indent(lnum) @@ -206,12 +210,14 @@ function! GetTeXIndent() " {{{ " Add a 'shiftwidth' after beginning of environments. " Don't add it for \begin{document} and \begin{verbatim} - ""if line =~ '^\s*\\begin{\(.*\)}' && line !~ 'verbatim' + " if line =~ '^\s*\\begin{\(.*\)}' && line !~ 'verbatim' " LH modification : \begin does not always start a line " ZYC modification : \end after \begin won't cause wrong indent anymore - if line =~ '\\begin{.*}' && line !~ g:tex_noindent_env - let ind = ind + &sw - let stay = 0 + if line =~ '\\begin{.*}' + if line !~ g:tex_noindent_env + let ind = ind + &sw + let stay = 0 + endif if g:tex_indent_items " Add another sw for item-environments @@ -245,29 +251,27 @@ function! GetTeXIndent() " {{{ endif if g:tex_indent_brace - let char = line[strlen(line)-1] - if char == '[' || char == '{' + if line =~ '[[{]$' let ind += &sw let stay = 0 endif - let cind = indent(v:lnum) - let char = cline[cind] - if (char == ']' || char == '}') && - \ s:CheckPairedIsLastCharacter(v:lnum, cind) + if cline =~ '^\s*\\\?[\]}]' && s:CheckPairedIsLastCharacter(v:lnum, indent(v:lnum)) let ind -= &sw let stay = 0 endif - for i in range(indent(lnum)+1, strlen(line)-1) - let char = line[i] - if char == ']' || char == '}' - if s:CheckPairedIsLastCharacter(lnum, i) - let ind -= &sw - let stay = 0 + if line !~ '^\s*\\\?[\]}]' + for i in range(indent(lnum)+1, strlen(line)-1) + let char = line[i] + if char == ']' || char == '}' + if s:CheckPairedIsLastCharacter(lnum, i) + let ind -= &sw + let stay = 0 + endif endif - endif - endfor + endfor + endif endif " Special treatment for 'item' @@ -309,12 +313,12 @@ function! s:GetLastBeginIndentation(lnum) " {{{ let matchend -= 1 endif if matchend == 0 - if line =~ g:tex_itemize_env - return indent(lnum) + 2 * &sw - endif if line =~ g:tex_noindent_env return indent(lnum) endif + if line =~ g:tex_itemize_env + return indent(lnum) + 2 * &sw + endif return indent(lnum) + &sw endif endfor @@ -348,12 +352,15 @@ endfunction " Most of the code is from matchparen.vim function! s:CheckPairedIsLastCharacter(lnum, col) "{{{ - " Get the character under the cursor and check if it's in 'matchpairs'. let c_lnum = a:lnum let c_col = a:col+1 + let line = getline(c_lnum) + if line[c_col-1] == '\' + let c_col = c_col + 1 + endif + let c = line[c_col-1] - let c = getline(c_lnum)[c_col-1] let plist = split(&matchpairs, '.\zs[:,]') let i = index(plist, c) if i < 0 diff --git a/runtime/syntax/c.vim b/runtime/syntax/c.vim index 16c7ce4d92..f659a87b71 100644 --- a/runtime/syntax/c.vim +++ b/runtime/syntax/c.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: C " Maintainer: Bram Moolenaar -" Last Change: 2016 Nov 18 +" Last Change: 2017 Apr 30 " Quit when a (custom) syntax file was already loaded if exists("b:current_syntax") @@ -311,44 +311,32 @@ if !exists("c_no_ansi") || exists("c_ansi_constants") || exists("c_gnu") syn keyword cConstant PTRDIFF_MIN PTRDIFF_MAX SIG_ATOMIC_MIN SIG_ATOMIC_MAX syn keyword cConstant SIZE_MAX WCHAR_MIN WCHAR_MAX WINT_MIN WINT_MAX endif - syn keyword cConstant FLT_RADIX FLT_ROUNDS - syn keyword cConstant FLT_DIG FLT_MANT_DIG FLT_EPSILON - syn keyword cConstant DBL_DIG DBL_MANT_DIG DBL_EPSILON - syn keyword cConstant LDBL_DIG LDBL_MANT_DIG LDBL_EPSILON - syn keyword cConstant FLT_MIN FLT_MAX FLT_MIN_EXP FLT_MAX_EXP - syn keyword cConstant FLT_MIN_10_EXP FLT_MAX_10_EXP - syn keyword cConstant DBL_MIN DBL_MAX DBL_MIN_EXP DBL_MAX_EXP - syn keyword cConstant DBL_MIN_10_EXP DBL_MAX_10_EXP - syn keyword cConstant LDBL_MIN LDBL_MAX LDBL_MIN_EXP LDBL_MAX_EXP - syn keyword cConstant LDBL_MIN_10_EXP LDBL_MAX_10_EXP - syn keyword cConstant HUGE_VAL CLOCKS_PER_SEC NULL - syn keyword cConstant LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY - syn keyword cConstant LC_NUMERIC LC_TIME - syn keyword cConstant SIG_DFL SIG_ERR SIG_IGN - syn keyword cConstant SIGABRT SIGFPE SIGILL SIGHUP SIGINT SIGSEGV SIGTERM + syn keyword cConstant FLT_RADIX FLT_ROUNDS FLT_DIG FLT_MANT_DIG FLT_EPSILON DBL_DIG DBL_MANT_DIG DBL_EPSILON + syn keyword cConstant LDBL_DIG LDBL_MANT_DIG LDBL_EPSILON FLT_MIN FLT_MAX FLT_MIN_EXP FLT_MAX_EXP FLT_MIN_10_EXP FLT_MAX_10_EXP + syn keyword cConstant DBL_MIN DBL_MAX DBL_MIN_EXP DBL_MAX_EXP DBL_MIN_10_EXP DBL_MAX_10_EXP LDBL_MIN LDBL_MAX LDBL_MIN_EXP LDBL_MAX_EXP + syn keyword cConstant LDBL_MIN_10_EXP LDBL_MAX_10_EXP HUGE_VAL CLOCKS_PER_SEC NULL LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY + syn keyword cConstant LC_NUMERIC LC_TIME SIG_DFL SIG_ERR SIG_IGN SIGABRT SIGFPE SIGILL SIGHUP SIGINT SIGSEGV SIGTERM " Add POSIX signals as well... - syn keyword cConstant SIGABRT SIGALRM SIGCHLD SIGCONT SIGFPE SIGHUP - syn keyword cConstant SIGILL SIGINT SIGKILL SIGPIPE SIGQUIT SIGSEGV - syn keyword cConstant SIGSTOP SIGTERM SIGTRAP SIGTSTP SIGTTIN SIGTTOU - syn keyword cConstant SIGUSR1 SIGUSR2 - syn keyword cConstant _IOFBF _IOLBF _IONBF BUFSIZ EOF WEOF - syn keyword cConstant FOPEN_MAX FILENAME_MAX L_tmpnam - syn keyword cConstant SEEK_CUR SEEK_END SEEK_SET - syn keyword cConstant TMP_MAX stderr stdin stdout - syn keyword cConstant EXIT_FAILURE EXIT_SUCCESS RAND_MAX + syn keyword cConstant SIGABRT SIGALRM SIGCHLD SIGCONT SIGFPE SIGHUP SIGILL SIGINT SIGKILL SIGPIPE SIGQUIT SIGSEGV + syn keyword cConstant SIGSTOP SIGTERM SIGTRAP SIGTSTP SIGTTIN SIGTTOU SIGUSR1 SIGUSR2 + syn keyword cConstant _IOFBF _IOLBF _IONBF BUFSIZ EOF WEOF FOPEN_MAX FILENAME_MAX L_tmpnam + syn keyword cConstant SEEK_CUR SEEK_END SEEK_SET TMP_MAX stderr stdin stdout EXIT_FAILURE EXIT_SUCCESS RAND_MAX " POSIX 2001 - syn keyword cConstant SIGBUS SIGPOLL SIGPROF SIGSYS SIGURG - syn keyword cConstant SIGVTALRM SIGXCPU SIGXFSZ + syn keyword cConstant SIGBUS SIGPOLL SIGPROF SIGSYS SIGURG SIGVTALRM SIGXCPU SIGXFSZ " non-POSIX signals syn keyword cConstant SIGWINCH SIGINFO - " Add POSIX errors as well - syn keyword cConstant E2BIG EACCES EAGAIN EBADF EBADMSG EBUSY - syn keyword cConstant ECANCELED ECHILD EDEADLK EDOM EEXIST EFAULT - syn keyword cConstant EFBIG EILSEQ EINPROGRESS EINTR EINVAL EIO EISDIR - syn keyword cConstant EMFILE EMLINK EMSGSIZE ENAMETOOLONG ENFILE ENODEV - syn keyword cConstant ENOENT ENOEXEC ENOLCK ENOMEM ENOSPC ENOSYS - syn keyword cConstant ENOTDIR ENOTEMPTY ENOTSUP ENOTTY ENXIO EPERM - syn keyword cConstant EPIPE ERANGE EROFS ESPIPE ESRCH ETIMEDOUT EXDEV + " Add POSIX errors as well. List comes from: + " http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/errno.h.html + syn keyword cConstant E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EAFNOSUPPORT EAGAIN EALREADY EBADF + syn keyword cConstant EBADMSG EBUSY ECANCELED ECHILD ECONNABORTED ECONNREFUSED ECONNRESET EDEADLK + syn keyword cConstant EDESTADDRREQ EDOM EDQUOT EEXIST EFAULT EFBIG EHOSTUNREACH EIDRM EILSEQ + syn keyword cConstant EINPROGRESS EINTR EINVAL EIO EISCONN EISDIR ELOOP EMFILE EMLINK EMSGSIZE + syn keyword cConstant EMULTIHOP ENAMETOOLONG ENETDOWN ENETRESET ENETUNREACH ENFILE ENOBUFS ENODATA + syn keyword cConstant ENODEV ENOENT ENOEXEC ENOLCK ENOLINK ENOMEM ENOMSG ENOPROTOOPT ENOSPC ENOSR + syn keyword cConstant ENOSTR ENOSYS ENOTCONN ENOTDIR ENOTEMPTY ENOTRECOVERABLE ENOTSOCK ENOTSUP + syn keyword cConstant ENOTTY ENXIO EOPNOTSUPP EOVERFLOW EOWNERDEAD EPERM EPIPE EPROTO + syn keyword cConstant EPROTONOSUPPORT EPROTOTYPE ERANGE EROFS ESPIPE ESRCH ESTALE ETIME ETIMEDOUT + syn keyword cConstant ETXTBSY EWOULDBLOCK EXDEV " math.h syn keyword cConstant M_E M_LOG2E M_LOG10E M_LN2 M_LN10 M_PI M_PI_2 M_PI_4 syn keyword cConstant M_1_PI M_2_PI M_2_SQRTPI M_SQRT2 M_SQRT1_2 diff --git a/runtime/syntax/sbt.vim b/runtime/syntax/sbt.vim new file mode 100644 index 0000000000..cbf73beafe --- /dev/null +++ b/runtime/syntax/sbt.vim @@ -0,0 +1,32 @@ +" Vim syntax file +" Language: sbt +" Maintainer: Steven Dobay +" Last Change: 2017.04.30 + +if exists("b:current_syntax") + finish +endif + +runtime! syntax/scala.vim + +syn region sbtString start="\"[^"]" skip="\\\"" end="\"" contains=sbtStringEscape +syn match sbtStringEscape "\\u[0-9a-fA-F]\{4}" contained +syn match sbtStringEscape "\\[nrfvb\\\"]" contained + +syn match sbtIdentitifer "^\S\+\ze\s*\(:=\|++=\|+=\|<<=\|<+=\)" +syn match sbtBeginningSeq "^[Ss]eq\>" + +syn match sbtSpecial "\(:=\|++=\|+=\|<<=\|<+=\)" + +syn match sbtLineComment "//.*" +syn region sbtComment start="/\*" end="\*/" +syn region sbtDocComment start="/\*\*" end="\*/" keepend + +hi link sbtString String +hi link sbtIdentitifer Keyword +hi link sbtBeginningSeq Keyword +hi link sbtSpecial Special +hi link sbtComment Comment +hi link sbtLineComment Comment +hi link sbtDocComment Comment + From 599170de8304d74baa3e18df0929330e3773a14d Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Tue, 7 Nov 2017 01:29:14 +0100 Subject: [PATCH 16/76] vim-patch:6aa8cea46d41 Update runtime files. https://github.com/vim/vim/commit/6aa8cea46d4179b2617daae034063dd0d8054e35 --- runtime/doc/arabic.txt | 26 ++++++++-------- runtime/doc/autocmd.txt | 2 +- runtime/doc/eval.txt | 1 + runtime/doc/ft_ada.txt | 2 +- runtime/doc/help.txt | 2 +- runtime/doc/insert.txt | 12 +++---- runtime/doc/intro.txt | 4 +-- runtime/doc/map.txt | 2 +- runtime/doc/options.txt | 8 ++++- runtime/doc/print.txt | 64 +++++++++++++++++++------------------- runtime/doc/spell.txt | 4 +-- runtime/doc/syntax.txt | 9 +++--- runtime/doc/usr_09.txt | 4 +-- runtime/syntax/cpp.vim | 4 +-- runtime/syntax/haskell.vim | 4 +-- src/nvim/po/it.po | 51 ++++++++++++++++++++++++++++-- 16 files changed, 127 insertions(+), 72 deletions(-) diff --git a/runtime/doc/arabic.txt b/runtime/doc/arabic.txt index 3f30d7b5bc..07350083c6 100644 --- a/runtime/doc/arabic.txt +++ b/runtime/doc/arabic.txt @@ -36,7 +36,7 @@ the user interface remains the standard Vi interface. Highlights ---------- -o Editing left-to-right files as in the original VIM hasn't changed. +o Editing left-to-right files as in the original Vim hasn't changed. o Viewing and editing files in right-to-left windows. File orientation is per window, so it is possible to view the same @@ -46,7 +46,7 @@ o No special terminal with right-to-left capabilities is required. The right-to-left changes are completely hardware independent. Only Arabic fonts are necessary. -o Compatible with the original VIM. Almost all features work in +o Compatible with the original Vim. Almost all features work in right-to-left mode (there are liable to be bugs). o Changing keyboard mapping and reverse insert modes using a single @@ -60,14 +60,14 @@ o While in Arabic mode, numbers are entered from left to right. Upon o Arabic keymapping on the command line in reverse insert mode. -o Proper Bidirectional functionality is possible given VIM is +o Proper Bidirectional functionality is possible given Vim is started within a Bidi capable terminal emulator. Arabic Fonts *arabicfonts* ------------ -VIM requires monospaced fonts of which there are many out there. +Vim requires monospaced fonts of which there are many out there. Arabic requires ISO-8859-6 as well as Presentation Form-B fonts (without Form-B, Arabic will _NOT_ be usable). It is highly recommended that users search for so-called 'ISO-10646-1' fonts. @@ -90,13 +90,13 @@ o Installation of fonts for X Window systems (Unix/Linux) Usage ----- -Prior to the actual usage of Arabic within VIM, a number of settings +Prior to the actual usage of Arabic within Vim, a number of settings need to be accounted for and invoked. o Setting the Arabic fonts - + For VIM GUI set the 'guifont' to your_ARABIC_FONT. This is done - by entering the following command in the VIM window. + + For Vim GUI set the 'guifont' to your_ARABIC_FONT. This is done + by entering the following command in the Vim window. > :set guifont=your_ARABIC_FONT < @@ -109,7 +109,7 @@ o Setting the Arabic fonts you can include ':set guifont=your_ARABIC_FONT' to your vimrc file. - + Under the X Window environment, you can also start VIM with + + Under the X Window environment, you can also start Vim with '-fn your_ARABIC_FONT' option. o Setting the appropriate character Encoding @@ -131,11 +131,11 @@ o Setting the appropriate character Encoding o Enable Arabic settings [short-cut] In order to simplify and streamline things, you can either invoke - VIM with the command-line option, + Vim with the command-line option, % vim -A my_utf8_arabic_file ... - or enable 'arabic' via the following command within VIM + or enable 'arabic' via the following command within Vim > :set arabic < @@ -196,7 +196,7 @@ o Enable Arabic settings [short-cut] + Arabic deletion of a combined pair character - By default VIM has the 'delcombine' option disabled. This option + By default Vim has the 'delcombine' option disabled. This option allows the deletion of ALEF in a LAM_ALEF (LAA) combined character and still retain the LAM (i.e. it reverts to treating the combined character as its natural two characters form -- this also pertains @@ -255,7 +255,7 @@ o Enable Arabic settings [short-cut] Keymap/Keyboard *arabickeymap* --------------- -The character/letter encoding used in VIM is the standard UTF-8. +The character/letter encoding used in Vim is the standard UTF-8. It is widely discouraged that any other encoding be used or even attempted. @@ -288,7 +288,7 @@ o Keyboard Restrictions ------------ -o VIM in its GUI form does not currently support Bi-directionality +o Vim in its GUI form does not currently support Bi-directionality (i.e. the ability to see both Arabic and Latin intermixed within the same line). diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt index 709e7ffed6..dfcabf9e7d 100644 --- a/runtime/doc/autocmd.txt +++ b/runtime/doc/autocmd.txt @@ -605,7 +605,7 @@ FileChangedShell When Vim notices that the modification time of |timestamp| Mostly triggered after executing a shell command, but also with a |:checktime| command - or when Gvim regains input focus. + or when gvim regains input focus. This autocommand is triggered for each changed file. It is not used when 'autoread' is set and the buffer was not changed. If a diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 23612d1216..dc075b795f 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -3109,6 +3109,7 @@ did_filetype() Returns |TRUE| when autocommands are being executed and the FileType event has been triggered at least once. Can be used to avoid triggering the FileType event again in the scripts that detect the file type. |FileType| + Returns |FALSE| when `:setf FALLBACK` was used. When editing another file, the counter is reset, thus this really checks if the FileType event has been triggered for the current buffer. This allows an autocommand that starts diff --git a/runtime/doc/ft_ada.txt b/runtime/doc/ft_ada.txt index 94d97b481a..c1aa0904c4 100644 --- a/runtime/doc/ft_ada.txt +++ b/runtime/doc/ft_ada.txt @@ -116,7 +116,7 @@ NOTE: "gnat xref -v" is very tricky to use as it has almost no diagnostic then "gnat xref -v *.ad?" 4) Project manager support is completely broken - don't even try "gnat xref -Padacl.gpr". -5) VIM is faster when the tags file is sorted - use "sort --unique +5) Vim is faster when the tags file is sorted - use "sort --unique --ignore-case --output=tags tags" . 6) Remember to insert "!_TAG_FILE_SORTED 2 %sort ui" as first line to mark the file assorted. diff --git a/runtime/doc/help.txt b/runtime/doc/help.txt index 5e4c095130..d929bd75cd 100644 --- a/runtime/doc/help.txt +++ b/runtime/doc/help.txt @@ -30,7 +30,7 @@ Get specific help: It is possible to go directly to whatever you want help help entries for "word". Or use ":helpgrep word". |:helpgrep| -VIM stands for Vi IMproved. Most of VIM was made by Bram Moolenaar, but only +Vim stands for Vi IMproved. Most of Vim was made by Bram Moolenaar, but only through the help of many others. See |credits|. ------------------------------------------------------------------------------ *doc-file-list* *Q_ct* diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt index f6b2ef7bc3..b6cc18ab1b 100644 --- a/runtime/doc/insert.txt +++ b/runtime/doc/insert.txt @@ -608,13 +608,13 @@ Completion can be done for: 10. User defined completion |i_CTRL-X_CTRL-U| 11. omni completion |i_CTRL-X_CTRL-O| 12. Spelling suggestions |i_CTRL-X_s| -13. keywords in 'complete' |i_CTRL-N| +13. keywords in 'complete' |i_CTRL-N| |i_CTRL-P| -All these (except 2) are done in CTRL-X mode. This is a sub-mode of Insert -and Replace modes. You enter CTRL-X mode by typing CTRL-X and one of the -CTRL-X commands. You exit CTRL-X mode by typing a key that is not a valid -CTRL-X mode command. Valid keys are the CTRL-X command itself, CTRL-N (next), -and CTRL-P (previous). +All these, except CTRL-N and CTRL-P, are done in CTRL-X mode. This is a +sub-mode of Insert and Replace modes. You enter CTRL-X mode by typing CTRL-X +and one of the CTRL-X commands. You exit CTRL-X mode by typing a key that is +not a valid CTRL-X mode command. Valid keys are the CTRL-X command itself, +CTRL-N (next), and CTRL-P (previous). Also see the 'infercase' option if you want to adjust the case of the match. diff --git a/runtime/doc/intro.txt b/runtime/doc/intro.txt index d71e73ceac..93cc8be41f 100644 --- a/runtime/doc/intro.txt +++ b/runtime/doc/intro.txt @@ -68,8 +68,8 @@ The Vim pages contain the most recent information about Vim. They also contain links to the most recent version of Vim. The FAQ is a list of Frequently Asked Questions. Read this if you have problems. - VIM home page: http://www.vim.org/ - VIM FAQ: http://vimdoc.sf.net/ + Vim home page: http://www.vim.org/ + Vim FAQ: http://vimdoc.sf.net/ Downloading: ftp://ftp.vim.org/pub/vim/MIRRORS diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt index fa7d01aa5f..12170ca16a 100644 --- a/runtime/doc/map.txt +++ b/runtime/doc/map.txt @@ -175,7 +175,7 @@ that starts with ",". Then you need to type another character for Vim to know whether to use the "," mapping or the longer one. To avoid this add the argument. Then the mapping will be used when it matches, Vim does not wait for more characters to be typed. However, if the characters were -already type they are used. +already typed they are used. *:map-* *:map-silent* To define a mapping which will not be echoed on the command line, add diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 20526677e9..3479336a1a 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -311,7 +311,7 @@ Note: In the future more global options can be made global-local. Using Setting the filetype -:setf[iletype] {filetype} *:setf* *:setfiletype* +:setf[iletype] [FALLBACK] {filetype} *:setf* *:setfiletype* Set the 'filetype' option to {filetype}, but only if not done yet in a sequence of (nested) autocommands. This is short for: > @@ -322,6 +322,12 @@ Setting the filetype setting the 'filetype' option twice, causing different settings and syntax files to be loaded. + When the optional FALLBACK argument is present, a + later :setfiletype command will override the + 'filetype'. This is to used for filetype detections + that are just a guess. |did_filetype()| will return + false after this command. + *option-window* *optwin* :bro[wse] se[t] *:set-browse* *:browse-set* *:opt* *:options* :opt[ions] Open a window for viewing and setting all options. diff --git a/runtime/doc/print.txt b/runtime/doc/print.txt index 72625a450a..3ffb52b5ae 100644 --- a/runtime/doc/print.txt +++ b/runtime/doc/print.txt @@ -87,25 +87,25 @@ If the option is empty, then vim will use the system default printer for Macintosh: mac-roman, HPUX: hp-roman8) global -Sets the character encoding used when printing. This option tells VIM which +Sets the character encoding used when printing. This option tells Vim which print character encoding file from the "print" directory in 'runtimepath' to use. This option will accept any value from |encoding-names|. Any recognized names -are converted to VIM standard names - see 'encoding' for more details. Names -not recognized by VIM will just be converted to lower case and underscores +are converted to Vim standard names - see 'encoding' for more details. Names +not recognized by Vim will just be converted to lower case and underscores replaced with '-' signs. -If 'printencoding' is empty or VIM cannot find the file then it will use -'encoding' (if VIM is compiled with |+multi_byte| and it is set an 8-bit -encoding) to find the print character encoding file. If VIM is unable to find +If 'printencoding' is empty or Vim cannot find the file then it will use +'encoding' (if Vim is compiled with |+multi_byte| and it is set an 8-bit +encoding) to find the print character encoding file. If Vim is unable to find a character encoding file then it will use the "latin1" print character encoding file. -When 'encoding' is set to a multi-byte encoding, VIM will try to convert +When 'encoding' is set to a multi-byte encoding, Vim will try to convert characters to the printing encoding for printing (if 'printencoding' is empty then the conversion will be to latin1). Conversion to a printing encoding -other than latin1 will require VIM to be compiled with the |+iconv| feature. +other than latin1 will require Vim to be compiled with the |+iconv| feature. If no conversion is possible then printing will fail. Any characters that cannot be converted will be replaced with upside down question marks. @@ -186,7 +186,7 @@ header is used when this option is empty. 'printmbcharset' 'pmbcs' string (default "") global Sets the CJK character set to be used when generating CJK output from -|:hardcopy|. The following predefined values are currently recognised by VIM: +|:hardcopy|. The following predefined values are currently recognised by Vim: Value Description ~ Chinese GB_2312-80 @@ -253,7 +253,7 @@ Japanese text you would do the following; > If 'printmbcharset' is not one of the above values then it is assumed to specify a custom multi-byte character set and no check will be made that it is -compatible with the value for 'printencoding'. VIM will look for a file +compatible with the value for 'printencoding'. Vim will look for a file defining the character set in the "print" directory in 'runtimepath'. *pmbfn-option* @@ -403,10 +403,10 @@ There are currently a number of limitations with PostScript printing: possible to get all the characters in an encoding to print by installing a new version of the Courier font family. -- Multi-byte support - Currently VIM will try to convert multi-byte characters +- Multi-byte support - Currently Vim will try to convert multi-byte characters to the 8-bit encoding specified by 'printencoding' (or latin1 if it is empty). Any characters that are not successfully converted are shown as - unknown characters. Printing will fail if VIM cannot convert the multi-byte + unknown characters. Printing will fail if Vim cannot convert the multi-byte to the 8-bit encoding. ============================================================================== @@ -417,11 +417,11 @@ you need to define your own PostScript font encoding vector. Details on how to define a font encoding vector is beyond the scope of this help file, but you can find details in the PostScript Language Reference Manual, 3rd Edition, published by Addison-Wesley and available in PDF form at -http://www.adobe.com/. The following describes what you need to do for VIM to +http://www.adobe.com/. The following describes what you need to do for Vim to locate and use your print character encoding. i. Decide on a unique name for your encoding vector, one that does not clash - with any of the recognized or standard encoding names that VIM uses (see + with any of the recognized or standard encoding names that Vim uses (see |encoding-names| for a list), and that no one else is likely to use. ii. Copy $VIMRUNTIME/print/latin1.ps to the print subdirectory in your 'runtimepath' and rename it with your unique name. @@ -429,23 +429,23 @@ iii. Edit your renamed copy of latin1.ps, replacing all occurrences of latin1 with your unique name (don't forget the line starting %%Title:), and modify the array of glyph names to define your new encoding vector. The array must have exactly 256 entries or you will not be able to print! -iv. Within VIM, set 'printencoding' to your unique encoding name and then - print your file. VIM will now use your custom print character encoding. +iv. Within Vim, set 'printencoding' to your unique encoding name and then + print your file. Vim will now use your custom print character encoding. -VIM will report an error with the resource file if you change the order or +Vim will report an error with the resource file if you change the order or content of the first 3 lines, other than the name of the encoding on the line starting %%Title: or the version number on the line starting %%Version:. -[Technical explanation for those that know PostScript - VIM looks for a file +[Technical explanation for those that know PostScript - Vim looks for a file with the same name as the encoding it will use when printing. The file defines a new PostScript Encoding resource called /VIM-name, where name is the -print character encoding VIM will use.] +print character encoding Vim will use.] ============================================================================== 5. PostScript CJK Printing *postscript-cjk-printing* *E673* *E674* *E675* -VIM supports printing of Chinese, Japanese, and Korean files. Setting up VIM +Vim supports printing of Chinese, Japanese, and Korean files. Setting up Vim to correctly print CJK files requires setting up a few more options. Each of these countries has many standard character sets and encodings which @@ -466,7 +466,7 @@ option allows you to specify different fonts to use when printing characters which are syntax highlighted with the font styles normal, italic, bold and bold-italic. -No CJK fonts are supplied with VIM. There are some free Korean, Japanese, and +No CJK fonts are supplied with Vim. There are some free Korean, Japanese, and Traditional Chinese fonts available at: http://examples.oreilly.com/cjkvinfo/adobe/samples/ @@ -481,7 +481,7 @@ CJK fonts can be large containing several thousand glyphs, and it is not uncommon to find that they only contain a subset of a national standard. It is not unusual to find the fonts to not include characters for codes in the ASCII code range. If you find half-width Roman characters are not appearing -in your printout then you should configure VIM to use the Courier font the +in your printout then you should configure Vim to use the Courier font the half-width ASCII characters with 'printmbfont'. If your font does not include other characters then you will need to find another font that does. @@ -489,7 +489,7 @@ Another issue with ASCII characters, is that the various national character sets specify a couple of different glyphs in the ASCII code range. If you print ASCII text using the national character set you may see some unexpected characters. If you want true ASCII code printing then you need to configure -VIM to output ASCII characters for the ASCII code range with 'printmbfont'. +Vim to output ASCII characters for the ASCII code range with 'printmbfont'. It is possible to define your own multi-byte character set although this should not be attempted lightly. A discussion on the process if beyond the @@ -508,13 +508,13 @@ print job completing. There are a number of possible causes as to why the printing may have failed: - Wrong version of the prolog resource file. The prolog resource file - contains some PostScript that VIM needs to be able to print. Each version - of VIM needs one particular version. Make sure you have correctly installed + contains some PostScript that Vim needs to be able to print. Each version + of Vim needs one particular version. Make sure you have correctly installed the runtime files, and don't have any old versions of a file called prolog in the print directory in your 'runtimepath' directory. - Paper size. Some PostScript printers will abort printing a file if they do - not support the requested paper size. By default VIM uses A4 paper. Find + not support the requested paper size. By default Vim uses A4 paper. Find out what size paper your printer normally uses and set the appropriate paper size with 'printoptions'. If you cannot find the name of the paper used, measure a sheet and compare it with the table of supported paper sizes listed @@ -645,7 +645,7 @@ complex print document creation. N-UP PRINTING -The psnup utility takes an existing PostScript file generated from VIM and +The psnup utility takes an existing PostScript file generated from Vim and convert it to an n-up version. The simplest way to create a 2-up printout is to first create a PostScript file with: > @@ -701,16 +701,16 @@ There are a couple of points to bear in mind: ============================================================================== 8. Formfeed Characters *printing-formfeed* -By default VIM does not do any special processing of |formfeed| control -characters. Setting the 'printoptions' formfeed item will make VIM recognize +By default Vim does not do any special processing of |formfeed| control +characters. Setting the 'printoptions' formfeed item will make Vim recognize formfeed characters and continue printing the current line at the beginning of the first line on a new page. The use of formfeed characters provides rudimentary print control but there are certain things to be aware of. -VIM will always start printing a line (including a line number if enabled) +Vim will always start printing a line (including a line number if enabled) containing a formfeed character, even if it is the first character on the line. This means if a line starting with a formfeed character is the first -line of a page then VIM will print a blank page. +line of a page then Vim will print a blank page. Since the line number is printed at the start of printing the line containing the formfeed character, the remainder of the line printed on the new page @@ -719,7 +719,7 @@ lines of a long line when wrap in 'printoptions' is enabled). If the formfeed character is the last character on a line, then printing will continue on the second line of the new page, not the first. This is due to -VIM processing the end of the line after the formfeed character and moving +Vim processing the end of the line after the formfeed character and moving down a line to continue printing. Due to the points made above it is recommended that when formfeed character diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt index f2be25097c..59575359ef 100644 --- a/runtime/doc/spell.txt +++ b/runtime/doc/spell.txt @@ -459,7 +459,7 @@ Vim uses a binary file format for spelling. This greatly speeds up loading the word list and keeps it small. *.aff* *.dic* *Myspell* You can create a Vim spell file from the .aff and .dic files that Myspell -uses. Myspell is used by OpenOffice.org and Mozilla. The OpenOffice .oxt +uses. Myspell is used by OpenOffice.org and Mozilla. The OpenOffice .oxt files are zip files which contain the .aff and .dic files. You should be able to find them here: http://extensions.services.openoffice.org/dictionary @@ -1594,7 +1594,7 @@ COMPOUNDSYLLABLE (Hunspell) *spell-COMPOUNDSYLLABLE* KEY (Hunspell) *spell-KEY* Define characters that are close together on the keyboard. Used to give better suggestions. Not supported. - + LANG (Hunspell) *spell-LANG* This specifies language-specific behavior. This actually moves part of the language knowledge into the program, diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt index 6cbee8c108..eb8cd1a58b 100644 --- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -4757,10 +4757,11 @@ ctermbg={color-nr} *highlight-ctermbg* Example: > :highlight Normal ctermfg=grey ctermbg=darkblue < When setting the "ctermbg" color for the Normal group, the - 'background' option will be adjusted automatically. This causes the - highlight groups that depend on 'background' to change! This means - you should set the colors for Normal first, before setting other - colors. + 'background' option will be adjusted automatically, under the + condition that the color is recognized and 'background' was not set + explicitly. This causes the highlight groups that depend on + 'background' to change! This means you should set the colors for + Normal first, before setting other colors. When a colorscheme is being used, changing 'background' causes it to be reloaded, which may reset all colors (including Normal). First delete the "g:colors_name" variable when you don't want this. diff --git a/runtime/doc/usr_09.txt b/runtime/doc/usr_09.txt index 1ff3d93329..bf3399e379 100644 --- a/runtime/doc/usr_09.txt +++ b/runtime/doc/usr_09.txt @@ -187,7 +187,7 @@ mouse button. The selected text will be inserted. The "current selection" will only remain valid until some other text is selected. After doing the paste in the other gVim, now select some characters in that window. You will notice that the words that were previously selected -in the other gVim window are displayed differently. This means that it no +in the other gvim window are displayed differently. This means that it no longer is the current selection. You don't need to select text with the mouse, using the keyboard commands for @@ -211,7 +211,7 @@ USING BOTH This use of both the "current selection" and the "real clipboard" might sound a bit confusing. But it is very useful. Let's show this with an example. -Use one gVim with a text file and perform these actions: +Use one gvim with a text file and perform these actions: - Select two words in Visual mode. - Use the Edit/Copy menu to get these words onto the clipboard. diff --git a/runtime/syntax/cpp.vim b/runtime/syntax/cpp.vim index 5a478fb77d..9cb0860e84 100644 --- a/runtime/syntax/cpp.vim +++ b/runtime/syntax/cpp.vim @@ -2,7 +2,7 @@ " Language: C++ " Current Maintainer: vim-jp (https://github.com/vim-jp/vim-cpp) " Previous Maintainer: Ken Shan -" Last Change: 2016 Oct 28 +" Last Change: 2017 Jun 05 " quit when a syntax file was already loaded if exists("b:current_syntax") @@ -48,7 +48,7 @@ endif if !exists("cpp_no_cpp14") syn case ignore syn match cppNumber display "\<0b[01]\('\=[01]\+\)*\(u\=l\{0,2}\|ll\=u\)\>" - syn match cppNumber display "\<[1-9]\('\=\d\+\)*\(u\=l\{0,2}\|ll\=u\)\>" + syn match cppNumber display "\<[1-9]\('\=\d\+\)*\(u\=l\{0,2}\|ll\=u\)\>" contains=cFloat syn match cppNumber display "\<0x\x\('\=\x\+\)*\(u\=l\{0,2}\|ll\=u\)\>" syn case match endif diff --git a/runtime/syntax/haskell.vim b/runtime/syntax/haskell.vim index 11f4c35a58..e398085ba8 100644 --- a/runtime/syntax/haskell.vim +++ b/runtime/syntax/haskell.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: Haskell " Maintainer: Haskell Cafe mailinglist -" Last Change: 2008 Dec 15 +" Last Change: 2017 Jun 04 " Original Author: John Williams " " Thanks to Ryan Crumley for suggestions and John Meacham for @@ -62,7 +62,7 @@ syn match hsCharacter "^'\([^\\]\|\\[^']\+\|\\'\)'" contains=hsSpecialChar,hs syn match hsNumber "\<[0-9]\+\>\|\<0[xX][0-9a-fA-F]\+\>\|\<0[oO][0-7]\+\>" syn match hsFloat "\<[0-9]\+\.[0-9]\+\([eE][-+]\=[0-9]\+\)\=\>" -" Keyword definitions. These must be patters instead of keywords +" Keyword definitions. These must be patterns instead of keywords " because otherwise they would match as keywords at the start of a " "literate" comment (see lhs.vim). syn match hsModule "\" diff --git a/src/nvim/po/it.po b/src/nvim/po/it.po index b8b119ade6..91b7b715f8 100644 --- a/src/nvim/po/it.po +++ b/src/nvim/po/it.po @@ -1402,6 +1402,31 @@ msgstr "com: %s" msgid "frame is zero" msgstr "al livello zero" +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" + +msgid "E904: last argument for expr/call must be a number" +msgstr "E904: l'ultimo argomento per espressione/chiamata dev'essere numerico" + +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" + +#, c-format +msgid "E630: %s(): write while not connected" +msgstr "E630: %s(): scrittura in mancanza di connessione" + +msgid "E631: %s(): write failed" +msgstr "E631: %s(): scrittura non riuscita" + #, c-format msgid "frame at highest level: %d" msgstr "al livello pi alto: %d" @@ -4812,10 +4837,16 @@ msgstr "" "\n" "Non posso impostare il contesto di sicurezza per " +msgid "E151: No match: %s" +msgstr "E151: Nessuna corrispondenza: %s" + #, c-format msgid "Could not set security context %s for %s" msgstr "Non posso impostare il contesto di sicurezza %s per %s" +msgid "E934: Cannot jump to a buffer that does not have a name" +msgstr "E934: Impossibile passare a un buffer che non ha un nome" + #, c-format msgid "Could not get security context %s for %s. Removing it!" msgstr "Non posso ottenere il contesto di sicurezza %s per %s. Lo rimuovo!" @@ -5353,8 +5384,24 @@ msgstr "E770: Sezione non supportata nel file ortografico" #: ../spell.c:3762 #, c-format -msgid "Warning: region %s not supported" -msgstr "Avviso: regione %s non supportata" +msgid "E778: This does not look like a .sug file: %s" +msgstr "E778: Questo non sembra un file .sug: %s" + +#, c-format +msgid "E779: Old .sug file, needs to be updated: %s" +msgstr "E779: File .sug obsoleto, necessario aggiornarlo: %s" + +#, c-format +msgid "E780: .sug file is for newer version of Vim: %s" +msgstr "E780: Il file .sug per versioni di Vim pi recenti: %s" + +#, c-format +msgid "E781: .sug file doesn't match .spl file: %s" +msgstr "E781: Il file .sug non corrisponde al file .spl: %s" + +#, c-format +msgid "E782: error while reading .sug file: %s" +msgstr "E782: Errore leggendo il file .sug: %s" #: ../spell.c:4550 #, c-format From a39bf019580d82f8ca5f9e8d99dd856418ffc491 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Tue, 7 Nov 2017 01:34:28 +0100 Subject: [PATCH 17/76] vim-patch:3ec574f2b549 Update runtime files. Includes changing &sw to shiftwidth() for all indent scripts. https://github.com/vim/vim/commit/3ec574f2b549f456f664f689d6da36dc5719aeb9 --- runtime/doc/eval.txt | 5 ++- runtime/doc/pattern.txt | 8 +++-- runtime/filetype.vim | 4 ++- runtime/indent/ada.vim | 22 ++++++------ runtime/indent/awk.vim | 6 ++-- runtime/indent/bst.vim | 4 +-- runtime/indent/bzl.vim | 9 ++--- runtime/indent/cdl.vim | 18 +++++----- runtime/indent/chaiscript.vim | 6 ++-- runtime/indent/clojure.vim | 8 ++--- runtime/indent/cmake.vim | 8 ++--- runtime/indent/cobol.vim | 24 +++++++------- runtime/indent/cucumber.vim | 4 +-- runtime/indent/dylan.vim | 12 +++---- runtime/indent/erlang.vim | 32 +++++++++--------- runtime/indent/eruby.vim | 6 +--- runtime/indent/falcon.vim | 16 ++++----- runtime/indent/gitconfig.vim | 4 +-- runtime/indent/gitolite.vim | 8 ++--- runtime/indent/go.vim | 22 +++--------- runtime/indent/haml.vim | 4 +-- runtime/indent/hamster.vim | 4 +-- runtime/indent/hog.vim | 6 ++-- runtime/indent/html.vim | 57 ++++++++++++++------------------ runtime/indent/idlang.vim | 14 ++++---- runtime/indent/ishd.vim | 8 ++--- runtime/indent/javascript.vim | 7 ++-- runtime/indent/json.vim | 6 ++-- runtime/indent/liquid.vim | 4 +-- runtime/indent/logtalk.vim | 12 +++---- runtime/indent/lua.vim | 6 ++-- runtime/indent/matlab.vim | 8 ++--- runtime/indent/mma.vim | 2 +- runtime/indent/ocaml.vim | 12 +++---- runtime/indent/occam.vim | 6 ++-- runtime/indent/pascal.vim | 28 ++++++++-------- runtime/indent/perl.vim | 16 ++++----- runtime/indent/perl6.vim | 10 +++--- runtime/indent/php.vim | 36 ++++++++------------ runtime/indent/postscr.vim | 6 ++-- runtime/indent/pov.vim | 6 ++-- runtime/indent/prolog.vim | 8 ++--- runtime/indent/rpl.vim | 8 ++--- runtime/indent/ruby.vim | 6 +--- runtime/indent/rust.vim | 4 +-- runtime/indent/sass.vim | 4 +-- runtime/indent/sdl.vim | 6 ++-- runtime/indent/sml.vim | 14 ++++---- runtime/indent/sqlanywhere.vim | 24 +++++++------- runtime/indent/systemverilog.vim | 2 +- runtime/indent/teraterm.vim | 18 +++------- runtime/indent/tex.vim | 24 +++++++------- runtime/indent/tilde.vim | 4 +-- runtime/indent/vb.vim | 10 +++--- runtime/indent/vhdl.vim | 36 ++++++++++---------- runtime/indent/xml.vim | 4 +-- runtime/indent/yaml.vim | 14 ++------ runtime/syntax/debchangelog.vim | 12 +++---- runtime/syntax/debsources.vim | 10 +++--- runtime/syntax/help.vim | 6 ++-- runtime/syntax/php.vim | 4 +-- src/nvim/po/it.po | 2 +- 62 files changed, 328 insertions(+), 376 deletions(-) diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index dc075b795f..8ef26d28c5 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -5157,7 +5157,10 @@ line({expr}) The result is a Number, which is the line number of the file < *last-position-jump* This autocommand jumps to the last known position in a file just after opening it, if the '" mark is set: > - :au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif + :au BufReadPost * + \ if line("'\"") > 1 && line("'\"") <= line("$") && &ft !~# 'commit' + \ | exe "normal! g`\"" + \ | endif line2byte({lnum}) *line2byte()* Return the byte count from the start of the buffer for line diff --git a/runtime/doc/pattern.txt b/runtime/doc/pattern.txt index b7025c8e7e..ab78b8b71c 100644 --- a/runtime/doc/pattern.txt +++ b/runtime/doc/pattern.txt @@ -1058,12 +1058,16 @@ x A single character, with no special meaning, matches itself ":s/[/x/" searches for "[/x" and replaces it with nothing. It does not search for "[" and replaces it with "x"! + *E944* *E945* If the sequence begins with "^", it matches any single character NOT in the collection: "[^xyz]" matches anything but 'x', 'y' and 'z'. - If two characters in the sequence are separated by '-', this is shorthand for the full list of ASCII characters between them. E.g., - "[0-9]" matches any decimal digit. Non-ASCII characters can be - used, but the character values must not be more than 256 apart. + "[0-9]" matches any decimal digit. If the starting character exceeds + the ending character, e.g. [c-a], E944 occurs. Non-ASCII characters + can be used, but the character values must not be more than 256 apart + in the old regexp engine. For example, searching by [\u3000-\u4000] + after setting re=1 emits a E945 error. Prepending \%#=2 will fix it. - A character class expression is evaluated to the set of characters belonging to that character class. The following character classes are supported: diff --git a/runtime/filetype.vim b/runtime/filetype.vim index a6ecdd401a..4babd636a2 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -1,7 +1,7 @@ " Vim support file to detect file types " " Maintainer: Bram Moolenaar -" Last Change: 2017 May 27 +" Last Change: 2017 Jun 12 " Listen very carefully, I will say this only once if exists("did_load_filetypes") @@ -2229,6 +2229,8 @@ func! s:FTtex() let format = tolower(matchstr(firstline, '\a\+')) let format = substitute(format, 'pdf', '', '') if format == 'tex' + let format = 'latex' + elseif format == 'plaintex' let format = 'plain' endif else diff --git a/runtime/indent/ada.vim b/runtime/indent/ada.vim index 575f326454..1ca7fbacbe 100644 --- a/runtime/indent/ada.vim +++ b/runtime/indent/ada.vim @@ -87,7 +87,7 @@ function s:MainBlockIndent (prev_indent, prev_lnum, blockstart, stop_at) endwhile endwhile " Fallback - just move back one - return a:prev_indent - &sw + return a:prev_indent - shiftwidth() endfunction MainBlockIndent " Section: s:EndBlockIndent {{{1 @@ -131,7 +131,7 @@ function s:EndBlockIndent( prev_indent, prev_lnum, blockstart, blockend ) endwhile endwhile " Fallback - just move back one - return a:prev_indent - &sw + return a:prev_indent - shiftwidth() endfunction EndBlockIndent " Section: s:StatementIndent {{{1 @@ -213,15 +213,15 @@ function GetAdaIndent() endif " Move indent in if ! false_match - let ind = ind + &sw + let ind = ind + shiftwidth() endif elseif line =~ '^\s*\(case\|exception\)\>' " Move indent in twice (next 'when' will move back) - let ind = ind + 2 * &sw + let ind = ind + 2 * shiftwidth() elseif line =~ '^\s*end\s*record\>' - " Move indent back to tallying 'type' preceding the 'record'. + " Move indent back to tallying 'type' preceeding the 'record'. " Allow indent to be equal to 'end record's. - let ind = s:MainBlockIndent( ind+&sw, lnum, 'type\>', '' ) + let ind = s:MainBlockIndent( ind+shiftwidth(), lnum, 'type\>', '' ) elseif line =~ '\(^\s*new\>.*\)\@' " Multiple line generic instantiation ('package blah is\nnew thingy') - let ind = s:StatementIndent( ind - &sw, lnum ) + let ind = s:StatementIndent( ind - shiftwidth(), lnum ) elseif line =~ ';\s*$' " Statement end (but not 'end' ) - try to find current statement-start indent let ind = s:StatementIndent( ind, lnum ) @@ -256,17 +256,17 @@ function GetAdaIndent() elseif continuation && line =~ '^\s*(' " Don't do this if we've already indented due to the previous line if ind == initind - let ind = ind + &sw + let ind = ind + shiftwidth() endif elseif line =~ '^\s*\(begin\|is\)\>' let ind = s:MainBlockIndent( ind, lnum, '\(procedure\|function\|declare\|package\|task\)\>', 'begin\>' ) elseif line =~ '^\s*record\>' - let ind = s:MainBlockIndent( ind, lnum, 'type\>\|for\>.*\', '' ) + &sw + let ind = s:MainBlockIndent( ind, lnum, 'type\>\|for\>.*\', '' ) + shiftwidth() elseif line =~ '^\s*\(else\|elsif\)\>' let ind = s:MainBlockIndent( ind, lnum, 'if\>', '' ) elseif line =~ '^\s*when\>' " Align 'when' one /in/ from matching block start - let ind = s:MainBlockIndent( ind, lnum, '\(case\|exception\)\>', '' ) + &sw + let ind = s:MainBlockIndent( ind, lnum, '\(case\|exception\)\>', '' ) + shiftwidth() elseif line =~ '^\s*end\>\s*\' " End of if statements let ind = s:EndBlockIndent( ind, lnum, 'if\>', 'end\>\s*\' ) diff --git a/runtime/indent/awk.vim b/runtime/indent/awk.vim index 6f6b70cc4e..aad73ee71f 100644 --- a/runtime/indent/awk.vim +++ b/runtime/indent/awk.vim @@ -60,7 +60,7 @@ function! GetAwkIndent() " 'pattern { action }' (simple check match on /{/ increases the indent then) if s:Get_brace_balance( prev_data, '{', '}' ) > 0 - return ind + &sw + return ind + shiftwidth() endif let brace_balance = s:Get_brace_balance( prev_data, '(', ')' ) @@ -99,7 +99,7 @@ function! GetAwkIndent() return s:Safe_indent( ind, s:First_word_len(prev_data), getline(v:lnum)) else " if/for/while without '{' - return ind + &sw + return ind + shiftwidth() endif endif endif @@ -140,7 +140,7 @@ function! GetAwkIndent() " Decrease indent if this line contains a '}'. if getline(v:lnum) =~ '^\s*}' - let ind = ind - &sw + let ind = ind - shiftwidth() endif return ind diff --git a/runtime/indent/bst.vim b/runtime/indent/bst.vim index be1f63e8e9..47e3058810 100644 --- a/runtime/indent/bst.vim +++ b/runtime/indent/bst.vim @@ -69,7 +69,7 @@ function! GetBstIndent(lnum) abort endif let fakeline = substitute(line,'^}','','').matchstr(cline,'^}') let ind = indent(lnum) - let ind = ind + &sw * s:count(line,'{') - let ind = ind - &sw * s:count(fakeline,'}') + let ind = ind + shiftwidth() * s:count(line,'{') + let ind = ind - shiftwidth() * s:count(fakeline,'}') return ind endfunction diff --git a/runtime/indent/bzl.vim b/runtime/indent/bzl.vim index 24e5b870cd..6904bfdedb 100644 --- a/runtime/indent/bzl.vim +++ b/runtime/indent/bzl.vim @@ -1,7 +1,7 @@ " Vim indent file " Language: Bazel (http://bazel.io) " Maintainer: David Barnett (https://github.com/google/vim-ft-bzl) -" Last Change: 2015 Aug 11 +" Last Change: 2017 Jun 13 if exists('b:did_indent') finish @@ -41,11 +41,8 @@ function GetBzlIndent(lnum) abort if exists('g:pyindent_open_paren') let l:pyindent_open_paren = g:pyindent_open_paren endif - " Vim 7.3.693 and later defines a shiftwidth() function to get the effective - " shiftwidth value. Fall back to &shiftwidth if the function doesn't exist. - let l:sw_expr = exists('*shiftwidth') ? 'shiftwidth()' : '&shiftwidth' - let g:pyindent_nested_paren = l:sw_expr . ' * 2' - let g:pyindent_open_paren = l:sw_expr . ' * 2' + let g:pyindent_nested_paren = 'shiftwidth() * 2' + let g:pyindent_open_paren = 'shiftwidth() * 2' endif let l:indent = -1 diff --git a/runtime/indent/cdl.vim b/runtime/indent/cdl.vim index 5ec2a7b21a..5fae7b9046 100644 --- a/runtime/indent/cdl.vim +++ b/runtime/indent/cdl.vim @@ -47,7 +47,7 @@ fun! CdlGetIndent(lnum) let thisline = getline(a:lnum) if match(thisline, '^\s*\(\k\+\|\[[^]]*]\)\s*\(,\|;\s*$\)') >= 0 " it's an attributes line - return &sw + return shiftwidth() elseif match(thisline, '^\c\s*\([{}]\|\/[*/]\|dimension\|schedule\|group\|hierarchy\|class\)') >= 0 " it's a header or '{' or '}' or a comment return 0 @@ -71,13 +71,13 @@ fun! CdlGetIndent(lnum) let c = line[inicio-1] " ')' and '=' don't change indent and are useless to set 'f' if c == '{' - return &sw + return shiftwidth() elseif c != ')' && c != '=' let f = 1 " all but 'elseif' are followed by a formula if c ==? 'n' || c ==? 'e' " 'then', 'else' - let ind = ind + &sw + let ind = ind + shiftwidth() elseif strpart(line, inicio-6, 6) ==? 'elseif' " elseif, set f to conditional - let ind = ind + &sw + let ind = ind + shiftwidth() let f = 0 end end @@ -98,16 +98,16 @@ fun! CdlGetIndent(lnum) let ind = 0 let f = 1 elseif c == ')' || c== ';' || strpart(line, inicio-5, 5) ==? 'endif' - let ind = ind - &sw + let ind = ind - shiftwidth() elseif c == '(' || c ==? 'f' " '(' or 'if' - let ind = ind + &sw + let ind = ind + shiftwidth() else " c == '=' " if it is an asignment increase indent if f == -1 " we don't know yet, find out let f = CdlAsignment(lnum, strpart(line, 0, inicio)) end if f == 1 " formula increase it - let ind = ind + &sw + let ind = ind + shiftwidth() end end endw @@ -115,13 +115,13 @@ fun! CdlGetIndent(lnum) " CURRENT LINE, if it starts with a closing element, decrease indent " or if it starts with '=' (asignment), increase indent if match(thisline, '^\c\s*\(else\|then\|endif\|[);]\)') >= 0 - let ind = ind - &sw + let ind = ind - shiftwidth() elseif match(thisline, '^\s*=') >= 0 if f == -1 " we don't know yet if is an asignment, find out let f = CdlAsignment(lnum, "") end if f == 1 " formula increase it - let ind = ind + &sw + let ind = ind + shiftwidth() end end diff --git a/runtime/indent/chaiscript.vim b/runtime/indent/chaiscript.vim index 247e1a6e4c..445281cc46 100644 --- a/runtime/indent/chaiscript.vim +++ b/runtime/indent/chaiscript.vim @@ -31,19 +31,19 @@ function! GetChaiScriptIndent() let flag = 0 let prevline = getline(lnum) if prevline =~ '^.*{.*' - let ind = ind + &shiftwidth + let ind = ind + shiftwidth() let flag = 1 endif " Subtract a 'shiftwidth' after lines containing a { followed by a } " to keep it balanced if flag == 1 && prevline =~ '.*{.*}.*' - let ind = ind - &shiftwidth + let ind = ind - shiftwidth() endif " Subtract a 'shiftwidth' on lines ending with } if getline(v:lnum) =~ '^\s*\%(}\)' - let ind = ind - &shiftwidth + let ind = ind - shiftwidth() endif return ind diff --git a/runtime/indent/clojure.vim b/runtime/indent/clojure.vim index 7592b10d7d..7c4186e29b 100644 --- a/runtime/indent/clojure.vim +++ b/runtime/indent/clojure.vim @@ -261,7 +261,7 @@ if exists("*searchpairpos") call cursor(paren) if s:is_method_special_case(paren) - return [paren[0], paren[1] + &shiftwidth - 1] + return [paren[0], paren[1] + shiftwidth() - 1] endif if s:is_reader_conditional_special_case(paren) @@ -299,19 +299,19 @@ if exists("*searchpairpos") let ww = s:strip_namespace_and_macro_chars(w) if &lispwords =~# '\V\<' . ww . '\>' - return [paren[0], paren[1] + &shiftwidth - 1] + return [paren[0], paren[1] + shiftwidth() - 1] endif if g:clojure_fuzzy_indent \ && !s:match_one(g:clojure_fuzzy_indent_blacklist, ww) \ && s:match_one(g:clojure_fuzzy_indent_patterns, ww) - return [paren[0], paren[1] + &shiftwidth - 1] + return [paren[0], paren[1] + shiftwidth() - 1] endif call search('\v\_s', 'cW') call search('\v\S', 'W') if paren[0] < line(".") - return [paren[0], paren[1] + (g:clojure_align_subforms ? 0 : &shiftwidth - 1)] + return [paren[0], paren[1] + (g:clojure_align_subforms ? 0 : shiftwidth() - 1)] endif call search('\v\S', 'bW') diff --git a/runtime/indent/cmake.vim b/runtime/indent/cmake.vim index 421afcb6d7..93a131b938 100644 --- a/runtime/indent/cmake.vim +++ b/runtime/indent/cmake.vim @@ -68,19 +68,19 @@ fun! CMakeGetIndent(lnum) let ind = ind else if previous_line =~? cmake_indent_begin_regex - let ind = ind + &sw + let ind = ind + shiftwidth() endif if previous_line =~? cmake_indent_open_regex - let ind = ind + &sw + let ind = ind + shiftwidth() endif endif " Subtract if this_line =~? cmake_indent_end_regex - let ind = ind - &sw + let ind = ind - shiftwidth() endif if previous_line =~? cmake_indent_close_regex - let ind = ind - &sw + let ind = ind - shiftwidth() endif return ind diff --git a/runtime/indent/cobol.vim b/runtime/indent/cobol.vim index 8dce3cd014..c08444ac40 100644 --- a/runtime/indent/cobol.vim +++ b/runtime/indent/cobol.vim @@ -52,11 +52,11 @@ function! s:optionalblock(lnum,ind,blocks,clauses) if getline(lastclause) =~? clauses && s:stripped(lastclause) !~? '^'.begin let ind = indent(lastclause) elseif lastclause > 0 - let ind = indent(lastclause) + &sw - "let ind = ind + &sw + let ind = indent(lastclause) + shiftwidth() + "let ind = ind + shiftwidth() endif elseif line =~? clauses && cline !~? end - let ind = ind + &sw + let ind = ind + shiftwidth() endif return ind endfunction @@ -98,8 +98,8 @@ function! GetCobolIndent(lnum) abort let num = matchstr(line,'^\s*\zs\d\+\>') if 0+cnum == num return lindent - elseif 0+cnum > num && default < lindent + &sw - let default = lindent + &sw + elseif 0+cnum > num && default < lindent + shiftwidth() + let default = lindent + shiftwidth() endif elseif lindent < bshft && lindent >= ashft break @@ -135,13 +135,13 @@ function! GetCobolIndent(lnum) abort if line =~? '^PERFORM\>' let perfline = substitute(line, '\c^PERFORM\s*', "", "") if perfline =~? '^\%(\k\+\s\+TIMES\)\=\s*$' - let ind = ind + &sw + let ind = ind + shiftwidth() elseif perfline =~? '^\%(WITH\s\+TEST\|VARYING\|UNTIL\)\>.*[^.]$' - let ind = ind + &sw + let ind = ind + shiftwidth() endif endif if line =~? '^\%(IF\|THEN\|ELSE\|READ\|EVALUATE\|SEARCH\|SELECT\)\>' - let ind = ind + &sw + let ind = ind + shiftwidth() endif let ind = s:optionalblock(a:lnum,ind,'ADD\|COMPUTE\|DIVIDE\|MULTIPLY\|SUBTRACT','ON\s\+SIZE\s\+ERROR') let ind = s:optionalblock(a:lnum,ind,'STRING\|UNSTRING\|ACCEPT\|DISPLAY\|CALL','ON\s\+OVERFLOW\|ON\s\+EXCEPTION') @@ -157,10 +157,10 @@ function! GetCobolIndent(lnum) abort "&& s:stripped(lastclause) !~? '^\%(SEARCH\|EVALUATE\|READ\)\>' let ind = indent(lastclause) elseif lastclause > 0 - let ind = indent(lastclause) + &sw + let ind = indent(lastclause) + shiftwidth() endif elseif line =~? '^WHEN\>' - let ind = ind + &sw + let ind = ind + shiftwidth() endif "I'm not sure why I had this "if line =~? '^ELSE\>-\@!' && line !~? '\.$' @@ -168,7 +168,7 @@ function! GetCobolIndent(lnum) abort "endif if cline =~? '^\(END\)\>-\@!' " On lines with just END, 'guess' a simple shift left - let ind = ind - &sw + let ind = ind - shiftwidth() elseif cline =~? '^\(END-IF\|THEN\|ELSE\)\>-\@!' call cursor(a:lnum,indent(a:lnum)) let match = searchpair('\c-\@','\c-\@','\c-\@\zs','bnW',s:skip) @@ -209,7 +209,7 @@ function! GetCobolIndent(lnum) abort if match > 0 let ind = indent(match) elseif cline =~? '^\(END-\(READ\|EVALUATE\|SEARCH\|PERFORM\)\)\>' - let ind = ind - &sw + let ind = ind - shiftwidth() endif endif return ind < bshft ? bshft : ind diff --git a/runtime/indent/cucumber.vim b/runtime/indent/cucumber.vim index 999b8d6a76..ad28a67a0d 100644 --- a/runtime/indent/cucumber.vim +++ b/runtime/indent/cucumber.vim @@ -1,7 +1,7 @@ " Vim indent file " Language: Cucumber " Maintainer: Tim Pope -" Last Change: 2016 Aug 29 +" Last Change: 2017 Jun 13 if exists("b:did_indent") finish @@ -27,7 +27,7 @@ function! GetCucumberIndent() let line = getline(prevnonblank(v:lnum-1)) let cline = getline(v:lnum) let nline = getline(nextnonblank(v:lnum+1)) - let sw = exists('*shiftwidth') ? shiftwidth() : &sw + let sw = exists('*shiftwidth') ? shiftwidth() : shiftwidth() let syn = s:syn(prevnonblank(v:lnum-1)) let csyn = s:syn(v:lnum) let nsyn = s:syn(nextnonblank(v:lnum+1)) diff --git a/runtime/indent/dylan.vim b/runtime/indent/dylan.vim index 0afcbeada7..6811ec4af5 100644 --- a/runtime/indent/dylan.vim +++ b/runtime/indent/dylan.vim @@ -1,7 +1,7 @@ " Vim indent file " Language: Dylan " Version: 0.01 -" Last Change: 2003 Feb 04 +" Last Change: 2017 Jun 13 " Maintainer: Brent A. Fulgham " Only load this indent file when no other was loaded. @@ -45,13 +45,13 @@ function DylanGetIndent() " If previous line was a 'define', indent if prevline =~? '\(^\s*\(begin\|block\|case\|define\|else\|elseif\|for\|finally\|if\|select\|unless\|while\)\|\s*\S*\s*=>$\)' - let chg = &sw + let chg = shiftwidth() " local methods indent the shift-width, plus 6 for the 'local' elseif prevline =~? '^\s*local' - let chg = &sw + 6 + let chg = shiftwidth() + 6 " If previous line was a let with no closing semicolon, indent elseif prevline =~? '^\s*let.*[^;]\s*$' - let chg = &sw + let chg = shiftwidth() " If previous line opened a parenthesis, and did not close it, indent elseif prevline =~ '^.*(\s*[^)]*\((.*)\)*[^)]*$' return = match( prevline, '(.*\((.*)\|[^)]\)*.*$') + 1 @@ -75,13 +75,13 @@ function DylanGetIndent() " line doesn't start with an indentable command: let curr_str = getline(curr_line) if curr_str =~? '^\s*\(begin\|block\|case\|define\|else\|elseif\|for\|finally\|if\|select\|unless\|while\)' - let chg = &sw + let chg = shiftwidth() endif endif " If a line starts with end, un-indent (even if we just indented!) if cline =~? '^\s*\(cleanup\|end\|else\|elseif\|exception\|finally\|otherwise\)' - let chg = chg - &sw + let chg = chg - shiftwidth() endif return ind + chg diff --git a/runtime/indent/erlang.vim b/runtime/indent/erlang.vim index 7569fe9106..9228f18683 100644 --- a/runtime/indent/erlang.vim +++ b/runtime/indent/erlang.vim @@ -669,7 +669,7 @@ function! s:BeginningOfClauseFound(stack, token, stored_vcol) call s:Pop(a:stack) if empty(a:stack) call s:Log(' Stack is ["when"], so LTI is in a guard -> return') - return [1, a:stored_vcol + &sw + 2] + return [1, a:stored_vcol + shiftwidth() + 2] else return [1, s:UnexpectedToken(a:token, a:stack)] endif @@ -678,7 +678,7 @@ function! s:BeginningOfClauseFound(stack, token, stored_vcol) call s:Pop(a:stack) if empty(a:stack) call s:Log(' Stack is ["->"], so LTI is in function body -> return') - return [1, a:stored_vcol + &sw] + return [1, a:stored_vcol + shiftwidth()] elseif a:stack[0] ==# ';' call s:Pop(a:stack) if empty(a:stack) @@ -797,7 +797,7 @@ function! s:ErlangCalcIndent2(lnum, stack) elseif token ==# 'begin' let [ret, res] = s:BeginElementFound(stack, token, curr_vcol, - \stored_vcol, 'end', &sw) + \stored_vcol, 'end', shiftwidth()) if ret | return res | endif " case EXPR of BRANCHES end @@ -848,11 +848,11 @@ function! s:ErlangCalcIndent2(lnum, stack) elseif stack == ['->'] call s:Log(' LTI is in a branch after ' . \'"of/receive/after/if/catch" -> return') - return stored_vcol + &sw + return stored_vcol + shiftwidth() elseif stack == ['when'] call s:Log(' LTI is in a guard after ' . \'"of/receive/after/if/catch" -> return') - return stored_vcol + &sw + return stored_vcol + shiftwidth() else return s:UnexpectedToken(token, stack) endif @@ -888,7 +888,7 @@ function! s:ErlangCalcIndent2(lnum, stack) if empty(stack) call s:Log(' LTI is in a condition; matching ' . \'"case/if/try/receive" found') - let stored_vcol = curr_vcol + &sw + let stored_vcol = curr_vcol + shiftwidth() elseif stack[0] ==# 'align_to_begin_element' call s:Pop(stack) let stored_vcol = curr_vcol @@ -897,23 +897,23 @@ function! s:ErlangCalcIndent2(lnum, stack) \'"case/if/try/receive" found') call s:Pop(stack) call s:Pop(stack) - let stored_vcol = curr_vcol + &sw + let stored_vcol = curr_vcol + shiftwidth() elseif stack[0] ==# '->' call s:Log(' LTI is in a branch; matching ' . \'"case/if/try/receive" found') call s:Pop(stack) - let stored_vcol = curr_vcol + 2 * &sw + let stored_vcol = curr_vcol + 2 * shiftwidth() elseif stack[0] ==# 'when' call s:Log(' LTI is in a guard; matching ' . \'"case/if/try/receive" found') call s:Pop(stack) - let stored_vcol = curr_vcol + 2 * &sw + 2 + let stored_vcol = curr_vcol + 2 * shiftwidth() + 2 endif endif let [ret, res] = s:BeginElementFound(stack, token, curr_vcol, - \stored_vcol, 'end', &sw) + \stored_vcol, 'end', shiftwidth()) if ret | return res | endif elseif token ==# 'fun' @@ -930,7 +930,7 @@ function! s:ErlangCalcIndent2(lnum, stack) " stack = ['when'] => LTI is in a guard if empty(stack) call s:Log(' LTI is in a condition; matching "fun" found') - let stored_vcol = curr_vcol + &sw + let stored_vcol = curr_vcol + shiftwidth() elseif len(stack) > 1 && stack[0] ==# '->' && stack[1] ==# ';' call s:Log(' LTI is in a condition; matching "fun" found') call s:Pop(stack) @@ -938,15 +938,15 @@ function! s:ErlangCalcIndent2(lnum, stack) elseif stack[0] ==# '->' call s:Log(' LTI is in a branch; matching "fun" found') call s:Pop(stack) - let stored_vcol = curr_vcol + 2 * &sw + let stored_vcol = curr_vcol + 2 * shiftwidth() elseif stack[0] ==# 'when' call s:Log(' LTI is in a guard; matching "fun" found') call s:Pop(stack) - let stored_vcol = curr_vcol + 2 * &sw + 2 + let stored_vcol = curr_vcol + 2 * shiftwidth() + 2 endif let [ret, res] = s:BeginElementFound(stack, token, curr_vcol, - \stored_vcol, 'end', &sw) + \stored_vcol, 'end', shiftwidth()) if ret | return res | endif else " Pass: we have a function reference (e.g. "fun f/0") @@ -1220,7 +1220,7 @@ function! s:ErlangCalcIndent2(lnum, stack) " when A, " LTI let [ret, res] = s:BeginElementFoundIfEmpty(stack, token, curr_vcol, - \stored_vcol, &sw) + \stored_vcol, shiftwidth()) if ret | return res | endif else " Example: @@ -1252,7 +1252,7 @@ function! s:ErlangCalcIndent2(lnum, stack) " If LTI is between an 'after' and the corresponding " 'end', then let's return let [ret, res] = s:BeginElementFoundIfEmpty(stack, token, curr_vcol, - \stored_vcol, &sw) + \stored_vcol, shiftwidth()) if ret | return res | endif endif diff --git a/runtime/indent/eruby.vim b/runtime/indent/eruby.vim index afabd4fe5b..5058325495 100644 --- a/runtime/indent/eruby.vim +++ b/runtime/indent/eruby.vim @@ -47,11 +47,7 @@ set cpo&vim function! GetErubyIndent(...) " The value of a single shift-width - if exists('*shiftwidth') - let sw = shiftwidth() - else - let sw = &sw - endif + let sw = shiftwidth() if a:0 && a:1 == '.' let v:lnum = line('.') diff --git a/runtime/indent/falcon.vim b/runtime/indent/falcon.vim index 84b16d55f0..b34e7cfd47 100644 --- a/runtime/indent/falcon.vim +++ b/runtime/indent/falcon.vim @@ -339,7 +339,7 @@ function FalconGetIndent(...) " If the previous line ended with a block opening, add a level of indent. if s:Match(lnum, s:block_regex) - return indent(s:GetMSL(lnum)) + &sw + return indent(s:GetMSL(lnum)) + shiftwidth() endif " If it contained hanging closing brackets, find the rightmost one, find its @@ -350,20 +350,20 @@ function FalconGetIndent(...) if opening.pos != -1 if opening.type == '(' && searchpair('(', '', ')', 'bW', s:skip_expr) > 0 if col('.') + 1 == col('$') - return ind + &sw + return ind + shiftwidth() else return virtcol('.') endif else let nonspace = matchend(line, '\S', opening.pos + 1) - 1 - return nonspace > 0 ? nonspace : ind + &sw + return nonspace > 0 ? nonspace : ind + shiftwidth() endif elseif closing.pos != -1 call cursor(lnum, closing.pos + 1) normal! % if s:Match(line('.'), s:falcon_indent_keywords) - return indent('.') + &sw + return indent('.') + shiftwidth() else return indent('.') endif @@ -392,7 +392,7 @@ function FalconGetIndent(...) let col = s:Match(lnum, s:falcon_indent_keywords) if col > 0 call cursor(lnum, col) - let ind = virtcol('.') - 1 + &sw + let ind = virtcol('.') - 1 + shiftwidth() " TODO: make this better (we need to count them) (or, if a searchpair " fails, we know that something is lacking an end and thus we indent a " level @@ -422,9 +422,9 @@ function FalconGetIndent(...) " TODO: this does not take into account contrived things such as " module Foo; class Bar; end if s:Match(lnum, s:falcon_indent_keywords) - let ind = msl_ind + &sw + let ind = msl_ind + shiftwidth() if s:Match(lnum, s:end_end_regex) - let ind = ind - &sw + let ind = ind - shiftwidth() endif return ind endif @@ -433,7 +433,7 @@ function FalconGetIndent(...) " closing bracket, indent one extra level. if s:Match(lnum, s:non_bracket_continuation_regex) && !s:Match(lnum, '^\s*\([\])}]\|end\)') if lnum == p_lnum - let ind = msl_ind + &sw + let ind = msl_ind + shiftwidth() else let ind = msl_ind endif diff --git a/runtime/indent/gitconfig.vim b/runtime/indent/gitconfig.vim index 480c96d1b9..6a670ee271 100644 --- a/runtime/indent/gitconfig.vim +++ b/runtime/indent/gitconfig.vim @@ -1,7 +1,7 @@ " Vim indent file " Language: git config file " Maintainer: Tim Pope -" Last Change: 2016 Aug 29 +" Last Change: 2017 Jun 13 if exists("b:did_indent") finish @@ -20,7 +20,7 @@ if exists("*GetGitconfigIndent") endif function! GetGitconfigIndent() - let sw = exists('*shiftwidth') ? shiftwidth() : &sw + let sw = shiftwidth() let line = getline(prevnonblank(v:lnum-1)) let cline = getline(v:lnum) if line =~ '\\\@ -" Last Change: 2011-12-24 +" Last Change: 2017 Jun 13 if exists("b:did_indent") finish @@ -27,11 +27,11 @@ function! GetGitoliteIndent() let cline = getline(v:lnum) if cline =~ '^\s*\(C\|R\|RW\|RW+\|RWC\|RW+C\|RWD\|RW+D\|RWCD\|RW+CD\|-\)[ \t=]' - return &sw + return shiftwidth() elseif cline =~ '^\s*config\s' - return &sw + return shiftwidth() elseif pline =~ '^\s*repo\s' && cline =~ '^\s*\(#.*\)\?$' - return &sw + return shiftwidth() elseif cline =~ '^\s*#' return indent(prevln) elseif cline =~ '^\s*$' diff --git a/runtime/indent/go.vim b/runtime/indent/go.vim index 412ac871c4..bf9ff75e6c 100644 --- a/runtime/indent/go.vim +++ b/runtime/indent/go.vim @@ -1,7 +1,7 @@ " Vim indent file " Language: Go " Maintainer: David Barnett (https://github.com/google/vim-ft-go) -" Last Change: 2014 Aug 16 +" Last Change: 2017 Jun 13 " " TODO: " - function invocations split across lines @@ -23,18 +23,6 @@ if exists('*GoIndent') finish endif -" The shiftwidth() function is relatively new. -" Don't require it to exist. -if exists('*shiftwidth') - function s:sw() abort - return shiftwidth() - endfunction -else - function s:sw() abort - return &shiftwidth - endfunction -endif - function! GoIndent(lnum) let l:prevlnum = prevnonblank(a:lnum-1) if l:prevlnum == 0 @@ -51,17 +39,17 @@ function! GoIndent(lnum) if l:prevl =~ '[({]\s*$' " previous line opened a block - let l:ind += s:sw() + let l:ind += shiftwidth() endif if l:prevl =~# '^\s*\(case .*\|default\):$' " previous line is part of a switch statement - let l:ind += s:sw() + let l:ind += shiftwidth() endif " TODO: handle if the previous line is a label. if l:thisl =~ '^\s*[)}]' " this line closed a block - let l:ind -= s:sw() + let l:ind -= shiftwidth() endif " Colons are tricky. @@ -69,7 +57,7 @@ function! GoIndent(lnum) " We ignore trying to deal with jump labels because (a) they're rare, and " (b) they're hard to disambiguate from a composite literal key. if l:thisl =~# '^\s*\(case .*\|default\):$' - let l:ind -= s:sw() + let l:ind -= shiftwidth() endif return l:ind diff --git a/runtime/indent/haml.vim b/runtime/indent/haml.vim index c3935af9e9..e6416e6f53 100644 --- a/runtime/indent/haml.vim +++ b/runtime/indent/haml.vim @@ -1,7 +1,7 @@ " Vim indent file " Language: Haml " Maintainer: Tim Pope -" Last Change: 2016 Aug 29 +" Last Change: 2017 Jun 13 if exists("b:did_indent") finish @@ -37,7 +37,7 @@ function! GetHamlIndent() let line = substitute(line,'^\s\+','','') let indent = indent(lnum) let cindent = indent(v:lnum) - let sw = exists('*shiftwidth') ? shiftwidth() : &sw + let sw = shiftwidth() if cline =~# '\v^-\s*%(elsif|else|when)>' let indent = cindent < indent ? cindent : indent - sw endif diff --git a/runtime/indent/hamster.vim b/runtime/indent/hamster.vim index 93e7db486e..b27a173924 100644 --- a/runtime/indent/hamster.vim +++ b/runtime/indent/hamster.vim @@ -27,13 +27,13 @@ function HamGetIndent(lnum) " Add a shiftwidth to statements following if, else, elseif, " case, select, default, do, until, while, for, start if prevline =~? '^\s*\<\(if\|else\%(if\)\?\|for\|repeat\|do\|while\|sub\)\>' - let ind = ind + &sw + let ind = ind + shiftwidth() endif " Subtract a shiftwidth from else, elseif, end(if|while|for), until let line = getline(v:lnum) if line =~? '^\s*\(else\|elseif\|loop\|until\|end\%(if\|while\|for\|sub\)\)\>' - let ind = ind - &sw + let ind = ind - shiftwidth() endif return ind diff --git a/runtime/indent/hog.vim b/runtime/indent/hog.vim index 02ac7d4d1b..ece587d46f 100644 --- a/runtime/indent/hog.vim +++ b/runtime/indent/hog.vim @@ -47,7 +47,7 @@ function GetHogIndent() " Continuation of a line that wasn't indented let prevline = getline(prevlnum) if prevline =~ '^\k\+.*\\\s*$' - return &sw + return shiftwidth() endif " Continuation of a line that was indented @@ -58,13 +58,13 @@ function GetHogIndent() " Indent the next line if previous line contained a start of a block " definition ('{' or '('). if prevline =~ '^\k\+[^#]*{}\@!\s*$' " TODO || prevline =~ '^\k\+[^#]*()\@!\s*$' - return &sw + return shiftwidth() endif " Match inside of a block if s:IsInBlock(v:lnum) if prevline =~ "^\k\+.*$" - return &sw + return shiftwidth() else return indent(prevlnum) endif diff --git a/runtime/indent/html.vim b/runtime/indent/html.vim index 57ba53ecd4..37697841fd 100644 --- a/runtime/indent/html.vim +++ b/runtime/indent/html.vim @@ -2,7 +2,7 @@ " Header: "{{{ " Maintainer: Bram Moolenaar " Original Author: Andy Wokula -" Last Change: 2017 Jan 17 +" Last Change: 2017 Jun 13 " Version: 1.0 " Description: HTML indent script with cached state for faster indenting on a " range of lines. @@ -51,15 +51,6 @@ if exists("*HtmlIndent") && !exists('g:force_reload_html') finish endif -" shiftwidth() exists since patch 7.3.694 -if exists('*shiftwidth') - let s:ShiftWidth = function('shiftwidth') -else - func! s:ShiftWidth() - return &shiftwidth - endfunc -endif - " Allow for line continuation below. let s:cpo_save = &cpo set cpo-=C @@ -123,7 +114,7 @@ func! HtmlIndent_CheckUserSettings() let indone = {"zero": 0 \,"auto": "indent(prevnonblank(v:lnum-1))" - \,"inc": "b:hi_indent.blocktagind + s:ShiftWidth()"} + \,"inc": "b:hi_indent.blocktagind + shiftwidth()"} let script1 = '' if exists("b:html_indent_script1") @@ -358,7 +349,7 @@ func! s:CheckBlockTag(blocktag, ind) endif let b:hi_newstate.blocklnr = v:lnum " save allover indent for the endtag - let b:hi_newstate.blocktagind = b:hi_indent.baseindent + (s:nextrel + s:curind) * s:ShiftWidth() + let b:hi_newstate.blocktagind = b:hi_indent.baseindent + (s:nextrel + s:curind) * shiftwidth() if a:ind == 3 return "SCRIPT" " all except this must be lowercase " line is to be checked again for the type attribute @@ -480,7 +471,7 @@ func! s:FreshState(lnum) let state.blocklnr = stopline " check preceding tags in the line: call s:CountITags(tagline[: stopcol-2]) - let state.blocktagind = indent(stopline) + (s:curind + s:nextrel) * s:ShiftWidth() + let state.blocktagind = indent(stopline) + (s:curind + s:nextrel) * shiftwidth() return state elseif stopline == state.lnum " handle special case: previous line (= state.lnum) contains a @@ -490,7 +481,7 @@ func! s:FreshState(lnum) if !swendtag let [bline, bcol] = searchpos('<'.blocktag[1:].'\>', "bnW") call s:CountITags(tolower(getline(bline)[: bcol-2])) - let state.baseindent = indent(bline) + (s:curind + s:nextrel) * s:ShiftWidth() + let state.baseindent = indent(bline) + (s:curind + s:nextrel) * shiftwidth() return state endif endif @@ -511,7 +502,7 @@ func! s:FreshState(lnum) if found == 2 let state.baseindent = b:hi_indent.baseindent endif - let state.blocktagind = indent(comlnum) + (s:curind + s:nextrel) * s:ShiftWidth() + let state.blocktagind = indent(comlnum) + (s:curind + s:nextrel) * shiftwidth() return state endif @@ -530,7 +521,7 @@ func! s:FreshState(lnum) let text = tolower(getline(comlnum)[: comcol-2]) endif call s:CountITags(text) - let state.baseindent = indent(comlnum) + (s:curind + s:nextrel) * s:ShiftWidth() + let state.baseindent = indent(comlnum) + (s:curind + s:nextrel) * shiftwidth() " TODO check tags that follow "-->" return state endif @@ -550,9 +541,9 @@ func! s:FreshState(lnum) let text = getline(start_lnum) let swendtag = match(text, '^\s*= 0 call s:CountITags(text[: col('.') - 2]) - let state.baseindent += s:nextrel * s:ShiftWidth() + let state.baseindent += s:nextrel * shiftwidth() if !swendtag - let state.baseindent += s:curind * s:ShiftWidth() + let state.baseindent += s:curind * shiftwidth() endif endif return state @@ -565,9 +556,9 @@ func! s:FreshState(lnum) let text = getline(state.lnum) let swendtag = match(text, '^\s*= 0 call s:CountITags(tolower(text)) - let state.baseindent = indent(state.lnum) + s:nextrel * s:ShiftWidth() + let state.baseindent = indent(state.lnum) + s:nextrel * shiftwidth() if !swendtag - let state.baseindent += s:curind * s:ShiftWidth() + let state.baseindent += s:curind * shiftwidth() endif return state endfunc "}}} @@ -646,7 +637,7 @@ func! s:CSSIndent() " add indent after { let brace_counts = HtmlIndent_CountBraces(prev_lnum) - let extra = brace_counts.c_open * s:ShiftWidth() + let extra = brace_counts.c_open * shiftwidth() let prev_text = getline(prev_lnum) let below_end_brace = prev_text =~ '}\s*$' @@ -663,7 +654,7 @@ func! s:CSSIndent() " if the current line is not a comment or starts with @ (used by template " systems) reduce indent if previous line is a continuation line if !prev_hasfield && !prev_special - let extra = -s:ShiftWidth() + let extra = -shiftwidth() endif else let cur_hasfield = curtext =~ '^\s*[a-zA-Z0-9-]\+:' @@ -671,14 +662,14 @@ func! s:CSSIndent() if !cur_hasfield && (prev_hasfield || prev_unfinished) " Continuation line has extra indent if the previous line was not a " continuation line. - let extra = s:ShiftWidth() + let extra = shiftwidth() " Align with @if if prev_text =~ '^\s*@if ' let extra = 4 endif elseif cur_hasfield && !prev_hasfield && !prev_special " less indent below a continuation line - let extra = -s:ShiftWidth() + let extra = -shiftwidth() endif endif endif @@ -699,10 +690,10 @@ func! s:CSSIndent() if special " do not reduce indent below @{ ... } if extra < 0 - let extra += s:ShiftWidth() + let extra += shiftwidth() endif else - let extra -= (brace_counts.c_close - (prev_text =~ '^\s*}')) * s:ShiftWidth() + let extra -= (brace_counts.c_close - (prev_text =~ '^\s*}')) * shiftwidth() endif endif @@ -710,10 +701,10 @@ func! s:CSSIndent() if extra == 0 if brace_counts.p_open > brace_counts.p_close " previous line has more ( than ): add a shiftwidth - let extra = s:ShiftWidth() + let extra = shiftwidth() elseif brace_counts.p_open < brace_counts.p_close " previous line has more ) than (: subtract a shiftwidth - let extra = -s:ShiftWidth() + let extra = -shiftwidth() endif endif @@ -816,7 +807,7 @@ func! s:Alien5() let idx = match(prevtext, '^\s*\zs" contained skipwhite " ----------------------------- " Special filetype highlighting {{{1 " ----------------------------- -if exists("g:netrw_special_syntax") && netrw_special_syntax - syn match netrwBak "\(\S\+ \)*\S\+\.bak\>" contains=netrwTreeBar,@NoSpell - syn match netrwCompress "\(\S\+ \)*\S\+\.\%(gz\|bz2\|Z\|zip\)\>" contains=netrwTreeBar,@NoSpell - if has("unix") - syn match netrwCoreDump "\" contains=netrwTreeBar,@NoSpell +if exists("g:netrw_special_syntax") && g:netrw_special_syntax + if exists("+suffixes") && &suffixes != "" + let suflist= join(split(&suffixes,',')) + let suflist= escape(substitute(suflist," ",'\\|','g'),'.~') + exe "syn match netrwSpecFile '\\(\\S\\+ \\)*\\S*\\(".suflist."\\)\\>' contains=netrwTreeBar,@NoSpell" endif - syn match netrwLex "\(\S\+ \)*\S\+\.\%(l\|lex\)\>" contains=netrwTreeBar,@NoSpell - syn match netrwYacc "\(\S\+ \)*\S\+\.y\>" contains=netrwTreeBar,@NoSpell - syn match netrwData "\(\S\+ \)*\S\+\.dat\>" contains=netrwTreeBar,@NoSpell - syn match netrwDoc "\(\S\+ \)*\S\+\.\%(doc\|txt\|pdf\|ps\)" contains=netrwTreeBar,@NoSpell - syn match netrwHdr "\(\S\+ \)*\S\+\.\%(h\|hpp\)\>" contains=netrwTreeBar,@NoSpell - syn match netrwLib "\(\S\+ \)*\S*\.\%(a\|so\|lib\|dll\)\>" contains=netrwTreeBar,@NoSpell - syn match netrwMakeFile "\<[mM]akefile\>\|\(\S\+ \)*\S\+\.mak\>" contains=netrwTreeBar,@NoSpell - syn match netrwObj "\(\S\+ \)*\S*\.\%(o\|obj\)\>" contains=netrwTreeBar,@NoSpell - syn match netrwTags "\<\(ANmenu\|ANtags\)\>" contains=netrwTreeBar,@NoSpell - syn match netrwTags "\" contains=netrwTreeBar,@NoSpell - syn match netrwTilde "\(\S\+ \)*\S\+\~\*\=\>" contains=netrwTreeBar,@NoSpell - syn match netrwTmp "\\|\(\S\+ \)*\S*tmp\>" contains=netrwTreeBar,@NoSpell + syn match netrwBak "\(\S\+ \)*\S\+\.bak\>" contains=netrwTreeBar,@NoSpell + syn match netrwCompress "\(\S\+ \)*\S\+\.\%(gz\|bz2\|Z\|zip\)\>" contains=netrwTreeBar,@NoSpell + if has("unix") + syn match netrwCoreDump "\" contains=netrwTreeBar,@NoSpell + endif + syn match netrwLex "\(\S\+ \)*\S\+\.\%(l\|lex\)\>" contains=netrwTreeBar,@NoSpell + syn match netrwYacc "\(\S\+ \)*\S\+\.y\>" contains=netrwTreeBar,@NoSpell + syn match netrwData "\(\S\+ \)*\S\+\.dat\>" contains=netrwTreeBar,@NoSpell + syn match netrwDoc "\(\S\+ \)*\S\+\.\%(doc\|txt\|pdf\|ps\|docx\)\>" contains=netrwTreeBar,@NoSpell + syn match netrwHdr "\(\S\+ \)*\S\+\.\%(h\|hpp\)\>" contains=netrwTreeBar,@NoSpell + syn match netrwLib "\(\S\+ \)*\S*\.\%(a\|so\|lib\|dll\)\>" contains=netrwTreeBar,@NoSpell + syn match netrwMakeFile "\<[mM]akefile\>\|\(\S\+ \)*\S\+\.mak\>" contains=netrwTreeBar,@NoSpell + syn match netrwObj "\(\S\+ \)*\S*\.\%(o\|obj\)\>" contains=netrwTreeBar,@NoSpell + syn match netrwPix "\c\(\S\+ \)*\S*\.\%(bmp\|fits\=\|gif\|je\=pg\|pcx\|ppc\|pgm\|png\|ppm\|psd\|rgb\|tif\|xbm\|xcf\)\>" contains=netrwTreeBar,@NoSpell + syn match netrwTags "\<\(ANmenu\|ANtags\)\>" contains=netrwTreeBar,@NoSpell + syn match netrwTags "\" contains=netrwTreeBar,@NoSpell + syn match netrwTilde "\(\S\+ \)*\S\+\~\*\=\>" contains=netrwTreeBar,@NoSpell + syn match netrwTmp "\\|\(\S\+ \)*\S*tmp\>" contains=netrwTreeBar,@NoSpell endif " --------------------------------------------------------------------- @@ -101,21 +104,42 @@ if !exists("did_drchip_netrwlist_syntax") hi default link netrwLink Special " special syntax highlighting (see :he g:netrw_special_syntax) - hi default link netrwBak NonText - hi default link netrwCompress Folded hi default link netrwCoreDump WarningMsg hi default link netrwData DiffChange hi default link netrwHdr netrwPlain hi default link netrwLex netrwPlain hi default link netrwLib DiffChange hi default link netrwMakefile DiffChange - hi default link netrwObj Folded - hi default link netrwTilde Folded - hi default link netrwTmp Folded - hi default link netrwTags Folded hi default link netrwYacc netrwPlain + hi default link netrwPix Special + + hi default link netrwBak netrwGray + hi default link netrwCompress netrwGray + hi default link netrwSpecFile netrwGray + hi default link netrwObj netrwGray + hi default link netrwTags netrwGray + hi default link netrwTilde netrwGray + hi default link netrwTmp netrwGray endif + " set up netrwGray to be understated (but not Ignore'd or Conceal'd, as those + " can be hard/impossible to read). Users may override this in a colorscheme by + " specifying netrwGray highlighting. + redir => s:netrwgray + sil hi netrwGray + redir END + if s:netrwgray !~ 'guifg' + if has("gui") && has("gui_running") + if &bg == "dark" + exe "hi netrwGray gui=NONE guifg=gray30" + else + exe "hi netrwGray gui=NONE guifg=gray70" + endif + else + hi link netrwGray Folded + endif + endif + " Current Syntax: {{{1 let b:current_syntax = "netrwlist" " --------------------------------------------------------------------- diff --git a/runtime/syntax/sh.vim b/runtime/syntax/sh.vim index f97299cdeb..838c5eb4a7 100644 --- a/runtime/syntax/sh.vim +++ b/runtime/syntax/sh.vim @@ -2,8 +2,8 @@ " Language: shell (sh) Korn shell (ksh) bash (sh) " Maintainer: Charles E. Campbell " Previous Maintainer: Lennart Schultz -" Last Change: Jan 30, 2017 -" Version: 168 +" Last Change: Oct 02, 2017 +" Version: 172 " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_SH " For options and settings, please use: :help ft-sh-syntax " This file includes many ideas from Eric Brunet (eric.brunet@ens.fr) @@ -128,7 +128,7 @@ syn cluster shArithParenList contains=shArithmetic,shCaseEsac,shComment,shDeref, syn cluster shArithList contains=@shArithParenList,shParenError syn cluster shCaseEsacList contains=shCaseStart,shCase,shCaseBar,shCaseIn,shComment,shDeref,shDerefSimple,shCaseCommandSub,shCaseExSingleQuote,shCaseSingleQuote,shCaseDoubleQuote,shCtrlSeq,@shErrorList,shStringSpecial,shCaseRange syn cluster shCaseList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shHereDoc,shIf,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq -syn cluster shCommandSubList contains=shAlias,shArithmetic,shComment,shCmdParenRegion,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shEcho,shEscape,shExDoubleQuote,shExpr,shExSingleQuote,shHereDoc,shNumber,shOperator,shOption,shPosnParm,shHereString,shRedir,shSingleQuote,shSpecial,shStatement,shSubSh,shTest,shVariable +syn cluster shCommandSubList contains=shAlias,shArithmetic,shCmdParenRegion,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shEcho,shEscape,shExDoubleQuote,shExpr,shExSingleQuote,shHereDoc,shNumber,shOperator,shOption,shPosnParm,shHereString,shRedir,shSingleQuote,shSpecial,shStatement,shSubSh,shTest,shVariable syn cluster shCurlyList contains=shNumber,shComma,shDeref,shDerefSimple,shDerefSpecial syn cluster shDblQuoteList contains=shCommandSub,shDeref,shDerefSimple,shEscape,shPosnParm,shCtrlSeq,shSpecial syn cluster shDerefList contains=shDeref,shDerefSimple,shDerefVar,shDerefSpecial,shDerefWordError,shDerefPSR,shDerefPPS @@ -150,6 +150,7 @@ syn cluster shLoopList contains=@shCaseList,@shErrorList,shCaseEsac,shConditiona syn cluster shPPSRightList contains=shComment,shDeref,shDerefSimple,shEscape,shPosnParm syn cluster shSubShList contains=@shCommandSubList,shCaseEsac,shColon,shCommandSub,shComment,shDo,shEcho,shExpr,shFor,shIf,shHereString,shRedir,shSetList,shSource,shStatement,shVariable,shCtrlSeq,shOperator syn cluster shTestList contains=shCharClass,shCommandSub,shCtrlSeq,shDeref,shDerefSimple,shDoubleQuote,shExDoubleQuote,shExpr,shExSingleQuote,shNumber,shOperator,shSingleQuote,shTest,shTestOpr +syn cluster shNoZSList contains=shSpecialNoZS " Echo: {{{1 " ==== @@ -220,13 +221,13 @@ syn region shSubSh transparent matchgroup=shSubShRegion start="[^(]\zs(" end=")" "======= syn region shExpr matchgroup=shRange start="\[" skip=+\\\\\|\\$\|\[+ end="\]" contains=@shTestList,shSpecial syn region shTest transparent matchgroup=shStatement start="\]\+\)\"" matchgroup=shHereDoc02 end="^\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc03 start="<<-\s*\z([^ \t|>]\+\)" matchgroup=shHereDoc03 end="^\s*\z1\s*$" contains=@shDblQuoteList -ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc04 start="<<-\s*'\z([^ \t|>]\+\)'" matchgroup=shHereDoc04 end="^\s*\z1\s*$" -ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc05 start="<<\s*'\z([^ \t|>]\+\)'" matchgroup=shHereDoc05 end="^\z1\s*$" +ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc04 start="<<-\s*'\z([^']\+\)'" matchgroup=shHereDoc04 end="^\s*\z1\s*$" +ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc05 start="<<\s*'\z([^']\+\)'" matchgroup=shHereDoc05 end="^\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc06 start="<<-\s*\"\z([^ \t|>]\+\)\"" matchgroup=shHereDoc06 end="^\s*\z1\s*$" ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc07 start="<<\s*\\\_$\_s*\z([^ \t|>]\+\)" matchgroup=shHereDoc07 end="^\z1\s*$" contains=@shDblQuoteList ShFoldHereDoc syn region shHereDoc matchgroup=shHereDoc08 start="<<\s*\\\_$\_s*'\z([^ \t|>]\+\)'" matchgroup=shHereDoc08 end="^\z1\s*$" @@ -428,14 +434,14 @@ endif if !exists("g:sh_no_error") syn match shDerefWordError "[^}$[~]" contained endif -syn match shDerefSimple "\$\%(\h\w*\|\d\)" +syn match shDerefSimple "\$\%(\h\w*\|\d\)" nextgroup=@shNoZSList syn region shDeref matchgroup=PreProc start="\${" end="}" contains=@shDerefList,shDerefVarArray -syn match shDerefSimple "\$[-#*@!?]" -syn match shDerefSimple "\$\$" -syn match shDerefSimple "\${\d}" +syn match shDerefSimple "\$[-#*@!?]" nextgroup=@shNoZSList +syn match shDerefSimple "\$\$" nextgroup=@shNoZSList +syn match shDerefSimple "\${\d}" nextgroup=@shNoZSList if exists("b:is_bash") || exists("b:is_kornshell") - syn region shDeref matchgroup=PreProc start="\${##\=" end="}" contains=@shDerefList - syn region shDeref matchgroup=PreProc start="\${\$\$" end="}" contains=@shDerefList + syn region shDeref matchgroup=PreProc start="\${##\=" end="}" contains=@shDerefList nextgroup=@shSpecialNoZS + syn region shDeref matchgroup=PreProc start="\${\$\$" end="}" contains=@shDerefList nextgroup=@shSpecialNoZS endif " ksh: ${!var[*]} array index list syntax: {{{1 @@ -685,6 +691,7 @@ if !exists("skip_sh_syntax_inits") hi def link shSetList Identifier hi def link shShellVariables PreProc hi def link shSpecial Special + hi def link shSpecialNoZS shSpecial hi def link shStatement Statement hi def link shString String hi def link shTodo Todo diff --git a/runtime/syntax/tex.vim b/runtime/syntax/tex.vim index ab19da329b..6b9e1a8949 100644 --- a/runtime/syntax/tex.vim +++ b/runtime/syntax/tex.vim @@ -1,8 +1,8 @@ " Vim syntax file " Language: TeX " Maintainer: Charles E. Campbell -" Last Change: Jan 31, 2017 -" Version: 103 +" Last Change: Oct 12, 2017 +" Version: 105 " URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_TEX " " Notes: {{{1 @@ -259,6 +259,7 @@ syn match texAccent +\\[=^.\~"`']+ syn match texAccent +\\['=t'.c^ud"vb~Hr]{\a}+ syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)$" + " \begin{}/\end{} section markers: {{{1 syn match texBeginEnd "\\begin\>\|\\end\>" nextgroup=texBeginEndName if s:tex_fast =~# 'm' @@ -511,7 +512,7 @@ if !exists("g:tex_no_math") if &ambw == "double" || exists("g:tex_usedblwidth") let s:texMathDelimList= s:texMathDelimList + [ \ ['\\langle' , '〈'] , - \ ['\\rangle' , '〉']] + \ ['\\rangle' , '〉'] , else let s:texMathDelimList= s:texMathDelimList + [ \ ['\\langle' , '<'] , @@ -588,12 +589,21 @@ else endif endif +" %begin-include ... %end-include acts like a texDocZone for \include'd files. Permits spell checking, for example, in such files. +if !s:tex_nospell + TexFold syn region texDocZone matchgroup=texSection start='^\s*%begin-include\>' end='^\s*%end-include\>' contains=@texFoldGroup,@texDocGroup,@Spell +else + TexFold syn region texDocZone matchgroup=texSection start='^\s*%begin-include\>' end='^\s*%end-include\>' contains=@texFoldGroup,@texDocGroup +endif + " Separate lines used for verb` and verb# so that the end conditions {{{1 " will appropriately terminate. " If g:tex_verbspell exists, then verbatim texZones will permit spellchecking there. if s:tex_fast =~# 'v' if exists("g:tex_verbspell") && g:tex_verbspell syn region texZone start="\\begin{[vV]erbatim}" end="\\end{[vV]erbatim}\|%stopzone\>" contains=@Spell + " listings package: + syn region texZone start="\\begin{lstlisting}" end="\\end{lstlisting}\|%stopzone\>" contains=@Spell if b:tex_stylish syn region texZone start="\\verb\*\=\z([^\ta-zA-Z@]\)" end="\z1\|%stopzone\>" contains=@Spell else @@ -1183,11 +1193,13 @@ if has("conceal") && &enc == 'utf-8' delfun s:SuperSub endif - " Accented characters: {{{2 + " Accented characters and Ligatures: {{{2 if s:tex_conceal =~# 'a' if b:tex_stylish syn match texAccent "\\[bcdvuH][^a-zA-Z@]"me=e-1 - syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)[^a-zA-Z@]"me=e-1 + syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)[^a-zA-Z@]"me=e-1 + syn match texLigature '--' + syn match texLigature '---' else fun! s:Accents(chr,...) let i= 1 @@ -1248,15 +1260,17 @@ if has("conceal") && &enc == 'utf-8' call s:Accents('\\i','ì','í','î','ï','ĩ','į',' ',' ',' ',' ',' ','ĭ',' ') " \` \' \^ \" \~ \. \= \c \H \k \r \u \v delfun s:Accents - syn match texAccent '\\aa\>' conceal cchar=å - syn match texAccent '\\AA\>' conceal cchar=Å - syn match texAccent '\\o\>' conceal cchar=ø - syn match texAccent '\\O\>' conceal cchar=Ø + syn match texAccent '\\aa\>' conceal cchar=å + syn match texAccent '\\AA\>' conceal cchar=Å + syn match texAccent '\\o\>' conceal cchar=ø + syn match texAccent '\\O\>' conceal cchar=Ø syn match texLigature '\\AE\>' conceal cchar=Æ syn match texLigature '\\ae\>' conceal cchar=æ syn match texLigature '\\oe\>' conceal cchar=œ syn match texLigature '\\OE\>' conceal cchar=Œ syn match texLigature '\\ss\>' conceal cchar=ß + syn match texLigature '--' conceal cchar=– + syn match texLigature '---' conceal cchar=— endif endif endif diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim index 9a7afeedfa..1551a314a3 100644 --- a/runtime/syntax/vim.vim +++ b/runtime/syntax/vim.vim @@ -140,7 +140,6 @@ endif syn match vimNumber "\<\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=" skipwhite nextgroup=vimGlobal,vimSubst,vimCommand syn match vimNumber "-\d\+\%(\.\d\+\%([eE][+-]\=\d\+\)\=\)\=" skipwhite nextgroup=vimGlobal,vimSubst,vimCommand syn match vimNumber "\<0[xX]\x\+" -syn match vimNumber "\<0[bB][01]\+" syn match vimNumber "\%(^\|[^a-zA-Z]\)\zs#\x\{6}" " All vimCommands are contained by vimIsCommands. {{{2 @@ -275,8 +274,8 @@ syn region vimPatSepZone oneline contained matchgroup=vimPatSepZ start="\\%\ syn region vimPatRegion contained transparent matchgroup=vimPatSepR start="\\[z%]\=(" end="\\)" contains=@vimSubstList oneline syn match vimNotPatSep contained "\\\\" syn cluster vimStringGroup contains=vimEscapeBrace,vimPatSep,vimNotPatSep,vimPatSepErr,vimPatSepZone,@Spell -syn region vimString oneline keepend start=+[^:a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ end=+"+ contains=@vimStringGroup -syn region vimString oneline keepend start=+[^:a-zA-Z>!\\@]'+lc=1 end=+'+ +syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]"+lc=1 skip=+\\\\\|\\"+ end=+"+ contains=@vimStringGroup +syn region vimString oneline keepend start=+[^a-zA-Z>!\\@]'+lc=1 end=+'+ syn region vimString oneline start=+=!+lc=1 skip=+\\\\\|\\!+ end=+!+ contains=@vimStringGroup syn region vimString oneline start="=+"lc=1 skip="\\\\\|\\+" end="+" contains=@vimStringGroup syn region vimString oneline start="\s/\s*\A"lc=1 skip="\\\\\|\\+" end="/" contains=@vimStringGroup @@ -538,7 +537,7 @@ syn match vimHiBang contained "!" skipwhite nextgroup=@vimHighlightCluster syn match vimHiGroup contained "\i\+" syn case ignore -syn keyword vimHiAttrib contained none bold inverse italic reverse standout underline undercurl nocombine +syn keyword vimHiAttrib contained none bold inverse italic reverse standout underline undercurl syn keyword vimFgBgAttrib contained none bg background fg foreground syn case match syn match vimHiAttribList contained "\i\+" contains=vimHiAttrib diff --git a/src/nvim/po/af.po b/src/nvim/po/af.po index eb6be42688..27bb2d3a80 100644 --- a/src/nvim/po/af.po +++ b/src/nvim/po/af.po @@ -26,7 +26,7 @@ msgid "" msgstr "" "Project-Id-Version: Vim 6.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-05-26 14:21+0200\n" +"POT-Creation-Date: 2017-11-07 20:04+0100\n" "PO-Revision-Date: Wed Oct 31 13:41 SAST 2001\n" "Last-Translator: Danie Roux \n" "Language-Team: Danie Roux \n" @@ -35,101 +35,74 @@ msgstr "" "Content-Type: text/plain; charset=ISO_8859-1\n" "Content-Transfer-Encoding: 8-bit\n" -#: ../api/private/helpers.c:201 -#, fuzzy -msgid "Unable to get option value" -msgstr "E258: Kan nie na klint stuur nie" +#~ msgid "[Location List]" +#~ msgstr "" -#: ../api/private/helpers.c:204 -msgid "internal error: unknown option type" -msgstr "" +#~ msgid "[Quickfix List]" +#~ msgstr "" -#: ../buffer.c:92 -msgid "[Location List]" -msgstr "" +#~ msgid "E855: Autocommands caused command to abort" +#~ msgstr "" -#: ../buffer.c:93 -msgid "[Quickfix List]" -msgstr "" - -#: ../buffer.c:94 -msgid "E855: Autocommands caused command to abort" -msgstr "" - -#: ../buffer.c:135 msgid "E82: Cannot allocate any buffer, exiting..." msgstr "E82: Kan nie buffer toeken nie, program sluit..." -#: ../buffer.c:138 msgid "E83: Cannot allocate buffer, using other one..." msgstr "E83: Kan nie buffer toeken nie, gaan ander een gebruik..." -#: ../buffer.c:763 +#~ msgid "E937: Attempt to delete a buffer that is in use" +#~ msgstr "" + msgid "E515: No buffers were unloaded" msgstr "E515: Geen buffers is uitgelaai nie" -#: ../buffer.c:765 msgid "E516: No buffers were deleted" msgstr "E516: Geen buffers is geskrap nie" -#: ../buffer.c:767 msgid "E517: No buffers were wiped out" msgstr "E517: Geen buffers is geskrap nie" -#: ../buffer.c:772 msgid "1 buffer unloaded" msgstr "1 buffer uitgelaai" -#: ../buffer.c:774 #, c-format msgid "%d buffers unloaded" msgstr "%d buffers uitgelaai" -#: ../buffer.c:777 msgid "1 buffer deleted" msgstr "1 buffer geskrap" -#: ../buffer.c:779 #, c-format msgid "%d buffers deleted" msgstr "%d buffers geskrap" -#: ../buffer.c:782 msgid "1 buffer wiped out" msgstr "1 buffer geskrap" -#: ../buffer.c:784 #, c-format msgid "%d buffers wiped out" msgstr "%d buffers geskrap" -#: ../buffer.c:806 msgid "E90: Cannot unload last buffer" msgstr "E90: Kan nie laaste buffer uitlaai nie" -#: ../buffer.c:874 msgid "E84: No modified buffer found" msgstr "E84: Geen veranderde buffer gevind nie" #. back where we started, didn't find anything. -#: ../buffer.c:903 msgid "E85: There is no listed buffer" msgstr "E85: Daar is geen gelyste buffer nie" -#: ../buffer.c:913 -#, c-format -msgid "E86: Buffer % does not exist" -msgstr "E86: Buffer % bestaan nie" - -#: ../buffer.c:915 msgid "E87: Cannot go beyond last buffer" msgstr "E87: Kan nie verby laaste buffer gaan nie" -#: ../buffer.c:917 msgid "E88: Cannot go before first buffer" msgstr "E88: Kan nie vr eerste buffer gaan nie" -#: ../buffer.c:945 +#, fuzzy, c-format +#~ msgid "E89: %s will be killed(add ! to override)" +#~ msgstr "E189: \"%s\" bestaan (gebruik ! om te dwing)" + #, c-format msgid "" "E89: No write since last change for buffer % (add ! to override)" @@ -138,117 +111,85 @@ msgstr "" "dwing)" #. wrap around (may cause duplicates) -#: ../buffer.c:1423 msgid "W14: Warning: List of file names overflow" msgstr "W14: Waarskuwing: Lerlys loop oor" -#: ../buffer.c:1555 ../quickfix.c:3361 #, c-format msgid "E92: Buffer % not found" msgstr "E92: buffer % kon nie gevind word nie" -#: ../buffer.c:1798 #, c-format msgid "E93: More than one match for %s" msgstr "E93: Meer as een treffer vir %s" -#: ../buffer.c:1800 #, c-format msgid "E94: No matching buffer for %s" msgstr "E94: Geen buffer wat by %s pas nie" -#: ../buffer.c:2161 #, c-format msgid "line %" msgstr "rel %" -#: ../buffer.c:2233 msgid "E95: Buffer with this name already exists" msgstr "E95: Buffer met hierdie naam bestaan alreeds" -#: ../buffer.c:2498 msgid " [Modified]" msgstr " [Gewysig]" -#: ../buffer.c:2501 msgid "[Not edited]" msgstr "[Ongewysig]" -#: ../buffer.c:2504 msgid "[New file]" msgstr "[Nuwe ler]" -#: ../buffer.c:2505 msgid "[Read errors]" msgstr "[Leesfoute]" -#: ../buffer.c:2506 ../buffer.c:3217 ../fileio.c:1807 ../screen.c:4895 msgid "[RO]" msgstr "[RO]" -#: ../buffer.c:2507 ../fileio.c:1807 msgid "[readonly]" msgstr "[lees alleen]" -#: ../buffer.c:2524 #, c-format msgid "1 line --%d%%--" msgstr "1 rel --%d%%--" -#: ../buffer.c:2526 #, c-format msgid "% lines --%d%%--" msgstr "% rels --%d%%--" -#: ../buffer.c:2530 #, c-format msgid "line % of % --%d%%-- col " msgstr "rel % van % --%d%%-- kolom " -#: ../buffer.c:2632 ../buffer.c:4292 ../memline.c:1554 #, fuzzy -msgid "[No Name]" -msgstr "[Geen ler]" +#~ msgid "[No Name]" +#~ msgstr "[Geen ler]" #. must be a help buffer -#: ../buffer.c:2667 msgid "help" msgstr "help" -#: ../buffer.c:3225 ../screen.c:4883 #, fuzzy -msgid "[Help]" -msgstr "[help]" +#~ msgid "[Help]" +#~ msgstr "[help]" -#: ../buffer.c:3254 ../screen.c:4887 msgid "[Preview]" msgstr "[Voorskou]" -#: ../buffer.c:3528 msgid "All" msgstr "Alles" -#: ../buffer.c:3528 msgid "Bot" msgstr "Ond" -#: ../buffer.c:3531 msgid "Top" msgstr "Bo" -#: ../buffer.c:4244 -msgid "" -"\n" -"# Buffer list:\n" -msgstr "" -"\n" -"# Buffer lys:\n" +#~ msgid "[Scratch]" +#~ msgstr "" -#: ../buffer.c:4289 -msgid "[Scratch]" -msgstr "" - -#: ../buffer.c:4529 msgid "" "\n" "--- Signs ---" @@ -256,208 +197,161 @@ msgstr "" "\n" "--- Tekens ---" -#: ../buffer.c:4538 #, c-format msgid "Signs for %s:" msgstr "Tekens vir %s:" -#: ../buffer.c:4543 #, c-format msgid " line=% id=%d name=%s" msgstr " rel=% id=%d naam=%s" -#: ../cursor_shape.c:68 msgid "E545: Missing colon" msgstr "E545: Ontbrekende dubbelpunt" -#: ../cursor_shape.c:70 ../cursor_shape.c:94 msgid "E546: Illegal mode" msgstr "E546: Ongeldige modus" -#: ../cursor_shape.c:134 msgid "E548: digit expected" msgstr "E548: syfer verwag" -#: ../cursor_shape.c:138 msgid "E549: Illegal percentage" msgstr "E549: Ongeldige persentasie" -#: ../diff.c:146 -#, c-format -msgid "E96: Can not diff more than % buffers" -msgstr "E96: Kan nie meer as % buffers 'diff' nie" +#, fuzzy, c-format +#~ msgid "E96: Cannot diff more than % buffers" +#~ msgstr "E96: Kan nie meer as % buffers 'diff' nie" -#: ../diff.c:753 #, fuzzy -msgid "E810: Cannot read or write temp files" -msgstr "E557: Kan nie 'termcap'-ler oopmaak nie" +#~ msgid "E810: Cannot read or write temp files" +#~ msgstr "E557: Kan nie 'termcap'-ler oopmaak nie" -#: ../diff.c:755 msgid "E97: Cannot create diffs" msgstr "E97: Kan nie 'diffs' skep nie " -#: ../diff.c:966 #, fuzzy -msgid "E816: Cannot read patch output" -msgstr "E98: Kan nie 'diff' afvoer lees nie" +#~ msgid "E816: Cannot read patch output" +#~ msgstr "E98: Kan nie 'diff' afvoer lees nie" -#: ../diff.c:1220 msgid "E98: Cannot read diff output" msgstr "E98: Kan nie 'diff' afvoer lees nie" -#: ../diff.c:2081 msgid "E99: Current buffer is not in diff mode" msgstr "E99: Huidige buffer is nie in 'diff' modus nie" -#: ../diff.c:2100 #, fuzzy -msgid "E793: No other buffer in diff mode is modifiable" -msgstr "E100: Geen ander buffer in 'diff' modus nie" +#~ msgid "E793: No other buffer in diff mode is modifiable" +#~ msgstr "E100: Geen ander buffer in 'diff' modus nie" -#: ../diff.c:2102 msgid "E100: No other buffer in diff mode" msgstr "E100: Geen ander buffer in 'diff' modus nie" -#: ../diff.c:2112 msgid "E101: More than two buffers in diff mode, don't know which one to use" msgstr "" "E101: Meer as twee buffers in 'diff' modus, weet nie watter een om te " "gebruik nie" -#: ../diff.c:2141 #, c-format msgid "E102: Can't find buffer \"%s\"" msgstr "E102: Kan buffer %s nie vind nie" -#: ../diff.c:2152 #, c-format msgid "E103: Buffer \"%s\" is not in diff mode" msgstr "E103: Buffer \"%s\" is nie in 'diff' modus nie" -#: ../diff.c:2193 -msgid "E787: Buffer changed unexpectedly" -msgstr "" +#~ msgid "E787: Buffer changed unexpectedly" +#~ msgstr "" -#: ../digraph.c:1598 msgid "E104: Escape not allowed in digraph" msgstr "E104: 'Escape' nie toegelaat in digraaf nie" -#: ../digraph.c:1760 msgid "E544: Keymap file not found" msgstr "E544: Sleutelbindingler nie gevind nie" -#: ../digraph.c:1785 msgid "E105: Using :loadkeymap not in a sourced file" msgstr "E105: :loadkeymap word buite 'n uitvoerler gebruik" -#: ../digraph.c:1821 -msgid "E791: Empty keymap entry" -msgstr "" +#~ msgid "E791: Empty keymap entry" +#~ msgstr "" -#: ../edit.c:82 msgid " Keyword completion (^N^P)" msgstr " Sleutelwoord voltooiing (^N^P)" #. ctrl_x_mode == 0, ^P/^N compl. -#: ../edit.c:83 #, fuzzy -msgid " ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)" -msgstr " ^X modus (^E^Y^L^]^F^I^K^D^V^N^P)" +#~ msgid " ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)" +#~ msgstr " ^X modus (^E^Y^L^]^F^I^K^D^V^N^P)" -#: ../edit.c:85 msgid " Whole line completion (^L^N^P)" msgstr " Hele-rel voltooiing (^L^N^P)" -#: ../edit.c:86 msgid " File name completion (^F^N^P)" msgstr " Lernaam voltooiing (^F^N^P)" -#: ../edit.c:87 msgid " Tag completion (^]^N^P)" msgstr " Etiketvoltooiing (^]^N^P)" -#: ../edit.c:88 msgid " Path pattern completion (^N^P)" msgstr " Gidspatroon voltooiing (^N^P)" -#: ../edit.c:89 msgid " Definition completion (^D^N^P)" msgstr " Definisievoltooiing (^D^N^P)" -#: ../edit.c:91 msgid " Dictionary completion (^K^N^P)" msgstr " Woordeboekvoltooiing (^K^N^P)" -#: ../edit.c:92 msgid " Thesaurus completion (^T^N^P)" msgstr " Tesourusvoltooiing (^T^N^P)" -#: ../edit.c:93 msgid " Command-line completion (^V^N^P)" msgstr " Bevelrelvoltooiing (^V^N^P)" -#: ../edit.c:94 #, fuzzy -msgid " User defined completion (^U^N^P)" -msgstr " Hele-rel voltooiing (^L^N^P)" +#~ msgid " User defined completion (^U^N^P)" +#~ msgstr " Hele-rel voltooiing (^L^N^P)" -#: ../edit.c:95 #, fuzzy -msgid " Omni completion (^O^N^P)" -msgstr " Etiketvoltooiing (^]^N^P)" +#~ msgid " Omni completion (^O^N^P)" +#~ msgstr " Etiketvoltooiing (^]^N^P)" -#: ../edit.c:96 #, fuzzy -msgid " Spelling suggestion (s^N^P)" -msgstr " Hele-rel voltooiing (^L^N^P)" +#~ msgid " Spelling suggestion (s^N^P)" +#~ msgstr " Hele-rel voltooiing (^L^N^P)" -#: ../edit.c:97 msgid " Keyword Local completion (^N^P)" msgstr " Sleutelwoord Lokale voltooiing (^N^P)" -#: ../edit.c:100 msgid "Hit end of paragraph" msgstr "Het einde van paragraaf getref" -#: ../edit.c:101 -msgid "E839: Completion function changed window" -msgstr "" +#~ msgid "E839: Completion function changed window" +#~ msgstr "" -#: ../edit.c:102 -msgid "E840: Completion function deleted text" -msgstr "" +#~ msgid "E840: Completion function deleted text" +#~ msgstr "" -#: ../edit.c:1847 msgid "'dictionary' option is empty" msgstr "'dictionary' opsie is leeg" -#: ../edit.c:1848 msgid "'thesaurus' option is empty" msgstr "'thesaurus' opsie is leeg" -#: ../edit.c:2655 #, c-format msgid "Scanning dictionary: %s" msgstr "Deursoek woordeboek: %s" -#: ../edit.c:3079 msgid " (insert) Scroll (^E/^Y)" msgstr " (invoeg) Rol (^E/^Y)" -#: ../edit.c:3081 msgid " (replace) Scroll (^E/^Y)" msgstr " (vervang) Rol (^E/^Y)" -#: ../edit.c:3587 #, c-format msgid "Scanning: %s" msgstr "Soek vir: %s" -#: ../edit.c:3614 msgid "Scanning tags." msgstr "Deursoek etikette." -#: ../edit.c:4519 msgid " Adding" msgstr " Word bygevoeg" @@ -465,605 +359,550 @@ msgstr " Word bygevoeg" #. * be called before line = ml_get(), or when this address is no #. * longer needed. -- Acevedo. #. -#: ../edit.c:4562 msgid "-- Searching..." msgstr "-- Soekend..." -#: ../edit.c:4618 msgid "Back at original" msgstr "Terug by oorspronklike" -#: ../edit.c:4621 msgid "Word from other line" msgstr "Woord van ander rel" -#: ../edit.c:4624 msgid "The only match" msgstr "Die enigste treffer" -#: ../edit.c:4680 #, c-format msgid "match %d of %d" msgstr "treffer %d van %d" -#: ../edit.c:4684 #, c-format msgid "match %d" msgstr "treffer %d" -#: ../eval.c:137 #, fuzzy -msgid "E18: Unexpected characters in :let" -msgstr "E18: Onverwagte karakters voor '='" +#~ msgid "E18: Unexpected characters in :let" +#~ msgstr "E18: Onverwagte karakters voor '='" -#: ../eval.c:138 -#, fuzzy, c-format -msgid "E684: list index out of range: %" -msgstr "E322: relnommer buite perke: % verby die einde" - -#: ../eval.c:139 -#, c-format -msgid "E121: Undefined variable: %s" -msgstr "E121: Ongedefinieerde veranderlike: %s" - -#: ../eval.c:140 msgid "E111: Missing ']'" msgstr "E111: Ontbrekende ']'" -#: ../eval.c:141 #, fuzzy, c-format -msgid "E686: Argument of %s must be a List" -msgstr "E487: Parameter moet positief wees" +#~ msgid "E686: Argument of %s must be a List" +#~ msgstr "E487: Parameter moet positief wees" -#: ../eval.c:143 #, fuzzy, c-format -msgid "E712: Argument of %s must be a List or Dictionary" -msgstr "E487: Parameter moet positief wees" +#~ msgid "E712: Argument of %s must be a List or Dictionary" +#~ msgstr "E487: Parameter moet positief wees" -#: ../eval.c:144 #, fuzzy -msgid "E713: Cannot use empty key for Dictionary" -msgstr "E214: Kan nie tydelike ler vind vir skryf nie" +#~ msgid "E714: List required" +#~ msgstr "E471: Parameter benodig" -#: ../eval.c:145 #, fuzzy -msgid "E714: List required" -msgstr "E471: Parameter benodig" +#~ msgid "E715: Dictionary required" +#~ msgstr "E129: Funksienaam vereis" -#: ../eval.c:146 #, fuzzy -msgid "E715: Dictionary required" -msgstr "E129: Funksienaam vereis" +#~ msgid "E928: String required" +#~ msgstr "E397: Lernaam benodig" -#: ../eval.c:147 #, c-format msgid "E118: Too many arguments for function: %s" msgstr "E118: Te veel parameters vir funksie: %s" -#: ../eval.c:148 #, c-format -msgid "E716: Key not present in Dictionary: %s" -msgstr "" +#~ msgid "E716: Key not present in Dictionary: %s" +#~ msgstr "" -#: ../eval.c:150 #, c-format msgid "E122: Function %s already exists, add ! to replace it" msgstr "E122: Funksie %s bestaan alreeds, gebruik ! om te vervang" -#: ../eval.c:151 #, fuzzy -msgid "E717: Dictionary entry already exists" -msgstr "E95: Buffer met hierdie naam bestaan alreeds" +#~ msgid "E717: Dictionary entry already exists" +#~ msgstr "E95: Buffer met hierdie naam bestaan alreeds" -#: ../eval.c:152 #, fuzzy -msgid "E718: Funcref required" -msgstr "E129: Funksienaam vereis" +#~ msgid "E718: Funcref required" +#~ msgstr "E129: Funksienaam vereis" -#: ../eval.c:153 #, fuzzy -msgid "E719: Cannot use [:] with a Dictionary" -msgstr "E360: Kan nie dop met -f opsie uitvoer nie" +#~ msgid "E719: Cannot use [:] with a Dictionary" +#~ msgstr "E360: Kan nie dop met -f opsie uitvoer nie" -#: ../eval.c:154 -#, c-format -msgid "E734: Wrong variable type for %s=" -msgstr "" - -#: ../eval.c:155 #, fuzzy, c-format -msgid "E130: Unknown function: %s" -msgstr "E117: Onbekende funksie: %s" +#~ msgid "E130: Unknown function: %s" +#~ msgstr "E117: Onbekende funksie: %s" -#: ../eval.c:156 #, c-format msgid "E461: Illegal variable name: %s" msgstr "E461: Ongeldige veranderlikenaam: %s" -#: ../eval.c:157 -msgid "E806: using Float as a String" -msgstr "" - -#: ../eval.c:1830 -msgid "E687: Less targets than List items" -msgstr "" - -#: ../eval.c:1834 -msgid "E688: More targets than List items" -msgstr "" - -#: ../eval.c:1906 -msgid "Double ; in list of variables" -msgstr "" - -#: ../eval.c:2078 #, fuzzy, c-format -msgid "E738: Can't list variables for %s" -msgstr "E138: Kan nie viminfo ler %s stoor nie!" +#~ msgid "E46: Cannot change read-only variable \"%.*s\"" +#~ msgstr "E46: Kan nie lees-alleen veranderlike stel nie \"%s\"" -#: ../eval.c:2391 -msgid "E689: Can only index a List or Dictionary" -msgstr "" +#. TODO(ZyX-I): move to eval/executor +#, c-format +#~ msgid "E734: Wrong variable type for %s=" +#~ msgstr "" -#: ../eval.c:2396 -msgid "E708: [:] must come last" -msgstr "" +#~ msgid "E687: Less targets than List items" +#~ msgstr "" -#: ../eval.c:2439 -msgid "E709: [:] requires a List value" -msgstr "" +#~ msgid "E688: More targets than List items" +#~ msgstr "" -#: ../eval.c:2674 -msgid "E710: List value has more items than target" -msgstr "" +#~ msgid "Double ; in list of variables" +#~ msgstr "" -#: ../eval.c:2678 -msgid "E711: List value has not enough items" -msgstr "" +#, fuzzy, c-format +#~ msgid "E738: Can't list variables for %s" +#~ msgstr "E138: Kan nie viminfo ler %s stoor nie!" + +#, fuzzy, c-format +#~ msgid "E121: Undefined variable: %.*s" +#~ msgstr "E121: Ongedefinieerde veranderlike: %s" + +#~ msgid "E689: Can only index a List or Dictionary" +#~ msgstr "" + +#~ msgid "E708: [:] must come last" +#~ msgstr "" -#: ../eval.c:2867 #, fuzzy -msgid "E690: Missing \"in\" after :for" -msgstr "E69: Ontbrekende ] na %s%%[" +#~ msgid "E713: Cannot use empty key after ." +#~ msgstr "E214: Kan nie tydelike ler vind vir skryf nie" + +#~ msgid "E709: [:] requires a List value" +#~ msgstr "" + +#~ msgid "E710: List value has more items than target" +#~ msgstr "" + +#~ msgid "E711: List value has not enough items" +#~ msgstr "" + +#, fuzzy +#~ msgid "E690: Missing \"in\" after :for" +#~ msgstr "E69: Ontbrekende ] na %s%%[" -#: ../eval.c:3063 #, c-format msgid "E107: Missing parentheses: %s" msgstr "E107: Ontbrekende hakies: %s" -#: ../eval.c:3263 #, c-format msgid "E108: No such variable: \"%s\"" msgstr "E108: Geen veranderlike: \"%s\"" -#: ../eval.c:3333 -msgid "E743: variable nested too deep for (un)lock" -msgstr "" +#. For historical reasons this error is not given for Lists and +#. Dictionaries. E.g. b: dictionary may be locked/unlocked. +#, fuzzy, c-format +#~ msgid "E940: Cannot lock or unlock variable %s" +#~ msgstr "E46: Kan nie lees-alleen veranderlike stel nie \"%s\"" -#: ../eval.c:3630 msgid "E109: Missing ':' after '?'" msgstr "E109: Ontbrekende ':' na '?'" -#: ../eval.c:3893 -msgid "E691: Can only compare List with List" -msgstr "" +#~ msgid "E691: Can only compare List with List" +#~ msgstr "" -#: ../eval.c:3895 #, fuzzy -msgid "E692: Invalid operation for Lists" -msgstr "E449: Ongeldige uitdrukking ontvang" +#~ msgid "E692: Invalid operation for List" +#~ msgstr "E449: Ongeldige uitdrukking ontvang" -#: ../eval.c:3915 -msgid "E735: Can only compare Dictionary with Dictionary" -msgstr "" +#~ msgid "E735: Can only compare Dictionary with Dictionary" +#~ msgstr "" -#: ../eval.c:3917 #, fuzzy -msgid "E736: Invalid operation for Dictionary" -msgstr "E116: Ongeldige parameters vir funksie %s" +#~ msgid "E736: Invalid operation for Dictionary" +#~ msgstr "E116: Ongeldige parameters vir funksie %s" -#: ../eval.c:3932 -msgid "E693: Can only compare Funcref with Funcref" -msgstr "" - -#: ../eval.c:3934 #, fuzzy -msgid "E694: Invalid operation for Funcrefs" -msgstr "E116: Ongeldige parameters vir funksie %s" +#~ msgid "E694: Invalid operation for Funcrefs" +#~ msgstr "E116: Ongeldige parameters vir funksie %s" -#: ../eval.c:4277 #, fuzzy -msgid "E804: Cannot use '%' with Float" -msgstr "E360: Kan nie dop met -f opsie uitvoer nie" +#~ msgid "E804: Cannot use '%' with Float" +#~ msgstr "E360: Kan nie dop met -f opsie uitvoer nie" -#: ../eval.c:4478 msgid "E110: Missing ')'" msgstr "E110: Ontbrekende ')'" -#: ../eval.c:4609 #, fuzzy -msgid "E695: Cannot index a Funcref" -msgstr "E90: Kan nie laaste buffer uitlaai nie" +#~ msgid "E695: Cannot index a Funcref" +#~ msgstr "E90: Kan nie laaste buffer uitlaai nie" + +#, fuzzy +#~ msgid "E909: Cannot index a special variable" +#~ msgstr "E90: Kan nie laaste buffer uitlaai nie" -#: ../eval.c:4839 #, c-format msgid "E112: Option name missing: %s" msgstr "E112: Opsienaam ontbreek: %s" -#: ../eval.c:4855 #, c-format msgid "E113: Unknown option: %s" msgstr "E113: Onbekende opsie: %s" -#: ../eval.c:4904 #, c-format msgid "E114: Missing quote: %s" msgstr "E114: Ontbrekende aanhalingsteken: %s" -#: ../eval.c:5020 #, c-format msgid "E115: Missing quote: %s" msgstr "E115: Ontbrekende aanhalingsteken: %s" -#: ../eval.c:5084 #, fuzzy, c-format -msgid "E696: Missing comma in List: %s" -msgstr "E405: Ontbrekende gelykaanteken: %s" +#~ msgid "E696: Missing comma in List: %s" +#~ msgstr "E405: Ontbrekende gelykaanteken: %s" -#: ../eval.c:5091 #, fuzzy, c-format -msgid "E697: Missing end of List ']': %s" -msgstr "E398: Ontbrekende '=': %s" +#~ msgid "E697: Missing end of List ']': %s" +#~ msgstr "E398: Ontbrekende '=': %s" + +#~ msgid "Not enough memory to set references, garbage collection aborted!" +#~ msgstr "" -#: ../eval.c:6475 #, fuzzy, c-format -msgid "E720: Missing colon in Dictionary: %s" -msgstr "E242: Ontbrekende kleur: %s" +#~ msgid "E720: Missing colon in Dictionary: %s" +#~ msgstr "E242: Ontbrekende kleur: %s" -#: ../eval.c:6499 #, c-format -msgid "E721: Duplicate key in Dictionary: \"%s\"" -msgstr "" +#~ msgid "E721: Duplicate key in Dictionary: \"%s\"" +#~ msgstr "" -#: ../eval.c:6517 #, fuzzy, c-format -msgid "E722: Missing comma in Dictionary: %s" -msgstr "E242: Ontbrekende kleur: %s" +#~ msgid "E722: Missing comma in Dictionary: %s" +#~ msgstr "E242: Ontbrekende kleur: %s" -#: ../eval.c:6524 #, fuzzy, c-format -msgid "E723: Missing end of Dictionary '}': %s" -msgstr "E126: Ontbrekende ':endfunction'" +#~ msgid "E723: Missing end of Dictionary '}': %s" +#~ msgstr "E126: Ontbrekende ':endfunction'" -#: ../eval.c:6555 -#, fuzzy -msgid "E724: variable nested too deep for displaying" -msgstr "E22: Skripte te diep ge-nes" - -#: ../eval.c:7188 -#, fuzzy, c-format -msgid "E740: Too many arguments for function %s" -msgstr "E118: Te veel parameters vir funksie: %s" - -#: ../eval.c:7190 -#, c-format -msgid "E116: Invalid arguments for function %s" -msgstr "E116: Ongeldige parameters vir funksie %s" - -#: ../eval.c:7377 -#, c-format -msgid "E117: Unknown function: %s" -msgstr "E117: Onbekende funksie: %s" - -#: ../eval.c:7383 -#, c-format -msgid "E119: Not enough arguments for function: %s" -msgstr "E119: Te min parameters vir funksie: %s" - -#: ../eval.c:7387 -#, c-format -msgid "E120: Using not in a script context: %s" -msgstr "E120: word buite skripkonteks gebruik: %s" - -#: ../eval.c:7391 -#, c-format -msgid "E725: Calling dict function without Dictionary: %s" -msgstr "" - -#: ../eval.c:7453 -#, fuzzy -msgid "E808: Number or Float required" -msgstr "E521: Nommer vereis na =" - -#: ../eval.c:7503 -#, fuzzy -msgid "add() argument" -msgstr "Ongeldige parameter vir" - -#: ../eval.c:7907 -#, fuzzy -msgid "E699: Too many arguments" -msgstr "Te veel redigeer-parameters" - -#: ../eval.c:8073 -#, fuzzy -msgid "E785: complete() can only be used in Insert mode" -msgstr "E328: Kieslys bestaan slegs in 'n ander modus" - -#: ../eval.c:8156 -msgid "&Ok" -msgstr "&Ok" - -#: ../eval.c:8676 -#, fuzzy, c-format -msgid "E737: Key already exists: %s" -msgstr "E227: binding bestaan alreeds vir %s" - -#: ../eval.c:8692 -msgid "extend() argument" -msgstr "" - -#: ../eval.c:8915 -#, fuzzy -msgid "map() argument" -msgstr " vim [parameters] " - -#: ../eval.c:8916 -msgid "filter() argument" -msgstr "" - -#: ../eval.c:9229 -#, c-format -msgid "+-%s%3ld lines: " -msgstr "+-%s%3ld rels: " - -#: ../eval.c:9291 -#, fuzzy, c-format -msgid "E700: Unknown function: %s" -msgstr "E117: Onbekende funksie: %s" - -#: ../eval.c:10729 -msgid "called inputrestore() more often than inputsave()" -msgstr "inputrestore() is meer gereeld as inputsave() geroep" - -#: ../eval.c:10771 -#, fuzzy -msgid "insert() argument" -msgstr "Te veel redigeer-parameters" - -#: ../eval.c:10841 -#, fuzzy -msgid "E786: Range not allowed" -msgstr "E481: Geen omvang toegelaat nie" - -#: ../eval.c:11140 -#, fuzzy -msgid "E701: Invalid type for len()" -msgstr "E596: Ongeldige font(e)" - -#: ../eval.c:11980 -msgid "E726: Stride is zero" -msgstr "" - -#: ../eval.c:11982 -msgid "E727: Start past end" -msgstr "" - -#: ../eval.c:12024 ../eval.c:15297 -msgid "" -msgstr "" - -#: ../eval.c:12282 -msgid "remove() argument" -msgstr "" - -#: ../eval.c:12466 -msgid "E655: Too many symbolic links (cycle?)" -msgstr "E655: Te veel simboliese skakels (siklus?)" - -#: ../eval.c:12593 -msgid "reverse() argument" -msgstr "" - -#: ../eval.c:13721 -msgid "sort() argument" -msgstr "" - -#: ../eval.c:13721 -#, fuzzy -msgid "uniq() argument" -msgstr "Ongeldige parameter vir" - -#: ../eval.c:13776 -#, fuzzy -msgid "E702: Sort compare function failed" -msgstr "E237: Drukker-seleksie het gefaal" - -#: ../eval.c:13806 -msgid "E882: Uniq compare function failed" -msgstr "" - -#: ../eval.c:14085 -msgid "(Invalid)" -msgstr "(Ongeldig)" - -#: ../eval.c:14590 -#, fuzzy -msgid "E677: Error writing temp file" -msgstr "E208: Kan nie skryf na \"%s\"" - -#: ../eval.c:16159 -msgid "E805: Using a Float as a Number" -msgstr "" - -#: ../eval.c:16162 -msgid "E703: Using a Funcref as a Number" -msgstr "" - -#: ../eval.c:16170 -msgid "E745: Using a List as a Number" -msgstr "" - -#: ../eval.c:16173 -msgid "E728: Using a Dictionary as a Number" -msgstr "" - -#: ../eval.c:16259 -msgid "E729: using Funcref as a String" -msgstr "" - -#: ../eval.c:16262 -#, fuzzy -msgid "E730: using List as a String" -msgstr "E374: Ontbrekende ] in formaatstring" - -#: ../eval.c:16265 -msgid "E731: using Dictionary as a String" -msgstr "" - -#: ../eval.c:16619 -#, fuzzy, c-format -msgid "E706: Variable type mismatch for: %s" -msgstr "E93: Meer as een treffer vir %s" - -#: ../eval.c:16705 -#, fuzzy, c-format -msgid "E795: Cannot delete variable %s" -msgstr "E46: Kan nie lees-alleen veranderlike stel nie \"%s\"" - -#: ../eval.c:16724 -#, fuzzy, c-format -msgid "E704: Funcref variable name must start with a capital: %s" -msgstr "E128: Funksienaam moet met 'n hoofletter begin: %s" - -#: ../eval.c:16732 -#, c-format -msgid "E705: Variable name conflicts with existing function: %s" -msgstr "" - -#: ../eval.c:16763 -#, c-format -msgid "E741: Value is locked: %s" -msgstr "" - -#: ../eval.c:16764 ../eval.c:16769 ../message.c:1839 -msgid "Unknown" -msgstr "Onbekend" - -#: ../eval.c:16768 -#, fuzzy, c-format -msgid "E742: Cannot change value of %s" -msgstr "E284: Kan nie IC waardes stel nie" - -#: ../eval.c:16838 -msgid "E698: variable nested too deep for making a copy" -msgstr "" - -#: ../eval.c:17249 -#, c-format -msgid "E123: Undefined function: %s" -msgstr "E123: Ongedefinieerde funksie: %s" - -#: ../eval.c:17260 -#, c-format -msgid "E124: Missing '(': %s" -msgstr "E124: Ontbrekende '(': %s" - -#: ../eval.c:17293 -#, fuzzy -msgid "E862: Cannot use g: here" -msgstr "E284: Kan nie IC waardes stel nie" - -#: ../eval.c:17312 #, c-format msgid "E125: Illegal argument: %s" msgstr "E125: Ongeldige parameter: %s" -#: ../eval.c:17323 #, fuzzy, c-format -msgid "E853: Duplicate argument name: %s" -msgstr "E125: Ongeldige parameter: %s" +#~ msgid "E853: Duplicate argument name: %s" +#~ msgstr "E125: Ongeldige parameter: %s" + +#, fuzzy, c-format +#~ msgid "E740: Too many arguments for function %s" +#~ msgstr "E118: Te veel parameters vir funksie: %s" + +#, c-format +msgid "E116: Invalid arguments for function %s" +msgstr "E116: Ongeldige parameters vir funksie %s" + +#, c-format +msgid "E117: Unknown function: %s" +msgstr "E117: Onbekende funksie: %s" + +#, fuzzy, c-format +#~ msgid "E933: Function was deleted: %s" +#~ msgstr "E129: Funksienaam vereis" + +#, c-format +msgid "E119: Not enough arguments for function: %s" +msgstr "E119: Te min parameters vir funksie: %s" + +#, c-format +msgid "E120: Using not in a script context: %s" +msgstr "E120: word buite skripkonteks gebruik: %s" + +#, c-format +#~ msgid "E725: Calling dict function without Dictionary: %s" +#~ msgstr "" + +#, c-format +#~ msgid "Error converting the call result: %s" +#~ msgstr "" + +#, fuzzy +#~ msgid "E699: Too many arguments" +#~ msgstr "Te veel redigeer-parameters" + +#, fuzzy +#~ msgid "E785: complete() can only be used in Insert mode" +#~ msgstr "E328: Kieslys bestaan slegs in 'n ander modus" + +msgid "&Ok" +msgstr "&Ok" + +#, fuzzy +#~ msgid "dictwatcheradd() argument" +#~ msgstr "Ongeldige parameter vir" + +#~ msgid "extend() argument" +#~ msgstr "" + +#, fuzzy +#~ msgid "map() argument" +#~ msgstr " vim [parameters] " + +#~ msgid "filter() argument" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "+-%s%3ld line: " +#~ msgid_plural "+-%s%3ld lines: " +#~ msgstr[0] "+-%s%3ld rels: " +#~ msgstr[1] "+-%s%3ld rels: " + +#, fuzzy, c-format +#~ msgid "E700: Unknown function: %s" +#~ msgstr "E117: Onbekende funksie: %s" + +#~ msgid "E922: expected a dict" +#~ msgstr "" + +#, fuzzy +#~ msgid "E923: Second argument of function() must be a list or a dict" +#~ msgstr "E487: Parameter moet positief wees" + +#, fuzzy +#~ msgid "E5000: Cannot find tab number." +#~ msgstr "E90: Kan nie laaste buffer uitlaai nie" + +#~ msgid "E5001: Higher scope cannot be -1 if lower scope is >= 0." +#~ msgstr "" + +#, fuzzy +#~ msgid "E5002: Cannot find window number." +#~ msgstr "E671: Kan nie venster titel vind nie \"%s\"" + +#~ msgid "E5050: {opts} must be the only argument" +#~ msgstr "" + +msgid "called inputrestore() more often than inputsave()" +msgstr "inputrestore() is meer gereeld as inputsave() geroep" + +#, fuzzy +#~ msgid "insert() argument" +#~ msgstr "Te veel redigeer-parameters" + +#, fuzzy +#~ msgid "E786: Range not allowed" +#~ msgstr "E481: Geen omvang toegelaat nie" + +#~ msgid "Invalid stream on rpc job, use jobclose(id, 'rpc')" +#~ msgstr "" + +#~ msgid "Invalid job stream: Not an rpc job" +#~ msgstr "" + +#, c-format +#~ msgid "Invalid job stream \"%s\"" +#~ msgstr "" + +#~ msgid "Can't send data to the job: stdin is closed" +#~ msgstr "" + +#~ msgid "Can't send raw data to rpc channel" +#~ msgstr "" + +#~ msgid "E474: Failed to convert list to string" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "E474: Failed to parse %.*s" +#~ msgstr "E241: Kan nie na %s stuur nie" + +#, fuzzy +#~ msgid "E701: Invalid type for len()" +#~ msgstr "E596: Ongeldige font(e)" + +#, c-format +#~ msgid "E798: ID is reserved for \":match\": %" +#~ msgstr "" + +#, c-format +#~ msgid "E798: ID is reserved for \"match\": %" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "msgpackdump() argument, index %i" +#~ msgstr " vim [parameters] " + +#~ msgid "E5070: Character number must not be less than zero" +#~ msgstr "" + +#, c-format +#~ msgid "E5071: Character number must not be greater than INT_MAX (%i)" +#~ msgstr "" + +#~ msgid "E726: Stride is zero" +#~ msgstr "" + +#~ msgid "E727: Start past end" +#~ msgstr "" + +#~ msgid "" +#~ msgstr "" + +#~ msgid "remove() argument" +#~ msgstr "" + +msgid "E655: Too many symbolic links (cycle?)" +msgstr "E655: Te veel simboliese skakels (siklus?)" + +#~ msgid "reverse() argument" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "E927: Invalid action: '%s'" +#~ msgstr "E383: Ongeldige soekstring: %s" + +#, fuzzy, c-format +#~ msgid "connection failed: %s" +#~ msgstr "XSMP 'SmcOpenConnection' het gefaal: %s" + +#~ msgid "sort() argument" +#~ msgstr "" + +#, fuzzy +#~ msgid "uniq() argument" +#~ msgstr "Ongeldige parameter vir" + +#, fuzzy +#~ msgid "E702: Sort compare function failed" +#~ msgstr "E237: Drukker-seleksie het gefaal" + +#~ msgid "E882: Uniq compare function failed" +#~ msgstr "" + +msgid "(Invalid)" +msgstr "(Ongeldig)" + +#, fuzzy, c-format +#~ msgid "E935: invalid submatch number: %d" +#~ msgstr "E354: Ongeldige registernaam: '%s'" + +#~ msgid "Can only call this function in an unmodified buffer" +#~ msgstr "" + +#, fuzzy +#~ msgid "E921: Invalid callback argument" +#~ msgstr "E474: Ongeldige parameter" + +#, fuzzy, c-format +#~ msgid "E80: Error while writing: %s" +#~ msgstr "E80: Fout tydens skryfoperasie" + +#. Using %s, p and not %c, *p to preserve multibyte characters +#, fuzzy, c-format +#~ msgid "E5060: Unknown flag: %s" +#~ msgstr "E235: Onbekende font: %s" + +#, fuzzy +#~ msgid "E482: Can't open file with an empty name" +#~ msgstr "E212: Kan ler nie oopmaak vir skryf nie" + +#, fuzzy, c-format +#~ msgid "E482: Can't open file %s for writing: %s" +#~ msgstr "E212: Kan ler nie oopmaak vir skryf nie" + +#, fuzzy, c-format +#~ msgid "E80: Error when closing file %s: %s" +#~ msgstr "E209: Kan \"%s\" nie sluit nie" + +#, fuzzy, c-format +#~ msgid "E794: Cannot set variable in the sandbox: \"%.*s\"" +#~ msgstr "E46: Kan nie lees-alleen veranderlike stel nie \"%s\"" + +#, fuzzy, c-format +#~ msgid "E795: Cannot delete variable %.*s" +#~ msgstr "E46: Kan nie lees-alleen veranderlike stel nie \"%s\"" + +#, fuzzy, c-format +#~ msgid "E704: Funcref variable name must start with a capital: %s" +#~ msgstr "E128: Funksienaam moet met 'n hoofletter begin: %s" + +#, c-format +#~ msgid "E705: Variable name conflicts with existing function: %s" +#~ msgstr "" + +#~ msgid "E698: variable nested too deep for making a copy" +#~ msgstr "" + +#, c-format +msgid "E123: Undefined function: %s" +msgstr "E123: Ongedefinieerde funksie: %s" + +#, c-format +msgid "E124: Missing '(': %s" +msgstr "E124: Ontbrekende '(': %s" + +#, fuzzy +#~ msgid "E862: Cannot use g: here" +#~ msgstr "E284: Kan nie IC waardes stel nie" + +#, c-format +#~ msgid "E932: Closure function should not be at top level: %s" +#~ msgstr "" -#: ../eval.c:17416 msgid "E126: Missing :endfunction" msgstr "E126: Ontbrekende ':endfunction'" -#: ../eval.c:17537 #, fuzzy, c-format -msgid "E707: Function name conflicts with variable: %s" -msgstr "E128: Funksienaam moet met 'n hoofletter begin: %s" +#~ msgid "E707: Function name conflicts with variable: %s" +#~ msgstr "E128: Funksienaam moet met 'n hoofletter begin: %s" -#: ../eval.c:17549 #, c-format msgid "E127: Cannot redefine function %s: It is in use" msgstr "E127: Kan funksie %s nie herdefinieer nie: Dit is in gebruik" -#: ../eval.c:17604 #, fuzzy, c-format -msgid "E746: Function name does not match script file name: %s" -msgstr "E128: Funksienaam moet met 'n hoofletter begin: %s" +#~ msgid "E746: Function name does not match script file name: %s" +#~ msgstr "E128: Funksienaam moet met 'n hoofletter begin: %s" -#: ../eval.c:17716 msgid "E129: Function name required" msgstr "E129: Funksienaam vereis" -#: ../eval.c:17824 #, fuzzy, c-format -msgid "E128: Function name must start with a capital or \"s:\": %s" -msgstr "E128: Funksienaam moet met 'n hoofletter begin: %s" +#~ msgid "E128: Function name must start with a capital or \"s:\": %s" +#~ msgstr "E128: Funksienaam moet met 'n hoofletter begin: %s" -#: ../eval.c:17833 #, fuzzy, c-format -msgid "E884: Function name cannot contain a colon: %s" -msgstr "E128: Funksienaam moet met 'n hoofletter begin: %s" +#~ msgid "E884: Function name cannot contain a colon: %s" +#~ msgstr "E128: Funksienaam moet met 'n hoofletter begin: %s" -#: ../eval.c:18336 #, c-format msgid "E131: Cannot delete function %s: It is in use" msgstr "E131: Kan funksie %s nie verwyder nie: Dit is in gebruik" -#: ../eval.c:18441 +#, fuzzy, c-format +#~ msgid "Cannot delete function %s: It is being used internally" +#~ msgstr "E131: Kan funksie %s nie verwyder nie: Dit is in gebruik" + msgid "E132: Function call depth is higher than 'maxfuncdepth'" msgstr "E132: Funksieroepdiepte is groter as 'maxfuncdepth'" -#: ../eval.c:18568 #, c-format msgid "calling %s" msgstr "roep %s" -#: ../eval.c:18651 #, c-format msgid "%s aborted" msgstr "%s gekanselleer" -#: ../eval.c:18653 #, c-format msgid "%s returning #%" msgstr "%s lewer #% op" -#: ../eval.c:18670 #, fuzzy, c-format -msgid "%s returning %s" -msgstr "%s lewer \"%s\" op" +#~ msgid "%s returning %s" +#~ msgstr "%s lewer \"%s\" op" -#: ../eval.c:18691 ../ex_cmds2.c:2695 #, c-format msgid "continuing in %s" msgstr "vervolg in %s" -#: ../eval.c:18795 msgid "E133: :return not inside a function" msgstr "E133: ':return' buite funksie" -#: ../eval.c:19159 -msgid "" -"\n" -"# global variables:\n" -msgstr "" -"\n" -"# globale veranderlikes:\n" - -#: ../eval.c:19254 msgid "" "\n" "\tLast set from " @@ -1071,154 +910,418 @@ msgstr "" "\n" "\tLaas gestel vanaf " -#: ../eval.c:19272 -#, fuzzy -msgid "No old files" -msgstr "Geen ingeslote lers nie" +#~ msgid "E5009: $VIMRUNTIME is empty or unset" +#~ msgstr "" + +#, c-format +#~ msgid "E5009: Invalid $VIMRUNTIME: %s" +#~ msgstr "" + +#, c-format +#~ msgid "E474: Expected comma before list item: %s" +#~ msgstr "" + +#, c-format +#~ msgid "E474: Expected colon before dictionary value: %s" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "E474: Expected string key: %s" +#~ msgstr "E415: onverwagte gelykaanteken: %s" + +#, fuzzy, c-format +#~ msgid "E474: Expected comma before dictionary key: %s" +#~ msgstr "E242: Ontbrekende kleur: %s" + +#, fuzzy, c-format +#~ msgid "E474: Unfinished escape sequence: %.*s" +#~ msgstr "E540: Onvoltooide uitdrukkingreeks" + +#, c-format +#~ msgid "E474: Unfinished unicode escape sequence: %.*s" +#~ msgstr "" + +#, c-format +#~ msgid "E474: Expected four hex digits after \\u: %.*s" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "E474: Unknown escape sequence: %.*s" +#~ msgstr "E409: Onbekende groepnaam: %s" + +#, c-format +#~ msgid "E474: ASCII control characters cannot be present inside string: %.*s" +#~ msgstr "" + +#, c-format +#~ msgid "E474: Only UTF-8 strings allowed: %.*s" +#~ msgstr "" + +#, c-format +#~ msgid "" +#~ "E474: Only UTF-8 code points up to U+10FFFF are allowed to appear unescaped: " +#~ "%.*s" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "E474: Expected string end: %.*s" +#~ msgstr "E415: onverwagte gelykaanteken: %s" + +#, fuzzy, c-format +#~ msgid "E474: Leading zeroes are not allowed: %.*s" +#~ msgstr "E481: Geen omvang toegelaat nie" + +#, fuzzy, c-format +#~ msgid "E474: Missing number after minus sign: %.*s" +#~ msgstr "E526: Ontbrekende nommer na <%s>" + +#, fuzzy, c-format +#~ msgid "E474: Missing number after decimal dot: %.*s" +#~ msgstr "E526: Ontbrekende nommer na <%s>" + +#, fuzzy, c-format +#~ msgid "E474: Missing exponent: %.*s" +#~ msgstr "E114: Ontbrekende aanhalingsteken: %s" + +#, c-format +#~ msgid "" +#~ "E685: internal error: while converting number \"%.*s\" to float string2float " +#~ "consumed %zu bytes in place of %zu" +#~ msgstr "" + +#, c-format +#~ msgid "" +#~ "E685: internal error: while converting number \"%.*s\" to integer vim_str2nr " +#~ "consumed %i bytes in place of %zu" +#~ msgstr "" + +#~ msgid "E474: Attempt to decode a blank string" +#~ msgstr "" + +#, c-format +#~ msgid "E474: No container to close: %.*s" +#~ msgstr "" + +#, c-format +#~ msgid "E474: Closing list with curly bracket: %.*s" +#~ msgstr "" + +#, c-format +#~ msgid "E474: Closing dictionary with square bracket: %.*s" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "E474: Trailing comma: %.*s" +#~ msgstr "E488: Oorbodige karakters" + +#, c-format +#~ msgid "E474: Expected value after colon: %.*s" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "E474: Expected value: %.*s" +#~ msgstr "E415: onverwagte gelykaanteken: %s" + +#, fuzzy, c-format +#~ msgid "E474: Comma not inside container: %.*s" +#~ msgstr "E242: Kleurnaam is onbekend: %s" + +#, fuzzy, c-format +#~ msgid "E474: Duplicate comma: %.*s" +#~ msgstr "E125: Ongeldige parameter: %s" + +#, fuzzy, c-format +#~ msgid "E474: Comma after colon: %.*s" +#~ msgstr "E254: Kan nie kleur %s toeken nie" + +#, fuzzy, c-format +#~ msgid "E474: Using comma in place of colon: %.*s" +#~ msgstr "E242: Ontbrekende kleur: %s" + +#, c-format +#~ msgid "E474: Leading comma: %.*s" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "E474: Colon not inside container: %.*s" +#~ msgstr "E242: Kleurnaam is onbekend: %s" + +#, fuzzy, c-format +#~ msgid "E474: Using colon not in dictionary: %.*s" +#~ msgstr "E242: Ontbrekende kleur: %s" + +#, fuzzy, c-format +#~ msgid "E474: Unexpected colon: %.*s" +#~ msgstr "E415: onverwagte gelykaanteken: %s" + +#, c-format +#~ msgid "E474: Colon after comma: %.*s" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "E474: Duplicate colon: %.*s" +#~ msgstr "gelaaide fontnaam: %s" + +#, fuzzy, c-format +#~ msgid "E474: Expected null: %.*s" +#~ msgstr "E415: onverwagte gelykaanteken: %s" + +#, fuzzy, c-format +#~ msgid "E474: Expected true: %.*s" +#~ msgstr "E415: onverwagte gelykaanteken: %s" + +#, fuzzy, c-format +#~ msgid "E474: Expected false: %.*s" +#~ msgstr "E415: onverwagte gelykaanteken: %s" + +#, fuzzy, c-format +#~ msgid "E474: Unidentified byte: %.*s" +#~ msgstr "E121: Ongedefinieerde veranderlike: %s" + +#, fuzzy, c-format +#~ msgid "E474: Trailing characters: %.*s" +#~ msgstr "E488: Oorbodige karakters" + +#, fuzzy, c-format +#~ msgid "E474: Unexpected end of input: %.*s" +#~ msgstr "E415: onverwagte gelykaanteken: %s" + +#, c-format +#~ msgid "key %s" +#~ msgstr "" + +#, c-format +#~ msgid "key %s at index %i from special map" +#~ msgstr "" + +#, c-format +#~ msgid "index %i" +#~ msgstr "" + +#~ msgid "partial" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "argument %i" +#~ msgstr " vim [parameters] " + +#~ msgid "partial self dictionary" +#~ msgstr "" + +#~ msgid "itself" +#~ msgstr "" + +#. Only give this message once for a recursive call to avoid +#. flooding the user with errors. +#~ msgid "E724: unable to correctly dump variable with self-referencing container" +#~ msgstr "" + +#~ msgid "E474: Unable to represent NaN value in JSON" +#~ msgstr "" + +#~ msgid "E474: Unable to represent infinity in JSON" +#~ msgstr "" + +#, c-format +#~ msgid "" +#~ "E474: String \"%.*s\" contains byte that does not start any UTF-8 character" +#~ msgstr "" + +#, c-format +#~ msgid "" +#~ "E474: UTF-8 string contains code point which belongs to a surrogate pair: " +#~ "%.*s" +#~ msgstr "" + +#, fuzzy +#~ msgid "E474: Unable to convert EXT string to JSON" +#~ msgstr "E620: Kon nie van wye-greep na \"%s\" enkodering verander nie" + +#, c-format +#~ msgid "E474: Error while dumping %s, %s: attempt to dump function reference" +#~ msgstr "" + +#, fuzzy +#~ msgid "E474: Invalid key in special dictionary" +#~ msgstr "E116: Ongeldige parameters vir funksie %s" + +#, fuzzy +#~ msgid "encode_tv2string() argument" +#~ msgstr "Te veel redigeer-parameters" + +#, fuzzy +#~ msgid ":echo argument" +#~ msgstr " vim [parameters] " + +#, fuzzy +#~ msgid "encode_tv2json() argument" +#~ msgstr "Te veel redigeer-parameters" + +#, c-format +#~ msgid "E5004: Error while dumping %s, %s: attempt to dump function reference" +#~ msgstr "" + +#, c-format +#~ msgid "E5005: Unable to dump %s: container references itself in %s" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "E684: list index out of range: %" +#~ msgstr "E322: relnommer buite perke: % verby die einde" + +#~ msgid "E6000: Argument is not a function or function name" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "E737: Key already exists: %s" +#~ msgstr "E227: binding bestaan alreeds vir %s" + +#~ msgid "E743: variable nested too deep for (un)lock" +#~ msgstr "" + +#, c-format +#~ msgid "E741: Value is locked: %.*s" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "E742: Cannot change value of %.*s" +#~ msgstr "E284: Kan nie IC waardes stel nie" + +msgid "Unknown" +msgstr "Onbekend" + +#~ msgid "E805: Expected a Number or a String, Float found" +#~ msgstr "" + +#~ msgid "E703: Expected a Number or a String, Funcref found" +#~ msgstr "" + +#~ msgid "E745: Expected a Number or a String, List found" +#~ msgstr "" + +#~ msgid "E728: Expected a Number or a String, Dictionary found" +#~ msgstr "" + +#, fuzzy +#~ msgid "E5300: Expected a Number or a String" +#~ msgstr "E373: Onverwagte %%%c in formaatstring" + +#~ msgid "E745: Using a List as a Number" +#~ msgstr "" + +#~ msgid "E728: Using a Dictionary as a Number" +#~ msgstr "" + +#~ msgid "E805: Using a Float as a Number" +#~ msgstr "" + +#, fuzzy +#~ msgid "E685: using an invalid value as a Number" +#~ msgstr "E19: Merker het ongeldige relnommer" + +#, fuzzy +#~ msgid "E730: using List as a String" +#~ msgstr "E374: Ontbrekende ] in formaatstring" + +#~ msgid "E731: using Dictionary as a String" +#~ msgstr "" + +#, fuzzy +#~ msgid "E908: using an invalid value as a String" +#~ msgstr "E374: Ontbrekende ] in formaatstring" + +#~ msgid "E891: Using a Funcref as a Float" +#~ msgstr "" + +#~ msgid "E892: Using a String as a Float" +#~ msgstr "" + +#, fuzzy +#~ msgid "E893: Using a List as a Float" +#~ msgstr "E374: Ontbrekende ] in formaatstring" + +#, fuzzy +#~ msgid "E894: Using a Dictionary as a Float" +#~ msgstr "E242: Ontbrekende kleur: %s" + +#~ msgid "E907: Using a special value as a Float" +#~ msgstr "" + +#, fuzzy +#~ msgid "E808: Number or Float required" +#~ msgstr "E521: Nommer vereis na =" + +#~ msgid "tcp address must be host:port" +#~ msgstr "" + +#~ msgid "failed to lookup host or port" +#~ msgstr "" + +#, fuzzy +#~ msgid "connection refused" +#~ msgstr "'cscope' verbinding gesluit" -#: ../ex_cmds.c:122 #, c-format msgid "<%s>%s%s %d, Hex %02x, Octal %03o" msgstr "<%s>%s%s %d, Hex %02x, Oktaal %03o" -#: ../ex_cmds.c:145 #, c-format msgid "> %d, Hex %04x, Octal %o" msgstr "> %d, Hex %04x, Oktaal %o" -#: ../ex_cmds.c:146 #, c-format msgid "> %d, Hex %08x, Octal %o" msgstr "> %d, Hex %08x, Oktaal %o" -#: ../ex_cmds.c:684 msgid "E134: Move lines into themselves" msgstr "E134: Skuif rels in hulself in" -#: ../ex_cmds.c:747 msgid "1 line moved" msgstr "1 rel geskuif" -#: ../ex_cmds.c:749 #, c-format msgid "% lines moved" msgstr "% rels geskuif" -#: ../ex_cmds.c:1175 +#, c-format +msgid "E482: Can't create file %s" +msgstr "E482: Kan nie ler %s skep nie" + #, c-format msgid "% lines filtered" msgstr "% rels filtreer" -#: ../ex_cmds.c:1194 msgid "E135: *Filter* Autocommands must not change current buffer" msgstr "E135: *Filter* Outobevele mag nie die huidige buffer verander nie" -#: ../ex_cmds.c:1244 msgid "[No write since last change]\n" msgstr "[Ongestoor sedert vorige verandering]\n" -#: ../ex_cmds.c:1424 -#, c-format -msgid "%sviminfo: %s in line: " -msgstr "%sviminfo: %s in rel: " - -#: ../ex_cmds.c:1431 -msgid "E136: viminfo: Too many errors, skipping rest of file" -msgstr "E136: viminfo: Te veel foute, slaan die res van die ler oor" - -#: ../ex_cmds.c:1458 -#, c-format -msgid "Reading viminfo file \"%s\"%s%s%s" -msgstr "Besig om viminfo ler \"%s\"%s%s%s te lees" - -#: ../ex_cmds.c:1460 -msgid " info" -msgstr " inligting" - -#: ../ex_cmds.c:1461 -msgid " marks" -msgstr " merkers" - -#: ../ex_cmds.c:1462 -#, fuzzy -msgid " oldfiles" -msgstr "Geen ingeslote lers nie" - -#: ../ex_cmds.c:1463 -msgid " FAILED" -msgstr " GEFAAL" - -#. avoid a wait_return for this message, it's annoying -#: ../ex_cmds.c:1541 -#, c-format -msgid "E137: Viminfo file is not writable: %s" -msgstr "E137: Viminfo ler is nie skryfbaar nie: %s" - -#: ../ex_cmds.c:1626 -#, c-format -msgid "E138: Can't write viminfo file %s!" -msgstr "E138: Kan nie viminfo ler %s stoor nie!" - -#: ../ex_cmds.c:1635 -#, c-format -msgid "Writing viminfo file \"%s\"" -msgstr "Besig om viminfo ler \"%s\" te stoor" - -#. Write the info: -#: ../ex_cmds.c:1720 -#, c-format -msgid "# This viminfo file was generated by Vim %s.\n" -msgstr "# Hierdie viminfo ler is gegenereer deur Vim %s.\n" - -#: ../ex_cmds.c:1722 -msgid "" -"# You may edit it if you're careful!\n" -"\n" -msgstr "" -"# Jy mag dit wysig as jy versigtig is!\n" -"\n" - -#: ../ex_cmds.c:1723 -msgid "# Value of 'encoding' when this file was written\n" -msgstr "# Waarde van 'encoding' toe hierdie ler gestoor is\n" - -#: ../ex_cmds.c:1800 -msgid "Illegal starting char" -msgstr "Ongeldige beginkarakter" - -#: ../ex_cmds.c:2162 msgid "Write partial file?" msgstr "Skryf gedeeltelike ler?" -#: ../ex_cmds.c:2166 msgid "E140: Use ! to write partial buffer" msgstr "E140: Gebruik ! om gedeeltelike buffer te skryf" -#: ../ex_cmds.c:2281 #, fuzzy, c-format -msgid "Overwrite existing file \"%s\"?" -msgstr "Oorskryf bestaande ler \"%.*s\"?" +#~ msgid "Overwrite existing file \"%s\"?" +#~ msgstr "Oorskryf bestaande ler \"%.*s\"?" -#: ../ex_cmds.c:2317 #, c-format -msgid "Swap file \"%s\" exists, overwrite anyway?" -msgstr "" +#~ msgid "Swap file \"%s\" exists, overwrite anyway?" +#~ msgstr "" -#: ../ex_cmds.c:2326 #, fuzzy, c-format -msgid "E768: Swap file exists: %s (:silent! overrides)" -msgstr "E13: Ler bestaan (gebruik ! om te dwing)" +#~ msgid "E768: Swap file exists: %s (:silent! overrides)" +#~ msgstr "E13: Ler bestaan (gebruik ! om te dwing)" -#: ../ex_cmds.c:2381 #, c-format msgid "E141: No file name for buffer %" msgstr "E141: Geen lernaam vir buffer % nie" -#: ../ex_cmds.c:2412 msgid "E142: File not written: Writing is disabled by 'write' option" msgstr "E142: Ler nie gestoor nie: Stoor is afgeskakel deur die 'write' opsie" -#: ../ex_cmds.c:2434 #, fuzzy, c-format msgid "" "'readonly' option is set for \"%s\".\n" @@ -1227,823 +1330,667 @@ msgstr "" "'readonly' opsie is aan vir \"%.*s\".\n" "Wil jy dit forseer?" -#: ../ex_cmds.c:2439 #, c-format -msgid "" -"File permissions of \"%s\" are read-only.\n" -"It may still be possible to write it.\n" -"Do you wish to try?" -msgstr "" +#~ msgid "" +#~ "File permissions of \"%s\" are read-only.\n" +#~ "It may still be possible to write it.\n" +#~ "Do you wish to try?" +#~ msgstr "" -#: ../ex_cmds.c:2451 #, fuzzy, c-format -msgid "E505: \"%s\" is read-only (add ! to override)" -msgstr "is lees-alleen (gebruik ! om te dwing)" +#~ msgid "E505: \"%s\" is read-only (add ! to override)" +#~ msgstr "is lees-alleen (gebruik ! om te dwing)" -#: ../ex_cmds.c:3120 #, c-format msgid "E143: Autocommands unexpectedly deleted new buffer %s" msgstr "E143: Outobevele het nuwe buffer %s onverwags geskrap" -#: ../ex_cmds.c:3313 msgid "E144: non-numeric argument to :z" msgstr "E144: nie-numeriese parameter vir :z" -#: ../ex_cmds.c:3404 -msgid "E145: Shell commands not allowed in rvim" -msgstr "E145: Dop bevele nie toegelaat in rvim" +#, fuzzy +#~ msgid "E145: Shell commands not allowed in restricted mode" +#~ msgstr "E145: Dop bevele nie toegelaat in rvim" -#: ../ex_cmds.c:3498 msgid "E146: Regular expressions can't be delimited by letters" msgstr "E146: Patrone kan nie deur letters afgebaken word nie" -#: ../ex_cmds.c:3964 #, c-format msgid "replace with %s (y/n/a/q/l/^E/^Y)?" msgstr "vervang met %s (y/n/a/q/l/^E/^Y)?" -#: ../ex_cmds.c:4379 msgid "(Interrupted) " msgstr "(Onderbreek) " -#: ../ex_cmds.c:4384 #, fuzzy -msgid "1 match" -msgstr "; treffer " +#~ msgid "1 match" +#~ msgstr "; treffer " -#: ../ex_cmds.c:4384 msgid "1 substitution" msgstr "1 vervanging" -#: ../ex_cmds.c:4387 #, fuzzy, c-format -msgid "% matches" -msgstr "% veranderinge" +#~ msgid "% matches" +#~ msgstr "% veranderinge" -#: ../ex_cmds.c:4388 #, c-format msgid "% substitutions" msgstr "% vervangings" -#: ../ex_cmds.c:4392 msgid " on 1 line" msgstr " op 1 rel" -#: ../ex_cmds.c:4395 #, c-format msgid " on % lines" msgstr " op % rels" -#: ../ex_cmds.c:4438 msgid "E147: Cannot do :global recursive" msgstr "E147: Kan nie :global rekursief doen nie " -#: ../ex_cmds.c:4467 msgid "E148: Regular expression missing from global" msgstr "E148: Patroon ontbreek uit globaal" -#: ../ex_cmds.c:4508 #, c-format msgid "Pattern found in every line: %s" msgstr "Patroon gevind in elke rel: %s" -#: ../ex_cmds.c:4510 #, fuzzy, c-format -msgid "Pattern not found: %s" -msgstr "Patroon nie gevind nie" +#~ msgid "Pattern not found: %s" +#~ msgstr "Patroon nie gevind nie" -#: ../ex_cmds.c:4587 -msgid "" -"\n" -"# Last Substitute String:\n" -"$" -msgstr "" -"\n" -"# Vorige Vervangstring:\n" -"$" - -#: ../ex_cmds.c:4679 msgid "E478: Don't panic!" msgstr "E478: Bly kalm!" -#: ../ex_cmds.c:4717 #, c-format msgid "E661: Sorry, no '%s' help for %s" msgstr "E661: Jammer, geen '%s' hulp vir %s nie" -#: ../ex_cmds.c:4719 #, c-format msgid "E149: Sorry, no help for %s" msgstr "E149: Jammer, geen hulp vir %s nie" -#: ../ex_cmds.c:4751 #, c-format msgid "Sorry, help file \"%s\" not found" msgstr "Jammer, hulpler \"%s\" kan nie gevind word nie" -#: ../ex_cmds.c:5323 -#, c-format -msgid "E150: Not a directory: %s" -msgstr "E150: Nie 'n gids nie: %s" +#, fuzzy, c-format +#~ msgid "E151: No match: %s" +#~ msgstr "E480: Geen treffer: %s" -#: ../ex_cmds.c:5446 #, c-format msgid "E152: Cannot open %s for writing" msgstr "E152: Kan nie %s oopmaak om te skryf nie" -#: ../ex_cmds.c:5471 #, c-format msgid "E153: Unable to open %s for reading" msgstr "E153: Kan nie %s oop maak om te lees nie" -#: ../ex_cmds.c:5500 #, c-format msgid "E670: Mix of help file encodings within a language: %s" msgstr "E670: 'n Mengsel van hulpler enkoderings in 'n taal: %s" -#: ../ex_cmds.c:5565 #, c-format msgid "E154: Duplicate tag \"%s\" in file %s/%s" msgstr "E154: Duplikaat etiket \"%s\" in ler %s/%s" -#: ../ex_cmds.c:5687 +#, c-format +msgid "E150: Not a directory: %s" +msgstr "E150: Nie 'n gids nie: %s" + #, c-format msgid "E160: Unknown sign command: %s" msgstr "E160: Onbekende funksie: %s" -#: ../ex_cmds.c:5704 msgid "E156: Missing sign name" msgstr "E156: Ontbrekende tekennaam" -#: ../ex_cmds.c:5746 msgid "E612: Too many signs defined" msgstr "E612: Te veel tekens gedefinieer" -#: ../ex_cmds.c:5813 #, c-format msgid "E239: Invalid sign text: %s" msgstr "E239: Ongeldige tekenteks: %s" -#: ../ex_cmds.c:5844 ../ex_cmds.c:6035 #, c-format msgid "E155: Unknown sign: %s" msgstr "E155: Onbekende opsie: %s" -#: ../ex_cmds.c:5877 msgid "E159: Missing sign number" msgstr "E159: Ontbrekende tekennommer" -#: ../ex_cmds.c:5971 #, c-format msgid "E158: Invalid buffer name: %s" msgstr "E158: Ongeldige buffernaam: %s" -#: ../ex_cmds.c:6008 +#~ msgid "E934: Cannot jump to a buffer that does not have a name" +#~ msgstr "" + #, c-format msgid "E157: Invalid sign ID: %" msgstr "E157: Ongeldige teken ID: %" -#: ../ex_cmds.c:6066 +#, c-format +#~ msgid "E885: Not possible to change sign %s" +#~ msgstr "" + msgid " (not supported)" msgstr " (word nie ondersteun nie)" -#: ../ex_cmds.c:6169 msgid "[Deleted]" msgstr "[Geskrap]" -#: ../ex_cmds2.c:139 +#, fuzzy +#~ msgid "No old files" +#~ msgstr "Geen ingeslote lers nie" + msgid "Entering Debug mode. Type \"cont\" to continue." msgstr "Ontfoutmodus begin nou. Tik \"cont\" om te verlaat." -#: ../ex_cmds2.c:143 ../ex_docmd.c:759 #, c-format msgid "line %: %s" msgstr "rel %: %s" -#: ../ex_cmds2.c:145 #, c-format msgid "cmd: %s" msgstr "cmd: %s" -#: ../ex_cmds2.c:322 +#~ msgid "frame is zero" +#~ msgstr "" + +#, c-format +#~ msgid "frame at highest level: %d" +#~ msgstr "" + #, c-format msgid "Breakpoint in \"%s%s\" line %" msgstr "Inspeksiepunt in \"%s%s\" rel %" -#: ../ex_cmds2.c:581 #, c-format msgid "E161: Breakpoint not found: %s" msgstr "E161: Inspeksiepunt kon nie gevind word nie: %s" -#: ../ex_cmds2.c:611 msgid "No breakpoints defined" msgstr "Geen inspeksiepunte gedefinieer nie" -#: ../ex_cmds2.c:617 #, c-format msgid "%3d %s %s line %" msgstr "%3d %s %s rel %" -#: ../ex_cmds2.c:942 -msgid "E750: First use \":profile start {fname}\"" -msgstr "" +#~ msgid "E750: First use \":profile start {fname}\"" +#~ msgstr "" -#: ../ex_cmds2.c:1269 #, fuzzy, c-format -msgid "Save changes to \"%s\"?" -msgstr "Stoor veranderinge na \"%.*s\"?" +#~ msgid "Save changes to \"%s\"?" +#~ msgstr "Stoor veranderinge na \"%.*s\"?" -#: ../ex_cmds2.c:1271 ../ex_docmd.c:8851 msgid "Untitled" msgstr "Ongetiteld" -#: ../ex_cmds2.c:1421 #, c-format msgid "E162: No write since last change for buffer \"%s\"" msgstr "E162: Buffer \"%s\" is nie geskryf sedert vorige wysiging nie" -#: ../ex_cmds2.c:1480 msgid "Warning: Entered other buffer unexpectedly (check autocommands)" msgstr "Waarskuwing: Ander buffer onverwags betree (kyk na outobevele)" -#: ../ex_cmds2.c:1826 msgid "E163: There is only one file to edit" msgstr "E163: Daar is net een ler om te bewerk" -#: ../ex_cmds2.c:1828 msgid "E164: Cannot go before first file" msgstr "E164: Kan nie vr die eerste ler gaan nie" -#: ../ex_cmds2.c:1830 msgid "E165: Cannot go beyond last file" msgstr "E165: Kan nie verby die laaste ler gaan nie" -#: ../ex_cmds2.c:2175 #, c-format msgid "E666: compiler not supported: %s" msgstr "E666: vertaler word nie ondersteun nie: %s" -#: ../ex_cmds2.c:2257 #, c-format msgid "Searching for \"%s\" in \"%s\"" msgstr "Besig om te soek vir \"%s\" in \"%s\"" -#: ../ex_cmds2.c:2284 #, c-format msgid "Searching for \"%s\"" msgstr "Besig om te soek vir \"%s\"" -#: ../ex_cmds2.c:2307 -#, c-format -msgid "not found in 'runtimepath': \"%s\"" -msgstr "kon nie in 'runtimepath' gevind word nie: \"%s\"" +#, fuzzy, c-format +#~ msgid "not found in '%s': \"%s\"" +#~ msgstr "kon nie in 'runtimepath' gevind word nie: \"%s\"" -#: ../ex_cmds2.c:2472 #, c-format msgid "Cannot source a directory: \"%s\"" msgstr "Kan nie gids uitvoer nie: \"%s\"" -#: ../ex_cmds2.c:2518 #, c-format msgid "could not source \"%s\"" msgstr "kon nie \"%s\" uitvoer nie" -#: ../ex_cmds2.c:2520 #, c-format msgid "line %: could not source \"%s\"" msgstr "rel %: kon nie \"%s\" uitvoer nie" -#: ../ex_cmds2.c:2535 #, c-format msgid "sourcing \"%s\"" msgstr "besig om \"%s\" uit te voer" -#: ../ex_cmds2.c:2537 #, c-format msgid "line %: sourcing \"%s\"" msgstr "rel %: voer nou \"%s\" uit" -#: ../ex_cmds2.c:2693 #, c-format msgid "finished sourcing %s" msgstr "%s klaar uitgevoer" -#: ../ex_cmds2.c:2765 #, fuzzy -msgid "modeline" -msgstr "1 rel meer" +#~ msgid "modeline" +#~ msgstr "1 rel meer" -#: ../ex_cmds2.c:2767 #, fuzzy -msgid "--cmd argument" -msgstr " vim [parameters] " +#~ msgid "--cmd argument" +#~ msgstr " vim [parameters] " -#: ../ex_cmds2.c:2769 #, fuzzy -msgid "-c argument" -msgstr " vim [parameters] " +#~ msgid "-c argument" +#~ msgstr " vim [parameters] " -#: ../ex_cmds2.c:2771 #, fuzzy -msgid "environment variable" -msgstr "Stel die 'LANG' omgewingsveranderlike na jou lokaal toe" +#~ msgid "environment variable" +#~ msgstr "Stel die 'LANG' omgewingsveranderlike na jou lokaal toe" -#: ../ex_cmds2.c:2773 #, fuzzy -msgid "error handler" -msgstr "Fout en onderbreking" +#~ msgid "error handler" +#~ msgstr "Fout en onderbreking" -#: ../ex_cmds2.c:3020 msgid "W15: Warning: Wrong line separator, ^M may be missing" msgstr "W15: Waarskuwing: Verkeerde relskeiding, ^M ontbreek dalk" -#: ../ex_cmds2.c:3139 msgid "E167: :scriptencoding used outside of a sourced file" msgstr "E167: ':scriptencoding' buite 'n uitvoerler gebruik" -#: ../ex_cmds2.c:3166 msgid "E168: :finish used outside of a sourced file" msgstr "E168: ':finish' buite 'n uitvoerler gebruik" -#: ../ex_cmds2.c:3389 #, c-format msgid "Current %slanguage: \"%s\"" msgstr "Huidige %staal: \"%s\"" -#: ../ex_cmds2.c:3404 #, c-format msgid "E197: Cannot set language to \"%s\"" msgstr "E197: Kan nie taal na \"%s\" verander nie" #. don't redisplay the window #. don't wait for return -#: ../ex_docmd.c:387 msgid "Entering Ex mode. Type \"visual\" to go to Normal mode." msgstr "Betree Ex modus. Tik \"visual\" om na Normale modus terug te keer." -#: ../ex_docmd.c:428 msgid "E501: At end-of-file" msgstr "E501: By lereinde" -#: ../ex_docmd.c:513 msgid "E169: Command too recursive" msgstr "E169: Bevel te rekursief" -#: ../ex_docmd.c:1006 +#, fuzzy +#~ msgid "line %" +#~ msgstr "rel %4ld:" + #, c-format msgid "E605: Exception not caught: %s" msgstr "E605: Uitsondering nie gevang nie: %s" -#: ../ex_docmd.c:1085 msgid "End of sourced file" msgstr "Einde van uitvoerler" -#: ../ex_docmd.c:1086 msgid "End of function" msgstr "Einde van funksie " -#: ../ex_docmd.c:1628 msgid "E464: Ambiguous use of user-defined command" msgstr "E464: Dubbelsinnige gebruik van gebruiker-gedefinieerde bevel" -#: ../ex_docmd.c:1638 msgid "E492: Not an editor command" msgstr "E492: Nie 'n verwerkerbevel nie" -#: ../ex_docmd.c:1729 msgid "E493: Backwards range given" msgstr "E493: Terugwaardse omvang gegee" -#: ../ex_docmd.c:1733 msgid "Backwards range given, OK to swap" msgstr "Terugwaardse omvang gegee, OK om te ruil" #. append #. typed wrong -#: ../ex_docmd.c:1787 msgid "E494: Use w or w>>" msgstr "E494: Gebruik w of w>>" -#: ../ex_docmd.c:3454 msgid "E319: The command is not available in this version" msgstr "E319: Jammer, die bevel is nie gemplementeer nie" -#: ../ex_docmd.c:3752 -msgid "E172: Only one file name allowed" -msgstr "E172: Slegs een lernaam toegelaat" - -#: ../ex_docmd.c:4238 msgid "1 more file to edit. Quit anyway?" msgstr "Nog 1 ler om te bewerk. Stop in elk geval?" -#: ../ex_docmd.c:4242 #, c-format msgid "%d more files to edit. Quit anyway?" msgstr "Nog %d lers om te bewerk. Stop in elk geval?" -#: ../ex_docmd.c:4248 msgid "E173: 1 more file to edit" msgstr "E173: Nog 1 ler om te bewerk" -#: ../ex_docmd.c:4250 #, c-format msgid "E173: % more files to edit" msgstr "E173: Nog % lers om te bewerk" -#: ../ex_docmd.c:4320 msgid "E174: Command already exists: add ! to replace it" msgstr "E174: Bevel bestaan alreeds: gebruik ! om te herdefinieer" -#: ../ex_docmd.c:4432 +#, fuzzy msgid "" "\n" -" Name Args Range Complete Definition" +" Name Args Address Complete Definition" msgstr "" "\n" " Naam Args Reeks Klaar Definisie" -#: ../ex_docmd.c:4516 msgid "No user-defined commands found" msgstr "Geen gebruiker-gedefinieerde bevele gevind nie" -#: ../ex_docmd.c:4538 msgid "E175: No attribute specified" msgstr "E175: Geen eienskappe gespesifiseer nie" -#: ../ex_docmd.c:4583 msgid "E176: Invalid number of arguments" msgstr "E176: Ongeldige aantal parameters" -#: ../ex_docmd.c:4594 msgid "E177: Count cannot be specified twice" msgstr "E177: Telling kan nie twee keer gespesifiseer word nie" -#: ../ex_docmd.c:4603 msgid "E178: Invalid default value for count" msgstr "E178: Ongeldige verstekwaarde vir telling" -#: ../ex_docmd.c:4625 #, fuzzy -msgid "E179: argument required for -complete" -msgstr "E179: parameter nodig vir voltooiing" +#~ msgid "E179: argument required for -complete" +#~ msgstr "E179: parameter nodig vir voltooiing" + +#, fuzzy +#~ msgid "E179: argument required for -addr" +#~ msgstr "E179: parameter nodig vir voltooiing" -#: ../ex_docmd.c:4635 #, c-format msgid "E181: Invalid attribute: %s" msgstr "E181: Ongeldige eienskap: %s" -#: ../ex_docmd.c:4678 msgid "E182: Invalid command name" msgstr "E182: Ongeldige bevelnaam" -#: ../ex_docmd.c:4691 msgid "E183: User defined commands must start with an uppercase letter" msgstr "E183: Gebruiker-gedefinieerde bevele moet met 'n hoofletter begin" -#: ../ex_docmd.c:4696 #, fuzzy -msgid "E841: Reserved name, cannot be used for user defined command" -msgstr "E464: Dubbelsinnige gebruik van gebruiker-gedefinieerde bevel" +#~ msgid "E841: Reserved name, cannot be used for user defined command" +#~ msgstr "E464: Dubbelsinnige gebruik van gebruiker-gedefinieerde bevel" -#: ../ex_docmd.c:4751 #, c-format msgid "E184: No such user-defined command: %s" msgstr "E184: Geen gebruiker-gedefinieerde bevel nie: %s" -#: ../ex_docmd.c:5219 +#, fuzzy, c-format +#~ msgid "E180: Invalid address type value: %s" +#~ msgstr "E180: Ongeldige voltooiingswaarde: %s" + #, c-format msgid "E180: Invalid complete value: %s" msgstr "E180: Ongeldige voltooiingswaarde: %s" -#: ../ex_docmd.c:5225 msgid "E468: Completion argument only allowed for custom completion" msgstr "E468: Voltooiingsargument words slegs toegelaat vir eie voltooiing" -#: ../ex_docmd.c:5231 msgid "E467: Custom completion requires a function argument" msgstr "E467: Eie voltooiing benodig 'n funksie parameter" -#: ../ex_docmd.c:5257 #, fuzzy, c-format -msgid "E185: Cannot find color scheme '%s'" -msgstr "E185: Kan nie kleurskema %s vind nie" +#~ msgid "E185: Cannot find color scheme '%s'" +#~ msgstr "E185: Kan nie kleurskema %s vind nie" -#: ../ex_docmd.c:5263 msgid "Greetings, Vim user!" msgstr "Goeiedag, Vim gebruiker!" -#: ../ex_docmd.c:5431 #, fuzzy -msgid "E784: Cannot close last tab page" -msgstr "E444: Kan nie laaste venster toemaak nie" +#~ msgid "E784: Cannot close last tab page" +#~ msgstr "E444: Kan nie laaste venster toemaak nie" -#: ../ex_docmd.c:5462 #, fuzzy -msgid "Already only one tab page" -msgstr "Daar is alreeds slegs een venster" +#~ msgid "Already only one tab page" +#~ msgstr "Daar is alreeds slegs een venster" -#: ../ex_docmd.c:6004 #, fuzzy, c-format -msgid "Tab page %d" -msgstr "Bladsy %d" +#~ msgid "Tab page %d" +#~ msgstr "Bladsy %d" -#: ../ex_docmd.c:6295 msgid "No swap file" msgstr "Geen ruiller" -#: ../ex_docmd.c:6478 -#, fuzzy -msgid "E747: Cannot change directory, buffer is modified (add ! to override)" -msgstr "E509: Kan rugsteunler nie skep nie (gebruik ! om te dwing)" - -#: ../ex_docmd.c:6485 msgid "E186: No previous directory" msgstr "E186: Geen vorige gids nie" -#: ../ex_docmd.c:6530 msgid "E187: Unknown" msgstr "E187: Onbekend" -#: ../ex_docmd.c:6610 msgid "E465: :winsize requires two number arguments" msgstr "E465: ':winsize' benodig twee nommer parameters" -#: ../ex_docmd.c:6655 -msgid "E188: Obtaining window position not implemented for this platform" -msgstr "" -"E188: Verkryging van vensterposisie is nie vir hierdie platform " -"gemplementeer nie" - -#: ../ex_docmd.c:6662 -msgid "E466: :winpos requires two number arguments" -msgstr "E466: :winpos benodig twee parameters" - -#: ../ex_docmd.c:7241 -#, fuzzy, c-format -msgid "E739: Cannot create directory: %s" -msgstr "Kan nie gids uitvoer nie: \"%s\"" - -#: ../ex_docmd.c:7268 #, c-format msgid "E189: \"%s\" exists (add ! to override)" msgstr "E189: \"%s\" bestaan (gebruik ! om te dwing)" -#: ../ex_docmd.c:7273 #, c-format msgid "E190: Cannot open \"%s\" for writing" msgstr "E190: Kan \"%s\" nie oopmaak vir skryf nie" #. set mark -#: ../ex_docmd.c:7294 msgid "E191: Argument must be a letter or forward/backward quote" msgstr "" "E191: Parameter moet 'n letter of 'n terug/vorentoe aanhalingsteken wees" -#: ../ex_docmd.c:7333 msgid "E192: Recursive use of :normal too deep" msgstr "E192: Rekursiewe gebruik van ':normal' te diep" -#: ../ex_docmd.c:7807 msgid "E194: No alternate file name to substitute for '#'" msgstr "E194: Geen alternatiewe lernaam vir '#' nie" -#: ../ex_docmd.c:7841 msgid "E495: no autocommand file name to substitute for \"\"" msgstr "E495: geen outobevel-lernaam om \"\" mee te vervang nie" -#: ../ex_docmd.c:7850 msgid "E496: no autocommand buffer number to substitute for \"\"" msgstr "E496: geen outobevel buffernommer om \"\" mee te vervang nie" -#: ../ex_docmd.c:7861 msgid "E497: no autocommand match name to substitute for \"\"" msgstr "E497: geen outobevel treffernaam om \"\" mee te vervang nie" -#: ../ex_docmd.c:7870 msgid "E498: no :source file name to substitute for \"\"" msgstr "E498: geen ':source' lernaam om \"\" mee te vervang nie" -#: ../ex_docmd.c:7876 #, fuzzy -msgid "E842: no line number to use for \"\"" -msgstr "E498: geen ':source' lernaam om \"\" mee te vervang nie" +#~ msgid "E842: no line number to use for \"\"" +#~ msgstr "E498: geen ':source' lernaam om \"\" mee te vervang nie" -#: ../ex_docmd.c:7903 #, c-format msgid "E499: Empty file name for '%' or '#', only works with \":p:h\"" msgstr "E499: Le lernaam vir '%' of '#', werk slegs met \":p:h\"" -#: ../ex_docmd.c:7905 msgid "E500: Evaluates to an empty string" msgstr "E500: Evalueer na 'n le string" -#: ../ex_docmd.c:8838 -msgid "E195: Cannot open viminfo file for reading" -msgstr "E195: Kan 'viminfo' ler nie oopmaak om te lees nie" - -#: ../ex_eval.c:464 msgid "E608: Cannot :throw exceptions with 'Vim' prefix" msgstr "E608: Kan nie uitsonderings ':throw' met 'Vim' voorvoegsel nie" #. always scroll up, don't overwrite -#: ../ex_eval.c:496 #, c-format msgid "Exception thrown: %s" msgstr "Uitsondering gegooi: %s" -#: ../ex_eval.c:545 +#. always scroll up, don't overwrite #, c-format msgid "Exception finished: %s" msgstr "Uitsondering het klaar gemaak: %s" -#: ../ex_eval.c:546 #, c-format msgid "Exception discarded: %s" msgstr "Uitsondering weg gegooi: %s" -#: ../ex_eval.c:588 ../ex_eval.c:634 #, c-format msgid "%s, line %" msgstr "%s, rel %" #. always scroll up, don't overwrite -#: ../ex_eval.c:608 #, c-format msgid "Exception caught: %s" msgstr "Uitsondering gevang: %s" -#: ../ex_eval.c:676 #, c-format msgid "%s made pending" msgstr "%s is afwagtend gemaak" -#: ../ex_eval.c:679 #, c-format msgid "%s resumed" msgstr "%s teruggekeer" -#: ../ex_eval.c:683 #, c-format msgid "%s discarded" msgstr "%s weg gegooi" -#: ../ex_eval.c:708 msgid "Exception" msgstr "Uitsondering" -#: ../ex_eval.c:713 msgid "Error and interrupt" msgstr "Fout en onderbreking" -#: ../ex_eval.c:715 msgid "Error" msgstr "Fout" #. if (pending & CSTP_INTERRUPT) -#: ../ex_eval.c:717 msgid "Interrupt" msgstr "Onderbreek" -#: ../ex_eval.c:795 msgid "E579: :if nesting too deep" msgstr "E579: geneste ':if' te diep" -#: ../ex_eval.c:830 msgid "E580: :endif without :if" msgstr "E580: ':endif' sonder ':if'" -#: ../ex_eval.c:873 msgid "E581: :else without :if" msgstr "E581: ':else' sonder ':if'" -#: ../ex_eval.c:876 msgid "E582: :elseif without :if" msgstr "E582: ':elseif' sonder ':if'" -#: ../ex_eval.c:880 msgid "E583: multiple :else" msgstr "E583: meer as een ':else'" -#: ../ex_eval.c:883 msgid "E584: :elseif after :else" msgstr "E584: ':elseif' na ':else'" -#: ../ex_eval.c:941 #, fuzzy -msgid "E585: :while/:for nesting too deep" -msgstr "E585: ':while' te diep genes" +#~ msgid "E585: :while/:for nesting too deep" +#~ msgstr "E585: ':while' te diep genes" -#: ../ex_eval.c:1028 #, fuzzy -msgid "E586: :continue without :while or :for" -msgstr "E586: ':continue' sonder ':while'" +#~ msgid "E586: :continue without :while or :for" +#~ msgstr "E586: ':continue' sonder ':while'" -#: ../ex_eval.c:1061 #, fuzzy -msgid "E587: :break without :while or :for" -msgstr "E587: ':break' sonder ':while'" +#~ msgid "E587: :break without :while or :for" +#~ msgstr "E587: ':break' sonder ':while'" -#: ../ex_eval.c:1102 #, fuzzy -msgid "E732: Using :endfor with :while" -msgstr "E170: Ontbrekende ':endwhile'" +#~ msgid "E732: Using :endfor with :while" +#~ msgstr "E170: Ontbrekende ':endwhile'" -#: ../ex_eval.c:1104 #, fuzzy -msgid "E733: Using :endwhile with :for" -msgstr "E170: Ontbrekende ':endwhile'" +#~ msgid "E733: Using :endwhile with :for" +#~ msgstr "E170: Ontbrekende ':endwhile'" -#: ../ex_eval.c:1247 msgid "E601: :try nesting too deep" msgstr "E601: geneste ':try' te diep" -#: ../ex_eval.c:1317 msgid "E603: :catch without :try" msgstr "E603: ':catch' sonder ':try'" #. Give up for a ":catch" after ":finally" and ignore it. #. * Just parse. -#: ../ex_eval.c:1332 msgid "E604: :catch after :finally" msgstr "E604: ':catch' na ':finally'" -#: ../ex_eval.c:1451 msgid "E606: :finally without :try" msgstr "E606: ':finally' sonder ':try'" #. Give up for a multiple ":finally" and ignore it. -#: ../ex_eval.c:1467 msgid "E607: multiple :finally" msgstr "E607: meer as een ':finally'" -#: ../ex_eval.c:1571 msgid "E602: :endtry without :try" msgstr "E602: ':endtry' sonder ':try'" -#: ../ex_eval.c:2026 msgid "E193: :endfunction not inside a function" msgstr "E193: ':endfunction' nie in 'n funksie nie" -#: ../ex_getln.c:1643 #, fuzzy -msgid "E788: Not allowed to edit another buffer now" -msgstr "E48: Nie toegelaat in sandput nie" +#~ msgid "E788: Not allowed to edit another buffer now" +#~ msgstr "E48: Nie toegelaat in sandput nie" -#: ../ex_getln.c:1656 #, fuzzy -msgid "E811: Not allowed to change buffer information now" -msgstr "E94: Geen buffer wat by %s pas nie" +#~ msgid "E811: Not allowed to change buffer information now" +#~ msgstr "E94: Geen buffer wat by %s pas nie" + +#, c-format +#~ msgid "E5408: Unable to get g:Nvim_color_cmdline callback: %s" +#~ msgstr "" + +#, c-format +#~ msgid "E5409: Unable to get g:Nvim_color_expr callback: %s" +#~ msgstr "" + +#, c-format +#~ msgid "E5407: Callback has thrown an exception: %s" +#~ msgstr "" + +#~ msgid "E5400: Callback should return list" +#~ msgstr "" + +#, c-format +#~ msgid "E5401: List item %i is not a List" +#~ msgstr "" + +#, c-format +#~ msgid "E5402: List item %i has incorrect length: %li /= 3" +#~ msgstr "" + +#~ msgid "E5403: Chunk %i start %" +#~ msgstr "" + +#~ msgid "E5405: Chunk %i start %" +#~ msgstr "" + +#~ msgid "E5404: Chunk %i end %" +#~ msgstr "" + +#~ msgid "E5406: Chunk %i end %" +#~ msgstr "" -#: ../ex_getln.c:3178 msgid "tagname" msgstr "etiketnaam" -#: ../ex_getln.c:3181 msgid " kind file\n" msgstr " tipe ler\n" -#: ../ex_getln.c:4799 msgid "'history' option is zero" msgstr "'history' opsie is nul" -#: ../ex_getln.c:5046 -#, c-format -msgid "" -"\n" -"# %s History (newest to oldest):\n" -msgstr "" -"\n" -"# %s Geskiedenis (van nuutste na oudste):\n" - -#: ../ex_getln.c:5047 -msgid "Command Line" -msgstr "Bevelrel" - -#: ../ex_getln.c:5048 -msgid "Search String" -msgstr "Soekstring" - -#: ../ex_getln.c:5049 -msgid "Expression" -msgstr "Uitdrukking" - -#: ../ex_getln.c:5050 -msgid "Input Line" -msgstr "Invoer Lyn" - -#: ../ex_getln.c:5117 msgid "E198: cmd_pchar beyond the command length" msgstr "E198: 'cmd_pchar' verby die einde van opdraglengte" -#: ../ex_getln.c:5279 msgid "E199: Active window or buffer deleted" msgstr "E199: Aktiewe venster of buffer geskrap" -#: ../file_search.c:203 -msgid "E854: path too long for completion" -msgstr "" +#~ msgid "E854: path too long for completion" +#~ msgstr "" -#: ../file_search.c:446 #, c-format msgid "" "E343: Invalid path: '**[number]' must be at the end of the path or be " @@ -2052,267 +1999,208 @@ msgstr "" "E343: Ongeldige pad: '**[nommer]' moet aan die einde van 'n pad wees of " "gevolg wees deur %s'." -#: ../file_search.c:1505 #, c-format msgid "E344: Can't find directory \"%s\" in cdpath" msgstr "E344: Kan nie gids \"%s\" in 'cdpath' vind nie" -#: ../file_search.c:1508 #, c-format msgid "E345: Can't find file \"%s\" in path" msgstr "E345: Kan ler \"%s\" nie vind in pad nie" -#: ../file_search.c:1512 #, c-format msgid "E346: No more directory \"%s\" found in cdpath" msgstr "E346: Geen gids \"%s\" meer gevind in 'cdpath' nie" -#: ../file_search.c:1515 #, c-format msgid "E347: No more file \"%s\" found in path" msgstr "E347: Geen ler \"%s\" meer gevind in pad nie" -#: ../fileio.c:137 #, fuzzy -msgid "E812: Autocommands changed buffer or buffer name" -msgstr "E135: *Filter* Outobevele mag nie die huidige buffer verander nie" +#~ msgid "E812: Autocommands changed buffer or buffer name" +#~ msgstr "E135: *Filter* Outobevele mag nie die huidige buffer verander nie" -#: ../fileio.c:368 msgid "Illegal file name" msgstr "Ongeldige lernaam" -#: ../fileio.c:395 ../fileio.c:476 ../fileio.c:2543 ../fileio.c:2578 msgid "is a directory" msgstr "is 'n gids" -#: ../fileio.c:397 msgid "is not a file" msgstr "is nie 'n ler nie" -#: ../fileio.c:508 ../fileio.c:3522 msgid "[New File]" msgstr "[Nuwe ler]" -#: ../fileio.c:511 -msgid "[New DIRECTORY]" -msgstr "" +#~ msgid "[New DIRECTORY]" +#~ msgstr "" -#: ../fileio.c:529 ../fileio.c:532 -msgid "[File too big]" -msgstr "" +#. libuv only returns -errno in Unix and in Windows open() does not +#. set EOVERFLOW +#~ msgid "[File too big]" +#~ msgstr "" -#: ../fileio.c:534 msgid "[Permission Denied]" msgstr "[Toestemming Geweier]" -#: ../fileio.c:653 msgid "E200: *ReadPre autocommands made the file unreadable" msgstr "E200: '*ReadPre' outobevele het die ler onleesbaar gemaak" -#: ../fileio.c:655 msgid "E201: *ReadPre autocommands must not change current buffer" msgstr "E201: '*ReadPre' outobevele mag nie die huidige buffer verander nie" -#: ../fileio.c:672 -msgid "Nvim: Reading from stdin...\n" -msgstr "Vim: Lees nou vanaf 'stdin'...\n" - #. Re-opening the original file failed! -#: ../fileio.c:909 msgid "E202: Conversion made file unreadable!" msgstr "E202: Omsetting het ler onleesbaar gemaak!" #. fifo or socket -#: ../fileio.c:1782 msgid "[fifo/socket]" msgstr "[fifo/socket]" #. fifo -#: ../fileio.c:1788 msgid "[fifo]" msgstr "[fifo]" #. or socket -#: ../fileio.c:1794 msgid "[socket]" msgstr "[socket]" #. or character special -#: ../fileio.c:1801 #, fuzzy -msgid "[character special]" -msgstr "1 karakter" +#~ msgid "[character special]" +#~ msgstr "1 karakter" -#: ../fileio.c:1815 msgid "[CR missing]" msgstr "[CR ontbreek]" -#: ../fileio.c:1819 msgid "[long lines split]" msgstr "[lang rels verdeel]" -#: ../fileio.c:1823 ../fileio.c:3512 msgid "[NOT converted]" msgstr "[NIE omgesit nie]" -#: ../fileio.c:1826 ../fileio.c:3515 msgid "[converted]" msgstr "[omgesit]" -#: ../fileio.c:1831 #, fuzzy, c-format -msgid "[CONVERSION ERROR in line %]" -msgstr "[ONWETTIGE GREEP in rel %]" +#~ msgid "[CONVERSION ERROR in line %]" +#~ msgstr "[ONWETTIGE GREEP in rel %]" -#: ../fileio.c:1835 #, c-format msgid "[ILLEGAL BYTE in line %]" msgstr "[ONWETTIGE GREEP in rel %]" -#: ../fileio.c:1838 msgid "[READ ERRORS]" msgstr "[LEESFOUTE]" -#: ../fileio.c:2104 msgid "Can't find temp file for conversion" msgstr "Kan nie tydelike ler vir omsetting vind nie" -#: ../fileio.c:2110 msgid "Conversion with 'charconvert' failed" msgstr "Omsetting met 'charconvert' het gefaal" -#: ../fileio.c:2113 msgid "can't read output of 'charconvert'" msgstr "kan afvoer van 'charconvert' nie lees nie" -#: ../fileio.c:2437 #, fuzzy -msgid "E676: No matching autocommands for acwrite buffer" -msgstr "Geen passende outobevele nie" +#~ msgid "E676: No matching autocommands for acwrite buffer" +#~ msgstr "Geen passende outobevele nie" -#: ../fileio.c:2466 msgid "E203: Autocommands deleted or unloaded buffer to be written" msgstr "E203: Outobevele het die skryfbuffer geskrap of uitgelaai" -#: ../fileio.c:2486 msgid "E204: Autocommand changed number of lines in unexpected way" msgstr "E204: Outobevel het etlike rels op onverwagse wyse verander " -#: ../fileio.c:2548 ../fileio.c:2565 msgid "is not a file or writable device" msgstr "is nie 'n ler of 'n skryfbare toestel nie" -#: ../fileio.c:2601 msgid "is read-only (add ! to override)" msgstr "is lees-alleen (gebruik ! om te dwing)" -#: ../fileio.c:2886 msgid "E506: Can't write to backup file (add ! to override)" msgstr "E506: Kan nie na rugsteunler skryf nie (gebruik ! om te dwing)" -#: ../fileio.c:2898 -msgid "E507: Close error for backup file (add ! to override)" -msgstr "E507: Sluitfout vir rugsteunler (gebruik ! om te dwing)" +#, fuzzy, c-format +#~ msgid "E507: Close error for backup file (add ! to override): %s" +#~ msgstr "E507: Sluitfout vir rugsteunler (gebruik ! om te dwing)" -#: ../fileio.c:2901 msgid "E508: Can't read file for backup (add ! to override)" msgstr "E508: Kan rugsteunler nie lees nie (gebruik ! om te dwing)" -#: ../fileio.c:2923 msgid "E509: Cannot create backup file (add ! to override)" msgstr "E509: Kan rugsteunler nie skep nie (gebruik ! om te dwing)" -#: ../fileio.c:3008 msgid "E510: Can't make backup file (add ! to override)" msgstr "E510: Kan rugsteunler nie skep nie (gebruik ! om te dwing)" #. Can't write without a tempfile! -#: ../fileio.c:3121 msgid "E214: Can't find temp file for writing" msgstr "E214: Kan nie tydelike ler vind vir skryf nie" -#: ../fileio.c:3134 msgid "E213: Cannot convert (add ! to write without conversion)" msgstr "E213: Kan nie omsit nie (gebruik ! om te skryf sonder omsetting)" -#: ../fileio.c:3169 msgid "E166: Can't open linked file for writing" msgstr "E166: Kan ler nie oopmaak vir skryf nie" -#: ../fileio.c:3173 -msgid "E212: Can't open file for writing" -msgstr "E212: Kan ler nie oopmaak vir skryf nie" +#, fuzzy, c-format +#~ msgid "E212: Can't open file for writing: %s" +#~ msgstr "E212: Kan ler nie oopmaak vir skryf nie" -#: ../fileio.c:3363 -msgid "E667: Fsync failed" -msgstr "E667: 'Fsync' het gefaal" +#, fuzzy, c-format +#~ msgid "E667: Fsync failed: %s" +#~ msgstr "E667: 'Fsync' het gefaal" -#: ../fileio.c:3398 -msgid "E512: Close failed" -msgstr "E512: Sluiting gefaal" +#, fuzzy, c-format +#~ msgid "E512: Close failed: %s" +#~ msgstr "E512: Sluiting gefaal" -#: ../fileio.c:3436 #, fuzzy -msgid "E513: write error, conversion failed (make 'fenc' empty to override)" -msgstr "E513: skryffout, omsetting gefaal" +#~ msgid "E513: write error, conversion failed (make 'fenc' empty to override)" +#~ msgstr "E513: skryffout, omsetting gefaal" -#: ../fileio.c:3441 -#, c-format -msgid "" -"E513: write error, conversion failed in line % (make 'fenc' empty to " -"override)" -msgstr "" +#, fuzzy +#~ msgid "E513: write error, conversion failed in line %" +#~ msgstr "E513: skryffout, omsetting gefaal" -#: ../fileio.c:3448 msgid "E514: write error (file system full?)" msgstr "E514: skryffout (lerstelsel vol?)" -#: ../fileio.c:3506 msgid " CONVERSION ERROR" msgstr " OMSETTINGSFOUT" -#: ../fileio.c:3509 #, fuzzy, c-format -msgid " in line %;" -msgstr "rel %" +#~ msgid " in line %;" +#~ msgstr "rel %" -#: ../fileio.c:3519 msgid "[Device]" msgstr "[Toestel]" -#: ../fileio.c:3522 msgid "[New]" msgstr "[Nuut]" -#: ../fileio.c:3535 msgid " [a]" msgstr " [a]" -#: ../fileio.c:3535 msgid " appended" msgstr " bygevoeg" -#: ../fileio.c:3537 msgid " [w]" msgstr " [w]" -#: ../fileio.c:3537 msgid " written" msgstr " geskryf" -#: ../fileio.c:3579 msgid "E205: Patchmode: can't save original file" msgstr "E205: patchmode: kan oorspronklike ler nie stoor nie" -#: ../fileio.c:3602 msgid "E206: patchmode: can't touch empty original file" msgstr "E206: patchmode: kan le oorsprongler nie 'touch' nie" -#: ../fileio.c:3616 msgid "E207: Can't delete backup file" msgstr "E207: Kan rugsteunler nie verwyder nie" -#: ../fileio.c:3672 +#. Set highlight for error messages. msgid "" "\n" "WARNING: Original file may be lost or damaged\n" @@ -2320,96 +2208,75 @@ msgstr "" "\n" "WAARSKUWING: Oorspronklike ler mag verlore of beskadig wees\n" -#: ../fileio.c:3675 msgid "don't quit the editor until the file is successfully written!" msgstr "moenie die verwerker verlaat voor die ler suksesvol geskryf is nie!" -#: ../fileio.c:3795 -msgid "[dos]" -msgstr "[dos]" - -#: ../fileio.c:3795 msgid "[dos format]" msgstr "[dos formaat]" -#: ../fileio.c:3801 -msgid "[mac]" -msgstr "[mac]" +msgid "[dos]" +msgstr "[dos]" -#: ../fileio.c:3801 msgid "[mac format]" msgstr "[mac formaat]" -#: ../fileio.c:3807 -msgid "[unix]" -msgstr "[unix]" +msgid "[mac]" +msgstr "[mac]" -#: ../fileio.c:3807 msgid "[unix format]" msgstr "[unix formaat]" -#: ../fileio.c:3831 +msgid "[unix]" +msgstr "[unix]" + msgid "1 line, " msgstr "1 rel, " -#: ../fileio.c:3833 #, c-format msgid "% lines, " msgstr "% rels, " -#: ../fileio.c:3836 msgid "1 character" msgstr "1 karakter" -#: ../fileio.c:3838 #, c-format msgid "% characters" msgstr "% karakters" -#: ../fileio.c:3849 -msgid "[noeol]" -msgstr "[noeol]" - -#: ../fileio.c:3849 msgid "[Incomplete last line]" msgstr "[Onvoltooide laaste rel]" -#. don't overwrite messages here -#. must give this prompt -#. don't use emsg() here, don't want to flush the buffers -#: ../fileio.c:3865 +msgid "[noeol]" +msgstr "[noeol]" + +#. 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 "WAARSKUWING: Die ler het verander sedert dit gelees is!!!" -#: ../fileio.c:3867 msgid "Do you really want to write to it" msgstr "Wil jy regtig soontoe skryf?" -#: ../fileio.c:4648 #, c-format msgid "E208: Error writing to \"%s\"" msgstr "E208: Kan nie skryf na \"%s\"" -#: ../fileio.c:4655 #, c-format msgid "E209: Error closing \"%s\"" msgstr "E209: Kan \"%s\" nie sluit nie" -#: ../fileio.c:4657 #, c-format msgid "E210: Error reading \"%s\"" msgstr "E210: Kan \"%s\" nie lees nie" -#: ../fileio.c:4883 msgid "E246: FileChangedShell autocommand deleted buffer" msgstr "E246: 'FileChangedShell' outobevel het buffer verwyder" -#: ../fileio.c:4894 #, fuzzy, c-format -msgid "E211: File \"%s\" no longer available" -msgstr "E211: Waarskuwing: Ler \"%s\" is nie meer beskikbaar nie" +#~ msgid "E211: File \"%s\" no longer available" +#~ msgstr "E211: Waarskuwing: Ler \"%s\" is nie meer beskikbaar nie" -#: ../fileio.c:4906 #, c-format msgid "" "W12: Warning: File \"%s\" has changed and the buffer was changed in Vim as " @@ -2418,42 +2285,34 @@ msgstr "" "W12: Waarskuwing: Ler \"%s\" het verander sedert bewerking begin het en die " "buffer in Vim het ook verander" -#: ../fileio.c:4907 #, fuzzy -msgid "See \":help W12\" for more info." -msgstr "Sien \":help W11\" vir meer inligting." +#~ msgid "See \":help W12\" for more info." +#~ msgstr "Sien \":help W11\" vir meer inligting." -#: ../fileio.c:4910 #, c-format msgid "W11: Warning: File \"%s\" has changed since editing started" msgstr "W11: Waarskuwing: Ler \"%s\" het verander sedert bewerking begin het" -#: ../fileio.c:4911 msgid "See \":help W11\" for more info." msgstr "Sien \":help W11\" vir meer inligting." -#: ../fileio.c:4914 #, c-format msgid "W16: Warning: Mode of file \"%s\" has changed since editing started" msgstr "" "W16: Waarskuwing: Modus van ler \"%s\" het verander sedert bewerking begin " "het" -#: ../fileio.c:4915 #, fuzzy -msgid "See \":help W16\" for more info." -msgstr "Sien \":help W11\" vir meer inligting." +#~ msgid "See \":help W16\" for more info." +#~ msgstr "Sien \":help W11\" vir meer inligting." -#: ../fileio.c:4927 #, c-format msgid "W13: Warning: File \"%s\" has been created after editing started" msgstr "W13: Waarskuwing: Ler \"%s\" is geskep sedert bewerking begin het" -#: ../fileio.c:4947 msgid "Warning" msgstr "Waarskuwing" -#: ../fileio.c:4948 msgid "" "&OK\n" "&Load File" @@ -2461,48 +2320,46 @@ msgstr "" "&OK\n" "&Laai Ler" -#: ../fileio.c:5065 #, c-format msgid "E462: Could not prepare for reloading \"%s\"" msgstr "E462: Kon nie voorberei vir herlaai nie \"%s\"" -#: ../fileio.c:5078 #, c-format msgid "E321: Could not reload \"%s\"" msgstr "E321: Kon nie \"%s\" herlaai nie" -#: ../fileio.c:5601 msgid "--Deleted--" msgstr "--Geskrap--" -#: ../fileio.c:5732 #, c-format -msgid "auto-removing autocommand: %s " -msgstr "" +#~ msgid "auto-removing autocommand: %s " +#~ msgstr "" #. the group doesn't exist -#: ../fileio.c:5772 #, c-format msgid "E367: No such group: \"%s\"" msgstr "E367: Geen sodanige groep nie: \"%s\"" -#: ../fileio.c:5897 +#, fuzzy +#~ msgid "E936: Cannot delete the current group" +#~ msgstr "E351: Kan nie vou skrap met huidige 'foldmethod' nie" + +#~ msgid "W19: Deleting augroup that is still in use" +#~ msgstr "" + #, c-format msgid "E215: Illegal character after *: %s" msgstr "E215: Ongeldige karakter na *: %s" -#: ../fileio.c:5905 #, c-format msgid "E216: No such event: %s" msgstr "E216: Geen sodanige gebeurtenis nie: %s" -#: ../fileio.c:5907 #, c-format msgid "E216: No such group or event: %s" msgstr "E216: Geen sodanige groep of gebeurtenis nie: %s" #. Highlight title -#: ../fileio.c:6090 msgid "" "\n" "--- Auto-Commands ---" @@ -2510,108 +2367,88 @@ msgstr "" "\n" "--- Outobevele ---" -#: ../fileio.c:6293 #, fuzzy, c-format -msgid "E680: : invalid buffer number " -msgstr "ongeldige buffernommer" +#~ msgid "E680: : invalid buffer number " +#~ msgstr "ongeldige buffernommer" -#: ../fileio.c:6370 msgid "E217: Can't execute autocommands for ALL events" msgstr "E217: Kan nie outobevele uitvoer vir 'ALL' gebeurtenisse nie" -#: ../fileio.c:6393 msgid "No matching autocommands" msgstr "Geen passende outobevele nie" -#: ../fileio.c:6831 msgid "E218: autocommand nesting too deep" msgstr "E218: outobevele te diep genes" -#: ../fileio.c:7143 #, c-format msgid "%s Auto commands for \"%s\"" msgstr "%s outobevele vir \"%s\"" -#: ../fileio.c:7149 #, c-format msgid "Executing %s" msgstr "Voer %s uit" -#: ../fileio.c:7211 #, c-format msgid "autocommand %s" msgstr "outobevel %s" -#: ../fileio.c:7795 msgid "E219: Missing {." msgstr "E219: Ontbrekende {." -#: ../fileio.c:7797 msgid "E220: Missing }." msgstr "E220: Ontbrekende }." -#: ../fold.c:93 msgid "E490: No fold found" msgstr "E490: Geen vou gevind nie" -#: ../fold.c:544 msgid "E350: Cannot create fold with current 'foldmethod'" msgstr "E350: Kan nie vou skep met huidige 'foldmethod' nie" -#: ../fold.c:546 msgid "E351: Cannot delete fold with current 'foldmethod'" msgstr "E351: Kan nie vou skrap met huidige 'foldmethod' nie" -#: ../fold.c:1784 -#, c-format -msgid "+--%3ld lines folded " -msgstr "+--%3ld rels gevou " +#, fuzzy, c-format +#~ msgid "+--%3ld line folded" +#~ msgid_plural "+--%3ld lines folded " +#~ msgstr[0] "+--%3ld rels gevou " +#~ msgstr[1] "+--%3ld rels gevou " #. buffer has already been read -#: ../getchar.c:273 msgid "E222: Add to read buffer" msgstr "E222: Voeg by leesbuffer" -#: ../getchar.c:2040 msgid "E223: recursive mapping" msgstr "E223: rekursiewe binding" -#: ../getchar.c:2849 #, c-format msgid "E224: global abbreviation already exists for %s" msgstr "E224: globale afkorting bestaan alreeds vir %s" -#: ../getchar.c:2852 #, c-format msgid "E225: global mapping already exists for %s" msgstr "E225: globale binding bestaan alreeds vir %s" -#: ../getchar.c:2952 #, c-format msgid "E226: abbreviation already exists for %s" msgstr "E226: afkorting bestaan already vir %s" -#: ../getchar.c:2955 #, c-format msgid "E227: mapping already exists for %s" msgstr "E227: binding bestaan alreeds vir %s" -#: ../getchar.c:3008 msgid "No abbreviation found" msgstr "Geen afkorting gevind nie" -#: ../getchar.c:3010 msgid "No mapping found" msgstr "Geen binding gevind nie" -#: ../getchar.c:3974 msgid "E228: makemap: Illegal mode" msgstr "E228: makemap: Ongeldige modus" -#. key value of 'cedit' option -#. type of cmdline window or 0 -#. result of cmdline window or 0 -#: ../globals.h:924 +#. /< key value of 'cedit' option +#. /< type of cmdline window or 0 +#. /< result of cmdline window or 0 +#. /< cmdline recursion level msgid "--No lines in buffer--" msgstr "--Geen rels in buffer--" @@ -2619,691 +2456,566 @@ msgstr "--Geen re #. * The error messages that can be shared are included here. #. * Excluded are errors that are only used once and debugging messages. #. -#: ../globals.h:996 msgid "E470: Command aborted" msgstr "E470: Bevel gekanselleer" -#: ../globals.h:997 +#, fuzzy +#~ msgid "E905: Cannot set this option after startup" +#~ msgstr "E529: Kan nie 'term' stel na le string nie" + +#, fuzzy +#~ msgid "E903: Could not spawn API job" +#~ msgstr "E623: Kon nie 'cscope' proses skep nie" + msgid "E471: Argument required" msgstr "E471: Parameter benodig" -#: ../globals.h:998 msgid "E10: \\ should be followed by /, ? or &" msgstr "E10: \\ moet gevolg word deur /, ? of &" -#: ../globals.h:1000 msgid "E11: Invalid in command-line window; executes, CTRL-C quits" msgstr "E11: Ongeldig in bevelrel venster: voer uit, CTRL-C stop" -#: ../globals.h:1002 msgid "E12: Command not allowed from exrc/vimrc in current dir or tag search" msgstr "" "E12: Bevel uit exrc/vimrc nie toegelaat in huidige gids- of etiketsoektog nie" -#: ../globals.h:1003 msgid "E171: Missing :endif" msgstr "E171: Ontbrekende ':endif'" -#: ../globals.h:1004 msgid "E600: Missing :endtry" msgstr "E600: Ontbrekende ':endtry'" -#: ../globals.h:1005 msgid "E170: Missing :endwhile" msgstr "E170: Ontbrekende ':endwhile'" -#: ../globals.h:1006 #, fuzzy -msgid "E170: Missing :endfor" -msgstr "E171: Ontbrekende ':endif'" +#~ msgid "E170: Missing :endfor" +#~ msgstr "E171: Ontbrekende ':endif'" -#: ../globals.h:1007 msgid "E588: :endwhile without :while" msgstr "E588: ':endwhile' sonder ':while'" -#: ../globals.h:1008 #, fuzzy -msgid "E588: :endfor without :for" -msgstr "E580: ':endif' sonder ':if'" +#~ msgid "E588: :endfor without :for" +#~ msgstr "E580: ':endif' sonder ':if'" -#: ../globals.h:1009 msgid "E13: File exists (add ! to override)" msgstr "E13: Ler bestaan (gebruik ! om te dwing)" -#: ../globals.h:1010 msgid "E472: Command failed" msgstr "E472: Bevel het gefaal" -#: ../globals.h:1011 msgid "E473: Internal error" msgstr "E473: Interne fout" -#: ../globals.h:1012 msgid "Interrupted" msgstr "Onderbreek" -#: ../globals.h:1013 msgid "E14: Invalid address" msgstr "E14: Ongeldige adres" -#: ../globals.h:1014 msgid "E474: Invalid argument" msgstr "E474: Ongeldige parameter" -#: ../globals.h:1015 #, c-format msgid "E475: Invalid argument: %s" msgstr "E475: Ongeldige parameter: %s" -#: ../globals.h:1016 #, c-format msgid "E15: Invalid expression: %s" msgstr "E15: Ongeldige uitdrukking: %s" -#: ../globals.h:1017 msgid "E16: Invalid range" msgstr "E16: Ongeldige omvang" -#: ../globals.h:1018 msgid "E476: Invalid command" msgstr "E476: Ongeldige bevel" -#: ../globals.h:1019 #, c-format msgid "E17: \"%s\" is a directory" msgstr "E17: \"%s\" is 'n gids" -#: ../globals.h:1020 #, fuzzy -msgid "E900: Invalid job id" -msgstr "E49: Ongeldige rolgrootte" +#~ msgid "E900: Invalid job id" +#~ msgstr "E49: Ongeldige rolgrootte" -#: ../globals.h:1021 -msgid "E901: Job table is full" -msgstr "" +#~ msgid "E901: Job table is full" +#~ msgstr "" + +#, c-format +#~ msgid "E903: Process failed to start: %s: \"%s\"" +#~ msgstr "" + +#~ msgid "E904: Job is not connected to a pty" +#~ msgstr "" -#: ../globals.h:1024 #, c-format msgid "E364: Library call failed for \"%s()\"" msgstr "E364: Biblioteekroep het gefaal vir \"%s\"()" -#: ../globals.h:1026 +#, fuzzy, c-format +#~ msgid "E739: Cannot create directory %s: %s" +#~ msgstr "Kan nie gids uitvoer nie: \"%s\"" + msgid "E19: Mark has invalid line number" msgstr "E19: Merker het ongeldige relnommer" -#: ../globals.h:1027 msgid "E20: Mark not set" msgstr "E20: Merker nie gestel nie" -#: ../globals.h:1029 msgid "E21: Cannot make changes, 'modifiable' is off" msgstr "E21: Kan nie wysig nie, 'modifiable' is af" -#: ../globals.h:1030 msgid "E22: Scripts nested too deep" msgstr "E22: Skripte te diep ge-nes" -#: ../globals.h:1031 msgid "E23: No alternate file" msgstr "E23: Geen alternatiewe ler nie" -#: ../globals.h:1032 msgid "E24: No such abbreviation" msgstr "E24: Afkorting bestaan nie" -#: ../globals.h:1033 msgid "E477: No ! allowed" msgstr "E477: Geen ! toegelaat nie" -#: ../globals.h:1035 msgid "E25: Nvim does not have a built-in GUI" msgstr "E25: GUI kan nie gebruik word nie: Nie tydens kompilering gekies nie" -#: ../globals.h:1036 #, c-format msgid "E28: No such highlight group name: %s" msgstr "E28: Geen sodanige uitliggroepnaam nie: %s" -#: ../globals.h:1037 msgid "E29: No inserted text yet" msgstr "E29: Nog geen ingevoegde teks nie" -#: ../globals.h:1038 msgid "E30: No previous command line" msgstr "E30: Geen vorige bevelrel nie" -#: ../globals.h:1039 msgid "E31: No such mapping" msgstr "E31: Geen so 'n binding nie" -#: ../globals.h:1040 msgid "E479: No match" msgstr "E479: Geen treffer nie" -#: ../globals.h:1041 #, c-format msgid "E480: No match: %s" msgstr "E480: Geen treffer: %s" -#: ../globals.h:1042 msgid "E32: No file name" msgstr "E32: Geen lernaam" -#: ../globals.h:1044 msgid "E33: No previous substitute regular expression" msgstr "E33: Geen vorige vervangingspatroon nie" -#: ../globals.h:1045 msgid "E34: No previous command" msgstr "E34: Geen vorige bevel nie" -#: ../globals.h:1046 msgid "E35: No previous regular expression" msgstr "E35: Geen vorige patroon nie" -#: ../globals.h:1047 msgid "E481: No range allowed" msgstr "E481: Geen omvang toegelaat nie" -#: ../globals.h:1048 msgid "E36: Not enough room" msgstr "E36: Te min plek" -#: ../globals.h:1049 -#, c-format -msgid "E482: Can't create file %s" -msgstr "E482: Kan nie ler %s skep nie" - -#: ../globals.h:1050 msgid "E483: Can't get temp file name" msgstr "E483: Kan nie tydelike lernaam kry nie" -#: ../globals.h:1051 #, c-format msgid "E484: Can't open file %s" msgstr "E484: Kan nie ler %s oopmaak nie" -#: ../globals.h:1052 #, c-format msgid "E485: Can't read file %s" msgstr "E485: Kan nie ler %s lees nie" -#: ../globals.h:1054 msgid "E37: No write since last change (add ! to override)" msgstr "E37: Ongeskryf sedert vorige verandering (gebruik ! om te dwing)" -#: ../globals.h:1055 #, fuzzy -msgid "E37: No write since last change" -msgstr "[Ongestoor sedert vorige verandering]\n" +#~ msgid "E37: No write since last change" +#~ msgstr "[Ongestoor sedert vorige verandering]\n" -#: ../globals.h:1056 msgid "E38: Null argument" msgstr "E38: Nul parameter" -#: ../globals.h:1057 msgid "E39: Number expected" msgstr "E39: Nommer verwag" -#: ../globals.h:1058 #, c-format msgid "E40: Can't open errorfile %s" msgstr "E40: Kan nie foutler %s oopmaak nie" -#: ../globals.h:1059 msgid "E41: Out of memory!" msgstr "E41: Geheue op!" -#: ../globals.h:1060 msgid "Pattern not found" msgstr "Patroon nie gevind nie" -#: ../globals.h:1061 #, c-format msgid "E486: Pattern not found: %s" msgstr "E486: Patroon nie gevind nie: %s" -#: ../globals.h:1062 msgid "E487: Argument must be positive" msgstr "E487: Parameter moet positief wees" -#: ../globals.h:1064 msgid "E459: Cannot go back to previous directory" msgstr "E459: Kan nie terug gaan na die vorige gids nie" -#: ../globals.h:1066 msgid "E42: No Errors" msgstr "E42: Geen Foute" -#: ../globals.h:1067 -msgid "E776: No location list" -msgstr "" +#~ msgid "E776: No location list" +#~ msgstr "" -#: ../globals.h:1068 msgid "E43: Damaged match string" msgstr "E43: Beskadige trefferstring" -#: ../globals.h:1069 msgid "E44: Corrupted regexp program" msgstr "E44: Korrupte patroonprogram" -#: ../globals.h:1071 msgid "E45: 'readonly' option is set (add ! to override)" msgstr "E45: 'readonly' opsie is aan (gebruik ! om te dwing)" -#: ../globals.h:1073 -#, fuzzy, c-format -msgid "E46: Cannot change read-only variable \"%s\"" -msgstr "E46: Kan nie lees-alleen veranderlike stel nie \"%s\"" - -#: ../globals.h:1075 -#, fuzzy, c-format -msgid "E794: Cannot set variable in the sandbox: \"%s\"" -msgstr "E46: Kan nie lees-alleen veranderlike stel nie \"%s\"" - -#: ../globals.h:1076 msgid "E47: Error while reading errorfile" msgstr "E47: Fout tydens lees van 'errorfile'" -#: ../globals.h:1078 msgid "E48: Not allowed in sandbox" msgstr "E48: Nie toegelaat in sandput nie" -#: ../globals.h:1080 msgid "E523: Not allowed here" msgstr "E523: Nie hier toegelaat nie" -#: ../globals.h:1082 msgid "E359: Screen mode setting not supported" msgstr "E359: Skermmodus instelling nie ondersteun nie" -#: ../globals.h:1083 msgid "E49: Invalid scroll size" msgstr "E49: Ongeldige rolgrootte" -#: ../globals.h:1084 msgid "E91: 'shell' option is empty" msgstr "E91: 'shell' (dop) opsie is leeg" -#: ../globals.h:1085 msgid "E255: Couldn't read in sign data!" msgstr "E255: Fout -- kon nie tekendata lees nie!" -#: ../globals.h:1086 msgid "E72: Close error on swap file" msgstr "E72: Sluitfout met ruiller" -#: ../globals.h:1087 msgid "E73: tag stack empty" msgstr "E73: etiketstapel leeg" -#: ../globals.h:1088 msgid "E74: Command too complex" msgstr "E74: Bevel te kompleks" -#: ../globals.h:1089 msgid "E75: Name too long" msgstr "E75: Naam te lank" -#: ../globals.h:1090 msgid "E76: Too many [" msgstr "E76: Te veel [" -#: ../globals.h:1091 msgid "E77: Too many file names" msgstr "E77: Te veel lername" -#: ../globals.h:1092 msgid "E488: Trailing characters" msgstr "E488: Oorbodige karakters" -#: ../globals.h:1093 +#, fuzzy, c-format +#~ msgid "E488: Trailing characters: %s" +#~ msgstr "E488: Oorbodige karakters" + msgid "E78: Unknown mark" msgstr "E78: Onbekende merker" -#: ../globals.h:1094 msgid "E79: Cannot expand wildcards" msgstr "E79: Kan nie plekhouers uitbrei nie" -#: ../globals.h:1096 msgid "E591: 'winheight' cannot be smaller than 'winminheight'" msgstr "E591: 'winheight' kan nie kleiner as 'winminheight' wees nie" -#: ../globals.h:1098 msgid "E592: 'winwidth' cannot be smaller than 'winminwidth'" msgstr "E592: 'winwidth' kan nie kleiner as 'winminwidth' wees nie" -#: ../globals.h:1099 msgid "E80: Error while writing" msgstr "E80: Fout tydens skryfoperasie" -#: ../globals.h:1100 -msgid "Zero count" -msgstr "Nul telling" +#, fuzzy +#~ msgid "E939: Positive count required" +#~ msgstr "E397: Lernaam benodig" -#: ../globals.h:1101 msgid "E81: Using not in a script context" msgstr "E81: Gebruik van '' buite skripkonteks" -#: ../globals.h:1102 #, fuzzy, c-format -msgid "E685: Internal error: %s" -msgstr "E473: Interne fout" +#~ msgid "E685: Internal error: %s" +#~ msgstr "E473: Interne fout" -#: ../globals.h:1104 -msgid "E363: pattern uses more memory than 'maxmempattern'" -msgstr "" +#~ msgid "E363: pattern uses more memory than 'maxmempattern'" +#~ msgstr "" -#: ../globals.h:1105 #, fuzzy -msgid "E749: empty buffer" -msgstr "E279: Nie 'n SNiFF+ buffer nie" +#~ msgid "E749: empty buffer" +#~ msgstr "E279: Nie 'n SNiFF+ buffer nie" + +#, c-format +msgid "E86: Buffer % does not exist" +msgstr "E86: Buffer % bestaan nie" -#: ../globals.h:1108 #, fuzzy -msgid "E682: Invalid search pattern or delimiter" -msgstr "E383: Ongeldige soekstring: %s" +#~ msgid "E682: Invalid search pattern or delimiter" +#~ msgstr "E383: Ongeldige soekstring: %s" -#: ../globals.h:1109 msgid "E139: File is loaded in another buffer" msgstr "E139: Ler is gelaai in ander buffer" -#: ../globals.h:1110 #, fuzzy, c-format -msgid "E764: Option '%s' is not set" -msgstr "E236: Font \"%s\" is nie 'n vaste-wydte font nie" +#~ msgid "E764: Option '%s' is not set" +#~ msgstr "E236: Font \"%s\" is nie 'n vaste-wydte font nie" -#: ../globals.h:1111 #, fuzzy -msgid "E850: Invalid register name" -msgstr "E354: Ongeldige registernaam: '%s'" +#~ msgid "E850: Invalid register name" +#~ msgstr "E354: Ongeldige registernaam: '%s'" + +#, fuzzy, c-format +#~ msgid "E919: Directory not found in '%s': \"%s\"" +#~ msgstr "E161: Inspeksiepunt kon nie gevind word nie: %s" + +msgid "E519: Option not supported" +msgstr "E519: Opsie is nie ondersteun nie" + +#, fuzzy +#~ msgid "E856: Filename too long" +#~ msgstr "E75: Naam te lank" + +#~ msgid "E806: using Float as a String" +#~ msgstr "" -#: ../globals.h:1114 msgid "search hit TOP, continuing at BOTTOM" msgstr "soektog het BO getref, gaan voort van ONDER af" -#: ../globals.h:1115 msgid "search hit BOTTOM, continuing at TOP" msgstr "soektog het ONDER getref, gaan voort van BO af" -#: ../hardcopy.c:240 msgid "E550: Missing colon" msgstr "E550: Ontbrekende dubbelpunt" -#: ../hardcopy.c:252 msgid "E551: Illegal component" msgstr "E551: Ongeldige komponent" -#: ../hardcopy.c:259 msgid "E552: digit expected" msgstr "E552: syfer verwag" -#: ../hardcopy.c:473 #, c-format msgid "Page %d" msgstr "Bladsy %d" -#: ../hardcopy.c:597 msgid "No text to be printed" msgstr "Geen teks om te druk nie" -#: ../hardcopy.c:668 -#, c-format -msgid "Printing page %d (%d%%)" -msgstr "Druk nou bladsy %d (%d%%)" +#, fuzzy, c-format +#~ msgid "Printing page %d (%zu%%)" +#~ msgstr "Druk nou bladsy %d (%d%%)" -#: ../hardcopy.c:680 #, c-format msgid " Copy %d of %d" msgstr " Kopie %d van %d" -#: ../hardcopy.c:733 #, c-format msgid "Printed: %s" msgstr "Gedruk: %s" -#: ../hardcopy.c:740 msgid "Printing aborted" msgstr "Drukkery gestaak" -#: ../hardcopy.c:1365 msgid "E455: Error writing to PostScript output file" msgstr "E455: Kan nie na 'PostScript' afvoerler skryf nie" -#: ../hardcopy.c:1747 #, c-format msgid "E624: Can't open file \"%s\"" msgstr "E624: Kan nie ler \"%s\" oopmaak nie" -#: ../hardcopy.c:1756 ../hardcopy.c:2470 #, c-format msgid "E457: Can't read PostScript resource file \"%s\"" msgstr "E457: Kan nie 'PostScript' hulpbron-ler \"%s\" lees nie" -#: ../hardcopy.c:1772 #, c-format msgid "E618: file \"%s\" is not a PostScript resource file" msgstr "E618: Ler \"%s\" is nie 'n 'PostScript' hulpbron-ler nie" -#: ../hardcopy.c:1788 ../hardcopy.c:1805 ../hardcopy.c:1844 #, c-format msgid "E619: file \"%s\" is not a supported PostScript resource file" msgstr "" "E619: Ler \"%s\" is nie 'n ondersteunde 'PostScript' hulpbron-ler nie" -#: ../hardcopy.c:1856 #, c-format msgid "E621: \"%s\" resource file has wrong version" msgstr "E621: \"%s\" die hulpbron ler het die verkeerde weergawe" -#: ../hardcopy.c:2225 -msgid "E673: Incompatible multi-byte encoding and character set." -msgstr "" +#~ msgid "E673: Incompatible multi-byte encoding and character set." +#~ msgstr "" -#: ../hardcopy.c:2238 -msgid "E674: printmbcharset cannot be empty with multi-byte encoding." -msgstr "" +#~ msgid "E674: printmbcharset cannot be empty with multi-byte encoding." +#~ msgstr "" -#: ../hardcopy.c:2254 -msgid "E675: No default font specified for multi-byte printing." -msgstr "" +#~ msgid "E675: No default font specified for multi-byte printing." +#~ msgstr "" -#: ../hardcopy.c:2426 msgid "E324: Can't open PostScript output file" msgstr "E324: Kan nie 'PostScript' afvoerler oopmaak nie" -#: ../hardcopy.c:2458 #, c-format msgid "E456: Can't open file \"%s\"" msgstr "E456: Kan nie ler %s oopmaak nie" -#: ../hardcopy.c:2583 msgid "E456: Can't find PostScript resource file \"prolog.ps\"" msgstr "E456: Kan nie 'PostScript' hulpbron-ler \"prolog.ps\" lees nie" -#: ../hardcopy.c:2593 #, fuzzy -msgid "E456: Can't find PostScript resource file \"cidfont.ps\"" -msgstr "E456: Kan nie 'PostScript' hulpbron-ler \"%s\" vind nie" +#~ msgid "E456: Can't find PostScript resource file \"cidfont.ps\"" +#~ msgstr "E456: Kan nie 'PostScript' hulpbron-ler \"%s\" vind nie" -#: ../hardcopy.c:2622 ../hardcopy.c:2639 ../hardcopy.c:2665 #, c-format msgid "E456: Can't find PostScript resource file \"%s.ps\"" msgstr "E456: Kan nie 'PostScript' hulpbron-ler \"%s\" vind nie" -#: ../hardcopy.c:2654 #, fuzzy, c-format -msgid "E620: Unable to convert to print encoding \"%s\"" -msgstr "E620: Kon nie van wye-greep na \"%s\" enkodering verander nie" +#~ msgid "E620: Unable to convert to print encoding \"%s\"" +#~ msgstr "E620: Kon nie van wye-greep na \"%s\" enkodering verander nie" -#: ../hardcopy.c:2877 msgid "Sending to printer..." msgstr "Besig om te stuur na drukker..." -#: ../hardcopy.c:2881 msgid "E365: Failed to print PostScript file" msgstr "E365: Kon nie 'PostScript' ler druk nie" -#: ../hardcopy.c:2883 msgid "Print job sent." msgstr "Druktaak gestuur." -#: ../if_cscope.c:85 msgid "Add a new database" msgstr "Voeg 'n nuwe databasis by" -#: ../if_cscope.c:87 msgid "Query for a pattern" msgstr "Soek vir 'n patroon" -#: ../if_cscope.c:89 msgid "Show this message" msgstr "Wys hierdie boodskap" -#: ../if_cscope.c:91 msgid "Kill a connection" msgstr "Sluit 'n verbinding" -#: ../if_cscope.c:93 msgid "Reinit all connections" msgstr "Herstel alle verbindings" -#: ../if_cscope.c:95 msgid "Show connections" msgstr "Wys verbindings" -#: ../if_cscope.c:101 #, c-format msgid "E560: Usage: cs[cope] %s" msgstr "E560: Gebruik: cs[cope] %s" -#: ../if_cscope.c:225 msgid "This cscope command does not support splitting the window.\n" msgstr "" "Hierdie 'cscope' bevel ondersteun nie die splitsing van die venster nie.\n" -#: ../if_cscope.c:266 msgid "E562: Usage: cstag " msgstr "E562: Gebruik: 'cstag '" -#: ../if_cscope.c:313 msgid "E257: cstag: tag not found" msgstr "E257: 'cstag': etiket nie gevind nie" -#: ../if_cscope.c:461 #, c-format msgid "E563: stat(%s) error: %d" msgstr "E563: 'stat(%s)' fout: %d" -#: ../if_cscope.c:551 #, c-format msgid "E564: %s is not a directory or a valid cscope database" msgstr "E564: %s is nie 'n gids of 'n geldige 'cscope' databasis nie" -#: ../if_cscope.c:566 #, c-format msgid "Added cscope database %s" msgstr "'cscope' databasis %s bygevoeg" -#: ../if_cscope.c:616 -#, c-format -msgid "E262: error reading cscope connection %" -msgstr "E262: 'cscope' verbinding % kon nie gelees word nie" +#, fuzzy, c-format +#~ msgid "E262: error reading cscope connection %" +#~ msgstr "E262: 'cscope' verbinding % kon nie gelees word nie" -#: ../if_cscope.c:711 msgid "E561: unknown cscope search type" msgstr "E561: onbekende 'cscope' soektipe" -#: ../if_cscope.c:752 ../if_cscope.c:789 msgid "E566: Could not create cscope pipes" msgstr "E566: Kon nie 'cscope' pype skep nie" -#: ../if_cscope.c:767 msgid "E622: Could not fork for cscope" msgstr "E622: Kon nie vurk vir 'cscope' nie" -#: ../if_cscope.c:849 #, fuzzy -msgid "cs_create_connection setpgid failed" -msgstr "'cs_create_connection' uitvoering het misluk" +#~ msgid "cs_create_connection setpgid failed" +#~ msgstr "'cs_create_connection' uitvoering het misluk" -#: ../if_cscope.c:853 ../if_cscope.c:889 msgid "cs_create_connection exec failed" msgstr "'cs_create_connection' uitvoering het misluk" -#: ../if_cscope.c:863 ../if_cscope.c:902 msgid "cs_create_connection: fdopen for to_fp failed" msgstr "'cs_create_connection': 'fdopen' vir 'to_fp' het misluk" -#: ../if_cscope.c:865 ../if_cscope.c:906 msgid "cs_create_connection: fdopen for fr_fp failed" msgstr "'cs_create_connection': 'fdopen' vir 'fr_fp' het misluk" -#: ../if_cscope.c:890 msgid "E623: Could not spawn cscope process" msgstr "E623: Kon nie 'cscope' proses skep nie" -#: ../if_cscope.c:932 msgid "E567: no cscope connections" msgstr "E567: geen 'cscope' verbindings nie" -#: ../if_cscope.c:1009 #, c-format msgid "E469: invalid cscopequickfix flag %c for %c" msgstr "E469: ongeldige 'cscopequickfix' vlag %c vir %c" -#: ../if_cscope.c:1058 #, c-format msgid "E259: no matches found for cscope query %s of %s" msgstr "E259: geen treffers gevind vir 'cscope' versoek %s van %s nie" -#: ../if_cscope.c:1142 msgid "cscope commands:\n" msgstr "'cscope' bevele:\n" -#: ../if_cscope.c:1150 #, fuzzy, c-format -msgid "%-5s: %s%*s (Usage: %s)" -msgstr "%-5s: %-30s: (Gebruik: %s)" +#~ msgid "%-5s: %s%*s (Usage: %s)" +#~ msgstr "%-5s: %-30s: (Gebruik: %s)" -#: ../if_cscope.c:1155 -msgid "" -"\n" -" c: Find functions calling this function\n" -" d: Find functions called by this function\n" -" e: Find this egrep pattern\n" -" f: Find this file\n" -" g: Find this definition\n" -" i: Find files #including this file\n" -" s: Find this C symbol\n" -" t: Find this text string\n" -msgstr "" +#~ msgid "" +#~ "\n" +#~ " a: Find assignments to this symbol\n" +#~ " c: Find functions calling this function\n" +#~ " d: Find functions called by this function\n" +#~ " e: Find this egrep pattern\n" +#~ " f: Find this file\n" +#~ " g: Find this definition\n" +#~ " i: Find files #including this file\n" +#~ " s: Find this C symbol\n" +#~ " t: Find this text string\n" +#~ msgstr "" -#: ../if_cscope.c:1226 msgid "E568: duplicate cscope database not added" msgstr "E568: duplikaat 'cscope' databasis nie bygevoeg nie" -#: ../if_cscope.c:1335 #, c-format msgid "E261: cscope connection %s not found" msgstr "E261: 'cscope' verbinding %s nie gevind nie" -#: ../if_cscope.c:1364 #, c-format msgid "cscope connection %s closed" msgstr "'cscope' verbinding %s gesluit" #. should not reach here -#: ../if_cscope.c:1486 msgid "E570: fatal error in cs_manage_matches" msgstr "E570: fatale fout in 'cs_manage_matches'" -#: ../if_cscope.c:1693 #, c-format msgid "Cscope tag: %s" msgstr "Cscope etiket: %s" -#: ../if_cscope.c:1711 +#. Column headers for match number, line number and filename. msgid "" "\n" " # line" @@ -3311,329 +3023,314 @@ msgstr "" "\n" " # rel" -#: ../if_cscope.c:1713 msgid "filename / context / line\n" msgstr "lernaam / konteks / rel\n" -#: ../if_cscope.c:1809 #, c-format msgid "E609: Cscope error: %s" msgstr "E609: Cscope fout: %s" -#: ../if_cscope.c:2053 msgid "All cscope databases reset" msgstr "Alle 'cscope' databasisse herstel" -#: ../if_cscope.c:2123 msgid "no cscope connections\n" msgstr "geen 'cscope' verbindings nie\n" -#: ../if_cscope.c:2126 msgid " # pid database name prepend path\n" msgstr " # pid databasis naam gidsvoorvoegsel\n" -#: ../main.c:144 -#, fuzzy -msgid "Unknown option argument" -msgstr "Onbekende opsie" +#, c-format +#~ msgid "E1502: Lua failed to grow stack to %i" +#~ msgstr "" -#: ../main.c:146 -msgid "Too many edit arguments" -msgstr "Te veel redigeer-parameters" +#~ msgid "" +#~ "E5100: Cannot convert given lua table: table should either have a sequence " +#~ "of positive integer keys or contain only string keys" +#~ msgstr "" -#: ../main.c:148 +#~ msgid "E5101: Cannot convert given lua type" +#~ msgstr "" + +#, c-format +#~ msgid "E5102: Lua failed to grow stack to %i" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "E5104: Error while creating lua chunk: %.*s" +#~ msgstr "E47: Fout tydens lees van 'errorfile'" + +#, fuzzy, c-format +#~ msgid "E5105: Error while calling lua chunk: %.*s" +#~ msgstr "E47: Fout tydens lees van 'errorfile'" + +#, fuzzy, c-format +#~ msgid "E5109: Error while creating lua chunk: %.*s" +#~ msgstr "E47: Fout tydens lees van 'errorfile'" + +#, fuzzy, c-format +#~ msgid "E5110: Error while creating lua function: %.*s" +#~ msgstr "E47: Fout tydens lees van 'errorfile'" + +#, fuzzy, c-format +#~ msgid "E5111: Error while calling lua function: %.*s" +#~ msgstr "E47: Fout tydens lees van 'errorfile'" + +#, fuzzy, c-format +#~ msgid "E5112: Error while creating lua chunk: %.*s" +#~ msgstr "E47: Fout tydens lees van 'errorfile'" + +#, fuzzy, c-format +#~ msgid "E5113: Error while calling lua chunk: %.*s" +#~ msgstr "E47: Fout tydens lees van 'errorfile'" + +#, fuzzy, c-format +#~ msgid "E5106: Error while creating vim module: %.*s" +#~ msgstr "E47: Fout tydens lees van 'errorfile'" + +#~ msgid "E970: Failed to initialize lua interpreter" +#~ msgstr "" + +#. stack: vim, error +#, fuzzy, c-format +#~ msgid "E5117: Error while updating package paths: %.*s" +#~ msgstr "E47: Fout tydens lees van 'errorfile'" + +#, fuzzy, c-format +#~ msgid "E5107: Error while creating lua chunk for luaeval(): %.*s" +#~ msgstr "E47: Fout tydens lees van 'errorfile'" + +#, fuzzy, c-format +#~ msgid "E5108: Error while calling lua chunk for luaeval(): %.*s" +#~ msgstr "E47: Fout tydens lees van 'errorfile'" + +#, c-format +#~ msgid "E5114: Error while converting print argument #%i: %.*s" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "E5115: Error while loading debug string: %.*s" +#~ msgstr "E47: Fout tydens lees van 'errorfile'" + +#, fuzzy, c-format +#~ msgid "E5116: Error while calling debug string: %.*s" +#~ msgstr "E47: Fout tydens lees van 'errorfile'" + +msgid "cannot save undo information" +msgstr "kan nie herwin-inligting stoor nie" + +#. Error messages msgid "Argument missing after" msgstr "Parameter ontbreek na" -#: ../main.c:150 #, fuzzy -msgid "Garbage after option argument" -msgstr "Gemors na opsie" +#~ msgid "Garbage after option argument" +#~ msgstr "Gemors na opsie" + +#, fuzzy +#~ msgid "Unknown option argument" +#~ msgstr "Onbekende opsie" + +msgid "Too many edit arguments" +msgstr "Te veel redigeer-parameters" -#: ../main.c:152 msgid "Too many \"+command\", \"-c command\" or \"--cmd command\" arguments" msgstr "Te veel \"+command\", \"-c command\" of \"--cmd command\" parameters" -#: ../main.c:154 -msgid "Invalid argument for" -msgstr "Ongeldige parameter vir" +#, fuzzy, c-format +#~ msgid "E5421: Failed to open stdin: %s" +#~ msgstr "E286: Gefaal om invoermetode oop te maak" -#: ../main.c:294 -#, c-format -msgid "%d files to edit\n" -msgstr "%d lers om te bewerk\n" - -#: ../main.c:1342 msgid "Attempt to open script file again: \"" msgstr "Probeer weer om skripler oop te maak: \"" -#: ../main.c:1350 msgid "Cannot open for reading: \"" msgstr "Kan nie oopmaak om te lees nie: \"" -#: ../main.c:1393 msgid "Cannot open for script output: \"" msgstr "Kan nie oopmaak vir skrip-afvoer nie: \"" -#: ../main.c:1622 msgid "Vim: Warning: Output is not to a terminal\n" msgstr "Vim: Waarskuwing: Afvoer gaan nie na 'n terminaal nie\n" -#: ../main.c:1624 msgid "Vim: Warning: Input is not from a terminal\n" msgstr "Vim: Waarskuwing: Invoer kom nie vanaf 'n terminaal nie\n" #. just in case.. -#: ../main.c:1891 msgid "pre-vimrc command line" msgstr "vr-'vimrc' bevelrel" -#: ../main.c:1964 #, c-format msgid "E282: Cannot read from \"%s\"" msgstr "E282: Kan nie lees uit \"%s\" nie" -#: ../main.c:2149 +#, fuzzy msgid "" "\n" -"More info with: \"vim -h\"\n" +"More info with \"" msgstr "" "\n" "Meer inligting met: \"vim -h\"\n" -#: ../main.c:2178 -msgid "[file ..] edit specified file(s)" -msgstr "[ler ..] bewerk ler(s)" - -#: ../main.c:2179 -msgid "- read text from stdin" -msgstr "- lees teks uit 'stdin'" - -#: ../main.c:2180 -msgid "-t tag edit file where tag is defined" -msgstr "-t tag bewerk ler waar etiket gedefinieer is" - -#: ../main.c:2181 -msgid "-q [errorfile] edit file with first error" -msgstr "-q [foutler] bewerk ler met eerste fout" - -#: ../main.c:2187 -msgid "" -"\n" -"\n" -"usage:" -msgstr "" -"\n" -"\n" -"gebruik:" - -#: ../main.c:2189 -msgid " vim [arguments] " -msgstr " vim [parameters] " - -#: ../main.c:2193 -msgid "" -"\n" -" or:" -msgstr "" -"\n" -" of:" - -#: ../main.c:2196 -msgid "" -"\n" -"\n" -"Arguments:\n" -msgstr "" -"\n" -"\n" -"Parameters:\n" - -#: ../main.c:2197 -msgid "--\t\t\tOnly file names after this" -msgstr "--\t\t\tSlegs lername hierna" - -#: ../main.c:2199 -msgid "--literal\t\tDon't expand wildcards" -msgstr "--literal\t\tMoet nie plekhouers uitbrei nie" - -#: ../main.c:2201 -msgid "-v\t\t\tVi mode (like \"vi\")" -msgstr "-v\t\t\tVi modus (soos \"vi\")" - -#: ../main.c:2202 -msgid "-e\t\t\tEx mode (like \"ex\")" -msgstr "-e\t\t\tEx modus (soos \"ex\")" - -#: ../main.c:2203 -msgid "-E\t\t\tImproved Ex mode" -msgstr "" - -#: ../main.c:2204 -msgid "-s\t\t\tSilent (batch) mode (only for \"ex\")" -msgstr "-s\t\t\tStil (bondel) modus (slegs vir \"ex\")" - -#: ../main.c:2205 -msgid "-d\t\t\tDiff mode (like \"vimdiff\")" -msgstr "-d\t\t\tDiff modus (soos \"vimdiff\")" - -#: ../main.c:2206 -msgid "-y\t\t\tEasy mode (like \"evim\", modeless)" -msgstr "-y\t\t\tEasy modus (soos \"evim\", modusloos)" - -#: ../main.c:2207 -msgid "-R\t\t\tReadonly mode (like \"view\")" -msgstr "-R\t\t\tLeesalleen modus (soos \"view\")" - -#: ../main.c:2208 -msgid "-Z\t\t\tRestricted mode (like \"rvim\")" -msgstr "-Z\t\t\tBeperkte modus (soos \"rvim\")" - -#: ../main.c:2209 -msgid "-m\t\t\tModifications (writing files) not allowed" -msgstr "-m\t\t\tVeranderings (skryf van lers) nie toegelaat nie" - -#: ../main.c:2210 -msgid "-M\t\t\tModifications in text not allowed" -msgstr "-M\t\t\tVeranderings aan teks nie toegelaat nie" - -#: ../main.c:2211 -msgid "-b\t\t\tBinary mode" -msgstr "-b\t\t\tBinre modus" - -#: ../main.c:2212 -msgid "-l\t\t\tLisp mode" -msgstr "-l\t\t\tLisp modus" - -#: ../main.c:2213 -msgid "-C\t\t\tCompatible with Vi: 'compatible'" -msgstr "-C\t\t\tVersoenbaar met Vi: 'compatible'" - -#: ../main.c:2214 -msgid "-N\t\t\tNot fully Vi compatible: 'nocompatible'" -msgstr "-N\t\t\tNie ten volle Vi-versoenbaar nie: 'nocompatible'" - -#: ../main.c:2215 -msgid "-V[N][fname]\t\tBe verbose [level N] [log messages to fname]" -msgstr "" - -#: ../main.c:2216 -msgid "-D\t\t\tDebugging mode" -msgstr "-D\t\t\tOntfoutmodus" - -#: ../main.c:2217 -msgid "-n\t\t\tNo swap file, use memory only" -msgstr "-n\t\t\tGeen ruiller, gebruik slegs geheue" - -#: ../main.c:2218 -msgid "-r\t\t\tList swap files and exit" -msgstr "-r\t\t\tLys ruillers en verlaat vim" - -#: ../main.c:2219 -msgid "-r (with file name)\tRecover crashed session" -msgstr "-r (met ler naam)\tHerwin ineengestorte sessie" - -#: ../main.c:2220 -msgid "-L\t\t\tSame as -r" -msgstr "-L\t\t\tSelfde as -r" - -#: ../main.c:2221 -msgid "-A\t\t\tstart in Arabic mode" -msgstr "-A\t\t\tbegin in Arabiese modus" - -#: ../main.c:2222 -msgid "-H\t\t\tStart in Hebrew mode" -msgstr "-H\t\t\tBegin in Hebreeuse modus" - -#: ../main.c:2223 -msgid "-F\t\t\tStart in Farsi mode" -msgstr "-F\t\t\tBegin in Farsi modus" - -#: ../main.c:2224 -msgid "-T \tSet terminal type to " -msgstr "-T \tStel terminaaltipe na " - -#: ../main.c:2225 -msgid "-u \t\tUse instead of any .vimrc" -msgstr "-u \t\tGebruik in plaas van enige ander .vimrc" - -#: ../main.c:2226 -msgid "--noplugin\t\tDon't load plugin scripts" -msgstr "--noplugin\t\tMoet nie inpropskripte laai nie" - -#: ../main.c:2227 +#. kill us with CTRL-C here, if you like #, fuzzy -msgid "-p[N]\t\tOpen N tab pages (default: one for each file)" +#~ msgid "Usage:\n" +#~ msgstr "" +#~ "\n" +#~ "\n" +#~ "gebruik:" + +#, fuzzy +#~ msgid " nvim [options] [file ...] Edit file(s)\n" +#~ msgstr "[ler ..] bewerk ler(s)" + +#, fuzzy +#~ msgid " nvim [options] - Read text from stdin\n" +#~ msgstr "- lees teks uit 'stdin'" + +#, fuzzy +#~ msgid " nvim [options] -t Edit file where tag is defined\n" +#~ msgstr "-t tag bewerk ler waar etiket gedefinieer is" + +#, fuzzy +#~ msgid " nvim [options] -q [errorfile] Edit file with first error\n" +#~ msgstr "-q [foutler] bewerk ler met eerste fout" + +#, fuzzy +msgid "" +"\n" +"Options:\n" +msgstr "" +"\n" +"--- Opsies ---" + +#, fuzzy +#~ msgid " -- Only file names after this\n" +#~ msgstr "--\t\t\tSlegs lername hierna" + +#, fuzzy +#~ msgid " + Start at end of file\n" +#~ msgstr " vir twee modusse " + +#, fuzzy +#~ msgid " --cmd Execute before any config\n" +#~ msgstr "--cmd \tVoer uit voor enige .vimrc-ler gelaai word" + +#, fuzzy +#~ msgid " +, -c Execute after config and first file\n" +#~ msgstr "-c \t\tVoer uit na eerste ler gelaai is" + +#, fuzzy +#~ msgid " -b Binary mode\n" +#~ msgstr " vir twee modusse " + +#, fuzzy +#~ msgid " -d Diff mode\n" +#~ msgstr " vir twee modusse " + +#~ msgid " -e, -E Ex mode, Improved Ex mode\n" +#~ msgstr "" + +#, fuzzy +#~ msgid " -es Silent (batch) mode\n" +#~ msgstr " vir twee modusse " + +#~ msgid " -h, --help Print this help message\n" +#~ msgstr "" + +#~ msgid " -i Use this shada file\n" +#~ msgstr "" + +#, fuzzy +#~ msgid " -m Modifications (writing files) not allowed\n" +#~ msgstr "-m\t\t\tVeranderings (skryf van lers) nie toegelaat nie" + +#, fuzzy +#~ msgid " -M Modifications in text not allowed\n" +#~ msgstr "-M\t\t\tVeranderings aan teks nie toegelaat nie" + +#, fuzzy +#~ msgid " -n No swap file, use memory only\n" +#~ msgstr "-n\t\t\tGeen ruiller, gebruik slegs geheue" + +#, fuzzy +#~ msgid " -o[N] Open N windows (default: one per file)\n" +#~ msgstr "-o[N]\t\tMaak N vensters oop (verstek: een vir elke ler)" + +#, fuzzy +msgid "" +" -O[N] Open N vertical windows (default: one per file)\n" msgstr "-o[N]\t\tMaak N vensters oop (verstek: een vir elke ler)" -#: ../main.c:2228 -msgid "-o[N]\t\tOpen N windows (default: one for each file)" -msgstr "-o[N]\t\tMaak N vensters oop (verstek: een vir elke ler)" +#, fuzzy +#~ msgid " -p[N] Open N tab pages (default: one per file)\n" +#~ msgstr "-o[N]\t\tMaak N vensters oop (verstek: een vir elke ler)" -#: ../main.c:2229 -msgid "-O[N]\t\tLike -o but split vertically" -msgstr "-O[N]\t\tSoos -o maar verdeel vertikaal" +#~ msgid " -r, -L List swap files\n" +#~ msgstr "" -#: ../main.c:2230 -msgid "+\t\t\tStart at end of file" -msgstr "+\t\t\tBegin by einde van ler" +#~ msgid " -r Recover edit state for this file\n" +#~ msgstr "" -#: ../main.c:2231 -msgid "+\t\tStart at line " -msgstr "+\t\tBegin by rel " +#, fuzzy +#~ msgid " -R Read-only mode\n" +#~ msgstr " vir twee modusse " -#: ../main.c:2232 -msgid "--cmd \tExecute before loading any vimrc file" -msgstr "--cmd \tVoer uit voor enige .vimrc-ler gelaai word" +#, fuzzy +#~ msgid " -S Source after loading the first file\n" +#~ msgstr "" +#~ "-S \t\tVoer bevele in ler uit na eerste ler gelaai is" -#: ../main.c:2233 -msgid "-c \t\tExecute after loading the first file" -msgstr "-c \t\tVoer uit na eerste ler gelaai is" +#, fuzzy +#~ msgid " -s Read Normal mode commands from \n" +#~ msgstr "-s \t\tLees Normale-modus bevele van ler " -#: ../main.c:2235 -msgid "-S \t\tSource file after loading the first file" -msgstr "" -"-S \t\tVoer bevele in ler uit na eerste ler gelaai is" +#~ msgid " -u Use this config file\n" +#~ msgstr "" -#: ../main.c:2236 -msgid "-s \tRead Normal mode commands from file " -msgstr "-s \t\tLees Normale-modus bevele van ler " +#, fuzzy +#~ msgid " -v, --version Print version information\n" +#~ msgstr "--version\t\tSkryf weergawe-inligting en sluit" -#: ../main.c:2237 -msgid "-w \tAppend all typed commands to file " -msgstr "-w \tLas alle getikte bevele aan by ler " +#~ msgid " -V[N][file] Verbose [level][file]\n" +#~ msgstr "" -#: ../main.c:2238 -msgid "-W \tWrite all typed commands to file " -msgstr "-W \tSkryf alle getikte bevele na ler " +#, fuzzy +#~ msgid " -Z Restricted mode\n" +#~ msgstr " vir twee modusse " -#: ../main.c:2240 -msgid "--startuptime \tWrite startup timing messages to " -msgstr "" +#~ msgid " --api-info Write msgpack-encoded API metadata to stdout\n" +#~ msgstr "" -#: ../main.c:2242 -msgid "-i \t\tUse instead of .viminfo" -msgstr "-i \t\tGebruik in plaas van .viminfo" +#~ msgid " --embed Use stdin/stdout as a msgpack-rpc channel\n" +#~ msgstr "" -#: ../main.c:2243 -msgid "-h or --help\tPrint Help (this message) and exit" -msgstr "-h of --help\tSkryf Hulp (hierdie boodskap) en sluit" +#~ msgid " --headless Don't start a user interface\n" +#~ msgstr "" -#: ../main.c:2244 -msgid "--version\t\tPrint version information and exit" -msgstr "--version\t\tSkryf weergawe-inligting en sluit" +#, fuzzy +#~ msgid " --literal Don't expand wildcards\n" +#~ msgstr "--literal\t\tMoet nie plekhouers uitbrei nie" + +#, fuzzy +#~ msgid " --noplugin Don't load plugins\n" +#~ msgstr "--noplugin\t\tMoet nie inpropskripte laai nie" + +#~ msgid " --startuptime Write startup timing messages to \n" +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ "See \":help startup-options\" for all options.\n" +#~ msgstr "" -#: ../mark.c:676 msgid "No marks set" msgstr "Geen merkers gestel nie" -#: ../mark.c:678 #, c-format msgid "E283: No marks matching \"%s\"" msgstr "E283: Geen merkers pas op \"%s\" nie" #. Highlight title -#: ../mark.c:687 msgid "" "\n" "mark line col file/text" @@ -3642,7 +3339,6 @@ msgstr "" "merk rel kol ler/teks" #. Highlight title -#: ../mark.c:789 msgid "" "\n" " jump line col file/text" @@ -3651,7 +3347,6 @@ msgstr "" " spring rel kol ler/teks" #. Highlight title -#: ../mark.c:831 msgid "" "\n" "change line col text" @@ -3659,110 +3354,63 @@ msgstr "" "\n" "verander rel kol teks" -#: ../mark.c:1238 -msgid "" -"\n" -"# File marks:\n" -msgstr "" -"\n" -"# Lermerkers:\n" - -#. Write the jumplist with -' -#: ../mark.c:1271 -msgid "" -"\n" -"# Jumplist (newest first):\n" -msgstr "" -"\n" -"# Springlys (nuutste eerste):\n" - -#: ../mark.c:1352 -msgid "" -"\n" -"# History of marks within files (newest to oldest):\n" -msgstr "" -"\n" -"# Geskiedenis van merkers in lers (nuutste tot oudste):\n" - -#: ../mark.c:1431 -msgid "Missing '>'" -msgstr "Ontbrekende '>'" - -#: ../memfile.c:426 msgid "E293: block was not locked" msgstr "E293: blok was nie gesluit nie" -#: ../memfile.c:799 msgid "E294: Seek error in swap file read" msgstr "E294: Soekfout in lees van ruiller" -#: ../memfile.c:803 msgid "E295: Read error in swap file" msgstr "E295: Leesfout in ruiller" -#: ../memfile.c:849 msgid "E296: Seek error in swap file write" msgstr "E296: Soekfout in skryf van ruiller" -#: ../memfile.c:865 msgid "E297: Write error in swap file" msgstr "E297: Skryffout in ruiller" -#: ../memfile.c:1036 msgid "E300: Swap file already exists (symlink attack?)" msgstr "E300: Ruiller bestaan alreeds! ('symlink' probleem?)" -#: ../memline.c:318 msgid "E298: Didn't get block nr 0?" msgstr "E298: Het nie blok no 0 gekry nie?" -#: ../memline.c:361 msgid "E298: Didn't get block nr 1?" msgstr "E298: Het nie blok no 1 gekry nie?" -#: ../memline.c:377 msgid "E298: Didn't get block nr 2?" msgstr "E298: Het nie blok no 2 gekry nie?" #. could not (re)open the swap file, what can we do???? -#: ../memline.c:465 msgid "E301: Oops, lost the swap file!!!" msgstr "E301: Hiert, die ruiller is weg!!!" -#: ../memline.c:477 msgid "E302: Could not rename swap file" msgstr "E302: Kon nie ruiller vernoem nie" -#: ../memline.c:554 #, c-format msgid "E303: Unable to open swap file for \"%s\", recovery impossible" msgstr "E303: Kon nie ruiller oopmaak vir \"%s\" nie, herwinning onmoontlik" -#: ../memline.c:666 #, fuzzy -msgid "E304: ml_upd_block0(): Didn't get block 0??" -msgstr "E304: 'ml_timestamp': Het nie blok 0 gekry nie??" +#~ msgid "E304: ml_upd_block0(): Didn't get block 0??" +#~ msgstr "E304: 'ml_timestamp': Het nie blok 0 gekry nie??" #. no swap files found -#: ../memline.c:830 #, c-format msgid "E305: No swap file found for %s" msgstr "E305: Geen ruiller gevind vir %s nie" -#: ../memline.c:839 msgid "Enter number of swap file to use (0 to quit): " msgstr "Tik die nommer van die ruiller om te gebruik (0 om te stop)" -#: ../memline.c:879 #, c-format msgid "E306: Cannot open %s" msgstr "E306: Kan %s nie oopmaak nie" -#: ../memline.c:897 msgid "Unable to read block 0 from " msgstr "Kan nie blok 0 lees vanaf " -#: ../memline.c:900 msgid "" "\n" "Maybe no changes were made or Vim did not update the swap file." @@ -3770,28 +3418,22 @@ msgstr "" "\n" "Vim het die ruiller nie opgedateer nie. Dalk was niks verander nie." -#: ../memline.c:909 msgid " cannot be used with this version of Vim.\n" msgstr " kan nie gebruik word met hierdie weergawe van Vim nie.\n" -#: ../memline.c:911 msgid "Use Vim version 3.0.\n" msgstr "Gebruik Vim weergawe 3.0.\n" -#: ../memline.c:916 #, c-format msgid "E307: %s does not look like a Vim swap file" msgstr "E307: %s lyk nie soos 'n Vim ruiller nie" -#: ../memline.c:922 msgid " cannot be used on this computer.\n" msgstr " kan nie gebruik word op hierdie rekenaar nie.\n" -#: ../memline.c:924 msgid "The file was created on " msgstr "Die ler is geskep op " -#: ../memline.c:928 msgid "" ",\n" "or the file has been damaged." @@ -3799,85 +3441,66 @@ msgstr "" ",\n" "of die ler is beskadig." -#: ../memline.c:945 -msgid " has been damaged (page size is smaller than minimum value).\n" -msgstr "" +#~ msgid " has been damaged (page size is smaller than minimum value).\n" +#~ msgstr "" -#: ../memline.c:974 #, c-format msgid "Using swap file \"%s\"" msgstr "Gebruik ruiller \"%s\"" -#: ../memline.c:980 #, c-format msgid "Original file \"%s\"" msgstr "Oorspronklike ler \"%s\"" -#: ../memline.c:995 msgid "E308: Warning: Original file may have been changed" msgstr "E308: Waarskuwing: Oorspronklike ler is dalk gewysig" -#: ../memline.c:1061 #, c-format msgid "E309: Unable to read block 1 from %s" msgstr "E309: Kan nie block 1 lees van %s" -#: ../memline.c:1065 msgid "???MANY LINES MISSING" msgstr "???BAIE RELS WEG" -#: ../memline.c:1076 msgid "???LINE COUNT WRONG" msgstr "???RELTELLING FOUTIEF" -#: ../memline.c:1082 msgid "???EMPTY BLOCK" msgstr "???LE BLOK" -#: ../memline.c:1103 msgid "???LINES MISSING" msgstr "???RELS WEG" -#: ../memline.c:1128 #, c-format msgid "E310: Block 1 ID wrong (%s not a .swp file?)" msgstr "E310: Blok 1 se ID is foutief (%s nie 'n .swp ler nie?)" -#: ../memline.c:1133 msgid "???BLOCK MISSING" msgstr "???BLOK WEG" -#: ../memline.c:1147 msgid "??? from here until ???END lines may be messed up" msgstr "??? van hier tot ???END mag rels deurmekaar wees" -#: ../memline.c:1164 msgid "??? from here until ???END lines may have been inserted/deleted" msgstr "??? van hier tot ???END mag daar rels ingevoeg/geskrap wees" -#: ../memline.c:1181 msgid "???END" msgstr "???END" -#: ../memline.c:1238 msgid "E311: Recovery Interrupted" msgstr "E311: Herwinning onderbreek" -#: ../memline.c:1243 msgid "" "E312: Errors detected while recovering; look for lines starting with ???" msgstr "" "E312: Foute raakgesien gedurende herwinning; soek vir rels wat begin met ???" -#: ../memline.c:1245 msgid "See \":help E312\" for more information." msgstr "Sien \":help E312\" vir meer inligting." -#: ../memline.c:1249 msgid "Recovery completed. You should check if everything is OK." msgstr "Herwinning is klaar. Kyk of alles reg is." -#: ../memline.c:1251 msgid "" "\n" "(You might want to write out this file under another name\n" @@ -3885,16 +3508,13 @@ msgstr "" "\n" "(Jy wil dalk die ler stoor onder 'n ander naam\n" -#: ../memline.c:1252 #, fuzzy -msgid "and run diff with the original file to check for changes)" -msgstr "en dit \"diff\" teen die oorspronklike ler om wysigings te soek)\n" +#~ msgid "and run diff with the original file to check for changes)" +#~ msgstr "en dit \"diff\" teen die oorspronklike ler om wysigings te soek)\n" -#: ../memline.c:1254 -msgid "Recovery completed. Buffer contents equals file contents." -msgstr "" +#~ msgid "Recovery completed. Buffer contents equals file contents." +#~ msgstr "" -#: ../memline.c:1255 #, fuzzy msgid "" "\n" @@ -3905,51 +3525,42 @@ msgstr "" "\n" #. use msg() to start the scrolling properly -#: ../memline.c:1327 msgid "Swap files found:" msgstr "Ruillers gevind:" -#: ../memline.c:1446 msgid " In current directory:\n" msgstr " In huidige gids:\n" -#: ../memline.c:1448 msgid " Using specified name:\n" msgstr " Wat gespesifiseerde naam gebruik:\n" -#: ../memline.c:1450 msgid " In directory " msgstr " In gids " -#: ../memline.c:1465 msgid " -- none --\n" msgstr " -- geen --\n" -#: ../memline.c:1527 msgid " owned by: " msgstr " eienaar: " -#: ../memline.c:1529 msgid " dated: " msgstr " gedateer: " -#: ../memline.c:1532 ../memline.c:3231 msgid " dated: " msgstr " gedateer: " -#: ../memline.c:1548 msgid " [from Vim version 3.0]" msgstr " [van Vim weergawe 3.0]" -#: ../memline.c:1550 msgid " [does not look like a Vim swap file]" msgstr " [lyk nie soos 'n Vim ruiller nie]" -#: ../memline.c:1552 +#~ msgid " [garbled strings (not nul terminated)]" +#~ msgstr "" + msgid " file name: " msgstr " lernaam: " -#: ../memline.c:1558 msgid "" "\n" " modified: " @@ -3957,15 +3568,12 @@ msgstr "" "\n" " gewysig: " -#: ../memline.c:1559 msgid "YES" msgstr "JA" -#: ../memline.c:1559 msgid "no" msgstr "nee" -#: ../memline.c:1562 msgid "" "\n" " user name: " @@ -3973,11 +3581,9 @@ msgstr "" "\n" " gebruikersnaam: " -#: ../memline.c:1568 msgid " host name: " msgstr " gasheernaam: " -#: ../memline.c:1570 msgid "" "\n" " host name: " @@ -3985,7 +3591,6 @@ msgstr "" "\n" " gasheernaam: " -#: ../memline.c:1575 msgid "" "\n" " process ID: " @@ -3993,11 +3598,9 @@ msgstr "" "\n" " proses ID: " -#: ../memline.c:1579 msgid " (still running)" msgstr " (nog steeds aan die uitvoer)" -#: ../memline.c:1586 msgid "" "\n" " [not usable on this computer]" @@ -4005,97 +3608,75 @@ msgstr "" "\n" " [nie bruikbaar op hierdie rekenaar nie]" -#: ../memline.c:1590 msgid " [cannot be read]" msgstr " [kan nie gelees word nie]" -#: ../memline.c:1593 msgid " [cannot be opened]" msgstr " [kan nie oopgemaak word nie]" -#: ../memline.c:1698 msgid "E313: Cannot preserve, there is no swap file" msgstr "E313: Kan nie bewaar nie, daar is geen ruiller nie" -#: ../memline.c:1747 msgid "File preserved" msgstr "Ler bewaar" -#: ../memline.c:1749 msgid "E314: Preserve failed" msgstr "E314: Kon nie bewaar nie" -#: ../memline.c:1819 #, c-format msgid "E315: ml_get: invalid lnum: %" msgstr "E315: 'ml_get': ongeldige 'lnum': %" -#: ../memline.c:1851 #, c-format msgid "E316: ml_get: cannot find line %" msgstr "E316: 'ml_get': kan rel % nie vind nie" -#: ../memline.c:2236 msgid "E317: pointer block id wrong 3" msgstr "E317: wyser blok id verkeerd 3" -#: ../memline.c:2311 msgid "stack_idx should be 0" msgstr "'stack_idx' moet 0 wees" -#: ../memline.c:2369 msgid "E318: Updated too many blocks?" msgstr "E318: Te veel blokke opgedateer?" -#: ../memline.c:2511 msgid "E317: pointer block id wrong 4" msgstr "E317: wyser blok id verkeerd 4" -#: ../memline.c:2536 msgid "deleted block 1?" msgstr "verwyder blok 1?" -#: ../memline.c:2707 #, c-format msgid "E320: Cannot find line %" msgstr "E320: Kan nie rel % vind nie" -#: ../memline.c:2916 msgid "E317: pointer block id wrong" msgstr "E317: wyser blok id verkeerd" -#: ../memline.c:2930 msgid "pe_line_count is zero" msgstr "'pe_line_count' is nul" -#: ../memline.c:2955 #, c-format msgid "E322: line number out of range: % past the end" msgstr "E322: relnommer buite perke: % verby die einde" -#: ../memline.c:2959 #, c-format msgid "E323: line count wrong in block %" msgstr "E323: reltelling mag verkeerd wees in blok %" -#: ../memline.c:2999 msgid "Stack size increases" msgstr "Stapel grootte verhoog" -#: ../memline.c:3038 msgid "E317: pointer block id wrong 2" msgstr "E317: wyser blok id verkeerd 2" -#: ../memline.c:3070 #, c-format -msgid "E773: Symlink loop for \"%s\"" -msgstr "" +#~ msgid "E773: Symlink loop for \"%s\"" +#~ msgstr "" -#: ../memline.c:3221 msgid "E325: ATTENTION" msgstr "E325: LET OP" -#: ../memline.c:3222 msgid "" "\n" "Found a swap file by the name \"" @@ -4103,44 +3684,35 @@ msgstr "" "\n" "Het 'n ruiller gevind met die naam \"" -#: ../memline.c:3226 msgid "While opening file \"" msgstr "Tydens oopmaak van ler \"" -#: ../memline.c:3239 msgid " NEWER than swap file!\n" msgstr " NUWER as die ruiller!\n" -#: ../memline.c:3244 +#. Some of these messages are long to allow translation to +#. * other languages. #, fuzzy msgid "" "\n" "(1) Another program may be editing the same file. If this is the case,\n" " be careful not to end up with two different instances of the same\n" -" file when making changes." +" file when making changes. Quit, or continue with caution.\n" msgstr "" "\n" "(1) 'n Ander program mag besig wees met hierdie ler.\n" " Indien wel, pas op om nie met twee verskillende weergawes\n" " van dieselfde ler te sit wanneer veranderinge gemaak word nie.\n" -#: ../memline.c:3245 #, fuzzy -msgid " Quit, or continue with caution.\n" -msgstr " Stop, of gaan versigtig voort.\n" +#~ msgid "(2) An edit session for this file crashed.\n" +#~ msgstr "" +#~ "\n" +#~ "(2) 'n Bewerkingsessie van hierdie ler het ineengestort.\n" -#: ../memline.c:3246 -#, fuzzy -msgid "(2) An edit session for this file crashed.\n" -msgstr "" -"\n" -"(2) 'n Bewerkingsessie van hierdie ler het ineengestort.\n" - -#: ../memline.c:3247 msgid " If this is the case, use \":recover\" or \"vim -r " msgstr " Indien wel, gebruik \":recover\" of \"vim -r" -#: ../memline.c:3249 msgid "" "\"\n" " to recover the changes (see \":help recovery\").\n" @@ -4148,11 +3720,9 @@ msgstr "" "\"\n" " om die veranderinge te herwin (sien \":help recovery\").\n" -#: ../memline.c:3250 msgid " If you did this already, delete the swap file \"" msgstr " Indien jy dit alreeds gedoen het, verwyder die ruiller \"" -#: ../memline.c:3252 msgid "" "\"\n" " to avoid this message.\n" @@ -4160,23 +3730,15 @@ msgstr "" "\"\n" " om hierdie boodskap te vermy.\n" -#: ../memline.c:3450 ../memline.c:3452 msgid "Swap file \"" msgstr "Ruiller \"" -#: ../memline.c:3451 ../memline.c:3455 msgid "\" already exists!" msgstr "\" bestaan alreeds!" -#: ../memline.c:3457 msgid "VIM - ATTENTION" msgstr "VIM - LET OP" -#: ../memline.c:3459 -msgid "Swap file already exists!" -msgstr "Ruiller bestaan alreeds!" - -#: ../memline.c:3464 msgid "" "&Open Read-Only\n" "&Edit anyway\n" @@ -4190,7 +3752,6 @@ msgstr "" "&Verlaat\n" "&Stop" -#: ../memline.c:3467 #, fuzzy msgid "" "&Open Read-Only\n" @@ -4214,48 +3775,47 @@ msgstr "" #. #. ".s?a" #. ".saa": tried enough, give up -#: ../memline.c:3528 msgid "E326: Too many swap files found" msgstr "E326: Te veel ruillers gevind" -#: ../memory.c:227 +#, fuzzy, c-format +msgid "" +"E303: Unable to create directory \"%s\" for swap file, recovery impossible: " +"%s" +msgstr "E303: Kon nie ruiller oopmaak vir \"%s\" nie, herwinning onmoontlik" + +#~ msgid "Vim: Data too large to fit into virtual memory space\n" +#~ msgstr "" + #, c-format msgid "E342: Out of memory! (allocating % bytes)" msgstr "E342: Geheue is op! (ken % grepe toe)" -#: ../menu.c:62 msgid "E327: Part of menu-item path is not sub-menu" msgstr "E327: Deel van kieslys-item pad is nie 'n sub-kieslys nie" -#: ../menu.c:63 msgid "E328: Menu only exists in another mode" msgstr "E328: Kieslys bestaan slegs in 'n ander modus" -#: ../menu.c:64 #, fuzzy, c-format -msgid "E329: No menu \"%s\"" -msgstr "E329: Geen kieslys met daardie naam nie" +#~ msgid "E329: No menu \"%s\"" +#~ msgstr "E329: Geen kieslys met daardie naam nie" #. Only a mnemonic or accelerator is not valid. -#: ../menu.c:329 -msgid "E792: Empty menu name" -msgstr "" +#~ msgid "E792: Empty menu name" +#~ msgstr "" -#: ../menu.c:340 msgid "E330: Menu path must not lead to a sub-menu" msgstr "E330: Kieslyspad moenie lei na 'n sub-kieslys nie" -#: ../menu.c:365 msgid "E331: Must not add menu items directly to menu bar" msgstr "E331: Moenie kieslysitems direk by kieslysstaaf voeg nie" -#: ../menu.c:370 msgid "E332: Separator cannot be part of a menu path" msgstr "E332: Verdeler kan nie deel wees van kieslyspad nie" #. Now we have found the matching menu, and we list the mappings #. Highlight title -#: ../menu.c:762 msgid "" "\n" "--- Menus ---" @@ -4263,70 +3823,49 @@ msgstr "" "\n" "--- Kieslyste ---" -#: ../menu.c:1313 msgid "E333: Menu path must lead to a menu item" msgstr "E333: Kieslyspad moet lei na 'n kieslysitem" -#: ../menu.c:1330 #, c-format msgid "E334: Menu not found: %s" msgstr "E334: Kieslys nie gevind nie: %s" -#: ../menu.c:1396 #, c-format msgid "E335: Menu not defined for %s mode" msgstr "E335: Kieslys nie gedefinieer vir %s modus nie" -#: ../menu.c:1426 -msgid "E336: Menu path must lead to a sub-menu" -msgstr "E336: Kieslyspad moet lei na 'n sub-kieslys" - -#: ../menu.c:1447 -msgid "E337: Menu not found - check menu names" -msgstr "E337: Kieslys nie gevind nie - maak seker oor die kieslys name" - -#: ../message.c:423 #, c-format msgid "Error detected while processing %s:" msgstr "Fout ontdek tydens verwerking van %s: " -#: ../message.c:445 #, c-format msgid "line %4ld:" msgstr "rel %4ld:" -#: ../message.c:617 #, c-format msgid "E354: Invalid register name: '%s'" msgstr "E354: Ongeldige registernaam: '%s'" -#: ../message.c:986 msgid "Interrupt: " msgstr "Onderbreek: " -#: ../message.c:988 #, fuzzy -msgid "Press ENTER or type command to continue" -msgstr "Druk ENTER of tik 'n bevel om voort te gaan" +#~ msgid "Press ENTER or type command to continue" +#~ msgstr "Druk ENTER of tik 'n bevel om voort te gaan" -#: ../message.c:1843 #, fuzzy, c-format -msgid "%s line %" -msgstr "%s, rel %" +#~ msgid "%s line %" +#~ msgstr "%s, rel %" -#: ../message.c:2392 msgid "-- More --" msgstr "-- Meer --" -#: ../message.c:2398 -msgid " SPACE/d/j: screen/page/line down, b/u/k: up, q: quit " -msgstr "" +#~ msgid " SPACE/d/j: screen/page/line down, b/u/k: up, q: quit " +#~ msgstr "" -#: ../message.c:3021 ../message.c:3031 msgid "Question" msgstr "Vraag" -#: ../message.c:3023 msgid "" "&Yes\n" "&No" @@ -4334,7 +3873,6 @@ msgstr "" "&Ja\n" "&Nee" -#: ../message.c:3033 msgid "" "&Yes\n" "&No\n" @@ -4344,7 +3882,6 @@ msgstr "" "&Nee\n" "&Kanselleer" -#: ../message.c:3045 msgid "" "&Yes\n" "&No\n" @@ -4358,180 +3895,131 @@ msgstr "" "&Gooi alles weg\n" "&Kanselleer" -#: ../message.c:3058 -#, fuzzy -msgid "E766: Insufficient arguments for printf()" -msgstr "E116: Ongeldige parameters vir funksie %s" - -#: ../message.c:3119 -msgid "E807: Expected Float argument for printf()" -msgstr "" - -#: ../message.c:3873 -#, fuzzy -msgid "E767: Too many arguments to printf()" -msgstr "E118: Te veel parameters vir funksie: %s" - -#: ../misc1.c:2256 msgid "W10: Warning: Changing a readonly file" msgstr "W10: Waarskuwing: Jy wysig aan 'n leesalleen ler" -#: ../misc1.c:2537 -msgid "Type number and or click with mouse (empty cancels): " -msgstr "" +#~ msgid "Type number and or click with mouse (empty cancels): " +#~ msgstr "" -#: ../misc1.c:2539 -msgid "Type number and (empty cancels): " -msgstr "" +#~ msgid "Type number and (empty cancels): " +#~ msgstr "" -#: ../misc1.c:2585 msgid "1 more line" msgstr "1 rel meer" -#: ../misc1.c:2588 msgid "1 line less" msgstr "1 rel minder" -#: ../misc1.c:2593 #, c-format msgid "% more lines" msgstr "% meer rels" -#: ../misc1.c:2596 #, c-format msgid "% fewer lines" msgstr "% minder rels" -#: ../misc1.c:2599 msgid " (Interrupted)" msgstr " (Onderbreek)" -#: ../misc1.c:2635 -msgid "Beep!" -msgstr "" +#~ msgid "Beep!" +#~ msgstr "" -#: ../misc2.c:738 #, c-format msgid "Calling shell to execute: \"%s\"" msgstr "Roep dop om uit te voer: \"%s\"" -#: ../normal.c:183 +#. +#. * nv_*(): functions called to handle Normal and Visual mode commands. +#. * n_*(): functions called to handle Normal mode commands. +#. * v_*(): functions called to handle Visual mode commands. +#. msgid "E349: No identifier under cursor" msgstr "E349: Geen identifiseerder onder loper nie" -#: ../normal.c:1866 #, fuzzy -msgid "E774: 'operatorfunc' is empty" -msgstr "E221: 'commentstring' opsie is leeg" +#~ msgid "E774: 'operatorfunc' is empty" +#~ msgstr "E221: 'commentstring' opsie is leeg" -#: ../normal.c:2637 msgid "Warning: terminal cannot highlight" msgstr "Waarskuwing: terminaal kan nie teks uitlig nie" -#: ../normal.c:2807 msgid "E348: No string under cursor" msgstr "E348: Geen string onder loper nie" -#: ../normal.c:3937 msgid "E352: Cannot erase folds with current 'foldmethod'" msgstr "E352: Kan nie voue verwyder met huidige 'foldmethod' nie" -#: ../normal.c:5897 msgid "E664: changelist is empty" msgstr "E664: 'changelist' is leeg" -#: ../normal.c:5899 msgid "E662: At start of changelist" msgstr "E662: By die begin van die veranderingslys" -#: ../normal.c:5901 msgid "E663: At end of changelist" msgstr "E663: By die einde van die veranderingslys" -#: ../normal.c:7053 msgid "Type :quit to exit Nvim" msgstr "Tik :quit om Vim te verlaat" # Het te doen met < en > -#: ../ops.c:248 #, c-format msgid "1 line %sed 1 time" msgstr "1 rel 1 keer ge-%s" -#: ../ops.c:250 #, c-format msgid "1 line %sed %d times" msgstr "1 rel ge-%s %d keer" -#: ../ops.c:253 #, c-format msgid "% lines %sed 1 time" msgstr "% rels 1 keer ge-%s" -#: ../ops.c:256 #, c-format msgid "% lines %sed %d times" msgstr "% rels ge-%s %d keer" -#: ../ops.c:592 #, c-format msgid "% lines to indent... " msgstr "% rels om in te keep..." -#: ../ops.c:634 msgid "1 line indented " msgstr "1 rel ingekeep " -#: ../ops.c:636 #, c-format msgid "% lines indented " msgstr "% rels ingekeep " -#: ../ops.c:938 #, fuzzy -msgid "E748: No previously used register" -msgstr "E186: Geen vorige gids nie" +#~ msgid "E748: No previously used register" +#~ msgstr "E186: Geen vorige gids nie" -#. must display the prompt -#: ../ops.c:1433 -msgid "cannot yank; delete anyway" -msgstr "kan nie pluk nie: verwyder in elk geval" - -#: ../ops.c:1929 msgid "1 line changed" msgstr "1 rel verander" -#: ../ops.c:1931 #, c-format msgid "% lines changed" msgstr "% rels verander" -#: ../ops.c:2521 #, fuzzy -msgid "block of 1 line yanked" -msgstr "1 rel gepluk" +#~ msgid "block of 1 line yanked" +#~ msgstr "1 rel gepluk" -#: ../ops.c:2523 msgid "1 line yanked" msgstr "1 rel gepluk" -#: ../ops.c:2525 #, fuzzy, c-format -msgid "block of % lines yanked" -msgstr "% rels gepluk" +#~ msgid "block of % lines yanked" +#~ msgstr "% rels gepluk" -#: ../ops.c:2528 #, c-format msgid "% lines yanked" msgstr "% rels gepluk" -#: ../ops.c:2710 #, c-format msgid "E353: Nothing in register %s" msgstr "E353: Niks in register %s nie" #. Highlight title -#: ../ops.c:3185 msgid "" "\n" "--- Registers ---" @@ -4539,29 +4027,15 @@ msgstr "" "\n" "--- Registers ---" -#: ../ops.c:4455 -msgid "Illegal register name" -msgstr "Ongeldige registernaam" +#~ msgid "" +#~ "E883: search pattern and expression register may not contain two or more " +#~ "lines" +#~ msgstr "" -#: ../ops.c:4533 -msgid "" -"\n" -"# Registers:\n" -msgstr "" -"\n" -"# Registers:\n" - -#: ../ops.c:4575 -#, c-format -msgid "E574: Unknown register type %d" -msgstr "E574: Onbekende registertipe %d" - -#: ../ops.c:5089 #, c-format msgid "% Cols; " msgstr "% Kolomme; " -#: ../ops.c:5097 #, c-format msgid "" "Selected %s% of % Lines; % of % Words; " @@ -4570,7 +4044,6 @@ msgstr "" "%s% van % rels gekies; % van % Woorde; " "% van % Grepe" -#: ../ops.c:5105 #, fuzzy, c-format msgid "" "Selected %s% of % Lines; % of % Words; " @@ -4580,7 +4053,6 @@ msgstr "" "% van % Grepe" # njj: Karakters kan meerdere grepe wees, sien ':h multibyte' -#: ../ops.c:5123 #, c-format msgid "" "Col %s of %s; Line % of %; Word % of %; Byte " @@ -4590,7 +4062,6 @@ msgstr "" "Greep % van %" # njj: Karakters kan meerdere grepe wees, sien ':h multibyte' -#: ../ops.c:5133 #, fuzzy, c-format msgid "" "Col %s of %s; Line % of %; Word % of %; Char " @@ -4599,148 +4070,104 @@ msgstr "" "Kol %s van %s; Rel % van %; Woord % van %; " "Greep % van %" -#: ../ops.c:5146 #, c-format msgid "(+% for BOM)" msgstr "(+% vir 'BOM')" -#: ../option.c:1238 -msgid "%<%f%h%m%=Page %N" -msgstr "%<%f%h%m%=Bladsy %N" - -#: ../option.c:1574 -msgid "Thanks for flying Vim" -msgstr "Dankie dat jy vlieg met Vim" - #. found a mismatch: skip -#: ../option.c:2698 msgid "E518: Unknown option" msgstr "E518: Onbekende opsie" -#: ../option.c:2709 -msgid "E519: Option not supported" -msgstr "E519: Opsie is nie ondersteun nie" - -#: ../option.c:2740 msgid "E520: Not allowed in a modeline" msgstr "E520: Nie toegelaat in 'n moduslyn nie" -#: ../option.c:2815 -msgid "E846: Key code not set" -msgstr "" +#~ msgid "E846: Key code not set" +#~ msgstr "" -#: ../option.c:2924 msgid "E521: Number required after =" msgstr "E521: Nommer vereis na =" -#: ../option.c:3226 ../option.c:3864 -msgid "E522: Not found in termcap" -msgstr "E522: Nie gevind in 'termcap' nie" - -#: ../option.c:3335 #, c-format msgid "E539: Illegal character <%s>" msgstr "E539: Ongeldige karakter <%s>" -#: ../option.c:3862 -msgid "E529: Cannot set 'term' to empty string" -msgstr "E529: Kan nie 'term' stel na le string nie" +#, c-format +#~ msgid "For option %s" +#~ msgstr "" -#: ../option.c:3885 msgid "E589: 'backupext' and 'patchmode' are equal" msgstr "E589: 'backupext' en 'patchmode' is dieselfde" -#: ../option.c:3964 -msgid "E834: Conflicts with value of 'listchars'" -msgstr "" +#~ msgid "E834: Conflicts with value of 'listchars'" +#~ msgstr "" -#: ../option.c:3966 -msgid "E835: Conflicts with value of 'fillchars'" -msgstr "" +#~ msgid "E835: Conflicts with value of 'fillchars'" +#~ msgstr "" -#: ../option.c:4163 msgid "E524: Missing colon" msgstr "E524: Ontbrekende dubbelpunt" -#: ../option.c:4165 msgid "E525: Zero length string" msgstr "E525: Nul-lengte string" -#: ../option.c:4220 #, c-format msgid "E526: Missing number after <%s>" msgstr "E526: Ontbrekende nommer na <%s>" -#: ../option.c:4232 msgid "E527: Missing comma" msgstr "E527: Ontbrekende komma" -#: ../option.c:4239 msgid "E528: Must specify a ' value" msgstr "E528: Moet 'n ' waarde spesifiseer" -#: ../option.c:4271 msgid "E595: contains unprintable or wide character" msgstr "E595: bevat 'n ondrukbare of wye karakter" -#: ../option.c:4469 #, c-format msgid "E535: Illegal character after <%c>" msgstr "E535: Ongeldige karakter na <%c>" -#: ../option.c:4534 msgid "E536: comma required" msgstr "E536: komma benodig" -#: ../option.c:4543 #, c-format msgid "E537: 'commentstring' must be empty or contain %s" msgstr "E537: 'commentstring' moet leeg wees of %s bevat" -#: ../option.c:4928 msgid "E540: Unclosed expression sequence" msgstr "E540: Onvoltooide uitdrukkingreeks" -#: ../option.c:4932 msgid "E541: too many items" msgstr "E541: te veel items" -#: ../option.c:4934 msgid "E542: unbalanced groups" msgstr "E542: ongebalanseerde groepe" -#: ../option.c:5148 msgid "E590: A preview window already exists" msgstr "E590: Daar bestaan reeds 'n voorskouvenster" -#: ../option.c:5311 msgid "W17: Arabic requires UTF-8, do ':set encoding=utf-8'" msgstr "W17: Arabies benodig UTF-8, doen ':set encoding=utf-8'" -#: ../option.c:5623 #, c-format msgid "E593: Need at least %d lines" msgstr "E593: Benodig ten minste %d rels" -#: ../option.c:5631 #, c-format msgid "E594: Need at least %d columns" msgstr "E594: Benodig ten minste %d kolomme" -#: ../option.c:6011 #, c-format msgid "E355: Unknown option: %s" msgstr "E355: Onbekende opsie: %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. -#: ../option.c:6037 +#. is empty. In both cases, we are trying to set a +#. num option using a string. #, fuzzy, c-format -msgid "E521: Number required: &%s = '%s'" -msgstr "E521: Nommer vereis na =" +#~ msgid "E521: Number required: &%s = '%s'" +#~ msgstr "E521: Nommer vereis na =" -#: ../option.c:6149 msgid "" "\n" "--- Terminal codes ---" @@ -4748,7 +4175,6 @@ msgstr "" "\n" "--- Terminaal kodes ---" -#: ../option.c:6151 msgid "" "\n" "--- Global option values ---" @@ -4756,7 +4182,6 @@ msgstr "" "\n" "--- Globale opsie waardes ---" -#: ../option.c:6153 msgid "" "\n" "--- Local option values ---" @@ -4764,7 +4189,6 @@ msgstr "" "\n" "--- Lokale opsie waardes ---" -#: ../option.c:6155 msgid "" "\n" "--- Options ---" @@ -4772,29 +4196,28 @@ msgstr "" "\n" "--- Opsies ---" -#: ../option.c:6816 msgid "E356: get_varp ERROR" msgstr "E356: 'get_varp' FOUT" -#: ../option.c:7696 #, c-format msgid "E357: 'langmap': Matching character missing for %s" msgstr "E357: 'langmap': Passende karakter ontbreek vir %s" -#: ../option.c:7715 #, c-format msgid "E358: 'langmap': Extra characters after semicolon: %s" msgstr "E358: 'langmap: Ekstra karakters na kommapunt: %s" -#: ../os/shell.c:194 -msgid "" -"\n" -"Cannot execute shell " -msgstr "" -"\n" -"Kan nie dop uitvoer nie " +#, c-format +#~ msgid "dlerror = \"%s\"" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "E5420: Failed to write to file: %s" +#~ msgstr "E365: Kon nie 'PostScript' ler druk nie" + +msgid "Vim: Error reading input, exiting...\n" +msgstr "Vim: Fout met lees van invoer, verlaat...\n" -#: ../os/shell.c:439 msgid "" "\n" "shell returned " @@ -4802,959 +4225,930 @@ msgstr "" "\n" "dop lewer " -#: ../os_unix.c:465 ../os_unix.c:471 -msgid "" -"\n" -"Could not get security context for " -msgstr "" +#~ msgid "" +#~ "\n" +#~ "shell failed to start: " +#~ msgstr "" -#: ../os_unix.c:479 -msgid "" -"\n" -"Could not set security context for " -msgstr "" +#. Can happen if system() tries to send input to a shell command that was +#. backgrounded (:call system("cat - &", "foo")). #3529 #5241 +#, fuzzy, c-format +#~ msgid "E5677: Error writing input to shell-command: %s" +#~ msgstr "E208: Kan nie skryf na \"%s\"" -#: ../os_unix.c:1558 ../os_unix.c:1647 -#, c-format -msgid "dlerror = \"%s\"" -msgstr "" +#~ msgid "" +#~ "\n" +#~ "Could not get security context for " +#~ msgstr "" + +#~ msgid "" +#~ "\n" +#~ "Could not set security context for " +#~ msgstr "" -#: ../path.c:1449 #, c-format msgid "E447: Can't find file \"%s\" in path" msgstr "E447: Kan ler \"%s\" nie vind in pad nie" -#: ../quickfix.c:359 #, c-format msgid "E372: Too many %%%c in format string" msgstr "E372: Te veel %%%c in formaatstring" -#: ../quickfix.c:371 #, c-format msgid "E373: Unexpected %%%c in format string" msgstr "E373: Onverwagte %%%c in formaatstring" -#: ../quickfix.c:420 msgid "E374: Missing ] in format string" msgstr "E374: Ontbrekende ] in formaatstring" -#: ../quickfix.c:431 #, c-format msgid "E375: Unsupported %%%c in format string" msgstr "E375: Ongesteunde %%%c in formaatstring" -#: ../quickfix.c:448 #, c-format msgid "E376: Invalid %%%c in format string prefix" msgstr "E376: Ongeldige %%%c in formaatstringvoorvoegsel" -#: ../quickfix.c:454 #, c-format msgid "E377: Invalid %%%c in format string" msgstr "E377: Ongeldige %%%c in formaatstring" #. nothing found -#: ../quickfix.c:477 msgid "E378: 'errorformat' contains no pattern" msgstr "E378: 'errorformat' bevat geen patroon nie" -#: ../quickfix.c:695 msgid "E379: Missing or empty directory name" msgstr "E379: Ontbrekende of le gidsnaam" -#: ../quickfix.c:1305 msgid "E553: No more items" msgstr "E553: Geen items meer nie" -#: ../quickfix.c:1674 +#~ msgid "E924: Current window was closed" +#~ msgstr "" + +#~ msgid "E925: Current quickfix was changed" +#~ msgstr "" + +#~ msgid "E926: Current location list was changed" +#~ msgstr "" + #, c-format msgid "(%d of %d)%s%s: " msgstr "(%d van %d)%s%s: " -#: ../quickfix.c:1676 msgid " (line deleted)" msgstr " (rel verwyder)" -#: ../quickfix.c:1863 +#, fuzzy, c-format +#~ msgid "%serror list %d of %d; %d errors " +#~ msgstr "foutelys %d van %d; %d foute" + msgid "E380: At bottom of quickfix stack" msgstr "E380: Onder aan 'quickfix' stapel" -#: ../quickfix.c:1869 msgid "E381: At top of quickfix stack" msgstr "E381: Bo aan 'quickfix' stapel" -#: ../quickfix.c:1880 -#, c-format -msgid "error list %d of %d; %d errors" -msgstr "foutelys %d van %d; %d foute" +#~ msgid "No entries" +#~ msgstr "" -#: ../quickfix.c:2427 msgid "E382: Cannot write, 'buftype' option is set" msgstr "E382: Kan nie skryf nie, 'buftype' opsie is aan" -#: ../quickfix.c:2812 -msgid "E683: File name missing or invalid pattern" -msgstr "" +#~ msgid "E683: File name missing or invalid pattern" +#~ msgstr "" -#: ../quickfix.c:2911 #, fuzzy, c-format -msgid "Cannot open file \"%s\"" -msgstr "Kan nie ler %s oopmaak nie" +#~ msgid "Cannot open file \"%s\"" +#~ msgstr "Kan nie ler %s oopmaak nie" -#: ../quickfix.c:3429 #, fuzzy -msgid "E681: Buffer is not loaded" -msgstr "1 buffer uitgelaai" +#~ msgid "E681: Buffer is not loaded" +#~ msgstr "1 buffer uitgelaai" -#: ../quickfix.c:3487 #, fuzzy -msgid "E777: String or List expected" -msgstr "E548: syfer verwag" +#~ msgid "E777: String or List expected" +#~ msgstr "E548: syfer verwag" -#: ../regexp.c:359 #, c-format msgid "E369: invalid item in %s%%[]" msgstr "E369: ongeldige item in %s%%[]" -#: ../regexp.c:374 #, fuzzy, c-format -msgid "E769: Missing ] after %s[" -msgstr "E69: Ontbrekende ] na %s%%[" +#~ msgid "E769: Missing ] after %s[" +#~ msgstr "E69: Ontbrekende ] na %s%%[" -#: ../regexp.c:375 #, c-format msgid "E53: Unmatched %s%%(" msgstr "E53: Onpaar %s%%(" -#: ../regexp.c:376 #, c-format msgid "E54: Unmatched %s(" msgstr "E54: Onpaar %s(" -#: ../regexp.c:377 #, c-format msgid "E55: Unmatched %s)" msgstr "E55: Onpaar %s)" -#: ../regexp.c:378 msgid "E66: \\z( not allowed here" msgstr "E66: \\z( nie hier toegelaat nie" -#: ../regexp.c:379 msgid "E67: \\z1 et al. not allowed here" msgstr "E67: \\z1 e.a. nie hier toegelaat nie" -#: ../regexp.c:380 #, c-format msgid "E69: Missing ] after %s%%[" msgstr "E69: Ontbrekende ] na %s%%[" -#: ../regexp.c:381 #, c-format msgid "E70: Empty %s%%[]" msgstr "E70: Le %s%%[]" -#: ../regexp.c:1209 ../regexp.c:1224 msgid "E339: Pattern too long" msgstr "E339: Patroon te lank" -#: ../regexp.c:1371 msgid "E50: Too many \\z(" msgstr "E50: Te veel \\z(" -#: ../regexp.c:1378 #, c-format msgid "E51: Too many %s(" msgstr "E51: Te veel %s(" -#: ../regexp.c:1427 msgid "E52: Unmatched \\z(" msgstr "E52: Onpaar \\z(" -#: ../regexp.c:1637 #, c-format msgid "E59: invalid character after %s@" msgstr "E59: ongeldige karakter na %s@" -#: ../regexp.c:1672 #, c-format msgid "E60: Too many complex %s{...}s" msgstr "E60: Te veel komplekse %s{...}ies" -#: ../regexp.c:1687 #, c-format msgid "E61: Nested %s*" msgstr "E61: Geneste %s*" -#: ../regexp.c:1690 #, c-format msgid "E62: Nested %s%c" msgstr "E62: Geneste %s%c" -#: ../regexp.c:1800 msgid "E63: invalid use of \\_" msgstr "E63: ongeldige gebruik van \\_" -#: ../regexp.c:1850 #, c-format msgid "E64: %s%c follows nothing" msgstr "E64: %s%c volg niks" -#: ../regexp.c:1902 msgid "E65: Illegal back reference" msgstr "E65: Ongeldige tru-verwysing" -#: ../regexp.c:1943 msgid "E68: Invalid character after \\z" msgstr "E68: ongeldige karakter na \\z" -#: ../regexp.c:2049 ../regexp_nfa.c:1296 #, fuzzy, c-format -msgid "E678: Invalid character after %s%%[dxouU]" -msgstr "E71: Ongeldige karakter na %s%%" +#~ msgid "E678: Invalid character after %s%%[dxouU]" +#~ msgstr "E71: Ongeldige karakter na %s%%" -#: ../regexp.c:2107 #, c-format msgid "E71: Invalid character after %s%%" msgstr "E71: Ongeldige karakter na %s%%" -#: ../regexp.c:3017 +#, fuzzy, c-format +#~ msgid "E888: (NFA regexp) cannot repeat %s" +#~ msgstr "E50: Te veel \\z(" + #, c-format msgid "E554: Syntax error in %s{...}" msgstr "E554: Sintaksfout in %s{...}" -#: ../regexp.c:3805 msgid "External submatches:\n" msgstr "Eksterne subtreffers:\n" -#: ../regexp.c:7022 -msgid "" -"E864: \\%#= can only be followed by 0, 1, or 2. The automatic engine will be " -"used " -msgstr "" +#~ msgid "" +#~ "E864: \\%#= can only be followed by 0, 1, or 2. The automatic engine will be " +#~ "used " +#~ msgstr "" -#: ../regexp_nfa.c:239 -msgid "E865: (NFA) Regexp end encountered prematurely" -msgstr "" +#~ msgid "Switching to backtracking RE engine for pattern: " +#~ msgstr "" -#: ../regexp_nfa.c:240 -#, c-format -msgid "E866: (NFA regexp) Misplaced %c" -msgstr "" +#~ msgid " TERMINAL" +#~ msgstr "" -#: ../regexp_nfa.c:242 -#, c-format -msgid "E877: (NFA regexp) Invalid character class: %" -msgstr "" - -#: ../regexp_nfa.c:1261 -#, c-format -msgid "E867: (NFA) Unknown operator '\\z%c'" -msgstr "" - -#: ../regexp_nfa.c:1387 -#, c-format -msgid "E867: (NFA) Unknown operator '\\%%%c'" -msgstr "" - -#: ../regexp_nfa.c:1802 -#, c-format -msgid "E869: (NFA) Unknown operator '\\@%c'" -msgstr "" - -#: ../regexp_nfa.c:1831 -msgid "E870: (NFA regexp) Error reading repetition limits" -msgstr "" - -#. Can't have a multi follow a multi. -#: ../regexp_nfa.c:1895 -msgid "E871: (NFA regexp) Can't have a multi follow a multi !" -msgstr "" - -#. Too many `(' -#: ../regexp_nfa.c:2037 -msgid "E872: (NFA regexp) Too many '('" -msgstr "" - -#: ../regexp_nfa.c:2042 -#, fuzzy -msgid "E879: (NFA regexp) Too many \\z(" -msgstr "E50: Te veel \\z(" - -#: ../regexp_nfa.c:2066 -msgid "E873: (NFA regexp) proper termination error" -msgstr "" - -#: ../regexp_nfa.c:2599 -msgid "E874: (NFA) Could not pop the stack !" -msgstr "" - -#: ../regexp_nfa.c:3298 -msgid "" -"E875: (NFA regexp) (While converting from postfix to NFA), too many states " -"left on stack" -msgstr "" - -#: ../regexp_nfa.c:3302 -msgid "E876: (NFA regexp) Not enough space to store the whole NFA " -msgstr "" - -#: ../regexp_nfa.c:4571 ../regexp_nfa.c:4869 -msgid "" -"Could not open temporary log file for writing, displaying on stderr ... " -msgstr "" - -#: ../regexp_nfa.c:4840 -#, c-format -msgid "(NFA) COULD NOT OPEN %s !" -msgstr "" - -#: ../regexp_nfa.c:6049 -#, fuzzy -msgid "Could not open temporary log file for writing " -msgstr "E214: Kan nie tydelike ler vind vir skryf nie" - -#: ../screen.c:7435 msgid " VREPLACE" msgstr " VVERVANG" -#: ../screen.c:7437 msgid " REPLACE" msgstr " VERVANG" -#: ../screen.c:7440 msgid " REVERSE" msgstr " OMKEER" -#: ../screen.c:7441 msgid " INSERT" msgstr " INVOEG" -#: ../screen.c:7443 msgid " (insert)" msgstr " (invoeg)" -#: ../screen.c:7445 msgid " (replace)" msgstr " (vervang)" -#: ../screen.c:7447 msgid " (vreplace)" msgstr " (vvervang)" -#: ../screen.c:7449 msgid " Hebrew" msgstr " Hebreeus" -#: ../screen.c:7454 msgid " Arabic" msgstr " Arabies" -#: ../screen.c:7456 -msgid " (lang)" -msgstr " (taal)" - -#: ../screen.c:7459 msgid " (paste)" msgstr " (plak)" -#: ../screen.c:7469 msgid " VISUAL" msgstr " VISUELE" -#: ../screen.c:7470 msgid " VISUAL LINE" msgstr " VISUELE REL" -#: ../screen.c:7471 msgid " VISUAL BLOCK" msgstr " VISUELE BLOK" -#: ../screen.c:7472 msgid " SELECT" msgstr " KIES" -#: ../screen.c:7473 msgid " SELECT LINE" msgstr " KIES REL" -#: ../screen.c:7474 msgid " SELECT BLOCK" msgstr " KIES BLOK" -#: ../screen.c:7486 ../screen.c:7541 msgid "recording" msgstr "besig om op te neem" -#: ../search.c:487 #, c-format msgid "E383: Invalid search string: %s" msgstr "E383: Ongeldige soekstring: %s" -#: ../search.c:832 #, c-format msgid "E384: search hit TOP without match for: %s" msgstr "E384: soektog het BO getref sonder treffer vir: %s" -#: ../search.c:835 #, c-format msgid "E385: search hit BOTTOM without match for: %s" msgstr "E385: soektog het ONDER getref sonder treffer vir: %s" -#: ../search.c:1200 msgid "E386: Expected '?' or '/' after ';'" msgstr "E386: Verwag '?' of '/' na ';'" -#: ../search.c:4085 msgid " (includes previously listed match)" msgstr " (sluit in vorige gelyste treffer)" #. cursor at status line -#: ../search.c:4104 msgid "--- Included files " msgstr "--- Ingeslote lers" -#: ../search.c:4106 msgid "not found " msgstr "nie gevind nie " -#: ../search.c:4107 msgid "in path ---\n" msgstr "in pad ---\n" -#: ../search.c:4168 msgid " (Already listed)" msgstr " (Alreeds gelys)" -#: ../search.c:4170 msgid " NOT FOUND" msgstr " NIE GEVIND NIE" -#: ../search.c:4211 #, c-format msgid "Scanning included file: %s" msgstr "Deursoek ingeslote ler: %s" -#: ../search.c:4216 #, fuzzy, c-format -msgid "Searching included file %s" -msgstr "Deursoek ingeslote ler: %s" +#~ msgid "Searching included file %s" +#~ msgstr "Deursoek ingeslote ler: %s" -#: ../search.c:4405 msgid "E387: Match is on current line" msgstr "E387: Treffer is op huidige rel" -#: ../search.c:4517 msgid "All included files were found" msgstr "Alle ingeslote lers is gevind" -#: ../search.c:4519 msgid "No included files" msgstr "Geen ingeslote lers nie" -#: ../search.c:4527 msgid "E388: Couldn't find definition" msgstr "E388: Kon definisie nie vind nie" -#: ../search.c:4529 msgid "E389: Couldn't find pattern" msgstr "E389: Kon patroon nie vind nie" -#: ../search.c:4668 +#~ msgid "too few bytes read" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "System error while skipping in ShaDa file: %s" +#~ msgstr "E47: Fout tydens lees van 'errorfile'" + +#, c-format +#~ msgid "" +#~ "Error while reading ShaDa file: last entry specified that it occupies " +#~ "% bytes, but file ended earlier" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "System error while closing ShaDa file: %s" +#~ msgstr "E47: Fout tydens lees van 'errorfile'" + +#, fuzzy, c-format +#~ msgid "System error while writing ShaDa file: %s" +#~ msgstr "E47: Fout tydens lees van 'errorfile'" + +#, fuzzy, c-format +#~ msgid "Reading ShaDa file \"%s\"%s%s%s" +#~ msgstr "Besig om viminfo ler \"%s\"%s%s%s te lees" + +msgid " info" +msgstr " inligting" + +msgid " marks" +msgstr " merkers" + #, fuzzy -msgid "Substitute " -msgstr "1 vervanging" +#~ msgid " oldfiles" +#~ msgstr "Geen ingeslote lers nie" + +msgid " FAILED" +msgstr " GEFAAL" -#: ../search.c:4681 #, c-format -msgid "" -"\n" -"# Last %sSearch Pattern:\n" -"~" -msgstr "" +#~ msgid "System error while opening ShaDa file %s for reading: %s" +#~ msgstr "" -#: ../spell.c:951 +#~ msgid "additional elements of ShaDa " +#~ msgstr "" + +#~ msgid "additional data of ShaDa " +#~ msgstr "" + +#, c-format +#~ msgid "Failed to write variable %s" +#~ msgstr "" + +#, c-format +#~ msgid "" +#~ "Failed to parse ShaDa file due to a msgpack parser error at position " +#~ "%" +#~ msgstr "" + +#, c-format +#~ msgid "" +#~ "Failed to parse ShaDa file: incomplete msgpack string at position %" +#~ msgstr "" + +#, c-format +#~ msgid "" +#~ "Failed to parse ShaDa file: extra bytes in msgpack string at position " +#~ "%" +#~ msgstr "" + +#, c-format +#~ msgid "" +#~ "System error while opening ShaDa file %s for reading to merge before writing " +#~ "it: %s" +#~ msgstr "" + +#. Tried names from .tmp.a to .tmp.z, all failed. Something must be +#. wrong then. +#, c-format +#~ msgid "E138: All %s.tmp.X files exist, cannot write ShaDa file!" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "System error while opening temporary ShaDa file %s for writing: %s" +#~ msgstr "E214: Kan nie tydelike ler vind vir skryf nie" + +#, c-format +#~ msgid "Failed to create directory %s for writing ShaDa file: %s" +#~ msgstr "" + +#, c-format +#~ msgid "System error while opening ShaDa file %s for writing: %s" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "Writing ShaDa file \"%s\"" +#~ msgstr "Besig om viminfo ler \"%s\" te stoor" + +#, fuzzy, c-format +#~ msgid "Failed setting uid and gid for file %s: %s" +#~ msgstr "%s klaar uitgevoer" + +#, fuzzy, c-format +#~ msgid "E137: ShaDa file is not writable: %s" +#~ msgstr "E137: Viminfo ler is nie skryfbaar nie: %s" + +#, c-format +#~ msgid "Can't rename ShaDa file from %s to %s!" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "Did not rename %s because %s does not looks like a ShaDa file" +#~ msgstr " [lyk nie soos 'n Vim ruiller nie]" + +#, c-format +#~ msgid "Did not rename %s to %s because there were errors during writing it" +#~ msgstr "" + +#, c-format +#~ msgid "Do not forget to remove %s or rename it manually to %s." +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "System error while reading ShaDa file: %s" +#~ msgstr "E47: Fout tydens lees van 'errorfile'" + +#, fuzzy, c-format +#~ msgid "System error while reading integer from ShaDa file: %s" +#~ msgstr "E47: Fout tydens lees van 'errorfile'" + +#, c-format +#~ msgid "" +#~ "Error while reading ShaDa file: expected positive integer at position " +#~ "%, but got nothing" +#~ msgstr "" + +#, c-format +#~ msgid "" +#~ "Error while reading ShaDa file: expected positive integer at position " +#~ "%" +#~ msgstr "" + +#, c-format +#~ msgid "" +#~ "Error while reading ShaDa file: there is an item at position % that " +#~ "is stated to be too long" +#~ msgstr "" + +#. kSDItemUnknown cannot possibly pass that far because it is -1 and that +#. will fail in msgpack_read_uint64. But kSDItemMissing may and it will +#. otherwise be skipped because (1 << 0) will never appear in flags. +#, c-format +#~ msgid "" +#~ "Error while reading ShaDa file: there is an item at position % that " +#~ "must not be there: Missing items are for internal uses only" +#~ msgstr "" + +#, c-format +#~ msgid "" +#~ "Error while reading ShaDa file: buffer list at position % contains " +#~ "entry that is not a dictionary" +#~ msgstr "" + +#, c-format +#~ msgid "" +#~ "Error while reading ShaDa file: buffer list at position % contains " +#~ "entry with invalid line number" +#~ msgstr "" + +#, c-format +#~ msgid "" +#~ "Error while reading ShaDa file: buffer list at position % contains " +#~ "entry with invalid column number" +#~ msgstr "" + +#, c-format +#~ msgid "" +#~ "Error while reading ShaDa file: buffer list at position % contains " +#~ "entry that does not have a file name" +#~ msgstr "" + +#. values for ts_isdiff +#. no different byte (yet) +#. different byte found +#. inserting character +#. values for ts_flags +#. already checked that prefix is OK +#. tried split at this point +#. did a delete, "ts_delidx" has index +#. special values ts_prefixdepth +#. not using prefixes +#. walking through the prefix tree +#. highest value that's not special +#. mode values for find_word +#. find word case-folded +#. find keep-case word +#. find word after prefix +#. find case-folded compound word +#. find keep-case compound word #, fuzzy -msgid "E759: Format error in spell file" -msgstr "E297: Skryffout in ruiller" +#~ msgid "E759: Format error in spell file" +#~ msgstr "E297: Skryffout in ruiller" -#: ../spell.c:952 -msgid "E758: Truncated spell file" -msgstr "" +#~ msgid "E756: Spell checking is not enabled" +#~ msgstr "" -#: ../spell.c:953 #, c-format -msgid "Trailing text in %s line %d: %s" -msgstr "" +#~ msgid "Warning: Cannot find word list \"%s.%s.spl\" or \"%s.ascii.spl\"" +#~ msgstr "" -#: ../spell.c:954 -#, c-format -msgid "Affix name too long in %s line %d: %s" -msgstr "" - -#: ../spell.c:955 #, fuzzy -msgid "E761: Format error in affix file FOL, LOW or UPP" -msgstr "E431: Formaatfout in etiketler \"%s\"" +#~ msgid "E797: SpellFileMissing autocommand deleted buffer" +#~ msgstr "E246: 'FileChangedShell' outobevel het buffer verwyder" -#: ../spell.c:957 -msgid "E762: Character in FOL, LOW or UPP is out of range" -msgstr "" - -#: ../spell.c:958 -msgid "Compressing word tree..." -msgstr "" - -#: ../spell.c:1951 -msgid "E756: Spell checking is not enabled" -msgstr "" - -#: ../spell.c:2249 -#, c-format -msgid "Warning: Cannot find word list \"%s.%s.spl\" or \"%s.ascii.spl\"" -msgstr "" - -#: ../spell.c:2473 +#. This is probably an error. Give a warning and +#. accept the words anyway. #, fuzzy, c-format -msgid "Reading spell file \"%s\"" -msgstr "Gebruik ruiller \"%s\"" +#~ msgid "Warning: region %s not supported" +#~ msgstr "E519: Opsie is nie ondersteun nie" -#: ../spell.c:2496 -#, fuzzy -msgid "E757: This does not look like a spell file" -msgstr "E307: %s lyk nie soos 'n Vim ruiller nie" +#~ msgid "Sorry, no suggestions" +#~ msgstr "" -#: ../spell.c:2501 -msgid "E771: Old spell file, needs to be updated" -msgstr "" - -#: ../spell.c:2504 -msgid "E772: Spell file is for newer version of Vim" -msgstr "" - -#: ../spell.c:2602 -#, fuzzy -msgid "E770: Unsupported section in spell file" -msgstr "E297: Skryffout in ruiller" - -#: ../spell.c:3762 #, fuzzy, c-format -msgid "Warning: region %s not supported" -msgstr "E519: Opsie is nie ondersteun nie" - -#: ../spell.c:4550 -#, fuzzy, c-format -msgid "Reading affix file %s ..." -msgstr "Deursoek etiketler %s" - -#: ../spell.c:4589 ../spell.c:5635 ../spell.c:6140 -#, c-format -msgid "Conversion failure for word in %s line %d: %s" -msgstr "" - -#: ../spell.c:4630 ../spell.c:6170 -#, c-format -msgid "Conversion in %s not supported: from %s to %s" -msgstr "" - -#: ../spell.c:4642 -#, c-format -msgid "Invalid value for FLAG in %s line %d: %s" -msgstr "" - -#: ../spell.c:4655 -#, c-format -msgid "FLAG after using flags in %s line %d: %s" -msgstr "" - -#: ../spell.c:4723 -#, c-format -msgid "" -"Defining COMPOUNDFORBIDFLAG after PFX item may give wrong results in %s line " -"%d" -msgstr "" - -#: ../spell.c:4731 -#, c-format -msgid "" -"Defining COMPOUNDPERMITFLAG after PFX item may give wrong results in %s line " -"%d" -msgstr "" - -#: ../spell.c:4747 -#, c-format -msgid "Wrong COMPOUNDRULES value in %s line %d: %s" -msgstr "" - -#: ../spell.c:4771 -#, c-format -msgid "Wrong COMPOUNDWORDMAX value in %s line %d: %s" -msgstr "" - -#: ../spell.c:4777 -#, c-format -msgid "Wrong COMPOUNDMIN value in %s line %d: %s" -msgstr "" - -#: ../spell.c:4783 -#, c-format -msgid "Wrong COMPOUNDSYLMAX value in %s line %d: %s" -msgstr "" - -#: ../spell.c:4795 -#, c-format -msgid "Wrong CHECKCOMPOUNDPATTERN value in %s line %d: %s" -msgstr "" - -#: ../spell.c:4847 -#, c-format -msgid "Different combining flag in continued affix block in %s line %d: %s" -msgstr "" - -#: ../spell.c:4850 -#, fuzzy, c-format -msgid "Duplicate affix in %s line %d: %s" -msgstr "E154: Duplikaat etiket \"%s\" in ler %s/%s" - -#: ../spell.c:4871 -#, c-format -msgid "" -"Affix also used for BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/NOSUGGEST in %s " -"line %d: %s" -msgstr "" - -#: ../spell.c:4893 -#, c-format -msgid "Expected Y or N in %s line %d: %s" -msgstr "" - -#: ../spell.c:4968 -#, c-format -msgid "Broken condition in %s line %d: %s" -msgstr "" - -#: ../spell.c:5091 -#, c-format -msgid "Expected REP(SAL) count in %s line %d" -msgstr "" - -#: ../spell.c:5120 -#, c-format -msgid "Expected MAP count in %s line %d" -msgstr "" - -#: ../spell.c:5132 -#, c-format -msgid "Duplicate character in MAP in %s line %d" -msgstr "" - -#: ../spell.c:5176 -#, c-format -msgid "Unrecognized or duplicate item in %s line %d: %s" -msgstr "" - -#: ../spell.c:5197 -#, c-format -msgid "Missing FOL/LOW/UPP line in %s" -msgstr "" - -#: ../spell.c:5220 -msgid "COMPOUNDSYLMAX used without SYLLABLE" -msgstr "" - -#: ../spell.c:5236 -#, fuzzy -msgid "Too many postponed prefixes" -msgstr "Te veel redigeer-parameters" - -#: ../spell.c:5238 -#, fuzzy -msgid "Too many compound flags" -msgstr "Te veel redigeer-parameters" - -#: ../spell.c:5240 -msgid "Too many postponed prefixes and/or compound flags" -msgstr "" - -#: ../spell.c:5250 -#, c-format -msgid "Missing SOFO%s line in %s" -msgstr "" - -#: ../spell.c:5253 -#, c-format -msgid "Both SAL and SOFO lines in %s" -msgstr "" - -#: ../spell.c:5331 -#, c-format -msgid "Flag is not a number in %s line %d: %s" -msgstr "" - -#: ../spell.c:5334 -#, c-format -msgid "Illegal flag in %s line %d: %s" -msgstr "" - -#: ../spell.c:5493 ../spell.c:5501 -#, c-format -msgid "%s value differs from what is used in another .aff file" -msgstr "" - -#: ../spell.c:5602 -#, fuzzy, c-format -msgid "Reading dictionary file %s ..." -msgstr "Deursoek woordeboek: %s" - -#: ../spell.c:5611 -#, c-format -msgid "E760: No word count in %s" -msgstr "" - -#: ../spell.c:5669 -#, c-format -msgid "line %6d, word %6d - %s" -msgstr "" - -#: ../spell.c:5691 -#, fuzzy, c-format -msgid "Duplicate word in %s line %d: %s" -msgstr "Patroon gevind in elke rel: %s" - -#: ../spell.c:5694 -#, c-format -msgid "First duplicate word in %s line %d: %s" -msgstr "" - -#: ../spell.c:5746 -#, c-format -msgid "%d duplicate word(s) in %s" -msgstr "" - -#: ../spell.c:5748 -#, c-format -msgid "Ignored %d word(s) with non-ASCII characters in %s" -msgstr "" - -#: ../spell.c:6115 -#, fuzzy, c-format -msgid "Reading word file %s ..." -msgstr "Lees nou vanaf stdin... " - -#: ../spell.c:6155 -#, c-format -msgid "Duplicate /encoding= line ignored in %s line %d: %s" -msgstr "" - -#: ../spell.c:6159 -#, c-format -msgid "/encoding= line after word ignored in %s line %d: %s" -msgstr "" - -#: ../spell.c:6180 -#, c-format -msgid "Duplicate /regions= line ignored in %s line %d: %s" -msgstr "" - -#: ../spell.c:6185 -#, c-format -msgid "Too many regions in %s line %d: %s" -msgstr "" - -#: ../spell.c:6198 -#, c-format -msgid "/ line ignored in %s line %d: %s" -msgstr "" - -#: ../spell.c:6224 -#, fuzzy, c-format -msgid "Invalid region nr in %s line %d: %s" -msgstr "E573: Ongeldige bediener-id gebruik: %s" - -#: ../spell.c:6230 -#, c-format -msgid "Unrecognized flags in %s line %d: %s" -msgstr "" - -#: ../spell.c:6257 -#, c-format -msgid "Ignored %d words with non-ASCII characters" -msgstr "" - -#: ../spell.c:6656 -#, c-format -msgid "Compressed %d of %d nodes; %d (%d%%) remaining" -msgstr "" - -#: ../spell.c:7340 -msgid "Reading back spell file..." -msgstr "" - -#. Go through the trie of good words, soundfold each word and add it to -#. the soundfold trie. -#: ../spell.c:7357 -msgid "Performing soundfolding..." -msgstr "" - -#: ../spell.c:7368 -#, c-format -msgid "Number of words after soundfolding: %" -msgstr "" - -#: ../spell.c:7476 -#, c-format -msgid "Total number of words: %d" -msgstr "" - -#: ../spell.c:7655 -#, fuzzy, c-format -msgid "Writing suggestion file %s ..." -msgstr "Besig om viminfo ler \"%s\" te stoor" - -#: ../spell.c:7707 ../spell.c:7927 -#, c-format -msgid "Estimated runtime memory use: %d bytes" -msgstr "" - -#: ../spell.c:7820 -msgid "E751: Output file name must not have region name" -msgstr "" - -#: ../spell.c:7822 -#, fuzzy -msgid "E754: Only up to 8 regions supported" -msgstr "E519: Opsie is nie ondersteun nie" - -#: ../spell.c:7846 -#, fuzzy, c-format -msgid "E755: Invalid region in %s" -msgstr "E15: Ongeldige uitdrukking: %s" - -#: ../spell.c:7907 -msgid "Warning: both compounding and NOBREAK specified" -msgstr "" - -#: ../spell.c:7920 -#, fuzzy, c-format -msgid "Writing spell file %s ..." -msgstr "Besig om viminfo ler \"%s\" te stoor" - -#: ../spell.c:7925 -msgid "Done!" -msgstr "" - -#: ../spell.c:8034 -#, c-format -msgid "E765: 'spellfile' does not have % entries" -msgstr "" - -#: ../spell.c:8074 -#, c-format -msgid "Word '%.*s' removed from %s" -msgstr "" - -#: ../spell.c:8117 -#, c-format -msgid "Word '%.*s' added to %s" -msgstr "" - -#: ../spell.c:8381 -msgid "E763: Word characters differ between spell files" -msgstr "" - -#: ../spell.c:8684 -msgid "Sorry, no suggestions" -msgstr "" - -#: ../spell.c:8687 -#, fuzzy, c-format -msgid "Sorry, only % suggestions" -msgstr " op % rels" +#~ msgid "Sorry, only % suggestions" +#~ msgstr " op % rels" #. for when 'cmdheight' > 1 #. avoid more prompt -#: ../spell.c:8704 #, fuzzy, c-format -msgid "Change \"%.*s\" to:" -msgstr "Stoor veranderinge na \"%.*s\"?" +#~ msgid "Change \"%.*s\" to:" +#~ msgstr "Stoor veranderinge na \"%.*s\"?" -#: ../spell.c:8737 #, c-format -msgid " < \"%.*s\"" -msgstr "" +#~ msgid " < \"%.*s\"" +#~ msgstr "" -#: ../spell.c:8882 #, fuzzy -msgid "E752: No previous spell replacement" -msgstr "E35: Geen vorige patroon nie" +#~ msgid "E752: No previous spell replacement" +#~ msgstr "E35: Geen vorige patroon nie" -#: ../spell.c:8925 #, fuzzy, c-format -msgid "E753: Not found: %s" -msgstr "E334: Kieslys nie gevind nie: %s" +#~ msgid "E753: Not found: %s" +#~ msgstr "E334: Kieslys nie gevind nie: %s" + +#~ msgid "E758: Truncated spell file" +#~ msgstr "" + +#, c-format +#~ msgid "Trailing text in %s line %d: %s" +#~ msgstr "" + +#, c-format +#~ msgid "Affix name too long in %s line %d: %s" +#~ msgstr "" + +#, fuzzy +#~ msgid "E761: Format error in affix file FOL, LOW or UPP" +#~ msgstr "E431: Formaatfout in etiketler \"%s\"" + +#~ msgid "E762: Character in FOL, LOW or UPP is out of range" +#~ msgstr "" + +#~ msgid "Compressing word tree..." +#~ msgstr "" -#: ../spell.c:9276 #, fuzzy, c-format -msgid "E778: This does not look like a .sug file: %s" -msgstr "E307: %s lyk nie soos 'n Vim ruiller nie" +#~ msgid "Reading spell file \"%s\"" +#~ msgstr "Gebruik ruiller \"%s\"" -#: ../spell.c:9282 -#, c-format -msgid "E779: Old .sug file, needs to be updated: %s" -msgstr "" +#, fuzzy +#~ msgid "E757: This does not look like a spell file" +#~ msgstr "E307: %s lyk nie soos 'n Vim ruiller nie" -#: ../spell.c:9286 -#, c-format -msgid "E780: .sug file is for newer version of Vim: %s" -msgstr "" - -#: ../spell.c:9295 -#, c-format -msgid "E781: .sug file doesn't match .spl file: %s" -msgstr "" - -#: ../spell.c:9305 #, fuzzy, c-format -msgid "E782: error while reading .sug file: %s" -msgstr "E47: Fout tydens lees van 'errorfile'" +#~ msgid "E5042: Failed to read spell file %s: %s" +#~ msgstr "E482: Kan nie ler %s skep nie" + +#~ msgid "E771: Old spell file, needs to be updated" +#~ msgstr "" + +#~ msgid "E772: Spell file is for newer version of Vim" +#~ msgstr "" + +#, fuzzy +#~ msgid "E770: Unsupported section in spell file" +#~ msgstr "E297: Skryffout in ruiller" + +#, fuzzy, c-format +#~ msgid "E778: This does not look like a .sug file: %s" +#~ msgstr "E307: %s lyk nie soos 'n Vim ruiller nie" + +#, c-format +#~ msgid "E779: Old .sug file, needs to be updated: %s" +#~ msgstr "" + +#, c-format +#~ msgid "E780: .sug file is for newer version of Vim: %s" +#~ msgstr "" + +#, c-format +#~ msgid "E781: .sug file doesn't match .spl file: %s" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "E782: error while reading .sug file: %s" +#~ msgstr "E47: Fout tydens lees van 'errorfile'" + +#, fuzzy, c-format +#~ msgid "Reading affix file %s ..." +#~ msgstr "Deursoek etiketler %s" + +#, c-format +#~ msgid "Conversion failure for word in %s line %d: %s" +#~ msgstr "" + +#, c-format +#~ msgid "Conversion in %s not supported: from %s to %s" +#~ msgstr "" + +#, c-format +#~ msgid "Invalid value for FLAG in %s line %d: %s" +#~ msgstr "" + +#, c-format +#~ msgid "FLAG after using flags in %s line %d: %s" +#~ msgstr "" + +#, c-format +#~ msgid "" +#~ "Defining COMPOUNDFORBIDFLAG after PFX item may give wrong results in %s line " +#~ "%d" +#~ msgstr "" + +#, c-format +#~ msgid "" +#~ "Defining COMPOUNDPERMITFLAG after PFX item may give wrong results in %s line " +#~ "%d" +#~ msgstr "" + +#, c-format +#~ msgid "Wrong COMPOUNDRULES value in %s line %d: %s" +#~ msgstr "" + +#, c-format +#~ msgid "Wrong COMPOUNDWORDMAX value in %s line %d: %s" +#~ msgstr "" + +#, c-format +#~ msgid "Wrong COMPOUNDMIN value in %s line %d: %s" +#~ msgstr "" + +#, c-format +#~ msgid "Wrong COMPOUNDSYLMAX value in %s line %d: %s" +#~ msgstr "" + +#, c-format +#~ msgid "Wrong CHECKCOMPOUNDPATTERN value in %s line %d: %s" +#~ msgstr "" + +#, c-format +#~ msgid "Different combining flag in continued affix block in %s line %d: %s" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "Duplicate affix in %s line %d: %s" +#~ msgstr "E154: Duplikaat etiket \"%s\" in ler %s/%s" + +#, c-format +#~ msgid "" +#~ "Affix also used for BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/NOSUGGESTin %s " +#~ "line %d: %s" +#~ msgstr "" + +#, c-format +#~ msgid "Expected Y or N in %s line %d: %s" +#~ msgstr "" + +#, c-format +#~ msgid "Broken condition in %s line %d: %s" +#~ msgstr "" + +#, c-format +#~ msgid "Expected REP(SAL) count in %s line %d" +#~ msgstr "" + +#, c-format +#~ msgid "Expected MAP count in %s line %d" +#~ msgstr "" + +#, c-format +#~ msgid "Duplicate character in MAP in %s line %d" +#~ msgstr "" + +#, c-format +#~ msgid "Unrecognized or duplicate item in %s line %d: %s" +#~ msgstr "" + +#, c-format +#~ msgid "Missing FOL/LOW/UPP line in %s" +#~ msgstr "" + +#~ msgid "COMPOUNDSYLMAX used without SYLLABLE" +#~ msgstr "" + +#, fuzzy +#~ msgid "Too many postponed prefixes" +#~ msgstr "Te veel redigeer-parameters" + +#, fuzzy +#~ msgid "Too many compound flags" +#~ msgstr "Te veel redigeer-parameters" + +#~ msgid "Too many postponed prefixes and/or compound flags" +#~ msgstr "" + +#, c-format +#~ msgid "Missing SOFO%s line in %s" +#~ msgstr "" + +#, c-format +#~ msgid "Both SAL and SOFO lines in %s" +#~ msgstr "" + +#, c-format +#~ msgid "Flag is not a number in %s line %d: %s" +#~ msgstr "" + +#, c-format +#~ msgid "Illegal flag in %s line %d: %s" +#~ msgstr "" + +#, c-format +#~ msgid "%s value differs from what is used in another .aff file" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "Reading dictionary file %s ..." +#~ msgstr "Deursoek woordeboek: %s" + +#, c-format +#~ msgid "E760: No word count in %s" +#~ msgstr "" + +#, c-format +#~ msgid "line %6d, word %6d - %s" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "Duplicate word in %s line %d: %s" +#~ msgstr "Patroon gevind in elke rel: %s" + +#, c-format +#~ msgid "First duplicate word in %s line %d: %s" +#~ msgstr "" + +#, c-format +#~ msgid "%d duplicate word(s) in %s" +#~ msgstr "" + +#, c-format +#~ msgid "Ignored %d word(s) with non-ASCII characters in %s" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "Reading word file %s ..." +#~ msgstr "Lees nou vanaf stdin... " + +#, c-format +#~ msgid "Duplicate /encoding= line ignored in %s line %d: %s" +#~ msgstr "" + +#, c-format +#~ msgid "/encoding= line after word ignored in %s line %d: %s" +#~ msgstr "" + +#, c-format +#~ msgid "Duplicate /regions= line ignored in %s line %d: %s" +#~ msgstr "" + +#, c-format +#~ msgid "Too many regions in %s line %d: %s" +#~ msgstr "" + +#, c-format +#~ msgid "/ line ignored in %s line %d: %s" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "Invalid region nr in %s line %d: %s" +#~ msgstr "E573: Ongeldige bediener-id gebruik: %s" + +#, c-format +#~ msgid "Unrecognized flags in %s line %d: %s" +#~ msgstr "" + +#, c-format +#~ msgid "Ignored %d words with non-ASCII characters" +#~ msgstr "" + +#, c-format +#~ msgid "Compressed %d of %d nodes; %d (%d%%) remaining" +#~ msgstr "" + +#~ msgid "Reading back spell file..." +#~ msgstr "" + +#. Go through the trie of good words, soundfold each word and add it to +#. the soundfold trie. +#~ msgid "Performing soundfolding..." +#~ msgstr "" + +#, c-format +#~ msgid "Number of words after soundfolding: %" +#~ msgstr "" + +#, c-format +#~ msgid "Total number of words: %d" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "Writing suggestion file %s ..." +#~ msgstr "Besig om viminfo ler \"%s\" te stoor" + +#, c-format +#~ msgid "Estimated runtime memory use: %d bytes" +#~ msgstr "" + +#~ msgid "E751: Output file name must not have region name" +#~ msgstr "" + +#, fuzzy +#~ msgid "E754: Only up to 8 regions supported" +#~ msgstr "E519: Opsie is nie ondersteun nie" + +#, fuzzy, c-format +#~ msgid "E755: Invalid region in %s" +#~ msgstr "E15: Ongeldige uitdrukking: %s" + +#~ msgid "Warning: both compounding and NOBREAK specified" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "Writing spell file %s ..." +#~ msgstr "Besig om viminfo ler \"%s\" te stoor" + +#~ msgid "Done!" +#~ msgstr "" + +#, c-format +#~ msgid "E765: 'spellfile' does not have % entries" +#~ msgstr "" + +#, c-format +#~ msgid "Word '%.*s' removed from %s" +#~ msgstr "" + +#, c-format +#~ msgid "Word '%.*s' added to %s" +#~ msgstr "" + +#~ msgid "E763: Word characters differ between spell files" +#~ msgstr "" #. This should have been checked when generating the .spl #. file. -#: ../spell.c:11575 -msgid "E783: duplicate char in MAP entry" -msgstr "" +#~ msgid "E783: duplicate char in MAP entry" +#~ msgstr "" + +#, fuzzy +#~ msgid "E766: Insufficient arguments for printf()" +#~ msgstr "E116: Ongeldige parameters vir funksie %s" + +#~ msgid "E807: Expected Float argument for printf()" +#~ msgstr "" + +#, fuzzy +#~ msgid "E767: Too many arguments to printf()" +#~ msgstr "E118: Te veel parameters vir funksie: %s" -#: ../syntax.c:266 msgid "No Syntax items defined for this buffer" msgstr "Geen Sintaks-items gedefinieer vir hierdie buffer nie" -#: ../syntax.c:3083 ../syntax.c:3104 ../syntax.c:3127 #, c-format msgid "E390: Illegal argument: %s" msgstr "E390: Ongeldige parameter: %s" -#: ../syntax.c:3299 +#~ msgid "syntax iskeyword " +#~ msgstr "" + #, c-format msgid "E391: No such syntax cluster: %s" msgstr "E391: Geen sodanige sintakskluster nie: %s" -#: ../syntax.c:3433 msgid "syncing on C-style comments" msgstr "sinchroniseer met C-styl kommentaar" -#: ../syntax.c:3439 msgid "no syncing" msgstr "geen sinchronisering" -#: ../syntax.c:3441 msgid "syncing starts " msgstr "sinchronisasie begin " -#: ../syntax.c:3443 ../syntax.c:3506 msgid " lines before top line" msgstr " rels voor boonste lyn" -#: ../syntax.c:3448 msgid "" "\n" "--- Syntax sync items ---" @@ -5762,7 +5156,6 @@ msgstr "" "\n" "--- Sintaks sync items ---" -#: ../syntax.c:3452 msgid "" "\n" "syncing on items" @@ -5770,7 +5163,6 @@ msgstr "" "\n" "sinchronisering met items" -#: ../syntax.c:3457 msgid "" "\n" "--- Syntax items ---" @@ -5778,275 +5170,216 @@ msgstr "" "\n" "--- Sintaks items ---" -#: ../syntax.c:3475 #, c-format msgid "E392: No such syntax cluster: %s" msgstr "E392: Geen sodanige sintakskluster nie: %s" -#: ../syntax.c:3497 msgid "minimal " msgstr "minimaal " -#: ../syntax.c:3503 msgid "maximal " msgstr "maksimaal " -#: ../syntax.c:3513 msgid "; match " msgstr "; treffer " -#: ../syntax.c:3515 msgid " line breaks" msgstr " rel breuke" -#: ../syntax.c:4076 msgid "E395: contains argument not accepted here" msgstr "E395: bevat parameters nie hier aanvaar nie" -#: ../syntax.c:4096 #, fuzzy -msgid "E844: invalid cchar value" -msgstr "E474: Ongeldige parameter" +#~ msgid "E844: invalid cchar value" +#~ msgstr "E474: Ongeldige parameter" -#: ../syntax.c:4107 msgid "E393: group[t]here not accepted here" msgstr "E393: 'group[t]here' nie hier aanvaar nie" -#: ../syntax.c:4126 #, c-format msgid "E394: Didn't find region item for %s" msgstr "E394: Kon nie omgewingsitem vind vir %s nie" -#: ../syntax.c:4188 msgid "E397: Filename required" msgstr "E397: Lernaam benodig" -#: ../syntax.c:4221 #, fuzzy -msgid "E847: Too many syntax includes" -msgstr "E77: Te veel lername" +#~ msgid "E847: Too many syntax includes" +#~ msgstr "E77: Te veel lername" -#: ../syntax.c:4303 #, fuzzy, c-format -msgid "E789: Missing ']': %s" -msgstr "E398: Ontbrekende '=': %s" +#~ msgid "E789: Missing ']': %s" +#~ msgstr "E398: Ontbrekende '=': %s" + +#, fuzzy, c-format +#~ msgid "E890: trailing char after ']': %s]%s" +#~ msgstr "E488: Oorbodige karakters" -#: ../syntax.c:4531 #, c-format msgid "E398: Missing '=': %s" msgstr "E398: Ontbrekende '=': %s" -#: ../syntax.c:4666 #, c-format msgid "E399: Not enough arguments: syntax region %s" msgstr "E399: Nie genoeg parameters nie: sintaksomgewing %s" -#: ../syntax.c:4870 #, fuzzy -msgid "E848: Too many syntax clusters" -msgstr "E391: Geen sodanige sintakskluster nie: %s" +#~ msgid "E848: Too many syntax clusters" +#~ msgstr "E391: Geen sodanige sintakskluster nie: %s" -#: ../syntax.c:4954 msgid "E400: No cluster specified" msgstr "E400: Geen kluster gespesifiseer nie" #. end delimiter not found -#: ../syntax.c:4986 #, c-format msgid "E401: Pattern delimiter not found: %s" msgstr "E401: Patroonbegrenser nie gevind nie: %s" -#: ../syntax.c:5049 #, c-format msgid "E402: Garbage after pattern: %s" msgstr "E402: Gemors na patroon: %s" -#: ../syntax.c:5120 msgid "E403: syntax sync: line continuations pattern specified twice" msgstr "E403: sintaks sync: relvoortgaanpatroon twee keer gespesifiseer" -#: ../syntax.c:5169 #, c-format msgid "E404: Illegal arguments: %s" msgstr "E404: Ongeldige parameters: %s" -#: ../syntax.c:5217 #, c-format msgid "E405: Missing equal sign: %s" msgstr "E405: Ontbrekende gelykaanteken: %s" -#: ../syntax.c:5222 #, c-format msgid "E406: Empty argument: %s" msgstr "E406: Le parameter: %s" -#: ../syntax.c:5240 #, c-format msgid "E407: %s not allowed here" msgstr "E407: %s nie toegelaat hier nie" -#: ../syntax.c:5246 #, c-format msgid "E408: %s must be first in contains list" msgstr "E408: %s moet vr in 'contains' lys wees" -#: ../syntax.c:5304 #, c-format msgid "E409: Unknown group name: %s" msgstr "E409: Onbekende groepnaam: %s" -#: ../syntax.c:5512 #, c-format msgid "E410: Invalid :syntax subcommand: %s" msgstr "E410: Ongeldige :syntax subbevel %s" -#: ../syntax.c:5854 -msgid "" -" TOTAL COUNT MATCH SLOWEST AVERAGE NAME PATTERN" -msgstr "" +#~ msgid "" +#~ " TOTAL COUNT MATCH SLOWEST AVERAGE NAME PATTERN" +#~ msgstr "" -#: ../syntax.c:6146 msgid "E679: recursive loop loading syncolor.vim" msgstr "E679: rekursiewe lus gedurende laai van syncolor.vim" -#: ../syntax.c:6256 #, c-format msgid "E411: highlight group not found: %s" msgstr "E411: uitliggroep nie gevind nie: %s" -#: ../syntax.c:6278 #, c-format msgid "E412: Not enough arguments: \":highlight link %s\"" msgstr "E412: Te min parameters: \":highlight link %s\"" -#: ../syntax.c:6284 #, c-format msgid "E413: Too many arguments: \":highlight link %s\"" msgstr "E413: Te veel parameters: \":highlight link %s\"" -#: ../syntax.c:6302 msgid "E414: group has settings, highlight link ignored" msgstr "" "E414: groep het instellings, uitligskakel ('highlight link') gegnoreer" -#: ../syntax.c:6367 #, c-format msgid "E415: unexpected equal sign: %s" msgstr "E415: onverwagte gelykaanteken: %s" -#: ../syntax.c:6395 #, c-format msgid "E416: missing equal sign: %s" msgstr "E416: ontbrekende gelykaanteken: %s" -#: ../syntax.c:6418 #, c-format msgid "E417: missing argument: %s" msgstr "E417: ontbrekende parameter: %s" -#: ../syntax.c:6446 #, c-format msgid "E418: Illegal value: %s" msgstr "E418: Ongeldige waarde: %s" -#: ../syntax.c:6496 msgid "E419: FG color unknown" msgstr "E419: FG kleur onbekend" -#: ../syntax.c:6504 msgid "E420: BG color unknown" msgstr "E420: BG kleur onbekend" -#: ../syntax.c:6564 #, c-format msgid "E421: Color name or number not recognized: %s" msgstr "E421: Kleurnaam of -nommer nie herken nie: %s" -#: ../syntax.c:6714 -#, c-format -msgid "E422: terminal code too long: %s" -msgstr "E422: terminaalkode te lank: %s" - -#: ../syntax.c:6753 #, c-format msgid "E423: Illegal argument: %s" msgstr "E423: Ongeldige parameter: %s" -#: ../syntax.c:6925 msgid "E424: Too many different highlighting attributes in use" msgstr "E424: Te veel verskillende uitlig-eienskappe in gebruik" -#: ../syntax.c:7427 msgid "E669: Unprintable character in group name" msgstr "E669: Onvertoonbare karakter in groepnaam" -#: ../syntax.c:7434 msgid "W18: Invalid character in group name" msgstr "W18: Ongeldige karakter groepnaam" -#: ../syntax.c:7448 -msgid "E849: Too many highlight and syntax groups" -msgstr "" +#~ msgid "E849: Too many highlight and syntax groups" +#~ msgstr "" -#: ../tag.c:104 msgid "E555: at bottom of tag stack" msgstr "E555: onderaan etiketstapel" -#: ../tag.c:105 msgid "E556: at top of tag stack" msgstr "E556: bo-aan etiketstapel" -#: ../tag.c:380 msgid "E425: Cannot go before first matching tag" msgstr "E425: Kan nie vr eerste etiket-treffer gaan nie" -#: ../tag.c:504 #, c-format msgid "E426: tag not found: %s" msgstr "E426: etiket nie gevind nie: %s" -#: ../tag.c:528 msgid " # pri kind tag" msgstr " # pri tipe etiket" -#: ../tag.c:531 msgid "file\n" msgstr "ler\n" -#: ../tag.c:829 msgid "E427: There is only one matching tag" msgstr "E427: Daar is slegs een etiket-treffer" -#: ../tag.c:831 msgid "E428: Cannot go beyond last matching tag" msgstr "E428: Kan nie verby laaste etiket-treffer gaan nie" -#: ../tag.c:850 #, c-format msgid "File \"%s\" does not exist" msgstr "Ler \"%s\" bestaan nie" #. Give an indication of the number of matching tags -#: ../tag.c:859 #, c-format msgid "tag %d of %d%s" msgstr "etiket %d van %d%s" -#: ../tag.c:862 msgid " or more" msgstr " of meer" -#: ../tag.c:864 msgid " Using tag with different case!" msgstr " Gaan etiket met ander kas gebruik!" -#: ../tag.c:909 #, c-format msgid "E429: File \"%s\" does not exist" msgstr "E429: Ler \"%s\" bestaan nie" #. Highlight title -#: ../tag.c:960 msgid "" "\n" " # TO tag FROM line in file/text" @@ -6054,275 +5387,173 @@ msgstr "" "\n" " # NA etiket VAN rel in ler/teks" -#: ../tag.c:1303 #, c-format msgid "Searching tags file %s" msgstr "Deursoek etiketler %s" -#: ../tag.c:1545 -msgid "Ignoring long line in tags file" -msgstr "" +#~ msgid "Ignoring long line in tags file" +#~ msgstr "" -#: ../tag.c:1915 #, c-format msgid "E431: Format error in tags file \"%s\"" msgstr "E431: Formaatfout in etiketler \"%s\"" -#: ../tag.c:1917 #, c-format msgid "Before byte %" msgstr "Voor greep %" -#: ../tag.c:1929 #, c-format msgid "E432: Tags file not sorted: %s" msgstr "E432: Etiketler ongesorteer: %s" #. never opened any tags file -#: ../tag.c:1960 msgid "E433: No tags file" msgstr "E433: Geen etiketler nie" -#: ../tag.c:2536 msgid "E434: Can't find tag pattern" msgstr "E434: Kan nie etiketpatroon vind nie" -#: ../tag.c:2544 msgid "E435: Couldn't find tag, just guessing!" msgstr "E435: Kon nie etiket vind nie, ek raai maar!" -#: ../tag.c:2797 #, fuzzy, c-format -msgid "Duplicate field name: %s" -msgstr "gelaaide fontnaam: %s" - -#: ../term.c:1442 -msgid "' not known. Available builtin terminals are:" -msgstr "' onbekend. Beskikbare ingeboude terminale is:" - -#: ../term.c:1463 -msgid "defaulting to '" -msgstr "gebruik verstek '" - -#: ../term.c:1731 -msgid "E557: Cannot open termcap file" -msgstr "E557: Kan nie 'termcap'-ler oopmaak nie" - -#: ../term.c:1735 -msgid "E558: Terminal entry not found in terminfo" -msgstr "E558: Terminaalinskrywing nie in 'terminfo' gevind nie" - -#: ../term.c:1737 -msgid "E559: Terminal entry not found in termcap" -msgstr "E559: Terminaalinskrywing nie in 'termcap' gevind nie" - -#: ../term.c:1878 -#, c-format -msgid "E436: No \"%s\" entry in termcap" -msgstr "E436: Geen \"%s\" inskrywing in termcap nie" - -#: ../term.c:2249 -msgid "E437: terminal capability \"cm\" required" -msgstr "E437: terminaalvermo \"cm\" vereis" - -#. Highlight title -#: ../term.c:4376 -msgid "" -"\n" -"--- Terminal keys ---" -msgstr "" -"\n" -"--- Terminaal sleutels ---" - -#: ../ui.c:481 -msgid "Vim: Error reading input, exiting...\n" -msgstr "Vim: Fout met lees van invoer, verlaat...\n" +#~ msgid "Duplicate field name: %s" +#~ msgstr "gelaaide fontnaam: %s" #. This happens when the FileChangedRO autocommand changes the #. * file in a way it becomes shorter. -#: ../undo.c:379 -msgid "E881: Line count changed unexpectedly" -msgstr "" +#~ msgid "E881: Line count changed unexpectedly" +#~ msgstr "" -#: ../undo.c:627 #, fuzzy, c-format -msgid "E828: Cannot open undo file for writing: %s" -msgstr "E212: Kan ler nie oopmaak vir skryf nie" +#~ msgid "E828: Cannot open undo file for writing: %s" +#~ msgstr "E212: Kan ler nie oopmaak vir skryf nie" + +#, fuzzy, c-format +#~ msgid "E5003: Unable to create directory \"%s\" for undo file: %s" +#~ msgstr "E346: Geen gids \"%s\" meer gevind in 'cdpath' nie" -#: ../undo.c:717 #, c-format -msgid "E825: Corrupted undo file (%s): %s" -msgstr "" +#~ msgid "E825: Corrupted undo file (%s): %s" +#~ msgstr "" -#: ../undo.c:1039 -msgid "Cannot write undo file in any directory in 'undodir'" -msgstr "" +#~ msgid "Cannot write undo file in any directory in 'undodir'" +#~ msgstr "" -#: ../undo.c:1074 #, c-format -msgid "Will not overwrite with undo file, cannot read: %s" -msgstr "" +#~ msgid "Will not overwrite with undo file, cannot read: %s" +#~ msgstr "" -#: ../undo.c:1092 #, c-format -msgid "Will not overwrite, this is not an undo file: %s" -msgstr "" +#~ msgid "Will not overwrite, this is not an undo file: %s" +#~ msgstr "" -#: ../undo.c:1108 -msgid "Skipping undo file write, nothing to undo" -msgstr "" +#~ msgid "Skipping undo file write, nothing to undo" +#~ msgstr "" -#: ../undo.c:1121 #, fuzzy, c-format -msgid "Writing undo file: %s" -msgstr "Besig om viminfo ler \"%s\" te stoor" +#~ msgid "Writing undo file: %s" +#~ msgstr "Besig om viminfo ler \"%s\" te stoor" -#: ../undo.c:1213 #, fuzzy, c-format -msgid "E829: write error in undo file: %s" -msgstr "E297: Skryffout in ruiller" +#~ msgid "E829: write error in undo file: %s" +#~ msgstr "E297: Skryffout in ruiller" -#: ../undo.c:1280 #, c-format -msgid "Not reading undo file, owner differs: %s" -msgstr "" +#~ msgid "Not reading undo file, owner differs: %s" +#~ msgstr "" -#: ../undo.c:1292 #, fuzzy, c-format -msgid "Reading undo file: %s" -msgstr "Besig om viminfo ler \"%s\"%s%s%s te lees" +#~ msgid "Reading undo file: %s" +#~ msgstr "Besig om viminfo ler \"%s\"%s%s%s te lees" -#: ../undo.c:1299 #, fuzzy, c-format -msgid "E822: Cannot open undo file for reading: %s" -msgstr "E195: Kan 'viminfo' ler nie oopmaak om te lees nie" +#~ msgid "E822: Cannot open undo file for reading: %s" +#~ msgstr "E195: Kan 'viminfo' ler nie oopmaak om te lees nie" -#: ../undo.c:1308 #, fuzzy, c-format -msgid "E823: Not an undo file: %s" -msgstr "E484: Kan nie ler %s oopmaak nie" +#~ msgid "E823: Not an undo file: %s" +#~ msgstr "E484: Kan nie ler %s oopmaak nie" -#: ../undo.c:1313 #, fuzzy, c-format -msgid "E824: Incompatible undo file: %s" -msgstr "E484: Kan nie ler %s oopmaak nie" +#~ msgid "E824: Incompatible undo file: %s" +#~ msgstr "E484: Kan nie ler %s oopmaak nie" -#: ../undo.c:1328 -msgid "File contents changed, cannot use undo info" -msgstr "" +#~ msgid "File contents changed, cannot use undo info" +#~ msgstr "" -#: ../undo.c:1497 #, fuzzy, c-format -msgid "Finished reading undo file %s" -msgstr "%s klaar uitgevoer" +#~ msgid "Finished reading undo file %s" +#~ msgstr "%s klaar uitgevoer" -#: ../undo.c:1586 ../undo.c:1812 -msgid "Already at oldest change" -msgstr "" +#~ msgid "Already at oldest change" +#~ msgstr "" -#: ../undo.c:1597 ../undo.c:1814 -msgid "Already at newest change" -msgstr "" +#~ msgid "Already at newest change" +#~ msgstr "" -#: ../undo.c:1806 #, fuzzy, c-format -msgid "E830: Undo number % not found" -msgstr "E92: buffer % kon nie gevind word nie" +#~ msgid "E830: Undo number % not found" +#~ msgstr "E92: buffer % kon nie gevind word nie" -#: ../undo.c:1979 msgid "E438: u_undo: line numbers wrong" msgstr "E438: u_undo: relnommers foutief" -#: ../undo.c:2183 #, fuzzy -msgid "more line" -msgstr "1 rel meer" +#~ msgid "more line" +#~ msgstr "1 rel meer" -#: ../undo.c:2185 #, fuzzy -msgid "more lines" -msgstr "1 rel meer" +#~ msgid "more lines" +#~ msgstr "1 rel meer" -#: ../undo.c:2187 #, fuzzy -msgid "line less" -msgstr "1 rel minder" +#~ msgid "line less" +#~ msgstr "1 rel minder" -#: ../undo.c:2189 #, fuzzy -msgid "fewer lines" -msgstr "% minder rels" +#~ msgid "fewer lines" +#~ msgstr "% minder rels" -#: ../undo.c:2193 #, fuzzy -msgid "change" -msgstr "1 verandering" +#~ msgid "change" +#~ msgstr "1 verandering" -#: ../undo.c:2195 #, fuzzy -msgid "changes" -msgstr "1 verandering" +#~ msgid "changes" +#~ msgstr "1 verandering" -#: ../undo.c:2225 #, fuzzy, c-format -msgid "% %s; %s #% %s" -msgstr "%R, %K" +#~ msgid "% %s; %s #% %s" +#~ msgstr "%R, %K" -#: ../undo.c:2228 -msgid "before" -msgstr "" +#~ msgid "after" +#~ msgstr "" -#: ../undo.c:2228 -msgid "after" -msgstr "" +#~ msgid "before" +#~ msgstr "" -#: ../undo.c:2325 #, fuzzy -msgid "Nothing to undo" -msgstr "Geen binding gevind nie" +#~ msgid "Nothing to undo" +#~ msgstr "Geen binding gevind nie" -#: ../undo.c:2330 -msgid "number changes when saved" -msgstr "" +#~ msgid "number changes when saved" +#~ msgstr "" -#: ../undo.c:2360 #, fuzzy, c-format -msgid "% seconds ago" -msgstr "% Kolomme; " +#~ msgid "% seconds ago" +#~ msgstr "% Kolomme; " -#: ../undo.c:2372 #, fuzzy -msgid "E790: undojoin is not allowed after undo" -msgstr "E407: %s nie toegelaat hier nie" +#~ msgid "E790: undojoin is not allowed after undo" +#~ msgstr "E407: %s nie toegelaat hier nie" -#: ../undo.c:2466 msgid "E439: undo list corrupt" msgstr "E439: herstellys korrup" -#: ../undo.c:2495 msgid "E440: undo line missing" msgstr "E440: herstelrel ontbreek" -#: ../version.c:600 -msgid "" -"\n" -"Included patches: " -msgstr "" -"\n" -"Ingeslote laslappies:" - -#: ../version.c:627 -#, fuzzy -msgid "" -"\n" -"Extra patches: " -msgstr "Eksterne subtreffers:\n" - -#: ../version.c:639 ../version.c:864 -msgid "Modified by " -msgstr "Gewysig deur " - -#: ../version.c:646 msgid "" "\n" "Compiled " @@ -6330,933 +5561,919 @@ msgstr "" "\n" "Gekompileer op " -#: ../version.c:649 msgid "by " msgstr "deur " -#: ../version.c:660 -msgid "" -"\n" -"Huge version " -msgstr "" -"\n" -"Enorme weergawe " +#~ msgid "" +#~ "\n" +#~ "\n" +#~ "Features: " +#~ msgstr "" -#: ../version.c:661 -msgid "without GUI." -msgstr "sonder GUI." - -#: ../version.c:662 -msgid " Features included (+) or not (-):\n" -msgstr " Kenmerke in- (+) of uitgesluit (-):\n" - -#: ../version.c:667 msgid " system vimrc file: \"" msgstr " stelsel vimrc-ler: \"" -#: ../version.c:672 -msgid " user vimrc file: \"" -msgstr " gebruiker vimrc-ler: \"" - -#: ../version.c:677 -msgid " 2nd user vimrc file: \"" -msgstr " 2de gebruiker vimrc-ler \"" - -#: ../version.c:682 -msgid " 3rd user vimrc file: \"" -msgstr " 3de gebruiker vimrc-ler \"" - -#: ../version.c:687 -msgid " user exrc file: \"" -msgstr " gebruiker exrc-ler: \"" - -#: ../version.c:692 -msgid " 2nd user exrc file: \"" -msgstr " 2de gebruiker exrc-ler: \"" - -#: ../version.c:699 msgid " fall-back for $VIM: \"" msgstr " bystand vir $VIM: \"" -#: ../version.c:705 msgid " f-b for $VIMRUNTIME: \"" msgstr " bystand vir $VIMRUNTIME: \"" -#: ../version.c:709 -msgid "Compilation: " -msgstr "Kompilering: " +#, fuzzy +#~ msgid "Nvim is open source and freely distributable" +#~ msgstr "Vim is vryekode, en vrylik verspreibaar" -#: ../version.c:712 -msgid "Linking: " -msgstr "Koppeling: " +#~ msgid "https://neovim.io/community" +#~ msgstr "" -#: ../version.c:717 -msgid " DEBUG BUILD" -msgstr " ONTFOUTINGS-KOMPILERING" +#, fuzzy +#~ msgid "type :help nvim if you are new! " +#~ msgstr "tik :help uganda as jy hou van Vim " -#: ../version.c:767 -msgid "VIM - Vi IMproved" -msgstr "VIM - Vi Met skop" +#, fuzzy +#~ msgid "type :checkhealth to optimize Nvim" +#~ msgstr "Tik :quit om Vim te verlaat" -# njj: :)) -#: ../version.c:769 -msgid "version " -msgstr "Weergawe " - -#: ../version.c:770 -msgid "by Bram Moolenaar et al." -msgstr "deur Bram Moolenaar et al." - -#: ../version.c:774 -msgid "Vim is open source and freely distributable" -msgstr "Vim is vryekode, en vrylik verspreibaar" - -#: ../version.c:776 -msgid "Help poor children in Uganda!" -msgstr "Help arm kinders in Uganda!" - -#: ../version.c:777 -msgid "type :help iccf for information " -msgstr "tik :help iccf vir meer inligting hieroor " - -#: ../version.c:779 msgid "type :q to exit " msgstr "tik :q om program verlaat " -#: ../version.c:780 -msgid "type :help or for on-line help" -msgstr "tik :help of vir aanlyn hulp " +#, fuzzy +#~ msgid "type :help for help " +#~ msgstr "tik :q om program verlaat " -#: ../version.c:781 -msgid "type :help version7 for version info" -msgstr "tik :help version7 vir weergawe-inligting" +msgid "Help poor children in Uganda!" +msgstr "Help arm kinders in Uganda!" -#: ../version.c:784 -msgid "Running in Vi compatible mode" -msgstr "Voer tans uit in Vi-versoenbare modus" +msgid "type :help iccf for information " +msgstr "tik :help iccf vir meer inligting hieroor " -#: ../version.c:785 -msgid "type :set nocp for Vim defaults" -msgstr "tik :set nocp vir Vim verstekwaardes " - -#: ../version.c:786 -msgid "type :help cp-default for info on this" -msgstr "tik :help cp-default vir meer inligting hieroor" - -#: ../version.c:827 msgid "Sponsor Vim development!" msgstr "Borg Vim ontwikkeling!" -#: ../version.c:828 msgid "Become a registered Vim user!" msgstr "Word 'n geregistreerde Vim gebruiker!" -#: ../version.c:831 msgid "type :help sponsor for information " msgstr "tik :help sponsor vir meer inligting hieroor " -#: ../version.c:832 msgid "type :help register for information " msgstr "tik :help register vir meer inligting hieroor " -#: ../version.c:834 msgid "menu Help->Sponsor/Register for information " msgstr "menu Hulp->Borg/Registreer vir meer inligting" -#: ../window.c:119 msgid "Already only one window" msgstr "Daar is alreeds slegs een venster" -#: ../window.c:224 msgid "E441: There is no preview window" msgstr "E441: Daar is nie 'n voorskou-venster nie" -#: ../window.c:559 msgid "E442: Can't split topleft and botright at the same time" msgstr "E442: Kan nie bo-links en onder-regs terselfdertyd verdeel nie" -#: ../window.c:1228 msgid "E443: Cannot rotate when another window is split" msgstr "E443: Kan nie roteer terwyl 'n ander venster verdeel is nie" -#: ../window.c:1803 msgid "E444: Cannot close last window" msgstr "E444: Kan nie laaste venster toemaak nie" -#: ../window.c:1810 #, fuzzy -msgid "E813: Cannot close autocmd window" -msgstr "E444: Kan nie laaste venster toemaak nie" +#~ msgid "E813: Cannot close autocmd window" +#~ msgstr "E444: Kan nie laaste venster toemaak nie" -#: ../window.c:1814 #, fuzzy -msgid "E814: Cannot close window, only autocmd window would remain" -msgstr "E444: Kan nie laaste venster toemaak nie" +#~ msgid "E814: Cannot close window, only autocmd window would remain" +#~ msgstr "E444: Kan nie laaste venster toemaak nie" -#: ../window.c:2717 msgid "E445: Other window contains changes" msgstr "E445: Die ander venster bevat veranderinge" -#: ../window.c:4805 msgid "E446: No file name under cursor" msgstr "E446: Geen lernaam onder loper" -#~ msgid "[Error List]" -#~ msgstr "[Foutlys]" +#, c-format +#~ msgid "E799: Invalid ID: % (must be greater than or equal to 1)" +#~ msgstr "" -#~ msgid "[No File]" -#~ msgstr "[Geen ler]" +#, fuzzy, c-format +#~ msgid "E801: ID already taken: %" +#~ msgstr "E157: Ongeldige teken ID: %" -#~ msgid "Patch file" -#~ msgstr "Laslap ler" +#, fuzzy +#~ msgid "List or number required" +#~ msgstr "E471: Parameter benodig" -#~ msgid "E106: Unknown variable: \"%s\"" -#~ msgstr "E106: Onbekende veranderlike: \"%s\"" +#, c-format +#~ msgid "E802: Invalid ID: % (must be greater than or equal to 1)" +#~ msgstr "" + +#, fuzzy, c-format +#~ msgid "E803: ID not found: %" +#~ msgstr "E320: Kan nie rel % vind nie" + +#~ msgid "WARNING: tag command changed a buffer!!!" +#~ msgstr "WAARSKUWING: etiketbevel het buffer verander!!!" + +#~ msgid "Leave: %s" +#~ msgstr "Verlaat: %s" + +#~ msgid "File name '%s' is valid" +#~ msgstr "lernaam '%s is ongeldig" + +#~ msgid "Not a proper file name: '%s'" +#~ msgstr "Nie 'n geldige lernaam nie: '%s'" + +#~ msgid "Change dir debugging enabled." +#~ msgstr "Verandergids ontfouting in staat gestel" + +#~ msgid "Warning: %s option changed from modeline" +#~ msgstr "Waarskuwing: %s opsie verander vanaf moduslyn" + +#~ msgid "Security error: shell command output is a symbolic link" +#~ msgstr "Sekuriteitsfout: Dop-bevel afvoer is 'n simboliese skakel" + +#~ msgid "No fold at this line" +#~ msgstr "Geen vou by hierdie rel nie" + +#~ msgid "Fold must be at least two lines" +#~ msgstr "'n Vou moet ten minste 2 rels wees" + +#~ msgid "Security error: filter input is a symbolic link: %s" +#~ msgstr "Sekuriteitsfout: filter invoer is 'n simboliese skakel" + +#~ msgid "Security error: 'charconvert' output is a symbolic link" +#~ msgstr "Sekuriteitsfout: 'charconvert' afvoer is 'n simboliese skakel" + +#~ msgid "Security error: filter output is a symbolic link: %s" +#~ msgstr "Sekuriteitsfout: filter afvoer is 'n simboliese skakel" + +#~ msgid "makeef option not set" +#~ msgstr "'makeef' opsie nie aan nie" + +#~ msgid "line ~%: %s" +#~ msgstr "rel ~%: %s" + +#~ msgid "Security error: new viminfo file is a symbolic link" +#~ msgstr "Sekuriteitsfout: nuwe viminfo ler is a simboliese skakel" + +#~ msgid " PPC has a much better architecture. " +#~ msgstr " PPC het 'n veel beter argitektuur. " + +#~ msgid " WARNING: Intel CPU detected. " +#~ msgstr " WAARSKUWING: Intel SVE bespeur. " + +#~ msgid "Unexpected magic character; check META." +#~ msgstr "Onverwagte toorkarakter; kyk na META." + +#~ msgid "\\* follows nothing" +#~ msgstr "\\* volg niks" + +#~ msgid "\\{ follows nothing" +#~ msgstr "\\{ volg niks" + +#~ msgid "\\@ follows nothing" +#~ msgstr "\\@ volg niks" + +#~ msgid "\\+ follows nothing" +#~ msgstr "\\+ volg niks" + +#~ msgid "\\= follows nothing" +#~ msgstr "\\= volg niks" + +#~ msgid "Nested *, \\=, \\+, \\! or \\{" +#~ msgstr "Geneste *, \\=, \\+, \\! of \\{" + +#~ msgid "Unmatched \\(" +#~ msgstr "Onpaar \\(" + +#~ msgid "Too many \\(" +#~ msgstr "Te veel \\(" + +#~ msgid "Ambiguous mapping, conflicts with \"%s\"" +#~ msgstr "Dubbelsinnige binding, bots met \"%s\"" + +#~ msgid "Ambiguous mapping" +#~ msgstr "Dubbelsinnige binding" + +#~ msgid "Command too long" +#~ msgstr "Bevel te lank" + +#~ msgid "GUI is not running" +#~ msgstr "GUI voer nie uit nie" + +#~ msgid "Cannot clear all highlight groups" +#~ msgstr "Kan nie alle uitliggroepe leegmaak nie" + +#~ msgid "Library call failed" +#~ msgstr "Biblioteekfunksieroep het gefaal" + +#~ msgid "some" +#~ msgstr "sommige" + +#~ msgid "deadly signal" +#~ msgstr "dodelike sein" + +#~ msgid "Unsupported screen mode" +#~ msgstr "Ongesteunde skermmodus" + +#~ msgid "PC (16 bits Vim)" +#~ msgstr "PC (16 bisse Vim)" + +#~ msgid "PC (32 bits Vim)" +#~ msgstr "PC (32 bisse Vim)" + +#~ msgid "Out of memory" +#~ msgstr "Geheue op" + +#~ msgid "Sorry, deleting a menu is not possible in the Athena version" +#~ msgstr "" +#~ "Jammer, in die Athena weergawe is dit onmoontlik om 'n kieslys te skrap" + +#~ msgid "Can't create input context." +#~ msgstr "Kan nie invoerkonteks skep nie." + +#~ msgid "Unrecognized sniff request [%s]" +#~ msgstr "Onbekende sniff versoek [%s]" + +#~ msgid "-- SNiFF+ commands --" +#~ msgstr "-- SNiFF+ bevele --" + +#~ msgid "Retrieve next symbol" +#~ msgstr "Kry volgende simbool" + +#~ msgid "cs_add_common: alloc fail #4" +#~ msgstr "'cs_add_common': toeken onsuksesvol #4" + +#~ msgid "cs_add_common: alloc fail #3" +#~ msgstr "'cs_add_common': toeken onsuksesvol #3" + +#~ msgid "cs_add_common: alloc fail #2" +#~ msgstr "'cs_add_common': toeken onsuksesvol #2" + +#~ msgid "cs_add_common: alloc fail #1" +#~ msgstr "'cs_add_common': toeken onsuksesvol #1" + +#~ msgid "automata ERROR: internal" +#~ msgstr "automata FOUT: intern" + +#~ msgid "Your language Font missing" +#~ msgstr "Jou taal Font ontbreek" + +#~ msgid "fontset name: %s" +#~ msgstr "fontstel naam: %s" + +#~ msgid " sh : export LANG=ko" +#~ msgstr " sh: export LANG=af" + +#~ msgid " csh: setenv LANG ko" +#~ msgstr " csh: setenv LANG af" + +#~ msgid "For korean:" +#~ msgstr "Vir Afrikaans:" + +#~ msgid "locale is not set correctly" +#~ msgstr "lokaal is nie korrek gestel nie" + +#~ msgid "Error: During loading fontset %s" +#~ msgstr "Fout: Gedurende die laai van fontstel %s" + +#~ msgid "Topic:" +#~ msgstr "Onderwerp:" + +#~ msgid "VIM - Help on..." +#~ msgstr "VIM - Hulp met.." + +#~ msgid "Cannot use :normal from event handler" +#~ msgstr "Kan ':normal' nie vanuit gebeurtenishanteerder gebruik nie" + +#~ msgid "Invalid line number: %" +#~ msgstr "Ongeldige relnommer: %" + +#~ msgid "Missing filename" +#~ msgstr "Ontbrekende lernaam" + +#~ msgid "No servers found for this display" +#~ msgstr "Geen bedieners gevind vir die 'display' nie" + +#~ msgid "E258: no matches found in cscope connections" +#~ msgstr "E258: geen treffers gevind in 'cscope' verbindings nie" + +#~ msgid "Binary tag search" +#~ msgstr "Binre etiketsoek" + +#~ msgid "Linear tag search" +#~ msgstr "Linire etiketsoek" + +#~ msgid " LINE" +#~ msgstr " REL" + +#~ msgid " BLOCK" +#~ msgstr " BLOK" + +#~ msgid "% lines ~ed" +#~ msgstr "% rels ge-~" + +#~ msgid "1 line ~ed" +#~ msgstr "1 rel ge-~" + +#~ msgid "--help\t\tShow Gnome arguments" +#~ msgstr "--help\t\tWys Gnome parameters" + +#~ msgid "\"\n" +#~ msgstr "\"\n" + +#~ msgid "E249: couldn't read VIM instance registry property" +#~ msgstr "E249: kon nie VIM instansie register-kenmerk lees nie" + +#~ msgid "%2d %-5ld %-34s \n" +#~ msgstr "%2d %-5ld %-34s \n" + +# njj: dalk 'verbinding' ipv 'verbinding' orals? +#~ msgid "couldn't malloc\n" +#~ msgstr "kon nie 'malloc' nie\n" + +#~ msgid "E260: cscope connection not found" +#~ msgstr "E260: 'cscope' verbinding nie gevind nie" + +#~ msgid "error reading cscope connection %d" +#~ msgstr "'cscope' verbinding %d kon nie gelees word nie" + +#~ msgid "Run Macro" +#~ msgstr "Voer Makro uit" + +#~ msgid "function " +#~ msgstr "funksie " + +#~ msgid "E463: Region is guarded, cannot modify" +#~ msgstr "E463: Omgewing is onder bewaking, kan nie verander nie" + +#~ msgid "E233: cannot open display" +#~ msgstr "E233: kan nie vertoonskerm oopmaak nie" + +#~ msgid "E247: no registered server named \"%s\"" +#~ msgstr "E247: geen geregistreerde bediener genaamd \"%s\"" + +#~ msgid "E800: Arabic cannot be used: Not enabled at compile time\n" +#~ msgstr "" +#~ "E800: Arabies kan nie gebruik word nie: Nie tydens kompilering gekies " +#~ "nie\n" + +#~ msgid "E27: Farsi cannot be used: Not enabled at compile time\n" +#~ msgstr "" +#~ "E27: Farsi kan nie gebruik word nie: Nie tydens kompilering gekies nie\n" + +#~ msgid "E26: Hebrew cannot be used: Not enabled at compile time\n" +#~ msgstr "" +#~ "E26: Hebreeus kan nie gebruik word nie: Nie tydens kompilering gekies " +#~ "nie\n" + +#~ msgid "E448: Could not load library function %s" +#~ msgstr "E448: Kon nie biblioteek funksie laai nie %s" + +#~ msgid "E234: Unknown fontset: %s" +#~ msgstr "E234: Onbekende fontstel: %s" + +#~ msgid "Path length too long!" +#~ msgstr "Pad-lengte te lank" + +#~ msgid "gvimext.dll error" +#~ msgstr "'gvimext.dll' fout" + +#~ msgid "Error creating process: Check if gvim is in your path!" +#~ msgstr "FOut met die skep van proses: Kyk of gvim in jou pad is!" + +#~ msgid "Edits the selected file(s) with Vim" +#~ msgstr "Wysig die gekose ler(s) met Vim" + +#~ msgid "Edit with existing Vim - &" +#~ msgstr "Wysig met bestaande Vim - &" + +#~ msgid "Edit with &Vim" +#~ msgstr "Wysig met &Vim" + +#~ msgid "&Diff with Vim" +#~ msgstr "Wys verskille ('&diff') met Vim" + +#~ msgid "Edit with single &Vim" +#~ msgstr "Wysig met 'n enkel &Vim" + +#~ msgid "Edit with &multiple Vims" +#~ msgstr "Wysig met &meer as een Vim" + +#~ msgid "E299: Perl evaluation forbidden in sandbox without the Safe module" +#~ msgstr "" +#~ "E299: Perl evaluasie verbied in die sandput sonder die 'Safe' module" #~ msgid "" -#~ "&OK\n" -#~ "&Cancel" +#~ "Sorry, this command is disabled: the Perl library could not be loaded." #~ msgstr "" -#~ "&OK\n" -#~ "&Kanselleer" +#~ "Jammer, hierdie bevel is afgeskakel: die Perl biblioteek kon nie gelaai " +#~ "word nie." -#~ msgid "E240: No connection to Vim server" -#~ msgstr "E240: Geen verbinding met Vim bediener" +#~ msgid "E370: Could not load library %s" +#~ msgstr "E370: Kon nie biblioteek laai nie %s" -#~ msgid "E277: Unable to read a server reply" -#~ msgstr "E277: Kon bediener-terugvoer nie lees nie" +#~ msgid "type :help windows95 for info on this" +#~ msgstr "tik :help windows95 vir meer inligting hieroor" -#~ msgid "E241: Unable to send to %s" -#~ msgstr "E241: Kan nie na %s stuur nie" +#~ msgid "WARNING: Windows 95/98/ME detected" +#~ msgstr "WAARSKUWING: Windows 95/98/ME bespeur" -#~ msgid "E130: Undefined function: %s" -#~ msgstr "E130: Ongedefinieerde funksie: %s" +#~ msgid " for Vim defaults " +#~ msgstr " vir Vim verstekwaardes" -#~ msgid "Save As" -#~ msgstr "Stoor As" +#~ msgid "menu Edit->Global Settings->Toggle Vi Compatible" +#~ msgstr "menu Redigeer->Global verstellings->Stel en herstel Vi Versoenbaar" -#~ msgid "Source Vim script" -#~ msgstr "Voer Vim skrip uit" +#~ msgid "menu Edit->Global Settings->Toggle Insert Mode " +#~ msgstr "menu Redigeer->Globale verstellings->Stel en herstel Invoeg Modus" -#~ msgid "Edit File" -#~ msgstr "Verander ler" +#~ msgid "Running modeless, typed text is inserted" +#~ msgstr "Voer modus-loos uit, getikte teks word ingevoeg" -#~ msgid " (NOT FOUND)" -#~ msgstr " (NIE GEVIND NIE)" +#~ msgid "menu Help->Orphans for information " +#~ msgstr "menu Hulp->Weeskinders vir meer inligting hieroor " -#~ msgid "Edit File in new window" -#~ msgstr "Bewerk ler in nuwe venster" +#~ msgid "Compiler: " +#~ msgstr "Kompileerder: " -#~ msgid "Append File" -#~ msgstr "Las aan by ler" +#~ msgid " system menu file: \"" +#~ msgstr " stelsel kieslys-ler: \"" -#~ msgid "Window position: X %d, Y %d" -#~ msgstr "Vensterposisie: X %d, Y %d" +#~ msgid "3rd user gvimrc file: \"" +#~ msgstr "3de gebruiker gvimrc-ler: \"" -#~ msgid "Save Redirection" -#~ msgstr "Stoor Herversturing" +#~ msgid "2nd user gvimrc file: \"" +#~ msgstr "2de gebruiker gvimrc-ler: \"" -#~ msgid "Save View" -#~ msgstr "Stoor Oorsig" +#~ msgid " user gvimrc file: \"" +#~ msgstr " gebruiker gvimrc-ler: \"" -#~ msgid "Save Session" -#~ msgstr "Stoor Sessie" +#~ msgid " system gvimrc file: \"" +#~ msgstr " stelsel gvimrc-ler: \"" -#~ msgid "Save Setup" -#~ msgstr "Stoor konfigurasie" +#~ msgid "with (classic) GUI." +#~ msgstr "met (klassieke) GUI." -#~ msgid "E196: No digraphs in this version" -#~ msgstr "E196: Geen digrawe in hierdie weergawe nie" +#~ msgid "with Cocoa GUI." +#~ msgstr "met Cocoa GUI." -#~ msgid "[NL found]" -#~ msgstr "[NL gevind]" +#~ msgid "with Carbon GUI." +#~ msgstr "met Carbon GUI." -#~ msgid "[crypted]" -#~ msgstr "[gekodeer]" +#~ msgid "with GUI." +#~ msgstr "met GUI." -#~ msgid "[CONVERSION ERROR]" -#~ msgstr "[OMSETTINGSFOUT]" +#~ msgid "with Photon GUI." +#~ msgstr "met Photon GUI." -#~ msgid "NetBeans disallows writes of unmodified buffers" -#~ msgstr "NetBeans laat nie skryf toe van onveranderde buffers nie" +#~ msgid "with BeOS GUI." +#~ msgstr "met BeOS GUI" -#~ msgid "Partial writes disallowed for NetBeans buffers" -#~ msgstr "Gedeeltelike skryf word nie toegelaat vir NetBeans buffers nie" +#~ msgid "with X11-Athena GUI." +#~ msgstr "met X11-Athena GUI" -#~ msgid "E460: The resource fork would be lost (add ! to override)" -#~ msgstr "E460: Die hulpbronvurk sal verlore gaan (gebruik ! om te dwing)" +#~ msgid "with X11-neXtaw GUI." +#~ msgstr "met X11-neXtaw GUI" -#~ msgid " " -#~ msgstr " " +#~ msgid "with X11-Motif GUI." +#~ msgstr "met X11-Motif GUI." -#~ msgid "E616: vim_SelFile: can't get font %s" -#~ msgstr "E616: 'vim_SelFile': kan font %s nie kry nie" +#~ msgid "with GTK GUI." +#~ msgstr "met GTK GUI" -#~ msgid "E614: vim_SelFile: can't return to current directory" -#~ msgstr "E614: 'vim_SelFile': Kan nie terugkeer na huidige gids nie" +#~ msgid "with GTK2 GUI." +#~ msgstr "met GTK2 GUI" -#~ msgid "Pathname:" -#~ msgstr "Gidsnaam:" +#~ msgid "with GTK-GNOME GUI." +#~ msgstr "met GTK-GNOME GUI." -#~ msgid "E615: vim_SelFile: can't get current directory" -#~ msgstr "E615: vim_SelFile: Kan nie huidige gids verkry nie" - -#~ msgid "OK" -#~ msgstr "OK" - -#~ msgid "Cancel" -#~ msgstr "Kanselleer" - -#~ msgid "Vim dialog" -#~ msgstr "Vim dialooghokkie" - -#~ msgid "Scrollbar Widget: Could not get geometry of thumb pixmap." -#~ msgstr "" -#~ "Rolstaafelement: Kon nie pikselmatriks-duimnael se geometrie kry nie" - -#~ msgid "E232: Cannot create BalloonEval with both message and callback" -#~ msgstr "E232: Kan nie BalloonEval skep met beide boodskap en terugroep nie" - -#~ msgid "E229: Cannot start the GUI" -#~ msgstr "E229: Kan nie die GUI begin nie" - -#~ msgid "E230: Cannot read from \"%s\"" -#~ msgstr "E230: Kan nie lees uit \"%s\" nie" - -#~ msgid "E665: Cannot start GUI, no valid font found" -#~ msgstr "E665: Kan nie GUI begin nie, geen geldige font gevind nie" - -#~ msgid "E231: 'guifontwide' invalid" -#~ msgstr "E231: 'guifontwide' ongeldig" - -#~ msgid "E599: Value of 'imactivatekey' is invalid" -#~ msgstr "E599: Waarde van 'imactivatekey' is ongeldig" - -#~ msgid "E254: Cannot allocate color %s" -#~ msgstr "E254: Kan nie kleur %s toeken nie" - -#~ msgid "Vim dialog..." -#~ msgstr "Vim dialooghokkie..." - -#~ msgid "Input _Methods" -#~ msgstr "Invoer _Metodes" - -#~ msgid "VIM - Search and Replace..." -#~ msgstr "VIM - Soek en Vervang..." - -#~ msgid "VIM - Search..." -#~ msgstr "VIM - Soek..." - -#~ msgid "Find what:" -#~ msgstr "Soek na:" - -#~ msgid "Replace with:" -#~ msgstr "Vervang met:" - -#~ msgid "Match whole word only" -#~ msgstr "Tref slegs presiese woord" - -#~ msgid "Match case" -#~ msgstr "Tref kas" - -#~ msgid "Direction" -#~ msgstr "Rigting" - -#~ msgid "Up" -#~ msgstr "Op" - -#~ msgid "Down" -#~ msgstr "Af" - -#~ msgid "Find Next" -#~ msgstr "Vind volgende" - -#~ msgid "Replace" -#~ msgstr "Vervang" - -#~ msgid "Replace All" -#~ msgstr "Vervang alles" - -#~ msgid "Vim: Received \"die\" request from session manager\n" -#~ msgstr "Vim: Het die \"die\" opdrag ontvang van sessiebestuurder\n" - -#~ msgid "Vim: Main window unexpectedly destroyed\n" -#~ msgstr "Vim: Hoofvenster onverwags verwoes\n" - -#~ msgid "Font Selection" -#~ msgstr "Fontkeuse" - -#~ msgid "Used CUT_BUFFER0 instead of empty selection" -#~ msgstr "'CUT_BUFFER0' is gebruik in plaas van le seleksie" - -#~ msgid "Filter" -#~ msgstr "Filter" - -#~ msgid "Directories" -#~ msgstr "Gidse" - -#~ msgid "Help" -#~ msgstr "Hulp" - -#~ msgid "Files" -#~ msgstr "Lers" - -#~ msgid "Selection" -#~ msgstr "Seleksie" - -#~ msgid "Undo" -#~ msgstr "Herroep" - -#~ msgid "E671: Cannot find window title \"%s\"" -#~ msgstr "E671: Kan nie venster titel vind nie \"%s\"" - -#~ msgid "E243: Argument not supported: \"-%s\"; Use the OLE version." -#~ msgstr "E243: Parameter nie bekend: \"-%s\"; Gebruik die OLE weergawe." - -#~ msgid "E672: Unable to open window inside MDI application" -#~ msgstr "E672: Kon nie venster oopmaak binne 'n MDI toepassing nie" - -#~ msgid "Find string (use '\\\\' to find a '\\')" -#~ msgstr "Vind string (gebruik '\\\\' om 'n '\\' te vind" - -#~ msgid "Find & Replace (use '\\\\' to find a '\\')" -#~ msgstr "Vind & vervang string (gebruik '\\\\' om 'n '\\' te vind" - -#~ msgid "" -#~ "Vim E458: Cannot allocate colormap entry, some colors may be incorrect" -#~ msgstr "" -#~ "Vim E458: Kan nie kleurkaart-inskrywing toeken nie, sommige kleure mag " -#~ "verkeerd wees" - -#~ msgid "E250: Fonts for the following charsets are missing in fontset %s:" -#~ msgstr "" -#~ "E250: Fonte vir die volgende karakterstelle ontbreek in fontversameling " -#~ "%s:" - -#~ msgid "E252: Fontset name: %s" -#~ msgstr "E252: Fontstel naam: %s" - -#~ msgid "Font '%s' is not fixed-width" -#~ msgstr "Font '%s' is nie 'n vaste-wydte font nie" - -#~ msgid "E253: Fontset name: %s\n" -#~ msgstr "E253: Fonstel naam: %s\n" - -#~ msgid "Font0: %s\n" -#~ msgstr "Font0: %s\n" - -#~ msgid "Font1: %s\n" -#~ msgstr "Font1: %s\n" - -#~ msgid "Font% width is not twice that of font0\n" -#~ msgstr "Font% wydte is nie twee keer de van font0 nie\n" - -#~ msgid "Font0 width: %\n" -#~ msgstr "Font0 wydte: %\n" - -#~ msgid "" -#~ "Font1 width: %\n" -#~ "\n" -#~ msgstr "" -#~ "Font1 wydte: %\n" -#~ "\n" - -#~ msgid "E256: Hangul automata ERROR" -#~ msgstr "E256: Hangul outomatiserings FOUT" - -#~ msgid "E563: stat error" -#~ msgstr "E563: 'stat' fout" - -#~ msgid "E625: cannot open cscope database: %s" -#~ msgstr "E625: Kon nie 'cscope' databasis oopmaak nie: %s" - -#~ msgid "E626: cannot get cscope database information" -#~ msgstr "E626: kan nie 'cscope' databasisinligting kry nie" - -#~ msgid "E569: maximum number of cscope connections reached" -#~ msgstr "E569: maksimum aantal 'cscope' verbindings bereik" - -#~ msgid "" -#~ "E263: Sorry, this command is disabled, the Python library could not be " -#~ "loaded." -#~ msgstr "" -#~ "E263: Jammer, hierdie bevel is afgeskakel, die Python biblioteek ler kon " -#~ "nie gelaai word nie." - -#~ msgid "E659: Cannot invoke Python recursively" -#~ msgstr "E659: Kan nie Python rekursief roep nie" - -#~ msgid "can't delete OutputObject attributes" -#~ msgstr "kan nie 'OutputObject' eienskappe skrap nie" - -#~ msgid "softspace must be an integer" -#~ msgstr "'softspace' moet 'n heelgetal wees" - -#~ msgid "invalid attribute" -#~ msgstr "ongeldige eienskap" - -#~ msgid "writelines() requires list of strings" -#~ msgstr "'writelines()' benodig 'n lys van stringe" - -#~ msgid "E264: Python: Error initialising I/O objects" -#~ msgstr "E264: Python: Kon nie I/O objekte inwy nie" - -# njj: net 'n voorstel .. -#~ msgid "invalid expression" -#~ msgstr "ongeldige uitdrukking" - -#~ msgid "expressions disabled at compile time" -#~ msgstr "uitdrukkings afgeskakel tydens kompilering" - -#~ msgid "attempt to refer to deleted buffer" -#~ msgstr "poging om na 'n geskrapte buffer te verwys" - -#~ msgid "line number out of range" -#~ msgstr "relnommer buite omvang" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "invalid mark name" -#~ msgstr "onbekende merknaam" - -#~ msgid "no such buffer" -#~ msgstr "buffer bestaan nie" - -#~ msgid "attempt to refer to deleted window" -#~ msgstr "poging om na geskrapte venster te verwys" - -#~ msgid "readonly attribute" -#~ msgstr "leesalleen eienskap" - -#~ msgid "cursor position outside buffer" -#~ msgstr "loperposisie buite buffer" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "" -#~ msgstr "" - -#~ msgid "no such window" -#~ msgstr "geen sodanige venster nie" - -#~ msgid "cannot save undo information" -#~ msgstr "kan nie herwin-inligting stoor nie" - -#~ msgid "cannot delete line" -#~ msgstr "kan rel nie verwyder nie" - -#~ msgid "cannot replace line" -#~ msgstr "kan rel nie vervang nie" - -#~ msgid "cannot insert line" -#~ msgstr "kan rel nie byvoeg nie" - -#~ msgid "string cannot contain newlines" -#~ msgstr "string kan nie 'newlines' bevat nie" - -#~ msgid "" -#~ "E266: Sorry, this command is disabled, the Ruby library could not be " -#~ "loaded." -#~ msgstr "" -#~ "E266: Jammer, hierdie bevel is afgeskakel, die Ruby biblioteekler kon " -#~ "nie gelaai word nie." - -#~ msgid "E273: unknown longjmp status %d" -#~ msgstr "E273: Onbekende 'longjmp' status %d" - -#~ msgid "Toggle implementation/definition" -#~ msgstr "Stel en herstel implimentasie/definisie" - -#~ msgid "Show base class of" -#~ msgstr "Wys basisklas van" - -#~ msgid "Show overridden member function" -#~ msgstr "Wys vervangde lidfunksie" - -#~ msgid "Retrieve from file" -#~ msgstr "Gaan haal uit ler" - -#~ msgid "Retrieve from project" -#~ msgstr "Gaan haal uit projek" - -#~ msgid "Retrieve from all projects" -#~ msgstr "Gaan haal uit alle projekte" - -#~ msgid "Retrieve" -#~ msgstr "Gaan haal" - -#~ msgid "Show source of" -#~ msgstr "Wys kode van" - -#~ msgid "Find symbol" -#~ msgstr "Vind simbool" - -#~ msgid "Browse class" -#~ msgstr "Kyk klas deur" - -#~ msgid "Show class in hierarchy" -#~ msgstr "Wys klas in hirargie" - -#~ msgid "Show class in restricted hierarchy" -#~ msgstr "Wys klas in beperkte hirargie" - -#~ msgid "Xref refers to" -#~ msgstr "Xref verwys na" - -#~ msgid "Xref referred by" -#~ msgstr "Xref verwys deur" - -#~ msgid "Xref has a" -#~ msgstr "Xref het 'n" - -#~ msgid "Xref used by" -#~ msgstr "Xref gebruik deur" - -#~ msgid "Show docu of" -#~ msgstr "Wys 'docu' van" - -#~ msgid "Generate docu for" -#~ msgstr "Genereer 'docu' vir" - -#~ msgid "" -#~ "Cannot connect to SNiFF+. Check environment (sniffemacs must be found in " -#~ "$PATH).\n" -#~ msgstr "" -#~ "Kan nie 'n verbinding met 'SNiFF+' maak nie. Kyk of die omgewing reg is " -#~ "('sniffemacs' moet in '$PATH' gevind word).\n" - -#~ msgid "E274: Sniff: Error during read. Disconnected" -#~ msgstr "E274: Sniff: Fout gedurende lees. Verbinding gebreek" - -#~ msgid "SNiFF+ is currently " -#~ msgstr "SNiFF+ is tans" - -#~ msgid "not " -#~ msgstr "nie " - -#~ msgid "connected" -#~ msgstr "gekonnekteer" - -#~ msgid "E275: Unknown SNiFF+ request: %s" -#~ msgstr "E275: Onbekende SNiFF+ versoek: %s" - -#~ msgid "E276: Error connecting to SNiFF+" -#~ msgstr "E276: Fout in konnekteer met SNiFF+" - -#~ msgid "E278: SNiFF+ not connected" -#~ msgstr "E278: SNiFF+ is nie gekonnekteer nie" - -#~ msgid "Sniff: Error during write. Disconnected" -#~ msgstr "Sniff: Fout gedurende stoor. Verbinding gebreek" - -#~ msgid "not implemented yet" -#~ msgstr "nog nie gemplementeer nie" - -#~ msgid "unknown option" -#~ msgstr "onbekende opsie" - -#~ msgid "cannot set line(s)" -#~ msgstr "kan nie rel(s) stel nie" - -#~ msgid "mark not set" -#~ msgstr "merker nie gestel nie" - -#~ msgid "row %d column %d" -#~ msgstr "ry %d kolom %d" - -#~ msgid "cannot insert/append line" -#~ msgstr "kan nie rel invoeg/aanlas nie" - -#~ msgid "unknown flag: " -#~ msgstr "onbekende vlag: " - -#~ msgid "unknown vimOption" -#~ msgstr "onbekende 'vimOption'" - -#~ msgid "keyboard interrupt" -#~ msgstr "sleutelbordonderbreking" - -#~ msgid "vim error" -#~ msgstr "vim fout" - -#~ msgid "cannot create buffer/window command: object is being deleted" -#~ msgstr "kan nie buffer/venster bevel skep nie: voorwerp word geskrap" - -#~ msgid "" -#~ "cannot register callback command: buffer/window is already being deleted" -#~ msgstr "" -#~ "kan nie terugroepbevel registreer nie: buffer/venster word alreeds geskrap" - -#~ msgid "" -#~ "E280: TCL FATAL ERROR: reflist corrupt!? Please report this to vim-" -#~ "dev@vim.org" -#~ msgstr "" -#~ "E280: TCL FATALE FOUT: verwlys korrup!? Rapporteer dit asb. aan " - -#~ msgid "cannot register callback command: buffer/window reference not found" -#~ msgstr "" -#~ "kan terugroepbevel nie registreer nie: buffer/vensterverwysing nie gevind " -#~ "nie" - -#~ msgid "" -#~ "E571: Sorry, this command is disabled: the Tcl library could not be " -#~ "loaded." -#~ msgstr "" -#~ "E571: Jammer, hierdie bevel is afgeskakel, die Tcl biblioteek kon nie " -#~ "gelaai word nie." - -#~ msgid "" -#~ "E281: TCL ERROR: exit code is not int!? Please report this to vim-dev@vim." -#~ "org" -#~ msgstr "" -#~ "E281: TCL FOUT: verlaatkode is nie 'n 'int'!? Rapporteer dit asb. aan " -#~ "" - -#~ msgid "cannot get line" -#~ msgstr "kan nie rel kry nie" - -#~ msgid "Unable to register a command server name" -#~ msgstr "Kon nie bevelbediener naam registreer nie" - -#~ msgid "E248: Failed to send command to the destination program" -#~ msgstr "E248: Het gefaal om bevel na doel program te stuur" - -#~ msgid "E251: VIM instance registry property is badly formed. Deleted!" -#~ msgstr "E251: VIM instansie register-kenmerk is swak gevorm. Geskrap!" - -#~ msgid "This Vim was not compiled with the diff feature." -#~ msgstr "Hierdie Vim is nie gekompileer met 'diff' funksionaliteit nie." - -#~ msgid "-register\t\tRegister this gvim for OLE" -#~ msgstr "-register\t\tRegistreer hierdie gvim vir OLE" - -#~ msgid "-unregister\t\tUnregister gvim for OLE" -#~ msgstr "-unregister\t\tOnregistreer gvim vir OLE" - -#~ msgid "-g\t\t\tRun using GUI (like \"gvim\")" -#~ msgstr "-g\t\t\tVoer uit met die GUI (soos \"gvim\")" - -#~ msgid "-f or --nofork\tForeground: Don't fork when starting GUI" -#~ msgstr "-f of --nofork\tVoorgrond: Moenie vurk wanneer GUI begin nie" - -#~ msgid "-V[N]\t\tVerbose level" -#~ msgstr "-V[N]\t\tOmslagtigheidsgraad" - -#~ msgid "-f\t\t\tDon't use newcli to open window" -#~ msgstr "-f\t\t\tMoet nie 'newcli' gebruik om venster oop te maak nie" - -#~ msgid "-dev \t\tUse for I/O" -#~ msgstr "-dev \t\tGebruik vir I/O" - -#~ msgid "-U \t\tUse instead of any .gvimrc" -#~ msgstr "-U \t\tGebruik in plaas van enige .gvimrc" - -#~ msgid "-x\t\t\tEdit encrypted files" -#~ msgstr "-x\t\t\tBewerk genkripteerde lers" - -#~ msgid "-display \tConnect vim to this particular X-server" -#~ msgstr "-display \tKoppel vim aan hierdie X-bediener" - -#~ msgid "-X\t\t\tDo not connect to X server" -#~ msgstr "-X\t\t\tMoet nie verbinding met X-bediener maak nie" - -#~ msgid "--remote \tEdit in a Vim server if possible" -#~ msgstr "" -#~ "--remote \tWysig die in a Vim bediener indien moontlik" - -#~ msgid "--remote-silent Same, don't complain if there is no server" -#~ msgstr "" -#~ "--remote-silent Dieselfde, moet nie kla as daar nie so 'n " -#~ "bediener is nie" - -#~ msgid "" -#~ "--remote-wait As --remote but wait for files to have been edited" -#~ msgstr "" -#~ "--remote-wait Soos '--remote', maar wag vir lers om gewysig te " -#~ "word" - -#~ msgid "" -#~ "--remote-wait-silent Same, don't complain if there is no server" -#~ msgstr "" -#~ "--remote-wait-silent Dieselfde, moet nie kla as daar nie so 'n " -#~ "bediener is nie" - -#~ msgid "--remote-send \tSend to a Vim server and exit" -#~ msgstr "" -#~ "--remote-send \tStuur na 'n Vim-bediener en verlaat" - -#~ msgid "" -#~ "--remote-expr \tEvaluate in a Vim server and print result" -#~ msgstr "" -#~ "--remote-expr \tEvalueer in 'n Vim-bediener en druk resultaat" - -#~ msgid "--serverlist\t\tList available Vim server names and exit" -#~ msgstr "--serverlist\t\tLys beskikbare Vim-bediener name en verlaat" - -#~ msgid "--servername \tSend to/become the Vim server " -#~ msgstr "--servername \tStuur na/word die Vim-bediener " +#~ msgid "with GTK2-GNOME GUI." +#~ msgstr "met GTK2-GNOME GUI." #~ msgid "" #~ "\n" -#~ "Arguments recognised by gvim (Motif version):\n" +#~ "Tiny version " #~ msgstr "" #~ "\n" -#~ "Parameters deur gvim herken (Motif weergawe):\n" +#~ "Piepklein weergawe " #~ msgid "" #~ "\n" -#~ "Arguments recognised by gvim (neXtaw version):\n" +#~ "Small version " #~ msgstr "" #~ "\n" -#~ "Parameters deur gvim herken (neXtaw weergawe):\n" +#~ "Klein weergawe " #~ msgid "" #~ "\n" -#~ "Arguments recognised by gvim (Athena version):\n" +#~ "Normal version " #~ msgstr "" #~ "\n" -#~ "Parameters deur gvim herken (Athena weergawe):\n" - -#~ msgid "-display \tRun vim on " -#~ msgstr "-display \tVoer vim op uit" - -#~ msgid "-iconic\t\tStart vim iconified" -#~ msgstr "-iconic\t\tBegin vim as ikoon" - -#~ msgid "-name \t\tUse resource as if vim was " -#~ msgstr "-name \t\tGebruik hulpbron asof vim was" - -#~ msgid "\t\t\t (Unimplemented)\n" -#~ msgstr "\t\t\t (Nog nie gemplementeer nie)\n" - -#~ msgid "-background \tUse for the background (also: -bg)" -#~ msgstr "-background \tGebruik vir die agtergrond (ook: -bg)" - -#~ msgid "-foreground \tUse for normal text (also: -fg)" -#~ msgstr "-voorgrond \tGebruik vir normale teks (ook: -fg)" - -#~ msgid "-font \t\tUse for normal text (also: -fn)" -#~ msgstr "-font \t\tGebruik vir normale teks (ook -fn)" - -#~ msgid "-boldfont \tUse for bold text" -#~ msgstr "boldfont \t Gebruik vir vetletter teks" - -#~ msgid "-italicfont \tUse for italic text" -#~ msgstr "-italicfont \tGebruik vir kursiewe teks" - -#~ msgid "-geometry \tUse for initial geometry (also: -geom)" -#~ msgstr "-geometry \tGebruik vir aanvanklike geometrie" - -#~ msgid "-borderwidth \tUse a border width of (also: -bw)" -#~ msgstr "-borderwidth \tGebruik 'n grenswydte van (ook: -bw)" - -#~ msgid "" -#~ "-scrollbarwidth Use a scrollbar width of (also: -sw)" -#~ msgstr "" -#~ "-scrollbarwidth \tGebruik 'n rolstaafwydte van (ook: -sw>" - -#~ msgid "-menuheight \tUse a menu bar height of (also: -mh)" -#~ msgstr "" -#~ "-menuheight \tGebruik a kieslysstaafhoogte van (ook: -mh)" - -#~ msgid "-reverse\t\tUse reverse video (also: -rv)" -#~ msgstr "-reverse\t\tGebruik tru-video (ook: -rv)" - -#~ msgid "+reverse\t\tDon't use reverse video (also: +rv)" -#~ msgstr "+reverse\t\tMoet nie tru-video gebruik nie (ook: +rv)" - -#~ msgid "-xrm \tSet the specified resource" -#~ msgstr "-xrm \tStel die gespesifiseerde hulpbron" +#~ "Normale weergawe " #~ msgid "" #~ "\n" -#~ "Arguments recognised by gvim (RISC OS version):\n" +#~ "Big version " #~ msgstr "" #~ "\n" -#~ "Parameters wat gvim verstaan (RISC OS weergawe):\n" - -#~ msgid "--columns \tInitial width of window in columns" -#~ msgstr "--columns \tAanvanklike wydte van venster in kolomme" - -#~ msgid "--rows \tInitial height of window in rows" -#~ msgstr "--rows \tAanvanklike hoogte van venster in rye" +#~ "Groot weergawe " #~ msgid "" #~ "\n" -#~ "Arguments recognised by gvim (GTK+ version):\n" +#~ "RISC OS version" #~ msgstr "" #~ "\n" -#~ "Parameters wat gvim verstaan (GTK+ weergawe):\n" - -#~ msgid "-display \tRun vim on (also: --display)" -#~ msgstr "-display \tVoer vim op uit: (ook --display)" - -#~ msgid "--role \tSet a unique role to identify the main window" -#~ msgstr "--role \tStel 'n unieke rol om die hoofvenster te identifiseer" - -#~ msgid "--socketid \tOpen Vim inside another GTK widget" -#~ msgstr "--socketid \tMaak Vim in 'n ander GTK element oop" - -#~ msgid "-P \tOpen Vim inside parent application" -#~ msgstr "-P \tMaak Vim oop binne 'n ouer toepassing" - -#~ msgid "No display" -#~ msgstr "Geen vertoonskerm" - -#~ msgid ": Send failed.\n" -#~ msgstr ": Stuur het gefaal.\n" - -#~ msgid ": Send failed. Trying to execute locally\n" -#~ msgstr ": Stuur het gefaal. Probeer om lokaal uit te voer\n" - -#~ msgid "%d of %d edited" -#~ msgstr "%d van %d lers bewerk" - -#~ msgid "No display: Send expression failed.\n" -#~ msgstr "Geen vertoonskerm: Stuur van uitdrukking het gefaal.\n" - -#~ msgid ": Send expression failed.\n" -#~ msgstr ": Stuur van uitdrukking het gefaal.\n" - -#~ msgid "E543: Not a valid codepage" -#~ msgstr "E543: Nie 'n geldige kodeblad nie" - -#~ msgid "E285: Failed to create input context" -#~ msgstr "E285: Gefaal met die skep van invoerkonteks" - -#~ msgid "E286: Failed to open input method" -#~ msgstr "E286: Gefaal om invoermetode oop te maak" - -#~ msgid "E287: Warning: Could not set destroy callback to IM" -#~ msgstr "E287: Waarskuwing: Kon nie uitwis-terugroep na IM stel nie" - -#~ msgid "E288: input method doesn't support any style" -#~ msgstr "E288: invoermetode ondersteun geen styl nie" - -#~ msgid "E289: input method doesn't support my preedit type" -#~ msgstr "E289: invoermetode ondersteun nie my voor-bewerking tipe nie" - -#~ msgid "E290: over-the-spot style requires fontset" -#~ msgstr "E290: oor-die-plek styl vereis fontstel" - -#~ msgid "E291: Your GTK+ is older than 1.2.3. Status area disabled" -#~ msgstr "E291: Jou GTK+ is ouer as 1.2.3. Statusarea afgeskakel" - -#~ msgid "E292: Input Method Server is not running" -#~ msgstr "E292: Invoermetodebediener voer nie uit nie" +#~ "RISC OS weergawe" #~ msgid "" #~ "\n" -#~ " [not usable with this version of Vim]" +#~ "MacOS version" #~ msgstr "" #~ "\n" -#~ " [nie bruikbaar met hierdie weergawe van Vim nie]" +#~ "MacOS weergawe" + +#~ msgid "" +#~ "\n" +#~ "MacOS X version" +#~ msgstr "" +#~ "\n" +#~ "MacOS X weergawe" + +#~ msgid "" +#~ "\n" +#~ "MacOS X (unix) version" +#~ msgstr "" +#~ "\n" +#~ "MacOS X (unix) weergawe" + +#~ msgid "" +#~ "\n" +#~ "16-bit MS-DOS version" +#~ msgstr "" +#~ "\n" +#~ "16-bis MS-DOS weergawe" + +#~ msgid "" +#~ "\n" +#~ "32-bit MS-DOS version" +#~ msgstr "" +#~ "\n" +#~ "32-bis MS-DOS weergawe" + +#~ msgid "" +#~ "\n" +#~ "MS-Windows 16-bit version" +#~ msgstr "" +#~ "\n" +#~ "MS-Windows 16-bis weergawe" + +#~ msgid "" +#~ "\n" +#~ "MS-Windows 32-bit console version" +#~ msgstr "" +#~ "\n" +#~ "MS-Windows 32-bis konsole weergawe" + +#~ msgid " with OLE support" +#~ msgstr " met OLE ondersteuning" + +#~ msgid " in Win32s mode" +#~ msgstr " in Win32s modus" + +#~ msgid "" +#~ "\n" +#~ "MS-Windows 32-bit GUI version" +#~ msgstr "" +#~ "\n" +#~ "MS-Windows 32-bis GUI version" + +#~ msgid "" +#~ "\n" +#~ "MS-Windows 16/32-bit GUI version" +#~ msgstr "" +#~ "\n" +#~ "MS-Windows 16/32-bis GUI weergawe" + +#~ msgid "No undo possible; continue anyway" +#~ msgstr "Geen herstel moontlik; gaan in elk geval voort" + +#~ msgid "new shell started\n" +#~ msgstr "nuwe dop begin\n" + +#~ msgid "E430: Tag file path truncated for %s\n" +#~ msgstr "E430: Etiketlergids afgekap vir %s\n" + +#~ msgid "Enter nr of choice ( to abort): " +#~ msgstr "Sleutel nommer van keuse in ( om te stop): " + +#~ msgid "E396: containedin argument not accepted here" +#~ msgstr "E396: 'containedin' parameter nie hier aanvaar nie" + +#~ msgid "E363: pattern caused out-of-stack error" +#~ msgstr "E363: patroon het le-stapel fout veroorsaak" + +#~ msgid "E361: Crash intercepted; regexp too complex?" +#~ msgstr "E361: Ineenstorting onderskep. Patroon te kompleks?" + +#~ msgid "E58: %s{ operand could be empty" +#~ msgstr "E58: %s{ operand mag leeg wees" + +#~ msgid "E57: %s+ operand could be empty" +#~ msgstr "E57: %s+ operand mag leeg wees" + +#~ msgid "E56: %s* operand could be empty" +#~ msgstr "E56: %s* operand mag leeg wees" + +#~ msgid "Vim Warning" +#~ msgstr "Vim Waarskuwing" + +#~ msgid "" +#~ "VIMRUN.EXE not found in your $PATH.\n" +#~ "External commands will not pause after completion.\n" +#~ "See :help win32-vimrun for more information." +#~ msgstr "" +#~ "'VIMRUN.EXE' nie gevind in '$PATH' nie.\n" +#~ "Eksterne opdragte sal nie wag na voltooiing nie\n" +#~ "Sien ':help win32-vimrun' vir meer inligting." + +#~ msgid "E371: Command not found" +#~ msgstr "E371: Bevel nie gevind nie" + +#~ msgid "shutdown" +#~ msgstr "sit af" + +#~ msgid "logoff" +#~ msgstr "teken uit" + +#~ msgid "close" +#~ msgstr "maak toe" + +#~ msgid "Vim: Caught %s event\n" +#~ msgstr "Vim: Het %s gebeurtenis gevang\n" + +#~ msgid "shell returned %d" +#~ msgstr "dop het %d gelewer" + +#~ msgid "Could not fix up function pointers to the DLL!" +#~ msgstr "Kon nie funksiewysers na die DLL opstel nie!" + +#~ msgid "Could not load vim32.dll!" +#~ msgstr "Kon nie 'vim32.dll' laai nie!" + +#~ msgid "VIM Error" +#~ msgstr "VIM Fout" + +#~ msgid "Could not allocate memory for command line." +#~ msgstr "Kan nie geheue toeken vir bevelrel nie" + +#~ msgid "At line" +#~ msgstr "By rel" + +#~ msgid "XSMP ICE connection watch failed" +#~ msgstr "XSMP ICE konneksie beloer het gefaal" + +#~ msgid "XSMP opening connection" +#~ msgstr "XSMP maak nou konneksie oop" + +#~ msgid "XSMP handling save-yourself request" +#~ msgstr "XSMP hanteer 'save-yourself' versoek" + +#~ msgid "Opening the X display failed" +#~ msgstr "Oopmaak van die X vertoonskerm het gefaal" + +#~ msgid "XSMP lost ICE connection" +#~ msgstr "XSMP het ICE konneksie verloor" + +#~ msgid "" +#~ "\n" +#~ "Command terminated\n" +#~ msgstr "" +#~ "\n" +#~ "Bevel beindig\n" + +#~ msgid "" +#~ "\n" +#~ "Cannot fork\n" +#~ msgstr "" +#~ "\n" +#~ "Kan nie vurk nie\n" + +#~ msgid "" +#~ "\n" +#~ "Cannot create pipes\n" +#~ msgstr "" +#~ "\n" +#~ "Kan nie pype skep nie\n" + +#~ msgid "" +#~ "\n" +#~ "Cannot execute shell sh\n" +#~ msgstr "" +#~ "\n" +#~ "Kan nie dop 'sh' uitvoer nie\n" + +#~ msgid "Opening the X display timed out" +#~ msgstr "Oopmaak van die X-vertoonskerm het uitgetel" + +#~ msgid "Testing the X display failed" +#~ msgstr "Toetsing van die X-vertoonskerm het gefaal" + +#~ msgid "" +#~ "\n" +#~ "Vim: Got X error\n" +#~ msgstr "" +#~ "\n" +#~ "Vim: Het X fout ontvang\n" + +#~ msgid "Opening the X display took % msec" +#~ msgstr "Om die X-vertoonskerm oop te maak het % msek gevat" + +#~ msgid "Vim: Caught deadly signal\n" +#~ msgstr "Vim: Het dodelike sein gevang\n" + +#~ msgid "Vim: Caught deadly signal %s\n" +#~ msgstr "Vim: Het dodelike sein %s gevang\n" + +#~ msgid "Vim: Double signal, exiting\n" +#~ msgstr "Vim: Dubbel sein, staak\n" + +#~ msgid "E245: Illegal char '%c' in font name \"%s\"" +#~ msgstr "E245: Ongeldige karakter '%c' in fontnaam \"%s\"" + +#~ msgid "E244: Illegal charset name \"%s\" in font name \"%s\"" +#~ msgstr "E244: Ongeldige karakterstelnaam \"%s\" in fontnaam \"%s\"" + +#~ msgid "Printing '%s'" +#~ msgstr "Druk nou '%s'" + +#~ msgid "E238: Print error: %s" +#~ msgstr "E238: Drukfout: %s" + +#~ msgid "E613: Unknown printer font: %s" +#~ msgstr "E613: Onbekende drukker font: %s" + +#~ msgid "to %s on %s" +#~ msgstr "na %s op %s" + +#~ msgid "'columns' is not 80, cannot execute external commands" +#~ msgstr "'columns' is nie 80 nie, kan nie eksterne bevele uitvoer nie" + +#~ msgid "...(truncated)" +#~ msgstr "...(afgekap)" + +#~ msgid "I/O ERROR" +#~ msgstr "I/O FOUT" + +#~ msgid "ANCHOR_BUF_SIZE too small." +#~ msgstr "'ANCHOR_BUF_SIZE' is te klein" + +#~ msgid " returned\n" +#~ msgstr " teruggekeer\n" + +#~ msgid "shell " +#~ msgstr "dop " + +#~ msgid "Cannot execute " +#~ msgstr "Kan nie uitvoer nie " + +#~ msgid "mch_get_shellsize: not a console??\n" +#~ msgstr "'mch_get_shellsize': nie 'n konsole nie??\n" + +#~ msgid "cannot change console mode ?!\n" +#~ msgstr "kan konsole-modus nie verander nie ?!\n" + +#~ msgid "Vim exiting with %d\n" +#~ msgstr "Vim stop met %d\n" + +#~ msgid "Cannot create " +#~ msgstr "Kan nie skep nie: " + +#~ msgid "Cannot open NIL:\n" +#~ msgstr "Kan nie NIL: oopmaak nie\n" + +#~ msgid "Need %s version %\n" +#~ msgstr "Benodig %s weergawe %\n" + +#~ msgid "Need Amigados version 2.04 or later\n" +#~ msgstr "Benodig Amigados weergawe 2.04 of later\n" + +#~ msgid "VIM: Can't open window!\n" +#~ msgstr "VIM: Kan nie venster oopmaak nie!\n" + +#~ msgid "cannot open " +#~ msgstr "kan nie oopmaak nie " + +#~ msgid "E538: No mouse support" +#~ msgstr "E538: Geen muisondersteuning nie" + +#~ msgid "E534: Invalid wide font" +#~ msgstr "E534: Ongeldige wye font" + +#~ msgid "E533: can't select wide font" +#~ msgstr "E533: kan nie wye font kies nie" + +#~ msgid "E598: Invalid fontset" +#~ msgstr "E598: Ongeldige fontstel" + +#~ msgid "E597: can't select fontset" +#~ msgstr "E597: kan nie fontstel kies nie" + +#~ msgid "E617: Cannot be changed in the GTK+ 2 GUI" +#~ msgstr "E617: Kan nie 'term' verander in die GTK+ 2 GUI nie" + +#~ msgid "E531: Use \":gui\" to start the GUI" +#~ msgstr "E531: Gebruik \":gui\" om die GUI te begin" + +#~ msgid "E530: Cannot change term in GUI" +#~ msgstr "E530: Kan nie 'term' verander in GUI nie" + +#~ msgid "freeing % lines" +#~ msgstr "laat % rels gaan" + +#~ msgid "E658: NetBeans connection lost for buffer %" +#~ msgstr "E658: NetBeans konneksie vir buffer % verloor" + +#~ msgid "read from Netbeans socket" +#~ msgstr "lees vanaf Netbeans 'socket'" + +#~ msgid "E668: Wrong access mode for NetBeans connection info file: \"%s\"" +#~ msgstr "" +#~ "E668: Verkeerde toegangsmodue vir NetBeans konneksie inligtingsler: \"%s" +#~ "\"" + +#~ msgid "Cannot connect to Netbeans" +#~ msgstr "Kan nie aan Netbeans koppel nie" + +#~ msgid "Cannot connect to Netbeans #2" +#~ msgstr "Kan nie aan Netbeans #2 koppel nie" + +#~ msgid "Keys don't match!" +#~ msgstr "Sleutels verskil!" + +#~ msgid "Enter same key again: " +#~ msgstr "Voer die sleutel weer in: " + +#~ msgid "Enter encryption key: " +#~ msgstr "Voer enkripsie-sleutel in: " + +#~ msgid "E547: Illegal mouseshape" +#~ msgstr "E547: Ongeldige muisvorm" + +#~ msgid "E341: Internal error: lalloc(%, )" +#~ msgstr "E341: Interne fout: 'lalloc(%, )'" + +#~ msgid "E340: Line is becoming too long" +#~ msgstr "E340: Rel word te lank" + +#~ msgid "" +#~ "[calls] total re/malloc()'s %, total free()'s %\n" +#~ "\n" +#~ msgstr "" +#~ "[roepe] totaal re/malloc()'s %, totale free()'s %\n" +#~ "\n" + +#~ msgid "" +#~ "\n" +#~ "[bytes] total alloc-freed %-%, in use %, peak use " +#~ "%\n" +#~ msgstr "" +#~ "\n" +#~ "[grepe] totaal 'alloc'-vrygelaat %-%, in gebruik " +#~ "%, piekgebruik %\n" + +#~ msgid "ERROR: " +#~ msgstr "FOUT: " + +#~ msgid "Vim: Finished.\n" +#~ msgstr "Vim: Klaar.\n" + +#~ msgid "Vim: preserving files...\n" +#~ msgstr "Vim: bewaar lers...\n" + +#~ msgid "E338: Sorry, no file browser in console mode" +#~ msgstr "E338: Jammer, lerblaaier nie beskikbaar in konsole-modus nie" + +#~ msgid "Open File dialog" +#~ msgstr "Maak ler oop dialooghokkie" + +#~ msgid "Save File dialog" +#~ msgstr "Stoor Ler dialooghokkie" + +#~ msgid " (RET: line, SPACE: page, d: half page, q: quit)" +#~ msgstr " (RET: rel, SPACE: bladsy, d: halwe bladsy, q: los dit" + +#~ msgid " (RET/BS: line, SPACE/b: page, d/u: half page, q: quit)" +#~ msgstr " (RET/BS: rel, SPACE/b: bladsy, d/u: halwe bladsy, q: los dit" + +#~ msgid "Hit ENTER to continue" +#~ msgstr "Druk ENTER om voort te gaan" + +#~ msgid "[string too long]" +#~ msgstr "[string te lank]" + +#~ msgid "Tear off this menu" +#~ msgstr "Skeur die kieslys af" #~ msgid "" #~ "&Open Read-Only\n" @@ -7273,824 +6490,1139 @@ msgstr "E446: Geen l #~ "&Stop\n" #~ "S&krap dit" -#~ msgid "Tear off this menu" -#~ msgstr "Skeur die kieslys af" +#~ msgid "" +#~ "\n" +#~ " [not usable with this version of Vim]" +#~ msgstr "" +#~ "\n" +#~ " [nie bruikbaar met hierdie weergawe van Vim nie]" -#~ msgid "[string too long]" -#~ msgstr "[string te lank]" +#~ msgid "E292: Input Method Server is not running" +#~ msgstr "E292: Invoermetodebediener voer nie uit nie" -#~ msgid "Hit ENTER to continue" -#~ msgstr "Druk ENTER om voort te gaan" +#~ msgid "E291: Your GTK+ is older than 1.2.3. Status area disabled" +#~ msgstr "E291: Jou GTK+ is ouer as 1.2.3. Statusarea afgeskakel" -#~ msgid " (RET/BS: line, SPACE/b: page, d/u: half page, q: quit)" -#~ msgstr " (RET/BS: rel, SPACE/b: bladsy, d/u: halwe bladsy, q: los dit" +#~ msgid "E290: over-the-spot style requires fontset" +#~ msgstr "E290: oor-die-plek styl vereis fontstel" -#~ msgid " (RET: line, SPACE: page, d: half page, q: quit)" -#~ msgstr " (RET: rel, SPACE: bladsy, d: halwe bladsy, q: los dit" +#~ msgid "E289: input method doesn't support my preedit type" +#~ msgstr "E289: invoermetode ondersteun nie my voor-bewerking tipe nie" -#~ msgid "Save File dialog" -#~ msgstr "Stoor Ler dialooghokkie" +#~ msgid "E288: input method doesn't support any style" +#~ msgstr "E288: invoermetode ondersteun geen styl nie" -#~ msgid "Open File dialog" -#~ msgstr "Maak ler oop dialooghokkie" +#~ msgid "E287: Warning: Could not set destroy callback to IM" +#~ msgstr "E287: Waarskuwing: Kon nie uitwis-terugroep na IM stel nie" -#~ msgid "E338: Sorry, no file browser in console mode" -#~ msgstr "E338: Jammer, lerblaaier nie beskikbaar in konsole-modus nie" +#~ msgid "E285: Failed to create input context" +#~ msgstr "E285: Gefaal met die skep van invoerkonteks" -#~ msgid "Vim: preserving files...\n" -#~ msgstr "Vim: bewaar lers...\n" +#~ msgid "E543: Not a valid codepage" +#~ msgstr "E543: Nie 'n geldige kodeblad nie" -#~ msgid "Vim: Finished.\n" -#~ msgstr "Vim: Klaar.\n" +#~ msgid ": Send expression failed.\n" +#~ msgstr ": Stuur van uitdrukking het gefaal.\n" -#~ msgid "ERROR: " -#~ msgstr "FOUT: " +#~ msgid "No display: Send expression failed.\n" +#~ msgstr "Geen vertoonskerm: Stuur van uitdrukking het gefaal.\n" + +#~ msgid "%d of %d edited" +#~ msgstr "%d van %d lers bewerk" + +#~ msgid ": Send failed. Trying to execute locally\n" +#~ msgstr ": Stuur het gefaal. Probeer om lokaal uit te voer\n" + +#~ msgid ": Send failed.\n" +#~ msgstr ": Stuur het gefaal.\n" + +#~ msgid "No display" +#~ msgstr "Geen vertoonskerm" + +#~ msgid "-P \tOpen Vim inside parent application" +#~ msgstr "-P \tMaak Vim oop binne 'n ouer toepassing" + +#~ msgid "--socketid \tOpen Vim inside another GTK widget" +#~ msgstr "--socketid \tMaak Vim in 'n ander GTK element oop" + +#~ msgid "--role \tSet a unique role to identify the main window" +#~ msgstr "--role \tStel 'n unieke rol om die hoofvenster te identifiseer" + +#~ msgid "-display \tRun vim on (also: --display)" +#~ msgstr "-display \tVoer vim op uit: (ook --display)" #~ msgid "" #~ "\n" -#~ "[bytes] total alloc-freed %-%, in use %, peak use " -#~ "%\n" +#~ "Arguments recognised by gvim (GTK+ version):\n" #~ msgstr "" #~ "\n" -#~ "[grepe] totaal 'alloc'-vrygelaat %-%, in gebruik " -#~ "%, piekgebruik %\n" +#~ "Parameters wat gvim verstaan (GTK+ weergawe):\n" -#~ msgid "" -#~ "[calls] total re/malloc()'s %, total free()'s %\n" -#~ "\n" -#~ msgstr "" -#~ "[roepe] totaal re/malloc()'s %, totale free()'s %\n" -#~ "\n" +#~ msgid "--rows \tInitial height of window in rows" +#~ msgstr "--rows \tAanvanklike hoogte van venster in rye" -#~ msgid "E340: Line is becoming too long" -#~ msgstr "E340: Rel word te lank" - -#~ msgid "E341: Internal error: lalloc(%, )" -#~ msgstr "E341: Interne fout: 'lalloc(%, )'" - -#~ msgid "E547: Illegal mouseshape" -#~ msgstr "E547: Ongeldige muisvorm" - -#~ msgid "Enter encryption key: " -#~ msgstr "Voer enkripsie-sleutel in: " - -#~ msgid "Enter same key again: " -#~ msgstr "Voer die sleutel weer in: " - -#~ msgid "Keys don't match!" -#~ msgstr "Sleutels verskil!" - -#~ msgid "Cannot connect to Netbeans #2" -#~ msgstr "Kan nie aan Netbeans #2 koppel nie" - -#~ msgid "Cannot connect to Netbeans" -#~ msgstr "Kan nie aan Netbeans koppel nie" - -#~ msgid "E668: Wrong access mode for NetBeans connection info file: \"%s\"" -#~ msgstr "" -#~ "E668: Verkeerde toegangsmodue vir NetBeans konneksie inligtingsler: \"%s" -#~ "\"" - -#~ msgid "read from Netbeans socket" -#~ msgstr "lees vanaf Netbeans 'socket'" - -#~ msgid "E658: NetBeans connection lost for buffer %" -#~ msgstr "E658: NetBeans konneksie vir buffer % verloor" - -#~ msgid "freeing % lines" -#~ msgstr "laat % rels gaan" - -#~ msgid "E530: Cannot change term in GUI" -#~ msgstr "E530: Kan nie 'term' verander in GUI nie" - -#~ msgid "E531: Use \":gui\" to start the GUI" -#~ msgstr "E531: Gebruik \":gui\" om die GUI te begin" - -#~ msgid "E617: Cannot be changed in the GTK+ 2 GUI" -#~ msgstr "E617: Kan nie 'term' verander in die GTK+ 2 GUI nie" - -#~ msgid "E597: can't select fontset" -#~ msgstr "E597: kan nie fontstel kies nie" - -#~ msgid "E598: Invalid fontset" -#~ msgstr "E598: Ongeldige fontstel" - -#~ msgid "E533: can't select wide font" -#~ msgstr "E533: kan nie wye font kies nie" - -#~ msgid "E534: Invalid wide font" -#~ msgstr "E534: Ongeldige wye font" - -#~ msgid "E538: No mouse support" -#~ msgstr "E538: Geen muisondersteuning nie" - -#~ msgid "cannot open " -#~ msgstr "kan nie oopmaak nie " - -#~ msgid "VIM: Can't open window!\n" -#~ msgstr "VIM: Kan nie venster oopmaak nie!\n" - -#~ msgid "Need Amigados version 2.04 or later\n" -#~ msgstr "Benodig Amigados weergawe 2.04 of later\n" - -#~ msgid "Need %s version %\n" -#~ msgstr "Benodig %s weergawe %\n" - -#~ msgid "Cannot open NIL:\n" -#~ msgstr "Kan nie NIL: oopmaak nie\n" - -#~ msgid "Cannot create " -#~ msgstr "Kan nie skep nie: " - -#~ msgid "Vim exiting with %d\n" -#~ msgstr "Vim stop met %d\n" - -#~ msgid "cannot change console mode ?!\n" -#~ msgstr "kan konsole-modus nie verander nie ?!\n" - -#~ msgid "mch_get_shellsize: not a console??\n" -#~ msgstr "'mch_get_shellsize': nie 'n konsole nie??\n" - -#~ msgid "Cannot execute " -#~ msgstr "Kan nie uitvoer nie " - -#~ msgid "shell " -#~ msgstr "dop " - -#~ msgid " returned\n" -#~ msgstr " teruggekeer\n" - -#~ msgid "ANCHOR_BUF_SIZE too small." -#~ msgstr "'ANCHOR_BUF_SIZE' is te klein" - -#~ msgid "I/O ERROR" -#~ msgstr "I/O FOUT" - -#~ msgid "...(truncated)" -#~ msgstr "...(afgekap)" - -#~ msgid "'columns' is not 80, cannot execute external commands" -#~ msgstr "'columns' is nie 80 nie, kan nie eksterne bevele uitvoer nie" - -#~ msgid "to %s on %s" -#~ msgstr "na %s op %s" - -#~ msgid "E613: Unknown printer font: %s" -#~ msgstr "E613: Onbekende drukker font: %s" - -#~ msgid "E238: Print error: %s" -#~ msgstr "E238: Drukfout: %s" - -#~ msgid "Printing '%s'" -#~ msgstr "Druk nou '%s'" - -#~ msgid "E244: Illegal charset name \"%s\" in font name \"%s\"" -#~ msgstr "E244: Ongeldige karakterstelnaam \"%s\" in fontnaam \"%s\"" - -#~ msgid "E245: Illegal char '%c' in font name \"%s\"" -#~ msgstr "E245: Ongeldige karakter '%c' in fontnaam \"%s\"" - -#~ msgid "Vim: Double signal, exiting\n" -#~ msgstr "Vim: Dubbel sein, staak\n" - -#~ msgid "Vim: Caught deadly signal %s\n" -#~ msgstr "Vim: Het dodelike sein %s gevang\n" - -#~ msgid "Vim: Caught deadly signal\n" -#~ msgstr "Vim: Het dodelike sein gevang\n" - -#~ msgid "Opening the X display took % msec" -#~ msgstr "Om die X-vertoonskerm oop te maak het % msek gevat" +#~ msgid "--columns \tInitial width of window in columns" +#~ msgstr "--columns \tAanvanklike wydte van venster in kolomme" #~ msgid "" #~ "\n" -#~ "Vim: Got X error\n" +#~ "Arguments recognised by gvim (RISC OS version):\n" #~ msgstr "" #~ "\n" -#~ "Vim: Het X fout ontvang\n" +#~ "Parameters wat gvim verstaan (RISC OS weergawe):\n" -#~ msgid "Testing the X display failed" -#~ msgstr "Toetsing van die X-vertoonskerm het gefaal" +#~ msgid "-xrm \tSet the specified resource" +#~ msgstr "-xrm \tStel die gespesifiseerde hulpbron" -#~ msgid "Opening the X display timed out" -#~ msgstr "Oopmaak van die X-vertoonskerm het uitgetel" +#~ msgid "+reverse\t\tDon't use reverse video (also: +rv)" +#~ msgstr "+reverse\t\tMoet nie tru-video gebruik nie (ook: +rv)" + +#~ msgid "-reverse\t\tUse reverse video (also: -rv)" +#~ msgstr "-reverse\t\tGebruik tru-video (ook: -rv)" + +#~ msgid "-menuheight \tUse a menu bar height of (also: -mh)" +#~ msgstr "" +#~ "-menuheight \tGebruik a kieslysstaafhoogte van (ook: -mh)" + +#~ msgid "" +#~ "-scrollbarwidth Use a scrollbar width of (also: -sw)" +#~ msgstr "" +#~ "-scrollbarwidth \tGebruik 'n rolstaafwydte van (ook: -sw>" + +#~ msgid "-borderwidth \tUse a border width of (also: -bw)" +#~ msgstr "-borderwidth \tGebruik 'n grenswydte van (ook: -bw)" + +#~ msgid "-geometry \tUse for initial geometry (also: -geom)" +#~ msgstr "-geometry \tGebruik vir aanvanklike geometrie" + +#~ msgid "-italicfont \tUse for italic text" +#~ msgstr "-italicfont \tGebruik vir kursiewe teks" + +#~ msgid "-boldfont \tUse for bold text" +#~ msgstr "boldfont \t Gebruik vir vetletter teks" + +#~ msgid "-font \t\tUse for normal text (also: -fn)" +#~ msgstr "-font \t\tGebruik vir normale teks (ook -fn)" + +#~ msgid "-foreground \tUse for normal text (also: -fg)" +#~ msgstr "-voorgrond \tGebruik vir normale teks (ook: -fg)" + +#~ msgid "-background \tUse for the background (also: -bg)" +#~ msgstr "-background \tGebruik vir die agtergrond (ook: -bg)" + +#~ msgid "\t\t\t (Unimplemented)\n" +#~ msgstr "\t\t\t (Nog nie gemplementeer nie)\n" + +#~ msgid "-name \t\tUse resource as if vim was " +#~ msgstr "-name \t\tGebruik hulpbron asof vim was" + +#~ msgid "-iconic\t\tStart vim iconified" +#~ msgstr "-iconic\t\tBegin vim as ikoon" + +#~ msgid "-display \tRun vim on " +#~ msgstr "-display \tVoer vim op uit" #~ msgid "" #~ "\n" -#~ "Cannot execute shell sh\n" +#~ "Arguments recognised by gvim (Athena version):\n" #~ msgstr "" #~ "\n" -#~ "Kan nie dop 'sh' uitvoer nie\n" +#~ "Parameters deur gvim herken (Athena weergawe):\n" #~ msgid "" #~ "\n" -#~ "Cannot create pipes\n" +#~ "Arguments recognised by gvim (neXtaw version):\n" #~ msgstr "" #~ "\n" -#~ "Kan nie pype skep nie\n" +#~ "Parameters deur gvim herken (neXtaw weergawe):\n" #~ msgid "" #~ "\n" -#~ "Cannot fork\n" +#~ "Arguments recognised by gvim (Motif version):\n" #~ msgstr "" #~ "\n" -#~ "Kan nie vurk nie\n" +#~ "Parameters deur gvim herken (Motif weergawe):\n" + +#~ msgid "--servername \tSend to/become the Vim server " +#~ msgstr "--servername \tStuur na/word die Vim-bediener " + +#~ msgid "--serverlist\t\tList available Vim server names and exit" +#~ msgstr "--serverlist\t\tLys beskikbare Vim-bediener name en verlaat" + +#~ msgid "" +#~ "--remote-expr \tEvaluate in a Vim server and print result" +#~ msgstr "" +#~ "--remote-expr \tEvalueer in 'n Vim-bediener en druk resultaat" + +#~ msgid "--remote-send \tSend to a Vim server and exit" +#~ msgstr "" +#~ "--remote-send \tStuur na 'n Vim-bediener en verlaat" + +#~ msgid "" +#~ "--remote-wait-silent Same, don't complain if there is no server" +#~ msgstr "" +#~ "--remote-wait-silent Dieselfde, moet nie kla as daar nie so 'n " +#~ "bediener is nie" + +#~ msgid "" +#~ "--remote-wait As --remote but wait for files to have been edited" +#~ msgstr "" +#~ "--remote-wait Soos '--remote', maar wag vir lers om gewysig te " +#~ "word" + +#~ msgid "--remote-silent Same, don't complain if there is no server" +#~ msgstr "" +#~ "--remote-silent Dieselfde, moet nie kla as daar nie so 'n " +#~ "bediener is nie" + +#~ msgid "--remote \tEdit in a Vim server if possible" +#~ msgstr "" +#~ "--remote \tWysig die in a Vim bediener indien moontlik" + +#~ msgid "-X\t\t\tDo not connect to X server" +#~ msgstr "-X\t\t\tMoet nie verbinding met X-bediener maak nie" + +#~ msgid "-display \tConnect vim to this particular X-server" +#~ msgstr "-display \tKoppel vim aan hierdie X-bediener" + +#~ msgid "-x\t\t\tEdit encrypted files" +#~ msgstr "-x\t\t\tBewerk genkripteerde lers" + +#~ msgid "-U \t\tUse instead of any .gvimrc" +#~ msgstr "-U \t\tGebruik in plaas van enige .gvimrc" + +#~ msgid "-dev \t\tUse for I/O" +#~ msgstr "-dev \t\tGebruik vir I/O" + +#~ msgid "-f\t\t\tDon't use newcli to open window" +#~ msgstr "-f\t\t\tMoet nie 'newcli' gebruik om venster oop te maak nie" + +#~ msgid "-V[N]\t\tVerbose level" +#~ msgstr "-V[N]\t\tOmslagtigheidsgraad" + +#~ msgid "-f or --nofork\tForeground: Don't fork when starting GUI" +#~ msgstr "-f of --nofork\tVoorgrond: Moenie vurk wanneer GUI begin nie" + +#~ msgid "-g\t\t\tRun using GUI (like \"gvim\")" +#~ msgstr "-g\t\t\tVoer uit met die GUI (soos \"gvim\")" + +#~ msgid "-unregister\t\tUnregister gvim for OLE" +#~ msgstr "-unregister\t\tOnregistreer gvim vir OLE" + +#~ msgid "-register\t\tRegister this gvim for OLE" +#~ msgstr "-register\t\tRegistreer hierdie gvim vir OLE" + +#~ msgid "This Vim was not compiled with the diff feature." +#~ msgstr "Hierdie Vim is nie gekompileer met 'diff' funksionaliteit nie." + +#~ msgid "E251: VIM instance registry property is badly formed. Deleted!" +#~ msgstr "E251: VIM instansie register-kenmerk is swak gevorm. Geskrap!" + +#~ msgid "E248: Failed to send command to the destination program" +#~ msgstr "E248: Het gefaal om bevel na doel program te stuur" + +#~ msgid "Unable to register a command server name" +#~ msgstr "Kon nie bevelbediener naam registreer nie" + +#~ msgid "cannot get line" +#~ msgstr "kan nie rel kry nie" + +#~ msgid "" +#~ "E281: TCL ERROR: exit code is not int!? Please report this to vim-dev@vim." +#~ "org" +#~ msgstr "" +#~ "E281: TCL FOUT: verlaatkode is nie 'n 'int'!? Rapporteer dit asb. aan " +#~ "" + +#~ msgid "" +#~ "E571: Sorry, this command is disabled: the Tcl library could not be " +#~ "loaded." +#~ msgstr "" +#~ "E571: Jammer, hierdie bevel is afgeskakel, die Tcl biblioteek kon nie " +#~ "gelaai word nie." + +#~ msgid "cannot register callback command: buffer/window reference not found" +#~ msgstr "" +#~ "kan terugroepbevel nie registreer nie: buffer/vensterverwysing nie gevind " +#~ "nie" + +#~ msgid "" +#~ "E280: TCL FATAL ERROR: reflist corrupt!? Please report this to vim-" +#~ "dev@vim.org" +#~ msgstr "" +#~ "E280: TCL FATALE FOUT: verwlys korrup!? Rapporteer dit asb. aan " + +#~ msgid "" +#~ "cannot register callback command: buffer/window is already being deleted" +#~ msgstr "" +#~ "kan nie terugroepbevel registreer nie: buffer/venster word alreeds geskrap" + +#~ msgid "cannot create buffer/window command: object is being deleted" +#~ msgstr "kan nie buffer/venster bevel skep nie: voorwerp word geskrap" + +#~ msgid "vim error" +#~ msgstr "vim fout" + +#~ msgid "keyboard interrupt" +#~ msgstr "sleutelbordonderbreking" + +#~ msgid "unknown vimOption" +#~ msgstr "onbekende 'vimOption'" + +#~ msgid "unknown flag: " +#~ msgstr "onbekende vlag: " + +#~ msgid "cannot insert/append line" +#~ msgstr "kan nie rel invoeg/aanlas nie" + +#~ msgid "row %d column %d" +#~ msgstr "ry %d kolom %d" + +#~ msgid "mark not set" +#~ msgstr "merker nie gestel nie" + +#~ msgid "cannot set line(s)" +#~ msgstr "kan nie rel(s) stel nie" + +#~ msgid "unknown option" +#~ msgstr "onbekende opsie" + +#~ msgid "not implemented yet" +#~ msgstr "nog nie gemplementeer nie" + +#~ msgid "Sniff: Error during write. Disconnected" +#~ msgstr "Sniff: Fout gedurende stoor. Verbinding gebreek" + +#~ msgid "E278: SNiFF+ not connected" +#~ msgstr "E278: SNiFF+ is nie gekonnekteer nie" + +#~ msgid "E276: Error connecting to SNiFF+" +#~ msgstr "E276: Fout in konnekteer met SNiFF+" + +#~ msgid "E275: Unknown SNiFF+ request: %s" +#~ msgstr "E275: Onbekende SNiFF+ versoek: %s" + +#~ msgid "connected" +#~ msgstr "gekonnekteer" + +#~ msgid "not " +#~ msgstr "nie " + +#~ msgid "SNiFF+ is currently " +#~ msgstr "SNiFF+ is tans" + +#~ msgid "E274: Sniff: Error during read. Disconnected" +#~ msgstr "E274: Sniff: Fout gedurende lees. Verbinding gebreek" + +#~ msgid "" +#~ "Cannot connect to SNiFF+. Check environment (sniffemacs must be found in " +#~ "$PATH).\n" +#~ msgstr "" +#~ "Kan nie 'n verbinding met 'SNiFF+' maak nie. Kyk of die omgewing reg is " +#~ "('sniffemacs' moet in '$PATH' gevind word).\n" + +#~ msgid "Generate docu for" +#~ msgstr "Genereer 'docu' vir" + +#~ msgid "Show docu of" +#~ msgstr "Wys 'docu' van" + +#~ msgid "Xref used by" +#~ msgstr "Xref gebruik deur" + +#~ msgid "Xref has a" +#~ msgstr "Xref het 'n" + +#~ msgid "Xref referred by" +#~ msgstr "Xref verwys deur" + +#~ msgid "Xref refers to" +#~ msgstr "Xref verwys na" + +#~ msgid "Show class in restricted hierarchy" +#~ msgstr "Wys klas in beperkte hirargie" + +#~ msgid "Show class in hierarchy" +#~ msgstr "Wys klas in hirargie" + +#~ msgid "Browse class" +#~ msgstr "Kyk klas deur" + +#~ msgid "Find symbol" +#~ msgstr "Vind simbool" + +#~ msgid "Show source of" +#~ msgstr "Wys kode van" + +#~ msgid "Retrieve" +#~ msgstr "Gaan haal" + +#~ msgid "Retrieve from all projects" +#~ msgstr "Gaan haal uit alle projekte" + +#~ msgid "Retrieve from project" +#~ msgstr "Gaan haal uit projek" + +#~ msgid "Retrieve from file" +#~ msgstr "Gaan haal uit ler" + +#~ msgid "Show overridden member function" +#~ msgstr "Wys vervangde lidfunksie" + +#~ msgid "Show base class of" +#~ msgstr "Wys basisklas van" + +#~ msgid "Toggle implementation/definition" +#~ msgstr "Stel en herstel implimentasie/definisie" + +#~ msgid "E273: unknown longjmp status %d" +#~ msgstr "E273: Onbekende 'longjmp' status %d" + +#~ msgid "" +#~ "E266: Sorry, this command is disabled, the Ruby library could not be " +#~ "loaded." +#~ msgstr "" +#~ "E266: Jammer, hierdie bevel is afgeskakel, die Ruby biblioteekler kon " +#~ "nie gelaai word nie." + +#~ msgid "string cannot contain newlines" +#~ msgstr "string kan nie 'newlines' bevat nie" + +#~ msgid "cannot insert line" +#~ msgstr "kan rel nie byvoeg nie" + +#~ msgid "cannot replace line" +#~ msgstr "kan rel nie vervang nie" + +#~ msgid "cannot delete line" +#~ msgstr "kan rel nie verwyder nie" + +#~ msgid "no such window" +#~ msgstr "geen sodanige venster nie" + +#~ msgid "" +#~ msgstr "" + +#~ msgid "" +#~ msgstr "" + +#~ msgid "" +#~ msgstr "" + +#~ msgid "cursor position outside buffer" +#~ msgstr "loperposisie buite buffer" + +#~ msgid "readonly attribute" +#~ msgstr "leesalleen eienskap" + +#~ msgid "attempt to refer to deleted window" +#~ msgstr "poging om na geskrapte venster te verwys" + +#~ msgid "no such buffer" +#~ msgstr "buffer bestaan nie" + +#~ msgid "invalid mark name" +#~ msgstr "onbekende merknaam" + +#~ msgid "" +#~ msgstr "" + +#~ msgid "line number out of range" +#~ msgstr "relnommer buite omvang" + +#~ msgid "attempt to refer to deleted buffer" +#~ msgstr "poging om na 'n geskrapte buffer te verwys" + +#~ msgid "expressions disabled at compile time" +#~ msgstr "uitdrukkings afgeskakel tydens kompilering" + +# njj: net 'n voorstel .. +#~ msgid "invalid expression" +#~ msgstr "ongeldige uitdrukking" + +#~ msgid "E264: Python: Error initialising I/O objects" +#~ msgstr "E264: Python: Kon nie I/O objekte inwy nie" + +#~ msgid "writelines() requires list of strings" +#~ msgstr "'writelines()' benodig 'n lys van stringe" + +#~ msgid "invalid attribute" +#~ msgstr "ongeldige eienskap" + +#~ msgid "softspace must be an integer" +#~ msgstr "'softspace' moet 'n heelgetal wees" + +#~ msgid "can't delete OutputObject attributes" +#~ msgstr "kan nie 'OutputObject' eienskappe skrap nie" + +#~ msgid "E659: Cannot invoke Python recursively" +#~ msgstr "E659: Kan nie Python rekursief roep nie" + +#~ msgid "" +#~ "E263: Sorry, this command is disabled, the Python library could not be " +#~ "loaded." +#~ msgstr "" +#~ "E263: Jammer, hierdie bevel is afgeskakel, die Python biblioteek ler kon " +#~ "nie gelaai word nie." + +#~ msgid "E569: maximum number of cscope connections reached" +#~ msgstr "E569: maksimum aantal 'cscope' verbindings bereik" + +#~ msgid "E626: cannot get cscope database information" +#~ msgstr "E626: kan nie 'cscope' databasisinligting kry nie" + +#~ msgid "E625: cannot open cscope database: %s" +#~ msgstr "E625: Kon nie 'cscope' databasis oopmaak nie: %s" + +#~ msgid "E563: stat error" +#~ msgstr "E563: 'stat' fout" + +#~ msgid "E256: Hangul automata ERROR" +#~ msgstr "E256: Hangul outomatiserings FOUT" + +#~ msgid "" +#~ "Font1 width: %\n" +#~ "\n" +#~ msgstr "" +#~ "Font1 wydte: %\n" +#~ "\n" + +#~ msgid "Font0 width: %\n" +#~ msgstr "Font0 wydte: %\n" + +#~ msgid "Font% width is not twice that of font0\n" +#~ msgstr "Font% wydte is nie twee keer de van font0 nie\n" + +#~ msgid "Font1: %s\n" +#~ msgstr "Font1: %s\n" + +#~ msgid "Font0: %s\n" +#~ msgstr "Font0: %s\n" + +#~ msgid "E253: Fontset name: %s\n" +#~ msgstr "E253: Fonstel naam: %s\n" + +#~ msgid "Font '%s' is not fixed-width" +#~ msgstr "Font '%s' is nie 'n vaste-wydte font nie" + +#~ msgid "E252: Fontset name: %s" +#~ msgstr "E252: Fontstel naam: %s" + +#~ msgid "E250: Fonts for the following charsets are missing in fontset %s:" +#~ msgstr "" +#~ "E250: Fonte vir die volgende karakterstelle ontbreek in fontversameling " +#~ "%s:" + +#~ msgid "" +#~ "Vim E458: Cannot allocate colormap entry, some colors may be incorrect" +#~ msgstr "" +#~ "Vim E458: Kan nie kleurkaart-inskrywing toeken nie, sommige kleure mag " +#~ "verkeerd wees" + +#~ msgid "Find & Replace (use '\\\\' to find a '\\')" +#~ msgstr "Vind & vervang string (gebruik '\\\\' om 'n '\\' te vind" + +#~ msgid "Find string (use '\\\\' to find a '\\')" +#~ msgstr "Vind string (gebruik '\\\\' om 'n '\\' te vind" + +#~ msgid "E672: Unable to open window inside MDI application" +#~ msgstr "E672: Kon nie venster oopmaak binne 'n MDI toepassing nie" + +#~ msgid "E243: Argument not supported: \"-%s\"; Use the OLE version." +#~ msgstr "E243: Parameter nie bekend: \"-%s\"; Gebruik die OLE weergawe." + +#~ msgid "Undo" +#~ msgstr "Herroep" + +#~ msgid "Selection" +#~ msgstr "Seleksie" + +#~ msgid "Files" +#~ msgstr "Lers" + +#~ msgid "Help" +#~ msgstr "Hulp" + +#~ msgid "Directories" +#~ msgstr "Gidse" + +#~ msgid "Filter" +#~ msgstr "Filter" + +#~ msgid "Used CUT_BUFFER0 instead of empty selection" +#~ msgstr "'CUT_BUFFER0' is gebruik in plaas van le seleksie" + +#~ msgid "Font Selection" +#~ msgstr "Fontkeuse" + +#~ msgid "Vim: Main window unexpectedly destroyed\n" +#~ msgstr "Vim: Hoofvenster onverwags verwoes\n" + +#~ msgid "Vim: Received \"die\" request from session manager\n" +#~ msgstr "Vim: Het die \"die\" opdrag ontvang van sessiebestuurder\n" + +#~ msgid "Replace All" +#~ msgstr "Vervang alles" + +#~ msgid "Replace" +#~ msgstr "Vervang" + +#~ msgid "Find Next" +#~ msgstr "Vind volgende" + +#~ msgid "Down" +#~ msgstr "Af" + +#~ msgid "Up" +#~ msgstr "Op" + +#~ msgid "Direction" +#~ msgstr "Rigting" + +#~ msgid "Match case" +#~ msgstr "Tref kas" + +#~ msgid "Match whole word only" +#~ msgstr "Tref slegs presiese woord" + +#~ msgid "Replace with:" +#~ msgstr "Vervang met:" + +#~ msgid "Find what:" +#~ msgstr "Soek na:" + +#~ msgid "VIM - Search..." +#~ msgstr "VIM - Soek..." + +#~ msgid "VIM - Search and Replace..." +#~ msgstr "VIM - Soek en Vervang..." + +#~ msgid "Input _Methods" +#~ msgstr "Invoer _Metodes" + +#~ msgid "Vim dialog..." +#~ msgstr "Vim dialooghokkie..." + +#~ msgid "E599: Value of 'imactivatekey' is invalid" +#~ msgstr "E599: Waarde van 'imactivatekey' is ongeldig" + +#~ msgid "E231: 'guifontwide' invalid" +#~ msgstr "E231: 'guifontwide' ongeldig" + +#~ msgid "E665: Cannot start GUI, no valid font found" +#~ msgstr "E665: Kan nie GUI begin nie, geen geldige font gevind nie" + +#~ msgid "E230: Cannot read from \"%s\"" +#~ msgstr "E230: Kan nie lees uit \"%s\" nie" + +#~ msgid "E229: Cannot start the GUI" +#~ msgstr "E229: Kan nie die GUI begin nie" + +#~ msgid "E232: Cannot create BalloonEval with both message and callback" +#~ msgstr "E232: Kan nie BalloonEval skep met beide boodskap en terugroep nie" + +#~ msgid "Scrollbar Widget: Could not get geometry of thumb pixmap." +#~ msgstr "" +#~ "Rolstaafelement: Kon nie pikselmatriks-duimnael se geometrie kry nie" + +#~ msgid "Vim dialog" +#~ msgstr "Vim dialooghokkie" + +#~ msgid "Cancel" +#~ msgstr "Kanselleer" + +#~ msgid "OK" +#~ msgstr "OK" + +#~ msgid "E615: vim_SelFile: can't get current directory" +#~ msgstr "E615: vim_SelFile: Kan nie huidige gids verkry nie" + +#~ msgid "Pathname:" +#~ msgstr "Gidsnaam:" + +#~ msgid "E614: vim_SelFile: can't return to current directory" +#~ msgstr "E614: 'vim_SelFile': Kan nie terugkeer na huidige gids nie" + +#~ msgid "E616: vim_SelFile: can't get font %s" +#~ msgstr "E616: 'vim_SelFile': kan font %s nie kry nie" + +#~ msgid " " +#~ msgstr " " + +#~ msgid "E460: The resource fork would be lost (add ! to override)" +#~ msgstr "E460: Die hulpbronvurk sal verlore gaan (gebruik ! om te dwing)" + +#~ msgid "Partial writes disallowed for NetBeans buffers" +#~ msgstr "Gedeeltelike skryf word nie toegelaat vir NetBeans buffers nie" + +#~ msgid "NetBeans disallows writes of unmodified buffers" +#~ msgstr "NetBeans laat nie skryf toe van onveranderde buffers nie" + +#~ msgid "[CONVERSION ERROR]" +#~ msgstr "[OMSETTINGSFOUT]" + +#~ msgid "[crypted]" +#~ msgstr "[gekodeer]" + +#~ msgid "[NL found]" +#~ msgstr "[NL gevind]" + +#~ msgid "E196: No digraphs in this version" +#~ msgstr "E196: Geen digrawe in hierdie weergawe nie" + +#~ msgid "Save Setup" +#~ msgstr "Stoor konfigurasie" + +#~ msgid "Save Session" +#~ msgstr "Stoor Sessie" + +#~ msgid "Save View" +#~ msgstr "Stoor Oorsig" + +#~ msgid "Save Redirection" +#~ msgstr "Stoor Herversturing" + +#~ msgid "Window position: X %d, Y %d" +#~ msgstr "Vensterposisie: X %d, Y %d" + +#~ msgid "Append File" +#~ msgstr "Las aan by ler" + +#~ msgid "Edit File in new window" +#~ msgstr "Bewerk ler in nuwe venster" + +#~ msgid " (NOT FOUND)" +#~ msgstr " (NIE GEVIND NIE)" + +#~ msgid "Edit File" +#~ msgstr "Verander ler" + +#~ msgid "Source Vim script" +#~ msgstr "Voer Vim skrip uit" + +#~ msgid "Save As" +#~ msgstr "Stoor As" + +#~ msgid "E130: Undefined function: %s" +#~ msgstr "E130: Ongedefinieerde funksie: %s" + +#~ msgid "E277: Unable to read a server reply" +#~ msgstr "E277: Kon bediener-terugvoer nie lees nie" + +#~ msgid "E240: No connection to Vim server" +#~ msgstr "E240: Geen verbinding met Vim bediener" + +#~ msgid "" +#~ "&OK\n" +#~ "&Cancel" +#~ msgstr "" +#~ "&OK\n" +#~ "&Kanselleer" + +#~ msgid "E106: Unknown variable: \"%s\"" +#~ msgstr "E106: Onbekende veranderlike: \"%s\"" + +#~ msgid "Patch file" +#~ msgstr "Laslap ler" + +#~ msgid "[No File]" +#~ msgstr "[Geen ler]" + +#~ msgid "[Error List]" +#~ msgstr "[Foutlys]" + +#~ msgid "type :help cp-default for info on this" +#~ msgstr "tik :help cp-default vir meer inligting hieroor" + +#~ msgid "type :set nocp for Vim defaults" +#~ msgstr "tik :set nocp vir Vim verstekwaardes " + +#~ msgid "Running in Vi compatible mode" +#~ msgstr "Voer tans uit in Vi-versoenbare modus" + +#~ msgid "type :help version7 for version info" +#~ msgstr "tik :help version7 vir weergawe-inligting" + +#~ msgid "type :help or for on-line help" +#~ msgstr "tik :help of vir aanlyn hulp " + +#~ msgid "by Bram Moolenaar et al." +#~ msgstr "deur Bram Moolenaar et al." + +# njj: :)) +#~ msgid "version " +#~ msgstr "Weergawe " + +#~ msgid "VIM - Vi IMproved" +#~ msgstr "VIM - Vi Met skop" + +#~ msgid " DEBUG BUILD" +#~ msgstr " ONTFOUTINGS-KOMPILERING" + +#~ msgid "Linking: " +#~ msgstr "Koppeling: " + +#~ msgid "Compilation: " +#~ msgstr "Kompilering: " + +#~ msgid " 2nd user exrc file: \"" +#~ msgstr " 2de gebruiker exrc-ler: \"" + +#~ msgid " user exrc file: \"" +#~ msgstr " gebruiker exrc-ler: \"" + +#~ msgid " 3rd user vimrc file: \"" +#~ msgstr " 3de gebruiker vimrc-ler \"" + +#~ msgid " 2nd user vimrc file: \"" +#~ msgstr " 2de gebruiker vimrc-ler \"" + +#~ msgid " user vimrc file: \"" +#~ msgstr " gebruiker vimrc-ler: \"" + +#~ msgid " Features included (+) or not (-):\n" +#~ msgstr " Kenmerke in- (+) of uitgesluit (-):\n" + +#~ msgid "without GUI." +#~ msgstr "sonder GUI." #~ msgid "" #~ "\n" -#~ "Command terminated\n" +#~ "Huge version " #~ msgstr "" #~ "\n" -#~ "Bevel beindig\n" +#~ "Enorme weergawe " -#~ msgid "XSMP lost ICE connection" -#~ msgstr "XSMP het ICE konneksie verloor" - -#~ msgid "Opening the X display failed" -#~ msgstr "Oopmaak van die X vertoonskerm het gefaal" - -#~ msgid "XSMP handling save-yourself request" -#~ msgstr "XSMP hanteer 'save-yourself' versoek" - -#~ msgid "XSMP opening connection" -#~ msgstr "XSMP maak nou konneksie oop" - -#~ msgid "XSMP ICE connection watch failed" -#~ msgstr "XSMP ICE konneksie beloer het gefaal" - -#~ msgid "XSMP SmcOpenConnection failed: %s" -#~ msgstr "XSMP 'SmcOpenConnection' het gefaal: %s" - -#~ msgid "At line" -#~ msgstr "By rel" - -#~ msgid "Could not allocate memory for command line." -#~ msgstr "Kan nie geheue toeken vir bevelrel nie" - -#~ msgid "VIM Error" -#~ msgstr "VIM Fout" - -#~ msgid "Could not load vim32.dll!" -#~ msgstr "Kon nie 'vim32.dll' laai nie!" - -#~ msgid "Could not fix up function pointers to the DLL!" -#~ msgstr "Kon nie funksiewysers na die DLL opstel nie!" - -#~ msgid "shell returned %d" -#~ msgstr "dop het %d gelewer" - -#~ msgid "Vim: Caught %s event\n" -#~ msgstr "Vim: Het %s gebeurtenis gevang\n" - -#~ msgid "close" -#~ msgstr "maak toe" - -#~ msgid "logoff" -#~ msgstr "teken uit" - -#~ msgid "shutdown" -#~ msgstr "sit af" - -#~ msgid "E371: Command not found" -#~ msgstr "E371: Bevel nie gevind nie" +#~ msgid "Modified by " +#~ msgstr "Gewysig deur " +#, fuzzy #~ msgid "" -#~ "VIMRUN.EXE not found in your $PATH.\n" -#~ "External commands will not pause after completion.\n" -#~ "See :help win32-vimrun for more information." -#~ msgstr "" -#~ "'VIMRUN.EXE' nie gevind in '$PATH' nie.\n" -#~ "Eksterne opdragte sal nie wag na voltooiing nie\n" -#~ "Sien ':help win32-vimrun' vir meer inligting." - -#~ msgid "Vim Warning" -#~ msgstr "Vim Waarskuwing" - -#~ msgid "E56: %s* operand could be empty" -#~ msgstr "E56: %s* operand mag leeg wees" - -#~ msgid "E57: %s+ operand could be empty" -#~ msgstr "E57: %s+ operand mag leeg wees" - -#~ msgid "E58: %s{ operand could be empty" -#~ msgstr "E58: %s{ operand mag leeg wees" - -#~ msgid "E361: Crash intercepted; regexp too complex?" -#~ msgstr "E361: Ineenstorting onderskep. Patroon te kompleks?" - -#~ msgid "E363: pattern caused out-of-stack error" -#~ msgstr "E363: patroon het le-stapel fout veroorsaak" - -#~ msgid "E396: containedin argument not accepted here" -#~ msgstr "E396: 'containedin' parameter nie hier aanvaar nie" - -#~ msgid "Enter nr of choice ( to abort): " -#~ msgstr "Sleutel nommer van keuse in ( om te stop): " - -#~ msgid "E430: Tag file path truncated for %s\n" -#~ msgstr "E430: Etiketlergids afgekap vir %s\n" - -#~ msgid "new shell started\n" -#~ msgstr "nuwe dop begin\n" - -#~ msgid "No undo possible; continue anyway" -#~ msgstr "Geen herstel moontlik; gaan in elk geval voort" +#~ "\n" +#~ "Extra patches: " +#~ msgstr "Eksterne subtreffers:\n" #~ msgid "" #~ "\n" -#~ "MS-Windows 16/32-bit GUI version" +#~ "Included patches: " #~ msgstr "" #~ "\n" -#~ "MS-Windows 16/32-bis GUI weergawe" +#~ "Ingeslote laslappies:" #~ msgid "" #~ "\n" -#~ "MS-Windows 32-bit GUI version" +#~ "--- Terminal keys ---" #~ msgstr "" #~ "\n" -#~ "MS-Windows 32-bis GUI version" +#~ "--- Terminaal sleutels ---" -#~ msgid " in Win32s mode" -#~ msgstr " in Win32s modus" +#~ msgid "E437: terminal capability \"cm\" required" +#~ msgstr "E437: terminaalvermo \"cm\" vereis" -#~ msgid " with OLE support" -#~ msgstr " met OLE ondersteuning" +#~ msgid "E436: No \"%s\" entry in termcap" +#~ msgstr "E436: Geen \"%s\" inskrywing in termcap nie" + +#~ msgid "E559: Terminal entry not found in termcap" +#~ msgstr "E559: Terminaalinskrywing nie in 'termcap' gevind nie" + +#~ msgid "E558: Terminal entry not found in terminfo" +#~ msgstr "E558: Terminaalinskrywing nie in 'terminfo' gevind nie" + +#~ msgid "E557: Cannot open termcap file" +#~ msgstr "E557: Kan nie 'termcap'-ler oopmaak nie" + +#~ msgid "defaulting to '" +#~ msgstr "gebruik verstek '" + +#~ msgid "' not known. Available builtin terminals are:" +#~ msgstr "' onbekend. Beskikbare ingeboude terminale is:" + +#~ msgid "E422: terminal code too long: %s" +#~ msgstr "E422: terminaalkode te lank: %s" + +#, fuzzy +#~ msgid "Substitute " +#~ msgstr "1 vervanging" + +#~ msgid " (lang)" +#~ msgstr " (taal)" #~ msgid "" #~ "\n" -#~ "MS-Windows 32-bit console version" +#~ "Cannot execute shell " #~ msgstr "" #~ "\n" -#~ "MS-Windows 32-bis konsole weergawe" +#~ "Kan nie dop uitvoer nie " + +#~ msgid "E522: Not found in termcap" +#~ msgstr "E522: Nie gevind in 'termcap' nie" + +#~ msgid "Thanks for flying Vim" +#~ msgstr "Dankie dat jy vlieg met Vim" + +#~ msgid "%<%f%h%m%=Page %N" +#~ msgstr "%<%f%h%m%=Bladsy %N" + +#~ msgid "E574: Unknown register type %d" +#~ msgstr "E574: Onbekende registertipe %d" #~ msgid "" #~ "\n" -#~ "MS-Windows 16-bit version" +#~ "# Registers:\n" #~ msgstr "" #~ "\n" -#~ "MS-Windows 16-bis weergawe" +#~ "# Registers:\n" + +#~ msgid "Illegal register name" +#~ msgstr "Ongeldige registernaam" + +#~ msgid "cannot yank; delete anyway" +#~ msgstr "kan nie pluk nie: verwyder in elk geval" + +#~ msgid "E337: Menu not found - check menu names" +#~ msgstr "E337: Kieslys nie gevind nie - maak seker oor die kieslys name" + +#~ msgid "E336: Menu path must lead to a sub-menu" +#~ msgstr "E336: Kieslyspad moet lei na 'n sub-kieslys" + +#~ msgid "Swap file already exists!" +#~ msgstr "Ruiller bestaan alreeds!" + +#, fuzzy +#~ msgid " Quit, or continue with caution.\n" +#~ msgstr " Stop, of gaan versigtig voort.\n" + +#~ msgid "Missing '>'" +#~ msgstr "Ontbrekende '>'" #~ msgid "" #~ "\n" -#~ "32-bit MS-DOS version" +#~ "# History of marks within files (newest to oldest):\n" #~ msgstr "" #~ "\n" -#~ "32-bis MS-DOS weergawe" +#~ "# Geskiedenis van merkers in lers (nuutste tot oudste):\n" #~ msgid "" #~ "\n" -#~ "16-bit MS-DOS version" +#~ "# Jumplist (newest first):\n" #~ msgstr "" #~ "\n" -#~ "16-bis MS-DOS weergawe" +#~ "# Springlys (nuutste eerste):\n" #~ msgid "" #~ "\n" -#~ "MacOS X (unix) version" +#~ "# File marks:\n" #~ msgstr "" #~ "\n" -#~ "MacOS X (unix) weergawe" +#~ "# Lermerkers:\n" + +#~ msgid "-h or --help\tPrint Help (this message) and exit" +#~ msgstr "-h of --help\tSkryf Hulp (hierdie boodskap) en sluit" + +#~ msgid "-i \t\tUse instead of .viminfo" +#~ msgstr "-i \t\tGebruik in plaas van .viminfo" + +#~ msgid "-W \tWrite all typed commands to file " +#~ msgstr "-W \tSkryf alle getikte bevele na ler " + +#~ msgid "-w \tAppend all typed commands to file " +#~ msgstr "-w \tLas alle getikte bevele aan by ler " + +#~ msgid "+\t\tStart at line " +#~ msgstr "+\t\tBegin by rel " + +#~ msgid "+\t\t\tStart at end of file" +#~ msgstr "+\t\t\tBegin by einde van ler" + +#~ msgid "-O[N]\t\tLike -o but split vertically" +#~ msgstr "-O[N]\t\tSoos -o maar verdeel vertikaal" + +#~ msgid "-u \t\tUse instead of any .vimrc" +#~ msgstr "-u \t\tGebruik in plaas van enige ander .vimrc" + +#~ msgid "-T \tSet terminal type to " +#~ msgstr "-T \tStel terminaaltipe na " + +#~ msgid "-F\t\t\tStart in Farsi mode" +#~ msgstr "-F\t\t\tBegin in Farsi modus" + +#~ msgid "-H\t\t\tStart in Hebrew mode" +#~ msgstr "-H\t\t\tBegin in Hebreeuse modus" + +#~ msgid "-A\t\t\tstart in Arabic mode" +#~ msgstr "-A\t\t\tbegin in Arabiese modus" + +#~ msgid "-L\t\t\tSame as -r" +#~ msgstr "-L\t\t\tSelfde as -r" + +#~ msgid "-r (with file name)\tRecover crashed session" +#~ msgstr "-r (met ler naam)\tHerwin ineengestorte sessie" + +#~ msgid "-r\t\t\tList swap files and exit" +#~ msgstr "-r\t\t\tLys ruillers en verlaat vim" + +#~ msgid "-D\t\t\tDebugging mode" +#~ msgstr "-D\t\t\tOntfoutmodus" + +#~ msgid "-N\t\t\tNot fully Vi compatible: 'nocompatible'" +#~ msgstr "-N\t\t\tNie ten volle Vi-versoenbaar nie: 'nocompatible'" + +#~ msgid "-C\t\t\tCompatible with Vi: 'compatible'" +#~ msgstr "-C\t\t\tVersoenbaar met Vi: 'compatible'" + +#~ msgid "-l\t\t\tLisp mode" +#~ msgstr "-l\t\t\tLisp modus" + +#~ msgid "-b\t\t\tBinary mode" +#~ msgstr "-b\t\t\tBinre modus" + +#~ msgid "-Z\t\t\tRestricted mode (like \"rvim\")" +#~ msgstr "-Z\t\t\tBeperkte modus (soos \"rvim\")" + +#~ msgid "-R\t\t\tReadonly mode (like \"view\")" +#~ msgstr "-R\t\t\tLeesalleen modus (soos \"view\")" + +#~ msgid "-y\t\t\tEasy mode (like \"evim\", modeless)" +#~ msgstr "-y\t\t\tEasy modus (soos \"evim\", modusloos)" + +#~ msgid "-d\t\t\tDiff mode (like \"vimdiff\")" +#~ msgstr "-d\t\t\tDiff modus (soos \"vimdiff\")" + +#~ msgid "-s\t\t\tSilent (batch) mode (only for \"ex\")" +#~ msgstr "-s\t\t\tStil (bondel) modus (slegs vir \"ex\")" + +#~ msgid "-e\t\t\tEx mode (like \"ex\")" +#~ msgstr "-e\t\t\tEx modus (soos \"ex\")" + +#~ msgid "-v\t\t\tVi mode (like \"vi\")" +#~ msgstr "-v\t\t\tVi modus (soos \"vi\")" #~ msgid "" #~ "\n" -#~ "MacOS X version" +#~ "\n" +#~ "Arguments:\n" #~ msgstr "" #~ "\n" -#~ "MacOS X weergawe" +#~ "\n" +#~ "Parameters:\n" #~ msgid "" #~ "\n" -#~ "MacOS version" +#~ " or:" #~ msgstr "" #~ "\n" -#~ "MacOS weergawe" +#~ " of:" + +#~ msgid " vim [arguments] " +#~ msgstr " vim [parameters] " + +#~ msgid "%d files to edit\n" +#~ msgstr "%d lers om te bewerk\n" + +#~ msgid "Invalid argument for" +#~ msgstr "Ongeldige parameter vir" + +#~ msgid "Zero count" +#~ msgstr "Nul telling" + +#~ msgid "Nvim: Reading from stdin...\n" +#~ msgstr "Vim: Lees nou vanaf 'stdin'...\n" + +#~ msgid "Input Line" +#~ msgstr "Invoer Lyn" + +#~ msgid "Expression" +#~ msgstr "Uitdrukking" + +#~ msgid "Search String" +#~ msgstr "Soekstring" + +#~ msgid "Command Line" +#~ msgstr "Bevelrel" #~ msgid "" #~ "\n" -#~ "RISC OS version" +#~ "# %s History (newest to oldest):\n" #~ msgstr "" #~ "\n" -#~ "RISC OS weergawe" +#~ "# %s Geskiedenis (van nuutste na oudste):\n" + +#~ msgid "E195: Cannot open viminfo file for reading" +#~ msgstr "E195: Kan 'viminfo' ler nie oopmaak om te lees nie" + +#~ msgid "E466: :winpos requires two number arguments" +#~ msgstr "E466: :winpos benodig twee parameters" + +#~ msgid "E188: Obtaining window position not implemented for this platform" +#~ msgstr "" +#~ "E188: Verkryging van vensterposisie is nie vir hierdie platform " +#~ "gemplementeer nie" + +#, fuzzy +#~ msgid "" +#~ "E747: Cannot change directory, buffer is modified (add ! to override)" +#~ msgstr "E509: Kan rugsteunler nie skep nie (gebruik ! om te dwing)" + +#~ msgid "E172: Only one file name allowed" +#~ msgstr "E172: Slegs een lernaam toegelaat" #~ msgid "" #~ "\n" -#~ "Big version " +#~ "# Last Substitute String:\n" +#~ "$" #~ msgstr "" #~ "\n" -#~ "Groot weergawe " +#~ "# Vorige Vervangstring:\n" +#~ "$" + +#~ msgid "Illegal starting char" +#~ msgstr "Ongeldige beginkarakter" + +#~ msgid "# Value of 'encoding' when this file was written\n" +#~ msgstr "# Waarde van 'encoding' toe hierdie ler gestoor is\n" + +#~ msgid "" +#~ "# You may edit it if you're careful!\n" +#~ "\n" +#~ msgstr "" +#~ "# Jy mag dit wysig as jy versigtig is!\n" +#~ "\n" + +#~ msgid "# This viminfo file was generated by Vim %s.\n" +#~ msgstr "# Hierdie viminfo ler is gegenereer deur Vim %s.\n" + +#~ msgid "E138: Can't write viminfo file %s!" +#~ msgstr "E138: Kan nie viminfo ler %s stoor nie!" + +#~ msgid "E136: viminfo: Too many errors, skipping rest of file" +#~ msgstr "E136: viminfo: Te veel foute, slaan die res van die ler oor" + +#~ msgid "%sviminfo: %s in line: " +#~ msgstr "%sviminfo: %s in rel: " #~ msgid "" #~ "\n" -#~ "Normal version " +#~ "# global variables:\n" #~ msgstr "" #~ "\n" -#~ "Normale weergawe " +#~ "# globale veranderlikes:\n" + +#, fuzzy +#~ msgid "E706: Variable type mismatch for: %s" +#~ msgstr "E93: Meer as een treffer vir %s" + +#, fuzzy +#~ msgid "E724: variable nested too deep for displaying" +#~ msgstr "E22: Skripte te diep ge-nes" #~ msgid "" #~ "\n" -#~ "Small version " +#~ "# Buffer list:\n" #~ msgstr "" #~ "\n" -#~ "Klein weergawe " +#~ "# Buffer lys:\n" -#~ msgid "" -#~ "\n" -#~ "Tiny version " -#~ msgstr "" -#~ "\n" -#~ "Piepklein weergawe " - -#~ msgid "with GTK2-GNOME GUI." -#~ msgstr "met GTK2-GNOME GUI." - -#~ msgid "with GTK-GNOME GUI." -#~ msgstr "met GTK-GNOME GUI." - -#~ msgid "with GTK2 GUI." -#~ msgstr "met GTK2 GUI" - -#~ msgid "with GTK GUI." -#~ msgstr "met GTK GUI" - -#~ msgid "with X11-Motif GUI." -#~ msgstr "met X11-Motif GUI." - -#~ msgid "with X11-neXtaw GUI." -#~ msgstr "met X11-neXtaw GUI" - -#~ msgid "with X11-Athena GUI." -#~ msgstr "met X11-Athena GUI" - -#~ msgid "with BeOS GUI." -#~ msgstr "met BeOS GUI" - -#~ msgid "with Photon GUI." -#~ msgstr "met Photon GUI." - -#~ msgid "with GUI." -#~ msgstr "met GUI." - -#~ msgid "with Carbon GUI." -#~ msgstr "met Carbon GUI." - -#~ msgid "with Cocoa GUI." -#~ msgstr "met Cocoa GUI." - -#~ msgid "with (classic) GUI." -#~ msgstr "met (klassieke) GUI." - -#~ msgid " system gvimrc file: \"" -#~ msgstr " stelsel gvimrc-ler: \"" - -#~ msgid " user gvimrc file: \"" -#~ msgstr " gebruiker gvimrc-ler: \"" - -#~ msgid "2nd user gvimrc file: \"" -#~ msgstr "2de gebruiker gvimrc-ler: \"" - -#~ msgid "3rd user gvimrc file: \"" -#~ msgstr "3de gebruiker gvimrc-ler: \"" - -#~ msgid " system menu file: \"" -#~ msgstr " stelsel kieslys-ler: \"" - -#~ msgid "Compiler: " -#~ msgstr "Kompileerder: " - -#~ msgid "menu Help->Orphans for information " -#~ msgstr "menu Hulp->Weeskinders vir meer inligting hieroor " - -#~ msgid "Running modeless, typed text is inserted" -#~ msgstr "Voer modus-loos uit, getikte teks word ingevoeg" - -#~ msgid "menu Edit->Global Settings->Toggle Insert Mode " -#~ msgstr "menu Redigeer->Globale verstellings->Stel en herstel Invoeg Modus" - -#~ msgid " for two modes " -#~ msgstr " vir twee modusse " - -#~ msgid "menu Edit->Global Settings->Toggle Vi Compatible" -#~ msgstr "menu Redigeer->Global verstellings->Stel en herstel Vi Versoenbaar" - -#~ msgid " for Vim defaults " -#~ msgstr " vir Vim verstekwaardes" - -#~ msgid "WARNING: Windows 95/98/ME detected" -#~ msgstr "WAARSKUWING: Windows 95/98/ME bespeur" - -#~ msgid "type :help windows95 for info on this" -#~ msgstr "tik :help windows95 vir meer inligting hieroor" - -#~ msgid "E370: Could not load library %s" -#~ msgstr "E370: Kon nie biblioteek laai nie %s" - -#~ msgid "" -#~ "Sorry, this command is disabled: the Perl library could not be loaded." -#~ msgstr "" -#~ "Jammer, hierdie bevel is afgeskakel: die Perl biblioteek kon nie gelaai " -#~ "word nie." - -#~ msgid "E299: Perl evaluation forbidden in sandbox without the Safe module" -#~ msgstr "" -#~ "E299: Perl evaluasie verbied in die sandput sonder die 'Safe' module" - -#~ msgid "Edit with &multiple Vims" -#~ msgstr "Wysig met &meer as een Vim" - -#~ msgid "Edit with single &Vim" -#~ msgstr "Wysig met 'n enkel &Vim" - -#~ msgid "&Diff with Vim" -#~ msgstr "Wys verskille ('&diff') met Vim" - -#~ msgid "Edit with &Vim" -#~ msgstr "Wysig met &Vim" - -#~ msgid "Edit with existing Vim - &" -#~ msgstr "Wysig met bestaande Vim - &" - -#~ msgid "Edits the selected file(s) with Vim" -#~ msgstr "Wysig die gekose ler(s) met Vim" - -#~ msgid "Error creating process: Check if gvim is in your path!" -#~ msgstr "FOut met die skep van proses: Kyk of gvim in jou pad is!" - -#~ msgid "gvimext.dll error" -#~ msgstr "'gvimext.dll' fout" - -#~ msgid "Path length too long!" -#~ msgstr "Pad-lengte te lank" - -#~ msgid "E234: Unknown fontset: %s" -#~ msgstr "E234: Onbekende fontstel: %s" - -#~ msgid "E235: Unknown font: %s" -#~ msgstr "E235: Onbekende font: %s" - -#~ msgid "E448: Could not load library function %s" -#~ msgstr "E448: Kon nie biblioteek funksie laai nie %s" - -#~ msgid "E26: Hebrew cannot be used: Not enabled at compile time\n" -#~ msgstr "" -#~ "E26: Hebreeus kan nie gebruik word nie: Nie tydens kompilering gekies " -#~ "nie\n" - -#~ msgid "E27: Farsi cannot be used: Not enabled at compile time\n" -#~ msgstr "" -#~ "E27: Farsi kan nie gebruik word nie: Nie tydens kompilering gekies nie\n" - -#~ msgid "E800: Arabic cannot be used: Not enabled at compile time\n" -#~ msgstr "" -#~ "E800: Arabies kan nie gebruik word nie: Nie tydens kompilering gekies " -#~ "nie\n" - -#~ msgid "E247: no registered server named \"%s\"" -#~ msgstr "E247: geen geregistreerde bediener genaamd \"%s\"" - -#~ msgid "E233: cannot open display" -#~ msgstr "E233: kan nie vertoonskerm oopmaak nie" - -#~ msgid "E463: Region is guarded, cannot modify" -#~ msgstr "E463: Omgewing is onder bewaking, kan nie verander nie" - -#~ msgid "function " -#~ msgstr "funksie " - -#~ msgid "Run Macro" -#~ msgstr "Voer Makro uit" - -#~ msgid "E242: Color name not recognized: %s" -#~ msgstr "E242: Kleurnaam is onbekend: %s" - -#~ msgid "error reading cscope connection %d" -#~ msgstr "'cscope' verbinding %d kon nie gelees word nie" - -#~ msgid "E260: cscope connection not found" -#~ msgstr "E260: 'cscope' verbinding nie gevind nie" - -#~ msgid "cscope connection closed" -#~ msgstr "'cscope' verbinding gesluit" - -# njj: dalk 'verbinding' ipv 'verbinding' orals? -#~ msgid "couldn't malloc\n" -#~ msgstr "kon nie 'malloc' nie\n" - -#~ msgid "%2d %-5ld %-34s \n" -#~ msgstr "%2d %-5ld %-34s \n" - -#~ msgid "E249: couldn't read VIM instance registry property" -#~ msgstr "E249: kon nie VIM instansie register-kenmerk lees nie" - -#~ msgid "\"\n" -#~ msgstr "\"\n" - -#~ msgid "--help\t\tShow Gnome arguments" -#~ msgstr "--help\t\tWys Gnome parameters" - -#~ msgid "1 line ~ed" -#~ msgstr "1 rel ge-~" - -#~ msgid "% lines ~ed" -#~ msgstr "% rels ge-~" - -#~ msgid " BLOCK" -#~ msgstr " BLOK" - -#~ msgid " LINE" -#~ msgstr " REL" - -#~ msgid "Linear tag search" -#~ msgstr "Linire etiketsoek" - -#~ msgid "Binary tag search" -#~ msgstr "Binre etiketsoek" - -#~ msgid "E258: no matches found in cscope connections" -#~ msgstr "E258: geen treffers gevind in 'cscope' verbindings nie" - -#~ msgid "No servers found for this display" -#~ msgstr "Geen bedieners gevind vir die 'display' nie" - -#~ msgid "Missing filename" -#~ msgstr "Ontbrekende lernaam" - -#~ msgid "Invalid line number: %" -#~ msgstr "Ongeldige relnommer: %" - -#~ msgid "Cannot use :normal from event handler" -#~ msgstr "Kan ':normal' nie vanuit gebeurtenishanteerder gebruik nie" - -#~ msgid "VIM - Help on..." -#~ msgstr "VIM - Hulp met.." - -#~ msgid "Topic:" -#~ msgstr "Onderwerp:" - -#~ msgid "Error: During loading fontset %s" -#~ msgstr "Fout: Gedurende die laai van fontstel %s" - -#~ msgid "locale is not set correctly" -#~ msgstr "lokaal is nie korrek gestel nie" - -#~ msgid "For korean:" -#~ msgstr "Vir Afrikaans:" - -#~ msgid " csh: setenv LANG ko" -#~ msgstr " csh: setenv LANG af" - -#~ msgid " sh : export LANG=ko" -#~ msgstr " sh: export LANG=af" - -#~ msgid "fontset name: %s" -#~ msgstr "fontstel naam: %s" - -#~ msgid "Your language Font missing" -#~ msgstr "Jou taal Font ontbreek" - -#~ msgid "automata ERROR: internal" -#~ msgstr "automata FOUT: intern" - -#~ msgid "cs_add_common: alloc fail #1" -#~ msgstr "'cs_add_common': toeken onsuksesvol #1" - -#~ msgid "cs_add_common: alloc fail #2" -#~ msgstr "'cs_add_common': toeken onsuksesvol #2" - -#~ msgid "cs_add_common: alloc fail #3" -#~ msgstr "'cs_add_common': toeken onsuksesvol #3" - -#~ msgid "cs_add_common: alloc fail #4" -#~ msgstr "'cs_add_common': toeken onsuksesvol #4" - -#~ msgid "Retrieve next symbol" -#~ msgstr "Kry volgende simbool" - -#~ msgid "-- SNiFF+ commands --" -#~ msgstr "-- SNiFF+ bevele --" - -#~ msgid "Unrecognized sniff request [%s]" -#~ msgstr "Onbekende sniff versoek [%s]" - -#~ msgid "Can't create input context." -#~ msgstr "Kan nie invoerkonteks skep nie." - -#~ msgid "Sorry, deleting a menu is not possible in the Athena version" -#~ msgstr "" -#~ "Jammer, in die Athena weergawe is dit onmoontlik om 'n kieslys te skrap" - -#~ msgid "Out of memory" -#~ msgstr "Geheue op" - -#~ msgid "PC (32 bits Vim)" -#~ msgstr "PC (32 bisse Vim)" - -#~ msgid "PC (16 bits Vim)" -#~ msgstr "PC (16 bisse Vim)" - -#~ msgid "Unsupported screen mode" -#~ msgstr "Ongesteunde skermmodus" - -#~ msgid "deadly signal" -#~ msgstr "dodelike sein" - -#~ msgid "some" -#~ msgstr "sommige" - -#~ msgid "Library call failed" -#~ msgstr "Biblioteekfunksieroep het gefaal" - -#~ msgid "Cannot clear all highlight groups" -#~ msgstr "Kan nie alle uitliggroepe leegmaak nie" - -#~ msgid "GUI is not running" -#~ msgstr "GUI voer nie uit nie" - -#~ msgid "Command too long" -#~ msgstr "Bevel te lank" - -#~ msgid "Ambiguous mapping" -#~ msgstr "Dubbelsinnige binding" - -#~ msgid "Ambiguous mapping, conflicts with \"%s\"" -#~ msgstr "Dubbelsinnige binding, bots met \"%s\"" - -#~ msgid "Too many \\(" -#~ msgstr "Te veel \\(" - -#~ msgid "Unmatched \\(" -#~ msgstr "Onpaar \\(" - -#~ msgid "Nested *, \\=, \\+, \\! or \\{" -#~ msgstr "Geneste *, \\=, \\+, \\! of \\{" - -#~ msgid "\\= follows nothing" -#~ msgstr "\\= volg niks" - -#~ msgid "\\+ follows nothing" -#~ msgstr "\\+ volg niks" - -#~ msgid "\\@ follows nothing" -#~ msgstr "\\@ volg niks" - -#~ msgid "\\{ follows nothing" -#~ msgstr "\\{ volg niks" - -#~ msgid "\\* follows nothing" -#~ msgstr "\\* volg niks" - -#~ msgid "Unexpected magic character; check META." -#~ msgstr "Onverwagte toorkarakter; kyk na META." - -#~ msgid "type :help uganda if you like Vim " -#~ msgstr "tik :help uganda as jy hou van Vim " - -#~ msgid " WARNING: Intel CPU detected. " -#~ msgstr " WAARSKUWING: Intel SVE bespeur. " - -#~ msgid " PPC has a much better architecture. " -#~ msgstr " PPC het 'n veel beter argitektuur. " - -#~ msgid "Security error: new viminfo file is a symbolic link" -#~ msgstr "Sekuriteitsfout: nuwe viminfo ler is a simboliese skakel" - -#~ msgid "line ~%: %s" -#~ msgstr "rel ~%: %s" - -#~ msgid "makeef option not set" -#~ msgstr "'makeef' opsie nie aan nie" - -#~ msgid "Security error: filter output is a symbolic link: %s" -#~ msgstr "Sekuriteitsfout: filter afvoer is 'n simboliese skakel" - -#~ msgid "Security error: 'charconvert' output is a symbolic link" -#~ msgstr "Sekuriteitsfout: 'charconvert' afvoer is 'n simboliese skakel" - -#~ msgid "Security error: filter input is a symbolic link: %s" -#~ msgstr "Sekuriteitsfout: filter invoer is 'n simboliese skakel" - -#~ msgid "Fold must be at least two lines" -#~ msgstr "'n Vou moet ten minste 2 rels wees" - -#~ msgid "No fold at this line" -#~ msgstr "Geen vou by hierdie rel nie" - -#~ msgid "Security error: shell command output is a symbolic link" -#~ msgstr "Sekuriteitsfout: Dop-bevel afvoer is 'n simboliese skakel" - -#~ msgid "Warning: %s option changed from modeline" -#~ msgstr "Waarskuwing: %s opsie verander vanaf moduslyn" - -#~ msgid "Change dir debugging enabled." -#~ msgstr "Verandergids ontfouting in staat gestel" - -#~ msgid "Not a proper file name: '%s'" -#~ msgstr "Nie 'n geldige lernaam nie: '%s'" - -#~ msgid "File name '%s' is valid" -#~ msgstr "lernaam '%s is ongeldig" - -#~ msgid "Leave: %s" -#~ msgstr "Verlaat: %s" - -#~ msgid "WARNING: tag command changed a buffer!!!" -#~ msgstr "WAARSKUWING: etiketbevel het buffer verander!!!" +#, fuzzy +#~ msgid "Unable to get option value" +#~ msgstr "E258: Kan nie na klint stuur nie" diff --git a/src/nvim/po/fi.po b/src/nvim/po/fi.po index ce15cf076c..e491649e14 100644 --- a/src/nvim/po/fi.po +++ b/src/nvim/po/fi.po @@ -277,9 +277,6 @@ msgstr "E83: Puskuria ei voitu varata, käytetään toista..." #~ msgid "E937: Attempt to delete a buffer that is in use" #~ msgstr "E934: Ei voida hypätä puskuriin jolla ei ole nimeä" -msgid "E937: Attempt to delete a buffer that is in use" -msgstr "E937: Ei voida poistaa puskuria joka on käytössä" - msgid "E515: No buffers were unloaded" msgstr "E515: Puskureita ei vapautettu" @@ -412,9 +409,6 @@ msgstr "Loppu" msgid "Top" msgstr "Alku" -msgid "E382: Cannot write, 'buftype' option is set" -msgstr "E382: Ei voi kirjoittaa, buftype asetettu" - msgid "[Scratch]" msgstr "[Raapust]" @@ -570,9 +564,6 @@ msgstr "Luetaan: %s" msgid "Scanning tags." msgstr "Luetaan tägejä." -msgid "match in file" -msgstr "täsmäys tiedostossa" - msgid " Adding" msgstr " Lisätään" @@ -1348,10 +1339,6 @@ msgstr "E737: Avain on jo olemassa: %s" #~ msgid "tv_clear() argument" #~ msgstr "filter()-argumentti" -#, c-format -msgid "E940: Cannot lock or unlock variable %s" -msgstr "E940: Muuttujaa %s ei voi lukita tai avata" - msgid "E743: variable nested too deep for (un)lock" msgstr "E743: muuttujassa liian monta tasoa lukituksen käsittelyyn" @@ -1424,156 +1411,18 @@ msgstr "E907: Käytettiin erikoisarvoa Floattina" msgid "E808: Number or Float required" msgstr "E808: Number tai Float vaaditaan" -msgid "Entering Debug mode. Type \"cont\" to continue." -msgstr "Siirrytään vianetsintätilaan, kirjoita cont jatkaaksesi." - #, c-format msgid "line %ld: %s" msgstr "rivi %ld: %s" -#, c-format -msgid "cmd: %s" -msgstr "kmnt: %s" - -msgid "frame is zero" -msgstr "kehys on nolla" - -#, c-format -msgid "frame at highest level: %d" -msgstr "kehys ylimmällä tasolla: %d" - #, c-format msgid "Breakpoint in \"%s%s\" line %ld" msgstr "Katkaisukohta %s%s rivillä %ld" -#, c-format -msgid "E161: Breakpoint not found: %s" -msgstr "E161: Katkaisukohta puuttuu: %s" - -msgid "No breakpoints defined" -msgstr "Ei katkaisukohtia" - #, c-format msgid "%3d %s %s line %ld" msgstr "%3d %s %s rivi %ld" -msgid "E750: First use \":profile start {fname}\"" -msgstr "E750: Aloita käskyllä :profile start {fname}" - -msgid "Save As" -msgstr "Tallenna nimellä" - -#, c-format -msgid "Save changes to \"%s\"?" -msgstr "Tallennetaanko muutokset tiedostoon %s?" - -#, c-format -msgid "E947: Job still running in buffer \"%s\"" -msgstr "E947: Komento on vielä käynnissä puskurissa \"%s\"" - -#, c-format -msgid "E162: No write since last change for buffer \"%s\"" -msgstr "E162: Muutoksia ei ole kirjoitettu puskurin %s viime muutoksen jälkeen" - -msgid "Warning: Entered other buffer unexpectedly (check autocommands)" -msgstr "Varoitus: Puskuri vaihtui odottamatta (tarkista autocommands)" - -msgid "E163: There is only one file to edit" -msgstr "E163: Vain yksi tiedosto muokattavana" - -msgid "E164: Cannot go before first file" -msgstr "E164: Ensimmäisen tiedoston ohi ei voi mennä" - -msgid "E165: Cannot go beyond last file" -msgstr "E165: Viimeisen tiedoston ohi ei voi mennä" - -#, c-format -msgid "E666: compiler not supported: %s" -msgstr "E666: kääntäjää ei tueta: %s" - -#, c-format -msgid "Searching for \"%s\" in \"%s\"" -msgstr "Etsitään ilmausta %s kohteesta %s" - -#, c-format -msgid "Searching for \"%s\"" -msgstr "Etsitään ilmausta %s" - -#, c-format -msgid "not found in '%s': \"%s\"" -msgstr "'%s' ei löydy kohteesta: %s" - -#, c-format -msgid "W20: Required python version 2.x not supported, ignoring file: %s" -msgstr "W20: Vaadittu python-versio 2.x ei ole tuettu. Ohitetaan: %s" - -#, c-format -msgid "W21: Required python version 3.x not supported, ignoring file: %s" -msgstr "W21: Vaadittu python-versio 3.x ei ole tuettu. Ohitetaan: %s" - -msgid "Source Vim script" -msgstr "Lataa vim-skripti" - -#, c-format -msgid "Cannot source a directory: \"%s\"" -msgstr "Hakemistoa ei voi ladata: %s" - -#, c-format -msgid "could not source \"%s\"" -msgstr "ei voitu ladata %s" - -#, c-format -msgid "line %ld: could not source \"%s\"" -msgstr "rivi %ld: ei voitu ladata %s" - -#, c-format -msgid "sourcing \"%s\"" -msgstr "ladataan %s" - -#, c-format -msgid "line %ld: sourcing \"%s\"" -msgstr "rivi %ld: ladataan %s" - -#, c-format -msgid "finished sourcing %s" -msgstr "ladattu %s" - -#, c-format -msgid "continuing in %s" -msgstr "jatkaa kohdassa %s" - -msgid "modeline" -msgstr "mode-rivi" - -msgid "--cmd argument" -msgstr "--cmd-argumentti" - -msgid "-c argument" -msgstr "-c-argumentti" - -msgid "environment variable" -msgstr "ympäristömuuttuja" - -msgid "error handler" -msgstr "virhekäsittelin" - -msgid "W15: Warning: Wrong line separator, ^M may be missing" -msgstr "W15: Varoitus: Väärä rivierotin, ^M saattaa puuttua" - -msgid "E167: :scriptencoding used outside of a sourced file" -msgstr "E167: :scriptencoding ladatun tiedoston ulkopuolella" - -msgid "E168: :finish used outside of a sourced file" -msgstr "E168: :finish ladatun tiedoston ulkopuolella" - -#, c-format -msgid "Current %slanguage: \"%s\"" -msgstr "Käytössä oleva %skieli: %s" - -#, c-format -msgid "E197: Cannot set language to \"%s\"" -msgstr "E197: Kieleksi ei voitu asettaa kieltä %s" - # puhutaan merkin ulkoasusta snprintf(..., c, c, c, c) #, c-format msgid "<%s>%s%s %d, Hex %02x, Octal %03o" @@ -4021,10 +3870,6 @@ msgstr "" "\n" "--- Valikot ---" -#, c-format -msgid "E335: Menu not defined for %s mode" -msgstr "E335: Valikkoa ei ole määritelty %s-tilassa" - msgid "E333: Menu path must lead to a menu item" msgstr "E333: Valikkopolun on johdettava valikkokohtaan" @@ -4367,9 +4212,6 @@ msgstr "E541: liikaa kohteita" msgid "E542: unbalanced groups" msgstr "E542: epätasapainoisia ryhmiä" -msgid "E946: Cannot make a terminal with running job modifiable" -msgstr "E946: Terminaalia jossa suoritetaan komentoa ei voi tehdä muokattavaksi" - msgid "E590: A preview window already exists" msgstr "E590: Esikatseluikkuna on jo olemassa" @@ -4563,12 +4405,6 @@ msgstr "E369: virheellinen olio kohdassa %s%%[]" msgid "E769: Missing ] after %s[" msgstr "E769: ] puuttuu merkinnän %s[ jäljestä" -msgid "E944: Reverse range in character class" -msgstr "E944: Merkiluokan arvoalua on takaperin" - -msgid "E945: Range too large in character class" -msgstr "E945: Liian laaja valikoima merkkiluokassa" - #, c-format msgid "E53: Unmatched %s%%(" msgstr "E53: Pariton %s%%(" @@ -4595,9 +4431,6 @@ msgstr "E69: ] puuttuu merkinnän %s%%[ jäljestä" msgid "E70: Empty %s%%[]" msgstr "E70: Tyhjä %s%%[]" -msgid "E65: Illegal back reference" -msgstr "E65: Virheellinen täsmäysviittaus" - msgid "E339: Pattern too long" msgstr "E339: Liian pitkä kuvio" @@ -4814,9 +4647,6 @@ msgstr " vanhaatiedostoa" msgid " FAILED" msgstr " EPÄONNISTUI" -msgid "E797: SpellFileMissing autocommand deleted buffer" -msgstr "E797: SpellFileMissing autocommand poisti puskurin" - #, c-format #~ msgid "System error while opening ShaDa file %s for reading: %s" #~ msgstr "" From c67dd5acd0bb9f8d08789dfe6af27d9045e95fb4 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Tue, 7 Nov 2017 23:54:31 +0100 Subject: [PATCH 36/76] NVIM v0.2.1 FEATURES: 0e873a30f307 Lua(Jit) built-in #4411 5b32bce73c93 Windows: `:terminal` #7007 7b0ceb3726e6 UI/API: externalize cmdline #7173 b67f58b2845a UI/API: externalize wildmenu #7454 b23aa1cf099e UI: 'winhighlight' #6597 17531ed0825c UI: command-line coloring (`:help input()-highlight`) #6364 244a1f97db6d API: execute lua directly from the remote api #6704 45626de63f2b API: `get_keymap()` #6236 db999821d45c API: `nvim_get_hl_by_name()`, `nvim_get_hl_by_id()` #7082 dc685387a3d6 menu_get() function #6322 9db42d4ce99c :cquit : take an error code argument #7336 9cc185dc6d9d job-control: serverstart(): support ipv6 #6680 1b7a9bf4d202 job-control: sockopen() #6594 6efe84af6813 clipboard: fallback to tmux clipboard #6894 6016ac270f54 clipboard: customize clipboard with `g:clipboard` #6030 3a86dd54f387 ruby: override ruby host via `g:ruby_host_prog` #6841 16cce1ac1745 debug: $NVIM_LOG_FILE #6827 0cba3da26e46 `:checkhealth` built-in, validates $VIMRUNTIME #7399 FIXES: 105d680aea9f TUI: more terminals, improve scroll/resize #6816 cb912a3edaad :terminal : handle F1-F12, other keys #7241 619838f85da2 inccommand: improve performance #6949 04b3c3277235 inccommand: Fix matches for zero-width #7487 60b1e8ad1237 inccommand: multiline, other fixes #7315 f1f7f3b5123e inccommand: Ignore leading modifiers in the command #6967 1551f7132152 inccommand: fix 'gdefault' lockup #7262 6338199b76e6 API: bufhl: support creating new groups #7414 541dde36e330 API: allow K_EVENT during operator-pending 8c732f727414 terminal: adjust for 'number' #7440 5bec94652c9d UI: preserve wildmenu during jobs/events #7110 c349083155cc UI: disable 'lazyredraw' during ui_refresh. #6259 51808a244eca send FocusGained/FocusLost event instead of pseudokey #7221 133f8bc628c2 shada: preserve unnamed register on restart #4700 1b70a1da0438 shada: avoid assertion on corrupt shada file #6958 9f534f338adf mksession: Restore tab-local working directory #6859 de1084f3c488 fix buf_write() crash #7140 7f7698649fc1 syntax: register 'Normal' highlight group #6973 6e7a8c3fe282 RPC: close channel if stream was closed #7081 85f3084e21e1 clipboard: disallow recursion; show hint only once #7203 8d1ccb606d38 clipboard: performance, avoid weird edge-cases #7193 01487d4385ae 'titleold' #7358 01e53a5cbe67 Windows: better path-handling, separator (slash) hygiene #7349 0f2873ce9943 Windows: multibyte startup arguments #7060 CHANGES: 9ff0cc70855f :terminal : start in normal-mode #6808 032b088c8485 lower priority of 'cursorcolumn', 'colorcolumn' #7364 2a3bcd1ff883 RPC: Don't delay notifications when request is pending #6544 023f67cad8d6 :terminal : Do not change 'number', 'relativenumber' #6796 1ef2d768e719 socket.c: Disable Nagle's algorithm on TCP sockets #6915 6720fe253e92 help: `K` tries Vim help instead of manpage #3104 70683705603e help, man.vim: change "outline" map to `gO` #7405 --- CMakeLists.txt | 4 ++-- test/functional/fixtures/api_level_3.mpack | Bin 0 -> 19501 bytes 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 test/functional/fixtures/api_level_3.mpack diff --git a/CMakeLists.txt b/CMakeLists.txt index e0daea5969..0ca1339c41 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -65,12 +65,12 @@ set_property(CACHE CMAKE_BUILD_TYPE PROPERTY set(NVIM_VERSION_MAJOR 0) set(NVIM_VERSION_MINOR 2) set(NVIM_VERSION_PATCH 1) -set(NVIM_VERSION_PRERELEASE "-dev") # for package maintainers +set(NVIM_VERSION_PRERELEASE "") # for package maintainers # API level set(NVIM_API_LEVEL 3) # Bump this after any API change. set(NVIM_API_LEVEL_COMPAT 0) # Adjust this after a _breaking_ API change. -set(NVIM_API_PRERELEASE true) +set(NVIM_API_PRERELEASE false) file(TO_CMAKE_PATH ${CMAKE_CURRENT_LIST_DIR}/.git FORCED_GIT_DIR) include(GetGitRevisionDescription) diff --git a/test/functional/fixtures/api_level_3.mpack b/test/functional/fixtures/api_level_3.mpack new file mode 100644 index 0000000000000000000000000000000000000000..ef36b99c8cb977ec2bedcbad8f3b280127b83624 GIT binary patch literal 19501 zcmcg!OLODK5#Gli$tjgo<&=LAS8~Y72fN}U3IvBDydb~=z+EY~*kzx+vg3O!ky=UC zV;^4UZ2yh?nDk7~qZ{l2hg_8pt~ErUzkYYm^Z;L7JXdX3Hucx*MgDoyK3Xrzx@n)R zmw8{zA7AFnGON^cRXx4c|64Q*_@SIs>XEr#wyIT?$~*PzJypjWg!$!us({NP@6|LzA{2P@N#B53$;*npQh~K7f!>@6QdeF z$UBA_PGOy?KQJ0}?pSp?r+%;%H7-hZvXSh&`FQfVDthB>_sp!%^VS-b0_>gP{>z9K z^SnM%)4nX8A@L`ac$E7^GZndi>w@O5;Kz`U^Y#P-C*)P_q0iLGB3~llQwq41jYMAOuRwk@U++`$x0X&LepHgZW3m(;8%W)P}L>+A8c%XkmBFfC=J&q&>f0Ehg&FIHnHt znuW3USV3KTn*+JM;<%$V^Msa)@48M)AZ3VjcYL9beE;rHIB^6502mq+so{&W2=d{bFk{7sDm!bX>qdrLR0}r>UY5k&{_H&=SHglyD&goTXA1|;r`}|HzOYp&41HCG< zyzld3E*2H1i3p|>@j5R(Zou;!yy6}mjecvBYfki?T}!qhy+w?5Tv788>f%U z6=1M$PqJ2Z+CVZ;aw*N=-E}L37>^=lTYTm~%FxsVhUTte2}uH-N04b$#oZy_~hp zB7?m+*r~BS;Ck9*Rk*z9mZ~W8N`iOF2z`m&RLEdoZ&83&M#a*c>>`Wix89XCt6r8a zs7f6#WujzZc4;)FptlvY?)`N=({i1z&2srXZ;wP1(Cz`_tH`S=bDN!G0Owjm`_RV) zvpQDAs#jUH%8@#A(V&T59s8Xf8ez<7&hLy$$Od{+f1RwKSkG++h9c` zt`!?4?zxR+{y+_zMacKri?-}X!!(tcYTJh(W|OcZR!MEY80|i3eq_d6m^4vNlQdzo zL&}vREjuwYVT&1(CN`iX=QTv;bGAsYxSe-psv>({RJw>KqDB_)BCYLZ7Zo+O?6Oa7 z;CI+Xkn&{kwQW&lsv>*$Za4i?+|xj_VkcnCYL~pprgcj?V_V!`p#ocSqJ7&R+Fx1%gJc$rjWycTh&Pfjn*V{v#tmClZ;xMs%iPU zg4Hq6=EF4#T04;QbCdl^g^aHk6=-EP?(sSFoXmHah5a69SfHa*hV&nu?TF&q4p#DbgJP$mC`1ehMJ7 z7L|v`XSA!{U#AQ)7%<>z|A^wHgsPP2OligivkO~DePv{doPy%|9nuCn%A>6e3n$5` zU4}D+gIaW&9NCQLVJgzyp0jF(2ix#;&I)Rfn)YAE7o?2;*H8fAbluirIkxPL4hz?O zF38St4NvMgk;j?yivzlObZ?o|D%M*lwq0gC{&uH{#svrwQ5)cbL*jU+Sb7I6K}S~6OzE8NN$X0pza;iNL>0Q|G1)pSLg{k9e^`OAahvp*nn*j z_Gq$ign2lFg!F}-#Bg4nDv+57umLus548>Hn=!1v*fsP`MgLLHBlr}U!F%!86nLCE z%Q2T4fQ*G1bx15I+y{<@$N6yz)CK4#%}!)a%vke+(+&P~oHrUr8XU_Y=X7wq1BHx| zUul#uNoKU6j-zhlljL-u*G8P}(K18yDm$mc-*FJ;E5;c+HVtL~iOIsJb(9~|`g<)w zY&^_RyclO>JUlK%NKfyKqRf$bJt~HC`b~QxB-lhzsOuWix;ShPX=VP+vCp)WHxNL# zYdcU91sD+4dlfqfd-a>&xf*qs~t$wkFIunU>gOA z%bOhqE*Qn2?ONM}6rHB7K>kJxGZ>@FzM7t82h<01)rX^guX%?`(X@RAAa0AD0VD>2 zPe`~*wet{XXl!$(9y5_V9X^;eN0S6n7cvkyDzY;e$fjmGgG3WW6e&>*uO-@z-#IPC zJMl#Fvl77gzOAvxd&@0ij*jZJn=Qos?Ba&?ho)LwypWIQ@=~vmcFPd_vCN@ zoT@7WMm=f_%r!S`BAkk3^3q_U%L3bHaXunWrEk1;Yi2AX>`~@evt(K_-O^@#1Dz%e zk_DqAI@NHbY-pP-Vg}THqRb>nq)n%-&YSr7mQe-GO98iQj}lXv(dBClF*kjM&1XR| zhrvX*fG8$}iXV|O(V%cM(RL1GQ{By>+t`uO50jX?9MLSDrH)JKNDKzHhX@x1eE{L^ ziEw1vnkE|`=%$M1Ahq3+A%*sJS8$LOqnlFd;FcTMEie5rKEQ#x$KBHN8DW#1P|U>yQ~1tD z2H!kbMQ^&Athy6?J2QIErM;(d@5gUz?$x4Mbt-djNHft;x0m*gnLVt@ZV5|F+-I~W zkbtTdbb5>$G*|d}0D;%6Y*M?|oy=EQ%##~@N?_@@Vlgx@~daeKEkf;#G5 z+|@3+6}+TV+t;)Q+`2BkFZ)U%MQvGgDe~)zO<6Rxx&M{EUtbBge`jNI4QI3$A;-WY z6>PjIcn!;c@b=X*+`54hK_6Y4 zFDn^2ek>MK!$3q&B-v^_rwl^j+EIYt1^)e%<3EK@yz6dW((Dk}dFP1Px5F|>Lbl0| zn1yiSWr^C-o*y+wDvbDV9NwgAif1urdFi|{Jm?w42lHhlP|(i?FuV9OPH*_Tc~Mr= zF+UDzgZn2`b@yP*J(0D5K)AX#+hXPmS=|?xe>*Oe`6$P~ekiApuKuAv-2flsYHEG` zc&)#q)qQEVoW9VvY~aIJv+@{Uhl9 Date: Wed, 8 Nov 2017 01:25:06 +0100 Subject: [PATCH 37/76] version bump --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0ca1339c41..1647e6e7af 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -64,8 +64,8 @@ set_property(CACHE CMAKE_BUILD_TYPE PROPERTY # version string, else they are combined with the result of `git describe`. set(NVIM_VERSION_MAJOR 0) set(NVIM_VERSION_MINOR 2) -set(NVIM_VERSION_PATCH 1) -set(NVIM_VERSION_PRERELEASE "") # for package maintainers +set(NVIM_VERSION_PATCH 2) +set(NVIM_VERSION_PRERELEASE "-dev") # for package maintainers # API level set(NVIM_API_LEVEL 3) # Bump this after any API change. From a48e078c0d0ec3f4abc5f26e26a24032d1614649 Mon Sep 17 00:00:00 2001 From: Arno Friedrich Date: Wed, 8 Nov 2017 04:59:28 +0100 Subject: [PATCH 38/76] doc: 'clipboard': soft-remove autoselect* flags #7509 We may restore this feature, but docs shouldn't mention it until then. ref #2325 --- runtime/doc/options.txt | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 016592925d..f58532824c 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1319,27 +1319,6 @@ A jump table for the options with a short description can be found at |Q_op|. will additionally copy the text into register '*'. See |clipboard|. - *clipboard-autoselect* - autoselect Works like the 'a' flag in 'guioptions': If present, - then whenever Visual mode is started, or the Visual - area extended, Vim tries to become the owner of the - windowing system's global selection or put the - selected text on the clipboard used by the selection - register "*. See |guioptions_a| and |quotestar| for - details. When the GUI is active, the 'a' flag in - 'guioptions' is used, when the GUI is not active, this - "autoselect" flag is used. - Also applies to the modeless selection. - - *clipboard-autoselectplus* - autoselectplus Like "autoselect" but using the + register instead of - the * register. Compare to the 'P' flag in - 'guioptions'. - - *clipboard-autoselectml* - autoselectml Like "autoselect", but for the modeless selection - only. Compare to the 'A' flag in 'guioptions'. - *'cmdheight'* *'ch'* 'cmdheight' 'ch' number (default 1) global From 55d8967147efbf1d0f3e2b5e13677ca4af9e2be4 Mon Sep 17 00:00:00 2001 From: Felipe Morales Date: Wed, 8 Nov 2017 23:32:49 +0100 Subject: [PATCH 39/76] tutor: some fixes (#7510) - conceal inline types - fix some links --- runtime/syntax/tutor.vim | 4 ++-- runtime/tutor/en/vim-01-beginner.tutor | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/runtime/syntax/tutor.vim b/runtime/syntax/tutor.vim index fbf159582a..cb101ee9a7 100644 --- a/runtime/syntax/tutor.vim +++ b/runtime/syntax/tutor.vim @@ -15,7 +15,7 @@ syn match tutorURL /\(https\?\|file\):\/\/[[:graph:]]\+\>\/\?/ syn match tutorEmail /\<[[:graph:]]\+@[[:graph:]]\+\>/ syn match tutorInternalAnchor /\*[[:alnum:]-]\+\*/ contained conceal containedin=tutorSection -syn match tutorSection /^#\{1,6}\s.\+$/ fold +syn match tutorSection /^#\{1,6}\s.\+$/ fold contains=tutorInlineNormal syn match tutorSectionBullet /#/ contained containedin=tutorSection syn match tutorTOC /\ctable of contents:/ @@ -44,7 +44,7 @@ syn region tutorInlineCommand matchgroup=Delimiter start=/\\\@ key (to make sure you are in [Normal mode](). + 1. Press the key (to make sure you are in [Normal mode](Normal-mode). 2. Type: From 9837a9c40105d3d28fc99d62693e47b32cec0f06 Mon Sep 17 00:00:00 2001 From: Marco Hinz Date: Thu, 9 Nov 2017 02:20:12 +0100 Subject: [PATCH 40/76] compat: "v:count" distinct from "count" (#7407) --- runtime/doc/eval.txt | 1 - runtime/doc/vim_diff.txt | 2 ++ src/nvim/eval.c | 2 +- test/functional/eval/special_vars_spec.lua | 7 +++++++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 24d704017f..11f549cd05 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -1474,7 +1474,6 @@ v:count The count given for the last Normal mode command. Can be used When there are two counts, as in "3d2w", they are multiplied, just like what happens in the command, "d6w" for the example. Also used for evaluating the 'formatexpr' option. - "count" also works, for backwards compatibility. *v:count1* *count1-variable* v:count1 Just like "v:count", but defaults to one when no count is diff --git a/runtime/doc/vim_diff.txt b/runtime/doc/vim_diff.txt index d37b9be4e3..04393f5e44 100644 --- a/runtime/doc/vim_diff.txt +++ b/runtime/doc/vim_diff.txt @@ -298,6 +298,8 @@ Highlight groups: |hl-ColorColumn|, |hl-CursorColumn| are lower priority than most other groups +The variable name "count" is no fallback for |v:count| anymore. + ============================================================================== 5. Missing legacy features *nvim-features-missing* diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 9752851d4e..0c0c03c8ed 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -334,7 +334,7 @@ static struct vimvar { // VV_SEND_SERVER "servername" // VV_REG "register" // VV_OP "operator" - VV(VV_COUNT, "count", VAR_NUMBER, VV_COMPAT+VV_RO), + VV(VV_COUNT, "count", VAR_NUMBER, VV_RO), VV(VV_COUNT1, "count1", VAR_NUMBER, VV_RO), VV(VV_PREVCOUNT, "prevcount", VAR_NUMBER, VV_RO), VV(VV_ERRMSG, "errmsg", VAR_STRING, VV_COMPAT), diff --git a/test/functional/eval/special_vars_spec.lua b/test/functional/eval/special_vars_spec.lua index 3d9358447e..b5773a5529 100644 --- a/test/functional/eval/special_vars_spec.lua +++ b/test/functional/eval/special_vars_spec.lua @@ -168,4 +168,11 @@ describe('Special values', function() 'Expected True but got v:null', }, meths.get_vvar('errors')) end) + + describe('compat', function() + it('v:count is distinct from count', function() + command('let count = []') -- v:count is readonly + eq(1, eval('count is# g:["count"]')) + end) + end) end) From 9baa7ca37ff75921820fe5539f962a4e51f632ce Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Thu, 9 Nov 2017 11:10:40 +0100 Subject: [PATCH 41/76] test/oldtest: `count` is not special in Nvim #7407 --- src/nvim/testdir/test_unlet.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/nvim/testdir/test_unlet.vim b/src/nvim/testdir/test_unlet.vim index f6705997a9..96ba752d9f 100644 --- a/src/nvim/testdir/test_unlet.vim +++ b/src/nvim/testdir/test_unlet.vim @@ -3,7 +3,7 @@ func Test_read_only() try " this caused a crash - unlet count + unlet v:count catch call assert_true(v:exception =~ ':E795:') endtry From d0b05e3c362205920a2fe9dc1b3a6c556b3f00d4 Mon Sep 17 00:00:00 2001 From: Hidehito Yabuuchi Date: Fri, 10 Nov 2017 09:38:08 +0900 Subject: [PATCH 42/76] runtime: Fix syntax error in `runtime/syntax/tex.vim` (#7518) --- runtime/syntax/tex.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/syntax/tex.vim b/runtime/syntax/tex.vim index 6b9e1a8949..d5a5de65c8 100644 --- a/runtime/syntax/tex.vim +++ b/runtime/syntax/tex.vim @@ -512,7 +512,7 @@ if !exists("g:tex_no_math") if &ambw == "double" || exists("g:tex_usedblwidth") let s:texMathDelimList= s:texMathDelimList + [ \ ['\\langle' , '〈'] , - \ ['\\rangle' , '〉'] , + \ ['\\rangle' , '〉']] else let s:texMathDelimList= s:texMathDelimList + [ \ ['\\langle' , '<'] , From 314ff440f7130c39d7990295535a8cfde92de4ba Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Fri, 10 Nov 2017 02:44:18 +0100 Subject: [PATCH 43/76] doc/vim_diff.txt: mention NormalNC --- runtime/doc/syntax.txt | 2 +- runtime/doc/vim_diff.txt | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt index f2225e6fda..85330f3dec 100644 --- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -4929,7 +4929,7 @@ NonText '@' at the end of the window, characters from 'showbreak' *hl-Normal* Normal normal text *hl-NormalNC* -NormalNC normal text in non-current window +NormalNC normal text in non-current windows *hl-Pmenu* Pmenu Popup menu: normal item. *hl-PmenuSel* diff --git a/runtime/doc/vim_diff.txt b/runtime/doc/vim_diff.txt index 04393f5e44..026ff6a0fb 100644 --- a/runtime/doc/vim_diff.txt +++ b/runtime/doc/vim_diff.txt @@ -159,6 +159,7 @@ Events: |TextYankPost| Highlight groups: + |hl-NormalNC| highlights non-current windows |hl-QuickFixLine| |hl-Substitute| |hl-TermCursor| From 7e8212c459b285aacf2dd225c1dad5593314f094 Mon Sep 17 00:00:00 2001 From: ckelsel Date: Fri, 10 Nov 2017 23:17:20 +0800 Subject: [PATCH 44/76] vim-patch:8.0.0224 Problem: When 'fileformats' is changed in a BufReadPre auto command, it does not take effect in readfile(). (Gary Johnson) Solution: Check the value of 'fileformats' after executing auto commands. (Christian Brabandt) https://github.com/vim/vim/commit/7a2699e868bca781e26b060a44fc714d87cfa4ba --- src/nvim/fileio.c | 20 +++++++++++++++----- src/nvim/testdir/test_fileformat.vim | 14 ++++++++++++++ src/nvim/version.c | 2 +- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/nvim/fileio.c b/src/nvim/fileio.c index feb16f44d4..81ac98081d 100644 --- a/src/nvim/fileio.c +++ b/src/nvim/fileio.c @@ -302,11 +302,11 @@ readfile ( linenr_T skip_count = 0; linenr_T read_count = 0; int msg_save = msg_scroll; - linenr_T read_no_eol_lnum = 0; /* non-zero lnum when last line of - * last read was missing the eol */ - int try_mac = (vim_strchr(p_ffs, 'm') != NULL); - int try_dos = (vim_strchr(p_ffs, 'd') != NULL); - int try_unix = (vim_strchr(p_ffs, 'x') != NULL); + linenr_T read_no_eol_lnum = 0; // non-zero lnum when last line of + // last read was missing the eol + int try_mac; + int try_dos; + int try_unix; int file_rewind = FALSE; int can_retry; linenr_T conv_error = 0; /* line nr with conversion error */ @@ -639,6 +639,10 @@ readfile ( curbuf->b_op_start.lnum = ((from == 0) ? 1 : from); curbuf->b_op_start.col = 0; + try_mac = (vim_strchr(p_ffs, 'm') != NULL); + try_dos = (vim_strchr(p_ffs, 'd') != NULL); + try_unix = (vim_strchr(p_ffs, 'x') != NULL); + if (!read_buffer) { int m = msg_scroll; int n = msg_scrolled; @@ -668,6 +672,12 @@ readfile ( else apply_autocmds_exarg(EVENT_FILEREADPRE, sfname, sfname, FALSE, NULL, eap); + + // autocommands may have changed it + try_mac = (vim_strchr(p_ffs, 'm') != NULL); + try_dos = (vim_strchr(p_ffs, 'd') != NULL); + try_unix = (vim_strchr(p_ffs, 'x') != NULL); + if (msg_scrolled == n) msg_scroll = m; diff --git a/src/nvim/testdir/test_fileformat.vim b/src/nvim/testdir/test_fileformat.vim index 584f20cdfc..256a7d5b1c 100644 --- a/src/nvim/testdir/test_fileformat.vim +++ b/src/nvim/testdir/test_fileformat.vim @@ -15,3 +15,17 @@ func Test_fileformat_after_bw() call assert_equal(test_fileformats, &fileformat) set fileformats& endfunc + +func Test_fileformat_autocommand() + let filecnt=['', 'foobar', 'eins', '', 'zwei', 'drei', 'vier', 'fünf', ''] + let ffs=&ffs + call writefile(filecnt, 'Xfile', 'b') + au BufReadPre Xfile set ffs=dos ff=dos + new Xfile + call assert_equal('dos', &l:ff) + call assert_equal('dos', &ffs) + " cleanup + let &ffs=ffs + au! BufReadPre Xfile + bw! +endfunc diff --git a/src/nvim/version.c b/src/nvim/version.c index a31381eddf..c57ca1e815 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -880,7 +880,7 @@ static const int included_patches[] = { // 227, // 226, // 225, - // 224, + 224, 223, // 222, // 221 NA From 67a2207c4a4d9b848a4759a7f1e11b5ad1265648 Mon Sep 17 00:00:00 2001 From: ckelsel Date: Fri, 10 Nov 2017 23:28:58 +0800 Subject: [PATCH 45/76] vim-patch:8.0.0226 Problem: The test for patch 8.0.0224 misses the CR characters and passes even without the fix. (Christian Brabandt) Solution: Use double quotes and \. https://github.com/vim/vim/commit/1695f99d08076d77ed3015f1edf09a668a4d449a --- src/nvim/testdir/test_fileformat.vim | 24 +++++++++++++----------- src/nvim/version.c | 2 +- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/nvim/testdir/test_fileformat.vim b/src/nvim/testdir/test_fileformat.vim index 256a7d5b1c..de505d3bd0 100644 --- a/src/nvim/testdir/test_fileformat.vim +++ b/src/nvim/testdir/test_fileformat.vim @@ -17,15 +17,17 @@ func Test_fileformat_after_bw() endfunc func Test_fileformat_autocommand() - let filecnt=['', 'foobar', 'eins', '', 'zwei', 'drei', 'vier', 'fünf', ''] - let ffs=&ffs - call writefile(filecnt, 'Xfile', 'b') - au BufReadPre Xfile set ffs=dos ff=dos - new Xfile - call assert_equal('dos', &l:ff) - call assert_equal('dos', &ffs) - " cleanup - let &ffs=ffs - au! BufReadPre Xfile - bw! + let filecnt = ["\", "foobar\", "eins\", "\", "zwei\", "drei", "vier", "fünf", ""] + let ffs = &ffs + call writefile(filecnt, 'Xfile', 'b') + au BufReadPre Xfile set ffs=dos ff=dos + new Xfile + call assert_equal('dos', &l:ff) + call assert_equal('dos', &ffs) + + " cleanup + call delete('Xfile') + let &ffs = ffs + au! BufReadPre Xfile + bw! endfunc diff --git a/src/nvim/version.c b/src/nvim/version.c index c57ca1e815..ae1c85d8e2 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -878,7 +878,7 @@ static const int included_patches[] = { 229, // 228, // 227, - // 226, + 226, // 225, 224, 223, From f5d4da0144c97ba13f530ea7dbd50f7b9768cb34 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Fri, 10 Nov 2017 22:37:54 +0100 Subject: [PATCH 46/76] :checkhealth : validate 'runtimepath' (#7526) --- runtime/doc/pi_health.txt | 10 +++++----- src/nvim/eval.c | 10 +++++++--- test/functional/plugin/health_spec.lua | 7 +++++++ 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/runtime/doc/pi_health.txt b/runtime/doc/pi_health.txt index 99ff519bb9..bb688770fc 100644 --- a/runtime/doc/pi_health.txt +++ b/runtime/doc/pi_health.txt @@ -23,11 +23,11 @@ Commands *health-commands* *:checkhealth* *:CheckHealth* :checkhealth Run all healthchecks. *E5009* - Nvim depends on the |$VIMRUNTIME| environment variable - to find the standard "runtime files" for syntax - highlighting, filetype-specific behavior, and standard - plugins such as :checkhealth. If $VIMRUNTIME is invalid - then those features will not work. + Nvim depends on |$VIMRUNTIME| and 'runtimepath' to find + the standard "runtime files" for syntax highlighting, + filetype-specific behavior, and standard plugins + (including :checkhealth). If the runtime files cannot + be found then those features will not work. :checkhealth {plugins} Run healthcheck(s) for one or more plugins. E.g. to run diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 0c0c03c8ed..33bea8ef87 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -22883,11 +22883,15 @@ void ex_checkhealth(exarg_T *eap) const char *vimruntime_env = os_getenv("VIMRUNTIME"); if (vimruntime_env == NULL) { EMSG(_("E5009: $VIMRUNTIME is empty or unset")); - return; } else { - EMSG2(_("E5009: Invalid $VIMRUNTIME: %s"), os_getenv("VIMRUNTIME")); - return; + bool rtp_ok = NULL != strstr((char *)p_rtp, vimruntime_env); + if (rtp_ok) { + EMSG2(_("E5009: Invalid $VIMRUNTIME: %s"), vimruntime_env); + } else { + EMSG(_("E5009: Invalid 'runtimepath'")); + } } + return; } size_t bufsize = STRLEN(eap->arg) + sizeof("call health#check('')"); diff --git a/test/functional/plugin/health_spec.lua b/test/functional/plugin/health_spec.lua index b5374210e6..8ee0f258d0 100644 --- a/test/functional/plugin/health_spec.lua +++ b/test/functional/plugin/health_spec.lua @@ -16,6 +16,13 @@ describe(':checkhealth', function() eq(false, status) eq('Invalid $VIMRUNTIME: bogus', string.match(err, 'Invalid.*')) end) + it("detects invalid 'runtimepath'", function() + clear() + command('set runtimepath=bogus') + local status, err = pcall(command, 'checkhealth') + eq(false, status) + eq("Invalid 'runtimepath'", string.match(err, 'Invalid.*')) + end) it("detects invalid $VIM", function() clear() -- Do this after startup, otherwise it just breaks $VIMRUNTIME. From faa15c5b83d409489c5147ad99e2c44adb3eb37c Mon Sep 17 00:00:00 2001 From: KunMing Xie Date: Sat, 11 Nov 2017 06:35:55 +0800 Subject: [PATCH 47/76] vim-patch:8.0.0218 (#7529) Problem: No command line completion for :cexpr, :cgetexpr, :caddexpr, etc. Solution: Make completion work. (Yegappan Lakshmanan) Add a test. https://github.com/vim/vim/commit/2b2207ba69c6b009e466a36eef0644ca723e16d3 --- src/nvim/ex_docmd.c | 6 ++++++ src/nvim/testdir/test_cmdline.vim | 28 ++++++++++++++++++++++++++++ src/nvim/version.c | 2 +- 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/nvim/ex_docmd.c b/src/nvim/ex_docmd.c index 096187b162..7a2b0328df 100644 --- a/src/nvim/ex_docmd.c +++ b/src/nvim/ex_docmd.c @@ -3272,6 +3272,12 @@ const char * set_one_cmd_context( case CMD_echoerr: case CMD_call: case CMD_return: + case CMD_cexpr: + case CMD_caddexpr: + case CMD_cgetexpr: + case CMD_lexpr: + case CMD_laddexpr: + case CMD_lgetexpr: set_context_for_expression(xp, (char_u *)arg, ea.cmdidx); break; diff --git a/src/nvim/testdir/test_cmdline.vim b/src/nvim/testdir/test_cmdline.vim index c0f04f4730..5abff1838d 100644 --- a/src/nvim/testdir/test_cmdline.vim +++ b/src/nvim/testdir/test_cmdline.vim @@ -25,6 +25,34 @@ func Test_complete_wildmenu() set nowildmenu endfunc +func Test_expr_completion() + if !(has('cmdline_compl') && has('eval')) + return + endif + for cmd in [ + \ 'let a = ', + \ 'if', + \ 'elseif', + \ 'while', + \ 'for', + \ 'echo', + \ 'echon', + \ 'execute', + \ 'echomsg', + \ 'echoerr', + \ 'call', + \ 'return', + \ 'cexpr', + \ 'caddexpr', + \ 'cgetexpr', + \ 'lexpr', + \ 'laddexpr', + \ 'lgetexpr'] + call feedkeys(":" . cmd . " getl\\\"\", 'xt') + call assert_equal('"' . cmd . ' getline(', getreg(':')) + endfor +endfunc + func Test_getcompletion() if !has('cmdline_compl') return diff --git a/src/nvim/version.c b/src/nvim/version.c index a31381eddf..7a12e6c38a 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -886,7 +886,7 @@ static const int included_patches[] = { // 221 NA // 220, 219, - // 218, + 218, // 217 NA // 216, // 215, From 4fa0970519c332350ce7cc687a0cd93ace17f5ca Mon Sep 17 00:00:00 2001 From: KunMing Xie Date: Sat, 11 Nov 2017 07:00:11 +0800 Subject: [PATCH 48/76] vim-patch:8.0.0242 (#7532) Problem: Completion of user defined functions is not covered by tests. Solution: Add tests. Also test various errors of user-defined commands. (Dominique Pelle, closes vim/vim#1413) https://github.com/vim/vim/commit/65c836e6004647196ae0bc18e409a9e7b79207c0 --- src/nvim/testdir/test_usercommands.vim | 104 +++++++++++++++++++++++++ src/nvim/version.c | 2 +- 2 files changed, 105 insertions(+), 1 deletion(-) diff --git a/src/nvim/testdir/test_usercommands.vim b/src/nvim/testdir/test_usercommands.vim index d0864ec64c..db603610da 100644 --- a/src/nvim/testdir/test_usercommands.vim +++ b/src/nvim/testdir/test_usercommands.vim @@ -102,3 +102,107 @@ func Test_CmdUndefined() call assert_fails('Dothat', 'E492:') call assert_equal('yes', g:didnot) endfunc + +func Test_CmdErrors() + call assert_fails('com! docmd :', 'E183:') + call assert_fails('com! \ :', 'E182:') + call assert_fails('com! _ :', 'E182:') + call assert_fails('com! X :', 'E841:') + call assert_fails('com! - DoCmd :', 'E175:') + call assert_fails('com! -xxx DoCmd :', 'E181:') + call assert_fails('com! -addr DoCmd :', 'E179:') + call assert_fails('com! -complete DoCmd :', 'E179:') + call assert_fails('com! -complete=xxx DoCmd :', 'E180:') + call assert_fails('com! -complete=custom DoCmd :', 'E467:') + call assert_fails('com! -complete=customlist DoCmd :', 'E467:') + call assert_fails('com! -complete=behave,CustomComplete DoCmd :', 'E468:') + call assert_fails('com! -nargs=x DoCmd :', 'E176:') + call assert_fails('com! -count=1 -count=2 DoCmd :', 'E177:') + call assert_fails('com! -count=x DoCmd :', 'E178:') + call assert_fails('com! -range=x DoCmd :', 'E178:') + + com! -nargs=0 DoCmd : + call assert_fails('DoCmd x', 'E488:') + + com! -nargs=1 DoCmd : + call assert_fails('DoCmd', 'E471:') + + com! -nargs=+ DoCmd : + call assert_fails('DoCmd', 'E471:') + + call assert_fails('com DoCmd :', 'E174:') + comclear + call assert_fails('delcom DoCmd', 'E184:') +endfunc + +func CustomComplete(A, L, P) + return "January\nFebruary\nMars\n" +endfunc + +func CustomCompleteList(A, L, P) + return [ "Monday", "Tuesday", "Wednesday" ] +endfunc + +func Test_CmdCompletion() + call feedkeys(":com -\\\"\", 'tx') + call assert_equal('"com -addr bang bar buffer complete count nargs range register', @:) + + call feedkeys(":com -nargs=0 -\\\"\", 'tx') + call assert_equal('"com -nargs=0 -addr bang bar buffer complete count nargs range register', @:) + + call feedkeys(":com -nargs=\\\"\", 'tx') + call assert_equal('"com -nargs=* + 0 1 ?', @:) + + call feedkeys(":com -addr=\\\"\", 'tx') + call assert_equal('"com -addr=arguments buffers lines loaded_buffers quickfix tabs windows', @:) + + call feedkeys(":com -complete=co\\\"\", 'tx') + call assert_equal('"com -complete=color command compiler', @:) + + command! DoCmd1 : + command! DoCmd2 : + call feedkeys(":com \\\"\", 'tx') + call assert_equal('"com DoCmd1 DoCmd2', @:) + + call feedkeys(":DoC\\\"\", 'tx') + call assert_equal('"DoCmd1 DoCmd2', @:) + + call feedkeys(":delcom DoC\\\"\", 'tx') + call assert_equal('"delcom DoCmd1 DoCmd2', @:) + + delcom DoCmd1 + call feedkeys(":delcom DoC\\\"\", 'tx') + call assert_equal('"delcom DoCmd2', @:) + + call feedkeys(":com DoC\\\"\", 'tx') + call assert_equal('"com DoCmd2', @:) + + delcom DoCmd2 + call feedkeys(":delcom DoC\\\"\", 'tx') + call assert_equal('"delcom DoC', @:) + + call feedkeys(":com DoC\\\"\", 'tx') + call assert_equal('"com DoC', @:) + + com! -complete=behave DoCmd : + call feedkeys(":DoCmd \\\"\", 'tx') + call assert_equal('"DoCmd mswin xterm', @:) + + " This does not work. Why? + "call feedkeys(":DoCmd x\\\"\", 'tx') + "call assert_equal('"DoCmd xterm', @:) + + com! -complete=custom,CustomComplete DoCmd : + call feedkeys(":DoCmd \\\"\", 'tx') + call assert_equal('"DoCmd January February Mars', @:) + + com! -complete=customlist,CustomCompleteList DoCmd : + call feedkeys(":DoCmd \\\"\", 'tx') + call assert_equal('"DoCmd Monday Tuesday Wednesday', @:) + + com! -complete=custom,CustomCompleteList DoCmd : + call assert_fails("call feedkeys(':DoCmd \', 'tx')", 'E730:') + + com! -complete=customlist,CustomComp DoCmd : + call assert_fails("call feedkeys(':DoCmd \', 'tx')", 'E117:') +endfunc diff --git a/src/nvim/version.c b/src/nvim/version.c index 7a12e6c38a..16a265fed3 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -862,7 +862,7 @@ static const int included_patches[] = { // 245, // 244, 243, - // 242, + 242, // 241 NA // 240 NA // 239 NA From a2fdd0a72f9d1f72f2e49e80719902a6f555454e Mon Sep 17 00:00:00 2001 From: KunMing Xie Date: Sat, 11 Nov 2017 08:26:55 +0800 Subject: [PATCH 49/76] vim-patch:8.0.0237 (#7531) Problem: When setting wildoptions=tagfile the completion context is not set correctly. (desjardins) Solution: Check for EXPAND_TAGS_LISTFILES. (Christian Brabandt, closes vim/vim#1399) https://github.com/vim/vim/commit/ba47b51ff88d91c9bb5aa522183e23a656865697 --- src/nvim/ex_getln.c | 4 +++- src/nvim/testdir/test_cmdline.vim | 10 ++++++++++ src/nvim/version.c | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c index 43e7cf457d..9c9ccbca4d 100644 --- a/src/nvim/ex_getln.c +++ b/src/nvim/ex_getln.c @@ -4147,7 +4147,9 @@ addstar ( || context == EXPAND_OWNSYNTAX || context == EXPAND_FILETYPE || context == EXPAND_PACKADD - || (context == EXPAND_TAGS && fname[0] == '/')) + || ((context == EXPAND_TAGS_LISTFILES + || context == EXPAND_TAGS) + && fname[0] == '/')) retval = vim_strnsave(fname, len); else { new_len = len + 2; /* +2 for '^' at start, NUL at end */ diff --git a/src/nvim/testdir/test_cmdline.vim b/src/nvim/testdir/test_cmdline.vim index 5abff1838d..5fc519f822 100644 --- a/src/nvim/testdir/test_cmdline.vim +++ b/src/nvim/testdir/test_cmdline.vim @@ -296,3 +296,13 @@ func Test_illegal_address2() call delete('Xtest.vim') endfunc +func Test_cmdline_complete_wildoptions() + help + call feedkeys(":tag /\\\"\", 'tx') + let a = join(sort(split(@:)),' ') + set wildoptions=tagfile + call feedkeys(":tag /\\\"\", 'tx') + let b = join(sort(split(@:)),' ') + call assert_equal(a, b) + bw! +endfunc diff --git a/src/nvim/version.c b/src/nvim/version.c index 16a265fed3..05725a59f9 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -867,7 +867,7 @@ static const int included_patches[] = { // 240 NA // 239 NA // 238, - // 237, + 237, // 236, 235, // 234, From ea020f2e26f1e5cb89eb632c1b0ee51daf7718b4 Mon Sep 17 00:00:00 2001 From: ckelsel Date: Sat, 11 Nov 2017 09:04:48 +0800 Subject: [PATCH 50/76] fix lint error --- src/nvim/fileio.c | 51 +++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/src/nvim/fileio.c b/src/nvim/fileio.c index 81ac98081d..c3a0a33378 100644 --- a/src/nvim/fileio.c +++ b/src/nvim/fileio.c @@ -307,7 +307,7 @@ readfile ( int try_mac; int try_dos; int try_unix; - int file_rewind = FALSE; + int file_rewind = false; int can_retry; linenr_T conv_error = 0; /* line nr with conversion error */ linenr_T illegal_byte = 0; /* line nr with illegal byte */ @@ -647,39 +647,38 @@ readfile ( int m = msg_scroll; int n = msg_scrolled; - /* - * The file must be closed again, the autocommands may want to change - * the file before reading it. - */ - if (!read_stdin) - close(fd); /* ignore errors */ + // The file must be closed again, the autocommands may want to change + // the file before reading it. + if (!read_stdin) { + close(fd); // ignore errors + } - /* - * The output from the autocommands should not overwrite anything and - * should not be overwritten: Set msg_scroll, restore its value if no - * output was done. - */ - msg_scroll = TRUE; - if (filtering) + // The output from the autocommands should not overwrite anything and + // should not be overwritten: Set msg_scroll, restore its value if no + // output was done. + msg_scroll = true; + if (filtering) { apply_autocmds_exarg(EVENT_FILTERREADPRE, NULL, sfname, - FALSE, curbuf, eap); - else if (read_stdin) + false, curbuf, eap); + } else if (read_stdin) { apply_autocmds_exarg(EVENT_STDINREADPRE, NULL, sfname, - FALSE, curbuf, eap); - else if (newfile) + false, curbuf, eap); + } else if (newfile) { apply_autocmds_exarg(EVENT_BUFREADPRE, NULL, sfname, - FALSE, curbuf, eap); - else + false, curbuf, eap); + } else { apply_autocmds_exarg(EVENT_FILEREADPRE, sfname, sfname, - FALSE, NULL, eap); + false, NULL, eap); + } - // autocommands may have changed it - try_mac = (vim_strchr(p_ffs, 'm') != NULL); - try_dos = (vim_strchr(p_ffs, 'd') != NULL); - try_unix = (vim_strchr(p_ffs, 'x') != NULL); + // autocommands may have changed it + try_mac = (vim_strchr(p_ffs, 'm') != NULL); + try_dos = (vim_strchr(p_ffs, 'd') != NULL); + try_unix = (vim_strchr(p_ffs, 'x') != NULL); - if (msg_scrolled == n) + if (msg_scrolled == n) { msg_scroll = m; + } if (aborting()) { /* autocmds may abort script processing */ --no_wait_return; From 881f9e42d1821214b97732022b406ddb4330b775 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Sun, 12 Nov 2017 15:34:04 +0100 Subject: [PATCH 51/76] process_close(): uv_unref() detached processes (#7539) Doc for UV_PROCESS_DETACHED in uv.h mentions: > child process will still keep the parent's event loop alive unless > the parent process calls uv_unref() on the child's process handle. ref #3944 --- src/nvim/event/libuv_process.c | 2 +- src/nvim/event/process.c | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/nvim/event/libuv_process.c b/src/nvim/event/libuv_process.c index f6a567a520..758b35796e 100644 --- a/src/nvim/event/libuv_process.c +++ b/src/nvim/event/libuv_process.c @@ -38,7 +38,7 @@ int libuv_process_spawn(LibuvProcess *uvproc) #endif uvproc->uvopts.exit_cb = exit_cb; uvproc->uvopts.cwd = proc->cwd; - uvproc->uvopts.env = NULL; + uvproc->uvopts.env = NULL; // Inherits the parent (nvim) env. uvproc->uvopts.stdio = uvproc->uvstdio; uvproc->uvopts.stdio_count = 3; uvproc->uvstdio[0].flags = UV_IGNORE; diff --git a/src/nvim/event/process.c b/src/nvim/event/process.c index 8371d3cd48..41e793500a 100644 --- a/src/nvim/event/process.c +++ b/src/nvim/event/process.c @@ -324,6 +324,13 @@ static void process_close(Process *proc) } assert(!proc->closed); proc->closed = true; + + if (proc->detach) { + if (proc->type == kProcessTypeUv) { + uv_unref((uv_handle_t *)&(((LibuvProcess *)proc)->uv)); + } + } + switch (proc->type) { case kProcessTypeUv: libuv_process_close((LibuvProcess *)proc); From 69e33087716ce67bfda5f67a42f83d77906111f7 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Sat, 11 Nov 2017 12:52:21 +0100 Subject: [PATCH 52/76] cmake: install runtime/rgb.txt closes #6682 --- runtime/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/runtime/CMakeLists.txt b/runtime/CMakeLists.txt index f81d8541b5..6dbe049232 100644 --- a/runtime/CMakeLists.txt +++ b/runtime/CMakeLists.txt @@ -137,6 +137,7 @@ endforeach() file(GLOB_RECURSE RUNTIME_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + rgb.txt *.vim *.dict *.py *.rb *.ps *.tutor) foreach(F ${RUNTIME_FILES}) From cf75de710cfb817871cb614f2091a11f069db2b7 Mon Sep 17 00:00:00 2001 From: James McCoy Date: Thu, 9 Nov 2017 23:19:25 -0500 Subject: [PATCH 53/76] tui_spec: Convert nil to "" before formatting it This fixes an apparent difference in behavior between Lua and LuaJIT. Lua fails to format nil: test/functional/terminal/tui_spec.lua:381: bad argument #2 to 'format' (string expected, got nil) --- test/functional/terminal/tui_spec.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/functional/terminal/tui_spec.lua b/test/functional/terminal/tui_spec.lua index d36eb46e54..777ef65d9e 100644 --- a/test/functional/terminal/tui_spec.lua +++ b/test/functional/terminal/tui_spec.lua @@ -380,7 +380,7 @@ describe("tui 't_Co' (terminal colors)", function() -- TODO: Revisit this after jobstart/termopen accept `env` dict. screen = thelpers.screen_setup(0, string.format( [=[['sh', '-c', 'LANG=C TERM=%s %s %s -u NONE -i NONE --cmd "silent set noswapfile noshowcmd noruler"']]=], - term, + term or "", (colorterm ~= nil and "COLORTERM="..colorterm or ""), helpers.nvim_prog)) From 0407ddb36464c46086b608baebf7eed8a9ab60d5 Mon Sep 17 00:00:00 2001 From: James McCoy Date: Sat, 11 Nov 2017 10:48:04 -0500 Subject: [PATCH 54/76] Use PRId64 to format Integer when calling api_set_error Integer is a 64-bit type so using %d can produce incorrect results. test/functional/api/highlight_spec.lua @ 35: highlight api nvim_get_hl_by_id ...W7Xi/neovim-0.2.1/test/functional/api/highlight_spec.lua:46: Expected objects to be the same. Passed in: (string) 'Invalid highlight id: 7671724' Expected: (string) 'Invalid highlight id: 30000' --- src/nvim/api/vim.c | 3 ++- src/nvim/syntax.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/nvim/api/vim.c b/src/nvim/api/vim.c index e5ec018795..d2b0e329c9 100644 --- a/src/nvim/api/vim.c +++ b/src/nvim/api/vim.c @@ -89,7 +89,8 @@ Dictionary nvim_get_hl_by_id(Integer hl_id, Boolean rgb, Error *err) { Dictionary dic = ARRAY_DICT_INIT; if (syn_get_final_id((int)hl_id) == 0) { - api_set_error(err, kErrorTypeException, "Invalid highlight id: %d", hl_id); + api_set_error(err, kErrorTypeException, + "Invalid highlight id: %" PRId64, hl_id); return dic; } int attrcode = syn_id2attr((int)hl_id); diff --git a/src/nvim/syntax.c b/src/nvim/syntax.c index 913fd05482..65490768c4 100644 --- a/src/nvim/syntax.c +++ b/src/nvim/syntax.c @@ -8256,7 +8256,7 @@ Dictionary hl_get_attr_by_id(Integer attr_id, Boolean rgb, Error *err) attrentry_T *aep = syn_cterm_attr2entry((int)attr_id); if (!aep) { api_set_error(err, kErrorTypeException, - "Invalid attribute id: %d", attr_id); + "Invalid attribute id: %" PRId64, attr_id); return dic; } From b63cde97f40b962f80ab929036d0eb8c1228b33f Mon Sep 17 00:00:00 2001 From: James McCoy Date: Sun, 12 Nov 2017 14:22:35 -0500 Subject: [PATCH 55/76] tests: terminal: Assert for SIGWINCH handling before continuing Fixes test failures like test/functional/terminal/cursor_spec.lua @ 62: terminal cursor with number column is positioned correctly when focused ./test/functional/ui/screen.lua:302: Row 2 did not match. Expected: |{7: 1 }tty ready | |*{7: 2 }{1: } | |{7: 3 } | |{7: 4 } | |{7: 5 } | |{7: 6 } | |{3:-- TERMINAL --} | Actual: |{7: 1 }tty ready | |*{7: 2 }rows: 6, cols: 46 | |{7: 3 }{1: } | |{7: 4 } | |{7: 5 } | |{7: 6 } | |{3:-- TERMINAL --} | --- test/functional/terminal/cursor_spec.lua | 17 +++++++++++++---- test/functional/terminal/window_spec.lua | 15 ++++++++++++--- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/test/functional/terminal/cursor_spec.lua b/test/functional/terminal/cursor_spec.lua index d49f1bfc23..d942723d02 100644 --- a/test/functional/terminal/cursor_spec.lua +++ b/test/functional/terminal/cursor_spec.lua @@ -50,8 +50,8 @@ describe('terminal cursor', function() it('is positioned correctly when unfocused', function() screen:expect([[ {7: 1 }tty ready | - {7: 2 }{2:^ } | - {7: 3 } | + {7: 2 }^rows: 6, cols: 46 | + {7: 3 }{2: } | {7: 4 } | {7: 5 } | {7: 6 } | @@ -60,12 +60,21 @@ describe('terminal cursor', function() end) it('is positioned correctly when focused', function() + screen:expect([[ + {7: 1 }tty ready | + {7: 2 }^rows: 6, cols: 46 | + {7: 3 }{2: } | + {7: 4 } | + {7: 5 } | + {7: 6 } | + :set number | + ]]) feed('i') helpers.wait() screen:expect([[ {7: 1 }tty ready | - {7: 2 }{1: } | - {7: 3 } | + {7: 2 }rows: 6, cols: 46 | + {7: 3 }{1: } | {7: 4 } | {7: 5 } | {7: 6 } | diff --git a/test/functional/terminal/window_spec.lua b/test/functional/terminal/window_spec.lua index 231618c5da..842a81872e 100644 --- a/test/functional/terminal/window_spec.lua +++ b/test/functional/terminal/window_spec.lua @@ -43,14 +43,23 @@ describe('terminal window', function() -- numberwidth=9 feed([[]]) feed([[:set numberwidth=9 numberi]]) + screen:expect([[ + {7: 1 }tty ready | + {7: 2 }rows: 6, cols: 48 | + {7: 3 }abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNO| + {7: 4 }WXYZrows: 6, cols: 41 | + {7: 5 }{1: } | + {7: 6 } | + {3:-- TERMINAL --} | + ]]) thelpers.feed_data({' abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'}) screen:expect([[ {7: 1 }tty ready | {7: 2 }rows: 6, cols: 48 | {7: 3 }abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNO| - {7: 4 }WXYZ abcdefghijklmnopqrstuvwxyzABCDEFGHIJ| - {7: 5 }KLMNOPQRSTUVWXYZrows: 6, cols: 41 | - {7: 6 }{1: } | + {7: 4 }WXYZrows: 6, cols: 41 | + {7: 5 } abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN| + {7: 6 }OPQRSTUVWXYZ{1: } | {3:-- TERMINAL --} | ]]) end) From 6b8c34137cf3253616e6a6f861380541537c0bb9 Mon Sep 17 00:00:00 2001 From: KunMing Xie Date: Mon, 13 Nov 2017 06:27:08 +0800 Subject: [PATCH 56/76] vim-patch: NA * vim-patch:8.0.0245 Problem: The generated zh_CN.cp936.po message file is not encoded properly. Solution: Instead of using zh_CN.po as input, use zh_CN.UTF-8.po. https://github.com/vim/vim/commit/16038d50c4309e8dee33c70ca2c9e7f73439c4df * vim-patch:8.0.0248 Problem: vim_strcat() cannot handle overlapping arguments. Solution: Use mch_memmove() instead of strcpy(). (Justin M Keyes, closes vim/vim#1415) https://github.com/vim/vim/commit/45600ce8f2bead069882032f992623cd5a799ca0 --- src/nvim/version.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/nvim/version.c b/src/nvim/version.c index 05725a59f9..8c9bea9a9b 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -856,10 +856,10 @@ static const int included_patches[] = { // 251, 250, // 249 NA - // 248, + // 248 NA 247, // 246 NA - // 245, + 245, // 244, 243, 242, From e6beb60da517b6d7d7461687bf91f87d097b9563 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Mon, 13 Nov 2017 02:06:32 +0100 Subject: [PATCH 57/76] :terminal : fix crash on resize (#7547) closes #7538 Fix wrong window references from #7440 Remove some eager resizing. Still mostly doesn't address #4997. --- src/nvim/buffer.c | 7 -- src/nvim/screen.c | 4 +- src/nvim/window.c | 18 +--- test/functional/terminal/mouse_spec.lua | 28 +++--- .../terminal/window_split_tab_spec.lua | 91 +++++++++---------- 5 files changed, 62 insertions(+), 86 deletions(-) diff --git a/src/nvim/buffer.c b/src/nvim/buffer.c index f874268910..766003a021 100644 --- a/src/nvim/buffer.c +++ b/src/nvim/buffer.c @@ -64,7 +64,6 @@ #include "nvim/spell.h" #include "nvim/strings.h" #include "nvim/syntax.h" -#include "nvim/terminal.h" #include "nvim/ui.h" #include "nvim/undo.h" #include "nvim/version.h" @@ -1464,12 +1463,6 @@ void enter_buffer(buf_T *buf) /* mark cursor position as being invalid */ curwin->w_valid = 0; - if (buf->terminal) { - terminal_resize(buf->terminal, - (uint16_t)(MAX(0, curwin->w_width - win_col_off(curwin))), - (uint16_t)curwin->w_height); - } - /* Make sure the buffer is loaded. */ if (curbuf->b_ml.ml_mfp == NULL) { /* need to load the file */ /* If there is no filetype, allow for detecting one. Esp. useful for diff --git a/src/nvim/screen.c b/src/nvim/screen.c index 41e900eb4c..ed96e98d32 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -696,8 +696,8 @@ static void win_update(win_T *wp) if (buf->terminal) { terminal_resize(buf->terminal, - (uint16_t)(MAX(0, curwin->w_width - win_col_off(curwin))), - (uint16_t)curwin->w_height); + (uint16_t)(MAX(0, wp->w_width - win_col_off(wp))), + (uint16_t)wp->w_height); } } else if (buf->b_mod_set && buf->b_mod_xlines != 0 diff --git a/src/nvim/window.c b/src/nvim/window.c index 2d64409a1c..4e4eb297aa 100644 --- a/src/nvim/window.c +++ b/src/nvim/window.c @@ -1846,12 +1846,6 @@ static bool close_last_window_tabpage(win_T *win, bool free_buf, shell_new_rows(); } - if (term) { - // When a window containing a terminal buffer is closed, recalculate its - // size - terminal_resize(term, 0, 0); - } - // Since goto_tabpage_tp above did not trigger *Enter autocommands, do // that now. apply_autocmds(EVENT_TABCLOSED, prev_idx, prev_idx, false, curbuf); @@ -3745,12 +3739,6 @@ static void win_enter_ext(win_T *wp, bool undo_sync, int curwin_invalid, /* Change directories when the 'acd' option is set. */ do_autochdir(); - - if (curbuf->terminal) { - terminal_resize(curbuf->terminal, - (uint16_t)(MAX(0, curwin->w_width - win_col_off(curwin))), - (uint16_t)curwin->w_height); - } } @@ -4930,9 +4918,7 @@ void scroll_to_fraction(win_T *wp, int prev_height) } } -/* - * Set the width of a window. - */ +/// Set the width of a window. void win_new_width(win_T *wp, int width) { wp->w_width = width; @@ -4949,7 +4935,7 @@ void win_new_width(win_T *wp, int width) if (wp->w_buffer->terminal) { if (wp->w_height != 0) { terminal_resize(wp->w_buffer->terminal, - (uint16_t)(MAX(0, curwin->w_width - win_col_off(curwin))), + (uint16_t)(MAX(0, wp->w_width - win_col_off(wp))), 0); } } diff --git a/test/functional/terminal/mouse_spec.lua b/test/functional/terminal/mouse_spec.lua index 29c62d7be7..5e5558ee0a 100644 --- a/test/functional/terminal/mouse_spec.lua +++ b/test/functional/terminal/mouse_spec.lua @@ -101,7 +101,7 @@ describe('terminal mouse', function() line28 |line28 | line29 |line29 | line30 |line30 | - rows: 5, cols: 25 |rows: 5, cols: 25 | + rows: 5, cols: 24 |rows: 5, cols: 24 | {2:^ } |{2: } | ========== ========== | :vsp | @@ -111,7 +111,7 @@ describe('terminal mouse', function() {7: 1 }^ |line28 | {4:~ }|line29 | {4:~ }|line30 | - {4:~ }|rows: 5, cols: 25 | + {4:~ }|rows: 5, cols: 24 | {4:~ }|{2: } | ========== ========== | :enew | set number | @@ -121,16 +121,16 @@ describe('terminal mouse', function() {7: 27 }line |line28 | {7: 28 }line |line29 | {7: 29 }line |line30 | - {7: 30 }line |rows: 5, cols: 25 | + {7: 30 }line |rows: 5, cols: 24 | {7: 31 }^ |{2: } | ========== ========== | | ]]) feed('li') screen:expect([[ - {7: 27 }line |line29 | - {7: 28 }line |line30 | - {7: 29 }line |rows: 5, cols: 25 | + {7: 27 }line |line28 | + {7: 28 }line |line29 | + {7: 29 }line |line30 | {7: 30 }line |rows: 5, cols: 24 | {7: 31 } |{1: } | ========== ========== | @@ -140,8 +140,8 @@ describe('terminal mouse', function() thelpers.enable_mouse() thelpers.feed_data('mouse enabled\n') screen:expect([[ - {7: 27 }line |line30 | - {7: 28 }line |rows: 5, cols: 25 | + {7: 27 }line |line29 | + {7: 28 }line |line30 | {7: 29 }line |rows: 5, cols: 24 | {7: 30 }line |mouse enabled | {7: 31 } |{1: } | @@ -153,8 +153,8 @@ describe('terminal mouse', function() it('wont lose focus if another window is scrolled', function() feed('<0,0><0,0>') screen:expect([[ - {7: 21 }line |line30 | - {7: 22 }line |rows: 5, cols: 25 | + {7: 21 }line |line29 | + {7: 22 }line |line30 | {7: 23 }line |rows: 5, cols: 24 | {7: 24 }line |mouse enabled | {7: 25 }line |{1: } | @@ -163,8 +163,8 @@ describe('terminal mouse', function() ]]) feed('<0,0>') screen:expect([[ - {7: 26 }line |line30 | - {7: 27 }line |rows: 5, cols: 25 | + {7: 26 }line |line29 | + {7: 27 }line |line30 | {7: 28 }line |rows: 5, cols: 24 | {7: 29 }line |mouse enabled | {7: 30 }line |{1: } | @@ -176,8 +176,8 @@ describe('terminal mouse', function() it('will lose focus if another window is clicked', function() feed('<5,1>') screen:expect([[ - {7: 27 }line |line30 | - {7: 28 }l^ine |rows: 5, cols: 25 | + {7: 27 }line |line29 | + {7: 28 }l^ine |line30 | {7: 29 }line |rows: 5, cols: 24 | {7: 30 }line |mouse enabled | {7: 31 } |{2: } | diff --git a/test/functional/terminal/window_split_tab_spec.lua b/test/functional/terminal/window_split_tab_spec.lua index c5199f620e..714c2476ce 100644 --- a/test/functional/terminal/window_split_tab_spec.lua +++ b/test/functional/terminal/window_split_tab_spec.lua @@ -3,6 +3,9 @@ local thelpers = require('test.functional.terminal.helpers') local clear = helpers.clear local feed, nvim = helpers.feed, helpers.nvim local feed_command = helpers.feed_command +local command = helpers.command +local eq = helpers.eq +local eval = helpers.eval describe('terminal', function() local screen @@ -22,72 +25,66 @@ describe('terminal', function() screen:detach() end) - it('resets its size when entering terminal window', function() + it('next to a closing window', function() + command('split') + command('terminal') + command('vsplit foo') + eq(3, eval("winnr('$')")) + feed('ZQ') -- Close split, should not crash. #7538 + eq(2, eval("1+1")) -- Still alive? + end) + + it('does not change size on WinEnter', function() if helpers.pending_win32(pending) then return end feed('') feed_command('2split') screen:expect([[ - rows: 2, cols: 50 | - {2:^ } | + tty ready | + ^rows: 5, cols: 50 | ========== | - rows: 2, cols: 50 | + tty ready | + rows: 5, cols: 50 | {2: } | - {4:~ }| - {4:~ }| - {4:~ }| + | + | ========== | :2split | ]]) feed_command('wincmd p') screen:expect([[ tty ready | - rows: 2, cols: 50 | + rows: 5, cols: 50 | ========== | tty ready | - rows: 2, cols: 50 | - rows: 5, cols: 50 | + ^rows: 5, cols: 50 | {2: } | - ^ | - ========== | - :wincmd p | - ]]) - feed_command('wincmd p') - screen:expect([[ - rows: 2, cols: 50 | - {2:^ } | - ========== | - rows: 2, cols: 50 | - {2: } | - {4:~ }| - {4:~ }| - {4:~ }| + | + | ========== | :wincmd p | ]]) end) - describe('when the screen is resized', function() - it('will forward a resize request to the program', function() - feed([[:]]) -- Go to cmdline-mode, so cursor is at bottom. - screen:try_resize(screen._width - 3, screen._height - 2) - screen:expect([[ - tty ready | - rows: 7, cols: 47 | - {2: } | - | - | - | - | - :^ | - ]]) - screen:try_resize(screen._width - 6, screen._height - 3) - screen:expect([[ - tty ready | - rows: 7, cols: 47 | - rows: 4, cols: 41 | - {2: } | - :^ | - ]]) - end) + it('forwards resize request to the program', function() + feed([[:]]) -- Go to cmdline-mode, so cursor is at bottom. + screen:try_resize(screen._width - 3, screen._height - 2) + screen:expect([[ + tty ready | + rows: 7, cols: 47 | + {2: } | + | + | + | + | + :^ | + ]]) + screen:try_resize(screen._width - 6, screen._height - 3) + screen:expect([[ + tty ready | + rows: 7, cols: 47 | + rows: 4, cols: 41 | + {2: } | + :^ | + ]]) end) end) From a43a573ad5e5152d2719033f9287989fb261feaf Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Mon, 13 Nov 2017 01:10:06 +0000 Subject: [PATCH 58/76] health.vim: normalize slashes for script path (#7525) :checkhealth reports that remote plugins are unregistered after running :UpdateRemotePlugins because of the backslashes in filepath. Normalize them to forward slashes because the paths in rplugin.vim are normalized in autoload/remote/host.vim. --- runtime/autoload/health/nvim.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/autoload/health/nvim.vim b/runtime/autoload/health/nvim.vim index 3d871faf5d..58033f0405 100644 --- a/runtime/autoload/health/nvim.vim +++ b/runtime/autoload/health/nvim.vim @@ -58,7 +58,7 @@ function! s:check_rplugin_manifest() abort let contents = join(readfile(script)) if contents =~# '\<\%(from\|import\)\s\+neovim\>' if script =~# '[\/]__init__\.py$' - let script = fnamemodify(script, ':h') + let script = tr(fnamemodify(script, ':h'), '\', '/') endif if !has_key(existing_rplugins, script) From d5b7f28b44517a2e9ed07619d9fb828c043f179a Mon Sep 17 00:00:00 2001 From: Marco Hinz Date: Mon, 13 Nov 2017 02:28:07 +0100 Subject: [PATCH 59/76] test/unit/path_spec: expect correct buffer size (#7514) Fixed-size buffers and lfs.currentdir().. does not compute. The tests would fail if the current working directory was longer than expected. --- test/unit/path_spec.lua | 132 +++++++++++++++++++++++----------------- 1 file changed, 77 insertions(+), 55 deletions(-) diff --git a/test/unit/path_spec.lua b/test/unit/path_spec.lua index befb204d0a..ed597eaed7 100644 --- a/test/unit/path_spec.lua +++ b/test/unit/path_spec.lua @@ -366,134 +366,156 @@ describe('path.c', function() end) describe('vim_FullName', function() - local function vim_FullName(filename, buf, len, force) - filename = to_cstr(filename) - return cimp.vim_FullName(filename, buf, len, force) + local function vim_FullName(filename, buflen, do_expand) + local buf = cstr(buflen, '') + local result = cimp.vim_FullName(to_cstr(filename), buf, buflen, do_expand) + return buf, result end - before_each(function() - -- Create empty string buffer which will contain the resulting path. - length = (string.len(lfs.currentdir())) + 33 - buffer = cstr(length, '') - end) + local function get_buf_len(s, t) + return math.max(string.len(s), string.len(t)) + 1 + end itp('fails if given filename is NULL', function() - local force_expansion = 1 - local result = cimp.vim_FullName(NULL, buffer, length, force_expansion) + local do_expand = 1 + local buflen = 10 + local buf = cstr(buflen, '') + local result = cimp.vim_FullName(NULL, buf, buflen, do_expand) eq(FAIL, result) end) itp('fails safely if given length is wrong #5737', function() - local force_expansion = 1 local filename = 'foo/bar/bazzzzzzz/buz/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/a' local too_short_len = 8 local buf = cstr(too_short_len, '') - local result = cimp.vim_FullName(filename, buf, too_short_len, force_expansion) + local do_expand = 1 + local result = cimp.vim_FullName(filename, buf, too_short_len, do_expand) local expected = string.sub(filename, 1, (too_short_len - 1)) - eq(expected, (ffi.string(buf))) + eq(expected, ffi.string(buf)) eq(FAIL, result) end) itp('uses the filename if the filename is a URL', function() - local force_expansion = 1 local filename = 'http://www.neovim.org' - local result = vim_FullName(filename, buffer, length, force_expansion) - eq(filename, (ffi.string(buffer))) + local buflen = string.len(filename) + 1 + local do_expand = 1 + local buf, result = vim_FullName(filename, buflen, do_expand) + eq(filename, ffi.string(buf)) eq(OK, result) end) itp('fails and uses filename if given filename contains non-existing directory', function() - local force_expansion = 1 local filename = 'non_existing_dir/test.file' - local result = vim_FullName(filename, buffer, length, force_expansion) - eq(filename, (ffi.string(buffer))) + local buflen = string.len(filename) + 1 + local do_expand = 1 + local buf, result = vim_FullName(filename, buflen, do_expand) + eq(filename, ffi.string(buf)) eq(FAIL, result) end) itp('concatenates filename if it does not contain a slash', function() - local force_expansion = 1 - local result = vim_FullName('test.file', buffer, length, force_expansion) local expected = lfs.currentdir() .. '/test.file' - eq(expected, (ffi.string(buffer))) + local filename = 'test.file' + local buflen = get_buf_len(expected, filename) + local do_expand = 1 + local buf, result = vim_FullName(filename, buflen, do_expand) + eq(expected, ffi.string(buf)) eq(OK, result) end) itp('concatenates directory name if it does not contain a slash', function() - local force_expansion = 1 - local result = vim_FullName('..', buffer, length, force_expansion) local expected = lfs.currentdir() .. '/..' - eq(expected, (ffi.string(buffer))) + local filename = '..' + local buflen = get_buf_len(expected, filename) + local do_expand = 1 + local buf, result = vim_FullName(filename, buflen, do_expand) + eq(expected, ffi.string(buf)) eq(OK, result) end) - -- Is it possible for every developer to enter '..' directory while running - -- the unit tests? Which other directory would be better? itp('enters given directory (instead of just concatenating the strings) if possible and if path contains a slash', function() - local force_expansion = 1 - local result = vim_FullName('../test.file', buffer, length, force_expansion) local old_dir = lfs.currentdir() lfs.chdir('..') local expected = lfs.currentdir() .. '/test.file' lfs.chdir(old_dir) - eq(expected, (ffi.string(buffer))) + local filename = '../test.file' + local buflen = get_buf_len(expected, filename) + local do_expand = 1 + local buf, result = vim_FullName(filename, buflen, do_expand) + eq(expected, ffi.string(buf)) eq(OK, result) end) itp('just copies the path if it is already absolute and force=0', function() - local force_expansion = 0 local absolute_path = '/absolute/path' - local result = vim_FullName(absolute_path, buffer, length, force_expansion) - eq(absolute_path, (ffi.string(buffer))) + local buflen = string.len(absolute_path) + 1 + local do_expand = 0 + local buf, result = vim_FullName(absolute_path, buflen, do_expand) + eq(absolute_path, ffi.string(buf)) eq(OK, result) end) itp('fails and uses filename when the path is relative to HOME', function() eq(false, cimp.os_isdir('~')) -- sanity check: no literal "~" directory. - local force_expansion = 1 local absolute_path = '~/home.file' - local result = vim_FullName(absolute_path, buffer, length, force_expansion) - eq(absolute_path, (ffi.string(buffer))) + local buflen = string.len(absolute_path) + 1 + local do_expand = 1 + local buf, result = vim_FullName(absolute_path, buflen, do_expand) + eq(absolute_path, ffi.string(buf)) eq(FAIL, result) end) itp('works with some "normal" relative path with directories', function() - local force_expansion = 1 - local result = vim_FullName('unit-test-directory/test.file', buffer, length, force_expansion) + local expected = lfs.currentdir() .. '/unit-test-directory/test.file' + local filename = 'unit-test-directory/test.file' + local buflen = get_buf_len(expected, filename) + local do_expand = 1 + local buf, result = vim_FullName(filename, buflen, do_expand) + eq(expected, ffi.string(buf)) eq(OK, result) - eq(lfs.currentdir() .. '/unit-test-directory/test.file', (ffi.string(buffer))) end) itp('does not modify the given filename', function() - local force_expansion = 1 + local expected = lfs.currentdir() .. '/unit-test-directory/test.file' local filename = to_cstr('unit-test-directory/test.file') - -- Don't use the wrapper here but pass a cstring directly to the c - -- function. - local result = cimp.vim_FullName(filename, buffer, length, force_expansion) - eq(lfs.currentdir() .. '/unit-test-directory/test.file', (ffi.string(buffer))) - eq('unit-test-directory/test.file', (ffi.string(filename))) + local buflen = string.len(expected) + 1 + local buf = cstr(buflen, '') + local do_expand = 1 + -- Don't use the wrapper but pass a cstring directly to the c function. + eq('unit-test-directory/test.file', ffi.string(filename)) + local result = cimp.vim_FullName(filename, buf, buflen, do_expand) + eq(expected, ffi.string(buf)) eq(OK, result) end) itp('works with directories that have one path component', function() - local force_expansion = 1 - local filename = to_cstr('/tmp') - local result = cimp.vim_FullName(filename, buffer, length, force_expansion) - eq('/tmp', ffi.string(buffer)) + local filename = '/tmp' + local expected = filename + local buflen = get_buf_len(expected, filename) + local do_expand = 1 + local buf, result = vim_FullName(filename, buflen, do_expand) + eq('/tmp', ffi.string(buf)) eq(OK, result) end) itp('expands "./" to the current directory #7117', function() - local force_expansion = 1 - local result = vim_FullName('./unit-test-directory/test.file', buffer, length, force_expansion) + local expected = lfs.currentdir() .. '/unit-test-directory/test.file' + local filename = './unit-test-directory/test.file' + local buflen = get_buf_len(expected, filename) + local do_expand = 1 + local buf, result = vim_FullName(filename, buflen, do_expand) eq(OK, result) - eq(lfs.currentdir() .. '/unit-test-directory/test.file', (ffi.string(buffer))) + eq(expected, ffi.string(buf)) end) itp('collapses "foo/../foo" to "foo" #7117', function() - local force_expansion = 1 - local result = vim_FullName('unit-test-directory/../unit-test-directory/test.file', buffer, length, force_expansion) + local expected = lfs.currentdir() .. '/unit-test-directory/test.file' + local filename = 'unit-test-directory/../unit-test-directory/test.file' + local buflen = get_buf_len(expected, filename) + local do_expand = 1 + local buf, result = vim_FullName(filename, buflen, do_expand) eq(OK, result) - eq(lfs.currentdir() .. '/unit-test-directory/test.file', (ffi.string(buffer))) + eq(expected, ffi.string(buf)) end) end) From 8fff2ef74aae47042c4ee903ae996aa789787fe1 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Mon, 13 Nov 2017 08:30:25 +0100 Subject: [PATCH 60/76] vim-patch:8.0.0227 (#7548) Problem: Crash when 'fileformat' is forced to "dos" and the first line in the file is empty and does not have a CR character. Solution: Don't check for CR before the start of the buffer. https://github.com/vim/vim/commit/2aa5f696b91a51f29873e340de4bdc182e1e8dd4 --- src/nvim/fileio.c | 3 ++- src/nvim/testdir/test_fileformat.vim | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/nvim/fileio.c b/src/nvim/fileio.c index a7676e88f0..ae6c3f96e3 100644 --- a/src/nvim/fileio.c +++ b/src/nvim/fileio.c @@ -1622,7 +1622,8 @@ rewind_retry: *ptr = NUL; /* end of line */ len = (colnr_T)(ptr - line_start + 1); if (fileformat == EOL_DOS) { - if (ptr[-1] == CAR) { /* remove CR */ + if (ptr > line_start && ptr[-1] == CAR) { + // remove CR before NL ptr[-1] = NUL; len--; } else if (ff_error != EOL_DOS) { diff --git a/src/nvim/testdir/test_fileformat.vim b/src/nvim/testdir/test_fileformat.vim index de505d3bd0..8dc25f62b1 100644 --- a/src/nvim/testdir/test_fileformat.vim +++ b/src/nvim/testdir/test_fileformat.vim @@ -17,7 +17,7 @@ func Test_fileformat_after_bw() endfunc func Test_fileformat_autocommand() - let filecnt = ["\", "foobar\", "eins\", "\", "zwei\", "drei", "vier", "fünf", ""] + let filecnt = ["", "foobar\", "eins\", "\", "zwei\", "drei", "vier", "fünf", ""] let ffs = &ffs call writefile(filecnt, 'Xfile', 'b') au BufReadPre Xfile set ffs=dos ff=dos From 30a21830d06f1e99431c2a632133577841b10c32 Mon Sep 17 00:00:00 2001 From: nateozem Date: Mon, 13 Nov 2017 16:43:52 -0800 Subject: [PATCH 61/76] doc: test/README.md: migrate wiki info (#7552) --- test/README.md | 216 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 215 insertions(+), 1 deletion(-) diff --git a/test/README.md b/test/README.md index 44558f0981..010a2c9c12 100644 --- a/test/README.md +++ b/test/README.md @@ -1,10 +1,224 @@ Tests ===== -Tests are run by `/cmake/RunTests.cmake` file, using busted. +Tests are run by `/cmake/RunTests.cmake` file, using `busted`. For some failures, `.nvimlog` (or `$NVIM_LOG_FILE`) may provide insight. +--- + +- [Running tests](#running-tests) +- [Unit tests](#unit-tests) +- [Lint](#lint) +- [Environment variables](#environment-variables) + +--- + +Running tests +------------- + +Neovim uses third-party tooling to execute tests. So be sure, from the +repository directory, to build the tools before testing: + + make cmake + +## Executing Tests + +To run all _non-legacy_ (unit + functional) tests: + + make test + +To run only _unit_ tests: + + make unittest + +To run only _functional_ tests: + + make functionaltest + +--- + +## Filter Tests + +### Filter by name + +Another filter method is by setting a pattern of test name to `TEST_FILTER`. + +``` lua +it('foo api',function() + ... +end) +it('bar api',function() + ... +end) +``` + +To run only test with filter name: + + TEST_TAG='foo.*api' make functionaltest + +### Filter by file + +To run a *specific* unit test: + + TEST_FILE=test/unit/foo.lua make unittest + +To run a *specific* functional test: + + TEST_FILE=test/functional/foo.lua make functionaltest + +To *repeat* a test many times: + + .deps/usr/bin/busted --filter 'foo' --repeat 1000 test/functional/ui/foo_spec.lua + +### Filter by tag + +Tests can be "tagged" by adding `#` before a token in the test description. + +``` lua +it('#foo bar baz', function() + ... +end) +it('#foo another test', function() + ... +end) +``` + +To run only the tagged tests: + + TEST_TAG=foo make functionaltest + +**NOTES**: +* Tags are mainly used for testing issues (ex: `#1234`), so use the following + method. +* `TEST_FILE` is not a pattern string like `TEST_TAG` or `TEST_FILTER`. The + given value to `TEST_FILE` must be a path to an existing file. +* Both `TEST_TAG` and `TEST_FILTER` filter tests by the strings from either + `it()` or `describe()` functions. + +--- + +### Legacy + +To run all legacy (Vim) integration tests: + + make oldtest + +To run a *single* legacy test, run `make` with `TEST_FILE=test_name.res`. E.g. +to run `test_syntax.vim`: + + TEST_FILE=test_syntax.res make oldtest + +- The `.res` extension (instead of `.vim`) is required. +- Specify only the test file name, not the full path. + +### Functional tests + +`$GDB` can be set to [run tests under +gdbserver](https://github.com/neovim/neovim/pull/1527). If `$VALGRIND` is also +set, it will add the `--vgdb=yes` option to valgrind instead of +starting gdbserver directly. + +Unit tests +---------- + +Tests are broadly divided into *unit tests* +([test/unit](https://github.com/neovim/neovim/tree/master/test/unit) directory) +and *functional tests* +([test/functional](https://github.com/neovim/neovim/tree/master/test/functional) +directory). Use any of the existing tests as a template to start writing new +tests. + +- _Unit_ testing is achieved by compiling the tests as a shared library which is + loaded and called by LuaJit [FFI](http://luajit.org/ext_ffi.html). +- _Functional_ tests are driven by RPC, so they do not require LuaJit (as + opposed to Lua). + +You can learn the [key concepts of Lua in 15 +minutes](http://learnxinyminutes.com/docs/lua/). + +## Guidelines for writing tests + +- Consider [BDD](http://en.wikipedia.org/wiki/Behavior-driven_development) + guidelines for organization and readability of tests. Describe what you're + testing (and the environment if applicable) and create specs that assert its + behavior. +- For testing static functions or functions that have side effects visible only + in module-global variables, create accessors for the modified variables. For + example, say you are testing a function in misc1.c that modifies a static + variable, create a file `test/c-helpers/misc1.c` and add a function that + retrieves the value after the function call. Files under `test/c-helpers` will + only be compiled when building the test shared library. +- Luajit needs to know about type and constant declarations used in function + prototypes. The + [helpers.lua](https://github.com/neovim/neovim/blob/master/test/unit/helpers.lua) + file automatically parses `types.h`, so types used in the tested functions + must be moved to it to avoid having to rewrite the declarations in the test + files (even though this is how it's currently done currently in the misc1/fs + modules, but contributors are encouraged to refactor the declarations). + - Macro constants must be rewritten as enums so they can be "visible" to the + tests automatically. +- Busted supports various "output providers". The + **[gtest](https://github.com/Olivine-Labs/busted/pull/394) output provider** + shows verbose details that can be useful to diagnose hung tests. Either modify + the Makefile or compile with `make + CMAKE_EXTRA_FLAGS=-DBUSTED_OUTPUT_TYPE=gtest` to enable it. +- **Use busted's `pending()` feature** to skip tests + ([example](https://github.com/neovim/neovim/commit/5c1dc0fbe7388528875aff9d7b5055ad718014de#diff-bf80b24c724b0004e8418102f68b0679R18)). + Do not silently skip the test with `if-else`. If a functional test depends on + some external factor (e.g. the existence of `md5sum` on `$PATH`), *and* you + can't mock or fake the dependency, then skip the test via `pending()` if the + external factor is missing. This ensures that the *total* test-count (success + + fail + error + pending) is the same in all environments. + - *Note:* `pending()` is ignored if it is missing an argument _unless_ it is + [contained in an `it()` + block](https://github.com/neovim/neovim/blob/d21690a66e7eb5ebef18046c7a79ef898966d786/test/functional/ex_cmds/grep_spec.lua#L11). + Provide empty function argument if the `pending()` call is outside of + `it()` + ([example](https://github.com/neovim/neovim/commit/5c1dc0fbe7388528875aff9d7b5055ad718014de#diff-bf80b24c724b0004e8418102f68b0679R18)). +- Use `make testlint` for using the shipped luacheck program ([supported by + syntastic](https://github.com/scrooloose/syntastic/blob/d6b96c079be137c83009827b543a83aa113cc011/doc/syntastic-checkers.txt#L3546)) + to lint all tests. + +### Where tests go + +- _Unit tests_ + ([test/unit](https://github.com/neovim/neovim/tree/master/test/unit)) should + match 1-to-1 with the structure of `src/nvim/`, because they are testing + functions directly. E.g. unit-tests for `src/nvim/undo.c` should live in + `test/unit/undo_spec.lua`. +- _Functional tests_ + ([test/functional](https://github.com/neovim/neovim/tree/master/test/functional)) + are higher-level (plugins and user input) than unit tests; they are organized + by concept. + - Try to find an existing `test/functional/*/*_spec.lua` group that makes + sense, before creating a new one. + +## Checklist for migrating legacy tests + +**Note:** Only "old style" (`src/testdir/*.in`) legacy tests should be +converted. Please _do not_ convert "new style" Vim tests (`src/testdir/*.vim`). +The "new style" Vim tests are faster than the old ones, and converting them +takes time and effort better spent elsewhere. + +- Remove the test from the Makefile (`src/nvim/testdir/Makefile`). +- Remove the associated `test.in`, `test.out`, and `test.ok` files from + `src/nvim/testdir/`. +- Make sure the lua test ends in `_spec.lua`. +- Make sure the test count increases accordingly in the build log. +- Make sure the new test contains the same control characters (`^]`, ...) as the + old test. + - Instead of the actual control characters, use an equivalent textual + representation (e.g. `` instead of `^]`). The + `scripts/legacy2luatest.pl` script does some of these conversions + automatically. + +## Tips + +- Really long `source([=[...]=])` blocks may break syntax highlighting. Try + `:syntax sync fromstart` to fix it. + + Lint ---- From 67e45292925daf08d353581c1a9999eb0e2202dd Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Tue, 14 Nov 2017 20:55:25 +0100 Subject: [PATCH 62/76] defaults: scrollback=10000 (#7556) --- runtime/doc/options.txt | 2 +- src/nvim/options.lua | 2 +- test/functional/terminal/scrollback_spec.lua | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index f58532824c..026cfbe2eb 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -4789,7 +4789,7 @@ A jump table for the options with a short description can be found at |Q_op|. height with ":set scroll=0". *'scrollback'* *'scbk'* -'scrollback' 'scbk' number (default: 1000 +'scrollback' 'scbk' number (default: 10000 in normal buffers: -1) local to buffer Maximum number of lines kept beyond the visible screen. Lines at the diff --git a/src/nvim/options.lua b/src/nvim/options.lua index 7cecb16686..29220a6b50 100644 --- a/src/nvim/options.lua +++ b/src/nvim/options.lua @@ -1924,7 +1924,7 @@ return { vi_def=true, varname='p_scbk', redraw={'current_buffer'}, - defaults={if_true={vi=1000}} + defaults={if_true={vi=10000}} }, { full_name='scrollbind', abbreviation='scb', diff --git a/test/functional/terminal/scrollback_spec.lua b/test/functional/terminal/scrollback_spec.lua index af9b414311..c665e64a80 100644 --- a/test/functional/terminal/scrollback_spec.lua +++ b/test/functional/terminal/scrollback_spec.lua @@ -462,10 +462,10 @@ describe("'scrollback' option", function() screen:detach() end) - it('defaults to 1000 in terminal buffers', function() + it('defaults to 10000 in terminal buffers', function() set_fake_shell() command('terminal') - eq(1000, curbufmeths.get_option('scrollback')) + eq(10000, curbufmeths.get_option('scrollback')) end) it('error if set to invalid value', function() From c5f001a46a8e9eabd4fbc5a5a8503a74a6637c1c Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Tue, 14 Nov 2017 20:56:00 +0100 Subject: [PATCH 63/76] runtime: revert netrw update (#7557) fixes #7527 fixes #7536 --- runtime/autoload/netrw.vim | 1366 +++++++++++----------------- runtime/autoload/netrwSettings.vim | 10 +- runtime/doc/pi_netrw.txt | 355 ++------ runtime/plugin/netrwPlugin.vim | 14 +- runtime/syntax/netrw.vim | 80 +- 5 files changed, 676 insertions(+), 1149 deletions(-) diff --git a/runtime/autoload/netrw.vim b/runtime/autoload/netrw.vim index 1676155445..76485c2f38 100644 --- a/runtime/autoload/netrw.vim +++ b/runtime/autoload/netrw.vim @@ -1,7 +1,7 @@ " netrw.vim: Handles file transfer and remote directory listing across " AUTOLOAD SECTION -" Date: Nov 03, 2017 -" Version: 162 +" Date: Apr 20, 2016 +" Version: 156 " Maintainer: Charles E Campbell " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim " Copyright: Copyright (C) 2016 Charles E. Campbell {{{1 @@ -22,24 +22,15 @@ if &cp || exists("g:loaded_netrw") finish endif - -" Check that vim has patches that netrw requires. -" Patches needed: 1557, and 213. -" (netrw will benefit from vim's having patch#656, too) -let s:needspatches=[1557,213] -if exists("s:needspatches") - for ptch in s:needspatches - if v:version < 704 || (v:version == 704 && !has("patch".ptch)) - if !exists("s:needpatch{ptch}") - unsilent echomsg "***sorry*** this version of netrw requires vim v7.4 with patch#".ptch - endif - let s:needpatch{ptch}= 1 - finish - endif - endfor +" netrw requires vim having patch 7.4.213; netrw will benefit from vim's having patch#656, too +if v:version < 704 || (v:version == 704 && !has("patch213")) + if !exists("s:needpatch213") + unsilent echomsg "***sorry*** this version of netrw requires vim v7.4 with patch 213" + endif + let s:needpatch213= 1 + finish endif - -let g:loaded_netrw = "v162" +let g:loaded_netrw = "v156" if !exists("s:NOTE") let s:NOTE = 0 let s:WARNING = 1 @@ -64,7 +55,7 @@ setl cpo&vim " Usage: netrw#ErrorMsg(s:NOTE | s:WARNING | s:ERROR,"some message",error-number) " netrw#ErrorMsg(s:NOTE | s:WARNING | s:ERROR,["message1","message2",...],error-number) " (this function can optionally take a list of messages) -" Mar 21, 2017 : max errnum currently is 105 +" Jan 19, 2016 : max errnum currently is 103 fun! netrw#ErrorMsg(level,msg,errnum) " call Dfunc("netrw#ErrorMsg(level=".a:level." msg<".a:msg."> errnum=".a:errnum.") g:netrw_use_errorwindow=".g:netrw_use_errorwindow) @@ -189,14 +180,6 @@ if !exists("s:LONGLIST") call s:NetrwInit("s:MAXLIST" ,4) endif -" --------------------------------------------------------------------- -" Default option values: {{{2 -let g:netrw_localcopycmdopt = "" -let g:netrw_localcopydircmdopt = "" -let g:netrw_localmkdiropt = "" -let g:netrw_localmovecmdopt = "" -let g:netrw_localrmdiropt = "" - " --------------------------------------------------------------------- " Default values for netrw's global protocol variables {{{2 call s:NetrwInit("g:netrw_use_errorwindow",1) @@ -232,21 +215,21 @@ if !exists("g:netrw_ftp_options") let g:netrw_ftp_options= "-i -n" endif if !exists("g:netrw_http_cmd") - if executable("curl") + if executable("elinks") + let g:netrw_http_cmd = "elinks" + call s:NetrwInit("g:netrw_http_xcmd","-source >") + elseif executable("links") + let g:netrw_http_cmd = "links" + call s:NetrwInit("g:netrw_http_xcmd","-source >") + elseif executable("curl") let g:netrw_http_cmd = "curl" - call s:NetrwInit("g:netrw_http_xcmd","-L -o") + call s:NetrwInit("g:netrw_http_xcmd","-o") elseif executable("wget") let g:netrw_http_cmd = "wget" call s:NetrwInit("g:netrw_http_xcmd","-q -O") - elseif executable("elinks") - let g:netrw_http_cmd = "elinks" - call s:NetrwInit("g:netrw_http_xcmd","-source >") elseif executable("fetch") let g:netrw_http_cmd = "fetch" call s:NetrwInit("g:netrw_http_xcmd","-o") - elseif executable("links") - let g:netrw_http_cmd = "links" - call s:NetrwInit("g:netrw_http_xcmd","-http.extra-header ".shellescape("Accept-Encoding: identity", 1)." -source >") else let g:netrw_http_cmd = "" endif @@ -255,7 +238,6 @@ call s:NetrwInit("g:netrw_http_put_cmd","curl -T") call s:NetrwInit("g:netrw_keepj","keepj") call s:NetrwInit("g:netrw_rcp_cmd" , "rcp") call s:NetrwInit("g:netrw_rsync_cmd", "rsync") -call s:NetrwInit("g:netrw_rsync_sep", "/") if !exists("g:netrw_scp_cmd") if executable("scp") call s:NetrwInit("g:netrw_scp_cmd" , "scp -q") @@ -382,8 +364,7 @@ if !exists("g:netrw_localcopycmd") if g:netrw_cygwin let g:netrw_localcopycmd= "cp" else - let g:netrw_localcopycmd = expand("$COMSPEC") - let g:netrw_localcopycmdopt= " /c copy" + let g:netrw_localcopycmd= expand("$COMSPEC")." /c copy" endif elseif has("unix") || has("macunix") let g:netrw_localcopycmd= "cp" @@ -394,20 +375,14 @@ endif if !exists("g:netrw_localcopydircmd") if has("win32") || has("win95") || has("win64") || has("win16") if g:netrw_cygwin - let g:netrw_localcopydircmd = "cp" - let g:netrw_localcopydircmdopt= " -R" + let g:netrw_localcopydircmd= "cp -R" else - let g:netrw_localcopydircmd = expand("$COMSPEC") - let g:netrw_localcopydircmdopt= " /c xcopy /e /c /h /i /k" + let g:netrw_localcopycmd= expand("$COMSPEC")." /c xcopy /e /c /h /i /k" endif - elseif has("unix") - let g:netrw_localcopydircmd = "cp" - let g:netrw_localcopydircmdopt= " -R" - elseif has("macunix") - let g:netrw_localcopydircmd = "cp" - let g:netrw_localcopydircmdopt= " -R" + elseif has("unix") || has("macunix") + let g:netrw_localcopydircmd= "cp -R" else - let g:netrw_localcopydircmd= "" + let g:netrw_localcopycmd= "" endif endif if exists("g:netrw_local_mkdir") @@ -418,8 +393,7 @@ if has("win32") || has("win95") || has("win64") || has("win16") if g:netrw_cygwin call s:NetrwInit("g:netrw_localmkdir","mkdir") else - let g:netrw_localmkdir = expand("$COMSPEC") - let g:netrw_localmkdiropt= " /c mkdir" + let g:netrw_localmkdir= expand("$COMSPEC")." /c mkdir" endif else call s:NetrwInit("g:netrw_localmkdir","mkdir") @@ -434,8 +408,7 @@ if !exists("g:netrw_localmovecmd") if g:netrw_cygwin let g:netrw_localmovecmd= "mv" else - let g:netrw_localmovecmd = expand("$COMSPEC") - let g:netrw_localmovecmdopt= " /c move" + let g:netrw_localmovecmd= expand("$COMSPEC")." /c move" endif elseif has("unix") || has("macunix") let g:netrw_localmovecmd= "mv" @@ -443,8 +416,7 @@ if !exists("g:netrw_localmovecmd") let g:netrw_localmovecmd= "" endif endif -if v:version < 704 || (v:version == 704 && !has("patch1107")) - " 1109 provides for delete(tmpdir,"d") which is what will be used +if v:version < 704 || !has("patch1109") if exists("g:netrw_local_rmdir") let g:netrw_localrmdir= g:netrw_local_rmdir call netrw#ErrorMsg(s:NOTE,"g:netrw_local_rmdir is deprecated in favor of g:netrw_localrmdir",86) @@ -453,8 +425,7 @@ if v:version < 704 || (v:version == 704 && !has("patch1107")) if g:netrw_cygwin call s:NetrwInit("g:netrw_localrmdir","rmdir") else - let g:netrw_localrmdir = expand("$COMSPEC") - let g:netrw_localrmdiropt= " /c rmdir" + let g:netrw_localrmdir= expand("$COMSPEC")." /c rmdir" endif else call s:NetrwInit("g:netrw_localrmdir","rmdir") @@ -556,7 +527,7 @@ if has("gui_running") && (&enc == 'utf-8' || &enc == 'utf-16' || &enc == 'ucs-4' else let s:treedepthstring= "| " endif -call s:NetrwInit("s:netrw_posn",'{}') +call s:NetrwInit("s:netrw_nbcd",'{}') " BufEnter event ignored by decho when following variable is true " Has a side effect that doau BufReadPost doesn't work, so @@ -917,7 +888,7 @@ fun! netrw#Explore(indx,dosplit,style,...) NetrwKeepj call netrw#ErrorMsg(s:WARNING,"using Nexplore or improperly; see help for netrw-starstar",40) if has("clipboard") sil! let @* = keepregstar - sil! let @+ = keepregplus + sil! let @+ = keepregstar endif sil! let @/ = keepregslash " call Dret("netrw#Explore") @@ -942,7 +913,7 @@ fun! netrw#Explore(indx,dosplit,style,...) NetrwKeepj call netrw#ErrorMsg(s:WARNING,"using Pexplore or improperly; see help for netrw-starstar",41) if has("clipboard") sil! let @* = keepregstar - sil! let @+ = keepregplus + sil! let @+ = keepregstar endif sil! let @/ = keepregslash " call Dret("netrw#Explore") @@ -996,8 +967,8 @@ fun! netrw#Explore(indx,dosplit,style,...) keepalt call netrw#ErrorMsg(s:WARNING,'no files matched pattern<'.pattern.'>',45) if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif if has("clipboard") - sil! let @* = keepregstar - sil! let @+ = keepregplus + sil! let @* = keepregstar + sil! let @+ = keepregstar endif sil! let @/ = keepregslash " call Dret("netrw#Explore : no files matched pattern") @@ -1033,7 +1004,7 @@ fun! netrw#Explore(indx,dosplit,style,...) keepalt NetrwKeepj call netrw#ErrorMsg(s:WARNING,"no files matched",42) if has("clipboard") sil! let @* = keepregstar - sil! let @+ = keepregplus + sil! let @+ = keepregstar endif sil! let @/ = keepregslash " call Dret("netrw#Explore : no files matched") @@ -1081,7 +1052,7 @@ fun! netrw#Explore(indx,dosplit,style,...) endif if has("clipboard") sil! let @* = keepregstar - sil! let @+ = keepregplus + sil! let @+ = keepregstar endif sil! let @/ = keepregslash " call Dret("netrw#Explore : missing +path_extra") @@ -1135,9 +1106,7 @@ fun! netrw#Explore(indx,dosplit,style,...) let prvfname= fname endfor " call Decho("explore_match<".s:explore_match.">",'~'.expand("")) - if has("syntax") && exists("g:syntax_on") && g:syntax_on - exe "2match netrwMarkFile /".s:explore_match."/" - endif + exe "2match netrwMarkFile /".s:explore_match."/" endif echo "==Pexplore ==Nexplore" else @@ -1154,7 +1123,7 @@ fun! netrw#Explore(indx,dosplit,style,...) let s:netrw_events= 2 if has("clipboard") sil! let @* = keepregstar - sil! let @+ = keepregplus + sil! let @+ = keepregstar endif sil! let @/ = keepregslash " call Dret("netrw#Explore : @/<".@/.">") @@ -1163,14 +1132,13 @@ endfun " --------------------------------------------------------------------- " netrw#Lexplore: toggle Explorer window, keeping it on the left of the current tab {{{2 fun! netrw#Lexplore(count,rightside,...) -" call Dfunc("netrw#Lexplore(count=".a:count." rightside=".a:rightside.",...) a:0=".a:0." ft=".&ft) +" call Dfunc("netrw#Lexplore(count=".a:count."rightside=".a:rightside.",...) a:0=".a:0." ft=".&ft) let curwin= winnr() if a:0 > 0 && a:1 != "" " if a netrw window is already on the left-side of the tab " and a directory has been specified, explore with that " directory. -" call Decho("case has input argument(s) (a:1<".a:1.">)") let a1 = expand(a:1) " call Decho("a:1<".a:1."> curwin#".curwin,'~'.expand("")) exe "1wincmd w" @@ -1188,22 +1156,18 @@ fun! netrw#Lexplore(count,rightside,...) exe curwin."wincmd w" else let a1= "" -" call Decho("no input arguments") endif if exists("t:netrw_lexbufnr") " check if t:netrw_lexbufnr refers to a netrw window let lexwinnr = bufwinnr(t:netrw_lexbufnr) -" call Decho("lexwinnr= bufwinnr(t:netrw_lexbufnr#".t:netrw_lexbufnr.")=".lexwinnr) else let lexwinnr= 0 -" call Decho("t:netrw_lexbufnr doesn't exist") endif -" call Decho("lexwinnr=".lexwinnr,'~'.expand("")) if lexwinnr > 0 " close down netrw explorer window -" call Decho("t:netrw_lexbufnr#".t:netrw_lexbufnr.": close down netrw window",'~'.expand("")) +" call Decho("t:netrw_lexbufnr#".t:netrw_lexbufnr.": close down netrw window",'~'.expand("")) exe lexwinnr."wincmd w" let g:netrw_winsize = -winwidth(0) let t:netrw_lexposn = winsaveview() @@ -1213,11 +1177,8 @@ fun! netrw#Lexplore(count,rightside,...) if lexwinnr < curwin let curwin= curwin - 1 endif - if lexwinnr != curwin - exe curwin."wincmd w" - endif + exe curwin."wincmd w" unlet t:netrw_lexbufnr -" call Decho("unlet t:netrw_lexbufnr") else " open netrw explorer window @@ -1232,17 +1193,15 @@ fun! netrw#Lexplore(count,rightside,...) let curfile= expand("%") " call Decho("curfile<".curfile.">",'~'.expand("")) exe (a:rightside? "botright" : "topleft")." vertical ".((g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize) . " new" -" call Decho("new buf#".bufnr("%")." win#".winnr()) if a:0 > 0 && a1 != "" " call Decho("case 1: Explore ".a1,'~'.expand("")) - call netrw#Explore(0,0,0,a1) exe "Explore ".fnameescape(a1) elseif curfile =~ '^\a\{3,}://' " call Decho("case 2: Explore ".substitute(curfile,'[^/\\]*$','',''),'~'.expand("")) - call netrw#Explore(0,0,0,substitute(curfile,'[^/\\]*$','','')) + exe "Explore ".substitute(curfile,'[^/\\]*$','','') else " call Decho("case 3: Explore .",'~'.expand("")) - call netrw#Explore(0,0,0,".") + Explore . endif if a:count != 0 let g:netrw_winsize = netrw_winsize @@ -1250,8 +1209,6 @@ fun! netrw#Lexplore(count,rightside,...) setlocal winfixwidth let g:netrw_altv = keep_altv let t:netrw_lexbufnr = bufnr("%") -" call Decho("let t:netrw_lexbufnr=".t:netrw_lexbufnr) -" call Decho("t:netrw_lexposn".(exists("t:netrw_lexposn")? string(t:netrw_lexposn) : " n/a")) if exists("t:netrw_lexposn") " call Decho("restoring to t:netrw_lexposn",'~'.expand("")) " call Decho("restoring posn to t:netrw_lexposn<".string(t:netrw_lexposn).">",'~'.expand("")) @@ -1267,7 +1224,6 @@ fun! netrw#Lexplore(count,rightside,...) else let g:netrw_chgwin= 2 endif -" call Decho("let g:netrw_chgwin=".g:netrw_chgwin) endif " call Dret("netrw#Lexplore") @@ -1385,7 +1341,7 @@ fun! netrw#Obtain(islocal,fname,...) " call Decho("transfer files one at a time",'~'.expand("")) for fname in fnamelist " call Decho("system(".g:netrw_localcopycmd." ".s:ShellEscape(fname)." ".s:ShellEscape(topath).")",'~'.expand("")) - call system(g:netrw_localcopycmd.g:netrw_localcopycmdopt." ".s:ShellEscape(fname)." ".s:ShellEscape(topath)) + call system(g:netrw_localcopycmd." ".s:ShellEscape(fname)." ".s:ShellEscape(topath)) if v:shell_error != 0 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localcopycmd<".g:netrw_localcopycmd."> to something that works",80) " call Dret("s:NetrwObtain 0 : failed: ".g:netrw_localcopycmd." ".s:ShellEscape(fname)." ".s:ShellEscape(topath)) @@ -1397,7 +1353,7 @@ fun! netrw#Obtain(islocal,fname,...) " call Decho("transfer files with one command",'~'.expand("")) let filelist= join(map(deepcopy(fnamelist),"s:ShellEscape(v:val)")) " call Decho("system(".g:netrw_localcopycmd." ".filelist." ".s:ShellEscape(topath).")",'~'.expand("")) - call system(g:netrw_localcopycmd.g:netrw_localcopycmdopt." ".filelist." ".s:ShellEscape(topath)) + call system(g:netrw_localcopycmd." ".filelist." ".s:ShellEscape(topath)) if v:shell_error != 0 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localcopycmd<".g:netrw_localcopycmd."> to something that works",80) " call Dret("s:NetrwObtain 0 : failed: ".g:netrw_localcopycmd." ".filelist." ".s:ShellEscape(topath)) @@ -1431,7 +1387,7 @@ fun! netrw#Obtain(islocal,fname,...) else let path= "" endif - let filelist= join(map(deepcopy(fnamelist),'escape(s:ShellEscape(g:netrw_machine.":".path.v:val,1)," ")')) + let filelist= join(map(deepcopy(fnamelist),'s:ShellEscape(g:netrw_machine.":".path.v:val,1)')) call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_scp_cmd.s:ShellEscape(useport,1)." ".filelist." ".s:ShellEscape(tgtdir,1)) elseif b:netrw_method == 2 @@ -1606,6 +1562,7 @@ fun! s:NetrwOptionRestore(vt) " call Dfunc("s:NetrwOptionRestore(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> winnr($)=".winnr("$")) " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("")) if !exists("{a:vt}netrw_optionsave") + call s:RestorePosn(s:netrw_nbcd) " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("")) " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("")) " call Dret("s:NetrwOptionRestore : ".a:vt."netrw_optionsave doesn't exist") @@ -1624,45 +1581,47 @@ fun! s:NetrwOptionRestore(vt) endif endif endif - call s:NetrwRestoreSetting(a:vt."netrw_aikeep","&l:ai") - call s:NetrwRestoreSetting(a:vt."netrw_awkeep","&l:aw") - call s:NetrwRestoreSetting(a:vt."netrw_blkeep","&l:bl") - call s:NetrwRestoreSetting(a:vt."netrw_btkeep","&l:bt") - call s:NetrwRestoreSetting(a:vt."netrw_bombkeep","&l:bomb") - call s:NetrwRestoreSetting(a:vt."netrw_cedit","&cedit") - call s:NetrwRestoreSetting(a:vt."netrw_cikeep","&l:ci") - call s:NetrwRestoreSetting(a:vt."netrw_cinkeep","&l:cin") - call s:NetrwRestoreSetting(a:vt."netrw_cinokeep","&l:cino") - call s:NetrwRestoreSetting(a:vt."netrw_comkeep","&l:com") - call s:NetrwRestoreSetting(a:vt."netrw_cpokeep","&l:cpo") - call s:NetrwRestoreSetting(a:vt."netrw_diffkeep","&l:diff") - call s:NetrwRestoreSetting(a:vt."netrw_fenkeep","&l:fen") - if exists("g:netrw_ffkeep") && g:netrw_ffkeep - call s:NetrwRestoreSetting(a:vt."netrw_ffkeep")","&l:ff") + if exists("{a:vt}netrw_aikeep") |let &l:ai = {a:vt}netrw_aikeep |unlet {a:vt}netrw_aikeep |endif + if exists("{a:vt}netrw_awkeep") |let &l:aw = {a:vt}netrw_awkeep |unlet {a:vt}netrw_awkeep |endif + if exists("{a:vt}netrw_blkeep") |let &l:bl = {a:vt}netrw_blkeep |unlet {a:vt}netrw_blkeep |endif + if exists("{a:vt}netrw_btkeep") |let &l:bt = {a:vt}netrw_btkeep |unlet {a:vt}netrw_btkeep |endif + if exists("{a:vt}netrw_bombkeep") |let &l:bomb = {a:vt}netrw_bombkeep |unlet {a:vt}netrw_bombkeep |endif + if exists("{a:vt}netrw_cedit") |let &cedit = {a:vt}netrw_cedit |unlet {a:vt}netrw_cedit |endif + if exists("{a:vt}netrw_cikeep") |let &l:ci = {a:vt}netrw_cikeep |unlet {a:vt}netrw_cikeep |endif + if exists("{a:vt}netrw_cinkeep") |let &l:cin = {a:vt}netrw_cinkeep |unlet {a:vt}netrw_cinkeep |endif + if exists("{a:vt}netrw_cinokeep") |let &l:cino = {a:vt}netrw_cinokeep |unlet {a:vt}netrw_cinokeep |endif + if exists("{a:vt}netrw_comkeep") |let &l:com = {a:vt}netrw_comkeep |unlet {a:vt}netrw_comkeep |endif + if exists("{a:vt}netrw_cpokeep") |let &l:cpo = {a:vt}netrw_cpokeep |unlet {a:vt}netrw_cpokeep |endif + if exists("{a:vt}netrw_diffkeep") |let &l:diff = {a:vt}netrw_diffkeep |unlet {a:vt}netrw_diffkeep |endif + if exists("{a:vt}netrw_fenkeep") |let &l:fen = {a:vt}netrw_fenkeep |unlet {a:vt}netrw_fenkeep |endif + if exists("g:netrw_ffkep") && g:netrw_ffkeep + if exists("{a:vt}netrw_ffkeep") |let &l:ff = {a:vt}netrw_ffkeep |unlet {a:vt}netrw_ffkeep |endif + endif + if exists("{a:vt}netrw_fokeep") |let &l:fo = {a:vt}netrw_fokeep |unlet {a:vt}netrw_fokeep |endif + if exists("{a:vt}netrw_gdkeep") |let &l:gd = {a:vt}netrw_gdkeep |unlet {a:vt}netrw_gdkeep |endif + if exists("{a:vt}netrw_hidkeep") |let &l:hidden = {a:vt}netrw_hidkeep |unlet {a:vt}netrw_hidkeep |endif + if exists("{a:vt}netrw_imkeep") |let &l:im = {a:vt}netrw_imkeep |unlet {a:vt}netrw_imkeep |endif + if exists("{a:vt}netrw_iskkeep") |let &l:isk = {a:vt}netrw_iskkeep |unlet {a:vt}netrw_iskkeep |endif + if exists("{a:vt}netrw_lskeep") |let &l:ls = {a:vt}netrw_lskeep |unlet {a:vt}netrw_lskeep |endif + if exists("{a:vt}netrw_makeep") |let &l:ma = {a:vt}netrw_makeep |unlet {a:vt}netrw_makeep |endif + if exists("{a:vt}netrw_magickeep")|let &l:magic = {a:vt}netrw_magickeep |unlet {a:vt}netrw_magickeep|endif + if exists("{a:vt}netrw_modkeep") |let &l:mod = {a:vt}netrw_modkeep |unlet {a:vt}netrw_modkeep |endif + if exists("{a:vt}netrw_nukeep") |let &l:nu = {a:vt}netrw_nukeep |unlet {a:vt}netrw_nukeep |endif + if exists("{a:vt}netrw_rnukeep") |let &l:rnu = {a:vt}netrw_rnukeep |unlet {a:vt}netrw_rnukeep |endif + if exists("{a:vt}netrw_repkeep") |let &l:report = {a:vt}netrw_repkeep |unlet {a:vt}netrw_repkeep |endif + if exists("{a:vt}netrw_rokeep") |let &l:ro = {a:vt}netrw_rokeep |unlet {a:vt}netrw_rokeep |endif + if exists("{a:vt}netrw_selkeep") |let &l:sel = {a:vt}netrw_selkeep |unlet {a:vt}netrw_selkeep |endif + if exists("{a:vt}netrw_spellkeep")|let &l:spell = {a:vt}netrw_spellkeep |unlet {a:vt}netrw_spellkeep|endif + if has("clipboard") + if exists("{a:vt}netrw_starkeep") |let @* = {a:vt}netrw_starkeep |unlet {a:vt}netrw_starkeep |endif endif - call s:NetrwRestoreSetting(a:vt."netrw_fokeep","&l:fo") - call s:NetrwRestoreSetting(a:vt."netrw_gdkeep","&l:gd") - call s:NetrwRestoreSetting(a:vt."netrw_hidkeep","&l:hidden") - call s:NetrwRestoreSetting(a:vt."netrw_imkeep","&l:im") - call s:NetrwRestoreSetting(a:vt."netrw_iskkeep","&l:isk") - call s:NetrwRestoreSetting(a:vt."netrw_lskeep","&l:ls") - call s:NetrwRestoreSetting(a:vt."netrw_makeep","&l:ma") - call s:NetrwRestoreSetting(a:vt."netrw_magickeep","&l:magic") - call s:NetrwRestoreSetting(a:vt."netrw_modkeep","&l:mod") - call s:NetrwRestoreSetting(a:vt."netrw_nukeep","&l:nu") - call s:NetrwRestoreSetting(a:vt."netrw_rnukeep","&l:rnu") - call s:NetrwRestoreSetting(a:vt."netrw_repkeep","&l:report") - call s:NetrwRestoreSetting(a:vt."netrw_rokeep","&l:ro") - call s:NetrwRestoreSetting(a:vt."netrw_selkeep","&l:sel") - call s:NetrwRestoreSetting(a:vt."netrw_spellkeep","&l:spell") - call s:NetrwRestoreSetting(a:vt."netrw_twkeep","&l:tw") - call s:NetrwRestoreSetting(a:vt."netrw_wigkeep","&l:wig") - call s:NetrwRestoreSetting(a:vt."netrw_wrapkeep","&l:wrap") - call s:NetrwRestoreSetting(a:vt."netrw_writekeep","&l:write") - call s:NetrwRestoreSetting("s:yykeep","@@") " Problem: start with liststyle=0; press : result, following line resets l:ts. - call s:NetrwRestoreSetting(a:vt."netrw_tskeep","&l:ts") - +" if exists("{a:vt}netrw_tskeep") |let &l:ts = {a:vt}netrw_tskeep |unlet {a:vt}netrw_tskeep |endif + if exists("{a:vt}netrw_twkeep") |let &l:tw = {a:vt}netrw_twkeep |unlet {a:vt}netrw_twkeep |endif + if exists("{a:vt}netrw_wigkeep") |let &l:wig = {a:vt}netrw_wigkeep |unlet {a:vt}netrw_wigkeep |endif + if exists("{a:vt}netrw_wrapkeep") |let &l:wrap = {a:vt}netrw_wrapkeep |unlet {a:vt}netrw_wrapkeep |endif + if exists("{a:vt}netrw_writekeep")|let &l:write = {a:vt}netrw_writekeep |unlet {a:vt}netrw_writekeep|endif + if exists("s:yykeep") |let @@ = s:yykeep |unlet s:yykeep |endif if exists("{a:vt}netrw_swfkeep") if &directory == "" " user hasn't specified a swapfile directory; @@ -1688,10 +1647,10 @@ fun! s:NetrwOptionRestore(vt) endif endif if has("clipboard") - call s:NetrwRestoreSetting(a:vt."netrw_starkeep","@*") - call s:NetrwRestoreSetting(a:vt."netrw_pluskeep","@+") + if exists("{a:vt}netrw_regstar") |sil! let @*= {a:vt}netrw_regstar |unlet {a:vt}netrw_regstar |endif endif - call s:NetrwRestoreSetting(a:vt."netrw_slashkeep","@/") + if exists("{a:vt}netrw_regslash")|sil! let @/= {a:vt}netrw_regslash|unlet {a:vt}netrw_regslash|endif + call s:RestorePosn(s:netrw_nbcd) " call Decho("g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd,'~'.expand("")) " call Decho("fo=".&fo.(exists("+acd")? " acd=".&acd : " acd doesn't exist"),'~'.expand("")) @@ -1769,6 +1728,9 @@ fun! s:NetrwOptionSave(vt) if !g:netrw_use_noswf let {a:vt}netrw_swfkeep = &l:swf endif + if has("clipboard") + let {a:vt}netrw_starkeep = @* + endif let {a:vt}netrw_tskeep = &l:ts let {a:vt}netrw_twkeep = &l:tw " textwidth let {a:vt}netrw_wigkeep = &l:wig " wildignore @@ -1781,54 +1743,15 @@ fun! s:NetrwOptionSave(vt) let {a:vt}netrw_dirkeep = getcwd() endif if has("clipboard") - sil! let {a:vt}netrw_starkeep = @* - sil! let {a:vt}netrw_pluskeep = @+ + if &go =~# 'a' | sil! let {a:vt}netrw_regstar = @* | endif endif - sil! let {a:vt}netrw_slashkeep= @/ + sil! let {a:vt}netrw_regslash= @/ " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo." a:vt=".a:vt,'~'.expand("")) " call Dret("s:NetrwOptionSave : tab#".tabpagenr()." win#".winnr()) endfun " ------------------------------------------------------------------------ -" s:NetrwRestoreSetting: restores specified setting using associated keepvar, {{{2 -" but only if the setting value differs from the associated keepvar. -" Doing this means that netrw will not come up as having changed a -" setting last when it really didn't actually change it. -" Used by s:NetrwOptionRestore() to restore each netrw-senstive setting -" and by s:NetrwSafeOptions() -fun! s:NetrwRestoreSetting(keepvar,setting) -" call Dfunc("s:NetrwRestoreSetting(keepvar<".a:keepvar."> setting<".a:setting.">)") - - if a:keepvar =~ '^&' - exe "let keepvarval= ".a:keepvar - if keepvarval != a:setting - if type(a:setting) == 0 - exe "let ".a:keepvar."=".a:setting - elseif type(a:setting) == 1 - exe "let ".a:keepvar."= '".a:setting."'" - else - call netrw#ErrorMsg(s:ERROR,"(s:NetrwRestoreSetting) doesn't know how to restore ".a:keepvar." with a setting of type#".type(a:setting),105) - endif - endif - - elseif exists(a:keepvar) - exe "let keepvarval= '".a:keepvar."'" - if keepvarval != a:setting - if type(a:setting) == 0 - exe "let ".a:keepvar."= ".a:setting - elseif type(a:setting) == 1 - exe "let ".a:keepvar."= '".a:setting."'" - else - call netrw#ErrorMsg(s:ERROR,"(s:NetrwRestoreSetting) doesn't know how to restore ".a:keepvar." with a setting of type#".type(a:setting),105) - endif - endif - exe "unlet ".a:keepvar - endif -" call Dret("s:NetrwRestoreSetting") -endfun - -" --------------------------------------------------------------------- " s:NetrwSafeOptions: sets options to help netrw do its job {{{2 " Use s:NetrwSaveOptions() to save user settings " Use s:NetrwOptionRestore() to restore user settings @@ -1836,32 +1759,32 @@ fun! s:NetrwSafeOptions() " call Dfunc("s:NetrwSafeOptions() win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%"))."> winnr($)=".winnr("$")) " call Decho("win#".winnr()."'s ft=".&ft,'~'.expand("")) " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("")) - if exists("+acd") | call s:NetrwRestoreSetting("&l:acd",0)|endif - call s:NetrwRestoreSetting("&l:ai",0) - call s:NetrwRestoreSetting("&l:aw",0) - call s:NetrwRestoreSetting("&l:bl",0) - call s:NetrwRestoreSetting("&l:bomb",0) - call s:NetrwRestoreSetting("&l:bt","nofile") - call s:NetrwRestoreSetting("&l:ci",0) - call s:NetrwRestoreSetting("&l:cin",0) - call s:NetrwRestoreSetting("&l:bh","hide") - call s:NetrwRestoreSetting("&l:cino","") - call s:NetrwRestoreSetting("&l:com","") - if &cpo =~ 'a' | call s:NetrwRestoreSetting("&cpo",substitute(&cpo,'a','','g')) | endif - if &cpo =~ 'A' | call s:NetrwRestoreSetting("&cpo",substitute(&cpo,'A','','g')) | endif + if exists("+acd") | setl noacd | endif + setl noai + setl noaw + setl nobl + setl nobomb + setl bt=nofile + setl noci + setl nocin + setl bh=hide + setl cino= + setl com= + setl cpo-=a + setl cpo-=A setl fo=nroql2 - call s:NetrwRestoreSetting("&l:hid",0) - call s:NetrwRestoreSetting("&l:im",0) + setl nohid + setl noim setl isk+=@ isk+=* isk+=/ - call s:NetrwRestoreSetting("&l:magic",1) + setl magic if g:netrw_use_noswf - call s:NetrwRestoreSetting("swf",0) + setl noswf endif - call s:NetrwRestoreSetting("&l:report",10000) - call s:NetrwRestoreSetting("&l:sel","inclusive") - call s:NetrwRestoreSetting("&l:spell",0) - call s:NetrwRestoreSetting("&l:tw",0) - call s:NetrwRestoreSetting("&l:wig","") + setl report=10000 + setl sel=inclusive + setl nospell + setl tw=0 + setl wig= setl cedit& call s:NetrwCursor() @@ -1869,7 +1792,7 @@ fun! s:NetrwSafeOptions() " call Decho("ft<".&ft."> ei=".&ei,'~'.expand("")) if &ft == "netrw" " call Decho("do any netrw FileType autocmds (doau FileType netrw)",'~'.expand("")) - keepalt NetrwKeepj doau FileType netrw + sil! keepalt NetrwKeepj doau FileType netrw endif " call Decho("fo=".&fo.(exists("+acd")? " acd=".&acd : " acd doesn't exist")." bh=".&l:bh." bt<".&bt.">",'~'.expand("")) @@ -1910,7 +1833,7 @@ fun! NetrwStatusLine() endif endfun -" =============================== +" --------------------------------------------------------------------- " Netrw Transfer Functions: {{{1 " =============================== @@ -2020,7 +1943,7 @@ fun! netrw#NetRead(mode,...) " NetRead: Determine method of read (ftp, rcp, etc) {{{3 call s:NetrwMethod(choice) if !exists("b:netrw_method") || b:netrw_method < 0 -" call Dret("netrw#NetRead : unsupported method") +" call Dfunc("netrw#NetRead : unsupported method") return endif let tmpfile= s:GetTempfile(b:netrw_fname) " apply correct suffix @@ -2180,7 +2103,7 @@ fun! netrw#NetRead(mode,...) else let tmpfile_get = tmpfile endif - call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".escape(s:ShellEscape(g:netrw_machine.":".b:netrw_fname,1),' ')." ".s:ShellEscape(tmpfile_get,1)) + call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".s:ShellEscape(g:netrw_machine.":".b:netrw_fname,1)." ".s:ShellEscape(tmpfile_get,1)) let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method) let b:netrw_lastfile = choice @@ -2262,7 +2185,7 @@ fun! netrw#NetRead(mode,...) " NetRead: (rsync) NetRead Method #7 {{{3 elseif b:netrw_method == 7 " call Decho("read via rsync (method #7)",'~'.expand("")) - call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".s:ShellEscape(g:netrw_machine.g:netrw_rsync_sep.b:netrw_fname,1)." ".s:ShellEscape(tmpfile,1)) + call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".s:ShellEscape(g:netrw_machine.":".b:netrw_fname,1)." ".s:ShellEscape(tmpfile,1)) let result = s:NetrwGetFile(readcmd,tmpfile, b:netrw_method) let b:netrw_lastfile = choice @@ -2604,7 +2527,7 @@ fun! netrw#NetWrite(...) range let url= g:netrw_choice call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_http_put_cmd." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(url,1) ) elseif !exists("g:netrw_quiet") - call netrw#ErrorMsg(s:ERROR,"can't write to http using <".g:netrw_http_put_cmd.">".",16) + call netrw#ErrorMsg(s:ERROR,"can't write to http using <".g:netrw_http_put_cmd".">".",16) endif "......................................... @@ -2648,7 +2571,7 @@ fun! netrw#NetWrite(...) range " NetWrite: (rsync) NetWrite Method #7 {{{3 elseif b:netrw_method == 7 " call Decho("write via rsync (method #7)",'~'.expand("")) - call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(g:netrw_machine.g:netrw_rsync_sep.b:netrw_fname,1)) + call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".s:ShellEscape(tmpfile,1)." ".s:ShellEscape(g:netrw_machine.":".b:netrw_fname,1)) let b:netrw_lastfile = choice "......................................... @@ -2753,13 +2676,9 @@ endfun " --------------------------------------------------------------------- " netrw#SetTreetop: resets the tree top to the current directory/specified directory {{{2 " (implements the :Ntree command) -fun! netrw#SetTreetop(iscmd,...) -" call Dfunc("netrw#SetTreetop(iscmd=".a:iscmd." ".((a:0 > 0)? a:1 : "").") a:0=".a:0) -" call Decho("w:netrw_treetop<".w:netrw_treetop.">") +fun! netrw#SetTreetop(...) +" call Dfunc("netrw#SetTreetop(".((a:0 > 0)? a:1 : "").") a:0=".a:0) - " iscmd==0: netrw#SetTreetop called using gn mapping - " iscmd==1: netrw#SetTreetop called using :Ntree from the command line -" call Decho("(iscmd=".a:iscmd.": called using :Ntree from command line",'~'.expand("")) " clear out the current tree if exists("w:netrw_treetop") " call Decho("clearing out current tree",'~'.expand("")) @@ -2770,9 +2689,8 @@ fun! netrw#SetTreetop(iscmd,...) " call Decho("freeing w:netrw_treedict",'~'.expand("")) unlet w:netrw_treedict endif -" call Decho("inittreetop<".(exists("inittreetop")? inittreetop : "n/a").">") - if (a:iscmd == 0 || a:1 == "") && exists("inittreetop") + if a:1 == "" && exists("inittreetop") let treedir= s:NetrwTreePath(inittreetop) " call Decho("treedir<".treedir.">",'~'.expand("")) else @@ -2781,7 +2699,7 @@ fun! netrw#SetTreetop(iscmd,...) let treedir= a:1 elseif exists("b:netrw_curdir") && (isdirectory(s:NetrwFile(b:netrw_curdir."/".a:1)) || a:1 =~ '^\a\{3,}://') let treedir= b:netrw_curdir."/".a:1 -" call Decho("a:1<".a:1."> is NOT a directory, using treedir<".treedir.">",'~'.expand("")) +" call Decho("a:1<".a:1."> is NOT a directory, trying treedir<".treedir.">",'~'.expand("")) else " normally the cursor is left in the message window. " However, here this results in the directory being listed in the message window, which is not wanted. @@ -2792,18 +2710,13 @@ fun! netrw#SetTreetop(iscmd,...) endif endif " call Decho("treedir<".treedir.">",'~'.expand("")) - - " determine if treedir is remote or local let islocal= expand("%") !~ '^\a\{3,}://' " call Decho("islocal=".islocal,'~'.expand("")) - - " browse the resulting directory if islocal call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(islocal,treedir)) else call s:NetrwBrowse(islocal,s:NetrwBrowseChgDir(islocal,treedir)) endif - " call Dret("netrw#SetTreetop") endfun @@ -2842,7 +2755,8 @@ fun! s:NetrwGetFile(readcmd, tfile, method) else let tfile= a:tfile endif - call s:NetrwBufRename(tfile) +" call Decho("exe sil! keepalt file ".fnameescape(tfile),'~'.expand("")) + exe "sil! keepalt file ".fnameescape(tfile) " edit temporary file (ie. read the temporary file in) if rfile =~ '\.zip$' @@ -2869,7 +2783,8 @@ fun! s:NetrwGetFile(readcmd, tfile, method) endif " rename buffer back to remote filename - call s:NetrwBufRename(rfile) +" call Decho("exe sil! keepalt file ".fnameescape(rfile),'~'.expand("")) + exe "sil! NetrwKeepj keepalt file ".fnameescape(rfile) " Detect filetype of local version of remote file. " Note that isk must not include a "/" for scripts.vim @@ -2878,7 +2793,7 @@ fun! s:NetrwGetFile(readcmd, tfile, method) let iskkeep= &l:isk setl isk-=/ let &l:isk= iskkeep -" call Dredir("ls!","NetrwGetFile (renamed buffer back to remote filename<".rfile."> : expand(%)<".expand("%").">)") +" call Dredir("renamed buffer back to remote filename<".rfile."> : expand(%)<".expand("%").">","ls!") let line1 = 1 let line2 = line("$") @@ -2949,13 +2864,13 @@ endfun " g:netrw_port = optional port number (for ftp) " g:netrw_choice = copy of input url (choice) fun! s:NetrwMethod(choice) -" call Dfunc("s:NetrwMethod(a:choice<".a:choice.">)") +" call Dfunc("NetrwMethod(a:choice<".a:choice.">)") " sanity check: choice should have at least three slashes in it if strlen(substitute(a:choice,'[^/]','','g')) < 3 call netrw#ErrorMsg(s:ERROR,"not a netrw-style url; netrw uses protocol://[user@]hostname[:port]/[path])",78) let b:netrw_method = -1 -" call Dret("s:NetrwMethod : incorrect url format<".a:choice.">") +" call Dret("NetrwMethod : incorrect url format<".a:choice.">") return endif @@ -3068,7 +2983,7 @@ fun! s:NetrwMethod(choice) endif if curmachine != g:netrw_machine - if exists("s:netrw_hup[".g:netrw_machine."]") + if exists("s:netwr_hup[".g:netrw_machine."]") call NetUserPass("ftp:".g:netrw_machine) elseif exists("s:netrw_passwd") " if there's a change in hostname, require password re-entry @@ -3198,7 +3113,7 @@ fun! s:NetrwMethod(choice) " call Decho("s:netrw_passwd <".s:netrw_passwd.">",'~'.expand("")) " endif "Decho " call Decho("b:netrw_fname <".b:netrw_fname.">",'~'.expand("")) -" call Dret("s:NetrwMethod : b:netrw_method=".b:netrw_method." g:netrw_port=".g:netrw_port) +" call Dret("NetrwMethod : b:netrw_method=".b:netrw_method." g:netrw_port=".g:netrw_port) endfun " ------------------------------------------------------------------------ @@ -3342,9 +3257,9 @@ fun! NetUserPass(...) " call Dret("NetUserPass : uid<".g:netrw_uid."> passwd<".s:netrw_passwd.">") endfun -" ================================= +" =========================================== " Shared Browsing Support: {{{1 -" ================================= +" =========================================== " --------------------------------------------------------------------- " s:ExplorePatHls: converts an Explore pattern into a regular expression search pattern {{{2 @@ -3647,7 +3562,7 @@ fun! s:NetrwBrowse(islocal,dirname) " call Dfunc("s:NetrwBrowse(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".w:netrw_liststyle." ".g:loaded_netrw." buf#".bufnr("%")."<".bufname("%")."> win#".winnr()) " call Decho("modified=".&modified." modifiable=".&modifiable." readonly=".&readonly,'~'.expand("")) " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("")) -" call Dredir("ls!","s:NetrwBrowse") +" call Dredir("ls!") " save alternate-file's filename if w:netrw_rexlocal doesn't exist " This is useful when one edits a local file, then :e ., then :Rex @@ -3668,12 +3583,6 @@ fun! s:NetrwBrowse(islocal,dirname) let dirname= a:dirname endif - " repoint t:netrw_lexbufnr if appropriate - if exists("t:netrw_lexbufnr") && bufnr("%") == t:netrw_lexbufnr -" call Decho("set repointlexbufnr to true!") - let repointlexbufnr= 1 - endif - if exists("s:netrw_skipbrowse") unlet s:netrw_skipbrowse " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." filename<".expand("%")."> win#".winnr()." ft<".&ft.">",'~'.expand("")) @@ -3697,22 +3606,17 @@ fun! s:NetrwBrowse(islocal,dirname) call s:NetrwOptionSave("w:") " s:NetrwBrowse : re-instate any marked files {{{3 - if has("syntax") && exists("g:syntax_on") && g:syntax_on - if exists("s:netrwmarkfilelist_{bufnr('%')}") -" call Decho("clearing marked files",'~'.expand("")) - exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/" - endif + if exists("s:netrwmarkfilelist_{bufnr('%')}") +" call Decho("clearing marked files",'~'.expand("")) + exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/" endif if a:islocal && exists("w:netrw_acdkeep") && w:netrw_acdkeep " s:NetrwBrowse : set up "safe" options for local directory/file {{{3 " call Decho("handle w:netrw_acdkeep:",'~'.expand("")) " call Decho("NetrwKeepj lcd ".fnameescape(dirname)." (due to w:netrw_acdkeep=".w:netrw_acdkeep." - acd=".&acd.")",'~'.expand("")) - if s:NetrwLcd(dirname) -" call Dret("s:NetrwBrowse : lcd failure") - return - endif - " call s:NetrwSafeOptions() " tst953 failed with this enabled. + call s:NetrwLcd(dirname) + call s:NetrwSafeOptions() " call Decho("getcwd<".getcwd().">",'~'.expand("")) elseif !a:islocal && dirname !~ '[\/]$' && dirname !~ '^"' @@ -3739,7 +3643,8 @@ fun! s:NetrwBrowse(islocal,dirname) " call Decho("setl ma noro",'~'.expand("")) let b:netrw_curdir = dirname let url = s:method."://".((s:user == "")? "" : s:user."@").s:machine.(s:port ? ":".s:port : "")."/".s:path - call s:NetrwBufRename(url) +" call Decho("exe sil! keepalt file ".fnameescape(url)." (bt=".&bt.")",'~'.expand("")) + exe "sil! NetrwKeepj keepalt file ".fnameescape(url) exe "sil! NetrwKeepj keepalt doau BufReadPre ".fnameescape(s:fname) sil call netrw#NetRead(2,url) " netrw.vim and tar.vim have already handled decompression of the tarball; avoiding gzip.vim error @@ -3786,15 +3691,13 @@ fun! s:NetrwBrowse(islocal,dirname) let reusing= s:NetrwGetBuffer(a:islocal,dirname) " maintain markfile highlighting - if has("syntax") && exists("g:syntax_on") && g:syntax_on - if exists("s:netrwmarkfilemtch_{bufnr('%')}") && s:netrwmarkfilemtch_{bufnr("%")} != "" -" " call Decho("bufnr(%)=".bufnr('%'),'~'.expand("")) -" " call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/",'~'.expand("")) - exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/" - else -" " call Decho("2match none",'~'.expand("")) - 2match none - endif + if exists("s:netrwmarkfilemtch_{bufnr('%')}") && s:netrwmarkfilemtch_{bufnr("%")} != "" +" call Decho("bufnr(%)=".bufnr('%'),'~'.expand("")) +" call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/",'~'.expand("")) + exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/" + else +" call Decho("2match none",'~'.expand("")) + 2match none endif if reusing && line("$") > 1 call s:NetrwOptionRestore("w:") @@ -3843,10 +3746,7 @@ fun! s:NetrwBrowse(islocal,dirname) " call Decho("handle g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd,'~'.expand("")) " call Decho("l:acd".(exists("&l:acd")? "=".&l:acd : " doesn't exist"),'~'.expand("")) if !exists("&l:acd") || !&l:acd - if s:NetrwLcd(b:netrw_curdir) -" call Dret("s:NetrwBrowse : lcd failure") - return - endif + call s:NetrwLcd(b:netrw_curdir) endif endif @@ -3917,12 +3817,6 @@ fun! s:NetrwBrowse(islocal,dirname) setl beval endif - " repoint t:netrw_lexbufnr if appropriate - if exists("repointlexbufnr") - let t:netrw_lexbufnr= bufnr("%") -" call Decho("repoint t:netrw_lexbufnr to #".t:netrw_lexbufnr) - endif - " restore position if reusing " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("")) @@ -4066,59 +3960,31 @@ fun! s:NetrwFullPath(filename) endfun " --------------------------------------------------------------------- -" s:NetrwGetBuffer: [get a new|find an old netrw] buffer for a netrw listing {{{2 +" s:NetrwGetBuffer: {{{2 " returns 0=cleared buffer " 1=re-used buffer (buffer not cleared) fun! s:NetrwGetBuffer(islocal,dirname) " call Dfunc("s:NetrwGetBuffer(islocal=".a:islocal." dirname<".a:dirname.">) liststyle=".g:netrw_liststyle) " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("")) -" call Decho("netrwbuf dictionary=".(exists("s:netrwbuf")? string(s:netrwbuf) : 'n/a'),'~'.expand("")) +" call Decho("netrwbuf dictionary=".string(s:netrwbuf),'~'.expand("")) let dirname= a:dirname " re-use buffer if possible {{{3 " call Decho("--re-use a buffer if possible--",'~'.expand("")) if !exists("s:netrwbuf") -" call Decho(" s:netrwbuf initialized to {}",'~'.expand("")) let s:netrwbuf= {} endif -" call Decho(" s:netrwbuf =".string(s:netrwbuf),'~'.expand("")) -" call Decho(" w:netrw_liststyle =".(exists("w:netrw_liststyle")? w:netrw_liststyle : "n/a"),'~'.expand("")) - - if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST - let bufnum = -1 - - if !empty(s:netrwbuf) && has_key(s:netrwbuf,s:NetrwFullPath(dirname)) - if has_key(s:netrwbuf,"NetrwTreeListing") - let bufnum= s:netrwbuf["NetrwTreeListing"] - else - let bufnum= s:netrwbuf[s:NetrwFullPath(dirname)] - endif -" call Decho(" NetrwTreeListing: bufnum#".bufnum,'~'.expand("")) - if !bufexists(bufnum) - call remove(s:netrwbuf,"NetrwTreeListing"]) - let bufnum= -1 - endif - elseif bufnr("NetrwTreeListing") != -1 - let bufnum= bufnr("NetrwTreeListing") -" call Decho(" NetrwTreeListing".": bufnum#".bufnum,'~'.expand("")) - else -" call Decho(" did not find a NetrwTreeListing buffer",'~'.expand("")) - let bufnum= -1 - endif - - elseif has_key(s:netrwbuf,s:NetrwFullPath(dirname)) + if has_key(s:netrwbuf,s:NetrwFullPath(dirname)) let bufnum= s:netrwbuf[s:NetrwFullPath(dirname)] -" call Decho(" lookup netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."]=".bufnum,'~'.expand("")) +" call Decho("lookup netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."]=".bufnum) if !bufexists(bufnum) call remove(s:netrwbuf,s:NetrwFullPath(dirname)) let bufnum= -1 endif - else -" call Decho(" lookup netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."] not a key",'~'.expand("")) +" call Decho("lookup netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."] not a key") let bufnum= -1 endif -" call Decho(" bufnum#".bufnum,'~'.expand("")) " get enew buffer and name it -or- re-use buffer {{{3 if bufnum < 0 " get enew buffer and name it @@ -4129,8 +3995,14 @@ fun! s:NetrwGetBuffer(islocal,dirname) if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST " Got enew buffer; transform into a NetrwTreeListing " call Decho("--transform enew buffer#".bufnr("%")." into a NetrwTreeListing --",'~'.expand("")) - let w:netrw_treebufnr = bufnr("%") - call s:NetrwBufRename("NetrwTreeListing") + if !exists("s:netrw_treelistnum") + let s:netrw_treelistnum= 1 + else + let s:netrw_treelistnum= s:netrw_treelistnum + 1 + endif + let w:netrw_treebufnr= bufnr("%") +" call Decho(" exe sil! keepalt file NetrwTreeListing ".fnameescape(s:netrw_treelistnum),'~'.expand("")) + exe 'sil! keepalt file NetrwTreeListing\ '.fnameescape(s:netrw_treelistnum) if g:netrw_use_noswf setl nobl bt=nofile noswf else @@ -4140,9 +4012,15 @@ fun! s:NetrwGetBuffer(islocal,dirname) nnoremap ]] :sil call TreeListMove(']]') nnoremap [] :sil call TreeListMove('[]') nnoremap ][ :sil call TreeListMove('][') -" call Decho(" tree listing bufnr=".w:netrw_treebufnr,'~'.expand("")) +" call Decho(" tree listing#".s:netrw_treelistnum." bufnr=".w:netrw_treebufnr,'~'.expand("")) else - call s:NetrwBufRename(dirname) +" let v:errmsg = "" " Decho + let escdirname = fnameescape(dirname) +" call Decho(" errmsg<".v:errmsg."> bufnr(escdirname<".escdirname.">)=".bufnr(escdirname)." bufname()<".bufname(bufnr(escdirname)).">",'~'.expand("")) +" call Decho(' exe sil! keepalt file '.escdirname,'~'.expand("")) +" let v:errmsg= "" " Decho + exe 'sil! keepj keepalt file '.escdirname +" call Decho(" errmsg<".v:errmsg."> bufnr(".escdirname.")=".bufnr(escdirname)."<".bufname(bufnr(escdirname)).">",'~'.expand("")) " enter the new buffer into the s:netrwbuf dictionary let s:netrwbuf[s:NetrwFullPath(dirname)]= bufnr("%") " call Decho("update netrwbuf dictionary: s:netrwbuf[".s:NetrwFullPath(dirname)."]=".bufnr("%"),'~'.expand("")) @@ -4163,7 +4041,8 @@ fun! s:NetrwGetBuffer(islocal,dirname) endif " call Decho(" line($)=".line("$"),'~'.expand("")) if bufname("%") == '.' - call s:NetrwBufRename(getcwd()) +" call Decho("exe sil! keepalt file ".fnameescape(getcwd()),'~'.expand("")) + exe "sil! NetrwKeepj keepalt file ".fnameescape(getcwd()) endif let &ei= eikeep @@ -4187,7 +4066,6 @@ fun! s:NetrwGetBuffer(islocal,dirname) elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST " call Decho("--re-use tree listing--",'~'.expand("")) " call Decho(" clear buffer<".expand("%")."> with :%d",'~'.expand("")) - setl ma sil NetrwKeepj %d _ NetrwKeepj call s:NetrwListSettings(a:islocal) " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("")) @@ -4211,7 +4089,8 @@ fun! s:NetrwGetBuffer(islocal,dirname) " call Decho("--do netrw settings: make this buffer#".bufnr("%")." not-a-file, modifiable, not line-numbered, etc--",'~'.expand("")) let fname= expand("%") NetrwKeepj call s:NetrwListSettings(a:islocal) - call s:NetrwBufRename(fname) +" call Decho("exe sil! keepalt file ".fnameescape(fname),'~'.expand("")) + exe "sil! NetrwKeepj keepalt file ".fnameescape(fname) " delete all lines from buffer {{{3 " call Decho("--delete all lines from buffer--",'~'.expand("")) @@ -4354,21 +4233,19 @@ fun! s:NetrwGetWord() endfun " --------------------------------------------------------------------- -" s:NetrwListSettings: make standard settings for making a netrw listing {{{2 -" g:netrw_bufsettings will be used after the listing is produced. -" Called by s:NetrwGetBuffer() +" s:NetrwListSettings: make standard settings for a netrw listing {{{2 fun! s:NetrwListSettings(islocal) " call Dfunc("s:NetrwListSettings(islocal=".a:islocal.")") " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("")) let fname= bufname("%") " " call Decho("(NetrwListSettings) setl bt=nofile nobl ma nonu nowrap noro nornu",'~'.expand("")) - " nobl noma nomod nonu noma nowrap ro nornu (std g:netrw_bufsettings) - setl bt=nofile nobl ma nonu nowrap noro nornu - call s:NetrwBufRename(fname) + setl bt=nofile nobl ma nonu nowrap noro nornu +" call Decho("(NetrwListSettings) exe sil! keepalt file ".fnameescape(fname),'~'.expand("")) + exe "sil! keepalt file ".fnameescape(fname) if g:netrw_use_noswf setl noswf endif -" call Dredir("ls!","s:NetrwListSettings") +" call Dredir("ls!") " call Decho("(NetrwListSettings) exe setl ts=".(g:netrw_maxfilenamelen+1),'~'.expand("")) exe "setl ts=".(g:netrw_maxfilenamelen+1) setl isk+=.,~,- @@ -4382,7 +4259,7 @@ fun! s:NetrwListSettings(islocal) endfun " --------------------------------------------------------------------- -" s:NetrwListStyle: change list style (thin - long - wide - tree) {{{2 +" s:NetrwListStyle: {{{2 " islocal=0: remote browsing " =1: local browsing fun! s:NetrwListStyle(islocal) @@ -4398,12 +4275,6 @@ fun! s:NetrwListStyle(islocal) " call Decho("chgd w:netrw_liststyle to ".w:netrw_liststyle,'~'.expand("")) " call Decho("b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : "doesn't exist").">",'~'.expand("")) - " repoint t:netrw_lexbufnr if appropriate - if exists("t:netrw_lexbufnr") && bufnr("%") == t:netrw_lexbufnr -" call Decho("set repointlexbufnr to true!") - let repointlexbufnr= 1 - endif - if w:netrw_liststyle == s:THINLIST " use one column listing " call Decho("use one column list",'~'.expand("")) @@ -4445,12 +4316,6 @@ fun! s:NetrwListStyle(islocal) NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) NetrwKeepj call s:NetrwCursor() - " repoint t:netrw_lexbufnr if appropriate - if exists("repointlexbufnr") - let t:netrw_lexbufnr= bufnr("%") -" call Decho("repoint t:netrw_lexbufnr to #".t:netrw_lexbufnr) - endif - " restore position; keep cursor on the filename " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand("")) NetrwKeepj call winrestview(svpos) @@ -4474,14 +4339,12 @@ fun! s:NetrwBannerCtrl(islocal) call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) " keep cursor on the filename - if g:netrw_banner && exists("w:netrw_bannercnt") && line(".") >= w:netrw_bannercnt - let fname= s:NetrwGetWord() - sil NetrwKeepj $ - let result= search('\%(^\%(|\+\s\)\=\|\s\{2,}\)\zs'.escape(fname,'.\[]*$^').'\%(\s\{2,}\|$\)','bc') -" " call Decho("search result=".result." w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'N/A'),'~'.expand("")) - if result <= 0 && exists("w:netrw_bannercnt") - exe "NetrwKeepj ".w:netrw_bannercnt - endif + let fname= s:NetrwGetWord() + sil NetrwKeepj $ + let result= search('\%(^\%(|\+\s\)\=\|\s\{2,}\)\zs'.escape(fname,'.\[]*$^').'\%(\s\{2,}\|$\)','bc') +" call Decho("search result=".result." w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'N/A'),'~'.expand("")) + if result <= 0 && exists("w:netrw_bannercnt") + exe "NetrwKeepj ".w:netrw_bannercnt endif let @@= ykeep " call Dret("s:NetrwBannerCtrl : g:netrw_banner=".g:netrw_banner) @@ -4643,7 +4506,7 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...) let @@= ykeep " call Decho("b:netrw_curdir doesn't exist!",'~'.expand("")) " call Decho("getcwd<".getcwd().">",'~'.expand("")) -" call Dredir("ls!","s:NetrwBrowseChgDir") +" call Dredir("ls!") " call Dret("s:NetrwBrowseChgDir") return endif @@ -4651,7 +4514,7 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...) " NetrwBrowseChgDir: save options and initialize {{{3 " call Decho("saving options",'~'.expand("")) - call s:SavePosn(s:netrw_posn) + call s:SavePosn(s:netrw_nbcd) NetrwKeepj call s:NetrwOptionSave("s:") NetrwKeepj call s:NetrwSafeOptions() if (has("win32") || has("win95") || has("win64") || has("win16")) @@ -4676,6 +4539,7 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...) setl ma noro nowrap NetrwKeepj call setline(line('.'),'" Quick Help: :help '.s:QuickHelp[g:netrw_quickhelp]) setl noma nomod nowrap + call s:RestorePosn(s:netrw_nbcd) NetrwKeepj call s:NetrwOptionRestore("s:") " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("")) endif @@ -5005,6 +4869,7 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...) " else " Decho " call Decho("skipping option restore (dorestore==0): hidden=".&hidden." bufhidden=".&bufhidden." mod=".&mod,'~'.expand("")) endif + call s:RestorePosn(s:netrw_nbcd) if dolockout && dorestore " call Decho("restore: filewritable(dirname<".dirname.">)=".filewritable(dirname),'~'.expand("")) if filewritable(dirname) @@ -5019,7 +4884,6 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...) " call Decho("restore: ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("")) endif endif - call s:RestorePosn(s:netrw_posn) let @@= ykeep " call Dret("s:NetrwBrowseChgDir <".dirname."> : curpos<".string(getpos(".")).">") @@ -5041,6 +4905,10 @@ fun! s:NetrwBrowseUpDir(islocal) return endif + if !exists("w:netrw_liststyle") || w:netrw_liststyle != s:TREELIST + call s:SavePosn(s:netrw_nbcd) + endif + norm! 0 if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict") " call Decho("case: treestyle",'~'.expand("")) @@ -5048,40 +4916,28 @@ fun! s:NetrwBrowseUpDir(islocal) let swwline= winline() - 1 if exists("w:netrw_treetop") let b:netrw_curdir= w:netrw_treetop - elseif exists("b:netrw_curdir") - let w:netrw_treetop= b:netrw_curdir - else - let w:netrw_treetop= getcwd() - let b:netrw_curdir = w:netrw_treetop endif - let curfile = getline(".") - let curpath = s:NetrwTreePath(w:netrw_treetop) + let curdir= b:netrw_curdir if a:islocal call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,'../')) else call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,'../')) endif -" call Decho("looking for curfile<^".s:treedepthstring.curfile.">",'~'.expand("")) -" call Decho("having curpath<".curpath.">",'~'.expand("")) - if w:netrw_treetop == '/' - keepj call search('^\M'.curfile,"w") - elseif curfile == '../' - keepj call search('^\M'.curfile,"wb") - else -" call Decho("search(^\\M".s:treedepthstring.curfile.") backwards")) - while 1 - keepj call search('^\M'.s:treedepthstring.curfile,"wb") - let treepath= s:NetrwTreePath(w:netrw_treetop) -" call Decho("..current treepath<".treepath.">",'~'.expand("")) - if treepath == curpath - break - endif - endwhile + if !search('\c^'.s:treedepthstring.curline,'cw') + if !search('\c^'.curline,'cw') + sil! NetrwKeepj 1 + endif endif - + exe "sil! NetrwKeepj norm! z\" + while winline() < swwline + let curwinline= winline() + exe "sil! NetrwKeepj norm! \" + if curwinline == winline() + break + endif + endwhile else " call Decho("case: not treestyle",'~'.expand("")) - call s:SavePosn(s:netrw_posn) if exists("b:netrw_curdir") let curdir= b:netrw_curdir else @@ -5092,10 +4948,17 @@ fun! s:NetrwBrowseUpDir(islocal) else call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,'../')) endif - call s:RestorePosn(s:netrw_posn) - let curdir= substitute(curdir,'^.*[\/]','','') - call search('\<'.curdir.'/','wc') + if has_key(s:netrw_nbcd,bufnr("%")) + call s:RestorePosn(s:netrw_nbcd) + elseif exists("w:netrw_bannercnt") +" call Decho("moving to line#".w:netrw_bannercnt,'~'.expand("")) + exe w:netrw_bannercnt + else + 1 + endif endif + let curdir= substitute(curdir,'^.*[\/]','','') + call search('\<'.curdir.'\>','wc') " call Dret("s:NetrwBrowseUpDir") endfun @@ -5106,15 +4969,16 @@ endfun fun! netrw#BrowseX(fname,remote) " call Dfunc("netrw#BrowseX(fname<".a:fname."> remote=".a:remote.")") - " if its really just a local directory, then do a "gf" instead - if (a:remote == 0 && isdirectory(a:fname)) || (a:remote == 1 && a:fname =~ '/$' && a:fname !~ '^https\=:') + " if its really just a directory, then do a "gf" instead + if (a:remote == 0 && isdirectory(a:fname)) || (a:remote == 1 && fname =~ '/$' && fname !~ '^https\=:') norm! gf -" call Dret("(netrw#BrowseX) did gf instead") +" call Dret("netrw#BrowseX : did gf instead") endif + let ykeep = @@ let screenposn = winsaveview() -" call Decho("(netrw#BrowseX) saving posn to screenposn<".string(screenposn).">",'~'.expand("")) +" call Decho("saving posn to screenposn<".string(screenposn).">",'~'.expand("")) " need to save and restore aw setting as gx can invoke this function from non-netrw buffers let awkeep = &aw @@ -5125,18 +4989,18 @@ fun! netrw#BrowseX(fname,remote) if exists("g:Netrw_corehandler") if type(g:Netrw_corehandler) == 2 " g:Netrw_corehandler is a function reference (see :help Funcref) -" call Decho("(netrw#BrowseX) g:Netrw_corehandler is a funcref",'~'.expand("")) +" call Decho("g:Netrw_corehandler is a funcref",'~'.expand("")) call g:Netrw_corehandler(s:NetrwFile(a:fname)) elseif type(g:Netrw_corehandler) == 3 " g:Netrw_corehandler is a List of function references (see :help Funcref) -" call Decho("(netrw#BrowseX) g:Netrw_corehandler is a List",'~'.expand("")) +" call Decho("g:Netrw_corehandler is a List",'~'.expand("")) for Fncref in g:Netrw_corehandler if type(FncRef) == 2 call FncRef(a:fname) endif endfor endif -" call Decho("(netrw#BrowseX) restoring posn: screenposn<".string(screenposn).">,'~'.expand(""))" +" call Decho("restoring posn to screenposn<".string(screenposn).">,'~'.expand(""))" call winrestview(screenposn) let @@= ykeep let &aw= awkeep @@ -5151,36 +5015,27 @@ fun! netrw#BrowseX(fname,remote) if has("win32") || has("win95") || has("win64") || has("win16") let exten= substitute(exten,'^.*$','\L&\E','') endif - if exten =~ "[\\/]" - let exten= "" - endif -" call Decho("(netrw#BrowseX) exten<".exten.">",'~'.expand("")) +" call Decho("exten<".exten.">",'~'.expand("")) if a:remote == 1 " create a local copy -" call Decho("(netrw#BrowseX) remote: a:remote=".a:remote.": create a local copy of <".a:fname.">",'~'.expand("")) +" call Decho("remote: a:remote=".a:remote.": create a local copy of <".a:fname.">",'~'.expand("")) setl bh=delete call netrw#NetRead(3,a:fname) " attempt to rename tempfile let basename= substitute(a:fname,'^\(.*\)/\(.*\)\.\([^.]*\)$','\2','') let newname = substitute(s:netrw_tmpfile,'^\(.*\)/\(.*\)\.\([^.]*\)$','\1/'.basename.'.\3','') -" call Decho("(netrw#BrowseX) basename<".basename.">",'~'.expand("")) -" call Decho("(netrw#BrowseX) newname <".newname.">",'~'.expand("")) - if s:netrw_tmpfile != newname && newname != "" - if rename(s:netrw_tmpfile,newname) == 0 - " renaming succeeded -" call Decho("(netrw#BrowseX) renaming succeeded (tmpfile<".s:netrw_tmpfile."> to <".newname.">)") - let fname= newname - else - " renaming failed -" call Decho("(netrw#BrowseX) renaming failed (tmpfile<".s:netrw_tmpfile."> to <".newname.">)") - let fname= s:netrw_tmpfile - endif +" call Decho("basename<".basename.">",'~'.expand("")) +" call Decho("newname <".newname.">",'~'.expand("")) + if rename(s:netrw_tmpfile,newname) == 0 + " renaming succeeded + let fname= newname else + " renaming failed let fname= s:netrw_tmpfile endif else -" call Decho("(netrw#BrowseX) local: a:remote=".a:remote.": handling local copy of <".a:fname.">",'~'.expand("")) +" call Decho("local: a:remote=".a:remote.": handling local copy of <".a:fname.">",'~'.expand("")) let fname= a:fname " special ~ handler for local if fname =~ '^\~' && expand("$HOME") != "" @@ -5188,8 +5043,8 @@ fun! netrw#BrowseX(fname,remote) let fname= s:NetrwFile(substitute(fname,'^\~',expand("$HOME"),'')) endif endif -" call Decho("(netrw#BrowseX) fname<".fname.">",'~'.expand("")) -" call Decho("(netrw#BrowseX) exten<".exten."> "."netrwFileHandlers#NFH_".exten."():exists=".exists("*netrwFileHandlers#NFH_".exten),'~'.expand("")) +" call Decho("fname<".fname.">",'~'.expand("")) +" call Decho("exten<".exten."> "."netrwFileHandlers#NFH_".exten."():exists=".exists("*netrwFileHandlers#NFH_".exten),'~'.expand("")) " set up redirection (avoids browser messages) " by default, g:netrw_suppress_gx_mesg is true @@ -5206,12 +5061,12 @@ fun! netrw#BrowseX(fname,remote) let redir= &srr . "/dev/null" endif endif -" call Decho("(netrw#BrowseX) set up redirection: redir{".redir."} srr{".&srr."}",'~'.expand("")) +" call Decho("set up redirection: redir{".redir."} srr{".&srr."}",'~'.expand("")) " extract any viewing options. Assumes that they're set apart by quotes. -" call Decho("(netrw#BrowseX) extract any viewing options",'~'.expand("")) +" call Decho("extract any viewing options",'~'.expand("")) if exists("g:netrw_browsex_viewer") -" call Decho("(netrw#BrowseX) g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">",'~'.expand("")) +" call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">",'~'.expand("")) if g:netrw_browsex_viewer =~ '\s' let viewer = substitute(g:netrw_browsex_viewer,'\s.*$','','') let viewopt = substitute(g:netrw_browsex_viewer,'^\S\+\s*','','')." " @@ -5222,28 +5077,28 @@ fun! netrw#BrowseX(fname,remote) let viewopt = substitute(g:netrw_browsex_viewer,'^\(\(^\S\+\s\+\)\{'.cnt.'}\S\+\)\(.*\)$','\3','')." " let cnt = cnt + 1 let oviewer = viewer -" call Decho("(netrw#BrowseX) !exe: viewer<".viewer."> viewopt<".viewopt.">",'~'.expand("")) +" call Decho("!exe: viewer<".viewer."> viewopt<".viewopt.">",'~'.expand("")) endwhile else let viewer = g:netrw_browsex_viewer let viewopt = "" endif -" call Decho("(netrw#BrowseX) viewer<".viewer."> viewopt<".viewopt.">",'~'.expand("")) +" call Decho("viewer<".viewer."> viewopt<".viewopt.">",'~'.expand("")) endif " execute the file handler -" call Decho("(netrw#BrowseX) execute the file handler (if any)",'~'.expand("")) +" call Decho("execute the file handler (if any)",'~'.expand("")) if exists("g:netrw_browsex_viewer") && g:netrw_browsex_viewer == '-' -" call Decho("(netrw#BrowseX) g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">",'~'.expand("")) +" call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">",'~'.expand("")) let ret= netrwFileHandlers#Invoke(exten,fname) elseif exists("g:netrw_browsex_viewer") && executable(viewer) -" call Decho("(netrw#BrowseX) g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">",'~'.expand("")) +" call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">",'~'.expand("")) call s:NetrwExe("sil !".viewer." ".viewopt.s:ShellEscape(fname,1).redir) let ret= v:shell_error elseif has("win32") || has("win64") -" call Decho("(netrw#BrowseX) win".(has("win32")? "32" : "64")",'~'.expand("")) +" call Decho("windows",'~'.expand("")) if executable("start") call s:NetrwExe('sil! !start rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(fname,1)) elseif executable("rundll32") @@ -5251,12 +5106,12 @@ fun! netrw#BrowseX(fname,remote) else call netrw#ErrorMsg(s:WARNING,"rundll32 not on path",74) endif - " call inputsave()|call input("Press to continue")|call inputrestore() + call inputsave()|call input("Press to continue")|call inputrestore() let ret= v:shell_error elseif has("win32unix") let winfname= 'c:\cygwin'.substitute(fname,'/','\\','g') -" call Decho("(netrw#BrowseX) cygwin: winfname<".s:ShellEscape(winfname,1).">",'~'.expand("")) +" call Decho("cygwin: winfname<".s:ShellEscape(winfname,1).">",'~'.expand("")) if executable("start") call s:NetrwExe('sil !start rundll32 url.dll,FileProtocolHandler '.s:ShellEscape(winfname,1)) elseif executable("rundll32") @@ -5266,31 +5121,26 @@ fun! netrw#BrowseX(fname,remote) else call netrw#ErrorMsg(s:WARNING,"rundll32 not on path",74) endif - " call inputsave()|call input("Press to continue")|call inputrestore() + call inputsave()|call input("Press to continue")|call inputrestore() let ret= v:shell_error elseif has("unix") && executable("kfmclient") && s:CheckIfKde() -" call Decho("(netrw#BrowseX) unix and kfmclient",'~'.expand("")) +" call Decho("unix and kfmclient",'~'.expand("")) call s:NetrwExe("sil !kfmclient exec ".s:ShellEscape(fname,1)." ".redir) let ret= v:shell_error elseif has("unix") && executable("exo-open") && executable("xdg-open") && executable("setsid") -" call Decho("(netrw#BrowseX) unix, exo-open, xdg-open",'~'.expand("")) +" call Decho("unix, exo-open, xdg-open",'~'.expand("")) call s:NetrwExe("sil !setsid xdg-open ".s:ShellEscape(fname,1).redir) let ret= v:shell_error - elseif has("unix") && $DESKTOP_SESSION == "mate" && executable("atril") -" call Decho("(netrw#BrowseX) unix and atril",'~'.expand("")) - call s:NetrwExe("sil !atril ".s:ShellEscape(fname,1).redir) - let ret= v:shell_error - elseif has("unix") && executable("xdg-open") -" call Decho("(netrw#BrowseX) unix and xdg-open",'~'.expand("")) +" call Decho("unix and xdg-open",'~'.expand("")) call s:NetrwExe("sil !xdg-open ".s:ShellEscape(fname,1).redir) let ret= v:shell_error elseif has("macunix") && executable("open") -" call Decho("(netrw#BrowseX) macunix and open",'~'.expand("")) +" call Decho("macunix and open",'~'.expand("")) call s:NetrwExe("sil !open ".s:ShellEscape(fname,1)." ".redir) let ret= v:shell_error @@ -5325,7 +5175,7 @@ fun! netrw#BrowseX(fname,remote) exe "sil! NetrwKeepj norm! \" " redraw! endif -" call Decho("(netrw#BrowseX) restoring posn to screenposn<".string(screenposn).">",'~'.expand("")) +" call Decho("restoring posn to screenposn<".string(screenposn).">",'~'.expand("")) call winrestview(screenposn) let @@ = ykeep let &aw= awkeep @@ -5333,21 +5183,6 @@ fun! netrw#BrowseX(fname,remote) " call Dret("netrw#BrowseX") endfun -" --------------------------------------------------------------------- -" netrw#GX: gets word under cursor for gx support {{{2 -" See also: netrw#BrowseXVis -" netrw#BrowseX -fun! netrw#GX() -" call Dfunc("netrw#GX()") - if &ft == "netrw" - let fname= s:NetrwGetWord() - else - let fname= expand((exists("g:netrw_gx")? g:netrw_gx : '')) - endif -" call Dret("netrw#GX <".fname.">") - return fname -endfun - " --------------------------------------------------------------------- " netrw#BrowseXVis: used by gx in visual mode to select a file for browsing {{{2 fun! netrw#BrowseXVis() @@ -5355,43 +5190,16 @@ fun! netrw#BrowseXVis() let atkeep = @@ norm! gvy " call Decho("@@<".@@.">",'~'.expand("")) - call netrw#BrowseX(@@,netrw#CheckIfRemote(@@)) + call netrw#BrowseX(@@,netrw#CheckIfRemote()) let @@ = atkeep " call Dret("netrw#BrowseXVis") endfun -" --------------------------------------------------------------------- -" s:NetrwBufRename: renames a buffer without the side effect of retaining an unlisted buffer having the old name {{{2 -" Using the file command on a "[No Name]" buffer does not seem to cause the old "[No Name]" buffer -" to become an unlisted buffer, so in that case don't bwipe it. -fun! s:NetrwBufRename(newname) -" call Dfunc("s:NetrwBufRename(newname<".a:newname.">) buf(%)#".bufnr("%")."<".bufname(bufnr("%")).">") -" call Dredir("ls!","s:NetrwBufRename (before rename)") - let oldbufname= bufname(bufnr("%")) -" call Decho("buf#".bufnr("%").": oldbufname<".oldbufname.">",'~'.expand("")) - if oldbufname != a:newname -" call Decho("do renaming (oldbufname != a:newname)",'~'.expand("")) - exe 'sil! keepj keepalt file '.fnameescape(a:newname) - let oldbufnr= bufnr(oldbufname) - if oldbufname != "" && oldbufnr != -1 - exe "bwipe! ".oldbufnr - endif - endif -" call Dredir("ls!","s:NetrwBufRename (after rename)") -" call Dret("s:NetrwBufRename : buf#".bufnr("%").": oldname<".oldbufname."> newname<".a:newname."> expand(%)<".expand("%").">") -endfun - " --------------------------------------------------------------------- " netrw#CheckIfRemote: returns 1 if current file looks like an url, 0 else {{{2 -fun! netrw#CheckIfRemote(...) -" call Dfunc("netrw#CheckIfRemote() a:0=".a:0) - if a:0 > 0 - let curfile= a:1 - else - let curfile= expand("%") - endif -" call Decho("curfile<".curfile.">") - if curfile =~ '^\a\{3,}://' +fun! netrw#CheckIfRemote() +" call Dfunc("netrw#CheckIfRemote()") + if expand("%") =~ '^\a\{3,}://' " call Dret("netrw#CheckIfRemote 1") return 1 else @@ -5657,23 +5465,17 @@ fun! s:NetrwHidden(islocal) " call Dfunc("s:NetrwHidden()") let ykeep= @@ " save current position - let svpos = winsaveview() + let svpos= winsaveview() " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("")) if g:netrw_list_hide =~ '\(^\|,\)\\(^\\|\\s\\s\\)\\zs\\.\\S\\+' - " remove .file pattern from hiding list -" call Decho("remove .file pattern from hiding list",'~'.expand("")) + " remove pattern from hiding list let g:netrw_list_hide= substitute(g:netrw_list_hide,'\(^\|,\)\\(^\\|\\s\\s\\)\\zs\\.\\S\\+','','') elseif s:Strlen(g:netrw_list_hide) >= 1 -" call Decho("add .file pattern from hiding list",'~'.expand("")) let g:netrw_list_hide= g:netrw_list_hide . ',\(^\|\s\s\)\zs\.\S\+' else -" call Decho("set .file pattern as hiding list",'~'.expand("")) let g:netrw_list_hide= '\(^\|\s\s\)\zs\.\S\+' endif - if g:netrw_list_hide =~ '^,' - let g:netrw_list_hide= strpart(g:netrw_list_hide,1) - endif " refresh screen and return to saved position NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) @@ -5687,7 +5489,7 @@ endfun " s:NetrwHome: this function determines a "home" for saving bookmarks and history {{{2 fun! s:NetrwHome() if exists("g:netrw_home") - let home= expand(g:netrw_home) + let home= g:netrw_home else " go to vim plugin home for home in split(&rtp,',') + [''] @@ -5708,12 +5510,9 @@ fun! s:NetrwHome() endif " insure that the home directory exists if g:netrw_dirhistmax > 0 && !isdirectory(s:NetrwFile(home)) -" call Decho("insure that the home<".home."> directory exists") if exists("g:netrw_mkdir") -" call Decho("call system(".g:netrw_mkdir." ".s:ShellEscape(s:NetrwFile(home)).")") call system(g:netrw_mkdir." ".s:ShellEscape(s:NetrwFile(home))) else -" call Decho("mkdir(".home.")") call mkdir(home) endif endif @@ -5727,9 +5526,6 @@ fun! s:NetrwLeftmouse(islocal) if exists("s:netrwdrag") return endif - if &ft != "netrw" - return - endif " call Dfunc("s:NetrwLeftmouse(islocal=".a:islocal.")") let ykeep= @@ @@ -5777,9 +5573,6 @@ endfun " --------------------------------------------------------------------- " s:NetrwCLeftmouse: used to select a file/directory for a target {{{2 fun! s:NetrwCLeftmouse(islocal) - if &ft != "netrw" - return - endif " call Dfunc("s:NetrwCLeftmouse(islocal=".a:islocal.")") call s:NetrwMarkFileTgt(a:islocal) " call Dret("s:NetrwCLeftmouse") @@ -5788,7 +5581,7 @@ endfun " --------------------------------------------------------------------- " s:NetrwServerEdit: edit file in a server gvim, usually NETRWSERVER (implements ){{{2 " a:islocal=0 : not used, remote -" a:islocal=1 : not used, local +" a:islocal=1 : no used, local " a:islocal=2 : used, remote " a:islocal=3 : used, local fun! s:NetrwServerEdit(islocal,fname) @@ -5913,9 +5706,6 @@ endfun " --------------------------------------------------------------------- " s:NetrwSLeftmouse: marks the file under the cursor. May be dragged to select additional files {{{2 fun! s:NetrwSLeftmouse(islocal) - if &ft != "netrw" - return - endif " call Dfunc("s:NetrwSLeftmouse(islocal=".a:islocal.")") let s:ngw= s:NetrwGetWord() @@ -5968,7 +5758,6 @@ endfun " separated patterns given in g:netrw_list_hide fun! s:NetrwListHide() " call Dfunc("s:NetrwListHide() g:netrw_hide=".g:netrw_hide." g:netrw_list_hide<".g:netrw_list_hide.">") -" call Decho("initial: ".string(getline(w:netrw_bannercnt,'$'))) let ykeep= @@ " find a character not in the "hide" string to use as a separator for :g and :v commands @@ -5987,23 +5776,19 @@ fun! s:NetrwListHide() let hide = listhide let listhide = "" endif -" call Decho("hide<".hide."> listhide<".listhide.'>','~'.expand("")) " Prune the list by hiding any files which match if g:netrw_hide == 1 -" call Decho("..hiding<".hide.">",'~'.expand("")) +" call Decho("hiding<".hide."> listhide<".listhide.">",'~'.expand("")) exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'d' elseif g:netrw_hide == 2 -" call Decho("..showing<".hide.">",'~'.expand("")) +" call Decho("showing<".hide."> listhide<".listhide.">",'~'.expand("")) exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$g'.sep.hide.sep.'s@^@ /-KEEP-/ @' endif -" call Decho("..result: ".string(getline(w:netrw_bannercnt,'$')),'~'.expand("")) endwhile if g:netrw_hide == 2 exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$v@^ /-KEEP-/ @d' -" call Decho("..v KEEP: ".string(getline(w:netrw_bannercnt,'$')),'~'.expand("")) exe 'sil! NetrwKeepj '.w:netrw_bannercnt.',$s@^\%( /-KEEP-/ \)\+@@e' -" call Decho("..g KEEP: ".string(getline(w:netrw_bannercnt,'$')),'~'.expand("")) endif " remove any blank lines that have somehow remained. @@ -6069,12 +5854,9 @@ fun! s:NetrwMakeDir(usrhost) endif else let netrw_origdir= s:NetrwGetcwd(1) - if s:NetrwLcd(b:netrw_curdir) -" call Dret("s:NetrwMakeDir : lcd failure") - return - endif + call s:NetrwLcd(b:netrw_curdir) " call Decho("netrw_origdir<".netrw_origdir.">: lcd b:netrw_curdir<".fnameescape(b:netrw_curdir).">",'~'.expand("")) - call s:NetrwExe("sil! !".g:netrw_localmkdir.g:netrw_localmkdiropt.' '.s:ShellEscape(newdirname,1)) + call s:NetrwExe("sil! !".g:netrw_localmkdir.' '.s:ShellEscape(newdirname,1)) if v:shell_error != 0 let @@= ykeep call netrw#ErrorMsg(s:ERROR,"consider setting g:netrw_localmkdir<".g:netrw_localmkdir."> to something that works",80) @@ -6083,10 +5865,7 @@ fun! s:NetrwMakeDir(usrhost) endif if !g:netrw_keepdir " call Decho("restoring netrw_origdir since g:netrw_keepdir=".g:netrw_keepdir,'~'.expand("")) - if s:NetrwLcd(netrw_origdir) -" call Dret("s:NetrwBrowse : lcd failure") - return - endif + call s:NetrwLcd(netrw_origdir) endif endif @@ -6198,7 +5977,6 @@ endfun fun! s:NetrwMaps(islocal) " call Dfunc("s:NetrwMaps(islocal=".a:islocal.") b:netrw_curdir<".b:netrw_curdir.">") - " mouse maps: {{{3 if g:netrw_mousemaps && g:netrw_retmap " call Decho("set up Rexplore 2-leftmouse",'~'.expand("")) if !hasmapto("NetrwReturn") @@ -6214,87 +5992,22 @@ fun! s:NetrwMaps(islocal) " call Decho("made NetrwReturn map",'~'.expand("")) endif - " generate default maps {{{3 - if !hasmapto('NetrwHide') |nmap a NetrwHide_a|endif - if !hasmapto('NetrwBrowseUpDir') |nmap - NetrwBrowseUpDir |endif - if !hasmapto('NetrwOpenFile') |nmap % NetrwOpenFile|endif - if !hasmapto('NetrwBadd_cb') |nmap cb NetrwBadd_cb|endif - if !hasmapto('NetrwBadd_cB') |nmap cB NetrwBadd_cB|endif - if !hasmapto('NetrwLcd') |nmap cd NetrwLcd|endif - if !hasmapto('NetrwSetChgwin') |nmap C NetrwSetChgwin|endif - if !hasmapto('NetrwRefresh') |nmap NetrwRefresh|endif - if !hasmapto('NetrwLocalBrowseCheck') |nmap NetrwLocalBrowseCheck|endif - if !hasmapto('NetrwServerEdit') |nmap NetrwServerEdit|endif - if !hasmapto('NetrwMakeDir') |nmap d NetrwMakeDir|endif - if !hasmapto('NetrwBookHistHandler_gb')|nmap gb NetrwBookHistHandler_gb|endif -" --------------------------------------------------------------------- -" if !hasmapto('NetrwForceChgDir') |nmap gd NetrwForceChgDir|endif -" if !hasmapto('NetrwForceFile') |nmap gf NetrwForceFile|endif -" if !hasmapto('NetrwHidden') |nmap gh NetrwHidden|endif -" if !hasmapto('NetrwSetTreetop') |nmap gn NetrwSetTreetop|endif -" if !hasmapto('NetrwChgPerm') |nmap gp NetrwChgPerm|endif -" if !hasmapto('NetrwBannerCtrl') |nmap I NetrwBannerCtrl|endif -" if !hasmapto('NetrwListStyle') |nmap i NetrwListStyle|endif -" if !hasmapto('NetrwMarkMoveMF2Arglist')|nmap ma NetrwMarkMoveMF2Arglist|endif -" if !hasmapto('NetrwMarkMoveArglist2MF')|nmap mA NetrwMarkMoveArglist2MF|endif -" if !hasmapto('NetrwBookHistHandler_mA')|nmap mb NetrwBookHistHandler_mA|endif -" if !hasmapto('NetrwBookHistHandler_mB')|nmap mB NetrwBookHistHandler_mB|endif -" if !hasmapto('NetrwMarkFileCopy') |nmap mc NetrwMarkFileCopy|endif -" if !hasmapto('NetrwMarkFileDiff') |nmap md NetrwMarkFileDiff|endif -" if !hasmapto('NetrwMarkFileEdit') |nmap me NetrwMarkFileEdit|endif -" if !hasmapto('NetrwMarkFile') |nmap mf NetrwMarkFile|endif -" if !hasmapto('NetrwUnmarkList') |nmap mF NetrwUnmarkList|endif -" if !hasmapto('NetrwMarkFileGrep') |nmap mg NetrwMarkFileGrep|endif -" if !hasmapto('NetrwMarkHideSfx') |nmap mh NetrwMarkHideSfx|endif -" if !hasmapto('NetrwMarkFileMove') |nmap mm NetrwMarkFileMove|endif -" if !hasmapto('NetrwMarkFilePrint') |nmap mp NetrwMarkFilePrint|endif -" if !hasmapto('NetrwMarkFileRegexp') |nmap mr NetrwMarkFileRegexp|endif -" if !hasmapto('NetrwMarkFileSource') |nmap ms NetrwMarkFileSource|endif -" if !hasmapto('NetrwMarkFileTag') |nmap mT NetrwMarkFileTag|endif -" if !hasmapto('NetrwMarkFileTgt') |nmap mt NetrwMarkFileTgt|endif -" if !hasmapto('NetrwUnMarkFile') |nmap mu NetrwUnMarkFile|endif -" if !hasmapto('NetrwMarkFileVimCmd') |nmap mv NetrwMarkFileVimCmd|endif -" if !hasmapto('NetrwMarkFileExe_mx') |nmap mx NetrwMarkFileExe_mx|endif -" if !hasmapto('NetrwMarkFileExe_mX') |nmap mX NetrwMarkFileExe_mX|endif -" if !hasmapto('NetrwMarkFileCompress') |nmap mz NetrwMarkFileCompress|endif -" if !hasmapto('NetrwObtain') |nmap O NetrwObtain|endif -" if !hasmapto('NetrwSplit_o') |nmap o NetrwSplit_o|endif -" if !hasmapto('NetrwPreview') |nmap p NetrwPreview|endif -" if !hasmapto('NetrwPrevWinOpen') |nmap P NetrwPrevWinOpen|endif -" if !hasmapto('NetrwBookHistHandler_qb')|nmap qb NetrwBookHistHandler_qb|endif -" if !hasmapto('NetrwFileInfo') |nmap qf NetrwFileInfo|endif -" if !hasmapto('NetrwMarkFileQFEL_qF') |nmap qF NetrwMarkFileQFEL_qF|endif -" if !hasmapto('NetrwMarkFileQFEL_qL') |nmap qL NetrwMarkFileQFEL_qL|endif -" if !hasmapto('NetrwSortStyle') |nmap s NetrwSortStyle|endif -" if !hasmapto('NetSortSequence') |nmap S NetSortSequence|endif -" if !hasmapto('NetrwSetTgt_Tb') |nmap Tb NetrwSetTgt_Tb|endif -" if !hasmapto('NetrwSetTgt_Th') |nmap Th NetrwSetTgt_Th|endif -" if !hasmapto('NetrwSplit_t') |nmap t NetrwSplit_t|endif -" if !hasmapto('NetrwBookHistHandler_u') |nmap u NetrwBookHistHandler_u|endif -" if !hasmapto('NetrwBookHistHandler_U') |nmap U NetrwBookHistHandler_U|endif -" if !hasmapto('NetrwSplit_v') |nmap v NetrwSplit_v|endif -" if !hasmapto('NetrwBrowseX') |nmap x NetrwBrowseX|endif -" if !hasmapto('NetrwLocalExecute') |nmap X NetrwLocalExecute|endif - if a:islocal " call Decho("make local maps",'~'.expand("")) - " local normal-mode maps {{{3 - nnoremap NetrwHide_a :call NetrwHide(1) - nnoremap NetrwBrowseUpDir :call NetrwBrowseUpDir(1) - nnoremap NetrwOpenFile :call NetrwOpenFile(1) - nnoremap NetrwBadd_cb :call NetrwBadd(1,0) - nnoremap NetrwBadd_cB :call NetrwBadd(1,1) - nnoremap NetrwLcd :call NetrwLcd(b:netrw_curdir) - nnoremap NetrwSetChgwin :call NetrwSetChgwin() - nnoremap NetrwLocalBrowseCheck :call netrw#LocalBrowseCheck(NetrwBrowseChgDir(1,NetrwGetWord())) - nnoremap NetrwServerEdit :call NetrwServerEdit(3,NetrwGetWord()) - nnoremap NetrwMakeDir :call NetrwMakeDir("") - nnoremap NetrwBookHistHandler_gb :call NetrwBookHistHandler(1,b:netrw_curdir) -" --------------------------------------------------------------------- + " local normal-mode maps + nnoremap a :call NetrwHide(1) + nnoremap - :call NetrwBrowseUpDir(1) + nnoremap % :call NetrwOpenFile(1) + nnoremap c :call NetrwLcd(b:netrw_curdir) + nnoremap C :call NetrwSetChgwin() + nnoremap :call netrw#LocalBrowseCheck(NetrwBrowseChgDir(1,NetrwGetWord())) + nnoremap :call NetrwServerEdit(3,NetrwGetWord()) + nnoremap d :call NetrwMakeDir("") + nnoremap gb :call NetrwBookHistHandler(1,b:netrw_curdir) nnoremap gd :call NetrwForceChgDir(1,NetrwGetWord()) nnoremap gf :call NetrwForceFile(1,NetrwGetWord()) nnoremap gh :call NetrwHidden(1) - nnoremap gn :call netrw#SetTreetop(0,NetrwGetWord()) + nnoremap gn :call netrw#SetTreetop(NetrwGetWord()) nnoremap gp :call NetrwChgPerm(1,b:netrw_curdir) nnoremap I :call NetrwBannerCtrl(1) nnoremap i :call NetrwListStyle(1) @@ -6328,6 +6041,7 @@ fun! s:NetrwMaps(islocal) nnoremap qf :call NetrwFileInfo(1,NetrwGetWord()) nnoremap qF :call NetrwMarkFileQFEL(1,getqflist()) nnoremap qL :call NetrwMarkFileQFEL(1,getloclist(v:count)) + nnoremap r :let g:netrw_sort_direction= (g:netrw_sort_direction =~# 'n')? 'r' : 'n'exe "norm! 0"call NetrwRefresh(1,NetrwBrowseChgDir(1,'./')) nnoremap s :call NetrwSortStyle(1) nnoremap S :call NetSortSequence(1) nnoremap Tb :call NetrwSetTgt(1,'b',v:count1) @@ -6338,44 +6052,104 @@ fun! s:NetrwMaps(islocal) nnoremap v :call NetrwSplit(5) nnoremap x :call netrw#BrowseX(NetrwBrowseChgDir(1,NetrwGetWord(),0),0)" nnoremap X :call NetrwLocalExecute(expand(""))" - - nnoremap r :let g:netrw_sort_direction= (g:netrw_sort_direction =~# 'n')? 'r' : 'n'exe "norm! 0"call NetrwRefresh(1,NetrwBrowseChgDir(1,'./')) +" " local insert-mode maps +" inoremap a :call NetrwHide(1) +" inoremap c :exe "NetrwKeepj lcd ".fnameescape(b:netrw_curdir) +" inoremap c :call NetrwLcd(b:netrw_curdir) +" inoremap C :call NetrwSetChgwin() +" inoremap % :call NetrwOpenFile(1) +" inoremap - :call NetrwBrowseUpDir(1) +" inoremap :call netrw#LocalBrowseCheck(NetrwBrowseChgDir(1,NetrwGetWord())) +" inoremap d :call NetrwMakeDir("") +" inoremap gb :call NetrwBookHistHandler(1,b:netrw_curdir) +" inoremap gh :call NetrwHidden(1) +" nnoremap gn :call netrw#SetTreetop(NetrwGetWord()) +" inoremap gp :call NetrwChgPerm(1,b:netrw_curdir) +" inoremap I :call NetrwBannerCtrl(1) +" inoremap i :call NetrwListStyle(1) +" inoremap mb :call NetrwBookHistHandler(0,b:netrw_curdir) +" inoremap mB :call NetrwBookHistHandler(6,b:netrw_curdir) +" inoremap mc :call NetrwMarkFileCopy(1) +" inoremap md :call NetrwMarkFileDiff(1) +" inoremap me :call NetrwMarkFileEdit(1) +" inoremap mf :call NetrwMarkFile(1,NetrwGetWord()) +" inoremap mg :call NetrwMarkFileGrep(1) +" inoremap mh :call NetrwMarkHideSfx(1) +" inoremap mm :call NetrwMarkFileMove(1) +" inoremap mp :call NetrwMarkFilePrint(1) +" inoremap mr :call NetrwMarkFileRegexp(1) +" inoremap ms :call NetrwMarkFileSource(1) +" inoremap mT :call NetrwMarkFileTag(1) +" inoremap mt :call NetrwMarkFileTgt(1) +" inoremap mu :call NetrwUnMarkFile(1) +" inoremap mv :call NetrwMarkFileVimCmd(1) +" inoremap mx :call NetrwMarkFileExe(1,0) +" inoremap mX :call NetrwMarkFileExe(1,1) +" inoremap mz :call NetrwMarkFileCompress(1) +" inoremap O :call NetrwObtain(1) +" inoremap o :call NetrwSplit(3) +" inoremap p :call NetrwPreview(NetrwBrowseChgDir(1,NetrwGetWord(),1)) +" inoremap P :call NetrwPrevWinOpen(1) +" inoremap qb :call NetrwBookHistHandler(2,b:netrw_curdir) +" inoremap qf :call NetrwFileInfo(1,NetrwGetWord()) +" inoremap qF :call NetrwMarkFileQFEL(1,getqflist()) +" inoremap qL :call NetrwMarkFileQFEL(1,getloclist(v:count)) +" inoremap r :let g:netrw_sort_direction= (g:netrw_sort_direction =~# 'n')? 'r' : 'n'exe "norm! 0"call NetrwRefresh(1,NetrwBrowseChgDir(1,'./')) +" inoremap s :call NetrwSortStyle(1) +" inoremap S :call NetSortSequence(1) +" inoremap t :call NetrwSplit(4) +" inoremap Tb :call NetrwSetTgt(1,'b',v:count1) +" inoremap Th :call NetrwSetTgt(1,'h',v:count) +" inoremap u :call NetrwBookHistHandler(4,expand("%")) +" inoremap U :call NetrwBookHistHandler(5,expand("%")) +" inoremap v :call NetrwSplit(5) +" inoremap x :call netrw#BrowseX(NetrwBrowseChgDir(1,NetrwGetWord(),0),0)" if !hasmapto('NetrwHideEdit') nmap NetrwHideEdit +" imap NetrwHideEdit endif nnoremap NetrwHideEdit :call NetrwHideEdit(1) if !hasmapto('NetrwRefresh') nmap NetrwRefresh +" imap NetrwRefresh endif nnoremap NetrwRefresh :call NetrwRefresh(1,NetrwBrowseChgDir(1,(w:netrw_liststyle == 3)? w:netrw_treetop : './')) if s:didstarstar || !mapcheck("","n") nnoremap :Nexplore +" inoremap :Nexplore endif if s:didstarstar || !mapcheck("","n") nnoremap :Pexplore +" inoremap :Pexplore endif if !hasmapto('NetrwTreeSqueeze') nmap NetrwTreeSqueeze +" imap NetrwTreeSqueeze endif nnoremap NetrwTreeSqueeze :call TreeSqueezeDir(1) let mapsafecurdir = escape(b:netrw_curdir, s:netrw_map_escape) if g:netrw_mousemaps == 1 - nmap NetrwLeftmouse - nmap NetrwCLeftmouse - nmap NetrwMiddlemouse - nmap NetrwSLeftmouse - nmap NetrwSLeftdrag - nmap <2-leftmouse> Netrw2Leftmouse - imap ILeftmouse - imap IMiddlemouse + nmap NetrwLeftmouse nno NetrwLeftmouse :call NetrwLeftmouse(1) + nmap NetrwCLeftmouse nno NetrwCLeftmouse :call NetrwCLeftmouse(1) + nmap NetrwMiddlemouse nno NetrwMiddlemouse :call NetrwPrevWinOpen(1) + nmap NetrwSLeftmouse nno NetrwSLeftmouse :call NetrwSLeftmouse(1) + nmap NetrwSLeftdrag nno NetrwSLeftdrag :call NetrwSLeftdrag(1) + nmap <2-leftmouse> Netrw2Leftmouse nmap Netrw2Leftmouse - + imap ILeftmouse +" ino ILeftmouse :call NetrwLeftmouse(1) + imap IMiddlemouse +" ino IMiddlemouse :call NetrwPrevWinOpen(1) +" imap ISLeftmouse +" ino ISLeftmouse :call NetrwMarkFile(1,NetrwGetWord()) exe 'nnoremap :call NetrwLocalRm("'.mapsafecurdir.'")' exe 'vnoremap :call NetrwLocalRm("'.mapsafecurdir.'")' +" exe 'inoremap :call NetrwLocalRm("'.mapsafecurdir.'")' endif exe 'nnoremap :call NetrwLocalRm("'.mapsafecurdir.'")' exe 'nnoremap D :call NetrwLocalRm("'.mapsafecurdir.'")' @@ -6384,27 +6158,27 @@ fun! s:NetrwMaps(islocal) exe 'vnoremap :call NetrwLocalRm("'.mapsafecurdir.'")' exe 'vnoremap D :call NetrwLocalRm("'.mapsafecurdir.'")' exe 'vnoremap R :call NetrwLocalRename("'.mapsafecurdir.'")' +" exe 'inoremap :call NetrwLocalRm("'.mapsafecurdir.'")' +" exe 'inoremap D :call NetrwLocalRm("'.mapsafecurdir.'")' +" exe 'inoremap R :call NetrwLocalRename("'.mapsafecurdir.'")' +" exe 'inoremap d :call NetrwMakeDir("")' nnoremap :he netrw-quickhelp " support user-specified maps call netrw#UserMaps(1) - else - " remote normal-mode maps {{{3 + else " remote " call Decho("make remote maps",'~'.expand("")) call s:RemotePathAnalysis(b:netrw_curdir) - nnoremap NetrwHide_a :call NetrwHide(0) - nnoremap NetrwBrowseUpDir :call NetrwBrowseUpDir(0) - nnoremap NetrwOpenFile :call NetrwOpenFile(0) - nnoremap NetrwBadd_cb :call NetrwBadd(0,0) - nnoremap NetrwBadd_cB :call NetrwBadd(0,1) - nnoremap NetrwLcd :call NetrwLcd(b:netrw_curdir) - nnoremap NetrwSetChgwin :call NetrwSetChgwin() - nnoremap NetrwRefresh :call NetrwRefresh(0,NetrwBrowseChgDir(0,'./')) - nnoremap NetrwLocalBrowseCheck :call NetrwBrowse(0,NetrwBrowseChgDir(0,NetrwGetWord())) - nnoremap NetrwServerEdit :call NetrwServerEdit(2,NetrwGetWord()) - nnoremap NetrwBookHistHandler_gb :call NetrwBookHistHandler(1,b:netrw_curdir) -" --------------------------------------------------------------------- + " remote normal-mode maps + nnoremap a :call NetrwHide(0) + nnoremap - :call NetrwBrowseUpDir(0) + nnoremap % :call NetrwOpenFile(0) + nnoremap C :call NetrwSetChgwin() + nnoremap :call NetrwRefresh(0,NetrwBrowseChgDir(0,'./')) + nnoremap :call NetrwBrowse(0,NetrwBrowseChgDir(0,NetrwGetWord())) + nnoremap :call NetrwServerEdit(2,NetrwGetWord()) + nnoremap gb :call NetrwBookHistHandler(1,b:netrw_curdir) nnoremap gd :call NetrwForceChgDir(0,NetrwGetWord()) nnoremap gf :call NetrwForceFile(0,NetrwGetWord()) nnoremap gh :call NetrwHidden(0) @@ -6451,15 +6225,69 @@ fun! s:NetrwMaps(islocal) nnoremap U :call NetrwBookHistHandler(5,b:netrw_curdir) nnoremap v :call NetrwSplit(2) nnoremap x :call netrw#BrowseX(NetrwBrowseChgDir(0,NetrwGetWord()),1) +" " remote insert-mode maps +" inoremap :call NetrwBrowse(0,NetrwBrowseChgDir(0,NetrwGetWord())) +" inoremap :call NetrwRefresh(0,NetrwBrowseChgDir(0,'./')) +" inoremap :call TreeSqueezeDir(0) +" inoremap - :call NetrwBrowseUpDir(0) +" inoremap a :call NetrwHide(0) +" inoremap mb :call NetrwBookHistHandler(0,b:netrw_curdir) +" inoremap mc :call NetrwMarkFileCopy(0) +" inoremap md :call NetrwMarkFileDiff(0) +" inoremap me :call NetrwMarkFileEdit(0) +" inoremap mf :call NetrwMarkFile(0,NetrwGetWord()) +" inoremap mg :call NetrwMarkFileGrep(0) +" inoremap mh :call NetrwMarkHideSfx(0) +" inoremap mm :call NetrwMarkFileMove(0) +" inoremap mp :call NetrwMarkFilePrint(0) +" inoremap mr :call NetrwMarkFileRegexp(0) +" inoremap ms :call NetrwMarkFileSource(0) +" inoremap mt :call NetrwMarkFileTgt(0) +" inoremap mT :call NetrwMarkFileTag(0) +" inoremap mu :call NetrwUnMarkFile(0) +" nnoremap mv :call NetrwMarkFileVimCmd(1) +" inoremap mx :call NetrwMarkFileExe(0,0) +" inoremap mX :call NetrwMarkFileExe(0,1) +" inoremap mv :call NetrwMarkFileVimCmd(0) +" inoremap mz :call NetrwMarkFileCompress(0) +" inoremap gb :call NetrwBookHistHandler(1,b:netrw_curdir) +" inoremap gh :call NetrwHidden(0) +" inoremap gp :call NetrwChgPerm(0,b:netrw_curdir) +" inoremap C :call NetrwSetChgwin() +" inoremap i :call NetrwListStyle(0) +" inoremap I :call NetrwBannerCtrl(1) +" inoremap o :call NetrwSplit(0) +" inoremap O :call NetrwObtain(0) +" inoremap p :call NetrwPreview(NetrwBrowseChgDir(1,NetrwGetWord(),1)) +" inoremap P :call NetrwPrevWinOpen(0) +" inoremap qb :call NetrwBookHistHandler(2,b:netrw_curdir) +" inoremap mB :call NetrwBookHistHandler(6,b:netrw_curdir) +" inoremap qf :call NetrwFileInfo(0,NetrwGetWord()) +" inoremap qF :call NetrwMarkFileQFEL(0,getqflist()) +" inoremap qL :call NetrwMarkFileQFEL(0,getloclist(v:count)) +" inoremap r :let g:netrw_sort_direction= (g:netrw_sort_direction =~# 'n')? 'r' : 'n'exe "norm! 0"call NetrwBrowse(0,NetrwBrowseChgDir(0,'./')) +" inoremap s :call NetrwSortStyle(0) +" inoremap S :call NetSortSequence(0) +" inoremap t :call NetrwSplit(1) +" inoremap Tb :call NetrwSetTgt('b',v:count1) +" inoremap Th :call NetrwSetTgt('h',v:count) +" inoremap u :call NetrwBookHistHandler(4,b:netrw_curdir) +" inoremap U :call NetrwBookHistHandler(5,b:netrw_curdir) +" inoremap v :call NetrwSplit(2) +" inoremap x :call netrw#BrowseX(NetrwBrowseChgDir(0,NetrwGetWord()),1) +" inoremap % :call NetrwOpenFile(0) if !hasmapto('NetrwHideEdit') nmap NetrwHideEdit +" imap NetrwHideEdit endif nnoremap NetrwHideEdit :call NetrwHideEdit(0) if !hasmapto('NetrwRefresh') nmap NetrwRefresh +" imap NetrwRefresh endif if !hasmapto('NetrwTreeSqueeze') nmap NetrwTreeSqueeze +" imap NetrwTreeSqueeze endif nnoremap NetrwTreeSqueeze :call TreeSqueezeDir(0) @@ -6481,10 +6309,14 @@ fun! s:NetrwMaps(islocal) nmap <2-leftmouse> Netrw2Leftmouse nmap Netrw2Leftmouse - imap ILeftmouse +" ino ILeftmouse :call NetrwLeftmouse(0) imap IMiddlemouse +" ino IMiddlemouse :call NetrwPrevWinOpen(0) imap ISLeftmouse +" ino ISLeftmouse :call NetrwMarkFile(0,NetrwGetWord()) exe 'nnoremap :call NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")' exe 'vnoremap :call NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")' +" exe 'inoremap :call NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")' endif exe 'nnoremap :call NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")' exe 'nnoremap d :call NetrwMakeDir("'.mapsafeusermach.'")' @@ -6493,11 +6325,16 @@ fun! s:NetrwMaps(islocal) exe 'vnoremap :call NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")' exe 'vnoremap D :call NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")' exe 'vnoremap R :call NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")' +" exe 'inoremap :call NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")' +" exe 'inoremap d :call NetrwMakeDir("'.mapsafeusermach.'")' +" exe 'inoremap D :call NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")' +" exe 'inoremap R :call NetrwRemoteRename("'.mapsafeusermach.'","'.mapsafepath.'")' nnoremap :he netrw-quickhelp +" inoremap :he netrw-quickhelp " support user-specified maps call netrw#UserMaps(0) - endif " }}}3 + endif " call Dret("s:NetrwMaps") endfun @@ -6694,16 +6531,14 @@ fun! s:NetrwMarkFile(islocal,fname) endif " set up 2match'ing to netrwmarkfilemtch_# list - if has("syntax") && exists("g:syntax_on") && g:syntax_on - if exists("s:netrwmarkfilemtch_{curbufnr}") && s:netrwmarkfilemtch_{curbufnr} != "" -" " call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/",'~'.expand("")) - if exists("g:did_drchip_netrwlist_syntax") - exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/" - endif - else -" " call Decho("2match none",'~'.expand("")) - 2match none + if exists("s:netrwmarkfilemtch_{curbufnr}") && s:netrwmarkfilemtch_{curbufnr} != "" +" call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/",'~'.expand("")) + if exists("g:did_drchip_netrwlist_syntax") + exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{curbufnr}."/" endif + else +" call Decho("2match none",'~'.expand("")) + 2match none endif let @@= ykeep " call Dret("s:NetrwMarkFile : s:netrwmarkfilelist_".curbufnr."<".(exists("s:netrwmarkfilelist_{curbufnr}")? string(s:netrwmarkfilelist_{curbufnr}) : " doesn't exist").">") @@ -6789,15 +6624,18 @@ fun! s:NetrwMarkFileCompress(islocal) if g:netrw_keepdir let fname= s:ShellEscape(s:ComposePath(curdir,fname)) endif - call system(exe." ".fname) - if v:shell_error - NetrwKeepj call netrw#ErrorMsg(s:WARNING,"unable to apply<".exe."> to file<".fname.">",50) - endif else let fname= s:ShellEscape(b:netrw_curdir.fname,1) - NetrwKeepj call s:RemoteSystem(exe." ".fname) endif - + if executable(exe) + if a:islocal + call system(exe." ".fname) + else + NetrwKeepj call s:RemoteSystem(exe." ".fname) + endif + else + NetrwKeepj call netrw#ErrorMsg(s:WARNING,"unable to apply<".exe."> to file<".fname.">",50) + endif endif unlet sfx @@ -6806,9 +6644,6 @@ fun! s:NetrwMarkFileCompress(islocal) elseif a:islocal " fname not a compressed file, so compress it call system(netrw#WinPath(g:netrw_compress)." ".s:ShellEscape(s:ComposePath(b:netrw_curdir,fname))) - if v:shell_error - call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_compress<".g:netrw_compress."> to something that works",104) - endif else " fname not a compressed file, so compress it NetrwKeepj call s:RemoteSystem(netrw#WinPath(g:netrw_compress)." ".s:ShellEscape(fname)) @@ -6860,7 +6695,7 @@ fun! s:NetrwMarkFileCopy(islocal,...) if a:islocal && s:netrwmftgt_islocal " Copy marked files, local directory to local directory " call Decho("copy from local to local",'~'.expand("")) - if !executable(g:netrw_localcopycmd) + if !executable(g:netrw_localcopycmd) && g:netrw_localcopycmd !~ '^'.expand("$COMSPEC").'\s' call netrw#ErrorMsg(s:ERROR,"g:netrw_localcopycmd<".g:netrw_localcopycmd."> not executable on your system, aborting",91) " call Dfunc("s:NetrwMarkFileMove : g:netrw_localcopycmd<".g:netrw_localcopycmd."> n/a!") return @@ -6942,7 +6777,7 @@ fun! s:NetrwMarkFileCopy(islocal,...) " call Decho("tgt <".tgt.">",'~'.expand("")) " call Decho("copycmd<".copycmd.">",'~'.expand("")) " call Decho("system(".copycmd." '".args."' '".tgt."')",'~'.expand("")) - call system(copycmd.g:netrw_localcopycmdopt." '".args."' '".tgt."'") + call system(copycmd." '".args."' '".tgt."'") if v:shell_error != 0 if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && !g:netrw_keepdir call netrw#ErrorMsg(s:ERROR,"copy failed; perhaps due to vim's current directory<".getcwd()."> not matching netrw's (".b:netrw_curdir.") (see :help netrw-c)",101) @@ -6974,7 +6809,7 @@ fun! s:NetrwMarkFileCopy(islocal,...) if exists("*mkdir") call mkdir(tmpdir) else - call s:NetrwExe("sil! !".g:netrw_localmkdir.g:netrw_localmkdiropt.' '.s:ShellEscape(tmpdir,1)) + call s:NetrwExe("sil! !".g:netrw_localmkdir.' '.s:ShellEscape(tmpdir,1)) if v:shell_error != 0 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localmkdir<".g:netrw_localmkdir."> to something that works",80) " call Dret("s:NetrwMarkFileCopy : failed: sil! !".g:netrw_localmkdir.' '.s:ShellEscape(tmpdir,1) ) @@ -6982,10 +6817,7 @@ fun! s:NetrwMarkFileCopy(islocal,...) endif endif if isdirectory(s:NetrwFile(tmpdir)) - if s:NetrwLcd(tmpdir) -" call Dret("s:NetrwMarkFileCopy : lcd failure") - return - endif + call s:NetrwLcd(tmpdir) NetrwKeepj call netrw#Obtain(a:islocal,s:netrwmarkfilelist_{bufnr('%')},tmpdir) let localfiles= map(deepcopy(s:netrwmarkfilelist_{bufnr('%')}),'substitute(v:val,"^.*/","","")') NetrwKeepj call s:NetrwUpload(localfiles,s:netrwmftgt) @@ -6993,12 +6825,9 @@ fun! s:NetrwMarkFileCopy(islocal,...) for fname in s:netrwmarkfilelist_{bufnr('%')} NetrwKeepj call s:NetrwDelete(fname) endfor - if s:NetrwLcd(curdir) -" call Dret("s:NetrwMarkFileCopy : lcd failure") - return - endif - if v:version < 704 || (v:version == 704 && !has("patch1107")) - call s:NetrwExe("sil !".g:netrw_localrmdir.g:netrw_localrmdiropt." ".s:ShellEscape(tmpdir,1)) + call s:NetrwLcd(curdir) + if v:version < 704 || !has("patch1109") + call s:NetrwExe("sil !".g:netrw_localrmdir." ".s:ShellEscape(tmpdir,1)) if v:shell_error != 0 call netrw#ErrorMsg(s:WARNING,"consider setting g:netrw_localrmdir<".g:netrw_localrmdir."> to something that works",80) " " call Dret("s:NetrwMarkFileCopy : failed: sil !".g:netrw_localrmdir." ".s:ShellEscape(tmpdir,1) ) @@ -7010,10 +6839,7 @@ fun! s:NetrwMarkFileCopy(islocal,...) endif endif else - if s:NetrwLcd(curdir) -" call Dret("s:NetrwMarkFileCopy : lcd failure") - return - endif + call s:NetrwLcd(curdir) endif endif endif @@ -7540,15 +7366,15 @@ fun! s:NetrwMarkFileMove(islocal) " move: local -> local " call Decho("move from local to local",'~'.expand("")) " call Decho("local to local move",'~'.expand("")) - if !executable(g:netrw_localmovecmd) + if !executable(g:netrw_localmovecmd) && g:netrw_localmovecmd !~ '^'.expand("$COMSPEC").'\s' call netrw#ErrorMsg(s:ERROR,"g:netrw_localmovecmd<".g:netrw_localmovecmd."> not executable on your system, aborting",90) " call Dfunc("s:NetrwMarkFileMove : g:netrw_localmovecmd<".g:netrw_localmovecmd."> n/a!") return endif - let tgt = s:ShellEscape(s:netrwmftgt) + let tgt = s:ShellEscape(s:netrwmftgt) " call Decho("tgt<".tgt.">",'~'.expand("")) if !g:netrw_cygwin && (has("win32") || has("win95") || has("win64") || has("win16")) - let tgt= substitute(tgt, '/','\\','g') + let tgt = substitute(tgt, '/','\\','g') " call Decho("windows exception: tgt<".tgt.">",'~'.expand("")) if g:netrw_localmovecmd =~ '\s' let movecmd = substitute(g:netrw_localmovecmd,'\s.*$','','') @@ -7568,7 +7394,7 @@ fun! s:NetrwMarkFileMove(islocal) let fname= substitute(fname,'/','\\','g') endif " call Decho("system(".movecmd." ".s:ShellEscape(fname)." ".tgt.")",'~'.expand("")) - let ret= system(movecmd.g:netrw_localmovecmdopt." ".s:ShellEscape(fname)." ".tgt) + let ret= system(movecmd." ".s:ShellEscape(fname)." ".tgt) if v:shell_error != 0 if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && !g:netrw_keepdir call netrw#ErrorMsg(s:ERROR,"move failed; perhaps due to vim's current directory<".getcwd()."> not matching netrw's (".b:netrw_curdir.") (see :help netrw-c)",100) @@ -7823,13 +7649,12 @@ fun! s:NetrwMarkFileTag(islocal) call s:NetrwUnmarkAll() if a:islocal - -" call Decho("call system(".g:netrw_ctags." ".netrwmarkfilelist.")",'~'.expand("")) - call system(g:netrw_ctags." ".netrwmarkfilelist) - if v:shell_error + if executable(g:netrw_ctags) +" call Decho("call system(".g:netrw_ctags." ".netrwmarkfilelist.")",'~'.expand("")) + call system(g:netrw_ctags." ".netrwmarkfilelist) + else call netrw#ErrorMsg(s:ERROR,"g:netrw_ctags<".g:netrw_ctags."> is not executable!",51) endif - else let cmd = s:RemoteSystem(g:netrw_ctags." ".netrwmarkfilelist) call netrw#Obtain(a:islocal,"tags") @@ -8284,7 +8109,7 @@ fun! s:NetrwObtain(islocal) call netrw#Obtain(islocal,s:netrwmarkfilelist_{bufnr('%')}) call s:NetrwUnmarkList(bufnr('%'),b:netrw_curdir) else - call netrw#Obtain(a:islocal,s:NetrwGetWord()) + call netrw#Obtain(a:islocal,expand("")) endif let @@= ykeep @@ -8319,16 +8144,14 @@ fun! s:NetrwPrevWinOpen(islocal) if lastwinnr == 1 " if only one window, open a new one first " call Decho("only one window, so open a new one (g:netrw_alto=".g:netrw_alto.")",'~'.expand("")) - " g:netrw_preview=0: preview window shown in a horizontally split window - " g:netrw_preview=1: preview window shown in a vertically split window if g:netrw_preview " vertically split preview window - let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize + let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winheight(0))/100 : -g:netrw_winsize " call Decho("exe ".(g:netrw_alto? "top " : "bot ")."vert ".winsz."wincmd s",'~'.expand("")) exe (g:netrw_alto? "top " : "bot ")."vert ".winsz."wincmd s" else " horizontally split preview window - let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winheight(0))/100 : -g:netrw_winsize + let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize " call Decho("exe ".(g:netrw_alto? "bel " : "abo ").winsz."wincmd s",'~'.expand("")) exe (g:netrw_alto? "bel " : "abo ").winsz."wincmd s" endif @@ -8460,10 +8283,7 @@ fun! s:NetrwUpload(fname,tgt,...) " call Decho("handle uploading a list of files via scp",'~'.expand("")) let curdir= getcwd() if a:tgt =~ '^scp:' - if s:NetrwLcd(fromdir) -" call Dret("s:NetrwUpload : lcd failure") - return - endif + call s:NetrwLcd(fromdir) let filelist= deepcopy(s:netrwmarkfilelist_{bufnr('%')}) let args = join(map(filelist,"s:ShellEscape(v:val, 1)")) if exists("g:netrw_port") && g:netrw_port != "" @@ -8474,10 +8294,7 @@ fun! s:NetrwUpload(fname,tgt,...) let machine = substitute(a:tgt,'^scp://\([^/:]\+\).*$','\1','') let tgt = substitute(a:tgt,'^scp://[^/]\+/\(.*\)$','\1','') call s:NetrwExe(s:netrw_silentxfer."!".g:netrw_scp_cmd.s:ShellEscape(useport,1)." ".args." ".s:ShellEscape(machine.":".tgt,1)) - if s:NetrwLcd(curdir) -" call Dret("s:NetrwUpload : lcd failure") - return - endif + call s:NetrwLcd(curdir) elseif a:tgt =~ '^ftp:' call s:NetrwMethod(a:tgt) @@ -8591,7 +8408,7 @@ fun! s:NetrwUpload(fname,tgt,...) bw!|q endif elseif !exists("b:netrw_method") || b:netrw_method < 0 -" call Dret("s:#NetrwUpload : unsupported method") +" call Dfunc("netrw#NetrwUpload : unsupported method") return endif else @@ -8640,16 +8457,6 @@ fun! s:NetrwRefresh(islocal,dirname) " call Decho("setl ma noro",'~'.expand("")) " call Decho("clear buffer<".expand("%")."> with :%d",'~'.expand("")) let ykeep = @@ - if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST - if !exists("w:netrw_treetop") - if exists("b:netrw_curdir") - let w:netrw_treetop= b:netrw_curdir - else - let w:netrw_treetop= getcwd() - endif - endif - NetrwKeepj call s:NetrwRefreshTreeDict(w:netrw_treetop) - endif " save the cursor position before refresh. let screenposn = winsaveview() @@ -8669,15 +8476,13 @@ fun! s:NetrwRefresh(islocal,dirname) NetrwKeepj call winrestview(screenposn) " restore file marks - if has("syntax") && exists("g:syntax_on") && g:syntax_on - if exists("s:netrwmarkfilemtch_{bufnr('%')}") && s:netrwmarkfilemtch_{bufnr("%")} != "" -" " call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/",'~'.expand("")) - exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/" - else -" " call Decho("2match none (bufnr(%)=".bufnr("%")."<".bufname("%").">)",'~'.expand("")) - 2match none - endif - endif + if exists("s:netrwmarkfilemtch_{bufnr('%')}") && s:netrwmarkfilemtch_{bufnr("%")} != "" +" call Decho("exe 2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/",'~'.expand("")) + exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/" + else +" call Decho("2match none (bufnr(%)=".bufnr("%")."<".bufname("%").">)",'~'.expand("")) + 2match none + endif " restore let @@= ykeep @@ -9153,36 +8958,6 @@ fun! s:NetrwTreeDisplay(dir,depth) let depth= s:treedepthstring.a:depth " call Decho("display subtrees with depth<".depth."> and current leaves",'~'.expand("")) - " implement g:netrw_hide for tree listings (uses g:netrw_list_hide) - if g:netrw_hide == 1 - " hide given patterns - let listhide= split(g:netrw_list_hide,',') -" call Decho("listhide=".string(listhide)) - for pat in listhide - call filter(w:netrw_treedict[dir],'v:val !~ "'.pat.'"') - endfor - - elseif g:netrw_hide == 2 - " show given patterns (only) - let listhide= split(g:netrw_list_hide,',') -" call Decho("listhide=".string(listhide)) - let entries=[] - for entry in w:netrw_treedict[dir] - for pat in listhide - if entry =~ pat - call add(entries,entry) - break - endif - endfor - endfor - let w:netrw_treedict[dir]= entries - endif - if depth != "" - " always remove "." and ".." entries when there's depth - call filter(w:netrw_treedict[dir],'v:val !~ "\\.\\.$"') - call filter(w:netrw_treedict[dir],'v:val !~ "\\.$"') - endif - " call Decho("for every entry in w:netrw_treedict[".dir."]=".string(w:netrw_treedict[dir]),'~'.expand("")) for entry in w:netrw_treedict[dir] if dir =~ '/$' @@ -9205,7 +8980,6 @@ fun! s:NetrwTreeDisplay(dir,depth) sil! NetrwKeepj call setline(line("$")+1,depth.entry) endif endfor -" call Decho("displaying: ".string(getline(w:netrw_bannercnt,'$'))) " call Dret("NetrwTreeDisplay") endfun @@ -9214,11 +8988,6 @@ endfun " s:NetrwRefreshTreeDict: updates the contents information for a tree (w:netrw_treedict) {{{2 fun! s:NetrwRefreshTreeDict(dir) " call Dfunc("s:NetrwRefreshTreeDict(dir<".a:dir.">)") - if !exists("w:netrw_treedict") -" call Dret("s:NetrwRefreshTreeDict : w:netrw_treedict doesn't exist") - return - endif - for entry in w:netrw_treedict[a:dir] let direntry= substitute(a:dir.'/'.entry,'[@/]$','','e') " call Decho("a:dir<".a:dir."> entry<".entry."> direntry<".direntry.">",'~'.expand("")) @@ -9247,7 +9016,7 @@ fun! s:NetrwRefreshTreeDict(dir) " call Decho("updating w:netrw_treedict[".direntry.']='.string(w:netrw_treedict[direntry]),'~'.expand("")) else -" call Decho('not updating w:netrw_treedict['.string(direntry).'] with entry<'.string(entry).'> (no subtree)','~'.expand("")) +" call Decho('not updating w:netrw_treedict['.direntry.'] with entry<'.entry.'> (no subtree)',,'~'.expand("")) endif endfor " call Dret("s:NetrwRefreshTreeDict") @@ -9314,21 +9083,12 @@ fun! s:NetrwTreeListing(dirname) endfun " --------------------------------------------------------------------- -" s:NetrwTreePath: returns path to current file/directory in tree listing {{{2 +" s:NetrwTreePath: returns path to current file in tree listing {{{2 " Normally, treetop is w:netrw_treetop, but a " user of the function ( netrw#SetTreetop() ) " wipes that out prior to calling this function fun! s:NetrwTreePath(treetop) -" call Dfunc("s:NetrwTreePath(treetop<".a:treetop.">) line#".line(".")."<".getline(".").">") - if line(".") < w:netrw_bannercnt + 2 - let treedir= a:treetop - if treedir !~ '/$' - let treedir= treedir.'/' - endif -" call Dret("s:NetrwTreePath ".treedir." : line#".line(".")." ≤ ".(w:netrw_bannercnt+2)) - return treedir - endif - +" call Dfunc("s:NetrwTreePath() line#".line(".")."<".getline(".").">") let svpos = winsaveview() " call Decho("saving posn to svpos<".string(svpos).">",'~'.expand("")) let depth = substitute(getline('.'),'^\(\%('.s:treedepthstring.'\)*\)[^'.s:treedepthstring.'].\{-}$','\1','e') @@ -9359,15 +9119,12 @@ fun! s:NetrwTreePath(treetop) let depth = substitute(depth,'^'.s:treedepthstring,'','') " call Decho("constructing treedir<".treedir.">: dirname<".dirname."> while depth<".depth.">",'~'.expand("")) endwhile -" call Decho("treedir#1<".treedir.">",'~'.expand("")) if a:treetop =~ '/$' let treedir= a:treetop.treedir else let treedir= a:treetop.'/'.treedir endif -" call Decho("treedir#2<".treedir.">",'~'.expand("")) let treedir= substitute(treedir,'//$','/','') -" call Decho("treedir#3<".treedir.">",'~'.expand("")) " call Decho("restoring posn to svpos<".string(svpos).">",'~'.expand(""))" call winrestview(svpos) " call Dret("s:NetrwTreePath <".treedir.">") @@ -9457,7 +9214,7 @@ endfun fun! s:PerformListing(islocal) " call Dfunc("s:PerformListing(islocal=".a:islocal.")") " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol()." line($)=".line("$"),'~'.expand("")) -" call Decho("settings: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (enter)"." ei<".&ei.">",'~'.expand("")) +" call Decho("settings: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo. " (enter)",'~'.expand("")) " set up syntax highlighting {{{3 " call Decho("--set up syntax highlighting (ie. setl ft=netrw)",'~'.expand("")) @@ -9537,7 +9294,7 @@ fun! s:PerformListing(islocal) " call Decho("g:netrw_banner=".g:netrw_banner.": banner ".(g:netrw_banner? "enabled" : "suppressed").": (line($)=".line("$")." byte2line(1)=".byte2line(1)." bannercnt=".w:netrw_bannercnt.")",'~'.expand("")) endif - " show copy/move target, if any {{{3 + " show copy/move target, if any if g:netrw_banner if exists("s:netrwmftgt") && exists("s:netrwmftgt_islocal") " call Decho("--show copy/move target<".s:netrwmftgt.">",'~'.expand("")) @@ -9693,7 +9450,7 @@ fun! s:PerformListing(islocal) " resolve symbolic links if local and (thin or tree) if a:islocal && (w:netrw_liststyle == s:THINLIST || (exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST)) " call Decho("--resolve symbolic links if local and thin|tree",'~'.expand("")) - sil! g/@$/call s:ShowLink() + g/@$/call s:ShowLink() endif if exists("w:netrw_bannercnt") && (line("$") >= w:netrw_bannercnt || !g:netrw_banner) @@ -9786,9 +9543,9 @@ fun! s:SetupNetrwStatusLine(statline) " call Dret("SetupNetrwStatusLine : stl=".&stl) endfun -" ========================================= -" Remote Directory Browsing Support: {{{1 -" ========================================= +" --------------------------------------------------------------------- +" Remote Directory Browsing Support: {{{1 +" =========================================== " --------------------------------------------------------------------- " s:NetrwRemoteFtpCmd: unfortunately, not all ftp servers honor options for ls {{{2 @@ -10389,12 +10146,12 @@ fun! s:NetrwRemoteRename(usrhost,path) range " call Dret("NetrwRemoteRename") endfun -" ========================================== +" --------------------------------------------------------------------- " Local Directory Browsing Support: {{{1 " ========================================== " --------------------------------------------------------------------- -" netrw#FileUrlEdit: handles editing file://* files {{{2 +" netrw#FileUrlRead: handles reading file://* files {{{2 " Should accept: file://localhost/etc/fstab " file:///etc/fstab " file:///c:/WINDOWS/clock.avi @@ -10404,8 +10161,8 @@ endfun " file://c:/foo.txt " file:///c:/foo.txt " and %XX (where X is [0-9a-fA-F] is converted into a character with the given hexadecimal value -fun! netrw#FileUrlEdit(fname) -" call Dfunc("netrw#FileUrlEdit(fname<".a:fname.">)") +fun! netrw#FileUrlRead(fname) +" call Dfunc("netrw#FileUrlRead(fname<".a:fname.">)") let fname = a:fname if fname =~ '^file://localhost/' " call Decho('converting file://localhost/ -to- file:///','~'.expand("")) @@ -10429,15 +10186,17 @@ fun! netrw#FileUrlEdit(fname) let plainfname= substitute(plainfname,'^/\+\(\a:\)','\1','') endif endif - " call Decho("fname2396<".fname2396.">",'~'.expand("")) " call Decho("plainfname<".plainfname.">",'~'.expand("")) exe "sil doau BufReadPre ".fname2396e - exe 'NetrwKeepj keepalt edit '.plainfname - exe 'sil! NetrwKeepj keepalt bdelete '.fnameescape(a:fname) - + exe 'NetrwKeepj r '.plainfname + exe 'sil! bdelete '.plainfname + exe 'keepalt file! '.plainfname + NetrwKeepj 1d +" call Decho("setl nomod",'~'.expand("")) + setl nomod " call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("")) -" call Dret("netrw#FileUrlEdit") +" call Dret("netrw#FileUrlRead") exe "sil doau BufReadPost ".fname2396e endfun @@ -10455,7 +10214,7 @@ fun! netrw#LocalBrowseCheck(dirname) " call Dfunc("netrw#LocalBrowseCheck(dirname<".a:dirname.">") " call Decho("isdir<".a:dirname."> =".isdirectory(s:NetrwFile(a:dirname)).((exists("s:treeforceredraw")? " treeforceredraw" : "")).'~'.expand("")) " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("")) -" call Dredir("ls!","netrw#LocalBrowseCheck") +" call Dredir("ls!","ls!") " call Decho("tab#".tabpagenr()." win#".winnr()." buf#".bufnr("%")."<".bufname("%")."> line#".line(".")." col#".col(".")." winline#".winline()." wincol#".wincol(),'~'.expand("")) " call Decho("current buffer#".bufnr("%")."<".bufname("%")."> ft=".&ft,'~'.expand("")) @@ -10534,21 +10293,19 @@ fun! s:LocalBrowseRefresh() while itab <= tabpagenr("$") let buftablist = buftablist + tabpagebuflist() let itab = itab + 1 - sil! tabn + tabn endwhile " call Decho("buftablist".string(buftablist),'~'.expand("")) " call Decho("s:netrw_browselist<".(exists("s:netrw_browselist")? string(s:netrw_browselist) : "").">",'~'.expand("")) " GO through all buffers on netrw_browselist (ie. just local-netrw buffers): " | refresh any netrw window " | wipe out any non-displaying netrw buffer - let curwinid = win_getid(winnr()) + let curwin = winnr() let ibl = 0 for ibuf in s:netrw_browselist " call Decho("bufwinnr(".ibuf.") index(buftablist,".ibuf.")=".index(buftablist,ibuf),'~'.expand("")) if bufwinnr(ibuf) == -1 && index(buftablist,ibuf) == -1 " wipe out any non-displaying netrw buffer - " (ibuf not shown in a current window AND - " ibuf not in any tab) " call Decho("wiping buf#".ibuf,"<".bufname(ibuf).">",'~'.expand("")) exe "sil! keepj bd ".fnameescape(ibuf) call remove(s:netrw_browselist,ibl) @@ -10572,8 +10329,8 @@ fun! s:LocalBrowseRefresh() let ibl= ibl + 1 " call Decho("bottom of s:netrw_browselist for loop: ibl=".ibl,'~'.expand("")) endfor -" call Decho("restore window: win_gotoid(".curwinid.")") - call win_gotoid(curwinid) +" call Decho("restore window: exe ".curwin."wincmd w",'~'.expand("")) + exe curwin."wincmd w" let @@= ykeep " call Dret("s:LocalBrowseRefresh") @@ -11029,7 +10786,7 @@ fun! s:NetrwLocalRmFile(path,fname,all) let rmfile= substitute(rmfile,'[\/]$','','e') if all || ok =~# 'y\%[es]' || ok == "" - if v:version < 704 || (v:version == 704 && !has("patch1107")) + if v:version < 704 || !has("patch1109") " " call Decho("1st attempt: system(netrw#WinPath(".g:netrw_localrmdir.') '.s:ShellEscape(rmfile).')','~'.expand("")) call system(netrw#WinPath(g:netrw_localrmdir).' '.s:ShellEscape(rmfile)) " " call Decho("v:shell_error=".v:shell_error,'~'.expand("")) @@ -11065,9 +10822,20 @@ fun! s:NetrwLocalRmFile(path,fname,all) return ok endfun -" ===================================================================== +" --------------------------------------------------------------------- " Support Functions: {{{1 +" --------------------------------------------------------------------- +" s:WinNames: COMBAK {{{2 +fun! s:WinNames(id) + let curwin= winnr() + 1wincmd w +" call Decho("--- Windows By Name --- #".a:id) +" windo call Decho("win#".winnr()."<".expand("%").">") +" call Decho("--- --- --- --- --- ---") + exe curwin."wincmd w" +endfun + " --------------------------------------------------------------------- " netrw#Access: intended to provide access to variable values for netrw's test suite {{{2 " 0: marked file list of current buffer @@ -11081,13 +10849,18 @@ fun! netrw#Access(ilist) endif elseif a:ilist == 1 return s:netrwmftgt - endif endfun " --------------------------------------------------------------------- " netrw#Call: allows user-specified mappings to call internal netrw functions {{{2 fun! netrw#Call(funcname,...) - return call("s:".a:funcname,a:000) +" call Dfunc("netrw#Call(funcname<".a:funcname.">,".string(a:000).")") + if a:0 > 0 + exe "call s:".a:funcname."(".string(a:000).")" + else + exe "call s:".a:funcname."()" + endif +" call Dret("netrw#Call") endfun " --------------------------------------------------------------------- @@ -11196,35 +10969,6 @@ fun! netrw#WinPath(path) return path endfun -" --------------------------------------------------------------------- -" s:NetrwBadd: adds marked files to buffer list or vice versa {{{2 -" cb : bl2mf=0 add marked files to buffer list -" cB : bl2mf=1 use bufferlist to mark files -" (mnemonic: cb = copy (marked files) to buffer list) -fun! s:NetrwBadd(islocal,bl2mf) -" " call Dfunc("s:NetrwBadd(islocal=".a:islocal." mf2bl=".mf2bl.")") - if a:bl2mf - " cB: add buffer list to marked files - redir => bufl - ls - redir END - let bufl = map(split(bufl,"\n"),'substitute(v:val,''^.\{-}"\(.*\)".\{-}$'',''\1'','''')') - for fname in bufl - call s:NetrwMarkFile(a:islocal,fname) - endfor - else - " cb: add marked files to buffer list - for fname in s:netrwmarkfilelist_{bufnr("%")} -" " call Decho("badd ".fname,'~'.expand("")) - exe "badd ".fnameescape(fname) - endfor - let curbufnr = bufnr("%") - let curdir = s:NetrwGetCurdir(a:islocal) - call s:NetrwUnmarkList(curbufnr,curdir) " remove markings from local buffer - endif -" call Dret("s:NetrwBadd") -endfun - " --------------------------------------------------------------------- " s:ComposePath: Appends a new part to a path taking different systems into consideration {{{2 fun! s:ComposePath(base,subdir) @@ -11239,12 +10983,11 @@ fun! s:ComposePath(base,subdir) let ret = a:base.a:subdir endif - " COMBAK: test on windows with changing to root directory: :e C:/ - elseif a:subdir =~ '^\a:[/\\]\([^/\\]\|$\)' && (has("win32") || has("win95") || has("win64") || has("win16")) + elseif a:subdir =~ '^\a:[/\\][^/\\]' && (has("win32") || has("win95") || has("win64") || has("win16")) " call Decho("windows",'~'.expand("")) let ret= a:subdir - elseif a:base =~ '^\a:[/\\]\([^/\\]\|$\)' && (has("win32") || has("win95") || has("win64") || has("win16")) + elseif a:base =~ '^\a:[/\\][^/\\]' && (has("win32") || has("win95") || has("win64") || has("win16")) " call Decho("windows",'~'.expand("")) if a:base =~ '[/\\]$' let ret= a:base.a:subdir @@ -11586,7 +11329,7 @@ endfun " --------------------------------------------------------------------- " s:NetrwEnew: opens a new buffer, passes netrw buffer variables through {{{2 fun! s:NetrwEnew(...) -" call Dfunc("s:NetrwEnew() a:0=".a:0." bufnr($)=".bufnr("$")." expand(%)<".expand("%").">") +" call Dfunc("s:NetrwEnew() a:0=".a:0." bufnr($)=".bufnr("$")) " call Decho("curdir<".((a:0>0)? a:1 : "")."> buf#".bufnr("%")."<".bufname("%").">",'~'.expand("")) " grab a function-local-variable copy of buffer variables @@ -11649,7 +11392,7 @@ fun! s:NetrwEnew(...) nno [ :sil call TreeListMove('[') nno ] :sil call TreeListMove(']') else - call s:NetrwBufRename(b:netrw_curdir) + exe "sil! keepalt file ".fnameescape(b:netrw_curdir) endif endif endif @@ -11660,19 +11403,17 @@ endfun " --------------------------------------------------------------------- " s:NetrwExe: executes a string using "!" {{{2 fun! s:NetrwExe(cmd) -" call Dfunc("s:NetrwExe(a:cmd<".a:cmd.">)") +" call Dfunc("s:NetrwExe(a:cmd)") if has("win32") && &shell !~? 'cmd' && !g:netrw_cygwin -" call Decho("using win32:",expand("")) let savedShell=[&shell,&shellcmdflag,&shellxquote,&shellxescape,&shellquote,&shellpipe,&shellredir,&shellslash] set shell& shellcmdflag& shellxquote& shellxescape& set shellquote& shellpipe& shellredir& shellslash& exe a:cmd let [&shell,&shellcmdflag,&shellxquote,&shellxescape,&shellquote,&shellpipe,&shellredir,&shellslash] = savedShell else -" call Decho("exe ".a:cmd,'~'.expand("")) exe a:cmd endif -" call Dret("s:NetrwExe : v:shell_error=".v:shell_error) +" call Dret("s:NetrwExe") endfun " --------------------------------------------------------------------- @@ -11705,12 +11446,9 @@ endfun " --------------------------------------------------------------------- " s:NetrwLcd: handles changing the (local) directory {{{2 -" Returns: 0=success -" -1=failed fun! s:NetrwLcd(newdir) " call Dfunc("s:NetrwLcd(newdir<".a:newdir.">)") - let err472= 0 try exe 'NetrwKeepj sil lcd '.fnameescape(a:newdir) catch /^Vim\%((\a\+)\)\=:E344/ @@ -11726,10 +11464,6 @@ fun! s:NetrwLcd(newdir) endif endif catch /^Vim\%((\a\+)\)\=:E472/ - let err472= 1 - endtry - - if err472 call netrw#ErrorMsg(s:ERROR,"unable to change directory to <".a:newdir."> (permissions?)",61) if exists("w:netrw_prvdir") let a:newdir= w:netrw_prvdir @@ -11739,13 +11473,12 @@ fun! s:NetrwLcd(newdir) exe "setl ".g:netrw_bufsettings " call Decho(" ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap." (filename<".expand("%")."> win#".winnr()." ft<".&ft.">)",'~'.expand("")) let a:newdir= dirname +" call Dret("s:NetrwBrowse : reusing buffer#".(exists("bufnum")? bufnum : 'N/A')."<".dirname."> getcwd<".getcwd().">") + return endif -" call Dret("s:NetrwBrowse -1 : reusing buffer#".(exists("bufnum")? bufnum : 'N/A')."<".dirname."> getcwd<".getcwd().">") - return -1 - endif + endtry -" call Dret("s:NetrwLcd 0") - return 0 +" call Dret("s:NetrwLcd") endfun " ------------------------------------------------------------------------ @@ -11913,7 +11646,7 @@ endfun " s:SetRexDir() sets up <2-leftmouse> maps (if g:netrw_retmap " is true) and a command, :Rexplore, which call this function. " -" s:netrw_posn is set up by s:NetrwBrowseChgDir() +" s:netrw_nbcd is set up by s:NetrwBrowseChgDir() " " s:rexposn_BUFNR used to save/restore cursor position fun! s:NetrwRexplore(islocal,dirname) @@ -11969,10 +11702,8 @@ fun! s:NetrwRexplore(islocal,dirname) " call Decho("s:rexposn_".bufnr('%')."<".bufname("%")."> doesn't exist",'~'.expand("")) endif - if has("syntax") && exists("g:syntax_on") && g:syntax_on - if exists("s:explore_match") - exe "2match netrwMarkFile /".s:explore_match."/" - endif + if exists("s:explore_match") + exe "2match netrwMarkFile /".s:explore_match."/" endif " call Decho("settings buf#".bufnr("%")."<".bufname("%").">: ".((&l:ma == 0)? "no" : "")."ma ".((&l:mod == 0)? "no" : "")."mod ".((&l:bl == 0)? "no" : "")."bl ".((&l:ro == 0)? "no" : "")."ro fo=".&l:fo,'~'.expand("")) @@ -12000,12 +11731,8 @@ endfun fun! s:SavePosn(posndict) " call Dfunc("s:SavePosn(posndict) curbuf#".bufnr("%")."<".bufname("%").">") - if !exists("a:posndict[bufnr('%')]") - let a:posndict[bufnr("%")]= [] - endif -" call Decho("before push: a:posndict[buf#".bufnr("%")."]=".string(a:posndict[bufnr('%')])) - call add(a:posndict[bufnr("%")],winsaveview()) -" call Decho("after push: a:posndict[buf#".bufnr("%")."]=".string(a:posndict[bufnr('%')])) + let a:posndict[bufnr("%")]= winsaveview() +" call Decho("saving posn: posndict[".bufnr("%")."]=".string(winsaveview()),'~'.expand("")) " call Dret("s:SavePosn posndict") return a:posndict @@ -12015,18 +11742,9 @@ endfun " s:RestorePosn: restores position associated with current buffer using dictionary {{{2 fun! s:RestorePosn(posndict) " call Dfunc("s:RestorePosn(posndict) curbuf#".bufnr("%")."<".bufname("%").">") - if exists("a:posndict") - if has_key(a:posndict,bufnr("%")) -" call Decho("before pop: a:posndict[buf#".bufnr("%")."]=".string(a:posndict[bufnr('%')])) - let posnlen= len(a:posndict[bufnr("%")]) - if posnlen > 0 - let posnlen= posnlen - 1 -" call Decho("restoring posn posndict[".bufnr("%")."][".posnlen."]=".string(a:posndict[bufnr("%")][posnlen]),'~'.expand("")) - call winrestview(a:posndict[bufnr("%")][posnlen]) - call remove(a:posndict[bufnr("%")],posnlen) -" call Decho("after pop: a:posndict[buf#".bufnr("%")."]=".string(a:posndict[bufnr('%')])) - endif - endif + if has_key(a:posndict,bufnr("%")) + call winrestview(a:posndict[bufnr("%")]) +" call Decho("restoring posn: posndict[".bufnr("%")."]=".string(a:posndict[bufnr("%")]),'~'.expand("")) endif " call Dret("s:RestorePosn") endfun @@ -12314,13 +12032,11 @@ fun! s:UserMaps(islocal,funcname) " call Dret("s:UserMaps") endfun -" ========================== +" --------------------------------------------------------------------- " Settings Restoration: {{{1 -" ========================== let &cpo= s:keepcpo unlet s:keepcpo -" =============== +" ------------------------------------------------------------------------ " Modelines: {{{1 -" =============== " vim:ts=8 fdm=marker diff --git a/runtime/autoload/netrwSettings.vim b/runtime/autoload/netrwSettings.vim index 327db6a540..4639909ee8 100644 --- a/runtime/autoload/netrwSettings.vim +++ b/runtime/autoload/netrwSettings.vim @@ -1,7 +1,7 @@ " netrwSettings.vim: makes netrw settings simpler -" Date: Nov 09, 2016 +" Date: Dec 30, 2014 " Maintainer: Charles E Campbell -" Version: 16 +" Version: 15 " Copyright: Copyright (C) 1999-2007 Charles E. Campbell {{{1 " Permission is hereby granted to use and distribute this code, " with or without modifications, provided that this copyright @@ -19,7 +19,7 @@ if exists("g:loaded_netrwSettings") || &cp finish endif -let g:loaded_netrwSettings = "v16" +let g:loaded_netrwSettings = "v15" if v:version < 700 echohl WarningMsg echo "***warning*** this version of netrwSettings needs vim 7.0" @@ -154,13 +154,9 @@ fun! netrwSettings#NetrwSettings() put = 'let g:netrw_list_hide = '.g:netrw_list_hide put = 'let g:netrw_liststyle = '.g:netrw_liststyle put = 'let g:netrw_localcopycmd = '.g:netrw_localcopycmd - put = 'let g:netrw_localcopycmdopt = '.g:netrw_localcopycmdopt put = 'let g:netrw_localmkdir = '.g:netrw_localmkdir - put = 'let g:netrw_localmkdiropt = '.g:netrw_localmkdiropt put = 'let g:netrw_localmovecmd = '.g:netrw_localmovecmd - put = 'let g:netrw_localmovecmdopt = '.g:netrw_localmovecmdopt put = 'let g:netrw_localrmdir = '.g:netrw_localrmdir - put = 'let g:netrw_localrmdiropt = '.g:netrw_localrmdiropt put = 'let g:netrw_maxfilenamelen = '.g:netrw_maxfilenamelen put = 'let g:netrw_menu = '.g:netrw_menu put = 'let g:netrw_mousemaps = '.g:netrw_mousemaps diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt index fd59f967ba..3e19f0b4af 100644 --- a/runtime/doc/pi_netrw.txt +++ b/runtime/doc/pi_netrw.txt @@ -6,7 +6,7 @@ Author: Charles E. Campbell (remove NOSPAM from Campbell's email first) -Copyright: Copyright (C) 2017 Charles E Campbell *netrw-copyright* +Copyright: Copyright (C) 2016 Charles E Campbell *netrw-copyright* The VIM LICENSE applies to the files in this package, including netrw.vim, pi_netrw.txt, netrwFileHandlers.vim, netrwSettings.vim, and syntax/netrw.vim. Like anything else that's free, netrw.vim and its @@ -17,6 +17,7 @@ Copyright: Copyright (C) 2017 Charles E Campbell *netrw-copyright* holder be liable for any damages resulting from the use of this software. Use at your own risk! + *netrw* *dav* *ftp* *netrw-file* *rcp* *scp* *davs* *http* *netrw.vim* *rsync* *sftp* @@ -72,7 +73,7 @@ Copyright: Copyright (C) 2017 Charles E Campbell *netrw-copyright* Improving Browsing..................................|netrw-ssh-hack| Listing Bookmarks And History.......................|netrw-qb| Making A New Directory..............................|netrw-d| - Making The Browsing Directory The Current Directory.|netrw-cd| + Making The Browsing Directory The Current Directory.|netrw-c| Marking Files.......................................|netrw-mf| Unmarking Files.....................................|netrw-mF| Marking Files By Location List......................|netrw-qL| @@ -82,7 +83,6 @@ Copyright: Copyright (C) 2017 Charles E Campbell *netrw-copyright* Marked Files: Arbitrary Shell Command, En Bloc......|netrw-mX| Marked Files: Arbitrary Vim Command.................|netrw-mv| Marked Files: Argument List.........................|netrw-ma| |netrw-mA| - Marked Files: Buffer List...........................|netrw-cb| |netrw-cB| Marked Files: Compression And Decompression.........|netrw-mz| Marked Files: Copying...............................|netrw-mc| Marked Files: Diff..................................|netrw-md| @@ -153,7 +153,7 @@ Windows' ftp doesn't support .netrc; however, one may have in one's .vimrc: > let g:netrw_ftp_cmd= 'c:\Windows\System32\ftp -s:C:\Users\MyUserName\MACHINE' < -Netrw will substitute the host's machine name for "MACHINE" from the URL it is +Netrw will substitute the host's machine name for "MACHINE" from the url it is attempting to open, and so one may specify > userid password @@ -210,7 +210,7 @@ EXTERNAL APPLICATIONS AND PROTOCOLS *netrw-externapp* {{{2 http: g:netrw_http_cmd = "fetch" elseif fetch is available http: *g:netrw_http_put_cmd* = "curl -T" rcp: *g:netrw_rcp_cmd* = "rcp" - rsync: *g:netrw_rsync_cmd* = "rsync" (see |g:netrw_rsync_sep|) + rsync: *g:netrw_rsync_cmd* = "rsync -a" scp: *g:netrw_scp_cmd* = "scp -q" sftp: *g:netrw_sftp_cmd* = "sftp" file: *g:netrw_file_cmd* = "elinks" or "links" @@ -221,7 +221,7 @@ EXTERNAL APPLICATIONS AND PROTOCOLS *netrw-externapp* {{{2 elinks : "-source >" links : "-dump >" - curl : "-L -o" + curl : "-o" wget : "-q -O" fetch : "-o" < @@ -236,7 +236,7 @@ EXTERNAL APPLICATIONS AND PROTOCOLS *netrw-externapp* {{{2 READING *netrw-read* *netrw-nread* {{{2 - Generally, one may just use the URL notation with a normal editing + Generally, one may just use the url notation with a normal editing command, such as > :e ftp://[user@]machine/path @@ -258,7 +258,7 @@ READING *netrw-read* *netrw-nread* {{{2 WRITING *netrw-write* *netrw-nwrite* {{{2 - One may just use the URL notation with a normal file writing + One may just use the url notation with a normal file writing command, such as > :w ftp://[user@]machine/path @@ -279,7 +279,7 @@ WRITING *netrw-write* *netrw-nwrite* {{{2 SOURCING *netrw-source* {{{2 - One may just use the URL notation with the normal file sourcing + One may just use the url notation with the normal file sourcing command, such as > :so ftp://[user@]machine/path @@ -477,7 +477,7 @@ file using root-relative paths, use the full path: ============================================================================== 4. Network-Oriented File Transfer *netrw-xfer* {{{1 -Network-oriented file transfer under Vim is implemented by a vim script +Network-oriented file transfer under Vim is implemented by a VimL-based script () using plugin techniques. It currently supports both reading and writing across networks using rcp, scp, ftp or ftp+<.netrc>, scp, fetch, dav/cadaver, rsync, or sftp. @@ -530,7 +530,7 @@ variable (ex. scp uses the variable g:netrw_scp_cmd, which is defaulted to let g:netrw_sftp_cmd= '"c:\Program Files\PuTTY\psftp.exe"' < (note: it has been reported that windows 7 with putty v0.6's "-batch" option - doesn't work, so its best to leave it off for that system) + doesn't work, so it's best to leave it off for that system) See |netrw-p8| for more about putty, pscp, psftp, etc. @@ -732,11 +732,11 @@ such as netrw. The usual read/write commands are supported. There are also a few additional commands available. Often you won't need to use Nwrite or Nread as shown in |netrw-transparent| (ie. simply use > - :e URL - :r URL - :w URL + :e url + :r url + :w url instead, as appropriate) -- see |netrw-urls|. In the explanations -below, a {netfile} is a URL to a remote file. +below, a {netfile} is an url to a remote file. *:Nwrite* *:Nw* :[range]Nw[rite] Write the specified lines to the current @@ -866,11 +866,9 @@ variables listed below, and may be modified by the user. g:netrw_http_cmd var ="fetch -o" if fetch is available g:netrw_http_cmd var ="wget -O" else if wget is available g:netrw_http_put_cmd var ="curl -T" - |g:netrw_list_cmd| var ="ssh USEPORT HOSTNAME ls -Fa" + |g:netrw_list_cmd| var ="ssh USEPORT HOSTNAME ls -Fa" g:netrw_rcp_cmd var ="rcp" - g:netrw_rsync_cmd var ="rsync" - *g:netrw_rsync_sep* var ="/" used to separate the hostname - from the file spec + g:netrw_rsync_cmd var ="rsync -a" g:netrw_scp_cmd var ="scp -q" g:netrw_sftp_cmd var ="sftp" > ------------------------------------------------------------------------- @@ -1007,7 +1005,7 @@ where [protocol] is typically scp or ftp. As an example, try: > vim ftp://ftp.home.vim.org/pub/vim/ < For local directories, the trailing slash is not required. Again, because it's -easy to miss: to browse remote directories, the URL must terminate with a +easy to miss: to browse remote directories, the url must terminate with a slash! If you'd like to avoid entering the password repeatedly for remote directory @@ -1077,9 +1075,9 @@ QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2 Browse using a gvim server |netrw-ctrl-r| Shrink/expand a netrw/explore window |netrw-c-tab| - Makes Netrw go up one directory |netrw--| - a Cycles between normal display, |netrw-a| + a Toggles between normal display, |netrw-a| hiding (suppress display of files matching g:netrw_list_hide) - and showing (display only files which match g:netrw_list_hide) + showing (display only files which match g:netrw_list_hide) c Make browsing directory the current directory |netrw-c| C Setting the editing window |netrw-C| d Make a directory |netrw-d| @@ -1090,7 +1088,6 @@ QUICK REFERENCE: MAPS *netrw-browse-maps* {{{2 gh Quick hide/unhide of dot-files |netrw-gh| gn Make top of tree the directory below the cursor |netrw-gn| i Cycle between thin, long, wide, and tree listings |netrw-i| - I Toggle the displaying of the banner |netrw-I| mb Bookmark current directory |netrw-mb| mc Copy marked files to marked-file target directory |netrw-mc| md Apply diff to marked files (up to 3) |netrw-md| @@ -1170,26 +1167,25 @@ QUICK REFERENCE: COMMANDS *netrw-explore-cmds* *netrw-browse-cmds* {{{2 BANNER DISPLAY *netrw-I* -One may toggle the displaying of the banner by pressing "I". +One may toggle the banner display on and off by pressing "I". Also See: |g:netrw_banner| -BOOKMARKING A DIRECTORY *netrw-mb* *netrw-bookmark* *netrw-bookmarks* {{{2 +BOOKMARKING A DIRECTORY *netrw-mb* *netrw-bookmark* *netrw-bookmarks* {{{2 One may easily "bookmark" the currently browsed directory by using > mb < *.netrwbook* -Bookmarks are retained in between sessions of vim in a file called .netrwbook -as a |List|, which is typically stored in the first directory on the user's -'|runtimepath|'; entries are kept in sorted order. +Bookmarks are retained in between sessions in a $HOME/.netrwbook file, and are +kept in sorted order. If there are marked files and/or directories, mb will add them to the bookmark list. - *netrw-:NetrwMB* +*netrw-:NetrwMB* Addtionally, one may use :NetrwMB to bookmark files or directories. > :NetrwMB[!] [files/directories] @@ -1208,7 +1204,7 @@ The :NetrwMB command is available outside of netrw buffers (once netrw has been invoked in the session). The file ".netrwbook" holds bookmarks when netrw (and vim) is not active. By -default, its stored on the first directory on the user's |'runtimepath'|. +default, it's stored on the first directory on the user's |'runtimepath'|. Related Topics: |netrw-gb| how to return (go) to a bookmark @@ -1420,20 +1416,20 @@ Related Topics: CHANGING TO A PREDECESSOR DIRECTORY *netrw-u* *netrw-updir* {{{2 -Every time you change to a new directory (new for the current session), netrw -will save the directory in a recently-visited directory history list (unless -|g:netrw_dirhistmax| is zero; by default, it holds ten entries). With the "u" -map, one can change to an earlier directory (predecessor). To do the -opposite, see |netrw-U|. +Every time you change to a new directory (new for the current session), +netrw will save the directory in a recently-visited directory history +list (unless |g:netrw_dirhistmax| is zero; by default, it's ten). With the +"u" map, one can change to an earlier directory (predecessor). To do +the opposite, see |netrw-U|. -The "u" map also accepts counts to go back in the history several slots. For -your convenience, qb (see |netrw-qb|) lists the history number which may be -used in that count. +The "u" map also accepts counts to go back in the history several slots. +For your convenience, qb (see |netrw-qb|) lists the history number which may +be used in that count. *.netrwhist* See |g:netrw_dirhistmax| for how to control the quantity of history stack slots. The file ".netrwhist" holds history when netrw (and vim) is not -active. By default, its stored on the first directory on the user's +active. By default, it's stored on the first directory on the user's |'runtimepath'|. Related Topics: @@ -1469,10 +1465,10 @@ changing the top of the tree listing. NETRW CLEAN *netrw-clean* *:NetrwClean* {{{2 -With :NetrwClean one may easily remove netrw from one's home directory; +With NetrwClean one may easily remove netrw from one's home directory; more precisely, from the first directory on your |'runtimepath'|. -With :NetrwClean!, netrw will attempt to remove netrw from all directories on +With NetrwClean!, netrw will attempt to remove netrw from all directories on your |'runtimepath'|. Of course, you have to have write/delete permissions correct to do this. @@ -1504,7 +1500,7 @@ Netrw determines which special handler by the following method: If g:netrw_browsex_viewer == '-', then netrwFileHandlers#Invoke() will be used instead (see |netrw_filehandler|). - * for Windows 32 or 64, the URL and FileProtocolHandler dlls are used. + * for Windows 32 or 64, the url and FileProtocolHandler dlls are used. * for Gnome (with gnome-open): gnome-open is used. * for KDE (with kfmclient) : kfmclient is used * for Mac OS X : open is used. @@ -1520,10 +1516,9 @@ will apply a special handler to it (like "x" works when in a netrw buffer). One may also use visual mode (see |visual-start|) to select the text that the special handler will use. Normally gx uses expand("") to pick up the text under the cursor; one may change what |expand()| uses via the -|g:netrw_gx| variable (options include "", ""). Note that -expand("") depends on the |'isfname'| setting. Alternatively, one may -select the text to be used by gx by making a visual selection (see -|visual-block|) and then pressing gx. +|g:netrw_gx| variable. Alternatively, one may select the text to be used by +gx via first making a visual selection (see |visual-block|) or by changing +the |'isfname'| option (which is global, so netrw doesn't modify it). Associated setting variables: |g:netrw_gx| control how gx picks up the text under the cursor @@ -1615,11 +1610,6 @@ A further approach is to delete files which match a pattern. This will cause the matching files to be marked. Then, press "D". -If your vim has 7.4 with patch#1107, then |g:netrw_localrmdir| no longer -is used to remove directories; instead, vim's |delete()| is used with -the "d" option. Please note that only empty directories may be deleted -with the "D" mapping. Regular files are deleted with |delete()|, too. - The |g:netrw_rm_cmd|, |g:netrw_rmf_cmd|, and |g:netrw_rmdir_cmd| variables are used to control the attempts to remove remote files and directories. The g:netrw_rm_cmd is used with files, and its default value is: @@ -1683,18 +1673,17 @@ DIRECTORY EXPLORATION COMMANDS {{{2 The [N] specifies a |g:netrw_winsize| just for the new :Lexplore window. - Those who like this method often also like tree style displays; + Those who like this method often also often like tree style displays; see |g:netrw_liststyle|. -:[N]Lexplore! [dir] is similar to :Lexplore, except that the full-height - Explorer window will open on the right hand side and an - uninitialized |g:netrw_chgwin| will be set to 1 (eg. edits will - preferentially occur in the leftmost window). - Also see: |netrw-C| |g:netrw_browse_split| |g:netrw_wiw| |netrw-p| |netrw-P| |g:netrw_chgwin| |netrw-c-tab| |g:netrw_winsize| +:[N]Lexplore! is like :Lexplore, except that the full-height Explorer window + will open on the right hand side and an uninitialized |g:netrw_chgwin| + will be set to 1. + *netrw-:Sexplore* :[N]Sexplore will always split the window before invoking the local-directory browser. As with Explore, the splitting is normally done @@ -1856,11 +1845,9 @@ EXECUTING FILE UNDER CURSOR VIA SYSTEM() *netrw-X* {{{2 Pressing X while the cursor is atop an executable file will yield a prompt using the filename asking for any arguments. Upon pressing a [return], netrw -will then call |system()| with that command and arguments. The result will be -displayed by |:echomsg|, and so |:messages| will repeat display of the result. -Ansi escape sequences will be stripped out. - -See |cmdline-window| for directions for more on how to edit the arguments. +will then call |system()| with that command and arguments. The result will +be displayed by |:echomsg|, and so |:messages| will repeat display of the +result. Ansi escape sequences will be stripped out. FORCING TREATMENT AS A FILE OR DIRECTORY *netrw-gd* *netrw-gf* {{{2 @@ -2083,7 +2070,7 @@ Associated setting variables: |g:netrw_localmkdir| |g:netrw_mkdir_cmd| |g:netrw_remote_mkdir| |netrw-%| -MAKING THE BROWSING DIRECTORY THE CURRENT DIRECTORY *netrw-cd* {{{2 +MAKING THE BROWSING DIRECTORY THE CURRENT DIRECTORY *netrw-c* {{{2 By default, |g:netrw_keepdir| is 1. This setting means that the current directory will not track the browsing directory. (done for backwards @@ -2098,9 +2085,6 @@ the two directories the same, use the "c" map (just type c). That map will set Vim's notion of the current directory to netrw's current browsing directory. -*netrw-c* : This map's name has been changed from "c" to cd (see |netrw-cd|). - This change was done to allow for |netrw-cb| and |netrw-cB| maps. - Associated setting variable: |g:netrw_keepdir| MARKING FILES *netrw-:MF* *netrw-mf* {{{2 @@ -2145,7 +2129,6 @@ The following netrw maps make use of marked files: |netrw-mg| Apply vimgrep to marked files |netrw-mm| Move marked files to target |netrw-mp| Print marked files - |netrw-ms| Netrw will source marked files |netrw-mt| Set target for |netrw-mm| and |netrw-mc| |netrw-mT| Generate tags using marked files |netrw-mv| Apply vim command to marked files @@ -2220,9 +2203,6 @@ converts "*" into ".*" (see |regexp|) and marks files based on that. In the future I may make it possible to use |regexp|s instead of glob()-style expressions (yet-another-option). -See |cmdline-window| for directions on more on how to edit the regular -expression. - MARKED FILES, ARBITRARY VIM COMMAND *netrw-mv* {{{2 (See |netrw-mf| and |netrw-mr| for how to mark files) @@ -2236,9 +2216,8 @@ the local marked file list, individually: * run vim command * sil! keepalt wq! -A prompt, "Enter vim command: ", will be issued to elicit the vim command you -wish used. See |cmdline-window| for directions for more on how to edit the -command. +A prompt, "Enter vim command: ", will be issued to elicit the vim command +you wish used. MARKED FILES, ARBITRARY SHELL COMMAND *netrw-mx* {{{2 @@ -2289,17 +2268,7 @@ MARKED FILES: ARGUMENT LIST *netrw-ma* *netrw-mA* Using ma, one moves filenames from the marked file list to the argument list. Using mA, one moves filenames from the argument list to the marked file list. -See Also: |netrw-cb| |netrw-cB| |netrw-qF| |argument-list| |:args| - - -MARKED FILES: BUFFER LIST *netrw-cb* *netrw-cB* - (See |netrw-mf| and |netrw-mr| for how to mark files) - (uses the global marked-file list) - -Using cb, one moves filenames from the marked file list to the buffer list. -Using cB, one copies filenames from the buffer list to the marked file list. - -See Also: |netrw-ma| |netrw-mA| |netrw-qF| |buffer-list| |:buffers| +See Also: |netrw-qF| |argument-list| |:args| MARKED FILES: COMPRESSION AND DECOMPRESSION *netrw-mz* {{{2 @@ -2335,8 +2304,8 @@ One may also copy directories and their contents (local only) to a target directory. Associated setting variables: - |g:netrw_localcopycmd| |g:netrw_localcopycmdopt| - |g:netrw_localcopydircmd| |g:netrw_localcopydircmdopt| + |g:netrw_localcopycmd| + |g:netrw_localcopydircmd| |g:netrw_ssh_cmd| MARKED FILES: DIFF *netrw-md* {{{2 @@ -2481,8 +2450,8 @@ When a remote set of files are tagged, the resulting tags file is "obtained"; ie. a copy is transferred to the local system's directory. The now local tags file is then modified so that one may use it through the network. The modification made concerns the names of the files in the tags; each filename is -preceded by the netrw-compatible URL used to obtain it. When one subsequently -uses one of the go to tag actions (|tags|), the URL will be used by netrw to +preceded by the netrw-compatible url used to obtain it. When one subsequently +uses one of the go to tag actions (|tags|), the url will be used by netrw to edit the desired file and go to the tag. Associated setting variables: |g:netrw_ctags| |g:netrw_ssh_cmd| @@ -2584,8 +2553,8 @@ your browsing preferences. (see also: |netrw-settings|) editing. It will also use the specified tab and window numbers to perform editing (see |clientserver|, |netrw-ctrl-r|) - This option does not affect the production of - |:Lexplore| windows. + This option does not affect |:Lexplore| + windows. Related topics: |g:netrw_alto| |g:netrw_altv| @@ -2744,7 +2713,6 @@ your browsing preferences. (see also: |netrw-settings|) *g:netrw_home* The home directory for where bookmarks and history are saved (as .netrwbook and .netrwhist). - Netrw uses |expand()|on the string. default: the first directory on the |'runtimepath'| @@ -2765,7 +2733,7 @@ your browsing preferences. (see also: |netrw-settings|) default: (if ssh is executable) "ssh HOSTNAME ls -FLa" - *g:netrw_list_cmd_options* If this variable exists, then its contents are + *g:netrw_list_cmd_options* If this variable exists, then its contents are appended to the g:netrw_list_cmd. For example, use "2>/dev/null" to get rid of banner messages on unix systems. @@ -2791,52 +2759,26 @@ your browsing preferences. (see also: |netrw-settings|) let g:netrw_list_hide= netrw_gitignore#Hide().'.*\.swp$' default: "" - *g:netrw_localcopycmd* ="cp" Linux/Unix/MacOS/Cygwin - =expand("$COMSPEC") Windows + *g:netrw_localcopycmd* ="cp" Linux/Unix/MacOS/Cygwin + ="copy" Windows Copies marked files (|netrw-mf|) to target directory (|netrw-mt|, |netrw-mc|) - *g:netrw_localcopycmdopt* ='' Linux/Unix/MacOS/Cygwin - =' \c copy' Windows - Options for the |g:netrw_localcopycmd| - - *g:netrw_localcopydircmd* ="cp" Linux/Unix/MacOS/Cygwin - =expand("$COMSPEC") Windows + *g:netrw_localcopydircmd* ="cp -R" Linux/Unix/MacOS/Cygwin + ="xcopy /e /c /h/ /i /k" Windows Copies directories to target directory. (|netrw-mc|, |netrw-mt|) - *g:netrw_localcopydircmdopt* =" -R" Linux/Unix/MacOS/Cygwin - =" /c xcopy /e /c /h/ /i /k" Windows - Options for |g:netrw_localcopydircmd| + *g:netrw_localmkdir* command for making a local directory + default: "mkdir" - *g:netrw_localmkdir* ="mkdir" Linux/Unix/MacOS/Cygwin - =expand("$COMSPEC") Windows - command for making a local directory - - *g:netrw_localmkdiropt* ="" Linux/Unix/MacOS/Cygwin - =" /c mkdir" Windows - Options for |g:netrw_localmkdir| - - *g:netrw_localmovecmd* ="mv" Linux/Unix/MacOS/Cygwin - =expand("$COMSPEC") Windows + *g:netrw_localmovecmd* ="mv" Linux/Unix/MacOS/Cygwin + ="move" Windows Moves marked files (|netrw-mf|) to target directory (|netrw-mt|, |netrw-mm|) - *g:netrw_localmovecmdopt* ="" Linux/Unix/MacOS/Cygwin - =" /c move" Windows - Options for |g:netrw_localmovecmd| - - *g:netrw_localrmdir* ="rmdir" Linux/Unix/MacOS/Cygwin - =expand("$COMSPEC") Windows - Remove directory command (rmdir) - This variable is only used if your vim is - earlier than 7.4 or if your vim doesn't - have patch#1107. Otherwise, |delete()| - is used with the "d" option. - - *g:netrw_localrmdiropt* ="" Linux/Unix/MacOS/Cygwin - =" /c rmdir" Windows - Options for |g:netrw_localrmdir| + *g:netrw_localrmdir* remove directory command (rmdir) + default: "rmdir" *g:netrw_maxfilenamelen* =32 by default, selected so as to make long listings fit on 80 column displays. @@ -2949,23 +2891,17 @@ your browsing preferences. (see also: |netrw-settings|) netrwTilde : * netrwTmp : tmp* *tmp - In addition, those groups mentioned in - |'suffixes'| are also added to the special - file highlighting group. - These syntax highlighting groups are linked - to netrwGray or Folded by default - (see |hl-Folded|), but one may put lines like > + These syntax highlighting groups are linked + to Folded or DiffChange by default + (see |hl-Folded| and |hl-DiffChange|), but + one may put lines like > hi link netrwCompress Visual < into one's <.vimrc> to use one's own preferences. Alternatively, one may - put such specifications into > - .vim/after/syntax/netrw.vim. -< The netrwGray highlighting is set up by - netrw when > - * netrwGray has not been previously - defined - * the gui is running -< As an example, I myself use a dark-background + put such specifications into + .vim/after/syntax/netrw.vim. + + As an example, I myself use a dark-background colorscheme with the following in .vim/after/syntax/netrw.vim: > @@ -3200,8 +3136,8 @@ If there are no marked files: (see |netrw-mf|) Renaming files and directories involves moving the cursor to the file/directory to be moved (renamed) and pressing "R". You will then be - queried for what you want the file/directory to be renamed to. You may - select a range of lines with the "V" command (visual selection), and then + queried for what you want the file/directory to be renamed to You may select + a range of lines with the "V" command (visual selection), and then press "R"; you will be queried for each file as to what you want it renamed to. @@ -3233,20 +3169,16 @@ If there are marked files: (see |netrw-mf|) Note that moving files is a dangerous operation; copies are safer. That's because a "move" for remote files is actually a copy + delete -- and if - the copy fails and the delete succeeds you may lose the file. + the copy fails and the delete does not, you may lose the file. Use at your own risk. -The *g:netrw_rename_cmd* variable is used to implement remote renaming. By -default its value is: > +The g:netrw_rename_cmd variable is used to implement remote renaming. By +default its value is: ssh HOSTNAME mv -< -One may rename a block of files and directories by selecting them with -V (|linewise-visual|) when using thin style. -See |cmdline-editing| for more on how to edit the command line; in particular, -you'll find (initiates cmdline window editing) and (uses the -command line under the cursor) useful in conjunction with the R command. +One may rename a block of files and directories by selecting them with +V (|linewise-visual|) when using thin style SELECTING SORTING STYLE *netrw-s* *netrw-sort* {{{2 @@ -3267,8 +3199,8 @@ number. Subsequent selection of a file to edit (|netrw-cr|) will use that window. * C : by itself, will select the current window holding a netrw buffer - for subsequent editing via |netrw-cr|. The C mapping is only available - while in netrw buffers. + for editing via |netrw-cr|. The C mapping is only available while in + netrw buffers. * [count]C : the count will be used as the window number to be used for subsequent editing via |netrw-cr|. @@ -3281,7 +3213,7 @@ window. Using > let g:netrw_chgwin= -1 will restore the default editing behavior -(ie. subsequent editing will use the current window). +(ie. editing will use the current window). Related topics: |netrw-cr| |g:netrw_browse_split| Associated setting variables: |g:netrw_chgwin| @@ -3302,9 +3234,9 @@ only if your terminal supports differentiating from a plain * Else bring up a |:Lexplore| window -If |g:netrw_usetab| exists and is zero, or if there is a pre-existing mapping +If |g:netrw_usetab| exists or is zero, or if there is a pre-existing mapping for , then the will not be mapped. One may map something other -than a , too: (but you'll still need to have had |g:netrw_usetab| set). > +than a , too: (but you'll still need to have had g:netrw_usetab set) > nmap (whatever) NetrwShrink < @@ -3337,10 +3269,9 @@ The user function is passed one argument; it resembles > fun! ExampleUserMapFunc(islocal) < -where a:islocal is 1 if its a local-directory system call or 0 when +where a:islocal is 1 if it's a local-directory system call or 0 when remote-directory system call. - *netrw-call* *netrw-expose* *netrw-modify* Use netrw#Expose("varname") to access netrw-internal (script-local) variables. Use netrw#Modify("varname",newvalue) to change netrw-internal variables. @@ -3662,7 +3593,7 @@ Example: Clear netrw's marked file list via a mapping on gu > *netrw-p16* P16. When editing remote files (ex. :e ftp://hostname/path/file), - under Windows I get an |E303| message complaining that its unable + under Windows I get an |E303| message complaining that it's unable to open a swap file. (romainl) It looks like you are starting Vim from a protected @@ -3716,7 +3647,7 @@ Example: Clear netrw's marked file list via a mapping on gu > P21. I've made a directory (or file) with an accented character, but netrw isn't letting me enter that directory/read that file: - Its likely that the shell or o/s is using a different encoding + It's likely that the shell or o/s is using a different encoding than you have vim (netrw) using. A patch to vim supporting "systemencoding" may address this issue in the future; for now, just have netrw use the proper encoding. For example: > @@ -3832,102 +3763,6 @@ netrw: ============================================================================== 12. History *netrw-history* {{{1 - v162: Sep 19, 2016 * (haya14busa) pointed out two syntax errors - with a patch; these are now fixed. - Oct 26, 2016 * I started using mate-terminal and found that - x and gx (|netrw-x| and |netrw-gx|) were no - longer working. Fixed (using atril when - $DESKTOP_SESSION is "mate"). - Nov 04, 2016 * (Martin Vuille) pointed out that @+ was - being restored with keepregstar rather than - keepregplus. - Nov 09, 2016 * Broke apart the command from the options, - mostly for Windows. Introduced new netrw - settings: |g:netrw_localcopycmdopt| - |g:netrw_localcopydircmdopt| |g:netrw_localmkdiropt| - |g:netrw_localmovecmdopt| |g:netrw_localrmdiropt| - Nov 21, 2016 * (mattn) provided a patch for preview; swapped - winwidth() with winheight() - Nov 22, 2016 * (glacambre) reported that files containing - spaces weren't being obtained properly via - scp. Fix: apparently using single quotes - such as with 'file name' wasn't enough; the - spaces inside the quotes also had to be - escaped (ie. 'file\ name'). - * Also fixed obtain (|netrw-O|) to be able to - obtain files with spaces in their names - Dec 20, 2016 * (xc1427) Reported that using "I" (|netrw-I|) - when atop "Hiding" in the banner also caused - the active-banner hiding control to occur - Jan 03, 2017 * (Enno Nagel) reported that attempting to - apply netrw to a directory that was without - read permission caused a syntax error. - Jan 13, 2017 * (Ingo Karkat) provided a patch which makes - using netrw#Call() better. Now returns - value of internal routines return, for example. - Jan 13, 2017 * (Ingo Karkat) changed netrw#FileUrlRead to - use |:edit| instead of |:read|. I also - changed the routine name to netrw#FileUrlEdit. - Jan 16, 2017 * (Sayem) reported a problem where :Lexplore - could generate a new listing buffer and - window instead of toggling the netrw display. - Unfortunately, the directions for eliciting - the problem weren't complete, so I may or - may not have fixed that issue. - Feb 06, 2017 * Implemented cb and cB. Changed "c" to "cd". - (see |netrw-cb|, |netrw-cB|, and |netrw-cd|) - Mar 21, 2017 * previously, netrw would specify (safe) settings - even when the setting was already safe for - netrw. Netrw now attempts to leave such - already-netrw-safe settings alone. - (affects s:NetrwOptionRestore() and - s:NetrwSafeOptions(); also introduced - s:NetrwRestoreSetting()) - Jun 26, 2017 * (Christian Brabandt) provided a patch to - allow curl to follow redirects (ie. -L - option) - Jun 26, 2017 * (Callum Howard) reported a problem with - :Lexpore not removing the Lexplore window - after a change-directory - Aug 30, 2017 * (Ingo Karkat) one cannot switch to the - previously edited file (e.g. with CTRL-^) - after editing a file:// URL. Patch to - have a "keepalt" included. - Oct 17, 2017 * (Adam Faryna) reported that gn (|netrw-gn|) - did not work on directories in the current - tree - v157: Apr 20, 2016 * (Nicola) had set up a "nmap ..." with - a function that returned a 0 while silently - invoking a shell command. The shell command - activated a ShellCmdPost event which in turn - called s:LocalBrowseRefresh(). That looks - over all netrw buffers for changes needing - refreshes. However, inside a |:map-|, - tab and window changes are disallowed. Fixed. - (affects netrw's s:LocalBrowseRefresh()) - * |g:netrw_localrmdir| not used any more, but - the relevant patch that causes |delete()| to - take over was #1107 (not #1109). - * |expand()| is now used on |g:netrw_home|; - consequently, g:netrw_home may now use - environment variables - * s:NetrwLeftmouse and s:NetrwCLeftmouse will - return without doing anything if invoked - when inside a non-netrw window - Jun 15, 2016 * gx now calls netrw#GX() which returns - the word under the cursor. The new - wrinkle: if one is in a netrw buffer, - then netrw's s:NetrwGetWord(). - Jun 22, 2016 * Netrw was executing all its associated - Filetype commands silently; I'm going - to try doing that "noisily" and see if - folks have a problem with that. - Aug 12, 2016 * Changed order of tool selection for - handling http://... viewing. - (Nikolay Aleksandrovich Pavlov) - Aug 21, 2016 * Included hiding/showing/all for tree - listings - * Fixed refresh (^L) for tree listings v156: Feb 18, 2016 * Changed =~ to =~# where appropriate Feb 23, 2016 * s:ComposePath(base,subdir) now uses fnameescape() on the base portion @@ -3959,9 +3794,9 @@ netrw: tell me how they're useful and should be retained? Nov 20, 2015 * Added |netrw-ma| and |netrw-mA| support - Nov 20, 2015 * gx (|netrw-gx|) on a URL downloaded the + Nov 20, 2015 * gx (|netrw-gx|) on an url downloaded the file in addition to simply bringing up the - URL in a browser. Fixed. + url in a browser. Fixed. Nov 23, 2015 * Added |g:netrw_sizestyle| support Nov 27, 2015 * Inserted a lot of s into various netrw maps. diff --git a/runtime/plugin/netrwPlugin.vim b/runtime/plugin/netrwPlugin.vim index f986b1cd1d..28e1c3ecf8 100644 --- a/runtime/plugin/netrwPlugin.vim +++ b/runtime/plugin/netrwPlugin.vim @@ -20,7 +20,7 @@ if &cp || exists("g:loaded_netrwPlugin") finish endif -let g:loaded_netrwPlugin = "v162" +let g:loaded_netrwPlugin = "v156" let s:keepcpo = &cpo set cpo&vim "DechoRemOn @@ -42,8 +42,8 @@ augroup END " Network Browsing Reading Writing: {{{2 augroup Network au! - au BufReadCmd file://* call netrw#FileUrlEdit(expand("")) - au BufReadCmd ftp://*,rcp://*,scp://*,http://*,https://*,dav://*,davs://*,rsync://*,sftp://* exe "sil doau BufReadPre ".fnameescape(expand(""))|call netrw#Nread(2,expand(""))|exe "sil doau BufReadPost ".fnameescape(expand("")) + au BufReadCmd file://* call netrw#FileUrlRead(expand("")) + au BufReadCmd ftp://*,rcp://*,scp://*,http://*,file://*,https://*,dav://*,davs://*,rsync://*,sftp://* exe "sil doau BufReadPre ".fnameescape(expand(""))|call netrw#Nread(2,expand(""))|exe "sil doau BufReadPost ".fnameescape(expand("")) au FileReadCmd ftp://*,rcp://*,scp://*,http://*,file://*,https://*,dav://*,davs://*,rsync://*,sftp://* exe "sil doau FileReadPre ".fnameescape(expand(""))|call netrw#Nread(1,expand(""))|exe "sil doau FileReadPost ".fnameescape(expand("")) au BufWriteCmd ftp://*,rcp://*,scp://*,http://*,file://*,dav://*,davs://*,rsync://*,sftp://* exe "sil doau BufWritePre ".fnameescape(expand(""))|exe 'Nwrite '.fnameescape(expand(""))|exe "sil doau BufWritePost ".fnameescape(expand("")) au FileWriteCmd ftp://*,rcp://*,scp://*,http://*,file://*,dav://*,davs://*,rsync://*,sftp://* exe "sil doau FileWritePre ".fnameescape(expand(""))|exe "'[,']".'Nwrite '.fnameescape(expand(""))|exe "sil doau FileWritePost ".fnameescape(expand("")) @@ -59,7 +59,7 @@ com! -count=1 -nargs=* Nread let s:svpos= winsaveview()call netrw#NetRead( com! -range=% -nargs=* Nwrite let s:svpos= winsaveview(),call netrw#NetWrite()call winrestview(s:svpos) com! -nargs=* NetUserPass call NetUserPass() com! -nargs=* Nsource let s:svpos= winsaveview()call netrw#NetSource()call winrestview(s:svpos) -com! -nargs=? Ntree call netrw#SetTreetop(1,) +com! -nargs=? Ntree call netrw#SetTreetop() " Commands: :Explore, :Sexplore, Hexplore, Vexplore, Lexplore {{{2 com! -nargs=* -bar -bang -count=0 -complete=dir Explore call netrw#Explore(,0,0+0,) @@ -81,7 +81,7 @@ if !exists("g:netrw_nogx") if !hasmapto('NetrwBrowseX') nmap gx NetrwBrowseX endif - nno NetrwBrowseX :call netrw#BrowseX(netrw#GX(),netrw#CheckIfRemote(netrw#GX())) + nno NetrwBrowseX :call netrw#BrowseX(expand((exists("g:netrw_gx")? g:netrw_gx : '')),netrw#CheckIfRemote()) endif if maparg('gx','v') == "" if !hasmapto('NetrwBrowseXVis') @@ -129,15 +129,19 @@ fun! s:LocalBrowse(dirname) elseif isdirectory(a:dirname) " call Decho("(LocalBrowse) dirname<".a:dirname."> ft=".&ft." (isdirectory, not amiga)") " call Dredir("LocalBrowse ft last set: ","verbose set ft") +" call Decho("(s:LocalBrowse) COMBAK#23: buf#".bufnr("%")." file<".expand("%")."> line#".line(".")." col#".col(".")) sil! call netrw#LocalBrowseCheck(a:dirname) +" call Decho("(s:LocalBrowse) COMBAK#24: buf#".bufnr("%")." file<".expand("%")."> line#".line(".")." col#".col(".")) if exists("w:netrw_bannercnt") && line('.') < w:netrw_bannercnt exe w:netrw_bannercnt +" call Decho("(s:LocalBrowse) COMBAK#25: buf#".bufnr("%")." file<".expand("%")."> line#".line(".")." col#".col(".")) endif else " not a directory, ignore it " call Decho("(LocalBrowse) dirname<".a:dirname."> not a directory, ignoring...") endif +" call Decho("(s:LocalBrowse) COMBAK#26: buf#".bufnr("%")." file<".expand("%")."> line#".line(".")." col#".col(".")) " call Dret("s:LocalBrowse") endfun diff --git a/runtime/syntax/netrw.vim b/runtime/syntax/netrw.vim index c4d3cf5fda..3d3aa993bd 100644 --- a/runtime/syntax/netrw.vim +++ b/runtime/syntax/netrw.vim @@ -1,8 +1,11 @@ -" Language : Netrw Listing Syntax +" Language : Netrw Remote-Directory Listing Syntax " Maintainer : Charles E. Campbell -" Last change: Oct 31, 2016 -" Version : 20 NOT RELEASED +" Last change: Oct 06, 2014 +" Version : 19 " --------------------------------------------------------------------- + +" Syntax Clearing: {{{1 +" quit when a syntax file was already loaded if exists("b:current_syntax") finish endif @@ -52,30 +55,24 @@ syn match netrwLink "-->" contained skipwhite " ----------------------------- " Special filetype highlighting {{{1 " ----------------------------- -if exists("g:netrw_special_syntax") && g:netrw_special_syntax - if exists("+suffixes") && &suffixes != "" - let suflist= join(split(&suffixes,',')) - let suflist= escape(substitute(suflist," ",'\\|','g'),'.~') - exe "syn match netrwSpecFile '\\(\\S\\+ \\)*\\S*\\(".suflist."\\)\\>' contains=netrwTreeBar,@NoSpell" - endif - syn match netrwBak "\(\S\+ \)*\S\+\.bak\>" contains=netrwTreeBar,@NoSpell - syn match netrwCompress "\(\S\+ \)*\S\+\.\%(gz\|bz2\|Z\|zip\)\>" contains=netrwTreeBar,@NoSpell +if exists("g:netrw_special_syntax") && netrw_special_syntax + syn match netrwBak "\(\S\+ \)*\S\+\.bak\>" contains=netrwTreeBar,@NoSpell + syn match netrwCompress "\(\S\+ \)*\S\+\.\%(gz\|bz2\|Z\|zip\)\>" contains=netrwTreeBar,@NoSpell if has("unix") - syn match netrwCoreDump "\" contains=netrwTreeBar,@NoSpell + syn match netrwCoreDump "\" contains=netrwTreeBar,@NoSpell endif - syn match netrwLex "\(\S\+ \)*\S\+\.\%(l\|lex\)\>" contains=netrwTreeBar,@NoSpell - syn match netrwYacc "\(\S\+ \)*\S\+\.y\>" contains=netrwTreeBar,@NoSpell - syn match netrwData "\(\S\+ \)*\S\+\.dat\>" contains=netrwTreeBar,@NoSpell - syn match netrwDoc "\(\S\+ \)*\S\+\.\%(doc\|txt\|pdf\|ps\|docx\)\>" contains=netrwTreeBar,@NoSpell - syn match netrwHdr "\(\S\+ \)*\S\+\.\%(h\|hpp\)\>" contains=netrwTreeBar,@NoSpell - syn match netrwLib "\(\S\+ \)*\S*\.\%(a\|so\|lib\|dll\)\>" contains=netrwTreeBar,@NoSpell - syn match netrwMakeFile "\<[mM]akefile\>\|\(\S\+ \)*\S\+\.mak\>" contains=netrwTreeBar,@NoSpell - syn match netrwObj "\(\S\+ \)*\S*\.\%(o\|obj\)\>" contains=netrwTreeBar,@NoSpell - syn match netrwPix "\c\(\S\+ \)*\S*\.\%(bmp\|fits\=\|gif\|je\=pg\|pcx\|ppc\|pgm\|png\|ppm\|psd\|rgb\|tif\|xbm\|xcf\)\>" contains=netrwTreeBar,@NoSpell - syn match netrwTags "\<\(ANmenu\|ANtags\)\>" contains=netrwTreeBar,@NoSpell - syn match netrwTags "\" contains=netrwTreeBar,@NoSpell - syn match netrwTilde "\(\S\+ \)*\S\+\~\*\=\>" contains=netrwTreeBar,@NoSpell - syn match netrwTmp "\\|\(\S\+ \)*\S*tmp\>" contains=netrwTreeBar,@NoSpell + syn match netrwLex "\(\S\+ \)*\S\+\.\%(l\|lex\)\>" contains=netrwTreeBar,@NoSpell + syn match netrwYacc "\(\S\+ \)*\S\+\.y\>" contains=netrwTreeBar,@NoSpell + syn match netrwData "\(\S\+ \)*\S\+\.dat\>" contains=netrwTreeBar,@NoSpell + syn match netrwDoc "\(\S\+ \)*\S\+\.\%(doc\|txt\|pdf\|ps\)" contains=netrwTreeBar,@NoSpell + syn match netrwHdr "\(\S\+ \)*\S\+\.\%(h\|hpp\)\>" contains=netrwTreeBar,@NoSpell + syn match netrwLib "\(\S\+ \)*\S*\.\%(a\|so\|lib\|dll\)\>" contains=netrwTreeBar,@NoSpell + syn match netrwMakeFile "\<[mM]akefile\>\|\(\S\+ \)*\S\+\.mak\>" contains=netrwTreeBar,@NoSpell + syn match netrwObj "\(\S\+ \)*\S*\.\%(o\|obj\)\>" contains=netrwTreeBar,@NoSpell + syn match netrwTags "\<\(ANmenu\|ANtags\)\>" contains=netrwTreeBar,@NoSpell + syn match netrwTags "\" contains=netrwTreeBar,@NoSpell + syn match netrwTilde "\(\S\+ \)*\S\+\~\*\=\>" contains=netrwTreeBar,@NoSpell + syn match netrwTmp "\\|\(\S\+ \)*\S*tmp\>" contains=netrwTreeBar,@NoSpell endif " --------------------------------------------------------------------- @@ -104,42 +101,21 @@ if !exists("did_drchip_netrwlist_syntax") hi default link netrwLink Special " special syntax highlighting (see :he g:netrw_special_syntax) + hi default link netrwBak NonText + hi default link netrwCompress Folded hi default link netrwCoreDump WarningMsg hi default link netrwData DiffChange hi default link netrwHdr netrwPlain hi default link netrwLex netrwPlain hi default link netrwLib DiffChange hi default link netrwMakefile DiffChange + hi default link netrwObj Folded + hi default link netrwTilde Folded + hi default link netrwTmp Folded + hi default link netrwTags Folded hi default link netrwYacc netrwPlain - hi default link netrwPix Special - - hi default link netrwBak netrwGray - hi default link netrwCompress netrwGray - hi default link netrwSpecFile netrwGray - hi default link netrwObj netrwGray - hi default link netrwTags netrwGray - hi default link netrwTilde netrwGray - hi default link netrwTmp netrwGray endif - " set up netrwGray to be understated (but not Ignore'd or Conceal'd, as those - " can be hard/impossible to read). Users may override this in a colorscheme by - " specifying netrwGray highlighting. - redir => s:netrwgray - sil hi netrwGray - redir END - if s:netrwgray !~ 'guifg' - if has("gui") && has("gui_running") - if &bg == "dark" - exe "hi netrwGray gui=NONE guifg=gray30" - else - exe "hi netrwGray gui=NONE guifg=gray70" - endif - else - hi link netrwGray Folded - endif - endif - " Current Syntax: {{{1 let b:current_syntax = "netrwlist" " --------------------------------------------------------------------- From f8d40e7d53d864b4ce22258a5696bae108e5ce2a Mon Sep 17 00:00:00 2001 From: zandrmartin Date: Tue, 14 Nov 2017 21:08:50 +0000 Subject: [PATCH 64/76] health.vim: define highlights as `default` (#7560) --- runtime/autoload/health.vim | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/runtime/autoload/health.vim b/runtime/autoload/health.vim index b076f2456b..53d45afc2e 100644 --- a/runtime/autoload/health.vim +++ b/runtime/autoload/health.vim @@ -3,20 +3,20 @@ function! s:enhance_syntax() abort syntax keyword healthError ERROR[:] \ containedin=markdownCodeBlock,mkdListItemLine - highlight link healthError Error + highlight default link healthError Error syntax keyword healthWarning WARNING[:] \ containedin=markdownCodeBlock,mkdListItemLine - highlight link healthWarning WarningMsg + highlight default link healthWarning WarningMsg syntax keyword healthSuccess OK[:] \ containedin=markdownCodeBlock,mkdListItemLine - highlight healthSuccess guibg=#5fff00 guifg=#080808 ctermbg=82 ctermfg=232 + highlight default healthSuccess guibg=#5fff00 guifg=#080808 ctermbg=82 ctermfg=232 syntax match healthHelp "|.\{-}|" contains=healthBar \ containedin=markdownCodeBlock,mkdListItemLine syntax match healthBar "|" contained conceal - highlight link healthHelp Identifier + highlight default link healthHelp Identifier " We do not care about markdown syntax errors in :checkhealth output. highlight! link markdownError Normal From 59b0d9f62d163f1caa60c4b656fef51f8a13cef6 Mon Sep 17 00:00:00 2001 From: Drew Neil Date: Thu, 16 Nov 2017 22:41:16 +0000 Subject: [PATCH 65/76] doc: Fix pathshorten() example (#7571) --- runtime/doc/eval.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 11f549cd05..4a0f76c64b 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -5811,7 +5811,7 @@ pathshorten({expr}) *pathshorten()* components in the path are reduced to single letters. Leading '~' and '.' characters are kept. Example: > :echo pathshorten('~/.config/nvim/autoload/file1.vim') -< ~/.v/a/file1.vim ~ +< ~/.c/n/a/file1.vim ~ It doesn't matter if the path exists or not. pow({x}, {y}) *pow()* From eacd788cf56fee586901f4252ae7492aaf007b3f Mon Sep 17 00:00:00 2001 From: Billy Vong Date: Thu, 16 Nov 2017 14:43:50 -0800 Subject: [PATCH 66/76] :checkhealth: fix check for npm and yarn (#7569) Fix bug that checked for npm AND yarn, where we wanted npm OR yarn. But since we call `npm` exclusively, and it's highly unlikely you have yarn installed without npm, let's just remove the yarn check altogether. Addresses https://github.com/neovim/node-client/issues/41 --- runtime/autoload/health/provider.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/autoload/health/provider.vim b/runtime/autoload/health/provider.vim index 806a9d043b..0201ed8062 100644 --- a/runtime/autoload/health/provider.vim +++ b/runtime/autoload/health/provider.vim @@ -496,7 +496,7 @@ function! s:check_node() abort return endif - if !executable('node') || !executable('npm') || !executable('yarn') + if !executable('node') || !executable('npm') call health#report_warn( \ '`node` and `npm` must be in $PATH.', \ ['Install Node.js and verify that `node` and `npm` commands work.']) From ee031eb5256bb83e0d6add2bae6fd943a4186ffe Mon Sep 17 00:00:00 2001 From: Sewoong Park Date: Wed, 15 Nov 2017 15:55:02 +0900 Subject: [PATCH 67/76] lint #7562 --- src/nvim/vim.h | 168 ++++++++++++++++++++++++------------------------- 1 file changed, 81 insertions(+), 87 deletions(-) diff --git a/src/nvim/vim.h b/src/nvim/vim.h index 62ffc7433e..1db1a073ed 100644 --- a/src/nvim/vim.h +++ b/src/nvim/vim.h @@ -4,26 +4,24 @@ #include "nvim/types.h" #include "nvim/pos.h" // for linenr_T, MAXCOL, etc... -/* Some defines from the old feature.h */ +// Some defines from the old feature.h #define SESSION_FILE "Session.vim" #define MAX_MSG_HIST_LEN 200 #define SYS_OPTWIN_FILE "$VIMRUNTIME/optwin.vim" #define RUNTIME_DIRNAME "runtime" -/* end */ + #include "auto/config.h" #define HAVE_PATHDEF -/* - * Check if configure correctly managed to find sizeof(int). If this failed, - * it becomes zero. This is likely a problem of not being able to run the - * test program. Other items from configure may also be wrong then! - */ +// Check if configure correctly managed to find sizeof(int). If this failed, +// it becomes zero. This is likely a problem of not being able to run the +// test program. Other items from configure may also be wrong then! #if (SIZEOF_INT == 0) # error Configure did not run properly. #endif -#include "nvim/os/os_defs.h" /* bring lots of system header files */ +#include "nvim/os/os_defs.h" // bring lots of system header files /// length of a buffer to store a number in ASCII (64 bits binary + NUL) enum { NUMBUFLEN = 65 }; @@ -44,41 +42,41 @@ enum { NUMBUFLEN = 65 }; #include "nvim/gettext.h" -/* special attribute addition: Put message in history */ +// special attribute addition: Put message in history #define MSG_HIST 0x1000 -/* - * values for State - * - * The lower bits up to 0x20 are used to distinguish normal/visual/op_pending - * and cmdline/insert+replace mode. This is used for mapping. If none of - * these bits are set, no mapping is done. - * The upper bits are used to distinguish between other states. - */ -#define NORMAL 0x01 /* Normal mode, command expected */ -#define VISUAL 0x02 /* Visual mode - use get_real_state() */ -#define OP_PENDING 0x04 /* Normal mode, operator is pending - use - get_real_state() */ -#define CMDLINE 0x08 /* Editing command line */ -#define INSERT 0x10 /* Insert mode */ -#define LANGMAP 0x20 /* Language mapping, can be combined with - INSERT and CMDLINE */ -#define REPLACE_FLAG 0x40 /* Replace mode flag */ +// values for State +// +// The lower bits up to 0x20 are used to distinguish normal/visual/op_pending +// and cmdline/insert+replace mode. This is used for mapping. If none of +// these bits are set, no mapping is done. +// The upper bits are used to distinguish between other states. + +#define NORMAL 0x01 // Normal mode, command expected +#define VISUAL 0x02 // Visual mode - use get_real_state() +#define OP_PENDING 0x04 // Normal mode, operator is pending - use + // get_real_state() +#define CMDLINE 0x08 // Editing command line +#define INSERT 0x10 // Insert mode +#define LANGMAP 0x20 // Language mapping, can be combined with + // INSERT and CMDLINE + +#define REPLACE_FLAG 0x40 // Replace mode flag #define REPLACE (REPLACE_FLAG + INSERT) -# define VREPLACE_FLAG 0x80 /* Virtual-replace mode flag */ +# define VREPLACE_FLAG 0x80 // Virtual-replace mode flag # define VREPLACE (REPLACE_FLAG + VREPLACE_FLAG + INSERT) #define LREPLACE (REPLACE_FLAG + LANGMAP) -#define NORMAL_BUSY (0x100 + NORMAL) /* Normal mode, busy with a command */ -#define HITRETURN (0x200 + NORMAL) /* waiting for return or command */ -#define ASKMORE 0x300 /* Asking if you want --more-- */ -#define SETWSIZE 0x400 /* window size has changed */ -#define ABBREV 0x500 /* abbreviation instead of mapping */ -#define EXTERNCMD 0x600 /* executing an external command */ -#define SHOWMATCH (0x700 + INSERT) /* show matching paren */ -#define CONFIRM 0x800 /* ":confirm" prompt */ -#define SELECTMODE 0x1000 /* Select mode, only for mappings */ +#define NORMAL_BUSY (0x100 + NORMAL) // Normal mode, busy with a command +#define HITRETURN (0x200 + NORMAL) // waiting for return or command +#define ASKMORE 0x300 // Asking if you want --more-- +#define SETWSIZE 0x400 // window size has changed +#define ABBREV 0x500 // abbreviation instead of mapping +#define EXTERNCMD 0x600 // executing an external command +#define SHOWMATCH (0x700 + INSERT) // show matching paren +#define CONFIRM 0x800 // ":confirm" prompt +#define SELECTMODE 0x1000 // Select mode, only for mappings #define TERM_FOCUS 0x2000 // Terminal focus mode #define CMDPREVIEW 0x4000 // Showing 'inccommand' command "live" preview. @@ -94,13 +92,13 @@ typedef enum { BACKWARD_FILE = (-3), } Direction; -/* return values for functions */ +// return values for functions #if !(defined(OK) && (OK == 1)) -/* OK already defined to 1 in MacOS X curses, skip this */ +// OK already defined to 1 in MacOS X curses, skip this # define OK 1 #endif #define FAIL 0 -#define NOTDONE 2 /* not OK or FAIL but skipped */ +#define NOTDONE 2 // not OK or FAIL but skipped // Type values for type(). #define VAR_TYPE_NUMBER 0 @@ -111,9 +109,9 @@ typedef enum { #define VAR_TYPE_FLOAT 5 #define VAR_TYPE_BOOL 6 -/* - * values for xp_context when doing command line completion - */ + +// values for xp_context when doing command line completion + enum { EXPAND_UNSUCCESSFUL = -2, EXPAND_OK = -1, @@ -169,57 +167,54 @@ enum { +// Minimal size for block 0 of a swap file. +// NOTE: This depends on size of struct block0! It's not done with a sizeof(), +// because struct block0 is defined in memline.c (Sorry). +// The maximal block size is arbitrary. -/* - * Minimal size for block 0 of a swap file. - * NOTE: This depends on size of struct block0! It's not done with a sizeof(), - * because struct block0 is defined in memline.c (Sorry). - * The maximal block size is arbitrary. - */ #define MIN_SWAP_PAGE_SIZE 1048 #define MAX_SWAP_PAGE_SIZE 50000 -/* - * Boolean constants - */ +// Boolean constants + #ifndef TRUE -# define FALSE 0 /* note: this is an int, not a long! */ +# define FALSE 0 // note: this is an int, not a long! # define TRUE 1 #endif -#define MAYBE 2 /* sometimes used for a variant on TRUE */ +#define MAYBE 2 // sometimes used for a variant on TRUE -#define STATUS_HEIGHT 1 /* height of a status line under a window */ -#define QF_WINHEIGHT 10 /* default height for quickfix window */ +#define STATUS_HEIGHT 1 // height of a status line under a window +#define QF_WINHEIGHT 10 // default height for quickfix window + + +// Buffer sizes -/* - * Buffer sizes - */ #ifndef CMDBUFFSIZE -# define CMDBUFFSIZE 256 /* size of the command processing buffer */ +# define CMDBUFFSIZE 256 // size of the command processing buffer #endif -#define LSIZE 512 /* max. size of a line in the tags file */ +#define LSIZE 512 // max. size of a line in the tags file -#define DIALOG_MSG_SIZE 1000 /* buffer size for dialog_msg() */ +#define DIALOG_MSG_SIZE 1000 // buffer size for dialog_msg() enum { FOLD_TEXT_LEN = 51 }; //!< buffer size for get_foldtext() -/* - * Maximum length of key sequence to be mapped. - * Must be able to hold an Amiga resize report. - */ + +// Maximum length of key sequence to be mapped. +// Must be able to hold an Amiga resize report. + #define MAXMAPLEN 50 -/* Size in bytes of the hash used in the undo file. */ +// Size in bytes of the hash used in the undo file. #define UNDO_HASH_SIZE 32 -/* - * defines to avoid typecasts from (char_u *) to (char *) and back - * (vim_strchr() and vim_strrchr() are now in alloc.c) - */ + +// defines to avoid typecasts from (char_u *) to (char *) and back +// (vim_strchr() and vim_strrchr() are now in alloc.c) + #define STRLEN(s) strlen((char *)(s)) #define STRCPY(d, s) strcpy((char *)(d), (char *)(s)) #define STRNCPY(d, s, n) strncpy((char *)(d), (char *)(s), (size_t)(n)) @@ -236,7 +231,7 @@ enum { FOLD_TEXT_LEN = 51 }; //!< buffer size for get_foldtext() # endif #endif -/* Like strcpy() but allows overlapped source and destination. */ +// Like strcpy() but allows overlapped source and destination. #define STRMOVE(d, s) memmove((d), (s), STRLEN(s) + 1) #ifdef HAVE_STRNCASECMP @@ -261,8 +256,8 @@ enum { FOLD_TEXT_LEN = 51 }; //!< buffer size for get_foldtext() // destination and mess up the screen. #define PERROR(msg) (void) emsgf("%s: %s", msg, strerror(errno)) -#define SHOWCMD_COLS 10 /* columns needed by shown command */ -#define STL_MAX_ITEM 80 /* max nr of % in statusline */ +#define SHOWCMD_COLS 10 // columns needed by shown command +#define STL_MAX_ITEM 80 // max nr of % in statusline /// Compare file names /// @@ -281,28 +276,27 @@ enum { FOLD_TEXT_LEN = 51 }; //!< buffer size for get_foldtext() (const char *)(y), \ (size_t)(n)) -/* - * Enums need a typecast to be used as array index (for Ultrix). - */ + +// Enums need a typecast to be used as array index (for Ultrix). #define hl_attr(n) highlight_attr[(int)(n)] #define term_str(n) term_strings[(int)(n)] -/* Maximum number of bytes in a multi-byte character. It can be one 32-bit - * character of up to 6 bytes, or one 16-bit character of up to three bytes - * plus six following composing characters of three bytes each. */ +/// Maximum number of bytes in a multi-byte character. It can be one 32-bit +/// character of up to 6 bytes, or one 16-bit character of up to three bytes +/// plus six following composing characters of three bytes each. #define MB_MAXBYTES 21 -/* This has to go after the include of proto.h, as proto/gui.pro declares - * functions of these names. The declarations would break if the defines had - * been seen at that stage. But it must be before globals.h, where error_ga - * is declared. */ +// This has to go after the include of proto.h, as proto/gui.pro declares +// functions of these names. The declarations would break if the defines had +// been seen at that stage. But it must be before globals.h, where error_ga +// is declared. #define mch_errmsg(str) fprintf(stderr, "%s", (str)) #define display_errors() fflush(stderr) #define mch_msg(str) printf("%s", (str)) -#include "nvim/globals.h" /* global variables and messages */ -#include "nvim/buffer_defs.h" /* buffer and windows */ -#include "nvim/ex_cmds_defs.h" /* Ex command defines */ +#include "nvim/globals.h" // global variables and messages +#include "nvim/buffer_defs.h" // buffer and windows +#include "nvim/ex_cmds_defs.h" // Ex command defines # define SET_NO_HLSEARCH(flag) no_hlsearch = (flag); set_vim_var_nr( \ VV_HLSEARCH, !no_hlsearch && p_hls) @@ -324,4 +318,4 @@ enum { FOLD_TEXT_LEN = 51 }; //!< buffer size for get_foldtext() # define OPEN_CHR_FILES #endif -#endif /* NVIM_VIM_H */ +#endif // NVIM_VIM_H From 07931ed1c8cc749222a513cba5bdf300067646bc Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Fri, 17 Nov 2017 22:24:01 +0100 Subject: [PATCH 68/76] tui: 'guicursor': use DECSCUSR for xterm-likes (#7576) Anything claiming to be an xterm gets DECSCUSR. This is the only reasonable choice unless/until we get more reliable detection (#7490). ref #6997 closes #7550 --- src/nvim/tui/input.c | 2 -- src/nvim/tui/tui.c | 15 ++++++--------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/src/nvim/tui/input.c b/src/nvim/tui/input.c index 8bb5971bd4..8e08b77b00 100644 --- a/src/nvim/tui/input.c +++ b/src/nvim/tui/input.c @@ -14,8 +14,6 @@ #include "nvim/event/rstream.h" #define PASTETOGGLE_KEY "" -#define FOCUSGAINED_KEY "" -#define FOCUSLOST_KEY "" #define KEY_BUFFER_SIZE 0xfff #ifdef INCLUDE_GENERATED_DECLARATIONS diff --git a/src/nvim/tui/tui.c b/src/nvim/tui/tui.c index 8e0e905bcd..88da634de4 100644 --- a/src/nvim/tui/tui.c +++ b/src/nvim/tui/tui.c @@ -1453,12 +1453,10 @@ static void patch_terminfo_bugs(TUIData *data, const char *term, data->unibi_ext.set_cursor_style = unibi_find_ext_str(ut, "Ss"); } if (-1 == data->unibi_ext.set_cursor_style) { - // The DECSCUSR sequence to change the cursor shape is widely - // supported by several terminal types and should be in many - // teminfo entries. See - // https://github.com/gnachman/iTerm2/pull/92 for more. - // xterm even has an extended version that has a vertical bar. - if (!konsole && (true_xterm // per xterm ctlseqs doco (since version 282) + // The DECSCUSR sequence to change the cursor shape is widely supported by + // several terminal types. https://github.com/gnachman/iTerm2/pull/92 + // xterm extension: vertical bar + if (!konsole && ((xterm && !vte_version) // anything claiming xterm compat // per MinTTY 0.4.3-1 release notes from 2009 || putty // per https://bugzilla.gnome.org/show_bug.cgi?id=720821 @@ -1470,9 +1468,8 @@ static void patch_terminfo_bugs(TUIData *data, const char *term, // per analysis of VT100Terminal.m || iterm || iterm_pretending_xterm || teraterm // per TeraTerm "Supported Control Functions" doco - // Allows forcing the use of DECSCUSR on linux type terminals, such as - // console-terminal-emulator from the nosh toolset, which does indeed - // implement the xterm extension: + // Some linux-type terminals (such as console-terminal-emulator + // from the nosh toolset) implement implement the xterm extension. || (linuxvt && (xterm_version || (vte_version > 0) || colorterm)))) { data->unibi_ext.set_cursor_style = (int)unibi_add_ext_str(ut, "Ss", "\x1b[%p1%d q"); From d135ba99b2945ca18fe3246cbb89a0920868ccf6 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Tue, 14 Nov 2017 22:59:58 +0100 Subject: [PATCH 69/76] os_open, os_stat: UV_EINVAL on NULL filename EINVAL (instead of EFAULT) because that's what glibc does: https://github.com/bminor/glibc/blob/master/io/open.c#L35 os_nodetype: check for UV_EINVAL explicitly. ref #4370 ref https://github.com/neovim/neovim/issues/4370#issuecomment-344366571 ref ac055d677aa9eff9fca11cecb5ac7f7a4edb0265 ref #4772 --- src/nvim/os/fs.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/nvim/os/fs.c b/src/nvim/os/fs.c index 78627f8703..c5049acda9 100644 --- a/src/nvim/os/fs.c +++ b/src/nvim/os/fs.c @@ -172,7 +172,7 @@ int os_nodetype(const char *name) | O_NONBLOCK #endif , 0); - if (fd == -1) { + if (fd == UV_EINVAL) { return NODE_OTHER; // open() failed. } @@ -394,9 +394,11 @@ end: /// @param mode Permissions for the newly-created file (IGNORED if 'flags' is /// not `O_CREAT` or `O_TMPFILE`), subject to the current umask /// @return file descriptor, or libuv error code on failure -int os_open(const char* path, int flags, int mode) - FUNC_ATTR_NONNULL_ALL +int os_open(const char *path, int flags, int mode) { + if (path == NULL) { // uv_fs_open asserts on NULL. #7561 + return UV_EINVAL; + } int r; RUN_UV_FS_FUNC(r, uv_fs_open, path, flags, mode, NULL); return r; @@ -603,12 +605,12 @@ int os_fsync(int fd) /// Get stat information for a file. /// -/// @return libuv return code. +/// @return libuv return code, or -errno static int os_stat(const char *name, uv_stat_t *statbuf) FUNC_ATTR_NONNULL_ARG(2) { if (!name) { - return UV_ENOENT; + return UV_EINVAL; } uv_fs_t request; int result = uv_fs_stat(&fs_loop, &request, name, NULL); From bf3f0efb3a98afbcc15020cc3399c71db8f831e7 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Thu, 16 Nov 2017 01:00:47 +0100 Subject: [PATCH 70/76] os_nodetype: rework Make the Windows impl closer to Vim os_win32.c, and the Unix impl closer to Vim os_unix.c. Outcomes: - Do not send negative fd to close(). ref #4806 #4772 #6860 - Fallback return-value is now correct in (hopefully) all cases. - unix: check S_ISXXX instead of relying on os_open (which can fail for irrelevant reasons). buf_write() expects NODE_WRITABLE for character devices such as /dev/stderr. 96f834a8424e --- src/nvim/os/fs.c | 94 +++++++++++++++++++++++------------------------- 1 file changed, 44 insertions(+), 50 deletions(-) diff --git a/src/nvim/os/fs.c b/src/nvim/os/fs.c index c5049acda9..aa28b95c30 100644 --- a/src/nvim/os/fs.c +++ b/src/nvim/os/fs.c @@ -133,22 +133,12 @@ bool os_isdir(const char_u *name) int os_nodetype(const char *name) FUNC_ATTR_NONNULL_ALL { -#ifdef WIN32 - // Edge case from Vim os_win32.c: - // We can't open a file with a name "\\.\con" or "\\.\prn", trying to read - // from it later will cause Vim to hang. Thus return NODE_WRITABLE here. - if (STRNCMP(name, "\\\\.\\", 4) == 0) { - return NODE_WRITABLE; - } -#endif - +#ifndef WIN32 // Unix uv_stat_t statbuf; if (0 != os_stat(name, &statbuf)) { return NODE_NORMAL; // File doesn't exist. } - -#ifndef WIN32 - // libuv does not handle BLK and DIR in uv_handle_type. + // uv_handle_type does not distinguish BLK and DIR. // Related: https://github.com/joyent/libuv/pull/1421 if (S_ISREG(statbuf.st_mode) || S_ISDIR(statbuf.st_mode)) { return NODE_NORMAL; @@ -156,48 +146,51 @@ int os_nodetype(const char *name) if (S_ISBLK(statbuf.st_mode)) { // block device isn't writable return NODE_OTHER; } -#endif - - // Vim os_win32.c:mch_nodetype does this (since patch 7.4.015): - // if (enc_codepage >= 0 && (int)GetACP() != enc_codepage) { - // wn = enc_to_utf16(name, NULL); - // hFile = CreatFile(wn, ...) - // to get a HANDLE. But libuv just calls win32's _get_osfhandle() on the fd we - // give it. uv_fs_open calls fs__capture_path which does a similar dance and - // saves us the hassle. - - int nodetype = NODE_WRITABLE; - int fd = os_open(name, O_RDONLY -#ifdef O_NONBLOCK - | O_NONBLOCK -#endif - , 0); - if (fd == UV_EINVAL) { - return NODE_OTHER; // open() failed. + // Everything else is writable? + // buf_write() expects NODE_WRITABLE for char device /dev/stderr. + return NODE_WRITABLE; +#else // Windows + // Edge case from Vim os_win32.c: + // We can't open a file with a name "\\.\con" or "\\.\prn", trying to read + // from it later will cause Vim to hang. Thus return NODE_WRITABLE here. + if (STRNCMP(name, "\\\\.\\", 4) == 0) { + return NODE_WRITABLE; } - switch (uv_guess_handle(fd)) { - case UV_TTY: // FILE_TYPE_CHAR - nodetype = NODE_WRITABLE; - break; - case UV_FILE: // FILE_TYPE_DISK - nodetype = NODE_NORMAL; - break; - case UV_NAMED_PIPE: // not handled explicitly in Vim os_win32.c - case UV_UDP: // unix only - case UV_TCP: // unix only + // Vim os_win32.c:mch_nodetype does (since 7.4.015): + // wn = enc_to_utf16(name, NULL); + // hFile = CreatFile(wn, ...) + // to get a HANDLE. Whereas libuv just calls _get_osfhandle() on the fd we + // give it. But uv_fs_open later calls fs__capture_path which does a similar + // utf8-to-utf16 dance and saves us the hassle. + + // macOS: os_open(/dev/stderr) would return UV_EACCES. + int fd = os_open(name, O_RDONLY +# ifdef O_NONBLOCK + | O_NONBLOCK +# endif + , 0); + if (fd < 0) { // open() failed. + return NODE_NORMAL; + } + int guess = uv_guess_handle(fd); + if (close(fd) == -1) { + ELOG("close(%d) failed. name='%s'", fd, name); + } + + switch (guess) { + case UV_TTY: // FILE_TYPE_CHAR + return NODE_WRITABLE; + case UV_FILE: // FILE_TYPE_DISK + return NODE_NORMAL; + case UV_NAMED_PIPE: // not handled explicitly in Vim os_win32.c + case UV_UDP: // unix only + case UV_TCP: // unix only case UV_UNKNOWN_HANDLE: default: -#ifdef WIN32 - nodetype = NODE_NORMAL; -#else - nodetype = NODE_WRITABLE; // Everything else is writable? -#endif - break; + return NODE_OTHER; // Vim os_win32.c default } - - close(fd); - return nodetype; +#endif } /// Gets the absolute path of the currently running executable. @@ -1080,7 +1073,8 @@ shortcut_end: #endif -int os_translate_sys_error(int sys_errno) { +int os_translate_sys_error(int sys_errno) +{ #ifdef HAVE_UV_TRANSLATE_SYS_ERROR return uv_translate_sys_error(sys_errno); #elif defined(WIN32) From e8af34dc635981367ba3b1da93b51e6984ef6111 Mon Sep 17 00:00:00 2001 From: Jan Edmund Lazo Date: Fri, 17 Nov 2017 17:52:51 -0500 Subject: [PATCH 71/76] win: provider: Detect(): return *.cmd path (#7577) neovim-ruby-host is a ruby script. neovim-node-host is a shell script. Both don't work in cmd.exe so gem and npm provide batchfile shims. Return the full path of these shims, cmd.exe knows better what to do with these files. --- runtime/autoload/provider/node.vim | 16 ++++++++++------ runtime/autoload/provider/ruby.vim | 2 +- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/runtime/autoload/provider/node.vim b/runtime/autoload/provider/node.vim index ce2740e813..b08ad4f316 100644 --- a/runtime/autoload/provider/node.vim +++ b/runtime/autoload/provider/node.vim @@ -6,7 +6,7 @@ let g:loaded_node_provider = 1 let s:job_opts = {'rpc': v:true, 'on_stderr': function('provider#stderr_collector')} function! provider#node#Detect() abort - return exepath('neovim-node-host') + return has('win32') ? exepath('neovim-node-host.cmd') : exepath('neovim-node-host') endfunction function! provider#node#Prog() @@ -19,14 +19,18 @@ function! provider#node#Require(host) abort return endif - let args = ['node'] + if has('win32') + let args = provider#node#Prog() + else + let args = ['node'] - if !empty($NVIM_NODE_HOST_DEBUG) - call add(args, '--inspect-brk') + if !empty($NVIM_NODE_HOST_DEBUG) + call add(args, '--inspect-brk') + endif + + call add(args , provider#node#Prog()) endif - call add(args , provider#node#Prog()) - try let channel_id = jobstart(args, s:job_opts) if rpcrequest(channel_id, 'poll') ==# 'ok' diff --git a/runtime/autoload/provider/ruby.vim b/runtime/autoload/provider/ruby.vim index 7df3500267..518a9dc793 100644 --- a/runtime/autoload/provider/ruby.vim +++ b/runtime/autoload/provider/ruby.vim @@ -19,7 +19,7 @@ function! provider#ruby#Detect() abort if exists("g:ruby_host_prog") return g:ruby_host_prog else - return exepath('neovim-ruby-host') + return has('win32') ? exepath('neovim-ruby-host.cmd') : exepath('neovim-ruby-host') end endfunction From a6de144c3e5cc888ab3cb7c2034a762b23566919 Mon Sep 17 00:00:00 2001 From: Eric Roberts Date: Fri, 27 Oct 2017 10:48:24 -0400 Subject: [PATCH 72/76] 'viewoptions': add "curdir" flag #7447 The flag enables the current local directory set by ":lcd" to be saved to views which is the current default behaviour. The option can be removed to disable this behaviour. closes #7435 vim-patch:8.0.1289 --- runtime/doc/options.txt | 3 +- runtime/doc/starting.txt | 2 +- src/nvim/ex_docmd.c | 15 +++--- src/nvim/option_defs.h | 21 ++++---- src/nvim/options.lua | 2 +- test/functional/ex_cmds/mkview_spec.lua | 67 +++++++++++++++++++++++++ 6 files changed, 91 insertions(+), 19 deletions(-) create mode 100644 test/functional/ex_cmds/mkview_spec.lua diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 026cfbe2eb..8a8ad58efd 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -6453,7 +6453,7 @@ A jump table for the options with a short description can be found at |Q_op|. security reasons. *'viewoptions'* *'vop'* -'viewoptions' 'vop' string (default: "folds,options,cursor") +'viewoptions' 'vop' string (default: "folds,options,cursor,curdir") global {not available when compiled without the |+mksession| feature} @@ -6461,6 +6461,7 @@ A jump table for the options with a short description can be found at |Q_op|. list of words. Each word enables saving and restoring something: word save and restore ~ cursor cursor position in file and in window + curdir local current directory, if set with |:lcd| folds manually created folds, opened/closed folds and local fold options options options and mappings local to a window or buffer (not diff --git a/runtime/doc/starting.txt b/runtime/doc/starting.txt index 7aba84b454..05e3f72b8d 100644 --- a/runtime/doc/starting.txt +++ b/runtime/doc/starting.txt @@ -885,7 +885,7 @@ The output of ":mkview" contains these items: 5. The scroll position and the cursor position in the file. Doesn't work very well when there are closed folds. 6. The local current directory, if it is different from the global current - directory. + directory and 'viewoptions' contains "curdir". Note that Views and Sessions are not perfect: - They don't restore everything. For example, defined functions, autocommands diff --git a/src/nvim/ex_docmd.c b/src/nvim/ex_docmd.c index 7a2b0328df..5180420eff 100644 --- a/src/nvim/ex_docmd.c +++ b/src/nvim/ex_docmd.c @@ -9356,15 +9356,18 @@ put_view ( } } - /* - * Local directory. - */ - if (wp->w_localdir != NULL) { + // + // Local directory, if the current flag is not view options or the "curdir" + // option is included. + // + if (wp->w_localdir != NULL + && (flagp != &vop_flags || (*flagp & SSOP_CURDIR))) { if (fputs("lcd ", fd) < 0 || ses_put_fname(fd, wp->w_localdir, flagp) == FAIL - || put_eol(fd) == FAIL) + || put_eol(fd) == FAIL) { return FAIL; - did_lcd = TRUE; + } + did_lcd = true; } return OK; diff --git a/src/nvim/option_defs.h b/src/nvim/option_defs.h index a2fe90b3c2..1f62490ab9 100644 --- a/src/nvim/option_defs.h +++ b/src/nvim/option_defs.h @@ -539,7 +539,7 @@ static char *(p_ssop_values[]) = {"buffers", "winpos", "resize", "winsize", "localoptions", "options", "help", "blank", "globals", "slash", "unix", "sesdir", "curdir", "folds", "cursor", - "tabpages", NULL}; + "tabpages", NULL }; # endif # define SSOP_BUFFERS 0x001 # define SSOP_WINPOS 0x002 @@ -557,16 +557,17 @@ static char *(p_ssop_values[]) = {"buffers", "winpos", "resize", "winsize", # define SSOP_FOLDS 0x2000 # define SSOP_CURSOR 0x4000 # define SSOP_TABPAGES 0x8000 -EXTERN char_u *p_sh; /* 'shell' */ -EXTERN char_u *p_shcf; /* 'shellcmdflag' */ -EXTERN char_u *p_sp; /* 'shellpipe' */ -EXTERN char_u *p_shq; /* 'shellquote' */ -EXTERN char_u *p_sxq; /* 'shellxquote' */ -EXTERN char_u *p_sxe; /* 'shellxescape' */ -EXTERN char_u *p_srr; /* 'shellredir' */ -EXTERN int p_stmp; /* 'shelltemp' */ + +EXTERN char_u *p_sh; // 'shell' +EXTERN char_u *p_shcf; // 'shellcmdflag' +EXTERN char_u *p_sp; // 'shellpipe' +EXTERN char_u *p_shq; // 'shellquote' +EXTERN char_u *p_sxq; // 'shellxquote' +EXTERN char_u *p_sxe; // 'shellxescape' +EXTERN char_u *p_srr; // 'shellredir' +EXTERN int p_stmp; // 'shelltemp' #ifdef BACKSLASH_IN_FILENAME -EXTERN int p_ssl; /* 'shellslash' */ +EXTERN int p_ssl; // 'shellslash' #endif EXTERN char_u *p_stl; // 'statusline' EXTERN int p_sr; // 'shiftround' diff --git a/src/nvim/options.lua b/src/nvim/options.lua index 29220a6b50..52e478e78a 100644 --- a/src/nvim/options.lua +++ b/src/nvim/options.lua @@ -2610,7 +2610,7 @@ return { deny_duplicates=true, vi_def=true, varname='p_vop', - defaults={if_true={vi="folds,options,cursor"}} + defaults={if_true={vi="folds,options,cursor,curdir"}} }, { full_name='viminfo', abbreviation='vi', diff --git a/test/functional/ex_cmds/mkview_spec.lua b/test/functional/ex_cmds/mkview_spec.lua new file mode 100644 index 0000000000..97a49dbbd5 --- /dev/null +++ b/test/functional/ex_cmds/mkview_spec.lua @@ -0,0 +1,67 @@ +local lfs = require('lfs') +local helpers = require('test.functional.helpers')(after_each) + +local clear = helpers.clear +local command = helpers.command +local get_pathsep = helpers.get_pathsep +local eq = helpers.eq +local funcs = helpers.funcs +local rmdir = helpers.rmdir + +local file_prefix = 'Xtest-functional-ex_cmds-mkview_spec' + +describe(':mkview', function() + local tmp_file_base = file_prefix .. '-tmpfile' + local local_dir = file_prefix .. '.d' + local view_dir = file_prefix .. '.view.d' + + before_each(function() + clear() + lfs.mkdir(view_dir) + lfs.mkdir(local_dir) + end) + + after_each(function() + -- Remove any views created in the view directory + rmdir(view_dir) + lfs.rmdir(local_dir) + end) + + it('viewoption curdir restores local current directory', function() + local cwd_dir = funcs.getcwd() + local set_view_dir_command = 'set viewdir=' .. cwd_dir .. + get_pathsep() .. view_dir + + -- By default the local current directory should save + command(set_view_dir_command) + command('edit ' .. tmp_file_base .. '1') + command('lcd ' .. local_dir) + command('mkview') + + -- Create a new instance of Nvim to remove the 'lcd' + clear() + + -- Disable saving the local current directory for the second view + command(set_view_dir_command) + command('set viewoptions-=curdir') + command('edit ' .. tmp_file_base .. '2') + command('lcd ' .. local_dir) + command('mkview') + + -- Create a new instance of Nvim to test saved 'lcd' option + clear() + command(set_view_dir_command) + + -- Load the view without a saved local current directory + command('edit ' .. tmp_file_base .. '2') + command('loadview') + -- The view's current directory should not have changed + eq(cwd_dir, funcs.getcwd()) + -- Load the view with a saved local current directory + command('edit ' .. tmp_file_base .. '1') + command('loadview') + -- The view's local directory should have been saved + eq(cwd_dir .. get_pathsep() .. local_dir, funcs.getcwd()) + end) + +end) From f19e5d6530981331fd858bea1f5e0a5273cb5854 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Sat, 18 Nov 2017 12:24:11 +0100 Subject: [PATCH 73/76] tui: setrgbf/setrgbb: emit semicolons for VTE Severe memory leak observed on gnome-terminal 3.26.2 VTE 0.50.2 when colon-delimited RGB sequences are used. closes #7573 --- src/nvim/tui/tui.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/nvim/tui/tui.c b/src/nvim/tui/tui.c index 88da634de4..f35e99840d 100644 --- a/src/nvim/tui/tui.c +++ b/src/nvim/tui/tui.c @@ -1568,10 +1568,9 @@ static void augment_terminfo(TUIData *data, const char *term, } // Dickey ncurses terminfo does not include the setrgbf and setrgbb - // capabilities, proposed by Rüdiger Sonderfeld on 2013-10-15. So adding - // them to terminal types, that do actually have such control sequences but - // lack the correct definitions in terminfo, is an augmentation, not a - // fixup. See https://gist.github.com/XVilka/8346728 for more about this. + // capabilities, proposed by Rüdiger Sonderfeld on 2013-10-15. Adding + // them here when terminfo lacks them is an augmentation, not a fixup. + // https://gist.github.com/XVilka/8346728 // At this time (2017-07-12) it seems like all terminals that support rgb // color codes can use semicolons in the terminal code and be fine. @@ -1581,8 +1580,8 @@ static void augment_terminfo(TUIData *data, const char *term, // can use colons like ISO 8613-6:1994/ITU T.416:1993 says. bool has_colon_rgb = !tmux && !screen - && ((vte_version >= 3600) // per GNOME bug #685759, #704449 - || iterm || iterm_pretending_xterm // per analysis of VT100Terminal.m + && !vte_version // VTE colon-support has a big memory leak. #7573 + && (iterm || iterm_pretending_xterm // per VT100Terminal.m // per http://invisible-island.net/xterm/xterm.log.html#xterm_282 || true_xterm); From 6d2c30daf3b29b84b15b547ef956e165f5e9685d Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Sat, 18 Nov 2017 12:39:14 +0100 Subject: [PATCH 74/76] NVIM v0.2.2 FEATURES: a6de144c3e5c 'viewoptions': add "curdir" flag #7447 b6a603fe515e node.js remote-plugin support #7458 f5d4da0144c9 :checkhealth : validate 'runtimepath' #7526 FIXES: e6beb60da517 :terminal : fix crash on resize #7547 f19e5d653098 work around gnome-terminal memory leak #7573 07931ed1c8cc 'guicursor': use DECSCUSR for xterm-likes #7576 f185c739bc84 'os_open: UV_EINVAL on NULL filename' #7561 e8af34dc6359 win: provider: Detect(): return *.cmd path #7577 eacd788cf56f :checkhealth : fix check for npm and yarn #7569 a43a573ad5e5 health.vim: normalize slashes for script path #7525 69e33087716c cmake: install runtime/rgb.txt d0b05e3c3622 runtime: syntax error in `runtime/syntax/tex.vim` #7518 55d8967147ef tutor: some fixes #7510 CHANGES: 9837a9c40105 remove legacy alias to `v:count` #7407 c5f001a46a8e runtime: revert netrw update #7557 67e45292925d defaults: scrollback=10000 #7556 881f9e42d182 process_close(): uv_unref() detached processes #7539 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1647e6e7af..39b0bf24f2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -65,7 +65,7 @@ set_property(CACHE CMAKE_BUILD_TYPE PROPERTY set(NVIM_VERSION_MAJOR 0) set(NVIM_VERSION_MINOR 2) set(NVIM_VERSION_PATCH 2) -set(NVIM_VERSION_PRERELEASE "-dev") # for package maintainers +set(NVIM_VERSION_PRERELEASE "") # for package maintainers # API level set(NVIM_API_LEVEL 3) # Bump this after any API change. From d6f9d1df04cfae3d73496b2cd99408d5344d0ad4 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Sat, 18 Nov 2017 12:44:03 +0100 Subject: [PATCH 75/76] version bump --- CMakeLists.txt | 4 ++-- scripts/release.sh | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 39b0bf24f2..cad3ea6786 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -64,8 +64,8 @@ set_property(CACHE CMAKE_BUILD_TYPE PROPERTY # version string, else they are combined with the result of `git describe`. set(NVIM_VERSION_MAJOR 0) set(NVIM_VERSION_MINOR 2) -set(NVIM_VERSION_PATCH 2) -set(NVIM_VERSION_PRERELEASE "") # for package maintainers +set(NVIM_VERSION_PATCH 3) +set(NVIM_VERSION_PRERELEASE "-dev") # for package maintainers # API level set(NVIM_API_LEVEL 3) # Bump this after any API change. diff --git a/scripts/release.sh b/scripts/release.sh index 692b46e921..f1dbf99473 100755 --- a/scripts/release.sh +++ b/scripts/release.sh @@ -75,6 +75,8 @@ nvim +'/NVIM_VERSION' +10new +'exe "norm! iUpdate version numbers!!!\"' \ git add CMakeLists.txt git commit -m "$__BUMP_MSG" +rm CMakeLists.txt.bk || true + echo " Next steps: - Double-check NVIM_VERSION_* in CMakeLists.txt From 540ed646358f9e3910681add39aa96a937074668 Mon Sep 17 00:00:00 2001 From: ckelsel Date: Sun, 19 Nov 2017 19:15:03 +0800 Subject: [PATCH 76/76] vim-patch:8.0.0283 Problem: The return value of mode() does not indicate that completion is active in Replace and Insert mode. (Zhen-Huan (Kenny) Hu) Solution: Add "c" or "x" for two kinds of completion. (Yegappan Lakshmanan, closes vim/vim#1397) Test some more modes. https://github.com/vim/vim/commit/e90858d0229444b3cd16b1cd3a8d61a24c435705 --- runtime/doc/eval.txt | 6 +- src/nvim/state.c | 24 +++++--- src/nvim/testdir/test_functions.vim | 85 +++++++++++++++++++++++++++++ src/nvim/testdir/test_mapping.vim | 4 +- src/nvim/version.c | 2 +- 5 files changed, 110 insertions(+), 11 deletions(-) diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 4a0f76c64b..b752667d9a 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -5660,9 +5660,13 @@ mode([expr]) Return a string that indicates the current mode. S Select by line CTRL-S Select blockwise i Insert + ic Insert mode completion |compl-generic| + ix Insert mode |i_CTRL-X| completion R Replace |R| + Rc Replace mode completion |compl-generic| Rv Virtual Replace |gR| - c Command-line + Rx Replace mode |i_CTRL-X| completion + c Command-line editing cv Vim Ex mode |gQ| ce Normal Ex mode |Q| r Hit-enter prompt diff --git a/src/nvim/state.c b/src/nvim/state.c index 4d9032b7a5..44a4de8abb 100644 --- a/src/nvim/state.c +++ b/src/nvim/state.c @@ -14,6 +14,8 @@ #include "nvim/option_defs.h" #include "nvim/ui.h" #include "nvim/os/input.h" +#include "nvim/ex_docmd.h" +#include "nvim/edit.h" #ifdef INCLUDE_GENERATED_DECLARATIONS # include "state.c.generated.h" @@ -127,19 +129,25 @@ char *get_mode(void) if (State & VREPLACE_FLAG) { buf[0] = 'R'; buf[1] = 'v'; - } else if (State & REPLACE_FLAG) { - buf[0] = 'R'; } else { - buf[0] = 'i'; + if (State & REPLACE_FLAG) { + buf[0] = 'R'; + } else { + buf[0] = 'i'; + } + if (ins_compl_active()) { + buf[1] = 'c'; + } else if (ctrl_x_mode == 1) { + buf[1] = 'x'; + } } - } else if (State & CMDLINE) { + } else if (State & CMDLINE || exmode_active) { buf[0] = 'c'; - if (exmode_active) { + if (exmode_active == EXMODE_VIM) { buf[1] = 'v'; + } else if (exmode_active == EXMODE_NORMAL) { + buf[1] = 'e'; } - } else if (exmode_active) { - buf[0] = 'c'; - buf[1] = 'e'; } else if (State & TERM_FOCUS) { buf[0] = 't'; } else { diff --git a/src/nvim/testdir/test_functions.vim b/src/nvim/testdir/test_functions.vim index 237a2dc820..59807ca946 100644 --- a/src/nvim/testdir/test_functions.vim +++ b/src/nvim/testdir/test_functions.vim @@ -191,4 +191,89 @@ func Test_toupper() call assert_equal("ⱥ ⱦ", tolower("Ⱥ Ⱦ")) endfunc +" Tests for the mode() function +let current_modes = '' +func! Save_mode() + let g:current_modes = mode(0) . '-' . mode(1) + return '' +endfunc +func! Test_mode() + new + call append(0, ["Blue Ball Black", "Brown Band Bowl", ""]) + + inoremap =Save_mode() + + normal! 3G + exe "normal i\\" + call assert_equal('i-i', g:current_modes) + exe "normal i\uBa\\\u" + call assert_equal('i-ic', g:current_modes) + exe "normal iBro\\\u" + call assert_equal('i-ic', g:current_modes) + exe "normal iBa\\\u" + call assert_equal('i-ix', g:current_modes) + exe "normal iBa\\\\u" + call assert_equal('i-ic', g:current_modes) + exe "normal iBro\\\\u" + call assert_equal('i-ic', g:current_modes) + exe "normal iBro\\\\\u" + call assert_equal('i-ic', g:current_modes) + exe "normal iCom\\\u" + call assert_equal('i-ic', g:current_modes) + exe "normal iCom\\\\u" + call assert_equal('i-ic', g:current_modes) + + exe "normal RBa\\\u" + call assert_equal('R-Rc', g:current_modes) + exe "normal RBro\\\u" + call assert_equal('R-Rc', g:current_modes) + exe "normal RBa\\\u" + call assert_equal('R-Rx', g:current_modes) + exe "normal RBa\\\\u" + call assert_equal('R-Rc', g:current_modes) + exe "normal RBro\\\\u" + call assert_equal('R-Rc', g:current_modes) + exe "normal RBro\\\\\u" + call assert_equal('R-Rc', g:current_modes) + exe "normal RCom\\\u" + call assert_equal('R-Rc', g:current_modes) + exe "normal RCom\\\\u" + call assert_equal('R-Rc', g:current_modes) + + call assert_equal('n', mode(0)) + call assert_equal('n', mode(1)) + + " How to test operator-pending mode? + + call feedkeys("v", 'xt') + call assert_equal('v', mode()) + call assert_equal('v', mode(1)) + call feedkeys("\V", 'xt') + call assert_equal('V', mode()) + call assert_equal('V', mode(1)) + call feedkeys("\\", 'xt') + call assert_equal("\", mode()) + call assert_equal("\", mode(1)) + call feedkeys("\", 'xt') + + call feedkeys("gh", 'xt') + call assert_equal('s', mode()) + call assert_equal('s', mode(1)) + call feedkeys("\gH", 'xt') + call assert_equal('S', mode()) + call assert_equal('S', mode(1)) + call feedkeys("\g\", 'xt') + call assert_equal("\", mode()) + call assert_equal("\", mode(1)) + call feedkeys("\", 'xt') + + call feedkeys(":echo \=Save_mode()\\", 'xt') + call assert_equal('c-c', g:current_modes) + call feedkeys("gQecho \=Save_mode()\\vi\", 'xt') + call assert_equal('c-cv', g:current_modes) + " How to test Ex mode? + + bwipe! + iunmap +endfunc diff --git a/src/nvim/testdir/test_mapping.vim b/src/nvim/testdir/test_mapping.vim index 7f93ddd56e..f5e4c4b90c 100644 --- a/src/nvim/testdir/test_mapping.vim +++ b/src/nvim/testdir/test_mapping.vim @@ -110,6 +110,8 @@ func Test_map_langmap() call feedkeys(":call append(line('$'), '+')\", "xt") call assert_equal('+', getline('$')) + iunmap a + iunmap c set nomodified endfunc @@ -120,7 +122,7 @@ func Test_map_feedkeys() $-1 call feedkeys("0qqdw.ifoo\qj0@q\", "xt") call assert_equal(['fooc d', 'fooc d'], getline(line('$') - 1, line('$'))) - unmap . + nunmap . set nomodified endfunc diff --git a/src/nvim/version.c b/src/nvim/version.c index 5accf8f1d6..c73cc0d3ee 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -821,7 +821,7 @@ static const int included_patches[] = { // 286, // 285 NA // 284 NA - // 283, + 283, 282, // 281 NA 280,