1
0
forked from aniani/vim

Update runtime files.

This commit is contained in:
Bram Moolenaar
2019-02-03 15:27:20 +01:00
parent 63d1fea814
commit 314dd79cac
27 changed files with 729 additions and 1273 deletions

View File

@@ -1,35 +1,25 @@
" Vim support file to help with paste mappings and menus " Vim support file to help with paste mappings and menus
" Maintainer: Bram Moolenaar <Bram@vim.org> " Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2017 Aug 30 " Last Change: 2019 Jan 27
" Define the string to use for items that are present both in Edit, Popup and " Define the string to use for items that are present both in Edit, Popup and
" Toolbar menu. Also used in mswin.vim and macmap.vim. " Toolbar menu. Also used in mswin.vim and macmap.vim.
" Pasting blockwise and linewise selections is not possible in Insert and let paste#paste_cmd = {'n': ":call paste#Paste()<CR>"}
" Visual mode without the +virtualedit feature. They are pasted as if they let paste#paste_cmd['v'] = '"-c<Esc>' . paste#paste_cmd['n']
" were characterwise instead. Add to that some tricks to leave the cursor in let paste#paste_cmd['i'] = "\<c-\>\<c-o>\"+gP"
" the right position, also for "gi".
if has("virtualedit")
let paste#paste_cmd = {'n': ":call paste#Paste()<CR>"}
let paste#paste_cmd['v'] = '"-c<Esc>' . paste#paste_cmd['n']
let paste#paste_cmd['i'] = "\<c-\>\<c-o>\"+gP"
func! paste#Paste() func! paste#Paste()
let ove = &ve let ove = &ve
set ve=all set ve=all
normal! `^ normal! `^
if @+ != '' if @+ != ''
normal! "+gP normal! "+gP
endif endif
let c = col(".") let c = col(".")
normal! i normal! i
if col(".") < c " compensate for i<ESC> moving the cursor left if col(".") < c " compensate for i<ESC> moving the cursor left
normal! l normal! l
endif endif
let &ve = ove let &ve = ove
endfunc endfunc
else
let paste#paste_cmd = {'n': "\"=@+.'xy'<CR>gPFx\"_2x"}
let paste#paste_cmd['v'] = '"-c<Esc>gix<Esc>' . paste#paste_cmd['n'] . '"_x'
let paste#paste_cmd['i'] = 'x<Esc>' . paste#paste_cmd['n'] . '"_s'
endif

View File

@@ -2,7 +2,7 @@
:" information about the environment of a possible bug in Vim. :" information about the environment of a possible bug in Vim.
:" :"
:" Maintainer: Bram Moolenaar <Bram@vim.org> :" Maintainer: Bram Moolenaar <Bram@vim.org>
:" Last change: 2005 Jun 12 :" Last change: 2019 Jan 27
:" :"
:" To use inside Vim: :" To use inside Vim:
:" :so $VIMRUNTIME/bugreport.vim :" :so $VIMRUNTIME/bugreport.vim
@@ -54,9 +54,7 @@
:endif :endif
:set all :set all
:set termcap :set termcap
:if has("autocmd") :au
: au
:endif
:if 1 :if 1
: echo "--- Normal/Visual mode mappings ---" : echo "--- Normal/Visual mode mappings ---"
:endif :endif

View File

@@ -1,7 +1,7 @@
" The default vimrc file. " The default vimrc file.
" "
" Maintainer: Bram Moolenaar <Bram@vim.org> " Maintainer: Bram Moolenaar <Bram@vim.org>
" Last change: 2017 Jun 13 " Last change: 2019 Jan 26
" "
" This is loaded if no vimrc file was found. " This is loaded if no vimrc file was found.
" Except when Vim is run with "-u NONE" or "-C". " Except when Vim is run with "-u NONE" or "-C".
@@ -90,33 +90,28 @@ if &t_Co > 2 || has("gui_running")
let c_comment_strings=1 let c_comment_strings=1
endif endif
" Only do this part when compiled with support for autocommands. " Enable file type detection.
if has("autocmd") " Use the default filetype settings, so that mail gets 'tw' set to 72,
" 'cindent' is on in C files, etc.
" Also load indent files, to automatically do language-dependent indenting.
" Revert with ":filetype off".
filetype plugin indent on
" Enable file type detection. " Put these in an autocmd group, so that you can revert them with:
" Use the default filetype settings, so that mail gets 'tw' set to 72, " ":augroup vimStartup | au! | augroup END"
" 'cindent' is on in C files, etc. augroup vimStartup
" Also load indent files, to automatically do language-dependent indenting. au!
" Revert with ":filetype off".
filetype plugin indent on
" Put these in an autocmd group, so that you can revert them with: " When editing a file, always jump to the last known cursor position.
" ":augroup vimStartup | au! | augroup END" " Don't do it when the position is invalid, when inside an event handler
augroup vimStartup " (happens when dropping a file on gvim) and for a commit message (it's
au! " likely a different one than last time).
autocmd BufReadPost *
\ if line("'\"") >= 1 && line("'\"") <= line("$") && &ft !~# 'commit'
\ | exe "normal! g`\""
\ | endif
" When editing a file, always jump to the last known cursor position. augroup END
" Don't do it when the position is invalid, when inside an event handler
" (happens when dropping a file on gvim) and for a commit message (it's
" likely a different one than last time).
autocmd BufReadPost *
\ if line("'\"") >= 1 && line("'\"") <= line("$") && &ft !~# 'commit'
\ | exe "normal! g`\""
\ | endif
augroup END
endif " has("autocmd")
" Convenient command to see the difference between the current buffer and the " Convenient command to see the difference between the current buffer and the
" file it was loaded from, thus the changes you made. " file it was loaded from, thus the changes you made.

View File

@@ -10193,7 +10193,7 @@ compatible Compiled to be very Vi compatible.
conpty Platform where |ConPTY| can be used. conpty Platform where |ConPTY| can be used.
cryptv Compiled with encryption support |encryption|. cryptv Compiled with encryption support |encryption|.
cscope Compiled with |cscope| support. cscope Compiled with |cscope| support.
cursorbind Compiled with |cursorbind| (always true) cursorbind Compiled with |'cursorbind'| (always true)
debug Compiled with "DEBUG" defined. debug Compiled with "DEBUG" defined.
dialog_con Compiled with console dialog support. dialog_con Compiled with console dialog support.
dialog_gui Compiled with GUI dialog support. dialog_gui Compiled with GUI dialog support.

View File

@@ -1,4 +1,4 @@
*if_perl.txt* For Vim version 8.1. Last change: 2017 Nov 24 *if_perl.txt* For Vim version 8.1. Last change: 2019 Jan 29
VIM REFERENCE MANUAL by Sven Verdoolaege VIM REFERENCE MANUAL by Sven Verdoolaege
@@ -192,7 +192,7 @@ VIM::Eval({expr}) Evaluates {expr} and returns (success, value) in list
and inserting line breaks. and inserting line breaks.
*perl-Blob* *perl-Blob*
VIM::Blob({expr}) Return Blob literal string 0zXXXX from scalar value. VIM::Blob({expr}) Return |Blob| literal string 0zXXXX from scalar value.
*perl-SetHeight* *perl-SetHeight*
Window->SetHeight({height}) Window->SetHeight({height})

View File

@@ -1,4 +1,4 @@
*if_ruby.txt* For Vim version 8.1. Last change: 2018 Mar 15 *if_ruby.txt* For Vim version 8.1. Last change: 2019 Jan 29
VIM REFERENCE MANUAL by Shugo Maeda VIM REFERENCE MANUAL by Shugo Maeda
@@ -112,7 +112,7 @@ Vim::message({msg})
*ruby-blob* *ruby-blob*
Vim::blob({arg}) Vim::blob({arg})
Return Blob literal string from {arg}. Return |Blob| literal string from {arg}.
*ruby-set_option* *ruby-set_option*
Vim::set_option({arg}) Vim::set_option({arg})

View File

@@ -1,4 +1,4 @@
*indent.txt* For Vim version 8.1. Last change: 2018 Apr 04 *indent.txt* For Vim version 8.1. Last change: 2019 Jan 31
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar

View File

@@ -1,4 +1,4 @@
*insert.txt* For Vim version 8.1. Last change: 2019 Jan 11 *insert.txt* For Vim version 8.1. Last change: 2019 Jan 29
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1078,7 +1078,8 @@ that contains the List. The Dict can have these items:
leading text is changed. leading text is changed.
If you want to suppress the warning message for an empty result, return If you want to suppress the warning message for an empty result, return
v:none. This is useful to implement asynchronous completion with complete(). |v:none|. This is useful to implement asynchronous completion with
|complete()|.
Other items are ignored. Other items are ignored.

View File

@@ -1,4 +1,4 @@
*options.txt* For Vim version 8.1. Last change: 2019 Jan 16 *options.txt* For Vim version 8.1. Last change: 2019 Feb 03
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -354,12 +354,12 @@ files. You use this command: >
:setlocal makeprg=perlmake :setlocal makeprg=perlmake
You can switch back to using the global value by making the local value empty: > You can switch back to using the global value by making the local value empty: >
:setlocal makeprg= :setlocal makeprg=
This only works for a string option. For a boolean option you need to use the This only works for a string option. For a number or boolean option you need
"<" flag, like this: > to use the "<" flag, like this: >
:setlocal autoread< :setlocal autoread<
Note that for non-boolean options using "<" copies the global value to the Note that for non-boolean and non-number options using "<" copies the global
local value, it doesn't switch back to using the global value (that matters value to the local value, it doesn't switch back to using the global value
when the global value changes later). You can also use: > (that matters when the global value changes later). You can also use: >
:set path< :set path<
This will make the local value of 'path' empty, so that the global value is This will make the local value of 'path' empty, so that the global value is
used. Thus it does the same as: > used. Thus it does the same as: >

View File

@@ -1,4 +1,4 @@
*os_vms.txt* For Vim version 8.1. Last change: 2019 Jan 19 *os_vms.txt* For Vim version 8.1. Last change: 2019 Jan 29
VIM REFERENCE MANUAL VIM REFERENCE MANUAL
@@ -105,7 +105,7 @@ You may want to use GUI with GTK icons, then you have to download and install
GTK for OpenVMS or at least runtime shareable images - LIBGTK from GTK for OpenVMS or at least runtime shareable images - LIBGTK from
polarhome.com polarhome.com
Post 7.2 Vim uses GTK2+ while the last GTK on OpenVMS is 1.2.10, therefore Post 7.2 Vim uses GTK2+ while the last GTK on OpenVMS is 1.2.10, therefore
the GTK build is no longer available. the GTK build is no longer available.
For more advanced questions, please send your problem to Vim on VMS mailing For more advanced questions, please send your problem to Vim on VMS mailing
list <vim-vms@polarhome.com> list <vim-vms@polarhome.com>
@@ -772,9 +772,9 @@ Version 8.1
Version 8.0 Version 8.0
- solve the 100% cpu usage issue while waiting for a keystroke - solve the 100% cpu usage issue while waiting for a keystroke
- correct the VMS warnings and errors around handling the INFINITY (used in json.c) - correct the VMS warnings and errors around handling the INFINITY (used in json.c)
- minor VMS port related changes - minor VMS port related changes
- correct the make_vms.mms file for 8.0 - correct the make_vms.mms file for 8.0
- fix [.TESTDIR]make_vms.mms for 8.0 - fix [.TESTDIR]make_vms.mms for 8.0
Version 7.4 Version 7.4
- Undo: VMS can not handle more than one dot in the filenames use "dir/name" -> "dir/_un_name" - Undo: VMS can not handle more than one dot in the filenames use "dir/name" -> "dir/_un_name"

View File

