vim-patch:942db23c9cb7

Update runtime files
942db23c9c

Omit po files.
This commit is contained in:
Jan Edmund Lazo
2021-05-01 23:21:50 -04:00
parent ac83c6eba6
commit 2081504a33
20 changed files with 221 additions and 157 deletions

File diff suppressed because one or more lines are too long

View File

@@ -3,7 +3,7 @@
" Maintainer: Dávid Szabó ( complex857 AT gmail DOT com ) " Maintainer: Dávid Szabó ( complex857 AT gmail DOT com )
" Previous Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl ) " Previous Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
" URL: https://github.com/shawncplus/phpcomplete.vim " URL: https://github.com/shawncplus/phpcomplete.vim
" Last Change: 2018 Oct 10 " Last Change: 2021 Feb 08
" "
" OPTIONS: " OPTIONS:
" "
@@ -122,7 +122,6 @@ function! phpcomplete#CompletePHP(findstart, base) " {{{
endif endif
endif endif
" If exists b:php_menu it means completion was already constructed we " If exists b:php_menu it means completion was already constructed we
" don't need to do anything more " don't need to do anything more
if exists("b:php_menu") if exists("b:php_menu")
@@ -148,8 +147,6 @@ function! phpcomplete#CompletePHP(findstart, base) " {{{
try try
let eventignore = &eventignore let eventignore = &eventignore
let &eventignore = 'all' let &eventignore = 'all'
let winheight = winheight(0)
let winnr = winnr()
let [current_namespace, imports] = phpcomplete#GetCurrentNameSpace(getline(0, line('.'))) let [current_namespace, imports] = phpcomplete#GetCurrentNameSpace(getline(0, line('.')))
@@ -183,7 +180,6 @@ function! phpcomplete#CompletePHP(findstart, base) " {{{
endif endif
if filereadable(classlocation) if filereadable(classlocation)
let classfile = readfile(classlocation)
let classcontent = '' let classcontent = ''
let classcontent .= "\n".phpcomplete#GetClassContents(classlocation, classname) let classcontent .= "\n".phpcomplete#GetClassContents(classlocation, classname)
let sccontent = split(classcontent, "\n") let sccontent = split(classcontent, "\n")
@@ -217,7 +213,6 @@ function! phpcomplete#CompletePHP(findstart, base) " {{{
return phpcomplete#CompleteGeneral(a:base, current_namespace, imports) return phpcomplete#CompleteGeneral(a:base, current_namespace, imports)
endif endif
finally finally
silent! exec winnr.'resize '.winheight
let &eventignore = eventignore let &eventignore = eventignore
endtry endtry
endfunction endfunction
@@ -1025,7 +1020,7 @@ function! phpcomplete#CompleteUserClass(context, base, sccontent, visibility) "
let c_var = '$'.c_var let c_var = '$'.c_var
endif endif
let c_variables[c_var] = '' let c_variables[c_var] = ''
if g:phpcomplete_parse_docblock_comments && len(get(variables, var_index)) > 0 if g:phpcomplete_parse_docblock_comments && len(get(variables, var_index, '')) > 0
let c_doc[c_var] = phpcomplete#GetDocBlock(a:sccontent, variables[var_index]) let c_doc[c_var] = phpcomplete#GetDocBlock(a:sccontent, variables[var_index])
endif endif
let var_index += 1 let var_index += 1
@@ -2082,26 +2077,17 @@ function! phpcomplete#GetClassContentsStructure(file_path, file_lines, class_nam
" ... " ...
" ] " ]
" "
let full_file_path = fnamemodify(a:file_path, ':p')
let class_name_pattern = '[a-zA-Z_\x7f-\xff\\][a-zA-Z_0-9\x7f-\xff\\]*' let class_name_pattern = '[a-zA-Z_\x7f-\xff\\][a-zA-Z_0-9\x7f-\xff\\]*'
let cfile = join(a:file_lines, "\n") let full_file_path = fnamemodify(a:file_path, ':p')
let result = [] let result = []
" We use new buffer and (later) normal! because let popup_id = popup_create(a:file_lines, {'hidden': v:true})
" this is the most efficient way. The other way
" is to go through the looong string looking for
" matching {}
" remember the window we started at call win_execute(popup_id, 'call search(''\c\(class\|interface\|trait\)\_s\+'.a:class_name.'\(\>\|$\)'')')
let phpcomplete_original_window = winnr() call win_execute(popup_id, "let cfline = line('.')")
call win_execute(popup_id, "call search('{')")
call win_execute(popup_id, "let endline = line('.')")
silent! below 1new call win_execute(popup_id, 'let content = join(getline('.cfline.', '.endline.'), "\n")')
silent! 0put =cfile
call search('\c\(class\|interface\|trait\)\_s\+'.a:class_name.'\(\>\|$\)')
let cfline = line('.')
call search('{')
let endline = line('.')
let content = join(getline(cfline, endline), "\n")
" Catch extends " Catch extends
if content =~? 'extends' if content =~? 'extends'
let extends_string = matchstr(content, '\(class\|interface\)\_s\+'.a:class_name.'\_.\+extends\_s\+\zs\('.class_name_pattern.'\(,\|\_s\)*\)\+\ze\(extends\|{\)') let extends_string = matchstr(content, '\(class\|interface\)\_s\+'.a:class_name.'\_.\+extends\_s\+\zs\('.class_name_pattern.'\(,\|\_s\)*\)\+\ze\(extends\|{\)')
@@ -2117,14 +2103,16 @@ function! phpcomplete#GetClassContentsStructure(file_path, file_lines, class_nam
else else
let implemented_interfaces = [] let implemented_interfaces = []
endif endif
call searchpair('{', '', '}', 'W')
let class_closing_bracket_line = line('.') call win_execute(popup_id, 'let [class_closing_bracket_line, class_closing_bracket_col] = searchpairpos("{", "", "}", "W")')
" Include class docblock " Include class docblock
let doc_line = cfline - 1 let doc_line = cfline - 1
if getline(doc_line) =~? '^\s*\*/' call win_execute(popup_id, 'let l = getline('.doc_line.')')
if l =~? '^\s*\*/'
while doc_line != 0 while doc_line != 0
if getline(doc_line) =~? '^\s*/\*\*' call win_execute(popup_id, 'let l = getline('.doc_line.')')
if l =~? '^\s*/\*\*'
let cfline = doc_line let cfline = doc_line
break break
endif endif
@@ -2132,22 +2120,22 @@ function! phpcomplete#GetClassContentsStructure(file_path, file_lines, class_nam
endwhile endwhile
endif endif
let classcontent = join(getline(cfline, class_closing_bracket_line), "\n") call win_execute(popup_id, 'let classcontent = join(getline('.cfline.', '.class_closing_bracket_line.'), "\n")')
let used_traits = [] let used_traits = []
" move back to the line next to the class's definition " move back to the line next to the class's definition
call cursor(endline + 1, 1) call win_execute(popup_id, 'call cursor('.(endline + 1).', 1)')
let keep_searching = 1 let keep_searching = 1
while keep_searching != 0 while keep_searching != 0
" try to grab "use..." keywords " try to grab "use..." keywords
let [lnum, col] = searchpos('\c^\s\+use\s\+'.class_name_pattern, 'cW', class_closing_bracket_line) call win_execute(popup_id, 'let [lnum, col] = searchpos(''\c^\s\+use\s\+'.class_name_pattern.''', "cW", '.class_closing_bracket_line.')')
let syn_name = synIDattr(synID(lnum, col, 0), "name") call win_execute(popup_id, 'let syn_name = synIDattr(synID('.lnum.', '.col.', 0), "name")')
if syn_name =~? 'string\|comment' if syn_name =~? 'string\|comment'
call cursor(lnum + 1, 1) call win_execute(popup_id, 'call cursor('.(lnum + 1).', 1)')
continue continue
endif endif
let trait_line = getline(lnum) call win_execute(popup_id, 'let trait_line = getline('.lnum.')')
if trait_line !~? ';' if trait_line !~? ';'
" try to find the next line containing ';' " try to find the next line containing ';'
let l = lnum let l = lnum
@@ -2157,25 +2145,23 @@ function! phpcomplete#GetClassContentsStructure(file_path, file_lines, class_nam
while search_line !~? ';' && l > 0 while search_line !~? ';' && l > 0
" file lines are reversed so we need to go backwards " file lines are reversed so we need to go backwards
let l += 1 let l += 1
let search_line = getline(l) call win_execute(popup_id, 'let search_line = getline('.l.')')
let trait_line .= ' '.substitute(search_line, '\(^\s\+\|\s\+$\)', '', 'g') let trait_line .= ' '.substitute(search_line, '\(^\s\+\|\s\+$\)', '', 'g')
endwhile endwhile
endif endif
let use_expression = matchstr(trait_line, '^\s*use\s\+\zs.\{-}\ze;') let use_expression = matchstr(trait_line, '^\s*use\s\+\zs.\{-}\ze;')
let use_parts = map(split(use_expression, '\s*,\s*'), 'substitute(v:val, "\\s+", " ", "g")') let use_parts = map(split(use_expression, '\s*,\s*'), 'substitute(v:val, "\\s+", " ", "g")')
let used_traits += map(use_parts, 'substitute(v:val, "\\s", "", "g")') let used_traits += map(use_parts, 'substitute(v:val, "\\s", "", "g")')
call cursor(lnum + 1, 1) call win_execute(popup_id, 'call cursor('.(lnum + 1).', 1)')
if [lnum, col] == [0, 0] if [lnum, col] == [0, 0]
let keep_searching = 0 let keep_searching = 0
endif endif
endwhile endwhile
silent! bw! % call popup_close(popup_id)
let [current_namespace, imports] = phpcomplete#GetCurrentNameSpace(a:file_lines[0:cfline]) let [current_namespace, imports] = phpcomplete#GetCurrentNameSpace(a:file_lines[0:cfline])
" go back to original window
exe phpcomplete_original_window.'wincmd w'
call add(result, { call add(result, {
\ 'class': a:class_name, \ 'class': a:class_name,
\ 'content': classcontent, \ 'content': classcontent,
@@ -2532,40 +2518,37 @@ function! phpcomplete#FormatDocBlock(info) " {{{
endif endif
return res return res
endfunction! endfunction
" }}} " }}}
function! phpcomplete#GetCurrentNameSpace(file_lines) " {{{ function! phpcomplete#GetCurrentNameSpace(file_lines) " {{{
let original_window = winnr() let popup_id = popup_create(a:file_lines, {'hidden': v:true})
call win_execute(popup_id, 'normal! G')
silent! below 1new
silent! 0put =a:file_lines
normal! G
" clear out classes, functions and other blocks " clear out classes, functions and other blocks
while 1 while 1
let block_start_pos = searchpos('\c\(class\|trait\|function\|interface\)\s\+\_.\{-}\zs{', 'Web') call win_execute(popup_id, 'let block_start_pos = searchpos(''\c\(class\|trait\|function\|interface\)\s\+\_.\{-}\zs{'', "Web")')
if block_start_pos == [0, 0] if block_start_pos == [0, 0]
break break
endif endif
let block_end_pos = searchpairpos('{', '', '}\|\%$', 'W', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"') call win_execute(popup_id, 'let block_end_pos = searchpairpos("{", "", ''}\|\%$'', "W", ''synIDattr(synID(line("."), col("."), 0), "name") =~? "string\\|comment"'')')
let popup_lines = winbufnr(popup_id)->getbufline(1, '$')
if block_end_pos != [0, 0] if block_end_pos != [0, 0]
" end of the block found, just delete it " end of the block found, just delete it
silent! exec block_start_pos[0].','.block_end_pos[0].'d _' call remove(popup_lines, block_start_pos[0] - 1, block_end_pos[0] - 1)
else else
" block pair not found, use block start as beginning and the end " block pair not found, use block start as beginning and the end
" of the buffer instead " of the buffer instead
silent! exec block_start_pos[0].',$d _' call remove(popup_lines, block_start_pos[0] - 1, -1)
endif endif
call popup_settext(popup_id, popup_lines)
endwhile endwhile
normal! G call win_execute(popup_id, 'normal! G', 'silent!')
" grab the remains " grab the remains
let file_lines = reverse(getline(1, line('.') - 1)) call win_execute(popup_id, "let file_lines = reverse(getline(1, line('.')-1))")
call popup_close(popup_id)
silent! bw! %
exe original_window.'wincmd w'
let namespace_name_pattern = '[a-zA-Z_\x7f-\xff\\][a-zA-Z_0-9\x7f-\xff\\]*' let namespace_name_pattern = '[a-zA-Z_\x7f-\xff\\][a-zA-Z_0-9\x7f-\xff\\]*'
let i = 0 let i = 0

View File

@@ -606,14 +606,14 @@ the use of square and curly brackets, and otherwise by community convention.
These conventions are not universally followed, so the Clojure indent script These conventions are not universally followed, so the Clojure indent script
offers a few configurable options, listed below. offers a few configurable options, listed below.
If the current vim does not include |searchpairpos()|, the indent script falls If the current vim does not include searchpairpos(), the indent script falls
back to normal 'lisp' indenting, and the following options are ignored. back to normal 'lisp' indenting, and the following options are ignored.
*g:clojure_maxlines* *g:clojure_maxlines*
Set maximum scan distance of |searchpairpos()|. Larger values trade Set maximum scan distance of searchpairpos(). Larger values trade performance
performance for correctness when dealing with very long forms. A value of 0 for correctness when dealing with very long forms. A value of 0 will scan
will scan without limits. without limits.
> >
" Default " Default
let g:clojure_maxlines = 100 let g:clojure_maxlines = 100

View File

@@ -3728,8 +3728,10 @@ A jump table for the options with a short description can be found at |Q_op|.
*lcs-lead* *lcs-lead*
lead:c Character to show for leading spaces. When omitted, lead:c Character to show for leading spaces. When omitted,
leading spaces are blank. Overrides the "space" leading spaces are blank. Overrides the "space"
setting for leading spaces. setting for leading spaces. You can combine it with
*lcs-trail* "tab:", for example: >
:set listchars+=tab:>-,lead:.
< *lcs-trail*
trail:c Character to show for trailing spaces. When omitted, trail:c Character to show for trailing spaces. When omitted,
trailing spaces are blank. Overrides the "space" trailing spaces are blank. Overrides the "space"
setting for trailing spaces. setting for trailing spaces.

View File

@@ -1006,6 +1006,12 @@ commands can be combined to create a NewGrep command: >
'smartcase' is not used. 'smartcase' is not used.
If {pattern} is empty (e.g. // is specified), the last If {pattern} is empty (e.g. // is specified), the last
used search pattern is used. |last-pattern| used search pattern is used. |last-pattern|
|QuickFixCmdPre| and |QuickFixCmdPost| are triggered.
A file that is opened for matching may use a buffer
number, but it is reused if possible to avoid
consuming buffer numbers.
:{count}vim[grep] ... :{count}vim[grep] ...
When a number is put before the command this is used When a number is put before the command this is used
as the maximum number of matches to find. Use as the maximum number of matches to find. Use

View File

@@ -770,7 +770,11 @@ resulting file, when executed with a ":source" command:
"options". Script-local mappings will not be written. "options". Script-local mappings will not be written.
2. Restores global variables that start with an uppercase letter and contain 2. Restores global variables that start with an uppercase letter and contain
at least one lowercase letter, if 'sessionoptions' contains "globals". at least one lowercase letter, if 'sessionoptions' contains "globals".
3. Unloads all currently loaded buffers. 3. Closes all windows in the current tab page, except the current one; closes
all tab pages except the current one (this results in currently loaded
buffers to be unloaded, some may become hidden if 'hidden' is set or
otherwise specified); wipes out the current buffer, if it is empty
and unnamed.
4. Restores the current directory if 'sessionoptions' contains "curdir", or 4. Restores the current directory if 'sessionoptions' contains "curdir", or
sets the current directory to where the Session file is if 'sessionoptions' sets the current directory to where the Session file is if 'sessionoptions'
contains "sesdir". contains "sesdir".

View File

@@ -186,7 +186,9 @@ CTRL-W CTRL_N *CTRL-W_CTRL-N*
:[N]new [++opt] [+cmd] {file} :[N]new [++opt] [+cmd] {file}
:[N]sp[lit] [++opt] [+cmd] {file} *:split_f* :[N]sp[lit] [++opt] [+cmd] {file} *:split_f*
Create a new window and start editing file {file} in it. This Create a new window and start editing file {file} in it. This
behaves like a ":split" first, and then an ":e" command. behaves almost like a ":split" first, and then an ":edit"
command, but the alternate file name in the original window is
set to {file}.
If [+cmd] is given, execute the command when the file has been If [+cmd] is given, execute the command when the file has been
loaded |+cmd|. loaded |+cmd|.
Also see |++opt|. Also see |++opt|.

View File

@@ -1,11 +1,11 @@
" Vim filetype plugin file " Vim filetype plugin file
" Language: Clojure " Language: Clojure
" Author: Meikel Brandmeyer <mb@kotka.de> " Maintainer: Alex Vear <av@axvr.io>
" " Former Maintainers: Sung Pae <self@sungpae.com>
" Maintainer: Sung Pae <self@sungpae.com> " Meikel Brandmeyer <mb@kotka.de>
" URL: https://github.com/guns/vim-clojure-static " URL: https://github.com/clojure-vim/clojure.vim
" License: Same as Vim " License: Vim (see :h license)
" Last Change: 18 July 2016 " Last Change: 2021-02-13
if exists("b:did_ftplugin") if exists("b:did_ftplugin")
finish finish
@@ -43,7 +43,7 @@ setlocal commentstring=;\ %s
" specially and hence are not indented specially. " specially and hence are not indented specially.
" "
" -*- LISPWORDS -*- " -*- LISPWORDS -*-
" Generated from https://github.com/guns/vim-clojure-static/blob/vim-release-011/clj/src/vim_clojure_static/generate.clj " Generated from https://github.com/clojure-vim/clojure.vim/blob/f8594e7030cdfb0b7990ac92953c77a08a7220f0/clj/src/vim_clojure_static/generate.clj
setlocal lispwords=as->,binding,bound-fn,case,catch,cond->,cond->>,condp,def,definline,definterface,defmacro,defmethod,defmulti,defn,defn-,defonce,defprotocol,defrecord,defstruct,deftest,deftest-,deftype,doseq,dotimes,doto,extend,extend-protocol,extend-type,fn,for,if,if-let,if-not,if-some,let,letfn,locking,loop,ns,proxy,reify,set-test,testing,when,when-first,when-let,when-not,when-some,while,with-bindings,with-in-str,with-local-vars,with-open,with-precision,with-redefs,with-redefs-fn,with-test setlocal lispwords=as->,binding,bound-fn,case,catch,cond->,cond->>,condp,def,definline,definterface,defmacro,defmethod,defmulti,defn,defn-,defonce,defprotocol,defrecord,defstruct,deftest,deftest-,deftype,doseq,dotimes,doto,extend,extend-protocol,extend-type,fn,for,if,if-let,if-not,if-some,let,letfn,locking,loop,ns,proxy,reify,set-test,testing,when,when-first,when-let,when-not,when-some,while,with-bindings,with-in-str,with-local-vars,with-open,with-precision,with-redefs,with-redefs-fn,with-test
" Provide insert mode completions for special forms and clojure.core. As " Provide insert mode completions for special forms and clojure.core. As
@@ -57,21 +57,6 @@ for s:setting in ['omnifunc', 'completefunc']
endif endif
endfor endfor
" Take all directories of the CLOJURE_SOURCE_DIRS environment variable
" and add them to the path option.
"
" This is a legacy option for VimClojure users.
if exists('$CLOJURE_SOURCE_DIRS')
for s:dir in split($CLOJURE_SOURCE_DIRS, (has("win32") || has("win64")) ? ';' : ':')
let s:dir = fnameescape(s:dir)
" Whitespace escaping for Windows
let s:dir = substitute(s:dir, '\', '\\\\', 'g')
let s:dir = substitute(s:dir, '\ ', '\\ ', 'g')
execute "setlocal path+=" . s:dir . "/**"
endfor
let b:undo_ftplugin .= ' | setlocal path<'
endif
" Skip brackets in ignored syntax regions when using the % command " Skip brackets in ignored syntax regions when using the % command
if exists('loaded_matchit') if exists('loaded_matchit')
let b:match_words = &matchpairs let b:match_words = &matchpairs

View File

@@ -1,7 +1,7 @@
" Vim filetype plugin " Vim filetype plugin
" Language: Vim " Language: Vim
" Maintainer: Bram Moolenaar <Bram@vim.org> " Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2021 Jan 23 " Last Change: 2021 Feb 07
" Only do this when not done yet for this buffer " Only do this when not done yet for this buffer
if exists("b:did_ftplugin") if exists("b:did_ftplugin")
@@ -98,7 +98,7 @@ if exists("loaded_matchit")
" func name " func name
" require a parenthesis following, then there can be an "endfunc". " require a parenthesis following, then there can be an "endfunc".
let b:match_words = let b:match_words =
\ '\<\%(fu\%[nction]\|def\)\s\+\S\+(:\<retu\%[rn]\>:\<\%(endf\%[unction]\|enddef\)\>,' . + \ '\<\%(fu\%[nction]\|def\)!\=\s\+\S\+(:\<retu\%[rn]\>:\<\%(endf\%[unction]\|enddef\)\>,' .
\ '\<\(wh\%[ile]\|for\)\>:\<brea\%[k]\>:\<con\%[tinue]\>:\<end\(w\%[hile]\|fo\%[r]\)\>,' . \ '\<\(wh\%[ile]\|for\)\>:\<brea\%[k]\>:\<con\%[tinue]\>:\<end\(w\%[hile]\|fo\%[r]\)\>,' .
\ '\<if\>:\<el\%[seif]\>:\<en\%[dif]\>,' . \ '\<if\>:\<el\%[seif]\>:\<en\%[dif]\>,' .
\ '{:},' . \ '{:},' .

View File

@@ -1,12 +1,11 @@
" Vim indent file " Vim indent file
" Language: Clojure " Language: Clojure
" Author: Meikel Brandmeyer <mb@kotka.de> " Maintainer: Alex Vear <av@axvr.io>
" URL: http://kotka.de/projects/clojure/vimclojure.html " Former Maintainers: Sung Pae <self@sungpae.com>
" " Meikel Brandmeyer <mb@kotka.de>
" Maintainer: Sung Pae <self@sungpae.com> " URL: https://github.com/clojure-vim/clojure.vim
" URL: https://github.com/guns/vim-clojure-static " License: Vim (see :h license)
" License: Same as Vim " Last Change: 2021-02-13
" Last Change: 18 July 2016
if exists("b:did_indent") if exists("b:did_indent")
finish finish
@@ -87,7 +86,7 @@ if exists("*searchpairpos")
function! s:match_pairs(open, close, stopat) function! s:match_pairs(open, close, stopat)
" Stop only on vector and map [ resp. {. Ignore the ones in strings and " Stop only on vector and map [ resp. {. Ignore the ones in strings and
" comments. " comments.
if a:stopat == 0 if a:stopat == 0 && g:clojure_maxlines > 0
let stopat = max([line(".") - g:clojure_maxlines, 0]) let stopat = max([line(".") - g:clojure_maxlines, 0])
else else
let stopat = a:stopat let stopat = a:stopat
@@ -121,7 +120,7 @@ if exists("*searchpairpos")
if s:syn_id_name() !~? "string" if s:syn_id_name() !~? "string"
return -1 return -1
endif endif
if s:current_char() != '\\' if s:current_char() != '\'
return -1 return -1
endif endif
call cursor(0, col("$") - 1) call cursor(0, col("$") - 1)
@@ -170,7 +169,35 @@ if exists("*searchpairpos")
call search('\S', 'W') call search('\S', 'W')
let w = s:strip_namespace_and_macro_chars(s:current_word()) let w = s:strip_namespace_and_macro_chars(s:current_word())
if g:clojure_special_indent_words =~# '\V\<' . w . '\>' if g:clojure_special_indent_words =~# '\V\<' . w . '\>'
" `letfn` is a special-special-case.
if w ==# 'letfn'
" Earlier code left the cursor at:
" (letfn [...] ...)
" ^
" Search and get coordinates of first `[`
" (letfn [...] ...)
" ^
call search('\[', 'W')
let pos = getcurpos()
let letfn_bracket = [pos[1], pos[2]]
" Move cursor to start of the form this function was
" initially called on. Grab the coordinates of the
" closest outer `[`.
call cursor(a:position)
let outer_bracket = s:match_pairs('\[', '\]', 0)
" If the located square brackets are not the same,
" don't use special-case formatting.
if outer_bracket != letfn_bracket
return 0
endif
endif
return 1 return 1
endif endif
@@ -190,11 +217,7 @@ if exists("*searchpairpos")
" Check if form is a reader conditional, that is, it is prefixed by #? " Check if form is a reader conditional, that is, it is prefixed by #?
" or @#? " or @#?
function! s:is_reader_conditional_special_case(position) function! s:is_reader_conditional_special_case(position)
if getline(a:position[0])[a:position[1] - 3 : a:position[1] - 2] == "#?" return getline(a:position[0])[a:position[1] - 3 : a:position[1] - 2] == "#?"
return 1
endif
return 0
endfunction endfunction
" Returns 1 for opening brackets, -1 for _anything else_. " Returns 1 for opening brackets, -1 for _anything else_.
@@ -261,7 +284,7 @@ if exists("*searchpairpos")
call cursor(paren) call cursor(paren)
if s:is_method_special_case(paren) if s:is_method_special_case(paren)
return [paren[0], paren[1] + shiftwidth() - 1] return [paren[0], paren[1] + &shiftwidth - 1]
endif endif
if s:is_reader_conditional_special_case(paren) if s:is_reader_conditional_special_case(paren)
@@ -292,6 +315,19 @@ if exists("*searchpairpos")
return paren return paren
endif endif
" If the keyword begins with #, check if it is an anonymous
" function or set, in which case we indent by the shiftwidth
" (minus one if g:clojure_align_subforms = 1), or if it is
" ignored, in which case we use the ( position for indent.
if w[0] == "#"
" TODO: Handle #=() and other rare reader invocations?
if w[1] == '(' || w[1] == '{'
return [paren[0], paren[1] + (g:clojure_align_subforms ? 0 : &shiftwidth - 1)]
elseif w[1] == '_'
return paren
endif
endif
" Test words without namespace qualifiers and leading reader macro " Test words without namespace qualifiers and leading reader macro
" metacharacters. " metacharacters.
" "
@@ -299,19 +335,19 @@ if exists("*searchpairpos")
let ww = s:strip_namespace_and_macro_chars(w) let ww = s:strip_namespace_and_macro_chars(w)
if &lispwords =~# '\V\<' . ww . '\>' if &lispwords =~# '\V\<' . ww . '\>'
return [paren[0], paren[1] + shiftwidth() - 1] return [paren[0], paren[1] + &shiftwidth - 1]
endif endif
if g:clojure_fuzzy_indent if g:clojure_fuzzy_indent
\ && !s:match_one(g:clojure_fuzzy_indent_blacklist, ww) \ && !s:match_one(g:clojure_fuzzy_indent_blacklist, ww)
\ && s:match_one(g:clojure_fuzzy_indent_patterns, ww) \ && s:match_one(g:clojure_fuzzy_indent_patterns, ww)
return [paren[0], paren[1] + shiftwidth() - 1] return [paren[0], paren[1] + &shiftwidth - 1]
endif endif
call search('\v\_s', 'cW') call search('\v\_s', 'cW')
call search('\v\S', 'W') call search('\v\S', 'W')
if paren[0] < line(".") if paren[0] < line(".")
return [paren[0], paren[1] + (g:clojure_align_subforms ? 0 : shiftwidth() - 1)] return [paren[0], paren[1] + (g:clojure_align_subforms ? 0 : &shiftwidth - 1)]
endif endif
call search('\v\S', 'bW') call search('\v\S', 'bW')

View File

@@ -1,7 +1,7 @@
" Vim indent script for HTML " Vim indent script for HTML
" Maintainer: Bram Moolenaar " Maintainer: Bram Moolenaar
" Original Author: Andy Wokula <anwoku@yahoo.de> " Original Author: Andy Wokula <anwoku@yahoo.de>
" Last Change: 2020 Dec 11 " Last Change: 2021 Jan 26
" Version: 1.0 "{{{ " Version: 1.0 "{{{
" Description: HTML indent script with cached state for faster indenting on a " Description: HTML indent script with cached state for faster indenting on a
" range of lines. " range of lines.
@@ -941,11 +941,11 @@ func! s:InsideTag(foundHtmlString)
let idx = match(text, '<' . s:tagname . '\s\+\zs\w') let idx = match(text, '<' . s:tagname . '\s\+\zs\w')
endif endif
if idx == -1 if idx == -1
" after just "<tag" indent one level more " after just "<tag" indent two levels more
let idx = match(text, '<' . s:tagname . '$') let idx = match(text, '<' . s:tagname . '$')
if idx >= 0 if idx >= 0
call cursor(lnum, idx) call cursor(lnum, idx + 1)
return virtcol('.') + shiftwidth() return virtcol('.') - 1 + shiftwidth() * 2
endif endif
endif endif
if idx > 0 if idx > 0

View File

@@ -4,7 +4,6 @@
" Previous Maintainer: Nikolai Weibull <now at bitwi.se> " Previous Maintainer: Nikolai Weibull <now at bitwi.se>
" URL: https://github.com/vim-ruby/vim-ruby " URL: https://github.com/vim-ruby/vim-ruby
" Release Coordinator: Doug Kearns <dougkearns@gmail.com> " Release Coordinator: Doug Kearns <dougkearns@gmail.com>
" Last Change: 2019 Dec 08
" 0. Initialization {{{1 " 0. Initialization {{{1
" ================= " =================
@@ -27,7 +26,12 @@ endif
if !exists('g:ruby_indent_block_style') if !exists('g:ruby_indent_block_style')
" Possible values: "expression", "do" " Possible values: "expression", "do"
let g:ruby_indent_block_style = 'expression' let g:ruby_indent_block_style = 'do'
endif
if !exists('g:ruby_indent_hanging_elements')
" Non-zero means hanging indents are enabled, zero means disabled
let g:ruby_indent_hanging_elements = 1
endif endif
setlocal nosmartindent setlocal nosmartindent
@@ -322,7 +326,11 @@ function! s:ClosingBracketOnEmptyLine(cline_info) abort
if searchpair(escape(bracket_pair[0], '\['), '', bracket_pair[1], 'bW', s:skip_expr) > 0 if searchpair(escape(bracket_pair[0], '\['), '', bracket_pair[1], 'bW', s:skip_expr) > 0
if closing_bracket == ')' && col('.') != col('$') - 1 if closing_bracket == ')' && col('.') != col('$') - 1
let ind = virtcol('.') - 1 if g:ruby_indent_hanging_elements
let ind = virtcol('.') - 1
else
let ind = indent(line('.'))
end
elseif g:ruby_indent_block_style == 'do' elseif g:ruby_indent_block_style == 'do'
let ind = indent(line('.')) let ind = indent(line('.'))
else " g:ruby_indent_block_style == 'expression' else " g:ruby_indent_block_style == 'expression'
@@ -547,7 +555,9 @@ function! s:AfterUnbalancedBracket(pline_info) abort
let [opening, closing] = s:ExtraBrackets(info.plnum) let [opening, closing] = s:ExtraBrackets(info.plnum)
if opening.pos != -1 if opening.pos != -1
if opening.type == '(' && searchpair('(', '', ')', 'bW', s:skip_expr) > 0 if !g:ruby_indent_hanging_elements
return indent(info.plnum) + info.sw
elseif opening.type == '(' && searchpair('(', '', ')', 'bW', s:skip_expr) > 0
if col('.') + 1 == col('$') if col('.') + 1 == col('$')
return indent(info.plnum) + info.sw return indent(info.plnum) + info.sw
else else
@@ -632,8 +642,7 @@ function! s:PreviousNotMSL(msl_info) abort
" TODO (2016-10-07) Wrong/unused? How could it be "1"? " TODO (2016-10-07) Wrong/unused? How could it be "1"?
return indent(info.plnum) - 1 return indent(info.plnum) - 1
" If previous line is a continuation return its indent. " If previous line is a continuation return its indent.
" TODO: the || s:IsInString() thing worries me a bit. elseif s:Match(info.plnum, s:non_bracket_continuation_regex)
elseif s:Match(info.plnum, s:non_bracket_continuation_regex) || s:IsInString(info.plnum, strlen(line))
return indent(info.plnum) return indent(info.plnum)
endif endif
endif endif

View File

@@ -19,7 +19,7 @@ div#d2 { color: green; }
</div> </div>
<div <div
class="foo bar"> class="foo bar">
text text
</div> </div>

View File

@@ -15,6 +15,21 @@ let x = [
\ ] \ ]
endif endif
" TODO: add searchpair() to find matching {
"for x in [
"{
"key: 'value'
"},
"]
"eval 0
"endfor
for x in [
{key: 'value'},
]
eval 0
endfor
" END_INDENT " END_INDENT
" START_INDENT " START_INDENT

View File

@@ -15,6 +15,21 @@ if 1
\ ] \ ]
endif endif
" TODO: add searchpair() to find matching {
"for x in [
"{
"key: 'value'
"},
"]
"eval 0
"endfor
for x in [
{key: 'value'},
]
eval 0
endfor
" END_INDENT " END_INDENT
" START_INDENT " START_INDENT

View File

@@ -1,7 +1,7 @@
" Vim indent file " Vim indent file
" Language: Vim script " Language: Vim script
" Maintainer: Bram Moolenaar <Bram@vim.org> " Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2021 Jan 21 " Last Change: 2021 Feb 13
" Only load this indent file when no other was loaded. " Only load this indent file when no other was loaded.
if exists("b:did_indent") if exists("b:did_indent")
@@ -99,7 +99,9 @@ function GetVimIndentIntern()
let ind = ind + shiftwidth() let ind = ind + shiftwidth()
else else
" A line starting with :au does not increment/decrement indent. " A line starting with :au does not increment/decrement indent.
if prev_text !~ '^\s*au\%[tocmd]' " A { may start a block or a dict. Assume that when a } follows it's a
" terminated dict.
if prev_text !~ '^\s*au\%[tocmd]' && prev_text !~ '^\s*{.*}'
let i = match(prev_text, '\(^\||\)\s*\(export\s\+\)\?\({\|\(if\|wh\%[ile]\|for\|try\|cat\%[ch]\|fina\|finall\%[y]\|fu\%[nction]\|def\|el\%[seif]\)\>\)') let i = match(prev_text, '\(^\||\)\s*\(export\s\+\)\?\({\|\(if\|wh\%[ile]\|for\|try\|cat\%[ch]\|fina\|finall\%[y]\|fu\%[nction]\|def\|el\%[seif]\)\>\)')
if i >= 0 if i >= 0
let ind += shiftwidth() let ind += shiftwidth()
@@ -152,13 +154,17 @@ function GetVimIndentIntern()
endif endif
" Below a line starting with "]" we must be below the end of a list. " Below a line starting with "]" we must be below the end of a list.
if prev_text_end =~ '^\s*]' " Include a "}" and "},} in case a dictionary ends too.
if prev_text_end =~ '^\s*\(},\=\s*\)\=]'
let ind = ind - shiftwidth() let ind = ind - shiftwidth()
endif endif
let ends_in_comment = has('syntax_items')
\ && synIDattr(synID(lnum, col('$'), 1), "name") =~ '\(Comment\|String\)$'
" A line ending in "{"/"[} is most likely the start of a dict/list literal, " A line ending in "{"/"[} is most likely the start of a dict/list literal,
" indent the next line more. Not for a continuation line. " indent the next line more. Not for a continuation line or {{{.
if prev_text_end =~ '[{[]\s*$' && !found_cont if !ends_in_comment && prev_text_end =~ '\s[{[]\s*$' && !found_cont
let ind = ind + shiftwidth() let ind = ind + shiftwidth()
endif endif

View File

@@ -1,7 +1,7 @@
" Vim support file to detect file types in scripts " Vim support file to detect file types in scripts
" "
" Maintainer: Bram Moolenaar <Bram@vim.org> " Maintainer: Bram Moolenaar <Bram@vim.org>
" Last change: 2020 Aug 15 " Last change: 2021 Jan 22
" This file is called by an autocommand for every file that has just been " This file is called by an autocommand for every file that has just been
" loaded into a buffer. It checks if the type of file can be recognized by " loaded into a buffer. It checks if the type of file can be recognized by

File diff suppressed because one or more lines are too long

View File

@@ -2,9 +2,9 @@
" Language: Groovy " Language: Groovy
" Original Author: Alessio Pace <billy.corgan AT tiscali.it> " Original Author: Alessio Pace <billy.corgan AT tiscali.it>
" Maintainer: Tobias Rapp <yahuxo+vim AT mailbox.org> " Maintainer: Tobias Rapp <yahuxo+vim AT mailbox.org>
" Version: 0.1.17 " Version: 0.1.18
" URL: http://www.vim.org/scripts/script.php?script_id=945 " URL: http://www.vim.org/scripts/script.php?script_id=945
" Last Change: 2020 May 26 " Last Change: 2021 Feb 03
" THE ORIGINAL AUTHOR'S NOTES: " THE ORIGINAL AUTHOR'S NOTES:
" "
@@ -253,7 +253,8 @@ if exists("groovy_regex_strings")
endif endif
" syn region groovyELExpr start=+${+ end=+}+ keepend contained " syn region groovyELExpr start=+${+ end=+}+ keepend contained
syn match groovyELExpr /\${.\{-}}/ contained syn match groovyELExpr /\${.\{-}}/ contained
syn match groovyELExpr /\$[a-zA-Z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\uFFFE_][a-zA-Z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\uFFFE0-9_.]*/ contained " Fix: force use of the NFA regexp engine (2), see GitHub issue #7280
syn match groovyELExpr /\%#=2\$[a-zA-Z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\uFFFE_][a-zA-Z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\uFFFE0-9_.]*/ contained
hi def link groovyELExpr Identifier hi def link groovyELExpr Identifier
" TODO: better matching. I am waiting to understand how it really works in groovy " TODO: better matching. I am waiting to understand how it really works in groovy

View File

@@ -4,6 +4,7 @@
" Latest Revision: 2008-06-29 " Latest Revision: 2008-06-29
" Changes: 2008-06-29 support for RFC3339 tuimestamps James Vega " Changes: 2008-06-29 support for RFC3339 tuimestamps James Vega
" 2016 Jan 19: messagesDate changed by Bram " 2016 Jan 19: messagesDate changed by Bram
" 2021 Jan 27: messagesHourRFC3339 changed from #946
if exists("b:current_syntax") if exists("b:current_syntax")
finish finish
@@ -26,7 +27,7 @@ syn match messagesDateRFC3339 contained display '\d\{4}-\d\d-\d\d'
syn match messagesRFC3339T contained display '\cT' syn match messagesRFC3339T contained display '\cT'
\ nextgroup=messagesHourRFC3339 \ nextgroup=messagesHourRFC3339
syn match messagesHourRFC3339 contained display '\c\d\d:\d\d:\d\d\(\.\d\+\)\=\([+-]\d\d:\d\d\|Z\)' syn match messagesHourRFC3339 contained display '\c\d\d:\d\d:\d\d\(\.\d\+\)\=\([+-]\d\d:\d\d\|Z\)\s*'
\ nextgroup=messagesHost \ nextgroup=messagesHost
syn match messagesHost contained display '\S*\s*' syn match messagesHost contained display '\S*\s*'