@@ -1092,6 +1092,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
'termbidi' options.txt /*'termbidi'* 'termbidi' options.txt /*'termbidi'*
'termencoding' options.txt /*'termencoding'* 'termencoding' options.txt /*'termencoding'*
'termguicolors' options.txt /*'termguicolors'* 'termguicolors' options.txt /*'termguicolors'*
'termmode' options.txt /*'termmode'*
'termwinkey' options.txt /*'termwinkey'* 'termwinkey' options.txt /*'termwinkey'*
'termwinscroll' options.txt /*'termwinscroll'* 'termwinscroll' options.txt /*'termwinscroll'*
'termwinsize' options.txt /*'termwinsize'* 'termwinsize' options.txt /*'termwinsize'*
@@ -1112,6 +1113,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
'titlestring' options.txt /*'titlestring'* 'titlestring' options.txt /*'titlestring'*
'tl' options.txt /*'tl'* 'tl' options.txt /*'tl'*
'tm' options.txt /*'tm'* 'tm' options.txt /*'tm'*
'tmod' options.txt /*'tmod'*
'to' options.txt /*'to'* 'to' options.txt /*'to'*
'toolbar' options.txt /*'toolbar'* 'toolbar' options.txt /*'toolbar'*
'toolbariconsize' options.txt /*'toolbariconsize'* 'toolbariconsize' options.txt /*'toolbariconsize'*
@@ -1717,6 +1719,7 @@ $VIM_POSIX vi_diff.txt /*$VIM_POSIX*
05.6 usr_05.txt /*05.6* 05.6 usr_05.txt /*05.6*
05.7 usr_05.txt /*05.7* 05.7 usr_05.txt /*05.7*
05.8 usr_05.txt /*05.8* 05.8 usr_05.txt /*05.8*
05.9 usr_05.txt /*05.9*
06.1 usr_06.txt /*06.1* 06.1 usr_06.txt /*06.1*
06.2 usr_06.txt /*06.2* 06.2 usr_06.txt /*06.2*
06.3 usr_06.txt /*06.3* 06.3 usr_06.txt /*06.3*
@@ -3741,6 +3744,7 @@ ColorSchemePre autocmd.txt /*ColorSchemePre*
Command-line cmdline.txt /*Command-line* Command-line cmdline.txt /*Command-line*
Command-line-mode cmdline.txt /*Command-line-mode* Command-line-mode cmdline.txt /*Command-line-mode*
CompleteDone autocmd.txt /*CompleteDone* CompleteDone autocmd.txt /*CompleteDone*
ConPTY terminal.txt /*ConPTY*
Contents quickref.txt /*Contents* Contents quickref.txt /*Contents*
Cscope if_cscop.txt /*Cscope* Cscope if_cscop.txt /*Cscope*
CursorHold autocmd.txt /*CursorHold* CursorHold autocmd.txt /*CursorHold*
@@ -5012,7 +5016,10 @@ ZZ editing.txt /*ZZ*
[:cntrl:] pattern.txt /*[:cntrl:]* [:cntrl:] pattern.txt /*[:cntrl:]*
[:digit:] pattern.txt /*[:digit:]* [:digit:] pattern.txt /*[:digit:]*
[:escape:] pattern.txt /*[:escape:]* [:escape:] pattern.txt /*[:escape:]*
[:fname:] pattern.txt /*[:fname:]*
[:graph:] pattern.txt /*[:graph:]* [:graph:] pattern.txt /*[:graph:]*
[:ident:] pattern.txt /*[:ident:]*
[:keyword:] pattern.txt /*[:keyword:]*
[:lower:] pattern.txt /*[:lower:]* [:lower:] pattern.txt /*[:lower:]*
[:print:] pattern.txt /*[:print:]* [:print:] pattern.txt /*[:print:]*
[:punct:] pattern.txt /*[:punct:]* [:punct:] pattern.txt /*[:punct:]*
@@ -5847,6 +5854,7 @@ dec-mouse options.txt /*dec-mouse*
decada_members ft_ada.txt /*decada_members* decada_members ft_ada.txt /*decada_members*
deepcopy() eval.txt /*deepcopy()* deepcopy() eval.txt /*deepcopy()*
defaults.vim starting.txt /*defaults.vim* defaults.vim starting.txt /*defaults.vim*
defaults.vim-explained usr_05.txt /*defaults.vim-explained*
definition-search tagsrch.txt /*definition-search* definition-search tagsrch.txt /*definition-search*
definitions intro.txt /*definitions* definitions intro.txt /*definitions*
delete() eval.txt /*delete()* delete() eval.txt /*delete()*
@@ -7313,7 +7321,7 @@ lambda eval.txt /*lambda*
lang-variable eval.txt /*lang-variable* lang-variable eval.txt /*lang-variable*
language-mapping map.txt /*language-mapping* language-mapping map.txt /*language-mapping*
last-pattern pattern.txt /*last-pattern* last-pattern pattern.txt /*last-pattern*
last-position-jump eval.txt /*last-position-jump* last-position-jump usr_05.txt /*last-position-jump*
last_buffer_nr() eval.txt /*last_buffer_nr()* last_buffer_nr() eval.txt /*last_buffer_nr()*
latex-syntax syntax.txt /*latex-syntax* latex-syntax syntax.txt /*latex-syntax*
lc_time-variable eval.txt /*lc_time-variable* lc_time-variable eval.txt /*lc_time-variable*

View File

@@ -1,4 +1,4 @@
*terminal.txt* For Vim version 8.1. Last change: 2018 May 17 *terminal.txt* For Vim version 8.1. Last change: 2019 Feb 03
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar

View File

@@ -1,4 +1,4 @@
*todo.txt* For Vim version 8.1. Last change: 2019 Jan 26 *todo.txt* For Vim version 8.1. Last change: 2019 Feb 02
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -38,6 +38,8 @@ browser use: https://github.com/vim/vim/issues/1234
*known-bugs* *known-bugs*
-------------------- Known bugs and current work ----------------------- -------------------- Known bugs and current work -----------------------
Timer test doesn't work on MS-Windows console, any way to make it work?
'incsearch' with :s: (#3321) 'incsearch' with :s: (#3321)
- Get E20 when using command history to get "'<,'>s/a/b" and no Visual area - Get E20 when using command history to get "'<,'>s/a/b" and no Visual area
was set. (#3837) was set. (#3837)
@@ -61,6 +63,7 @@ Terminal debugger:
- Add option to not open the program window. It's not used when attaching to - Add option to not open the program window. It's not used when attaching to
an already running program. (M. Kelly) an already running program. (M. Kelly)
- When only gdb window exists, on "quit" edit another buffer. - When only gdb window exists, on "quit" edit another buffer.
- Use a sign group
- Termdebug does not work when Vim was build with mzscheme: gdb hangs just - Termdebug does not work when Vim was build with mzscheme: gdb hangs just
after "run". Everything else works, including communication channel. Not after "run". Everything else works, including communication channel. Not
initializing mzscheme avoid the problem, thus it's not some #ifdef. initializing mzscheme avoid the problem, thus it's not some #ifdef.
@@ -107,48 +110,18 @@ Problem with Visual yank when 'linebreak' and 'showbreak' are set.
Patch with tests, but it's not clear how it is supposed to work. (tommm, 2018 Patch with tests, but it's not clear how it is supposed to work. (tommm, 2018
Nov 17) Asked about this, Dec 22. Christian will have a look. Nov 17) Asked about this, Dec 22. Christian will have a look.
Key mapping times out when using a timer in Gvim. (Michael Henry, 2018 Sep 9,
#3417)
Another report, with reproduction steps. (#3799)
Is this fixed by 8.1.0761?
Does not build with MinGW out of the box: Does not build with MinGW out of the box:
- _stat64 is not defined, need to use "struct stat" in vim.h - _stat64 is not defined, need to use "struct stat" in vim.h
- WINVER conflict, should use 0x0600 by default? - WINVER conflict, should use 0x0600 by default?
js_decode() does not handle infinity properly. (Dominique Pelle, 2019 Jan 10,
#3788)
Patch to avoid skipping buffers when loading a session. (Jason Franklin, 2019
Jan 20)
Patch to update example of how to restore the cursor. (Ken Takata, 2019 Jan
21)
Patch to fix problems with timer in GUI. (Ozaki Kiichi, #3817)
Should also fix #3824.
Change the order in which GUI handles events? Make it work like os_unix.c,
check timer on lower level, check for pending messages higher up.
Signs:
- screen not redrawn correctly. (Dominique Pelle, 2019 Jan 14, #3803)
- Use a sign group in the Termdebug plugin.
- Avoid that "sign unplace id" does a redraw right away, esp. when there is
a sequence of these commands. (Andy Stewart, 2018 Mar 16)
Crash when mixing matchadd and substitute()? (Max Christian Pohle, 2018 May Crash when mixing matchadd and substitute()? (Max Christian Pohle, 2018 May
13, #2910) Can't reproduce? 13, #2910) Can't reproduce?
Patch to recognize more systems with has(). (Ozaki Kiichi, #3855)
Merge checking for 'cursorline' and 'concealcursor', see neovim #9492. Merge checking for 'cursorline' and 'concealcursor', see neovim #9492.
Errors found with random data: Errors found with random data:
heap-buffer-overflow in alist_add (#2472) heap-buffer-overflow in alist_add (#2472)
Patch for xxd to make it work with 64 bit numbers. (Christer Jense, 2019 Jan
11, #3791)
Win32 key codes are messy. Mike Williams tried to fix that, but now old Win32 key codes are messy. Mike Williams tried to fix that, but now old
mappings no longer work. Create a new terminal for the better solution? mappings no longer work. Create a new terminal for the better solution?
@@ -177,12 +150,6 @@ similar to check_due_timer(). Also see #3809.
C syntax: {} inside () causes following {} to be highlighted as error. C syntax: {} inside () causes following {} to be highlighted as error.
(Michalis Giannakidis, 2006 Jun 1) (Michalis Giannakidis, 2006 Jun 1)
Patch on #3690 to fix that "wincmd p" does not always behave properly.
(Christian Brabandt, 2018 Dec 17)
Patch: When using %v in 'errorformat', assume the number is the screen column
not bytes, also handle multi-byte charactes. (Yegappan Lakshmanan, #3700)
Support setting the character displayed below the last line? Neovim uses Support setting the character displayed below the last line? Neovim uses
"eob:X" in 'fillchars'. "eob:X" in 'fillchars'.
@@ -197,37 +164,24 @@ balloonexpr() on MS-Windows GUI doesn't handle accented chars? (nivaemail,
2018 Sep 14) 2018 Sep 14)
Another request: #3811. Another request: #3811.
Patch for MinGW build with static libraries. (Ken Takata, 2018 Dec 16)
Patch to add new regexp classes :ident:, :keyword:, :fname:.
(ichizok, 2016 Jan 12, #1373)
Patch to add "termsig" - signal that caused job to end. (Ozaki Kiichi, 2019
Jan 10, #3786)
More warnings from static analysis: More warnings from static analysis:
https://lgtm.com/projects/g/vim/vim/alerts/?mode=list https://lgtm.com/projects/g/vim/vim/alerts/?mode=list
Patch for this: (Aron Widforss, 2018 Oct 13, #3539)
missing a test.
7 Make 'scrolloff' a global-local option, so that it can be different in the
quickfix window, for example. (Gary Holloway)
Also do 'sidescrolloff'.
Patch for ConPTY support, new one: #3794 Does this work now?
(Nobuhiro Takasaki)
Issue #3649: Retrying the X server connection once may be insufficient.
Since patch 8.1.0615 we try reconnecting five times. Does it work?
nvo-mode mapping works on Windows, not on Linux. (#3678) nvo-mode mapping works on Windows, not on Linux. (#3678)
Patch to be able to separately map CTRL-H and BS on Windows. Patch to be able to separately map CTRL-H and BS on Windows.
(Linwei, 2017 Jul 11, #1833) (Linwei, 2017 Jul 11, #1833)
Patch to improve readability of complicated if(). (ichizok, 2019 Jan 29,
#3879)
Pasting foo} causes Vim to behave weird. (John Little, 2018 Jun 17) Pasting foo} causes Vim to behave weird. (John Little, 2018 Jun 17)
Related to bracketed paste. I cannot reproduce it. Related to bracketed paste. I cannot reproduce it.
When 'confirm' is set a "silent q" doesn't show the prompt. It should in this
case. (Nate Peterson, 2019 Jan 31, #3892)
For "silent! q" it should not prompt and just fail.
Using CTRL-L to add a character to the search string doesn't work for the last Using CTRL-L to add a character to the search string doesn't work for the last
character in the file. (Smylers, 2018 Nov 17, #3620) character in the file. (Smylers, 2018 Nov 17, #3620)
Suggested patch by Hirohito Higashi, 2018 Nov 18. Suggested patch by Hirohito Higashi, 2018 Nov 18.
@@ -250,13 +204,16 @@ When 'sidescrolloff' is set, using "zl" to go to the end of the line, suddenly
scrolls back. Should allow for this scrolling, like 'scrolloff' does when scrolls back. Should allow for this scrolling, like 'scrolloff' does when
using CTRL-E. (Yee Cheng Chin, #3721) using CTRL-E. (Yee Cheng Chin, #3721)
Patch to add ":vsbuffer" - vertical split + :sbuffer. (Rob Pilling, 2019 Jan
17, #3816) Do we really need this?
Invalid memory access with old regexp engine. (Dominique Pelle, 2018 Sep 3, Invalid memory access with old regexp engine. (Dominique Pelle, 2018 Sep 3,
#3405) Introduced by 8.0.1517, which was fixing another memory access error. #3405) Introduced by 8.0.1517, which was fixing another memory access error.
(Sep 8) (Sep 8)
Patch to add complete_mode(). Shougo - #3866. Alternate patch by Hirohito
Higashi, 2019 Jan 27, included now?
Patch for ConPTY support, new one: #3794 Does this work now? It should.
(Nobuhiro Takasaki)
Add function to make use of internal diff, working on two lists and returning Add function to make use of internal diff, working on two lists and returning
unified diff (list of lines). unified diff (list of lines).
@@ -272,6 +229,8 @@ cursorline highlighting not removed after yanking in Visual mode.
(Matéo Zanibelli, 2018 Oct 30, #3578) (Matéo Zanibelli, 2018 Oct 30, #3578)
Patch by Christian, Oct 30. Patch by Christian, Oct 30.
Patch to clean up CI configs. (Ozaki Kiichi, 2019 Feb 1, #3890)
Memory leaks in test_channel? (or is it because of fork()) Memory leaks in test_channel? (or is it because of fork())
Using uninitialized value in test_crypt. Using uninitialized value in test_crypt.
Memory leak in test_terminal: Memory leak in test_terminal:
@@ -293,6 +252,11 @@ Patch to add match count and current index "3/44" when using "n" command.
matchaddpos() gets slow with many matches. Proposal by Rick Howe, 2018 Jul matchaddpos() gets slow with many matches. Proposal by Rick Howe, 2018 Jul
19. 19.
Should make 'listchars' global-local. Local to window or to buffer?
Probably window.
Add something like 'fillchars' local to window, but allow for specifying a
highlight name. Esp. for the statusline.
Sourceforge Vim pages still have content, redirect from empty page. Sourceforge Vim pages still have content, redirect from empty page.
Check for PHP errors. (Wayne Davison, 2018 Oct 26) Check for PHP errors. (Wayne Davison, 2018 Oct 26)
@@ -335,6 +299,9 @@ Further xdiff changes:
Difference between two regexp engines: #3373 Difference between two regexp engines: #3373
Patch to properly break CJK lines: #3875
Requires more tests. dbcs_ functions are not implemented.
Patch to add ch_listen() (Yasuhiro Matsumoto, 2018 Nov 26, #3639) Patch to add ch_listen() (Yasuhiro Matsumoto, 2018 Nov 26, #3639)
What is the practical use for this? What is the practical use for this?
@@ -424,8 +391,6 @@ behave strangely, as if there is a gap and a vertical window separator.
Make {skip} argument of searchpair() consistent with other places where we Make {skip} argument of searchpair() consistent with other places where we
pass an expression to evaluate. Allow passing zero for "never skip". pass an expression to evaluate. Allow passing zero for "never skip".
The 'scrolloff' option is global, make it global-local. #3195
Add an option similar to 'lazyredraw' to skip redrawing while executing a Add an option similar to 'lazyredraw' to skip redrawing while executing a
script or function. script or function.

View File

@@ -1,4 +1,4 @@
*usr_05.txt* For Vim version 8.1. Last change: 2018 Feb 20 *usr_05.txt* For Vim version 8.1. Last change: 2019 Jan 26
VIM USER MANUAL - by Bram Moolenaar VIM USER MANUAL - by Bram Moolenaar
@@ -11,12 +11,13 @@ Vim's capabilities. Or define your own macros.
|05.1| The vimrc file |05.1| The vimrc file
|05.2| The example vimrc file explained |05.2| The example vimrc file explained
|05.3| Simple mappings |05.3| The defaults.vim file explained
|05.4| Adding a package |05.4| Simple mappings
|05.5| Adding a plugin |05.5| Adding a package
|05.6| Adding a help file |05.6| Adding a plugin
|05.7| The option window |05.7| Adding a help file
|05.8| Often used options |05.8| The option window
|05.9| Often used options
Next chapter: |usr_06.txt| Using syntax highlighting Next chapter: |usr_06.txt| Using syntax highlighting
Previous chapter: |usr_04.txt| Making small changes Previous chapter: |usr_04.txt| Making small changes
@@ -81,6 +82,95 @@ In this section we will explain the various commands used in this file. This
will give you hints about how to set up your own preferences. Not everything will give you hints about how to set up your own preferences. Not everything
will be explained though. Use the ":help" command to find out more. will be explained though. Use the ":help" command to find out more.
>
" Get the defaults that most users want.
source $VIMRUNTIME/defaults.vim
>
This loads the "defaults.vim" file in the $VIMRUNTIME directory. This sets up
Vim for how most users like it. If you are one of the few that don't, then
comment out this line. The commands are explained below:
|defaults.vim-explained|
>
if has("vms")
set nobackup
else
set backup
if has('persistent_undo')
set undofile
endif
endif
This tells Vim to keep a backup copy of a file when overwriting it. But not
on the VMS system, since it keeps old versions of files already. The backup
file will have the same name as the original file with "~" added. See |07.4|
This also sets the 'undofile' option, if available. This will store the
multi-level undo information in a file. The result is that when you change a
file, exit Vim, and then edit the file again, you can undo the changes made
previously. It's a very powerful and useful feature, at the cost of storing a
file. For more information see |undo-persistence|.
The "if" command is very useful to set options
only when some condition is met. More about that in |usr_41.txt|.
>
if &t_Co > 2 || has("gui_running")
set hlsearch
endif
This switches on the 'hlsearch' option, telling Vim to highlight matches with
the last used search pattern.
>
augroup vimrcEx
au!
autocmd FileType text setlocal textwidth=78
augroup END
This makes Vim break text to avoid lines getting longer than 78 characters.
But only for files that have been detected to be plain text. There are
actually two parts here. "autocmd FileType text" is an autocommand. This
defines that when the file type is set to "text" the following command is
automatically executed. "setlocal textwidth=78" sets the 'textwidth' option
to 78, but only locally in one file.
The wrapper with "augroup vimrcEx" and "augroup END" makes it possible to
delete the autocommand with the "au!" command. See |:augroup|.
>
if has('syntax') && has('eval')
packadd! matchit
endif
This loads the "matchit" plugin if the required features are available.
It makes the |%| command more powerful. This is explained at
|matchit-install|.
==============================================================================
*05.3* The defaults.vim file explained *defaults.vim-explained*
The |defaults.vim| file is loaded when the user has no vimrc file. When you
create a new vimrc file, add this line near the top to keep using it: >
source $VIMRUNTIME/defaults.vim
Or use the vimrc_example.vim file, as explained above.
The following explains what defaults.vim is doing.
>
if exists('skip_defaults_vim')
finish
endif
>
Loading defaults.vim can be disabled with this command: >
let skip_defaults_vim = 1
This has to be done in the system vimrc file. See |system-vimrc|. If you
have a user vimrc this is not needed, since defaults.vim will not be loaded
automatically.
>
> >
set nocompatible set nocompatible
@@ -94,38 +184,19 @@ option off, thus 'nocompatible' takes care of this.
This specifies where in Insert mode the <BS> is allowed to delete the This specifies where in Insert mode the <BS> is allowed to delete the
character in front of the cursor. The three items, separated by commas, tell character in front of the cursor. The three items, separated by commas, tell
Vim to delete the white space at the start of the line, a line break and the Vim to delete the white space at the start of the line, a line break and the
character before where Insert mode started. character before where Insert mode started. See 'backspace'.
> >
set history=200
set autoindent Keep 200 commands and 200 search patterns in the history. Use another number
if you want to remember fewer or more lines. See 'history'.
This makes Vim use the indent of the previous line for a newly created line.
Thus there is the same amount of white space before the new line. For example
when pressing <Enter> in Insert mode, and when using the "o" command to open a
new line.
>
if has("vms")
set nobackup
else
set backup
endif
This tells Vim to keep a backup copy of a file when overwriting it. But not
on the VMS system, since it keeps old versions of files already. The backup
file will have the same name as the original file with "~" added. See |07.4|
>
set history=50
Keep 50 commands and 50 search patterns in the history. Use another number if
you want to remember fewer or more lines.
> >
set ruler set ruler
Always display the current cursor position in the lower right corner of the Always display the current cursor position in the lower right corner of the
Vim window. Vim window. See 'ruler'.
> >
set showcmd set showcmd
@@ -144,10 +215,37 @@ the "2fw" command is executed and the displayed "2f" is removed.
^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^
'showmode' 'showcmd' 'ruler' 'showmode' 'showcmd' 'ruler'
>
set wildmenu
Display completion matches in a status line. That is when you type <Tab> and
there is more than one match. See 'wildmenu'.
>
set ttimeout
set ttimeoutlen=100
This makes typing Esc take effect more quickly. Normally Vim waits a second
to see if the Esc is the start of an escape sequence. If you have a very slow
remote connection, increase the number. See 'ttimeout'.
>
set display=truncate
Show @@@ in the last line if it is truncated, instead of hiding the whole
like. See 'display'.
> >
set incsearch set incsearch
Display the match for a search pattern when halfway typing it. Display the match for a search pattern when halfway typing it. See
'incsearch'.
>
set nrformats-=octal
Do not recognize numbers starting with a zero as octal. See 'nrformats'.
> >
map Q gq map Q gq
@@ -157,24 +255,31 @@ defines the "Q" command to do formatting with the "gq" operator. This is how
it worked before Vim 5.0. Otherwise the "Q" command starts Ex mode, but you it worked before Vim 5.0. Otherwise the "Q" command starts Ex mode, but you
will not need it. will not need it.
>
inoremap <C-U> <C-G>u<C-U>
>
CTRL-U in insert mode deletes all entered text in the current line. Use
CTRL-G u to first break undo, so that you can undo CTRL-U after inserting a
line break. Revert with ":iunmap <C-U>".
>
if has('mouse')
set mouse=a
endif
Enable using the mouse if available. See 'mouse'.
> >
vnoremap _g y:exe "grep /" . escape(@", '\\/') . "/ *.c *.h"<CR> vnoremap _g y:exe "grep /" . escape(@", '\\/') . "/ *.c *.h"<CR>
This mapping yanks the visually selected text and searches for it in C files. This mapping yanks the visually selected text and searches for it in C files.
This is a complicated mapping. You can see that mappings can be used to do You can see that a mapping can be used to do quite complicated things. Still,
quite complicated things. Still, it is just a sequence of commands that are it is just a sequence of commands that are executed like you typed them.
executed like you typed them.
> >
if &t_Co > 2 || has("gui_running") syntax on
syntax on
set hlsearch
endif
This switches on syntax highlighting, but only if colors are available. And Enable highlighting files in color. See |syntax|.
the 'hlsearch' option tells Vim to highlight matches with the last used search
pattern. The "if" command is very useful to set options only when some
condition is met. More about that in |usr_41.txt|.
*vimrc-filetype* > *vimrc-filetype* >
filetype plugin indent on filetype plugin indent on
@@ -201,21 +306,12 @@ This switches on three very clever mechanisms:
automatically. Vim comes with these indent rules for a number of automatically. Vim comes with these indent rules for a number of
filetypes. See |:filetype-indent-on| and 'indentexpr'. filetypes. See |:filetype-indent-on| and 'indentexpr'.
>
autocmd FileType text setlocal textwidth=78
This makes Vim break text to avoid lines getting longer than 78 characters. *restore-cursor* *last-position-jump* >
But only for files that have been detected to be plain text. There are autocmd BufReadPost *
actually two parts here. "autocmd FileType text" is an autocommand. This \ if line("'\"") >= 1 && line("'\"") <= line("$") && &ft !~# 'commit'
defines that when the file type is set to "text" the following command is \ | exe "normal! g`\""
automatically executed. "setlocal textwidth=78" sets the 'textwidth' option \ | endif
to 78, but only locally in one file.
*restore-cursor* >
autocmd BufReadPost *
\ if line("'\"") > 1 && line("'\"") <= line("$") |
\ exe "normal! g`\"" |
\ endif
Another autocommand. This time it is used after reading any file. The Another autocommand. This time it is used after reading any file. The
complicated stuff after it checks if the '" mark is defined, and jumps to it complicated stuff after it checks if the '" mark is defined, and jumps to it
@@ -224,8 +320,22 @@ from the previous line. That avoids a line getting very long.
See |line-continuation|. This only works in a Vim script file, not when See |line-continuation|. This only works in a Vim script file, not when
typing commands at the command-line. typing commands at the command-line.
>
command DiffOrig vert new | set bt=nofile | r ++edit # | 0d_ | diffthis
\ | wincmd p | diffthis
This adds the ":DiffOrig" command. Use this in a modified buffer to see the
differences with the file it was loaded from. See |diff|.
>
set nolangremap
Prevent that the langmap option applies to characters that result from a
mapping. If set (default), this may break plugins (but it's backward
compatible). See 'langremap'.
============================================================================== ==============================================================================
*05.3* Simple mappings *05.4* Simple mappings
A mapping enables you to bind a set of Vim commands to a single key. Suppose, A mapping enables you to bind a set of Vim commands to a single key. Suppose,
for example, that you need to surround certain words with curly braces. In for example, that you need to surround certain words with curly braces. In
@@ -272,7 +382,7 @@ The ":map" command (with no arguments) lists your current mappings. At
least the ones for Normal mode. More about mappings in section |40.1|. least the ones for Normal mode. More about mappings in section |40.1|.
============================================================================== ==============================================================================
*05.4* Adding a package *add-package* *matchit-install* *05.5* Adding a package *add-package* *matchit-install*
A package is a set of files that you can add to Vim. There are two kinds of A package is a set of files that you can add to Vim. There are two kinds of
packages: optional and automatically loaded on startup. packages: optional and automatically loaded on startup.
@@ -310,7 +420,7 @@ an archive or as a repository. For an archive you can follow these steps:
More information about packages can be found here: |packages|. More information about packages can be found here: |packages|.
============================================================================== ==============================================================================
*05.5* Adding a plugin *add-plugin* *plugin* *05.6* Adding a plugin *add-plugin* *plugin*
Vim's functionality can be extended by adding plugins. A plugin is nothing Vim's functionality can be extended by adding plugins. A plugin is nothing
more than a Vim script file that is loaded automatically when Vim starts. You more than a Vim script file that is loaded automatically when Vim starts. You
@@ -462,7 +572,7 @@ Further reading:
|new-filetype| How to detect a new file type. |new-filetype| How to detect a new file type.
============================================================================== ==============================================================================
*05.6* Adding a help file *add-local-help* *05.7* Adding a help file *add-local-help*
If you are lucky, the plugin you installed also comes with a help file. We If you are lucky, the plugin you installed also comes with a help file. We
will explain how to install the help file, so that you can easily find help will explain how to install the help file, so that you can easily find help
@@ -507,7 +617,7 @@ them through the tag.
For writing a local help file, see |write-local-help|. For writing a local help file, see |write-local-help|.
============================================================================== ==============================================================================
*05.7* The option window *05.8* The option window
If you are looking for an option that does what you want, you can search in If you are looking for an option that does what you want, you can search in
the help files here: |options|. Another way is by using this command: > the help files here: |options|. Another way is by using this command: >
@@ -546,7 +656,7 @@ border. This is what the 'scrolloff' option does, it specifies an offset
from the window border where scrolling starts. from the window border where scrolling starts.
============================================================================== ==============================================================================
*05.8* Often used options *05.9* Often used options
There are an awful lot of options. Most of them you will hardly ever use. There are an awful lot of options. Most of them you will hardly ever use.
Some of the more useful ones will be mentioned here. Don't forget you can Some of the more useful ones will be mentioned here. Don't forget you can

View File

@@ -1,4 +1,4 @@
*usr_11.txt* For Vim version 8.1. Last change: 2018 Apr 13 *usr_11.txt* For Vim version 8.1. Last change: 2019 Jan 30
VIM USER MANUAL - by Bram Moolenaar VIM USER MANUAL - by Bram Moolenaar
@@ -120,7 +120,7 @@ the resulting files if they are what you expected.
USING A SPECIFIC SWAP FILE USING A SPECIFIC SWAP FILE
If you know which swap file needs to be used, you can recover by giving the If you know which swap file needs to be used, you can recover by giving the
swap file name. Vim will then finds out the name of the original file from swap file name. Vim will then find out the name of the original file from
the swap file. the swap file.
Example: > Example: >
@@ -284,7 +284,6 @@ If you really don't want to see this message, you can add the 'A' flag to the
'shortmess' option. But it's very unusual that you need this. 'shortmess' option. But it's very unusual that you need this.
For remarks about encryption and the swap file, see |:recover-crypt|. For remarks about encryption and the swap file, see |:recover-crypt|.
For programatic access to the swap file, see |swapinfo()|.
============================================================================== ==============================================================================
*11.4* Further reading *11.4* Further reading

View File

@@ -1,4 +1,4 @@
*usr_41.txt* For Vim version 8.1. Last change: 2019 Jan 12 *usr_41.txt* For Vim version 8.1. Last change: 2019 Jan 29
VIM USER MANUAL - by Bram Moolenaar VIM USER MANUAL - by Bram Moolenaar
@@ -771,7 +771,7 @@ System functions and manipulation of files:
systemlist() get the result of a shell command as a list systemlist() get the result of a shell command as a list
hostname() name of the system hostname() name of the system
readfile() read a file into a List of lines readfile() read a file into a List of lines
writefile() write a List of lines into a file writefile() write a List of lines or Blob into a file
Date and Time: *date-functions* *time-functions* Date and Time: *date-functions* *time-functions*
getftime() get last modification time of a file getftime() get last modification time of a file
@@ -941,6 +941,7 @@ Testing: *test-functions*
test_override() test with Vim internal overrides test_override() test with Vim internal overrides
test_garbagecollect_now() free memory right now test_garbagecollect_now() free memory right now
test_ignore_error() ignore a specific error message test_ignore_error() ignore a specific error message
test_null_blob() return a null Blob
test_null_channel() return a null Channel test_null_channel() return a null Channel
test_null_dict() return a null Dict test_null_dict() return a null Dict
test_null_job() return a null Job test_null_job() return a null Job

View File

@@ -1,6 +1,6 @@
" Vim script for Evim key bindings " Vim script for Evim key bindings
" Maintainer: Bram Moolenaar <Bram@vim.org> " Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2017 Sep 20 " Last Change: 2019 Jan 27
" Don't use Vi-compatible mode. " Don't use Vi-compatible mode.
set nocompatible set nocompatible
@@ -49,19 +49,14 @@ if &t_Co > 2 || has("gui_running")
nohlsearch nohlsearch
endif endif
" Only do this part when compiled with support for autocommands. " Enable file type detection.
if has("autocmd") " Use the default filetype settings, so that mail gets 'tw' set to 72,
" 'cindent' is on in C files, etc.
" Also load indent files, to automatically do language-dependent indenting.
filetype plugin indent on
" Enable file type detection. " For all text files set 'textwidth' to 78 characters.
" Use the default filetype settings, so that mail gets 'tw' set to 72, au FileType text setlocal tw=78
" 'cindent' is on in C files, etc.
" Also load indent files, to automatically do language-dependent indenting.
filetype plugin indent on
" For all text files set 'textwidth' to 78 characters.
au FileType text setlocal tw=78
endif " has("autocmd")
" Add optional packages. " Add optional packages.
" "

View File

@@ -1,7 +1,7 @@
" Vim support file to detect file types " Vim support file to detect file types
" "
" Maintainer: Bram Moolenaar <Bram@vim.org> " Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2019 Jan 18 " Last Change: 2019 Jan 28
" Listen very carefully, I will say this only once " Listen very carefully, I will say this only once
if exists("did_load_filetypes") if exists("did_load_filetypes")
@@ -97,6 +97,7 @@ au BufNewFile,BufRead proftpd.conf* call s:StarSetf('apachestyle')
" Apache config file " Apache config file
au BufNewFile,BufRead .htaccess,*/etc/httpd/*.conf setf apache au BufNewFile,BufRead .htaccess,*/etc/httpd/*.conf setf apache
au BufNewFile,BufRead */etc/apache2/sites-*/*.com setf apache
" XA65 MOS6510 cross assembler " XA65 MOS6510 cross assembler
au BufNewFile,BufRead *.a65 setf a65 au BufNewFile,BufRead *.a65 setf a65

View File

@@ -3,10 +3,11 @@
" Maintainer: Christian Brabandt <cb@256bit.org> " Maintainer: Christian Brabandt <cb@256bit.org>
" Original Author: Nikolai Weibull <now@bitwi.se> " Original Author: Nikolai Weibull <now@bitwi.se>
" Previous Maintainer: Peter Aronoff <telemachus@arpinum.org> " Previous Maintainer: Peter Aronoff <telemachus@arpinum.org>
" Latest Revision: 2018-03-26 " Latest Revision: 2019-02-02
" License: Vim (see :h license) " License: Vim (see :h license)
" Repository: https://github.com/chrisbra/vim-sh-indent " Repository: https://github.com/chrisbra/vim-sh-indent
" Changelog: " Changelog:
" 20190201 - Better check for closing if sections
" 20180724 - make check for zsh syntax more rigid (needs word-boundaries) " 20180724 - make check for zsh syntax more rigid (needs word-boundaries)
" 20180326 - better support for line continuation " 20180326 - better support for line continuation
" 20180325 - better detection of function definitions " 20180325 - better detection of function definitions
@@ -59,6 +60,7 @@ function! s:indent_value(option)
endfunction endfunction
function! GetShIndent() function! GetShIndent()
let curline = getline(v:lnum)
let lnum = prevnonblank(v:lnum - 1) let lnum = prevnonblank(v:lnum - 1)
if lnum == 0 if lnum == 0
return 0 return 0
@@ -72,7 +74,7 @@ function! GetShIndent()
" Check contents of previous lines " Check contents of previous lines
if line =~ '^\s*\%(if\|then\|do\|else\|elif\|case\|while\|until\|for\|select\|foreach\)\>' || if line =~ '^\s*\%(if\|then\|do\|else\|elif\|case\|while\|until\|for\|select\|foreach\)\>' ||
\ (&ft is# 'zsh' && line =~ '\<\%(if\|then\|do\|else\|elif\|case\|while\|until\|for\|select\|foreach\)\>') \ (&ft is# 'zsh' && line =~ '\<\%(if\|then\|do\|else\|elif\|case\|while\|until\|for\|select\|foreach\)\>')
if line !~ '\<\%(fi\|esac\|done\|end\)\>\s*\%(#.*\)\=$' if !s:is_end_expression(line)
let ind += s:indent_value('default') let ind += s:indent_value('default')
endif endif
elseif s:is_case_label(line, pnum) elseif s:is_case_label(line, pnum)
@@ -90,7 +92,10 @@ function! GetShIndent()
endif endif
elseif s:end_block(line) && !s:start_block(line) elseif s:end_block(line) && !s:start_block(line)
let ind -= s:indent_value('default') let ind -= s:indent_value('default')
elseif pnum != 0 && s:is_continuation_line(pline) && !s:end_block(getline(v:lnum)) elseif pnum != 0 &&
\ s:is_continuation_line(pline) &&
\ !s:end_block(curline) &&
\ !s:is_end_expression(curline)
" only add indent, if line and pline is in the same block " only add indent, if line and pline is in the same block
let i = v:lnum let i = v:lnum
let ind2 = indent(s:find_continued_lnum(pnum)) let ind2 = indent(s:find_continued_lnum(pnum))
@@ -106,8 +111,15 @@ function! GetShIndent()
let pine = line let pine = line
" Check content of current line " Check content of current line
let line = getline(v:lnum) let line = curline
if line =~ '^\s*\%(then\|do\|else\|elif\|fi\|done\|end\)\>' || s:end_block(line) " Current line is a endif line, so get indent from start of "if condition" line
" TODO: should we do the same for other "end" lines?
if curline =~ '^\s*\%(fi\)\s*\%(#.*\)\=$'
let previous_line = search('if.\{-\};\s*then\s*\%(#.*\)\=$', 'bnW')
if previous_line > 0
let ind = indent(previous_line)
endif
elseif line =~ '^\s*\%(then\|do\|else\|elif\|done\|end\)\>' || s:end_block(line)
let ind -= s:indent_value('default') let ind -= s:indent_value('default')
elseif line =~ '^\s*esac\>' && s:is_case_empty(getline(v:lnum - 1)) elseif line =~ '^\s*esac\>' && s:is_case_empty(getline(v:lnum - 1))
let ind -= s:indent_value('default') let ind -= s:indent_value('default')
@@ -210,8 +222,8 @@ endfunction
function! s:is_here_doc(line) function! s:is_here_doc(line)
if a:line =~ '^\w\+$' if a:line =~ '^\w\+$'
let here_pat = '<<-\?'. s:escape(a:line). '\$' let here_pat = '<<-\?'. s:escape(a:line). '\$'
return search(here_pat, 'bnW') > 0 return search(here_pat, 'bnW') > 0
endif endif
return 0 return 0
endfunction endfunction
@@ -256,5 +268,9 @@ function! s:is_comment(line)
return a:line =~ '^\s*#' return a:line =~ '^\s*#'
endfunction endfunction
function! s:is_end_expression(line)
return a:line =~ '\<\%(fi\|esac\|done\|end\)\>\s*\%(#.*\)\=$'
endfunction
let &cpo = s:cpo_save let &cpo = s:cpo_save
unlet s:cpo_save unlet s:cpo_save

View File

@@ -1,9 +1,11 @@
" Language: xml " Language: xml
" Repository: https://github.com/chrisbra/vim-xml-ftplugin " Repository: https://github.com/chrisbra/vim-xml-ftplugin
" Last Changed: Dec 07th, 2018 " Last Changed: Jan 28, 2019
" Maintainer: Christian Brabandt <cb@256bit.org> " Maintainer: Christian Brabandt <cb@256bit.org>
" Previous Maintainer: Johannes Zellner <johannes@zellner.org> " Previous Maintainer: Johannes Zellner <johannes@zellner.org>
" Last Change: " Last Change:
" 20190128 - Make sure to find previous tag
" https://github.com/chrisbra/vim-xml-ftplugin/issues/4
" 20181116 - Fix indentation when tags start with a colon or an underscore " 20181116 - Fix indentation when tags start with a colon or an underscore
" https://github.com/vim/vim/pull/926 " https://github.com/vim/vim/pull/926
" 20181022 - Do not overwrite indentkeys setting " 20181022 - Do not overwrite indentkeys setting
@@ -88,15 +90,16 @@ endfun
fun! XmlIndentGet(lnum, use_syntax_check) fun! XmlIndentGet(lnum, use_syntax_check)
" Find a non-empty line above the current line. " Find a non-empty line above the current line.
let plnum = prevnonblank(a:lnum - 1) let plnum = prevnonblank(a:lnum - 1)
" Find previous line with a tag (regardless whether open or closed)
let ptag = search('.\{-}<[/:A-Z_a-z]', 'bnw')
" Hit the start of the file, use zero indent. " Hit the start of the file, use zero indent.
if plnum == 0 if plnum == 0
return 0 return 0
endif endif
let syn_name = '' " Find previous line with a tag (regardless whether open or closed,
" but always start restrict the match to a line before the current one
let ptag_pattern = '\%(.\{-}<[/:A-Z_a-z]\)'. '\%(\&\%<'. line('.').'l\)'
let ptag = search(ptag_pattern, 'bnw')
let syn_name = ''
if a:use_syntax_check if a:use_syntax_check
let check_lnum = <SID>XmlIndentSynCheck(plnum) let check_lnum = <SID>XmlIndentSynCheck(plnum)
let check_alnum = <SID>XmlIndentSynCheck(a:lnum) let check_alnum = <SID>XmlIndentSynCheck(a:lnum)

View File

@@ -2,7 +2,7 @@
" You can also use this as a start for your own set of menus. " You can also use this as a start for your own set of menus.
" "
" Maintainer: Bram Moolenaar <Bram@vim.org> " Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2018 May 17 " Last Change: 2019 Jan 27
" Note that ":an" (short for ":anoremenu") is often used to make a menu work " Note that ":an" (short for ":anoremenu") is often used to make a menu work
" in all modes and avoid side effects from mappings defined by the user. " in all modes and avoid side effects from mappings defined by the user.
@@ -856,17 +856,15 @@ an 70.300 &Window.&New<Tab>^Wn <C-W>n
an 70.310 &Window.S&plit<Tab>^Ws <C-W>s an 70.310 &Window.S&plit<Tab>^Ws <C-W>s
an 70.320 &Window.Sp&lit\ To\ #<Tab>^W^^ <C-W><C-^> an 70.320 &Window.Sp&lit\ To\ #<Tab>^W^^ <C-W><C-^>
an 70.330 &Window.Split\ &Vertically<Tab>^Wv <C-W>v an 70.330 &Window.Split\ &Vertically<Tab>^Wv <C-W>v
if has("vertsplit") an <silent> 70.332 &Window.Split\ File\ E&xplorer :call MenuExplOpen()<CR>
an <silent> 70.332 &Window.Split\ File\ E&xplorer :call MenuExplOpen()<CR> if !exists("*MenuExplOpen")
if !exists("*MenuExplOpen") fun MenuExplOpen()
fun MenuExplOpen() if @% == ""
if @% == "" 20vsp .
20vsp . else
else exe "20vsp " . s:FnameEscape(expand("%:p:h"))
exe "20vsp " . s:FnameEscape(expand("%:p:h")) endif
endif endfun
endfun
endif
endif endif
an 70.335 &Window.-SEP1- <Nop> an 70.335 &Window.-SEP1- <Nop>
an 70.340 &Window.&Close<Tab>^Wc :confirm close<CR> an 70.340 &Window.&Close<Tab>^Wc :confirm close<CR>

View File

@@ -1,7 +1,7 @@
" These commands create the option window. " These commands create the option window.
" "
" Maintainer: Bram Moolenaar <Bram@vim.org> " Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2018 May 15 " Last Change: 2019 Jan 27
" If there already is an option window, jump to that one. " If there already is an option window, jump to that one.
let buf = bufnr('option-window') let buf = bufnr('option-window')
@@ -395,11 +395,9 @@ endif
call <SID>Header("syntax, highlighting and spelling") call <SID>Header("syntax, highlighting and spelling")
call append("$", "background\t\"dark\" or \"light\"; the background color brightness") call append("$", "background\t\"dark\" or \"light\"; the background color brightness")
call <SID>OptionG("bg", &bg) call <SID>OptionG("bg", &bg)
if has("autocmd") call append("$", "filetype\ttype of file; triggers the FileType event when set")
call append("$", "filetype\ttype of file; triggers the FileType event when set") call append("$", "\t(local to buffer)")
call append("$", "\t(local to buffer)") call <SID>OptionL("ft")
call <SID>OptionL("ft")
endif
if has("syntax") if has("syntax")
call append("$", "syntax\tname of syntax highlighting used") call append("$", "syntax\tname of syntax highlighting used")
call append("$", "\t(local to buffer)") call append("$", "\t(local to buffer)")
@@ -454,10 +452,8 @@ if has("statusline")
endif endif
call append("$", "equalalways\tmake all windows the same size when adding/removing windows") call append("$", "equalalways\tmake all windows the same size when adding/removing windows")
call <SID>BinOptionG("ea", &ea) call <SID>BinOptionG("ea", &ea)
if has("vertsplit") call append("$", "eadirection\tin which direction 'equalalways' works: \"ver\", \"hor\" or \"both\"")
call append("$", "eadirection\tin which direction 'equalalways' works: \"ver\", \"hor\" or \"both\"") call <SID>OptionG("ead", &ead)
call <SID>OptionG("ead", &ead)
endif
call append("$", "winheight\tminimal number of lines used for the current window") call append("$", "winheight\tminimal number of lines used for the current window")
call append("$", " \tset wh=" . &wh) call append("$", " \tset wh=" . &wh)
call append("$", "winminheight\tminimal number of lines used for any window") call append("$", "winminheight\tminimal number of lines used for any window")
@@ -465,15 +461,13 @@ call append("$", " \tset wmh=" . &wmh)
call append("$", "winfixheight\tkeep the height of the window") call append("$", "winfixheight\tkeep the height of the window")
call append("$", "\t(local to window)") call append("$", "\t(local to window)")
call <SID>BinOptionL("wfh") call <SID>BinOptionL("wfh")
if has("vertsplit")
call append("$", "winfixwidth\tkeep the width of the window") call append("$", "winfixwidth\tkeep the width of the window")
call append("$", "\t(local to window)") call append("$", "\t(local to window)")
call <SID>BinOptionL("wfw") call <SID>BinOptionL("wfw")
call append("$", "winwidth\tminimal number of columns used for the current window") call append("$", "winwidth\tminimal number of columns used for the current window")
call append("$", " \tset wiw=" . &wiw) call append("$", " \tset wiw=" . &wiw)
call append("$", "winminwidth\tminimal number of columns used for any window") call append("$", "winminwidth\tminimal number of columns used for any window")
call append("$", " \tset wmw=" . &wmw) call append("$", " \tset wmw=" . &wmw)
endif
call append("$", "helpheight\tinitial height of the help window") call append("$", "helpheight\tinitial height of the help window")
call append("$", " \tset hh=" . &hh) call append("$", " \tset hh=" . &hh)
if has("quickfix") if has("quickfix")
@@ -490,22 +484,16 @@ call append("$", "\tto a buffer")
call <SID>OptionG("swb", &swb) call <SID>OptionG("swb", &swb)
call append("$", "splitbelow\ta new window is put below the current one") call append("$", "splitbelow\ta new window is put below the current one")
call <SID>BinOptionG("sb", &sb) call <SID>BinOptionG("sb", &sb)
if has("vertsplit") call append("$", "splitright\ta new window is put right of the current one")
call append("$", "splitright\ta new window is put right of the current one") call <SID>BinOptionG("spr", &spr)
call <SID>BinOptionG("spr", &spr) call append("$", "scrollbind\tthis window scrolls together with other bound windows")
endif call append("$", "\t(local to window)")
if has("scrollbind") call <SID>BinOptionL("scb")
call append("$", "scrollbind\tthis window scrolls together with other bound windows") call append("$", "scrollopt\t\"ver\", \"hor\" and/or \"jump\"; list of options for 'scrollbind'")
call append("$", "\t(local to window)") call <SID>OptionG("sbo", &sbo)
call <SID>BinOptionL("scb") call append("$", "cursorbind\tthis window's cursor moves together with other bound windows")
call append("$", "scrollopt\t\"ver\", \"hor\" and/or \"jump\"; list of options for 'scrollbind'") call append("$", "\t(local to window)")
call <SID>OptionG("sbo", &sbo) call <SID>BinOptionL("crb")
endif
if has("cursorbind")
call append("$", "cursorbind\tthis window's cursor moves together with other bound windows")
call append("$", "\t(local to window)")
call <SID>BinOptionL("crb")
endif
if has("terminal") if has("terminal")
call append("$", "termwinsize\tsize of a terminal window") call append("$", "termwinsize\tsize of a terminal window")
call append("$", "\t(local to window)") call append("$", "\t(local to window)")
@@ -1105,12 +1093,10 @@ if has("wildmenu")
call append("$", "wildmenu\tcommand-line completion shows a list of matches") call append("$", "wildmenu\tcommand-line completion shows a list of matches")
call <SID>BinOptionG("wmnu", &wmnu) call <SID>BinOptionG("wmnu", &wmnu)
endif endif
if has("vertsplit") call append("$", "cedit\tkey used to open the command-line window")
call append("$", "cedit\tkey used to open the command-line window") call <SID>OptionG("cedit", &cedit)
call <SID>OptionG("cedit", &cedit) call append("$", "cmdwinheight\theight of the command-line window")
call append("$", "cmdwinheight\theight of the command-line window") call <SID>OptionG("cwh", &cwh)
call <SID>OptionG("cwh", &cwh)
endif
call <SID>Header("executing external commands") call <SID>Header("executing external commands")
@@ -1292,14 +1278,10 @@ endif
call <SID>Header("various") call <SID>Header("various")
if has("virtualedit") call append("$", "virtualedit\twhen to use virtual editing: \"block\", \"insert\" and/or \"all\"")
call append("$", "virtualedit\twhen to use virtual editing: \"block\", \"insert\" and/or \"all\"") call <SID>OptionG("ve", &ve)
call <SID>OptionG("ve", &ve) call append("$", "eventignore\tlist of autocommand events which are to be ignored")
endif call <SID>OptionG("ei", &ei)
if has("autocmd")
call append("$", "eventignore\tlist of autocommand events which are to be ignored")
call <SID>OptionG("ei", &ei)
endif
call append("$", "loadplugins\tload plugin scripts when starting up") call append("$", "loadplugins\tload plugin scripts when starting up")
call <SID>BinOptionG("lpl", &lpl) call <SID>BinOptionG("lpl", &lpl)
call append("$", "exrc\tenable reading .vimrc/.exrc/.gvimrc in the current directory") call append("$", "exrc\tenable reading .vimrc/.exrc/.gvimrc in the current directory")

View File

@@ -1,13 +1,13 @@
*matchit.txt* Extended "%" matching *matchit.txt* Extended "%" matching
For instructions on installing this file, type For instructions on installing this file, type
:help matchit-install `:help matchit-install`
inside Vim. inside Vim.
For Vim version 6.3. Last change: 2018 Dec 31 For Vim version 8.1. Last change: 2019 Jan 28
VIM REFERENCE MANUAL by Benji Fisher VIM REFERENCE MANUAL by Benji Fisher et al
*matchit* *matchit.vim* *matchit* *matchit.vim*
@@ -69,12 +69,8 @@ for how to specify matching patterns.
MODES: *matchit-modes* *matchit-v_%* *matchit-o_%* MODES: *matchit-modes* *matchit-v_%* *matchit-o_%*
Mostly, % and related motions (|g%| and |[%| and |]%|) work just like built-in Mostly, % and related motions (|g%| and |[%| and |]%|) should just work like built-in
|motion| commands in |Operator-pending| and |Visual| modes. However, you |motion| commands in |Operator-pending| and |Visual| modes (as of 8.1.648)
cannot make these motions |linewise| or |characterwise|, since the |:omap|s
that define them start with "v" in order to make the default behavior
inclusive. (See |o_v|.) In other words, "dV%" will not work. The
work-around is to go through Visual mode: "V%d" will work.
LANGUAGES: *matchit-languages* LANGUAGES: *matchit-languages*
@@ -386,16 +382,10 @@ try to respond to reports of bugs that cause real problems. If it does not
cause serious problems, or if there is a work-around, a bug may sit there for cause serious problems, or if there is a work-around, a bug may sit there for
a while. Moral: if a bug (known or not) bothers you, let me know. a while. Moral: if a bug (known or not) bothers you, let me know.
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. 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 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". I may would be nice if "foo:\end\0" had the same effect as "\(foo\):\end\1". I may
try to implement this in a future version. (This is not so easy to arrange as try to implement this in a future version. (This is not so easy to arrange as
you might think!) you might think!)
============================================================================== ==============================================================================
vim:tw=78:fo=tcq2: vim:tw=78:fo=tcq2:ft=help:

View File

@@ -1,13 +1,13 @@
" matchit.vim: (global plugin) Extended "%" matching " matchit.vim: (global plugin) Extended "%" matching
" Last Change: 2018 Dec 31 " Maintainer: Christian Brabandt
" Maintainer: Benji Fisher PhD <benji@member.AMS.org> " Version: 1.15
" Version: 1.13.3, for Vim 6.3+ " Last Change: 2019 Jan 28
" Fix from Fernando Torres included. " Repository: https://github.com/chrisbra/matchit
" Improvement from Ken Takata included. " Previous URL:http://www.vim.org/script.php?script_id=39
" URL: http://www.vim.org/script.php?script_id=39 " Previous Maintainer: Benji Fisher PhD <benji@member.AMS.org>
" Documentation: " Documentation:
" The documentation is in a separate file, matchit.txt . " The documentation is in a separate file: ../doc/matchit.txt .
" Credits: " Credits:
" Vim editor by Bram Moolenaar (Thanks, Bram!) " Vim editor by Bram Moolenaar (Thanks, Bram!)
@@ -38,789 +38,55 @@
" work but extend it. " work but extend it.
" Allow user to prevent loading and prevent duplicate loading. " Allow user to prevent loading and prevent duplicate loading.
if exists("loaded_matchit") || &cp if exists("g:loaded_matchit") || &cp
finish finish
endif endif
let loaded_matchit = 1 let g:loaded_matchit = 1
let s:last_mps = ""
let s:last_words = ":"
let s:patBR = ""
let s:save_cpo = &cpo let s:save_cpo = &cpo
set cpo&vim set cpo&vim
nnoremap <silent> % :<C-U>call <SID>Match_wrapper('',1,'n') <CR> nnoremap <silent> <Plug>(MatchitNormalForward) :<C-U>call matchit#Match_wrapper('',1,'n')<CR>
nnoremap <silent> g% :<C-U>call <SID>Match_wrapper('',0,'n') <CR> nnoremap <silent> <Plug>(MatchitNormalBackward) :<C-U>call matchit#Match_wrapper('',0,'n')<CR>
vnoremap <silent> % :<C-U>call <SID>Match_wrapper('',1,'v') <CR>m'gv`` vnoremap <silent> <Plug>(MatchitVisualForward) :<C-U>call matchit#Match_wrapper('',1,'v')<CR>m'gv``
vnoremap <silent> g% :<C-U>call <SID>Match_wrapper('',0,'v') <CR>m'gv`` vnoremap <silent> <Plug>(MatchitVisualBackward) :<C-U>call matchit#Match_wrapper('',0,'v')<CR>m'gv``
onoremap <silent> % v:<C-U>call <SID>Match_wrapper('',1,'o') <CR> onoremap <silent> <Plug>(MatchitOperationForward) :<C-U>call matchit#Match_wrapper('',1,'o')<CR>
onoremap <silent> g% v:<C-U>call <SID>Match_wrapper('',0,'o') <CR> onoremap <silent> <Plug>(MatchitOperationBackward) :<C-U>call matchit#Match_wrapper('',0,'o')<CR>
nmap <silent> % <Plug>(MatchitNormalForward)
nmap <silent> g% <Plug>(MatchitNormalBackward)
xmap <silent> % <Plug>(MatchitVisualForward)
xmap <silent> g% <Plug>(MatchitVisualBackward)
omap <silent> % <Plug>(MatchitOperationForward)
omap <silent> g% <Plug>(MatchitOperationBackward)
" Analogues of [{ and ]} using matching patterns: " Analogues of [{ and ]} using matching patterns:
nnoremap <silent> [% :<C-U>call <SID>MultiMatch("bW", "n") <CR> nnoremap <silent> <Plug>(MatchitNormalMultiBackward) :<C-U>call matchit#MultiMatch("bW", "n")<CR>
nnoremap <silent> ]% :<C-U>call <SID>MultiMatch("W", "n") <CR> nnoremap <silent> <Plug>(MatchitNormalMultiForward) :<C-U>call matchit#MultiMatch("W", "n")<CR>
vmap [% <Esc>[%m'gv`` vnoremap <silent> <Plug>(MatchitVisualMultiBackward) :<C-U>call matchit#MultiMatch("bW", "n")<CR>m'gv``
vmap ]% <Esc>]%m'gv`` vnoremap <silent> <Plug>(MatchitVisualMultiForward) :<C-U>call matchit#MultiMatch("W", "n")<CR>m'gv``
" vnoremap <silent> [% :<C-U>call <SID>MultiMatch("bW", "v") <CR>m'gv`` onoremap <silent> <Plug>(MatchitOperationMultiBackward) :<C-U>call matchit#MultiMatch("bW", "o")<CR>
" vnoremap <silent> ]% :<C-U>call <SID>MultiMatch("W", "v") <CR>m'gv`` onoremap <silent> <Plug>(MatchitOperationMultiForward) :<C-U>call matchit#MultiMatch("W", "o")<CR>
onoremap <silent> [% v:<C-U>call <SID>MultiMatch("bW", "o") <CR>
onoremap <silent> ]% v:<C-U>call <SID>MultiMatch("W", "o") <CR> nmap <silent> [% <Plug>(MatchitNormalMultiBackward)
nmap <silent> ]% <Plug>(MatchitNormalMultiForward)
xmap <silent> [% <Plug>(MatchitVisualMultiBackward)
xmap <silent> ]% <Plug>(MatchitVisualMultiForward)
omap <silent> [% <Plug>(MatchitOperationMultiBackward)
omap <silent> ]% <Plug>(MatchitOperationMultiForward)
" text object: " text object:
vmap a% <Esc>[%v]% vmap <silent> <Plug>(MatchitVisualTextObject) <Plug>(MatchitVisualMultiBackward)o<Plug>(MatchitVisualMultiForward)
xmap a% <Plug>(MatchitVisualTextObject)
" Auto-complete mappings: (not yet "ready for prime time")
" TODO Read :help write-plugin for the "right" way to let the user
" specify a key binding.
" let g:match_auto = '<C-]>'
" let g:match_autoCR = '<C-CR>'
" if exists("g:match_auto")
" execute "inoremap " . g:match_auto . ' x<Esc>"=<SID>Autocomplete()<CR>Pls'
" endif
" if exists("g:match_autoCR")
" execute "inoremap " . g:match_autoCR . ' <CR><C-R>=<SID>Autocomplete()<CR>'
" endif
" if exists("g:match_gthhoh")
" execute "inoremap " . g:match_gthhoh . ' <C-O>:call <SID>Gthhoh()<CR>'
" endif " gthhoh = "Get the heck out of here!"
let s:notslash = '\\\@<!\%(\\\\\)*'
function! s:Match_wrapper(word, forward, mode) range
" In s:CleanUp(), :execute "set" restore_options .
let restore_options = ""
if exists("b:match_ignorecase") && b:match_ignorecase != &ic
let restore_options .= (&ic ? " " : " no") . "ignorecase"
let &ignorecase = b:match_ignorecase
endif
if &ve != ''
let restore_options = " ve=" . &ve . restore_options
set ve=
endif
" If this function was called from Visual mode, make sure that the cursor
" is at the correct end of the Visual range:
if a:mode == "v"
execute "normal! gv\<Esc>"
endif
" In s:CleanUp(), we may need to check whether the cursor moved forward.
let startline = line(".")
let startcol = col(".")
" Use default behavior if called with a count.
if v:count
exe "normal! " . v:count . "%"
return s:CleanUp(restore_options, a:mode, startline, startcol)
end
" First step: if not already done, set the script variables
" s:do_BR flag for whether there are backrefs
" s:pat parsed version of b:match_words
" s:all regexp based on s:pat and the default groups
"
if !exists("b:match_words") || b:match_words == ""
let match_words = ""
" Allow b:match_words = "GetVimMatchWords()" .
elseif b:match_words =~ ":"
let match_words = b:match_words
else
execute "let match_words =" b:match_words
endif
" Thanks to Preben "Peppe" Guldberg and Bram Moolenaar for this suggestion!
if (match_words != s:last_words) || (&mps != s:last_mps)
\ || exists("b:match_debug")
let s:last_mps = &mps
" The next several lines were here before
" BF started messing with this script.
" quote the special chars in 'matchpairs', replace [,:] with \| and then
" append the builtin pairs (/*, */, #if, #ifdef, #else, #elif, #endif)
" let default = substitute(escape(&mps, '[$^.*~\\/?]'), '[,:]\+',
" \ '\\|', 'g').'\|\/\*\|\*\/\|#if\>\|#ifdef\>\|#else\>\|#elif\>\|#endif\>'
let default = escape(&mps, '[$^.*~\\/?]') . (strlen(&mps) ? "," : "") .
\ '\/\*:\*\/,#\s*if\%(def\)\=:#\s*else\>:#\s*elif\>:#\s*endif\>'
" s:all = pattern with all the keywords
let match_words = match_words . (strlen(match_words) ? "," : "") . default
let s:last_words = match_words
if match_words !~ s:notslash . '\\\d'
let s:do_BR = 0
let s:pat = match_words
else
let s:do_BR = 1
let s:pat = s:ParseWords(match_words)
endif
let s:all = substitute(s:pat, s:notslash . '\zs[,:]\+', '\\|', 'g')
let s:all = '\%(' . s:all . '\)'
" let s:all = '\%(' . substitute(s:all, '\\\ze[,:]', '', 'g') . '\)'
if exists("b:match_debug")
let b:match_pat = s:pat
endif
" Reconstruct the version with unresolved backrefs.
let s:patBR = substitute(match_words.',',
\ s:notslash.'\zs[,:]*,[,:]*', ',', 'g')
let s:patBR = substitute(s:patBR, s:notslash.'\zs:\{2,}', ':', 'g')
endif
" Second step: set the following local variables:
" matchline = line on which the cursor started
" curcol = number of characters before match
" prefix = regexp for start of line to start of match
" suffix = regexp for end of match to end of line
" Require match to end on or after the cursor and prefer it to
" start on or before the cursor.
let matchline = getline(startline)
if a:word != ''
" word given
if a:word !~ s:all
echohl WarningMsg|echo 'Missing rule for word:"'.a:word.'"'|echohl NONE
return s:CleanUp(restore_options, a:mode, startline, startcol)
endif
let matchline = a:word
let curcol = 0
let prefix = '^\%('
let suffix = '\)$'
" Now the case when "word" is not given
else " Find the match that ends on or after the cursor and set curcol.
let regexp = s:Wholematch(matchline, s:all, startcol-1)
let curcol = match(matchline, regexp)
" If there is no match, give up.
if curcol == -1
return s:CleanUp(restore_options, a:mode, startline, startcol)
endif
let endcol = matchend(matchline, regexp)
let suf = strlen(matchline) - endcol
let prefix = (curcol ? '^.*\%' . (curcol + 1) . 'c\%(' : '^\%(')
let suffix = (suf ? '\)\%' . (endcol + 1) . 'c.*$' : '\)$')
endif
if exists("b:match_debug")
let b:match_match = matchstr(matchline, regexp)
let b:match_col = curcol+1
endif
" Third step: Find the group and single word that match, and the original
" (backref) versions of these. Then, resolve the backrefs.
" Set the following local variable:
" group = colon-separated list of patterns, one of which matches
" = ini:mid:fin or ini:fin
"
" Now, set group and groupBR to the matching group: 'if:endif' or
" 'while:endwhile' or whatever. A bit of a kluge: s:Choose() returns
" group . "," . groupBR, and we pick it apart.
let group = s:Choose(s:pat, matchline, ",", ":", prefix, suffix, s:patBR)
let i = matchend(group, s:notslash . ",")
let groupBR = strpart(group, i)
let group = strpart(group, 0, i-1)
" Now, matchline =~ prefix . substitute(group,':','\|','g') . suffix
if s:do_BR " Do the hard part: resolve those backrefs!
let group = s:InsertRefs(groupBR, prefix, group, suffix, matchline)
endif
if exists("b:match_debug")
let b:match_wholeBR = groupBR
let i = matchend(groupBR, s:notslash . ":")
let b:match_iniBR = strpart(groupBR, 0, i-1)
endif
" Fourth step: Set the arguments for searchpair().
let i = matchend(group, s:notslash . ":")
let j = matchend(group, '.*' . s:notslash . ":")
let ini = strpart(group, 0, i-1)
let mid = substitute(strpart(group, i,j-i-1), s:notslash.'\zs:', '\\|', 'g')
let fin = strpart(group, j)
"Un-escape the remaining , and : characters.
let ini = substitute(ini, s:notslash . '\zs\\\(:\|,\)', '\1', 'g')
let mid = substitute(mid, s:notslash . '\zs\\\(:\|,\)', '\1', 'g')
let fin = substitute(fin, s:notslash . '\zs\\\(:\|,\)', '\1', 'g')
" searchpair() requires that these patterns avoid \(\) groups.
let ini = substitute(ini, s:notslash . '\zs\\(', '\\%(', 'g')
let mid = substitute(mid, s:notslash . '\zs\\(', '\\%(', 'g')
let fin = substitute(fin, s:notslash . '\zs\\(', '\\%(', 'g')
" Set mid. This is optimized for readability, not micro-efficiency!
if a:forward && matchline =~ prefix . fin . suffix
\ || !a:forward && matchline =~ prefix . ini . suffix
let mid = ""
endif
" Set flag. This is optimized for readability, not micro-efficiency!
if a:forward && matchline =~ prefix . fin . suffix
\ || !a:forward && matchline !~ prefix . ini . suffix
let flag = "bW"
else
let flag = "W"
endif
" Set skip.
if exists("b:match_skip")
let skip = b:match_skip
elseif exists("b:match_comment") " backwards compatibility and testing!
let skip = "r:" . b:match_comment
else
let skip = 's:comment\|string'
endif
let skip = s:ParseSkip(skip)
if exists("b:match_debug")
let b:match_ini = ini
let b:match_tail = (strlen(mid) ? mid.'\|' : '') . fin
endif
" Fifth step: actually start moving the cursor and call searchpair().
" Later, :execute restore_cursor to get to the original screen.
let restore_cursor = virtcol(".") . "|"
normal! g0
let restore_cursor = line(".") . "G" . virtcol(".") . "|zs" . restore_cursor
normal! H
let restore_cursor = "normal!" . line(".") . "Gzt" . restore_cursor
execute restore_cursor
call cursor(0, curcol + 1)
" normal! 0
" if curcol
" execute "normal!" . curcol . "l"
" endif
if skip =~ 'synID' && !(has("syntax") && exists("g:syntax_on"))
let skip = '0'
else
execute "if " . skip . "| let skip = '0' | endif"
endif
let sp_return = searchpair(ini, mid, fin, flag, skip)
let final_position = "call cursor(" . line(".") . "," . col(".") . ")"
" Restore cursor position and original screen.
execute restore_cursor
normal! m'
if sp_return > 0
execute final_position
endif
return s:CleanUp(restore_options, a:mode, startline, startcol, mid.'\|'.fin)
endfun
" Restore options and do some special handling for Operator-pending mode.
" The optional argument is the tail of the matching group.
fun! s:CleanUp(options, mode, startline, startcol, ...)
if strlen(a:options)
execute "set" a:options
endif
" Open folds, if appropriate.
if a:mode != "o"
if &foldopen =~ "percent"
normal! zv
endif
" In Operator-pending mode, we want to include the whole match
" (for example, d%).
" This is only a problem if we end up moving in the forward direction.
elseif (a:startline < line(".")) ||
\ (a:startline == line(".") && a:startcol < col("."))
if a:0
" Check whether the match is a single character. If not, move to the
" end of the match.
let matchline = getline(".")
let currcol = col(".")
let regexp = s:Wholematch(matchline, a:1, currcol-1)
let endcol = matchend(matchline, regexp)
if endcol > currcol " This is NOT off by one!
call cursor(0, endcol)
endif
endif " a:0
endif " a:mode != "o" && etc.
return 0
endfun
" Example (simplified HTML patterns): if
" a:groupBR = '<\(\k\+\)>:</\1>'
" a:prefix = '^.\{3}\('
" a:group = '<\(\k\+\)>:</\(\k\+\)>'
" a:suffix = '\).\{2}$'
" a:matchline = "123<tag>12" or "123</tag>12"
" then extract "tag" from a:matchline and return "<tag>:</tag>" .
fun! s:InsertRefs(groupBR, prefix, group, suffix, matchline)
if a:matchline !~ a:prefix .
\ substitute(a:group, s:notslash . '\zs:', '\\|', 'g') . a:suffix
return a:group
endif
let i = matchend(a:groupBR, s:notslash . ':')
let ini = strpart(a:groupBR, 0, i-1)
let tailBR = strpart(a:groupBR, i)
let word = s:Choose(a:group, a:matchline, ":", "", a:prefix, a:suffix,
\ a:groupBR)
let i = matchend(word, s:notslash . ":")
let wordBR = strpart(word, i)
let word = strpart(word, 0, i-1)
" Now, a:matchline =~ a:prefix . word . a:suffix
if wordBR != ini
let table = s:Resolve(ini, wordBR, "table")
else
" let table = "----------"
let table = ""
let d = 0
while d < 10
if tailBR =~ s:notslash . '\\' . d
" let table[d] = d
let table = table . d
else
let table = table . "-"
endif
let d = d + 1
endwhile
endif
let d = 9
while d
if table[d] != "-"
let backref = substitute(a:matchline, a:prefix.word.a:suffix,
\ '\'.table[d], "")
" Are there any other characters that should be escaped?
let backref = escape(backref, '*,:')
execute s:Ref(ini, d, "start", "len")
let ini = strpart(ini, 0, start) . backref . strpart(ini, start+len)
let tailBR = substitute(tailBR, s:notslash . '\zs\\' . d,
\ escape(backref, '\\&'), 'g')
endif
let d = d-1
endwhile
if exists("b:match_debug")
if s:do_BR
let b:match_table = table
let b:match_word = word
else
let b:match_table = ""
let b:match_word = ""
endif
endif
return ini . ":" . tailBR
endfun
" Input a comma-separated list of groups with backrefs, such as
" a:groups = '\(foo\):end\1,\(bar\):end\1'
" and return a comma-separated list of groups with backrefs replaced:
" return '\(foo\):end\(foo\),\(bar\):end\(bar\)'
fun! s:ParseWords(groups)
let groups = substitute(a:groups.",", s:notslash.'\zs[,:]*,[,:]*', ',', 'g')
let groups = substitute(groups, s:notslash . '\zs:\{2,}', ':', 'g')
let parsed = ""
while groups =~ '[^,:]'
let i = matchend(groups, s:notslash . ':')
let j = matchend(groups, s:notslash . ',')
let ini = strpart(groups, 0, i-1)
let tail = strpart(groups, i, j-i-1) . ":"
let groups = strpart(groups, j)
let parsed = parsed . ini
let i = matchend(tail, s:notslash . ':')
while i != -1
" In 'if:else:endif', ini='if' and word='else' and then word='endif'.
let word = strpart(tail, 0, i-1)
let tail = strpart(tail, i)
let i = matchend(tail, s:notslash . ':')
let parsed = parsed . ":" . s:Resolve(ini, word, "word")
endwhile " Now, tail has been used up.
let parsed = parsed . ","
endwhile " groups =~ '[^,:]'
let parsed = substitute(parsed, ',$', '', '')
return parsed
endfun
" TODO I think this can be simplified and/or made more efficient.
" TODO What should I do if a:start is out of range?
" Return a regexp that matches all of a:string, such that
" matchstr(a:string, regexp) represents the match for a:pat that starts
" as close to a:start as possible, before being preferred to after, and
" ends after a:start .
" Usage:
" let regexp = s:Wholematch(getline("."), 'foo\|bar', col(".")-1)
" let i = match(getline("."), regexp)
" let j = matchend(getline("."), regexp)
" let match = matchstr(getline("."), regexp)
fun! s:Wholematch(string, pat, start)
let group = '\%(' . a:pat . '\)'
let prefix = (a:start ? '\(^.*\%<' . (a:start + 2) . 'c\)\zs' : '^')
let len = strlen(a:string)
let suffix = (a:start+1 < len ? '\(\%>'.(a:start+1).'c.*$\)\@=' : '$')
if a:string !~ prefix . group . suffix
let prefix = ''
endif
return prefix . group . suffix
endfun
" No extra arguments: s:Ref(string, d) will
" find the d'th occurrence of '\(' and return it, along with everything up
" to and including the matching '\)'.
" One argument: s:Ref(string, d, "start") returns the index of the start
" of the d'th '\(' and any other argument returns the length of the group.
" Two arguments: s:Ref(string, d, "foo", "bar") returns a string to be
" executed, having the effect of
" :let foo = s:Ref(string, d, "start")
" :let bar = s:Ref(string, d, "len")
fun! s:Ref(string, d, ...)
let len = strlen(a:string)
if a:d == 0
let start = 0
else
let cnt = a:d
let match = a:string
while cnt
let cnt = cnt - 1
let index = matchend(match, s:notslash . '\\(')
if index == -1
return ""
endif
let match = strpart(match, index)
endwhile
let start = len - strlen(match)
if a:0 == 1 && a:1 == "start"
return start - 2
endif
let cnt = 1
while cnt
let index = matchend(match, s:notslash . '\\(\|\\)') - 1
if index == -2
return ""
endif
" Increment if an open, decrement if a ')':
let cnt = cnt + (match[index]=="(" ? 1 : -1) " ')'
" let cnt = stridx('0(', match[index]) + cnt
let match = strpart(match, index+1)
endwhile
let start = start - 2
let len = len - start - strlen(match)
endif
if a:0 == 1
return len
elseif a:0 == 2
return "let " . a:1 . "=" . start . "| let " . a:2 . "=" . len
else
return strpart(a:string, start, len)
endif
endfun
" Count the number of disjoint copies of pattern in string.
" If the pattern is a literal string and contains no '0' or '1' characters
" then s:Count(string, pattern, '0', '1') should be faster than
" s:Count(string, pattern).
fun! s:Count(string, pattern, ...)
let pat = escape(a:pattern, '\\')
if a:0 > 1
let foo = substitute(a:string, '[^'.a:pattern.']', "a:1", "g")
let foo = substitute(a:string, pat, a:2, "g")
let foo = substitute(foo, '[^' . a:2 . ']', "", "g")
return strlen(foo)
endif
let result = 0
let foo = a:string
let index = matchend(foo, pat)
while index != -1
let result = result + 1
let foo = strpart(foo, index)
let index = matchend(foo, pat)
endwhile
return result
endfun
" s:Resolve('\(a\)\(b\)', '\(c\)\2\1\1\2') should return table.word, where
" word = '\(c\)\(b\)\(a\)\3\2' and table = '-32-------'. That is, the first
" '\1' in target is replaced by '\(a\)' in word, table[1] = 3, and this
" indicates that all other instances of '\1' in target are to be replaced
" by '\3'. The hard part is dealing with nesting...
" Note that ":" is an illegal character for source and target,
" unless it is preceded by "\".
fun! s:Resolve(source, target, output)
let word = a:target
let i = matchend(word, s:notslash . '\\\d') - 1
let table = "----------"
while i != -2 " There are back references to be replaced.
let d = word[i]
let backref = s:Ref(a:source, d)
" The idea is to replace '\d' with backref. Before we do this,
" replace any \(\) groups in backref with :1, :2, ... if they
" correspond to the first, second, ... group already inserted
" into backref. Later, replace :1 with \1 and so on. The group
" number w+b within backref corresponds to the group number
" s within a:source.
" w = number of '\(' in word before the current one
let w = s:Count(
\ substitute(strpart(word, 0, i-1), '\\\\', '', 'g'), '\(', '1')
let b = 1 " number of the current '\(' in backref
let s = d " number of the current '\(' in a:source
while b <= s:Count(substitute(backref, '\\\\', '', 'g'), '\(', '1')
\ && s < 10
if table[s] == "-"
if w + b < 10
" let table[s] = w + b
let table = strpart(table, 0, s) . (w+b) . strpart(table, s+1)
endif
let b = b + 1
let s = s + 1
else
execute s:Ref(backref, b, "start", "len")
let ref = strpart(backref, start, len)
let backref = strpart(backref, 0, start) . ":". table[s]
\ . strpart(backref, start+len)
let s = s + s:Count(substitute(ref, '\\\\', '', 'g'), '\(', '1')
endif
endwhile
let word = strpart(word, 0, i-1) . backref . strpart(word, i+1)
let i = matchend(word, s:notslash . '\\\d') - 1
endwhile
let word = substitute(word, s:notslash . '\zs:', '\\', 'g')
if a:output == "table"
return table
elseif a:output == "word"
return word
else
return table . word
endif
endfun
" Assume a:comma = ",". Then the format for a:patterns and a:1 is
" a:patterns = "<pat1>,<pat2>,..."
" a:1 = "<alt1>,<alt2>,..."
" If <patn> is the first pattern that matches a:string then return <patn>
" if no optional arguments are given; return <patn>,<altn> if a:1 is given.
fun! s:Choose(patterns, string, comma, branch, prefix, suffix, ...)
let tail = (a:patterns =~ a:comma."$" ? a:patterns : a:patterns . a:comma)
let i = matchend(tail, s:notslash . a:comma)
if a:0
let alttail = (a:1 =~ a:comma."$" ? a:1 : a:1 . a:comma)
let j = matchend(alttail, s:notslash . a:comma)
endif
let current = strpart(tail, 0, i-1)
if a:branch == ""
let currpat = current
else
let currpat = substitute(current, s:notslash . a:branch, '\\|', 'g')
endif
while a:string !~ a:prefix . currpat . a:suffix
let tail = strpart(tail, i)
let i = matchend(tail, s:notslash . a:comma)
if i == -1
return -1
endif
let current = strpart(tail, 0, i-1)
if a:branch == ""
let currpat = current
else
let currpat = substitute(current, s:notslash . a:branch, '\\|', 'g')
endif
if a:0
let alttail = strpart(alttail, j)
let j = matchend(alttail, s:notslash . a:comma)
endif
endwhile
if a:0
let current = current . a:comma . strpart(alttail, 0, j-1)
endif
return current
endfun
" Call this function to turn on debugging information. Every time the main " Call this function to turn on debugging information. Every time the main
" script is run, buffer variables will be saved. These can be used directly " script is run, buffer variables will be saved. These can be used directly
" or viewed using the menu items below. " or viewed using the menu items below.
if !exists(":MatchDebug") if !exists(":MatchDebug")
command! -nargs=0 MatchDebug call s:Match_debug() command! -nargs=0 MatchDebug call matchit#Match_debug()
endif endif
fun! s:Match_debug()
let b:match_debug = 1 " Save debugging information.
" pat = all of b:match_words with backrefs parsed
amenu &Matchit.&pat :echo b:match_pat<CR>
" match = bit of text that is recognized as a match
amenu &Matchit.&match :echo b:match_match<CR>
" curcol = cursor column of the start of the matching text
amenu &Matchit.&curcol :echo b:match_col<CR>
" wholeBR = matching group, original version
amenu &Matchit.wh&oleBR :echo b:match_wholeBR<CR>
" iniBR = 'if' piece, original version
amenu &Matchit.ini&BR :echo b:match_iniBR<CR>
" ini = 'if' piece, with all backrefs resolved from match
amenu &Matchit.&ini :echo b:match_ini<CR>
" tail = 'else\|endif' piece, with all backrefs resolved from match
amenu &Matchit.&tail :echo b:match_tail<CR>
" fin = 'endif' piece, with all backrefs resolved from match
amenu &Matchit.&word :echo b:match_word<CR>
" '\'.d in ini refers to the same thing as '\'.table[d] in word.
amenu &Matchit.t&able :echo '0:' . b:match_table . ':9'<CR>
endfun
" Jump to the nearest unmatched "(" or "if" or "<tag>" if a:spflag == "bW"
" or the nearest unmatched "</tag>" or "endif" or ")" if a:spflag == "W".
" Return a "mark" for the original position, so that
" let m = MultiMatch("bW", "n") ... execute m
" will return to the original position. If there is a problem, do not
" move the cursor and return "", unless a count is given, in which case
" go up or down as many levels as possible and again return "".
" TODO This relies on the same patterns as % matching. It might be a good
" idea to give it its own matching patterns.
fun! s:MultiMatch(spflag, mode)
if !exists("b:match_words") || b:match_words == ""
return ""
end
let restore_options = ""
if exists("b:match_ignorecase") && b:match_ignorecase != &ic
let restore_options .= (&ic ? " " : " no") . "ignorecase"
let &ignorecase = b:match_ignorecase
endif
let startline = line(".")
let startcol = col(".")
" First step: if not already done, set the script variables
" s:do_BR flag for whether there are backrefs
" s:pat parsed version of b:match_words
" s:all regexp based on s:pat and the default groups
" This part is copied and slightly modified from s:Match_wrapper().
let default = escape(&mps, '[$^.*~\\/?]') . (strlen(&mps) ? "," : "") .
\ '\/\*:\*\/,#\s*if\%(def\)\=:#\s*else\>:#\s*elif\>:#\s*endif\>'
" Allow b:match_words = "GetVimMatchWords()" .
if b:match_words =~ ":"
let match_words = b:match_words
else
execute "let match_words =" b:match_words
endif
if (match_words != s:last_words) || (&mps != s:last_mps) ||
\ exists("b:match_debug")
let s:last_words = match_words
let s:last_mps = &mps
let match_words = match_words . (strlen(match_words) ? "," : "") . default
if match_words !~ s:notslash . '\\\d'
let s:do_BR = 0
let s:pat = match_words
else
let s:do_BR = 1
let s:pat = s:ParseWords(match_words)
endif
let s:all = '\%(' . substitute(s:pat . (strlen(s:pat) ? "," : "") . default,
\ '[,:]\+', '\\|', 'g') . '\)'
if exists("b:match_debug")
let b:match_pat = s:pat
endif
endif
" Second step: figure out the patterns for searchpair()
" and save the screen, cursor position, and 'ignorecase'.
" - TODO: A lot of this is copied from s:Match_wrapper().
" - maybe even more functionality should be split off
" - into separate functions!
let cdefault = (s:pat =~ '[^,]$' ? "," : "") . default
let open = substitute(s:pat . cdefault,
\ s:notslash . '\zs:.\{-}' . s:notslash . ',', '\\),\\(', 'g')
let open = '\(' . substitute(open, s:notslash . '\zs:.*$', '\\)', '')
let close = substitute(s:pat . cdefault,
\ s:notslash . '\zs,.\{-}' . s:notslash . ':', '\\),\\(', 'g')
let close = substitute(close, '^.\{-}' . s:notslash . ':', '\\(', '') . '\)'
if exists("b:match_skip")
let skip = b:match_skip
elseif exists("b:match_comment") " backwards compatibility and testing!
let skip = "r:" . b:match_comment
else
let skip = 's:comment\|string'
endif
let skip = s:ParseSkip(skip)
" save v:count1 variable, might be reset from the restore_cursor command
let level = v:count1
let restore_cursor = virtcol(".") . "|"
normal! g0
let restore_cursor = line(".") . "G" . virtcol(".") . "|zs" . restore_cursor
normal! H
let restore_cursor = "normal!" . line(".") . "Gzt" . restore_cursor
execute restore_cursor
" Third step: call searchpair().
" Replace '\('--but not '\\('--with '\%(' and ',' with '\|'.
let openpat = substitute(open, '\(\\\@<!\(\\\\\)*\)\@<=\\(', '\\%(', 'g')
let openpat = substitute(openpat, ',', '\\|', 'g')
let closepat = substitute(close, '\(\\\@<!\(\\\\\)*\)\@<=\\(', '\\%(', 'g')
let closepat = substitute(closepat, ',', '\\|', 'g')
if skip =~ 'synID' && !(has("syntax") && exists("g:syntax_on"))
let skip = '0'
else
try
execute "if " . skip . "| let skip = '0' | endif"
catch /^Vim\%((\a\+)\)\=:E363/
" We won't find anything, so skip searching, should keep Vim responsive.
return
endtry
endif
mark '
while level
if searchpair(openpat, '', closepat, a:spflag, skip) < 1
call s:CleanUp(restore_options, a:mode, startline, startcol)
return ""
endif
let level = level - 1
endwhile
" Restore options and return a string to restore the original position.
call s:CleanUp(restore_options, a:mode, startline, startcol)
return restore_cursor
endfun
" Search backwards for "if" or "while" or "<tag>" or ...
" and return "endif" or "endwhile" or "</tag>" or ... .
" For now, this uses b:match_words and the same script variables
" as s:Match_wrapper() . Later, it may get its own patterns,
" either from a buffer variable or passed as arguments.
" fun! s:Autocomplete()
" echo "autocomplete not yet implemented :-("
" if !exists("b:match_words") || b:match_words == ""
" return ""
" end
" let startpos = s:MultiMatch("bW")
"
" if startpos == ""
" return ""
" endif
" " - TODO: figure out whether 'if' or '<tag>' matched, and construct
" " - the appropriate closing.
" let matchline = getline(".")
" let curcol = col(".") - 1
" " - TODO: Change the s:all argument if there is a new set of match pats.
" let regexp = s:Wholematch(matchline, s:all, curcol)
" let suf = strlen(matchline) - matchend(matchline, regexp)
" let prefix = (curcol ? '^.\{' . curcol . '}\%(' : '^\%(')
" let suffix = (suf ? '\).\{' . suf . '}$' : '\)$')
" " Reconstruct the version with unresolved backrefs.
" let patBR = substitute(b:match_words.',', '[,:]*,[,:]*', ',', 'g')
" let patBR = substitute(patBR, ':\{2,}', ':', "g")
" " Now, set group and groupBR to the matching group: 'if:endif' or
" " 'while:endwhile' or whatever.
" let group = s:Choose(s:pat, matchline, ",", ":", prefix, suffix, patBR)
" let i = matchend(group, s:notslash . ",")
" let groupBR = strpart(group, i)
" let group = strpart(group, 0, i-1)
" " Now, matchline =~ prefix . substitute(group,':','\|','g') . suffix
" if s:do_BR
" let group = s:InsertRefs(groupBR, prefix, group, suffix, matchline)
" endif
" " let g:group = group
"
" " - TODO: Construct the closing from group.
" let fake = "end" . expand("<cword>")
" execute startpos
" return fake
" endfun
" Close all open structures. "Get the heck out of here!"
" fun! s:Gthhoh()
" let close = s:Autocomplete()
" while strlen(close)
" put=close
" let close = s:Autocomplete()
" endwhile
" endfun
" Parse special strings as typical skip arguments for searchpair():
" s:foo becomes (current syntax item) =~ foo
" S:foo becomes (current syntax item) !~ foo
" r:foo becomes (line before cursor) =~ foo
" R:foo becomes (line before cursor) !~ foo
fun! s:ParseSkip(str)
let skip = a:str
if skip[1] == ":"
if skip[0] == "s"
let skip = "synIDattr(synID(line('.'),col('.'),1),'name') =~? '" .
\ strpart(skip,2) . "'"
elseif skip[0] == "S"
let skip = "synIDattr(synID(line('.'),col('.'),1),'name') !~? '" .
\ strpart(skip,2) . "'"
elseif skip[0] == "r"
let skip = "strpart(getline('.'),0,col('.'))=~'" . strpart(skip,2). "'"
elseif skip[0] == "R"
let skip = "strpart(getline('.'),0,col('.'))!~'" . strpart(skip,2). "'"
endif
endif
return skip
endfun
let &cpo = s:save_cpo let &cpo = s:save_cpo
unlet s:save_cpo unlet s:save_cpo
" vim:sts=2:sw=2: " vim:sts=2:sw=2:et:

View File

@@ -3,7 +3,7 @@
" Maintainer: Debian Vim Maintainers " Maintainer: Debian Vim Maintainers
" Former Maintainers: Gerfried Fuchs <alfie@ist.org> " Former Maintainers: Gerfried Fuchs <alfie@ist.org>
" Wichert Akkerman <wakkerma@debian.org> " Wichert Akkerman <wakkerma@debian.org>
" Last Change: 2018 Oct 30 " Last Change: 2019 Jan 26
" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debchangelog.vim " URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/syntax/debchangelog.vim
" Standard syntax initialization " Standard syntax initialization
@@ -14,7 +14,7 @@ endif
" Case doesn't matter for us " Case doesn't matter for us
syn case ignore syn case ignore
let s:urgency='urgency=\(low\|medium\|high\|critical\)\( [^[:space:],][^,]*\)\=' let s:urgency='urgency=\(low\|medium\|high\|emergency\|critical\)\( [^[:space:],][^,]*\)\='
let s:binNMU='binary-only=yes' let s:binNMU='binary-only=yes'
" Define some common expressions we can use later on " Define some common expressions we can use later on

View File

@@ -1,7 +1,7 @@
" An example for a vimrc file. " An example for a vimrc file.
" "
" Maintainer: Bram Moolenaar <Bram@vim.org> " Maintainer: Bram Moolenaar <Bram@vim.org>
" Last change: 2017 Sep 20 " Last change: 2019 Jan 26
" "
" To use it, copy it to " To use it, copy it to
" for Unix and OS/2: ~/.vimrc " for Unix and OS/2: ~/.vimrc
@@ -9,7 +9,8 @@
" for MS-DOS and Win32: $VIM\_vimrc " for MS-DOS and Win32: $VIM\_vimrc
" for OpenVMS: sys$login:.vimrc " for OpenVMS: sys$login:.vimrc
" When started as "evim", evim.vim will already have done these settings. " When started as "evim", evim.vim will already have done these settings, bail
" out.
if v:progname =~? "evim" if v:progname =~? "evim"
finish finish
endif endif
@@ -31,23 +32,13 @@ if &t_Co > 2 || has("gui_running")
set hlsearch set hlsearch
endif endif
" Only do this part when compiled with support for autocommands. " Put these in an autocmd group, so that we can delete them easily.
if has("autocmd") augroup vimrcEx
" Put these in an autocmd group, so that we can delete them easily.
augroup vimrcEx
au! au!
" For all text files set 'textwidth' to 78 characters. " For all text files set 'textwidth' to 78 characters.
autocmd FileType text setlocal textwidth=78 autocmd FileType text setlocal textwidth=78
augroup END
augroup END
else
set autoindent " always set autoindenting on
endif " has("autocmd")
" Add optional packages. " Add optional packages.
" "

View File

@@ -11,7 +11,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Vim\n" "Project-Id-Version: Vim\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-12-12 15:34+0100\n" "POT-Creation-Date: 2019-01-28 19:23+0100\n"
"PO-Revision-Date: 2008-05-24 17:26+0200\n" "PO-Revision-Date: 2008-05-24 17:26+0200\n"
"Last-Translator: Christian Brabandt <cb@256bit.org>\n" "Last-Translator: Christian Brabandt <cb@256bit.org>\n"
"Language-Team: German\n" "Language-Team: German\n"
@@ -21,6 +21,67 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
msgid "--Deleted--"
msgstr "--gel<65>scht--"
#, c-format
msgid "auto-removing autocommand: %s <buffer=%d>"
msgstr "Entferne Autokommando: %s <buffer=%d>"
#, c-format
msgid "E367: No such group: \"%s\""
msgstr "E367: Keine solche Gruppe: \"%s\""
msgid "E936: Cannot delete the current group"
msgstr "E936: Kann die aktuelle Gruppe nicht l<>schen."
msgid "W19: Deleting augroup that is still in use"
msgstr "W19: L<>sche Autogruppe, die noch in Benutzung ist."
#, c-format
msgid "E215: Illegal character after *: %s"
msgstr "E215: Unzul<75>ssiges Zeichen nach *: %s"
#, c-format
msgid "E216: No such event: %s"
msgstr "E216: Kein derartiges Ereignis: %s"
#, c-format
msgid "E216: No such group or event: %s"
msgstr "E216: Keine solche Gruppe oder Ereignis: %s"
msgid ""
"\n"
"--- Autocommands ---"
msgstr ""
"\n"
"--- Autokommandos ---"
#, c-format
msgid "E680: <buffer=%d>: invalid buffer number "
msgstr "E680: <buffer=%d>: Ung<6E>ltige Puffer Nummer "
msgid "E217: Can't execute autocommands for ALL events"
msgstr "E217: Autokommandos k<>nnen nicht f<>r ALL Ereignisse ausgef<65>hrt werden"
msgid "No matching autocommands"
msgstr "Keine passenden Autokommandos"
msgid "E218: autocommand nesting too deep"
msgstr "E218: Autokommando-Schachtelung zu tief"
#, c-format
msgid "%s Autocommands for \"%s\""
msgstr "%s Autokommandos f<>r \"%s\""
#, c-format
msgid "Executing %s"
msgstr "Ausf<73>hrung von %s"
#, c-format
msgid "autocommand %s"
msgstr "Autokommando %s"
msgid "E831: bf_key_init() called with empty password" msgid "E831: bf_key_init() called with empty password"
msgstr "E831: bf_key_init() mit leerem Passwort aufgerufen." msgstr "E831: bf_key_init() mit leerem Passwort aufgerufen."
@@ -100,9 +161,9 @@ msgid "E88: Cannot go before first buffer"
msgstr "E88: Kann nicht vor den ersten Puffer gehen." msgstr "E88: Kann nicht vor den ersten Puffer gehen."
#, c-format #, c-format
msgid "E89: No write since last change for buffer %ld (add ! to override)" msgid "E89: No write since last change for buffer %d (add ! to override)"
msgstr "" msgstr ""
"E89: Puffer %ld seit der letzten <20>nderung nicht gesichert (erzwinge mit !)" "E89: Puffer %d seit der letzten <20>nderung nicht gesichert (erzwinge mit !)"
msgid "E948: Job still running (add ! to end the job)" msgid "E948: Job still running (add ! to end the job)"
msgstr "E948: Job l<>uft noch (Beenden mit !)" msgstr "E948: Job l<>uft noch (Beenden mit !)"
@@ -120,8 +181,8 @@ msgid "W14: Warning: List of file names overflow"
msgstr "W14: Achtung: <20>berlauf der Dateinamensliste." msgstr "W14: Achtung: <20>berlauf der Dateinamensliste."
#, c-format #, c-format
msgid "E92: Buffer %ld not found" msgid "E92: Buffer %d not found"
msgstr "E92: Puffer %ld nicht gefunden." msgstr "E92: Puffer %d nicht gefunden."
#, c-format #, c-format
msgid "E93: More than one match for %s" msgid "E93: More than one match for %s"
@@ -203,21 +264,6 @@ msgstr "[Prompt]"
msgid "[Scratch]" msgid "[Scratch]"
msgstr "[Scratch]" msgstr "[Scratch]"
msgid ""
"\n"
"--- Signs ---"
msgstr ""
"\n"
"--- Zeichen ---"
#, c-format
msgid "Signs for %s:"
msgstr "Zeichen f<>r %s:"
#, c-format
msgid " line=%ld id=%d name=%s"
msgstr " Zeile=%ld id=%d Name=%s"
msgid "E902: Cannot connect to port" msgid "E902: Cannot connect to port"
msgstr "E902: Kann keine Verbindung zu Port herstellen." msgstr "E902: Kann keine Verbindung zu Port herstellen."
@@ -312,8 +358,8 @@ msgid "E737: Key already exists: %s"
msgstr "E737: Schl<68>ssel existiert bereits: %s" msgstr "E737: Schl<68>ssel existiert bereits: %s"
#, c-format #, c-format
msgid "E96: Cannot diff more than %ld buffers" msgid "E96: Cannot diff more than %d buffers"
msgstr "E96: Kann Diff f<>r mehr als %ld Puffer nicht erstellen." msgstr "E96: Kann Diff f<>r mehr als %d Puffer nicht erstellen."
#, c-format #, c-format
msgid "Not enough memory to use internal diff for buffer \"%s\"" msgid "Not enough memory to use internal diff for buffer \"%s\""
@@ -368,6 +414,81 @@ msgstr "E787: Puffer
msgid "E104: Escape not allowed in digraph" msgid "E104: Escape not allowed in digraph"
msgstr "E104: <Escape> ist in einem Digraphen nicht erlaubt." msgstr "E104: <Escape> ist in einem Digraphen nicht erlaubt."
msgid "Custom"
msgstr "Benutzerdefinierte Digraphs"
msgid "Latin supplement"
msgstr "Lateinisch Erg<72>nzung"
msgid "Greek and Coptic"
msgstr "Griechisch und Koptisch"
msgid "Cyrillic"
msgstr "Kyrillisch"
msgid "Hebrew"
msgstr "Hebr<62>isch"
msgid "Arabic"
msgstr "Arabisch"
msgid "Latin extended"
msgstr "Lateinisch Zusatz"
msgid "Greek extended"
msgstr "Griechisch Zusatz"
msgid "Punctuation"
msgstr "Interpunktion"
msgid "Super- and subscripts"
msgstr "Hoch- und tiefgestellte Zeichen"
msgid "Currency"
msgstr "W<>hrungszeichen"
msgid "Other"
msgstr "Andere Zeichen"
msgid "Roman numbers"
msgstr "R<>mische Ziffern"
msgid "Arrows"
msgstr "Pfeile"
msgid "Mathematical operators"
msgstr "Mathematische Operatoren"
msgid "Technical"
msgstr "Technische Zeichen"
msgid "Box drawing"
msgstr "Rahmenzeichen"
msgid "Block elements"
msgstr "Blockelemente"
msgid "Geometric shapes"
msgstr "Geometrische Formen"
msgid "Symbols"
msgstr "Verschiedene Symbole"
msgid "Dingbats"
msgstr "Dingbats"
msgid "CJK symbols and punctuation"
msgstr "CJK Symbole und Interpunktion"
msgid "Hiragana"
msgstr "Hiragana"
msgid "Katakana"
msgstr "Katakana"
msgid "Bopomofo"
msgstr "Bopomofo"
msgid "E544: Keymap file not found" msgid "E544: Keymap file not found"
msgstr "E544: Keymap-Datei f<>r die Tastaturbelegung nicht gefunden." msgstr "E544: Keymap-Datei f<>r die Tastaturbelegung nicht gefunden."
@@ -514,14 +635,17 @@ msgstr "Doppeltes ; in der Liste von Variablen"
msgid "E738: Can't list variables for %s" msgid "E738: Can't list variables for %s"
msgstr "E738: Kann Variablen nicht auflisten: %s" msgstr "E738: Kann Variablen nicht auflisten: %s"
msgid "E689: Can only index a List or Dictionary" msgid "E689: Can only index a List, Dictionary or Blob"
msgstr "E689: Kann nur Listen und Dictionary indizieren" msgstr "E689: Kann nur Listen, Dictionary oder Blob indizieren"
msgid "E708: [:] must come last" msgid "E708: [:] must come last"
msgstr "E708: [:] muss am Schluss kommen." msgstr "E708: [:] muss am Schluss kommen."
msgid "E709: [:] requires a List value" msgid "E709: [:] requires a List or Blob value"
msgstr "E709: [:] ben<65>tigt einen Listenwert" msgstr "E709: [:] ben<65>tigt einen Listen- oder Blobwert"
msgid "E972: Blob value does not have the right number of bytes"
msgstr "E972: Blobwert hat nicht die richtige Anzahl an Bytes"
msgid "E710: List value has more items than target" msgid "E710: List value has more items than target"
msgstr "E710: Listenwert hat mehr Eintr<74>ge als das Ziel." msgstr "E710: Listenwert hat mehr Eintr<74>ge als das Ziel."
@@ -549,6 +673,9 @@ msgstr "E109: Fehlender ':' nach '?'"
msgid "E804: Cannot use '%' with Float" msgid "E804: Cannot use '%' with Float"
msgstr "E804: Kann '%' mit Floats benutzen." msgstr "E804: Kann '%' mit Floats benutzen."
msgid "E973: Blob literal should have an even number of hex characters"
msgstr "E973: Blob-Literal sollte eine gerade Anzahl von Hex-Zeichen haben"
msgid "E110: Missing ')'" msgid "E110: Missing ')'"
msgstr "E110: Fehlendes ')'" msgstr "E110: Fehlendes ')'"
@@ -600,6 +727,9 @@ msgstr "E910: Job als Zahl verwendet."
msgid "E913: Using a Channel as a Number" msgid "E913: Using a Channel as a Number"
msgstr "E913: Channel als Zahl verwendet." msgstr "E913: Channel als Zahl verwendet."
msgid "E974: Using a Blob as a Number"
msgstr "E974: Blob als Zahl verwendet."
msgid "E891: Using a Funcref as a Float" msgid "E891: Using a Funcref as a Float"
msgstr "E891: Funktionsreferenz als Float verwendet." msgstr "E891: Funktionsreferenz als Float verwendet."
@@ -616,10 +746,13 @@ msgid "E907: Using a special value as a Float"
msgstr "E907: Benutze Spezialvariable als Float." msgstr "E907: Benutze Spezialvariable als Float."
msgid "E911: Using a Job as a Float" msgid "E911: Using a Job as a Float"
msgstr "E911: Benutzte Job als Float." msgstr "E911: Job als Float verwendet"
msgid "E914: Using a Channel as a Float" msgid "E914: Using a Channel as a Float"
msgstr "E914: Channel als Float verwendet." msgstr "E914: Channel als Float verwendet"
msgid "E975: Using a Blob as a Float"
msgstr "E975: Blob als Float verwendet"
msgid "E729: using Funcref as a String" msgid "E729: using Funcref as a String"
msgstr "E729: Funktionsreferenz als String verwendet" msgstr "E729: Funktionsreferenz als String verwendet"
@@ -630,6 +763,9 @@ msgstr "E730: Liste als String verwendet"
msgid "E731: using Dictionary as a String" msgid "E731: using Dictionary as a String"
msgstr "E731: Dictionary als String verwendet" msgstr "E731: Dictionary als String verwendet"
msgid "E976: using Blob as a String"
msgstr "E976: Blob als String verwendet"
msgid "E908: using an invalid value as a String" msgid "E908: using an invalid value as a String"
msgstr "E908: Ung<6E>ltiger Wert als String verwendet." msgstr "E908: Ung<6E>ltiger Wert als String verwendet."
@@ -681,8 +817,11 @@ msgstr ""
msgid " line " msgid " line "
msgstr " Zeile " msgstr " Zeile "
msgid "E977: Can only compare Blob with Blob"
msgstr "E977: Kann nur einen Blob mit einem Blob vergleichen"
msgid "E691: Can only compare List with List" msgid "E691: Can only compare List with List"
msgstr "E691: Kann nur eine Liste mit einer Liste vergleichen." msgstr "E691: Kann nur eine Liste mit einer Liste vergleichen"
msgid "E692: Invalid operation for List" msgid "E692: Invalid operation for List"
msgstr "E692: Unzul<75>ssige Operation f<>r Listen" msgstr "E692: Unzul<75>ssige Operation f<>r Listen"
@@ -706,6 +845,10 @@ msgstr "filter() Argument"
msgid "E686: Argument of %s must be a List" msgid "E686: Argument of %s must be a List"
msgstr "E686: Argument von %s muss eine Liste sein." msgstr "E686: Argument von %s muss eine Liste sein."
#, c-format
msgid "E899: Argument of %s must be a List or Blob"
msgstr "E899: Argument von %s muss eine Liste oder ein Blob sein."
msgid "E928: String required" msgid "E928: String required"
msgstr "E928: String wird ben<65>tigt." msgstr "E928: String wird ben<65>tigt."
@@ -715,12 +858,19 @@ msgstr "E808: Zahl oder Float ben
msgid "add() argument" msgid "add() argument"
msgstr "add() Argument" msgstr "add() Argument"
#, c-format
msgid "E158: Invalid buffer name: %s"
msgstr "E158: ung<6E>ltige Puffernummer: %s"
msgid "E785: complete() can only be used in Insert mode" msgid "E785: complete() can only be used in Insert mode"
msgstr "E785: complete() kann nur im Einf<6E>ge-Modus verwendet werden." msgstr "E785: complete() kann nur im Einf<6E>ge-Modus verwendet werden."
msgid "&Ok" msgid "&Ok"
msgstr "&Ok" msgstr "&Ok"
msgid "E980: lowlevel input not supported"
msgstr "E980: Low-Level Eingabe wird nicht unterst<73>tzt"
#, c-format #, c-format
msgid "+-%s%3ld line: " msgid "+-%s%3ld line: "
msgid_plural "+-%s%3ld lines: " msgid_plural "+-%s%3ld lines: "
@@ -765,8 +915,8 @@ msgid "E957: Invalid window number"
msgstr "E957: Ung<6E>ltige Fensternummer" msgstr "E957: Ung<6E>ltige Fensternummer"
#, c-format #, c-format
msgid "E798: ID is reserved for \":match\": %ld" msgid "E798: ID is reserved for \":match\": %d"
msgstr "E798: ID ist f<>r \":match\" reserviert: %ld" msgstr "E798: ID ist f<>r \":match\" reserviert: %d"
msgid "E726: Stride is zero" msgid "E726: Stride is zero"
msgstr "E726: Stride ist Null" msgstr "E726: Stride ist Null"
@@ -1111,51 +1261,6 @@ msgstr "E154: Doppelter Tag \"%s\" in der Datei %s/%s"
msgid "E150: Not a directory: %s" msgid "E150: Not a directory: %s"
msgstr "E150: Kein Verzeichnis: %s" msgstr "E150: Kein Verzeichnis: %s"
#, c-format
msgid "E160: Unknown sign command: %s"
msgstr "E160: Unbekannter \"sign\"-Befehl: %s"
msgid "E156: Missing sign name"
msgstr "E156: Name des Zeichens fehlt"
msgid "E612: Too many signs defined"
msgstr "E612: Zu viele Zeichen definiert"
#, c-format
msgid "E239: Invalid sign text: %s"
msgstr "E239: Ung<6E>ltiger Text f<>r ein Zeichen: %s"
#, c-format
msgid "E155: Unknown sign: %s"
msgstr "E155: Unbekanntes Zeichen: %s"
msgid "E159: Missing sign number"
msgstr "E159: Fehlende Zeichennummer"
#, c-format
msgid "E158: Invalid buffer name: %s"
msgstr "E158: ung<6E>ltige Puffernummer: %s"
msgid "E934: Cannot jump to a buffer that does not have a name"
msgstr "E934: Kann nicht zu einem Puffer ohne Namen springen."
#, c-format
msgid "E157: Invalid sign ID: %ld"
msgstr "E157: Ung<6E>ltige Zeichen-ID: %ld"
#, c-format
msgid "E885: Not possible to change sign %s"
msgstr "E885: Nicht m<>glich Zeichen %s zu <20>ndern."
msgid " (NOT FOUND)"
msgstr " (NICHT GEFUNDEN)"
msgid " (not supported)"
msgstr " (nicht unterst<73>tzt)"
msgid "[Deleted]"
msgstr "[Gel<65>scht]"
msgid "No old files" msgid "No old files"
msgstr "Keine Alt-Dateien" msgstr "Keine Alt-Dateien"
@@ -1371,10 +1476,10 @@ msgstr[0] "%d weitere Datei zum Editieren. Trotzdem beenden?"
msgstr[1] "%d weitere Dateien zum Editieren. Trotzdem beenden?" msgstr[1] "%d weitere Dateien zum Editieren. Trotzdem beenden?"
#, c-format #, c-format
msgid "E173: %ld more file to edit" msgid "E173: %d more file to edit"
msgid_plural "E173: %ld more files to edit" msgid_plural "E173: %d more files to edit"
msgstr[0] "E173: %ld weitere Datei zum Editieren" msgstr[0] "E173: %d weitere Datei zum Editieren"
msgstr[1] "E173: %ld weitere Dateien zum Editieren" msgstr[1] "E173: %d weitere Dateien zum Editieren"
#, c-format #, c-format
msgid "E174: Command already exists: add ! to replace it: %s" msgid "E174: Command already exists: add ! to replace it: %s"
@@ -2042,67 +2147,6 @@ msgstr "E462: Konnte das Neuladen von \"%s\" nicht vorbereiten"
msgid "E321: Could not reload \"%s\"" msgid "E321: Could not reload \"%s\""
msgstr "E321: \"%s\" konnte nicht neu geladen werden" msgstr "E321: \"%s\" konnte nicht neu geladen werden"
msgid "--Deleted--"
msgstr "--gel<65>scht--"
#, c-format
msgid "auto-removing autocommand: %s <buffer=%d>"
msgstr "Entferne Autokommando: %s <buffer=%d>"
#, c-format
msgid "E367: No such group: \"%s\""
msgstr "E367: Keine solche Gruppe: \"%s\""
msgid "E936: Cannot delete the current group"
msgstr "E936: Kann die aktuelle Gruppe nicht l<>schen."
msgid "W19: Deleting augroup that is still in use"
msgstr "W19: L<>sche Autogruppe, die noch in Benutzung ist."
#, c-format
msgid "E215: Illegal character after *: %s"
msgstr "E215: Unzul<75>ssiges Zeichen nach *: %s"
#, c-format
msgid "E216: No such event: %s"
msgstr "E216: Kein derartiges Ereignis: %s"
#, c-format
msgid "E216: No such group or event: %s"
msgstr "E216: Keine solche Gruppe oder Ereignis: %s"
msgid ""
"\n"
"--- Autocommands ---"
msgstr ""
"\n"
"--- Autokommandos ---"
#, c-format
msgid "E680: <buffer=%d>: invalid buffer number "
msgstr "E680: <buffer=%d>: Ung<6E>ltige Puffer Nummer "
msgid "E217: Can't execute autocommands for ALL events"
msgstr "E217: Autokommandos k<>nnen nicht f<>r ALL Ereignisse ausgef<65>hrt werden"
msgid "No matching autocommands"
msgstr "Keine passenden Autokommandos"
msgid "E218: autocommand nesting too deep"
msgstr "E218: Autokommando-Schachtelung zu tief"
#, c-format
msgid "%s Autocommands for \"%s\""
msgstr "%s Autokommandos f<>r \"%s\""
#, c-format
msgid "Executing %s"
msgstr "Ausf<73>hrung von %s"
#, c-format
msgid "autocommand %s"
msgstr "Autokommando %s"
msgid "E219: Missing {." msgid "E219: Missing {."
msgstr "E219: Es fehlt ein {." msgstr "E219: Es fehlt ein {."
@@ -2393,20 +2437,20 @@ msgid "Font0: %s"
msgstr "Schriftart 0: %s" msgstr "Schriftart 0: %s"
#, c-format #, c-format
msgid "Font1: %s" msgid "Font%d: %s"
msgstr "Schriftart 1: %s" msgstr "Schriftart %d: %s"
#, c-format #, c-format
msgid "Font%ld width is not twice that of font0" msgid "Font%d width is not twice that of font0"
msgstr "Breite der Schriftart%ld ist nicht doppelt so breit wie Schriftart0" msgstr "Breite der Schriftart%d ist nicht doppelt so breit wie Schriftart0"
#, c-format #, c-format
msgid "Font0 width: %ld" msgid "Font0 width: %d"
msgstr "Schriftart 0 Breite: %ld" msgstr "Schriftart 0 Breite: %d"
#, c-format #, c-format
msgid "Font1 width: %ld" msgid "Font%d width: %d"
msgstr "Schriftart 1 Breite: %ld" msgstr "Schriftart %d Breite: %d"
msgid "Invalid font specification" msgid "Invalid font specification"
msgstr "Ung<6E>ltige Spezifikation der Schriftart" msgstr "Ung<6E>ltige Spezifikation der Schriftart"
@@ -2582,8 +2626,8 @@ msgid "Added cscope database %s"
msgstr "csope Datenbank %s hinzugef<65>gt" msgstr "csope Datenbank %s hinzugef<65>gt"
#, c-format #, c-format
msgid "E262: error reading cscope connection %ld" msgid "E262: error reading cscope connection %d"
msgstr "E262: Fehler beim Lesen der cscope Verbindung %ld" msgstr "E262: Fehler beim Lesen der cscope Verbindung %d"
msgid "E561: unknown cscope search type" msgid "E561: unknown cscope search type"
msgstr "E561: Unbekannter cscope Suchtyp" msgstr "E561: Unbekannter cscope Suchtyp"
@@ -3921,9 +3965,6 @@ msgstr "E326: Zu viele Auslagerungsdateien gefunden"
msgid "E327: Part of menu-item path is not sub-menu" msgid "E327: Part of menu-item path is not sub-menu"
msgstr "E327: Teil des Men<65>punkt-Pfades muss zum Untermen<65> f<>hren" msgstr "E327: Teil des Men<65>punkt-Pfades muss zum Untermen<65> f<>hren"
msgid "E328: Menu only exists in another mode"
msgstr "E328: Men<65> existiert nur in anderen Modi"
#, c-format #, c-format
msgid "E329: No menu \"%s\"" msgid "E329: No menu \"%s\""
msgstr "E329: Kein Men<65> \"%s\"" msgstr "E329: Kein Men<65> \"%s\""
@@ -4158,8 +4199,8 @@ msgstr ""
"\"" "\""
#, c-format #, c-format
msgid "E658: NetBeans connection lost for buffer %ld" msgid "E658: NetBeans connection lost for buffer %d"
msgstr "E658: Verbindung zu NetBeans f<>r Puffer %ld verloren" msgstr "E658: Verbindung zu NetBeans f<>r Puffer %d verloren"
msgid "E838: netbeans is not supported with this GUI" msgid "E838: netbeans is not supported with this GUI"
msgstr "E838: netbeans wird nicht unterst<73>tzt mit dieser GUI." msgstr "E838: netbeans wird nicht unterst<73>tzt mit dieser GUI."
@@ -5110,6 +5151,66 @@ msgstr ""
"# Letztes %sSuchmuster:\n" "# Letztes %sSuchmuster:\n"
"~" "~"
msgid "[Deleted]"
msgstr "[Gel<65>scht]"
msgid ""
"\n"
"--- Signs ---"
msgstr ""
"\n"
"--- Zeichen ---"
#, c-format
msgid "Signs for %s:"
msgstr "Zeichen f<>r %s:"
#, c-format
msgid " group=%s"
msgstr " Gruppe=%s"
#, c-format
msgid " line=%ld id=%d%s name=%s priority=%d"
msgstr " Zeile=%ld id=%d%s Name=%s Priorit<69>t=%d"
msgid "E612: Too many signs defined"
msgstr "E612: Zu viele Zeichen definiert"
#, c-format
msgid "E239: Invalid sign text: %s"
msgstr "E239: Ung<6E>ltiger Text f<>r ein Zeichen: %s"
#, c-format
msgid "E155: Unknown sign: %s"
msgstr "E155: Unbekanntes Zeichen: %s"
#, c-format
msgid "E885: Not possible to change sign %s"
msgstr "E885: Nicht m<>glich Zeichen %s zu <20>ndern."
msgid "E159: Missing sign number"
msgstr "E159: Fehlende Zeichennummer"
#, c-format
msgid "E157: Invalid sign ID: %d"
msgstr "E157: Ung<6E>ltige Zeichen-ID: %d"
msgid "E934: Cannot jump to a buffer that does not have a name"
msgstr "E934: Kann nicht zu einem Puffer ohne Namen springen."
#, c-format
msgid "E160: Unknown sign command: %s"
msgstr "E160: Unbekannter \"sign\"-Befehl: %s"
msgid "E156: Missing sign name"
msgstr "E156: Name des Zeichens fehlt"
msgid " (NOT FOUND)"
msgstr " (NICHT GEFUNDEN)"
msgid " (not supported)"
msgstr " (nicht unterst<73>tzt)"
msgid "E756: Spell checking is not enabled" msgid "E756: Spell checking is not enabled"
msgstr "E756: Rechtschreibpr<70>fung ist nicht aktiviert" msgstr "E756: Rechtschreibpr<70>fung ist nicht aktiviert"
@@ -5220,10 +5321,6 @@ msgstr "Umwandlungsfehler beim Wort in %s Zeile %d: %s"
msgid "Conversion in %s not supported: from %s to %s" msgid "Conversion in %s not supported: from %s to %s"
msgstr "Umwandlung in %s nicht unterst<73>tzt: von %s nach %s" msgstr "Umwandlung in %s nicht unterst<73>tzt: von %s nach %s"
#, c-format
msgid "Conversion in %s not supported"
msgstr "Umwandlung in %s nicht unterst<73>tzt"
#, c-format #, c-format
msgid "Invalid value for FLAG in %s line %d: %s" msgid "Invalid value for FLAG in %s line %d: %s"
msgstr "Ung<6E>ltiger Wert von FLAG in %s Zeile %d: %s" msgstr "Ung<6E>ltiger Wert von FLAG in %s Zeile %d: %s"
@@ -5445,8 +5542,8 @@ msgid "E751: Output file name must not have region name"
msgstr "E751: Ausgabedatei darf keinen Regionsnamen haben" msgstr "E751: Ausgabedatei darf keinen Regionsnamen haben"
#, c-format #, c-format
msgid "E754: Only up to %ld regions supported" msgid "E754: Only up to %d regions supported"
msgstr "E754: Maximal %ld Regionen unterst<73>tzt" msgstr "E754: Maximal %d Regionen unterst<73>tzt"
#, c-format #, c-format
msgid "E755: Invalid region in %s" msgid "E755: Invalid region in %s"
@@ -5463,8 +5560,8 @@ msgid "Done!"
msgstr "Fertig!" msgstr "Fertig!"
#, c-format #, c-format
msgid "E765: 'spellfile' does not have %ld entries" msgid "E765: 'spellfile' does not have %d entries"
msgstr "E765: 'spellfile' hat keine %ld Eintr<74>ge" msgstr "E765: 'spellfile' hat nicht %d Eintr<74>ge"
#, c-format #, c-format
msgid "Word '%.*s' removed from %s" msgid "Word '%.*s' removed from %s"
@@ -5871,6 +5968,35 @@ msgstr "E953: Datei existiert bereits: %s"
msgid "E955: Not a terminal buffer" msgid "E955: Not a terminal buffer"
msgstr "E955: Kein Terminal Puffer" msgstr "E955: Kein Terminal Puffer"
#, c-format
msgid "E971: Property type %s does not exist"
msgstr "E971: Der Eigenschaftstyp %s existiert nicht"
#, c-format
msgid "E964: Invalid column number: %ld"
msgstr "E964: Ung<6E>ltige Spaltennummer: %ld"
#, c-format
msgid "E966: Invalid line number: %ld"
msgstr "E966: Ung<6E>ltige Zeilennummer: %ld"
msgid "E965: missing property type name"
msgstr "E965: Fehlender Eigenschaften Typname"
msgid "E967: text property info corrupted"
msgstr "E967: Texteigenschaft-Info besch<63>digt"
msgid "E968: Need at least one of 'id' or 'type'"
msgstr "E968: Ben<65>tige entweder 'id' oder 'type'"
#, c-format
msgid "E969: Property type %s already defined"
msgstr "E969: Eigenschaftentyp %s bereits definiert"
#, c-format
msgid "E970: Unknown highlight group name: '%s'"
msgstr "E970: Unbekannter Highlighting-Gruppenname: '%s'"
msgid "new shell started\n" msgid "new shell started\n"
msgstr "neue Shell gestartet\n" msgstr "neue Shell gestartet\n"
@@ -6434,6 +6560,10 @@ msgstr "Men
msgid "Already only one window" msgid "Already only one window"
msgstr "Bereits nur ein Fenster" msgstr "Bereits nur ein Fenster"
#, c-format
msgid "E92: Buffer %ld not found"
msgstr "E92: Puffer %ld nicht gefunden."
msgid "E441: There is no preview window" msgid "E441: There is no preview window"
msgstr "E441: Es gibt kein Vorschaufenster" msgstr "E441: Es gibt kein Vorschaufenster"
@@ -6467,23 +6597,23 @@ msgid "E447: Can't find file \"%s\" in path"
msgstr "E447: Kann Datei \"%s\" nicht im Pfad finden" msgstr "E447: Kann Datei \"%s\" nicht im Pfad finden"
#, c-format #, c-format
msgid "E799: Invalid ID: %ld (must be greater than or equal to 1)" msgid "E799: Invalid ID: %d (must be greater than or equal to 1)"
msgstr "E799: Ung<6E>ltige ID: %ld (muss gr<67><72>er gleich 1 sein)" msgstr "E799: Ung<6E>ltige ID: %d (muss gr<67><72>er gleich 1 sein)"
#, c-format #, c-format
msgid "E801: ID already taken: %ld" msgid "E801: ID already taken: %d"
msgstr "E801: ID bereits benutzt: %ld" msgstr "E801: ID bereits benutzt: %d"
msgid "List or number required" msgid "List or number required"
msgstr "Liste oder Nummer erforderlich" msgstr "Liste oder Nummer erforderlich"
#, c-format #, c-format
msgid "E802: Invalid ID: %ld (must be greater than or equal to 1)" msgid "E802: Invalid ID: %d (must be greater than or equal to 1)"
msgstr "E802: Ung<6E>ltige ID: %ld (muss gr<67><72>er gleich 1 sein)" msgstr "E802: Ung<6E>ltige ID: %d (muss gr<67><72>er gleich 1 sein)"
#, c-format #, c-format
msgid "E803: ID not found: %ld" msgid "E803: ID not found: %d"
msgstr "E803: ID nicht gefunden: %ld" msgstr "E803: ID nicht gefunden: %d"
#, c-format #, c-format
msgid "E370: Could not load library %s" msgid "E370: Could not load library %s"
@@ -6796,7 +6926,14 @@ msgstr "E715: Dictionary ben
#, c-format #, c-format
msgid "E684: list index out of range: %ld" msgid "E684: list index out of range: %ld"
msgstr "E684: Index der Liste au<61>erhalb des zul<75>ssigen Bereichs: %ld." msgstr "E684: Index der Liste au<61>erhalb des zul<75>ssigen Bereichs: %ld"
#, c-format
msgid "E979: Blob index out of range: %ld"
msgstr "E979: Blobindex au<61>erhalb des Bereichs: %ld"
msgid "E978: Invalid operation for Blob"
msgstr "E978: Unzul<75>ssige Operation f<>r Blob"
#, c-format #, c-format
msgid "E118: Too many arguments for function: %s" msgid "E118: Too many arguments for function: %s"
@@ -6809,9 +6946,16 @@ msgstr "E716: Schl
msgid "E714: List required" msgid "E714: List required"
msgstr "E714: Liste ben<65>tigt" msgstr "E714: Liste ben<65>tigt"
msgid "E897: List or Blob required"
msgstr "E897: Liste oder Blob ben<65>tigt"
#, c-format #, c-format
msgid "E712: Argument of %s must be a List or Dictionary" msgid "E712: Argument of %s must be a List or Dictionary"
msgstr "E712: Argument von %s muss eine Liste oder ein W<EFBFBD>rterbuch sein." msgstr "E712: Argument von %s muss eine Liste oder ein Dictionary sein."
#, c-format
msgid "E896: Argument of %s must be a List, Dictionary or Blob"
msgstr "E896: Argument von %s muss eine Liste, Dictionary oder ein Blob sein."
msgid "E47: Error while reading errorfile" msgid "E47: Error while reading errorfile"
msgstr "E47: Fehler w<>hrend des Lesens der Fehlerdatei" msgstr "E47: Fehler w<>hrend des Lesens der Fehlerdatei"
@@ -6915,6 +7059,9 @@ msgstr "E919: Verzeichnis nicht gefunden in '%s': \"%s\""
msgid "E952: Autocommand caused recursive behavior" msgid "E952: Autocommand caused recursive behavior"
msgstr "E952: Autokommando verursachten Rekursion" msgstr "E952: Autokommando verursachten Rekursion"
msgid "E328: Menu only exists in another mode"
msgstr "E328: Men<65> existiert nur in anderen Modi"
msgid "search hit TOP, continuing at BOTTOM" msgid "search hit TOP, continuing at BOTTOM"
msgstr "Suche erreichte den ANFANG und wurde am ENDE fortgesetzt" msgstr "Suche erreichte den ANFANG und wurde am ENDE fortgesetzt"