mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
Merge #7499 'vim-patch: runtime'
This commit is contained in:
commit
ad527392ab
@ -174,7 +174,7 @@ function! s:check_terminal() abort
|
|||||||
\ .(empty(kbs_entry) ? '? (not found)' : kdch1_entry))
|
\ .(empty(kbs_entry) ? '? (not found)' : kdch1_entry))
|
||||||
endif
|
endif
|
||||||
for env_var in ['XTERM_VERSION', 'VTE_VERSION', 'TERM_PROGRAM', 'COLORTERM', 'SSH_TTY']
|
for env_var in ['XTERM_VERSION', 'VTE_VERSION', 'TERM_PROGRAM', 'COLORTERM', 'SSH_TTY']
|
||||||
if !empty(eval('$'.env_var))
|
if !exists('$'.env_var)
|
||||||
call health#report_info(printf("$%s='%s'", env_var, eval('$'.env_var)))
|
call health#report_info(printf("$%s='%s'", env_var, eval('$'.env_var)))
|
||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
|
415
runtime/autoload/rust.vim
Normal file
415
runtime/autoload/rust.vim
Normal file
@ -0,0 +1,415 @@
|
|||||||
|
" Author: Kevin Ballard
|
||||||
|
" Description: Helper functions for Rust commands/mappings
|
||||||
|
" Last Modified: May 27, 2014
|
||||||
|
" For bugs, patches and license go to https://github.com/rust-lang/rust.vim
|
||||||
|
|
||||||
|
" Jump {{{1
|
||||||
|
|
||||||
|
function! rust#Jump(mode, function) range
|
||||||
|
let cnt = v:count1
|
||||||
|
normal! m'
|
||||||
|
if a:mode ==# 'v'
|
||||||
|
norm! gv
|
||||||
|
endif
|
||||||
|
let foldenable = &foldenable
|
||||||
|
set nofoldenable
|
||||||
|
while cnt > 0
|
||||||
|
execute "call <SID>Jump_" . a:function . "()"
|
||||||
|
let cnt = cnt - 1
|
||||||
|
endwhile
|
||||||
|
let &foldenable = foldenable
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:Jump_Back()
|
||||||
|
call search('{', 'b')
|
||||||
|
keepjumps normal! w99[{
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:Jump_Forward()
|
||||||
|
normal! j0
|
||||||
|
call search('{', 'b')
|
||||||
|
keepjumps normal! w99[{%
|
||||||
|
call search('{')
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Run {{{1
|
||||||
|
|
||||||
|
function! rust#Run(bang, args)
|
||||||
|
let args = s:ShellTokenize(a:args)
|
||||||
|
if a:bang
|
||||||
|
let idx = index(l:args, '--')
|
||||||
|
if idx != -1
|
||||||
|
let rustc_args = idx == 0 ? [] : l:args[:idx-1]
|
||||||
|
let args = l:args[idx+1:]
|
||||||
|
else
|
||||||
|
let rustc_args = l:args
|
||||||
|
let args = []
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
let rustc_args = []
|
||||||
|
endif
|
||||||
|
|
||||||
|
let b:rust_last_rustc_args = l:rustc_args
|
||||||
|
let b:rust_last_args = l:args
|
||||||
|
|
||||||
|
call s:WithPath(function("s:Run"), rustc_args, args)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:Run(dict, rustc_args, args)
|
||||||
|
let exepath = a:dict.tmpdir.'/'.fnamemodify(a:dict.path, ':t:r')
|
||||||
|
if has('win32')
|
||||||
|
let exepath .= '.exe'
|
||||||
|
endif
|
||||||
|
|
||||||
|
let relpath = get(a:dict, 'tmpdir_relpath', a:dict.path)
|
||||||
|
let rustc_args = [relpath, '-o', exepath] + a:rustc_args
|
||||||
|
|
||||||
|
let rustc = exists("g:rustc_path") ? g:rustc_path : "rustc"
|
||||||
|
|
||||||
|
let pwd = a:dict.istemp ? a:dict.tmpdir : ''
|
||||||
|
let output = s:system(pwd, shellescape(rustc) . " " . join(map(rustc_args, 'shellescape(v:val)')))
|
||||||
|
if output != ''
|
||||||
|
echohl WarningMsg
|
||||||
|
echo output
|
||||||
|
echohl None
|
||||||
|
endif
|
||||||
|
if !v:shell_error
|
||||||
|
exe '!' . shellescape(exepath) . " " . join(map(a:args, 'shellescape(v:val)'))
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Expand {{{1
|
||||||
|
|
||||||
|
function! rust#Expand(bang, args)
|
||||||
|
let args = s:ShellTokenize(a:args)
|
||||||
|
if a:bang && !empty(l:args)
|
||||||
|
let pretty = remove(l:args, 0)
|
||||||
|
else
|
||||||
|
let pretty = "expanded"
|
||||||
|
endif
|
||||||
|
call s:WithPath(function("s:Expand"), pretty, args)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:Expand(dict, pretty, args)
|
||||||
|
try
|
||||||
|
let rustc = exists("g:rustc_path") ? g:rustc_path : "rustc"
|
||||||
|
|
||||||
|
if a:pretty =~? '^\%(everybody_loops$\|flowgraph=\)'
|
||||||
|
let flag = '--xpretty'
|
||||||
|
else
|
||||||
|
let flag = '--pretty'
|
||||||
|
endif
|
||||||
|
let relpath = get(a:dict, 'tmpdir_relpath', a:dict.path)
|
||||||
|
let args = [relpath, '-Z', 'unstable-options', l:flag, a:pretty] + a:args
|
||||||
|
let pwd = a:dict.istemp ? a:dict.tmpdir : ''
|
||||||
|
let output = s:system(pwd, shellescape(rustc) . " " . join(map(args, 'shellescape(v:val)')))
|
||||||
|
if v:shell_error
|
||||||
|
echohl WarningMsg
|
||||||
|
echo output
|
||||||
|
echohl None
|
||||||
|
else
|
||||||
|
new
|
||||||
|
silent put =output
|
||||||
|
1
|
||||||
|
d
|
||||||
|
setl filetype=rust
|
||||||
|
setl buftype=nofile
|
||||||
|
setl bufhidden=hide
|
||||||
|
setl noswapfile
|
||||||
|
" give the buffer a nice name
|
||||||
|
let suffix = 1
|
||||||
|
let basename = fnamemodify(a:dict.path, ':t:r')
|
||||||
|
while 1
|
||||||
|
let bufname = basename
|
||||||
|
if suffix > 1 | let bufname .= ' ('.suffix.')' | endif
|
||||||
|
let bufname .= '.pretty.rs'
|
||||||
|
if bufexists(bufname)
|
||||||
|
let suffix += 1
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
exe 'silent noautocmd keepalt file' fnameescape(bufname)
|
||||||
|
break
|
||||||
|
endwhile
|
||||||
|
endif
|
||||||
|
endtry
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! rust#CompleteExpand(lead, line, pos)
|
||||||
|
if a:line[: a:pos-1] =~ '^RustExpand!\s*\S*$'
|
||||||
|
" first argument and it has a !
|
||||||
|
let list = ["normal", "expanded", "typed", "expanded,identified", "flowgraph=", "everybody_loops"]
|
||||||
|
if !empty(a:lead)
|
||||||
|
call filter(list, "v:val[:len(a:lead)-1] == a:lead")
|
||||||
|
endif
|
||||||
|
return list
|
||||||
|
endif
|
||||||
|
|
||||||
|
return glob(escape(a:lead, "*?[") . '*', 0, 1)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Emit {{{1
|
||||||
|
|
||||||
|
function! rust#Emit(type, args)
|
||||||
|
let args = s:ShellTokenize(a:args)
|
||||||
|
call s:WithPath(function("s:Emit"), a:type, args)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:Emit(dict, type, args)
|
||||||
|
try
|
||||||
|
let output_path = a:dict.tmpdir.'/output'
|
||||||
|
|
||||||
|
let rustc = exists("g:rustc_path") ? g:rustc_path : "rustc"
|
||||||
|
|
||||||
|
let relpath = get(a:dict, 'tmpdir_relpath', a:dict.path)
|
||||||
|
let args = [relpath, '--emit', a:type, '-o', output_path] + a:args
|
||||||
|
let pwd = a:dict.istemp ? a:dict.tmpdir : ''
|
||||||
|
let output = s:system(pwd, shellescape(rustc) . " " . join(map(args, 'shellescape(v:val)')))
|
||||||
|
if output != ''
|
||||||
|
echohl WarningMsg
|
||||||
|
echo output
|
||||||
|
echohl None
|
||||||
|
endif
|
||||||
|
if !v:shell_error
|
||||||
|
new
|
||||||
|
exe 'silent keepalt read' fnameescape(output_path)
|
||||||
|
1
|
||||||
|
d
|
||||||
|
if a:type == "llvm-ir"
|
||||||
|
setl filetype=llvm
|
||||||
|
let extension = 'll'
|
||||||
|
elseif a:type == "asm"
|
||||||
|
setl filetype=asm
|
||||||
|
let extension = 's'
|
||||||
|
endif
|
||||||
|
setl buftype=nofile
|
||||||
|
setl bufhidden=hide
|
||||||
|
setl noswapfile
|
||||||
|
if exists('l:extension')
|
||||||
|
" give the buffer a nice name
|
||||||
|
let suffix = 1
|
||||||
|
let basename = fnamemodify(a:dict.path, ':t:r')
|
||||||
|
while 1
|
||||||
|
let bufname = basename
|
||||||
|
if suffix > 1 | let bufname .= ' ('.suffix.')' | endif
|
||||||
|
let bufname .= '.'.extension
|
||||||
|
if bufexists(bufname)
|
||||||
|
let suffix += 1
|
||||||
|
continue
|
||||||
|
endif
|
||||||
|
exe 'silent noautocmd keepalt file' fnameescape(bufname)
|
||||||
|
break
|
||||||
|
endwhile
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endtry
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Utility functions {{{1
|
||||||
|
|
||||||
|
" Invokes func(dict, ...)
|
||||||
|
" Where {dict} is a dictionary with the following keys:
|
||||||
|
" 'path' - The path to the file
|
||||||
|
" 'tmpdir' - The path to a temporary directory that will be deleted when the
|
||||||
|
" function returns.
|
||||||
|
" 'istemp' - 1 if the path is a file inside of {dict.tmpdir} or 0 otherwise.
|
||||||
|
" If {istemp} is 1 then an additional key is provided:
|
||||||
|
" 'tmpdir_relpath' - The {path} relative to the {tmpdir}.
|
||||||
|
"
|
||||||
|
" {dict.path} may be a path to a file inside of {dict.tmpdir} or it may be the
|
||||||
|
" existing path of the current buffer. If the path is inside of {dict.tmpdir}
|
||||||
|
" then it is guaranteed to have a '.rs' extension.
|
||||||
|
function! s:WithPath(func, ...)
|
||||||
|
let buf = bufnr('')
|
||||||
|
let saved = {}
|
||||||
|
let dict = {}
|
||||||
|
try
|
||||||
|
let saved.write = &write
|
||||||
|
set write
|
||||||
|
let dict.path = expand('%')
|
||||||
|
let pathisempty = empty(dict.path)
|
||||||
|
|
||||||
|
" Always create a tmpdir in case the wrapped command wants it
|
||||||
|
let dict.tmpdir = tempname()
|
||||||
|
call mkdir(dict.tmpdir)
|
||||||
|
|
||||||
|
if pathisempty || !saved.write
|
||||||
|
let dict.istemp = 1
|
||||||
|
" if we're doing this because of nowrite, preserve the filename
|
||||||
|
if !pathisempty
|
||||||
|
let filename = expand('%:t:r').".rs"
|
||||||
|
else
|
||||||
|
let filename = 'unnamed.rs'
|
||||||
|
endif
|
||||||
|
let dict.tmpdir_relpath = filename
|
||||||
|
let dict.path = dict.tmpdir.'/'.filename
|
||||||
|
|
||||||
|
let saved.mod = &mod
|
||||||
|
set nomod
|
||||||
|
|
||||||
|
silent exe 'keepalt write! ' . fnameescape(dict.path)
|
||||||
|
if pathisempty
|
||||||
|
silent keepalt 0file
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
let dict.istemp = 0
|
||||||
|
update
|
||||||
|
endif
|
||||||
|
|
||||||
|
call call(a:func, [dict] + a:000)
|
||||||
|
finally
|
||||||
|
if bufexists(buf)
|
||||||
|
for [opt, value] in items(saved)
|
||||||
|
silent call setbufvar(buf, '&'.opt, value)
|
||||||
|
unlet value " avoid variable type mismatches
|
||||||
|
endfor
|
||||||
|
endif
|
||||||
|
if has_key(dict, 'tmpdir') | silent call s:RmDir(dict.tmpdir) | endif
|
||||||
|
endtry
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! rust#AppendCmdLine(text)
|
||||||
|
call setcmdpos(getcmdpos())
|
||||||
|
let cmd = getcmdline() . a:text
|
||||||
|
return cmd
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Tokenize the string according to sh parsing rules
|
||||||
|
function! s:ShellTokenize(text)
|
||||||
|
" states:
|
||||||
|
" 0: start of word
|
||||||
|
" 1: unquoted
|
||||||
|
" 2: unquoted backslash
|
||||||
|
" 3: double-quote
|
||||||
|
" 4: double-quoted backslash
|
||||||
|
" 5: single-quote
|
||||||
|
let l:state = 0
|
||||||
|
let l:current = ''
|
||||||
|
let l:args = []
|
||||||
|
for c in split(a:text, '\zs')
|
||||||
|
if l:state == 0 || l:state == 1 " unquoted
|
||||||
|
if l:c ==# ' '
|
||||||
|
if l:state == 0 | continue | endif
|
||||||
|
call add(l:args, l:current)
|
||||||
|
let l:current = ''
|
||||||
|
let l:state = 0
|
||||||
|
elseif l:c ==# '\'
|
||||||
|
let l:state = 2
|
||||||
|
elseif l:c ==# '"'
|
||||||
|
let l:state = 3
|
||||||
|
elseif l:c ==# "'"
|
||||||
|
let l:state = 5
|
||||||
|
else
|
||||||
|
let l:current .= l:c
|
||||||
|
let l:state = 1
|
||||||
|
endif
|
||||||
|
elseif l:state == 2 " unquoted backslash
|
||||||
|
if l:c !=# "\n" " can it even be \n?
|
||||||
|
let l:current .= l:c
|
||||||
|
endif
|
||||||
|
let l:state = 1
|
||||||
|
elseif l:state == 3 " double-quote
|
||||||
|
if l:c ==# '\'
|
||||||
|
let l:state = 4
|
||||||
|
elseif l:c ==# '"'
|
||||||
|
let l:state = 1
|
||||||
|
else
|
||||||
|
let l:current .= l:c
|
||||||
|
endif
|
||||||
|
elseif l:state == 4 " double-quoted backslash
|
||||||
|
if stridx('$`"\', l:c) >= 0
|
||||||
|
let l:current .= l:c
|
||||||
|
elseif l:c ==# "\n" " is this even possible?
|
||||||
|
" skip it
|
||||||
|
else
|
||||||
|
let l:current .= '\'.l:c
|
||||||
|
endif
|
||||||
|
let l:state = 3
|
||||||
|
elseif l:state == 5 " single-quoted
|
||||||
|
if l:c == "'"
|
||||||
|
let l:state = 1
|
||||||
|
else
|
||||||
|
let l:current .= l:c
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
if l:state != 0
|
||||||
|
call add(l:args, l:current)
|
||||||
|
endif
|
||||||
|
return l:args
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:RmDir(path)
|
||||||
|
" sanity check; make sure it's not empty, /, or $HOME
|
||||||
|
if empty(a:path)
|
||||||
|
echoerr 'Attempted to delete empty path'
|
||||||
|
return 0
|
||||||
|
elseif a:path == '/' || a:path == $HOME
|
||||||
|
echoerr 'Attempted to delete protected path: ' . a:path
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
return system("rm -rf " . shellescape(a:path))
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Executes {cmd} with the cwd set to {pwd}, without changing Vim's cwd.
|
||||||
|
" If {pwd} is the empty string then it doesn't change the cwd.
|
||||||
|
function! s:system(pwd, cmd)
|
||||||
|
let cmd = a:cmd
|
||||||
|
if !empty(a:pwd)
|
||||||
|
let cmd = 'cd ' . shellescape(a:pwd) . ' && ' . cmd
|
||||||
|
endif
|
||||||
|
return system(cmd)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Playpen Support {{{1
|
||||||
|
" Parts of gist.vim by Yasuhiro Matsumoto <mattn.jp@gmail.com> reused
|
||||||
|
" gist.vim available under the BSD license, available at
|
||||||
|
" http://github.com/mattn/gist-vim
|
||||||
|
function! s:has_webapi()
|
||||||
|
if !exists("*webapi#http#post")
|
||||||
|
try
|
||||||
|
call webapi#http#post()
|
||||||
|
catch
|
||||||
|
endtry
|
||||||
|
endif
|
||||||
|
return exists("*webapi#http#post")
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! rust#Play(count, line1, line2, ...) abort
|
||||||
|
redraw
|
||||||
|
|
||||||
|
let l:rust_playpen_url = get(g:, 'rust_playpen_url', 'https://play.rust-lang.org/')
|
||||||
|
let l:rust_shortener_url = get(g:, 'rust_shortener_url', 'https://is.gd/')
|
||||||
|
|
||||||
|
if !s:has_webapi()
|
||||||
|
echohl ErrorMsg | echomsg ':RustPlay depends on webapi.vim (https://github.com/mattn/webapi-vim)' | echohl None
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
let bufname = bufname('%')
|
||||||
|
if a:count < 1
|
||||||
|
let content = join(getline(a:line1, a:line2), "\n")
|
||||||
|
else
|
||||||
|
let save_regcont = @"
|
||||||
|
let save_regtype = getregtype('"')
|
||||||
|
silent! normal! gvy
|
||||||
|
let content = @"
|
||||||
|
call setreg('"', save_regcont, save_regtype)
|
||||||
|
endif
|
||||||
|
|
||||||
|
let body = l:rust_playpen_url."?code=".webapi#http#encodeURI(content)
|
||||||
|
|
||||||
|
if strlen(body) > 5000
|
||||||
|
echohl ErrorMsg | echomsg 'Buffer too large, max 5000 encoded characters ('.strlen(body).')' | echohl None
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
let payload = "format=simple&url=".webapi#http#encodeURI(body)
|
||||||
|
let res = webapi#http#post(l:rust_shortener_url.'create.php', payload, {})
|
||||||
|
let url = res.content
|
||||||
|
|
||||||
|
redraw | echomsg 'Done: '.url
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" }}}1
|
||||||
|
|
||||||
|
" vim: set noet sw=8 ts=8:
|
107
runtime/autoload/rustfmt.vim
Normal file
107
runtime/autoload/rustfmt.vim
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
" Author: Stephen Sugden <stephen@stephensugden.com>
|
||||||
|
"
|
||||||
|
" Adapted from https://github.com/fatih/vim-go
|
||||||
|
" For bugs, patches and license go to https://github.com/rust-lang/rust.vim
|
||||||
|
|
||||||
|
if !exists("g:rustfmt_autosave")
|
||||||
|
let g:rustfmt_autosave = 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists("g:rustfmt_command")
|
||||||
|
let g:rustfmt_command = "rustfmt"
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists("g:rustfmt_options")
|
||||||
|
let g:rustfmt_options = ""
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists("g:rustfmt_fail_silently")
|
||||||
|
let g:rustfmt_fail_silently = 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:got_fmt_error = 0
|
||||||
|
|
||||||
|
function! s:RustfmtCommandRange(filename, line1, line2)
|
||||||
|
let l:arg = {"file": shellescape(a:filename), "range": [a:line1, a:line2]}
|
||||||
|
return printf("%s %s --write-mode=overwrite --file-lines '[%s]'", g:rustfmt_command, g:rustfmt_options, json_encode(l:arg))
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:RustfmtCommand(filename)
|
||||||
|
return g:rustfmt_command . " --write-mode=overwrite " . g:rustfmt_options . " " . shellescape(a:filename)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:RunRustfmt(command, curw, tmpname)
|
||||||
|
if exists("*systemlist")
|
||||||
|
let out = systemlist(a:command)
|
||||||
|
else
|
||||||
|
let out = split(system(a:command), '\r\?\n')
|
||||||
|
endif
|
||||||
|
|
||||||
|
if v:shell_error == 0 || v:shell_error == 3
|
||||||
|
" remove undo point caused via BufWritePre
|
||||||
|
try | silent undojoin | catch | endtry
|
||||||
|
|
||||||
|
" Replace current file with temp file, then reload buffer
|
||||||
|
call rename(a:tmpname, expand('%'))
|
||||||
|
silent edit!
|
||||||
|
let &syntax = &syntax
|
||||||
|
|
||||||
|
" only clear location list if it was previously filled to prevent
|
||||||
|
" clobbering other additions
|
||||||
|
if s:got_fmt_error
|
||||||
|
let s:got_fmt_error = 0
|
||||||
|
call setloclist(0, [])
|
||||||
|
lwindow
|
||||||
|
endif
|
||||||
|
elseif g:rustfmt_fail_silently == 0
|
||||||
|
" otherwise get the errors and put them in the location list
|
||||||
|
let errors = []
|
||||||
|
|
||||||
|
for line in out
|
||||||
|
" src/lib.rs:13:5: 13:10 error: expected `,`, or `}`, found `value`
|
||||||
|
let tokens = matchlist(line, '^\(.\{-}\):\(\d\+\):\(\d\+\):\s*\(\d\+:\d\+\s*\)\?\s*error: \(.*\)')
|
||||||
|
if !empty(tokens)
|
||||||
|
call add(errors, {"filename": @%,
|
||||||
|
\"lnum": tokens[2],
|
||||||
|
\"col": tokens[3],
|
||||||
|
\"text": tokens[5]})
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
|
||||||
|
if empty(errors)
|
||||||
|
% | " Couldn't detect rustfmt error format, output errors
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !empty(errors)
|
||||||
|
call setloclist(0, errors, 'r')
|
||||||
|
echohl Error | echomsg "rustfmt returned error" | echohl None
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:got_fmt_error = 1
|
||||||
|
lwindow
|
||||||
|
" We didn't use the temp file, so clean up
|
||||||
|
call delete(a:tmpname)
|
||||||
|
endif
|
||||||
|
|
||||||
|
call winrestview(a:curw)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! rustfmt#FormatRange(line1, line2)
|
||||||
|
let l:curw = winsaveview()
|
||||||
|
let l:tmpname = expand("%:p:h") . "/." . expand("%:p:t") . ".rustfmt"
|
||||||
|
call writefile(getline(1, '$'), l:tmpname)
|
||||||
|
|
||||||
|
let command = s:RustfmtCommandRange(l:tmpname, a:line1, a:line2)
|
||||||
|
|
||||||
|
call s:RunRustfmt(command, l:curw, l:tmpname)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! rustfmt#Format()
|
||||||
|
let l:curw = winsaveview()
|
||||||
|
let l:tmpname = expand("%:p:h") . "/." . expand("%:p:t") . ".rustfmt"
|
||||||
|
call writefile(getline(1, '$'), l:tmpname)
|
||||||
|
|
||||||
|
let command = s:RustfmtCommand(l:tmpname)
|
||||||
|
|
||||||
|
call s:RunRustfmt(command, l:curw, l:tmpname)
|
||||||
|
endfunction
|
35
runtime/compiler/cargo.vim
Normal file
35
runtime/compiler/cargo.vim
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
" Vim compiler file
|
||||||
|
" Compiler: Cargo Compiler
|
||||||
|
" Maintainer: Damien Radtke <damienradtke@gmail.com>
|
||||||
|
" Latest Revision: 2014 Sep 24
|
||||||
|
" For bugs, patches and license go to https://github.com/rust-lang/rust.vim
|
||||||
|
|
||||||
|
if exists('current_compiler')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
runtime compiler/rustc.vim
|
||||||
|
let current_compiler = "cargo"
|
||||||
|
|
||||||
|
let s:save_cpo = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
if exists(':CompilerSet') != 2
|
||||||
|
command -nargs=* CompilerSet setlocal <args>
|
||||||
|
endif
|
||||||
|
|
||||||
|
if exists('g:cargo_makeprg_params')
|
||||||
|
execute 'CompilerSet makeprg=cargo\ '.escape(g:cargo_makeprg_params, ' \|"').'\ $*'
|
||||||
|
else
|
||||||
|
CompilerSet makeprg=cargo\ $*
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Ignore general cargo progress messages
|
||||||
|
CompilerSet errorformat+=
|
||||||
|
\%-G%\\s%#Downloading%.%#,
|
||||||
|
\%-G%\\s%#Compiling%.%#,
|
||||||
|
\%-G%\\s%#Finished%.%#,
|
||||||
|
\%-G%\\s%#error:\ Could\ not\ compile\ %.%#,
|
||||||
|
\%-G%\\s%#To\ learn\ more\\,%.%#
|
||||||
|
|
||||||
|
let &cpo = s:save_cpo
|
||||||
|
unlet s:save_cpo
|
@ -1,7 +1,8 @@
|
|||||||
" Vim compiler file
|
" Vim compiler file
|
||||||
" Compiler: reStructuredText Documentation Format
|
" Compiler: sphinx >= 1.0.8, http://www.sphinx-doc.org
|
||||||
|
" Description: reStructuredText Documentation Format
|
||||||
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
|
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
|
||||||
" Latest Revision: 2006-04-19
|
" Latest Revision: 2017-03-31
|
||||||
|
|
||||||
if exists("current_compiler")
|
if exists("current_compiler")
|
||||||
finish
|
finish
|
||||||
@ -11,12 +12,18 @@ let current_compiler = "rst"
|
|||||||
let s:cpo_save = &cpo
|
let s:cpo_save = &cpo
|
||||||
set cpo&vim
|
set cpo&vim
|
||||||
|
|
||||||
setlocal errorformat=
|
if exists(":CompilerSet") != 2
|
||||||
\%f:%l:\ (%tEBUG/0)\ %m,
|
command -nargs=* CompilerSet setlocal <args>
|
||||||
\%f:%l:\ (%tNFO/1)\ %m,
|
endif
|
||||||
\%f:%l:\ (%tARNING/2)\ %m,
|
|
||||||
\%f:%l:\ (%tRROR/3)\ %m,
|
CompilerSet errorformat=
|
||||||
\%f:%l:\ (%tEVERE/3)\ %m,
|
\%f\\:%l:\ %tEBUG:\ %m,
|
||||||
|
\%f\\:%l:\ %tNFO:\ %m,
|
||||||
|
\%f\\:%l:\ %tARNING:\ %m,
|
||||||
|
\%f\\:%l:\ %tRROR:\ %m,
|
||||||
|
\%f\\:%l:\ %tEVERE:\ %m,
|
||||||
|
\%f\\:%s:\ %tARNING:\ %m,
|
||||||
|
\%f\\:%s:\ %tRROR:\ %m,
|
||||||
\%D%*\\a[%*\\d]:\ Entering\ directory\ `%f',
|
\%D%*\\a[%*\\d]:\ Entering\ directory\ `%f',
|
||||||
\%X%*\\a[%*\\d]:\ Leaving\ directory\ `%f',
|
\%X%*\\a[%*\\d]:\ Leaving\ directory\ `%f',
|
||||||
\%DMaking\ %*\\a\ in\ %f
|
\%DMaking\ %*\\a\ in\ %f
|
||||||
|
46
runtime/compiler/rustc.vim
Normal file
46
runtime/compiler/rustc.vim
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
" Vim compiler file
|
||||||
|
" Compiler: Rust Compiler
|
||||||
|
" Maintainer: Chris Morgan <me@chrismorgan.info>
|
||||||
|
" Latest Revision: 2013 Jul 12
|
||||||
|
" For bugs, patches and license go to https://github.com/rust-lang/rust.vim
|
||||||
|
|
||||||
|
if exists("current_compiler")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let current_compiler = "rustc"
|
||||||
|
|
||||||
|
let s:cpo_save = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
if exists(":CompilerSet") != 2
|
||||||
|
command -nargs=* CompilerSet setlocal <args>
|
||||||
|
endif
|
||||||
|
|
||||||
|
if exists("g:rustc_makeprg_no_percent") && g:rustc_makeprg_no_percent != 0
|
||||||
|
CompilerSet makeprg=rustc
|
||||||
|
else
|
||||||
|
CompilerSet makeprg=rustc\ \%
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Old errorformat (before nightly 2016/08/10)
|
||||||
|
CompilerSet errorformat=
|
||||||
|
\%f:%l:%c:\ %t%*[^:]:\ %m,
|
||||||
|
\%f:%l:%c:\ %*\\d:%*\\d\ %t%*[^:]:\ %m,
|
||||||
|
\%-G%f:%l\ %s,
|
||||||
|
\%-G%*[\ ]^,
|
||||||
|
\%-G%*[\ ]^%*[~],
|
||||||
|
\%-G%*[\ ]...
|
||||||
|
|
||||||
|
" New errorformat (after nightly 2016/08/10)
|
||||||
|
CompilerSet errorformat+=
|
||||||
|
\%-G,
|
||||||
|
\%-Gerror:\ aborting\ %.%#,
|
||||||
|
\%-Gerror:\ Could\ not\ compile\ %.%#,
|
||||||
|
\%Eerror:\ %m,
|
||||||
|
\%Eerror[E%n]:\ %m,
|
||||||
|
\%Wwarning:\ %m,
|
||||||
|
\%Inote:\ %m,
|
||||||
|
\%C\ %#-->\ %f:%l:%c
|
||||||
|
|
||||||
|
let &cpo = s:cpo_save
|
||||||
|
unlet s:cpo_save
|
@ -36,7 +36,7 @@ the user interface remains the standard Vi interface.
|
|||||||
|
|
||||||
Highlights
|
Highlights
|
||||||
----------
|
----------
|
||||||
o Editing left-to-right files as in the original VIM hasn't changed.
|
o Editing left-to-right files as in the original Vim hasn't changed.
|
||||||
|
|
||||||
o Viewing and editing files in right-to-left windows. File
|
o Viewing and editing files in right-to-left windows. File
|
||||||
orientation is per window, so it is possible to view the same
|
orientation is per window, so it is possible to view the same
|
||||||
@ -46,7 +46,7 @@ o No special terminal with right-to-left capabilities is required.
|
|||||||
The right-to-left changes are completely hardware independent.
|
The right-to-left changes are completely hardware independent.
|
||||||
Only Arabic fonts are necessary.
|
Only Arabic fonts are necessary.
|
||||||
|
|
||||||
o Compatible with the original VIM. Almost all features work in
|
o Compatible with the original Vim. Almost all features work in
|
||||||
right-to-left mode (there are liable to be bugs).
|
right-to-left mode (there are liable to be bugs).
|
||||||
|
|
||||||
o Changing keyboard mapping and reverse insert modes using a single
|
o Changing keyboard mapping and reverse insert modes using a single
|
||||||
@ -60,14 +60,14 @@ o While in Arabic mode, numbers are entered from left to right. Upon
|
|||||||
|
|
||||||
o Arabic keymapping on the command line in reverse insert mode.
|
o Arabic keymapping on the command line in reverse insert mode.
|
||||||
|
|
||||||
o Proper Bidirectional functionality is possible given VIM is
|
o Proper Bidirectional functionality is possible given Vim is
|
||||||
started within a Bidi capable terminal emulator.
|
started within a Bidi capable terminal emulator.
|
||||||
|
|
||||||
|
|
||||||
Arabic Fonts *arabicfonts*
|
Arabic Fonts *arabicfonts*
|
||||||
------------
|
------------
|
||||||
|
|
||||||
VIM requires monospaced fonts of which there are many out there.
|
Vim requires monospaced fonts of which there are many out there.
|
||||||
Arabic requires ISO-8859-6 as well as Presentation Form-B fonts
|
Arabic requires ISO-8859-6 as well as Presentation Form-B fonts
|
||||||
(without Form-B, Arabic will _NOT_ be usable). It is highly
|
(without Form-B, Arabic will _NOT_ be usable). It is highly
|
||||||
recommended that users search for so-called 'ISO-10646-1' fonts.
|
recommended that users search for so-called 'ISO-10646-1' fonts.
|
||||||
@ -90,13 +90,13 @@ o Installation of fonts for X Window systems (Unix/Linux)
|
|||||||
|
|
||||||
Usage
|
Usage
|
||||||
-----
|
-----
|
||||||
Prior to the actual usage of Arabic within VIM, a number of settings
|
Prior to the actual usage of Arabic within Vim, a number of settings
|
||||||
need to be accounted for and invoked.
|
need to be accounted for and invoked.
|
||||||
|
|
||||||
o Setting the Arabic fonts
|
o Setting the Arabic fonts
|
||||||
|
|
||||||
+ For VIM GUI set the 'guifont' to your_ARABIC_FONT. This is done
|
+ For Vim GUI set the 'guifont' to your_ARABIC_FONT. This is done
|
||||||
by entering the following command in the VIM window.
|
by entering the following command in the Vim window.
|
||||||
>
|
>
|
||||||
:set guifont=your_ARABIC_FONT
|
:set guifont=your_ARABIC_FONT
|
||||||
<
|
<
|
||||||
@ -109,7 +109,7 @@ o Setting the Arabic fonts
|
|||||||
you can include ':set guifont=your_ARABIC_FONT' to your vimrc
|
you can include ':set guifont=your_ARABIC_FONT' to your vimrc
|
||||||
file.
|
file.
|
||||||
|
|
||||||
+ Under the X Window environment, you can also start VIM with
|
+ Under the X Window environment, you can also start Vim with
|
||||||
'-fn your_ARABIC_FONT' option.
|
'-fn your_ARABIC_FONT' option.
|
||||||
|
|
||||||
o Setting the appropriate character Encoding
|
o Setting the appropriate character Encoding
|
||||||
@ -131,11 +131,11 @@ o Setting the appropriate character Encoding
|
|||||||
o Enable Arabic settings [short-cut]
|
o Enable Arabic settings [short-cut]
|
||||||
|
|
||||||
In order to simplify and streamline things, you can either invoke
|
In order to simplify and streamline things, you can either invoke
|
||||||
VIM with the command-line option,
|
Vim with the command-line option,
|
||||||
|
|
||||||
% vim -A my_utf8_arabic_file ...
|
% vim -A my_utf8_arabic_file ...
|
||||||
|
|
||||||
or enable 'arabic' via the following command within VIM
|
or enable 'arabic' via the following command within Vim
|
||||||
>
|
>
|
||||||
:set arabic
|
:set arabic
|
||||||
<
|
<
|
||||||
@ -196,7 +196,7 @@ o Enable Arabic settings [short-cut]
|
|||||||
|
|
||||||
+ Arabic deletion of a combined pair character
|
+ Arabic deletion of a combined pair character
|
||||||
|
|
||||||
By default VIM has the 'delcombine' option disabled. This option
|
By default Vim has the 'delcombine' option disabled. This option
|
||||||
allows the deletion of ALEF in a LAM_ALEF (LAA) combined character
|
allows the deletion of ALEF in a LAM_ALEF (LAA) combined character
|
||||||
and still retain the LAM (i.e. it reverts to treating the combined
|
and still retain the LAM (i.e. it reverts to treating the combined
|
||||||
character as its natural two characters form -- this also pertains
|
character as its natural two characters form -- this also pertains
|
||||||
@ -255,7 +255,7 @@ o Enable Arabic settings [short-cut]
|
|||||||
Keymap/Keyboard *arabickeymap*
|
Keymap/Keyboard *arabickeymap*
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
The character/letter encoding used in VIM is the standard UTF-8.
|
The character/letter encoding used in Vim is the standard UTF-8.
|
||||||
It is widely discouraged that any other encoding be used or even
|
It is widely discouraged that any other encoding be used or even
|
||||||
attempted.
|
attempted.
|
||||||
|
|
||||||
@ -288,7 +288,7 @@ o Keyboard
|
|||||||
Restrictions
|
Restrictions
|
||||||
------------
|
------------
|
||||||
|
|
||||||
o VIM in its GUI form does not currently support Bi-directionality
|
o Vim in its GUI form does not currently support Bi-directionality
|
||||||
(i.e. the ability to see both Arabic and Latin intermixed within
|
(i.e. the ability to see both Arabic and Latin intermixed within
|
||||||
the same line).
|
the same line).
|
||||||
|
|
||||||
|
@ -605,7 +605,7 @@ FileChangedShell When Vim notices that the modification time of
|
|||||||
|timestamp|
|
|timestamp|
|
||||||
Mostly triggered after executing a shell
|
Mostly triggered after executing a shell
|
||||||
command, but also with a |:checktime| command
|
command, but also with a |:checktime| command
|
||||||
or when Gvim regains input focus.
|
or when gvim regains input focus.
|
||||||
This autocommand is triggered for each changed
|
This autocommand is triggered for each changed
|
||||||
file. It is not used when 'autoread' is set
|
file. It is not used when 'autoread' is set
|
||||||
and the buffer was not changed. If a
|
and the buffer was not changed. If a
|
||||||
@ -616,7 +616,7 @@ FileChangedShell When Vim notices that the modification time of
|
|||||||
to tell Vim what to do next.
|
to tell Vim what to do next.
|
||||||
NOTE: When this autocommand is executed, the
|
NOTE: When this autocommand is executed, the
|
||||||
current buffer "%" may be different from the
|
current buffer "%" may be different from the
|
||||||
buffer that was changed "<afile>".
|
buffer that was changed, which is in "<afile>".
|
||||||
NOTE: The commands must not change the current
|
NOTE: The commands must not change the current
|
||||||
buffer, jump to another buffer or delete a
|
buffer, jump to another buffer or delete a
|
||||||
buffer. *E246* *E811*
|
buffer. *E246* *E811*
|
||||||
@ -643,7 +643,8 @@ FileType When the 'filetype' option has been set. The
|
|||||||
pattern is matched against the filetype.
|
pattern is matched against the filetype.
|
||||||
<afile> can be used for the name of the file
|
<afile> can be used for the name of the file
|
||||||
where this option was set, and <amatch> for
|
where this option was set, and <amatch> for
|
||||||
the new value of 'filetype'.
|
the new value of 'filetype'. Navigating to
|
||||||
|
another window or buffer is not allowed.
|
||||||
See |filetypes|.
|
See |filetypes|.
|
||||||
*FileWriteCmd*
|
*FileWriteCmd*
|
||||||
FileWriteCmd Before writing to a file, when not writing the
|
FileWriteCmd Before writing to a file, when not writing the
|
||||||
|
@ -420,6 +420,9 @@ matches exactly one character.
|
|||||||
|
|
||||||
The 'wildignorecase' option can be set to ignore case in filenames.
|
The 'wildignorecase' option can be set to ignore case in filenames.
|
||||||
|
|
||||||
|
The 'wildmenu' option can be set to show the matches just above the command
|
||||||
|
line.
|
||||||
|
|
||||||
If you like tcsh's autolist completion, you can use this mapping:
|
If you like tcsh's autolist completion, you can use this mapping:
|
||||||
:cnoremap X <C-L><C-D>
|
:cnoremap X <C-L><C-D>
|
||||||
(Where X is the command key to use, <C-L> is CTRL-L and <C-D> is CTRL-D)
|
(Where X is the command key to use, <C-L> is CTRL-L and <C-D> is CTRL-D)
|
||||||
|
@ -1265,7 +1265,7 @@ Commands for changing the working directory can be suffixed with a bang "!"
|
|||||||
*:lc* *:lcd*
|
*:lc* *:lcd*
|
||||||
:lc[d][!] {path} Like |:cd|, but only set the current directory for the
|
:lc[d][!] {path} Like |:cd|, but only set the current directory for the
|
||||||
current window. The current directory for other
|
current window. The current directory for other
|
||||||
windows or any tabs is not changed.
|
windows or tabs is not changed.
|
||||||
|
|
||||||
*:lch* *:lchdir*
|
*:lch* *:lchdir*
|
||||||
:lch[dir][!] Same as |:lcd|.
|
:lch[dir][!] Same as |:lcd|.
|
||||||
@ -1364,6 +1364,13 @@ If you want to automatically reload a file when it has been changed outside of
|
|||||||
Vim, set the 'autoread' option. This doesn't work at the moment you write the
|
Vim, set the 'autoread' option. This doesn't work at the moment you write the
|
||||||
file though, only when the file wasn't changed inside of Vim.
|
file though, only when the file wasn't changed inside of Vim.
|
||||||
|
|
||||||
|
If you do not want to be asked or automatically reload the file, you can use
|
||||||
|
this: >
|
||||||
|
set buftype=nofile
|
||||||
|
|
||||||
|
Or, when starting gvim from a shell: >
|
||||||
|
gvim file.log -c "set buftype=nofile"
|
||||||
|
|
||||||
Note that if a FileChangedShell autocommand is defined you will not get a
|
Note that if a FileChangedShell autocommand is defined you will not get a
|
||||||
warning message or prompt. The autocommand is expected to handle this.
|
warning message or prompt. The autocommand is expected to handle this.
|
||||||
|
|
||||||
|
@ -2201,12 +2201,13 @@ readfile({fname} [, {binary} [, {max}]])
|
|||||||
reltime([{start} [, {end}]]) List get time value
|
reltime([{start} [, {end}]]) List get time value
|
||||||
reltimefloat({time}) Float turn the time value into a Float
|
reltimefloat({time}) Float turn the time value into a Float
|
||||||
reltimestr({time}) String turn time value into a String
|
reltimestr({time}) String turn time value into a String
|
||||||
remote_expr({server}, {string} [, {idvar}])
|
remote_expr({server}, {string} [, {idvar} [, {timeout}]])
|
||||||
String send expression
|
String send expression
|
||||||
remote_foreground({server}) Number bring Vim server to the foreground
|
remote_foreground({server}) Number bring Vim server to the foreground
|
||||||
remote_peek({serverid} [, {retvar}])
|
remote_peek({serverid} [, {retvar}])
|
||||||
Number check for reply string
|
Number check for reply string
|
||||||
remote_read({serverid}) String read reply string
|
remote_read({serverid} [, {timeout}])
|
||||||
|
String read reply string
|
||||||
remote_send({server}, {string} [, {idvar}])
|
remote_send({server}, {string} [, {idvar}])
|
||||||
String send key sequence
|
String send key sequence
|
||||||
remove({list}, {idx} [, {end}]) any remove items {idx}-{end} from {list}
|
remove({list}, {idx} [, {end}]) any remove items {idx}-{end} from {list}
|
||||||
@ -3108,6 +3109,7 @@ did_filetype() Returns |TRUE| when autocommands are being executed and the
|
|||||||
FileType event has been triggered at least once. Can be used
|
FileType event has been triggered at least once. Can be used
|
||||||
to avoid triggering the FileType event again in the scripts
|
to avoid triggering the FileType event again in the scripts
|
||||||
that detect the file type. |FileType|
|
that detect the file type. |FileType|
|
||||||
|
Returns |FALSE| when `:setf FALLBACK` was used.
|
||||||
When editing another file, the counter is reset, thus this
|
When editing another file, the counter is reset, thus this
|
||||||
really checks if the FileType event has been triggered for the
|
really checks if the FileType event has been triggered for the
|
||||||
current buffer. This allows an autocommand that starts
|
current buffer. This allows an autocommand that starts
|
||||||
@ -4077,13 +4079,16 @@ getcompletion({pat}, {type} [, {filtered}]) *getcompletion()*
|
|||||||
getcurpos() Get the position of the cursor. This is like getpos('.'), but
|
getcurpos() Get the position of the cursor. This is like getpos('.'), but
|
||||||
includes an extra item in the list:
|
includes an extra item in the list:
|
||||||
[bufnum, lnum, col, off, curswant] ~
|
[bufnum, lnum, col, off, curswant] ~
|
||||||
The "curswant" number is the preferred column when moving the
|
The "curswant" number is the preferred column when moving the
|
||||||
cursor vertically.
|
cursor vertically. Also see |getpos()|.
|
||||||
This can be used to save and restore the cursor position: >
|
|
||||||
let save_cursor = getcurpos()
|
This can be used to save and restore the cursor position: >
|
||||||
MoveTheCursorAround
|
let save_cursor = getcurpos()
|
||||||
call setpos('.', save_cursor)
|
MoveTheCursorAround
|
||||||
<
|
call setpos('.', save_cursor)
|
||||||
|
< Note that this only works within the window. See
|
||||||
|
|winrestview()| for restoring more state.
|
||||||
|
|
||||||
getcwd([{winnr}[, {tabnr}]]) *getcwd()*
|
getcwd([{winnr}[, {tabnr}]]) *getcwd()*
|
||||||
With no arguments the result is a String, which is the name of
|
With no arguments the result is a String, which is the name of
|
||||||
the current effective working directory. With {winnr} or
|
the current effective working directory. With {winnr} or
|
||||||
@ -4381,11 +4386,13 @@ gettabwinvar({tabnr}, {winnr}, {varname} [, {def}]) *gettabwinvar()*
|
|||||||
getwinposx() The result is a Number, which is the X coordinate in pixels of
|
getwinposx() The result is a Number, which is the X coordinate in pixels of
|
||||||
the left hand side of the GUI Vim window. The result will be
|
the left hand side of the GUI Vim window. The result will be
|
||||||
-1 if the information is not available.
|
-1 if the information is not available.
|
||||||
|
The value can be used with `:winpos`.
|
||||||
|
|
||||||
*getwinposy()*
|
*getwinposy()*
|
||||||
getwinposy() The result is a Number, which is the Y coordinate in pixels of
|
getwinposy() The result is a Number, which is the Y coordinate in pixels of
|
||||||
the top of the GUI Vim window. The result will be -1 if the
|
the top of the GUI Vim window. The result will be -1 if the
|
||||||
information is not available.
|
information is not available.
|
||||||
|
The value can be used with `:winpos`.
|
||||||
|
|
||||||
getwininfo([{winid}]) *getwininfo()*
|
getwininfo([{winid}]) *getwininfo()*
|
||||||
Returns information about windows as a List with Dictionaries.
|
Returns information about windows as a List with Dictionaries.
|
||||||
@ -5150,7 +5157,10 @@ line({expr}) The result is a Number, which is the line number of the file
|
|||||||
< *last-position-jump*
|
< *last-position-jump*
|
||||||
This autocommand jumps to the last known position in a file
|
This autocommand jumps to the last known position in a file
|
||||||
just after opening it, if the '" mark is set: >
|
just after opening it, if the '" mark is set: >
|
||||||
:au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif
|
:au BufReadPost *
|
||||||
|
\ if line("'\"") > 1 && line("'\"") <= line("$") && &ft !~# 'commit'
|
||||||
|
\ | exe "normal! g`\""
|
||||||
|
\ | endif
|
||||||
|
|
||||||
line2byte({lnum}) *line2byte()*
|
line2byte({lnum}) *line2byte()*
|
||||||
Return the byte count from the start of the buffer for line
|
Return the byte count from the start of the buffer for line
|
||||||
@ -6837,7 +6847,7 @@ setqflist({list} [, {action}[, {what}]]) *setqflist()*
|
|||||||
|
|
||||||
This function can be used to create a quickfix list
|
This function can be used to create a quickfix list
|
||||||
independent of the 'errorformat' setting. Use a command like
|
independent of the 'errorformat' setting. Use a command like
|
||||||
":cc 1" to jump to the first position.
|
`:cc 1` to jump to the first position.
|
||||||
|
|
||||||
|
|
||||||
*setreg()*
|
*setreg()*
|
||||||
@ -8270,7 +8280,7 @@ lispindent Compiled with support for lisp indenting.
|
|||||||
listcmds Compiled with commands for the buffer list |:files|
|
listcmds Compiled with commands for the buffer list |:files|
|
||||||
and the argument list |arglist|.
|
and the argument list |arglist|.
|
||||||
localmap Compiled with local mappings and abbr. |:map-local|
|
localmap Compiled with local mappings and abbr. |:map-local|
|
||||||
mac macOS version of Vim.
|
mac macOS version of Nvim.
|
||||||
menu Compiled with support for |:menu|.
|
menu Compiled with support for |:menu|.
|
||||||
mksession Compiled with support for |:mksession|.
|
mksession Compiled with support for |:mksession|.
|
||||||
modify_fname Compiled with file name modifiers. |filename-modifiers|
|
modify_fname Compiled with file name modifiers. |filename-modifiers|
|
||||||
@ -10416,6 +10426,22 @@ missing: >
|
|||||||
: echo "You will _never_ see this message"
|
: echo "You will _never_ see this message"
|
||||||
:endif
|
:endif
|
||||||
|
|
||||||
|
To execute a command only when the |+eval| feature is disabled requires a trick,
|
||||||
|
as this example shows: >
|
||||||
|
if 1
|
||||||
|
nnoremap : :"
|
||||||
|
endif
|
||||||
|
normal :set history=111<CR>
|
||||||
|
if 1
|
||||||
|
nunmap :
|
||||||
|
endif
|
||||||
|
|
||||||
|
The "<CR>" here is a real CR character, type CTRL-V Enter to get it.
|
||||||
|
|
||||||
|
When the |+eval| feature is available the ":" is remapped to add a double
|
||||||
|
quote, which has the effect of commenting-out the command. without the
|
||||||
|
|+eval| feature the nnoremap command is skipped and the command is executed.
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
11. The sandbox *eval-sandbox* *sandbox* *E48*
|
11. The sandbox *eval-sandbox* *sandbox* *E48*
|
||||||
|
|
||||||
|
@ -309,12 +309,12 @@ define yourself. There are a few ways to avoid this:
|
|||||||
You need to define your own mapping before the plugin is loaded (before
|
You need to define your own mapping before the plugin is loaded (before
|
||||||
editing a file of that type). The plugin will then skip installing the
|
editing a file of that type). The plugin will then skip installing the
|
||||||
default mapping.
|
default mapping.
|
||||||
|
*no_mail_maps*
|
||||||
3. Disable defining mappings for a specific filetype by setting a variable,
|
3. Disable defining mappings for a specific filetype by setting a variable,
|
||||||
which contains the name of the filetype. For the "mail" filetype this
|
which contains the name of the filetype. For the "mail" filetype this
|
||||||
would be: >
|
would be: >
|
||||||
:let no_mail_maps = 1
|
:let no_mail_maps = 1
|
||||||
|
< *no_plugin_maps*
|
||||||
4. Disable defining mappings for all filetypes by setting a variable: >
|
4. Disable defining mappings for all filetypes by setting a variable: >
|
||||||
:let no_plugin_maps = 1
|
:let no_plugin_maps = 1
|
||||||
<
|
<
|
||||||
@ -724,6 +724,12 @@ Format description:
|
|||||||
not recognized here as well.
|
not recognized here as well.
|
||||||
|
|
||||||
|
|
||||||
|
RUST *ft-rust*
|
||||||
|
|
||||||
|
Since the text for this plugin is rather long it has been put in a separate
|
||||||
|
file: |ft_rust.txt|.
|
||||||
|
|
||||||
|
|
||||||
SQL *ft-sql*
|
SQL *ft-sql*
|
||||||
|
|
||||||
Since the text for this plugin is rather long it has been put in a separate
|
Since the text for this plugin is rather long it has been put in a separate
|
||||||
|
@ -73,7 +73,7 @@ This will call a function to compute the fold level: >
|
|||||||
:set foldexpr=MyFoldLevel(v:lnum)
|
:set foldexpr=MyFoldLevel(v:lnum)
|
||||||
This will make a fold out of paragraphs separated by blank lines: >
|
This will make a fold out of paragraphs separated by blank lines: >
|
||||||
:set foldexpr=getline(v:lnum)=~'^\\s*$'&&getline(v:lnum+1)=~'\\S'?'<1':1
|
:set foldexpr=getline(v:lnum)=~'^\\s*$'&&getline(v:lnum+1)=~'\\S'?'<1':1
|
||||||
this does the same: >
|
This does the same: >
|
||||||
:set foldexpr=getline(v:lnum-1)=~'^\\s*$'&&getline(v:lnum)=~'\\S'?'>1':1
|
:set foldexpr=getline(v:lnum-1)=~'^\\s*$'&&getline(v:lnum)=~'\\S'?'>1':1
|
||||||
|
|
||||||
Note that backslashes must be used to escape characters that ":set" handles
|
Note that backslashes must be used to escape characters that ":set" handles
|
||||||
@ -197,7 +197,7 @@ and the level given by the marker:
|
|||||||
1. If a marker with the same fold level is encountered, the previous fold
|
1. If a marker with the same fold level is encountered, the previous fold
|
||||||
ends and another fold with the same level starts.
|
ends and another fold with the same level starts.
|
||||||
2. If a marker with a higher fold level is found, a nested fold is started.
|
2. If a marker with a higher fold level is found, a nested fold is started.
|
||||||
3. if a marker with a lower fold level is found, all folds up to and including
|
3. If a marker with a lower fold level is found, all folds up to and including
|
||||||
this level end and a fold with the specified level starts.
|
this level end and a fold with the specified level starts.
|
||||||
|
|
||||||
The number indicates the fold level. A zero cannot be used (a marker with
|
The number indicates the fold level. A zero cannot be used (a marker with
|
||||||
|
@ -116,7 +116,7 @@ NOTE: "gnat xref -v" is very tricky to use as it has almost no diagnostic
|
|||||||
then "gnat xref -v *.ad?"
|
then "gnat xref -v *.ad?"
|
||||||
4) Project manager support is completely broken - don't even try "gnat xref
|
4) Project manager support is completely broken - don't even try "gnat xref
|
||||||
-Padacl.gpr".
|
-Padacl.gpr".
|
||||||
5) VIM is faster when the tags file is sorted - use "sort --unique
|
5) Vim is faster when the tags file is sorted - use "sort --unique
|
||||||
--ignore-case --output=tags tags" .
|
--ignore-case --output=tags tags" .
|
||||||
6) Remember to insert "!_TAG_FILE_SORTED 2 %sort ui" as first line to mark
|
6) Remember to insert "!_TAG_FILE_SORTED 2 %sort ui" as first line to mark
|
||||||
the file assorted.
|
the file assorted.
|
||||||
|
237
runtime/doc/ft_rust.txt
Normal file
237
runtime/doc/ft_rust.txt
Normal file
@ -0,0 +1,237 @@
|
|||||||
|
*ft_rust.txt* Filetype plugin for Rust
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
CONTENTS *rust*
|
||||||
|
|
||||||
|
1. Introduction |rust-intro|
|
||||||
|
2. Settings |rust-settings|
|
||||||
|
3. Commands |rust-commands|
|
||||||
|
4. Mappings |rust-mappings|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
INTRODUCTION *rust-intro*
|
||||||
|
|
||||||
|
This plugin provides syntax and supporting functionality for the Rust
|
||||||
|
filetype.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
SETTINGS *rust-settings*
|
||||||
|
|
||||||
|
This plugin has a few variables you can define in your vimrc that change the
|
||||||
|
behavior of the plugin.
|
||||||
|
|
||||||
|
*g:rustc_path*
|
||||||
|
g:rustc_path~
|
||||||
|
Set this option to the path to rustc for use in the |:RustRun| and
|
||||||
|
|:RustExpand| commands. If unset, "rustc" will be located in $PATH: >
|
||||||
|
let g:rustc_path = $HOME."/bin/rustc"
|
||||||
|
<
|
||||||
|
|
||||||
|
*g:rustc_makeprg_no_percent*
|
||||||
|
g:rustc_makeprg_no_percent~
|
||||||
|
Set this option to 1 to have 'makeprg' default to "rustc" instead of
|
||||||
|
"rustc %": >
|
||||||
|
let g:rustc_makeprg_no_percent = 1
|
||||||
|
<
|
||||||
|
|
||||||
|
*g:rust_conceal*
|
||||||
|
g:rust_conceal~
|
||||||
|
Set this option to turn on the basic |conceal| support: >
|
||||||
|
let g:rust_conceal = 1
|
||||||
|
<
|
||||||
|
|
||||||
|
*g:rust_conceal_mod_path*
|
||||||
|
g:rust_conceal_mod_path~
|
||||||
|
Set this option to turn on |conceal| for the path connecting token
|
||||||
|
"::": >
|
||||||
|
let g:rust_conceal_mod_path = 1
|
||||||
|
<
|
||||||
|
|
||||||
|
*g:rust_conceal_pub*
|
||||||
|
g:rust_conceal_pub~
|
||||||
|
Set this option to turn on |conceal| for the "pub" token: >
|
||||||
|
let g:rust_conceal_pub = 1
|
||||||
|
<
|
||||||
|
|
||||||
|
*g:rust_recommended_style*
|
||||||
|
g:rust_recommended_style~
|
||||||
|
Set this option to enable vim indentation and textwidth settings to
|
||||||
|
conform to style conventions of the rust standard library (i.e. use 4
|
||||||
|
spaces for indents and sets 'textwidth' to 99). This option is enabled
|
||||||
|
by default. To disable it: >
|
||||||
|
let g:rust_recommended_style = 0
|
||||||
|
<
|
||||||
|
|
||||||
|
*g:rust_fold*
|
||||||
|
g:rust_fold~
|
||||||
|
Set this option to turn on |folding|: >
|
||||||
|
let g:rust_fold = 1
|
||||||
|
<
|
||||||
|
Value Effect ~
|
||||||
|
0 No folding
|
||||||
|
1 Braced blocks are folded. All folds are open by
|
||||||
|
default.
|
||||||
|
2 Braced blocks are folded. 'foldlevel' is left at the
|
||||||
|
global value (all folds are closed by default).
|
||||||
|
|
||||||
|
*g:rust_bang_comment_leader*
|
||||||
|
g:rust_bang_comment_leader~
|
||||||
|
Set this option to 1 to preserve the leader on multi-line doc comments
|
||||||
|
using the /*! syntax: >
|
||||||
|
let g:rust_bang_comment_leader = 1
|
||||||
|
<
|
||||||
|
|
||||||
|
*g:ftplugin_rust_source_path*
|
||||||
|
g:ftplugin_rust_source_path~
|
||||||
|
Set this option to a path that should be prepended to 'path' for Rust
|
||||||
|
source files: >
|
||||||
|
let g:ftplugin_rust_source_path = $HOME.'/dev/rust'
|
||||||
|
<
|
||||||
|
|
||||||
|
*g:rustfmt_command*
|
||||||
|
g:rustfmt_command~
|
||||||
|
Set this option to the name of the 'rustfmt' executable in your $PATH. If
|
||||||
|
not specified it defaults to 'rustfmt' : >
|
||||||
|
let g:rustfmt_command = 'rustfmt'
|
||||||
|
<
|
||||||
|
*g:rustfmt_autosave*
|
||||||
|
g:rustfmt_autosave~
|
||||||
|
Set this option to 1 to run |:RustFmt| automatically when saving a
|
||||||
|
buffer. If not specified it defaults to 0 : >
|
||||||
|
let g:rustfmt_autosave = 0
|
||||||
|
<
|
||||||
|
*g:rustfmt_fail_silently*
|
||||||
|
g:rustfmt_fail_silently~
|
||||||
|
Set this option to 1 to prevent 'rustfmt' from populating the
|
||||||
|
|location-list| with errors. If not specified it defaults to 0: >
|
||||||
|
let g:rustfmt_fail_silently = 0
|
||||||
|
<
|
||||||
|
*g:rustfmt_options*
|
||||||
|
g:rustfmt_options~
|
||||||
|
Set this option to a string of options to pass to 'rustfmt'. The
|
||||||
|
write-mode is already set to 'overwrite'. If not specified it
|
||||||
|
defaults to '' : >
|
||||||
|
let g:rustfmt_options = ''
|
||||||
|
<
|
||||||
|
|
||||||
|
*g:rust_playpen_url*
|
||||||
|
g:rust_playpen_url~
|
||||||
|
Set this option to override the url for the playpen to use: >
|
||||||
|
let g:rust_playpen_url = 'https://play.rust-lang.org/'
|
||||||
|
<
|
||||||
|
|
||||||
|
*g:rust_shortener_url*
|
||||||
|
g:rust_shortener_url~
|
||||||
|
Set this option to override the url for the url shortener: >
|
||||||
|
let g:rust_shortener_url = 'https://is.gd/'
|
||||||
|
<
|
||||||
|
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
COMMANDS *rust-commands*
|
||||||
|
|
||||||
|
:RustRun [args] *:RustRun*
|
||||||
|
:RustRun! [rustc-args] [--] [args]
|
||||||
|
Compiles and runs the current file. If it has unsaved changes,
|
||||||
|
it will be saved first using |:update|. If the current file is
|
||||||
|
an unnamed buffer, it will be written to a temporary file
|
||||||
|
first. The compiled binary is always placed in a temporary
|
||||||
|
directory, but is run from the current directory.
|
||||||
|
|
||||||
|
The arguments given to |:RustRun| will be passed to the
|
||||||
|
compiled binary.
|
||||||
|
|
||||||
|
If ! is specified, the arguments are passed to rustc instead.
|
||||||
|
A "--" argument will separate the rustc arguments from the
|
||||||
|
arguments passed to the binary.
|
||||||
|
|
||||||
|
If |g:rustc_path| is defined, it is used as the path to rustc.
|
||||||
|
Otherwise it is assumed rustc can be found in $PATH.
|
||||||
|
|
||||||
|
:RustExpand [args] *:RustExpand*
|
||||||
|
:RustExpand! [TYPE] [args]
|
||||||
|
Expands the current file using --pretty and displays the
|
||||||
|
results in a new split. If the current file has unsaved
|
||||||
|
changes, it will be saved first using |:update|. If the
|
||||||
|
current file is an unnamed buffer, it will be written to a
|
||||||
|
temporary file first.
|
||||||
|
|
||||||
|
The arguments given to |:RustExpand| will be passed to rustc.
|
||||||
|
This is largely intended for specifying various --cfg
|
||||||
|
configurations.
|
||||||
|
|
||||||
|
If ! is specified, the first argument is the expansion type to
|
||||||
|
pass to rustc --pretty. Otherwise it will default to
|
||||||
|
"expanded".
|
||||||
|
|
||||||
|
If |g:rustc_path| is defined, it is used as the path to rustc.
|
||||||
|
Otherwise it is assumed rustc can be found in $PATH.
|
||||||
|
|
||||||
|
:RustEmitIr [args] *:RustEmitIr*
|
||||||
|
Compiles the current file to LLVM IR and displays the results
|
||||||
|
in a new split. If the current file has unsaved changes, it
|
||||||
|
will be saved first using |:update|. If the current file is an
|
||||||
|
unnamed buffer, it will be written to a temporary file first.
|
||||||
|
|
||||||
|
The arguments given to |:RustEmitIr| will be passed to rustc.
|
||||||
|
|
||||||
|
If |g:rustc_path| is defined, it is used as the path to rustc.
|
||||||
|
Otherwise it is assumed rustc can be found in $PATH.
|
||||||
|
|
||||||
|
:RustEmitAsm [args] *:RustEmitAsm*
|
||||||
|
Compiles the current file to assembly and displays the results
|
||||||
|
in a new split. If the current file has unsaved changes, it
|
||||||
|
will be saved first using |:update|. If the current file is an
|
||||||
|
unnamed buffer, it will be written to a temporary file first.
|
||||||
|
|
||||||
|
The arguments given to |:RustEmitAsm| will be passed to rustc.
|
||||||
|
|
||||||
|
If |g:rustc_path| is defined, it is used as the path to rustc.
|
||||||
|
Otherwise it is assumed rustc can be found in $PATH.
|
||||||
|
|
||||||
|
:RustPlay *:RustPlay*
|
||||||
|
This command will only work if you have web-api.vim installed
|
||||||
|
(available at https://github.com/mattn/webapi-vim). It sends the
|
||||||
|
current selection, or if nothing is selected, the entirety of the
|
||||||
|
current buffer to the Rust playpen, and emits a message with the
|
||||||
|
shortened URL to the playpen.
|
||||||
|
|
||||||
|
|g:rust_playpen_url| is the base URL to the playpen, by default
|
||||||
|
"https://play.rust-lang.org/".
|
||||||
|
|
||||||
|
|g:rust_shortener_url| is the base url for the shorterner, by
|
||||||
|
default "https://is.gd/"
|
||||||
|
|
||||||
|
:RustFmt *:RustFmt*
|
||||||
|
Runs |g:rustfmt_command| on the current buffer. If
|
||||||
|
|g:rustfmt_options| is set then those will be passed to the
|
||||||
|
executable.
|
||||||
|
|
||||||
|
If |g:rustfmt_fail_silently| is 0 (the default) then it
|
||||||
|
will populate the |location-list| with the errors from
|
||||||
|
|g:rustfmt_command|. If |g:rustfmt_fail_silently| is set to 1
|
||||||
|
then it will not populate the |location-list|.
|
||||||
|
|
||||||
|
:RustFmtRange *:RustFmtRange*
|
||||||
|
Runs |g:rustfmt_command| with selected range. See
|
||||||
|
|:RustFmt| for any other information.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
MAPPINGS *rust-mappings*
|
||||||
|
|
||||||
|
This plugin defines mappings for |[[| and |]]| to support hanging indents.
|
||||||
|
|
||||||
|
It also has a few other mappings:
|
||||||
|
|
||||||
|
*rust_<D-r>*
|
||||||
|
<D-r> Executes |:RustRun| with no arguments.
|
||||||
|
Note: This binding is only available in MacVim.
|
||||||
|
|
||||||
|
*rust_<D-R>*
|
||||||
|
<D-R> Populates the command line with |:RustRun|! using the
|
||||||
|
arguments given to the last invocation, but does not
|
||||||
|
execute it.
|
||||||
|
Note: This binding is only available in MacVim.
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
vim:tw=78:sw=4:noet:ts=8:ft=help:norl:
|
@ -30,7 +30,7 @@ Get specific help: It is possible to go directly to whatever you want help
|
|||||||
help entries for "word".
|
help entries for "word".
|
||||||
Or use ":helpgrep word". |:helpgrep|
|
Or use ":helpgrep word". |:helpgrep|
|
||||||
|
|
||||||
VIM stands for Vi IMproved. Most of VIM was made by Bram Moolenaar, but only
|
Vim stands for Vi IMproved. Most of Vim was made by Bram Moolenaar, but only
|
||||||
through the help of many others. See |credits|.
|
through the help of many others. See |credits|.
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
*doc-file-list* *Q_ct*
|
*doc-file-list* *Q_ct*
|
||||||
|
@ -140,7 +140,8 @@ Help on help files *helphelp*
|
|||||||
already opened, then the location list for that window
|
already opened, then the location list for that window
|
||||||
is used. Otherwise, a new help window is opened and
|
is used. Otherwise, a new help window is opened and
|
||||||
the location list for that window is set. The
|
the location list for that window is set. The
|
||||||
location list for the current window is not changed.
|
location list for the current window is not changed
|
||||||
|
then.
|
||||||
|
|
||||||
*:exu* *:exusage*
|
*:exu* *:exusage*
|
||||||
:exu[sage] Show help on Ex commands. Added to simulate the Nvi
|
:exu[sage] Show help on Ex commands. Added to simulate the Nvi
|
||||||
|
@ -82,9 +82,10 @@ suggested use.)
|
|||||||
2. Cscope related commands *cscope-commands*
|
2. Cscope related commands *cscope-commands*
|
||||||
|
|
||||||
*:cscope* *:cs* *:scs* *:scscope* *E259* *E262* *E561* *E560*
|
*:cscope* *:cs* *:scs* *:scscope* *E259* *E262* *E561* *E560*
|
||||||
All cscope commands are accessed through suboptions to the main cscope
|
All cscope commands are accessed through suboptions to the cscope commands.
|
||||||
command ":cscope". The shortest abbreviation is ":cs". The ":scscope"
|
`:cscope` or `:cs` is the main command
|
||||||
command does the same and also splits the window (short: "scs").
|
`:scscope` or `:scs` does the same and splits the window
|
||||||
|
`:lcscope` or `:lcs` uses the location list, see |:lcscope|
|
||||||
|
|
||||||
The available subcommands are:
|
The available subcommands are:
|
||||||
|
|
||||||
|
@ -298,10 +298,10 @@ tag char note action in Normal mode ~
|
|||||||
|B| B 1 cursor N WORDS backward
|
|B| B 1 cursor N WORDS backward
|
||||||
|C| ["x]C 2 change from the cursor position to the end
|
|C| ["x]C 2 change from the cursor position to the end
|
||||||
of the line, and N-1 more lines [into
|
of the line, and N-1 more lines [into
|
||||||
buffer x]; synonym for "c$"
|
register x]; synonym for "c$"
|
||||||
|D| ["x]D 2 delete the characters under the cursor
|
|D| ["x]D 2 delete the characters under the cursor
|
||||||
until the end of the line and N-1 more
|
until the end of the line and N-1 more
|
||||||
lines [into buffer x]; synonym for "d$"
|
lines [into register x]; synonym for "d$"
|
||||||
|E| E 1 cursor forward to the end of WORD N
|
|E| E 1 cursor forward to the end of WORD N
|
||||||
|F| F{char} 1 cursor to the Nth occurrence of {char} to
|
|F| F{char} 1 cursor to the Nth occurrence of {char} to
|
||||||
the left
|
the left
|
||||||
@ -318,13 +318,13 @@ tag char note action in Normal mode ~
|
|||||||
opposite direction
|
opposite direction
|
||||||
|O| O 2 begin a new line above the cursor and
|
|O| O 2 begin a new line above the cursor and
|
||||||
insert text, repeat N times
|
insert text, repeat N times
|
||||||
|P| ["x]P 2 put the text [from buffer x] before the
|
|P| ["x]P 2 put the text [from register x] before the
|
||||||
cursor N times
|
cursor N times
|
||||||
|Q| Q switch to "Ex" mode
|
|Q| Q switch to "Ex" mode
|
||||||
|R| R 2 enter replace mode: overtype existing
|
|R| R 2 enter replace mode: overtype existing
|
||||||
characters, repeat the entered text N-1
|
characters, repeat the entered text N-1
|
||||||
times
|
times
|
||||||
|S| ["x]S 2 delete N lines [into buffer x] and start
|
|S| ["x]S 2 delete N lines [into register x] and start
|
||||||
insert; synonym for "cc".
|
insert; synonym for "cc".
|
||||||
|T| T{char} 1 cursor till after Nth occurrence of {char}
|
|T| T{char} 1 cursor till after Nth occurrence of {char}
|
||||||
to the left
|
to the left
|
||||||
@ -332,8 +332,8 @@ tag char note action in Normal mode ~
|
|||||||
|V| V start linewise Visual mode
|
|V| V start linewise Visual mode
|
||||||
|W| W 1 cursor N WORDS forward
|
|W| W 1 cursor N WORDS forward
|
||||||
|X| ["x]X 2 delete N characters before the cursor [into
|
|X| ["x]X 2 delete N characters before the cursor [into
|
||||||
buffer x]
|
register x]
|
||||||
|Y| ["x]Y yank N lines [into buffer x]; synonym for
|
|Y| ["x]Y yank N lines [into register x]; synonym for
|
||||||
"yy"
|
"yy"
|
||||||
|ZZ| ZZ store current file if modified, and exit
|
|ZZ| ZZ store current file if modified, and exit
|
||||||
|ZQ| ZQ exit current file always
|
|ZQ| ZQ exit current file always
|
||||||
@ -356,12 +356,12 @@ tag char note action in Normal mode ~
|
|||||||
|`}| `} 1 cursor to the end of the current paragraph
|
|`}| `} 1 cursor to the end of the current paragraph
|
||||||
|a| a 2 append text after the cursor N times
|
|a| a 2 append text after the cursor N times
|
||||||
|b| b 1 cursor N words backward
|
|b| b 1 cursor N words backward
|
||||||
|c| ["x]c{motion} 2 delete Nmove text [into buffer x] and start
|
|c| ["x]c{motion} 2 delete Nmove text [into register x] and
|
||||||
|
start insert
|
||||||
|
|cc| ["x]cc 2 delete N lines [into register x] and start
|
||||||
insert
|
insert
|
||||||
|cc| ["x]cc 2 delete N lines [into buffer x] and start
|
|d| ["x]d{motion} 2 delete Nmove text [into register x]
|
||||||
insert
|
|dd| ["x]dd 2 delete N lines [into register x]
|
||||||
|d| ["x]d{motion} 2 delete Nmove text [into buffer x]
|
|
||||||
|dd| ["x]dd 2 delete N lines [into buffer x]
|
|
||||||
|do| do 2 same as ":diffget"
|
|do| do 2 same as ":diffget"
|
||||||
|dp| dp 2 same as ":diffput"
|
|dp| dp 2 same as ":diffput"
|
||||||
|e| e 1 cursor forward to the end of word N
|
|e| e 1 cursor forward to the end of word N
|
||||||
@ -387,16 +387,16 @@ tag char note action in Normal mode ~
|
|||||||
|q?| q? edit ? command-line in command-line window
|
|q?| q? edit ? command-line in command-line window
|
||||||
|r| r{char} 2 replace N chars with {char}
|
|r| r{char} 2 replace N chars with {char}
|
||||||
|s| ["x]s 2 (substitute) delete N characters [into
|
|s| ["x]s 2 (substitute) delete N characters [into
|
||||||
buffer x] and start insert
|
register x] and start insert
|
||||||
|t| t{char} 1 cursor till before Nth occurrence of {char}
|
|t| t{char} 1 cursor till before Nth occurrence of {char}
|
||||||
to the right
|
to the right
|
||||||
|u| u 2 undo changes
|
|u| u 2 undo changes
|
||||||
|v| v start characterwise Visual mode
|
|v| v start characterwise Visual mode
|
||||||
|w| w 1 cursor N words forward
|
|w| w 1 cursor N words forward
|
||||||
|x| ["x]x 2 delete N characters under and after the
|
|x| ["x]x 2 delete N characters under and after the
|
||||||
cursor [into buffer x]
|
cursor [into register x]
|
||||||
|y| ["x]y{motion} yank Nmove text [into buffer x]
|
|y| ["x]y{motion} yank Nmove text [into register x]
|
||||||
|yy| ["x]yy yank N lines [into buffer x]
|
|yy| ["x]yy yank N lines [into register x]
|
||||||
|z| z{char} commands starting with 'z', see |z| below
|
|z| z{char} commands starting with 'z', see |z| below
|
||||||
|{| { 1 cursor N paragraphs backward
|
|{| { 1 cursor N paragraphs backward
|
||||||
|bar| | 1 cursor to column N
|
|bar| | 1 cursor to column N
|
||||||
|
@ -146,7 +146,8 @@ CTRL-R CTRL-R {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-R*
|
|||||||
CTRL-R CTRL-O {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-O*
|
CTRL-R CTRL-O {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-O*
|
||||||
Insert the contents of a register literally and don't
|
Insert the contents of a register literally and don't
|
||||||
auto-indent. Does the same as pasting with the mouse
|
auto-indent. Does the same as pasting with the mouse
|
||||||
|<MiddleMouse>|.
|
|<MiddleMouse>|. When the register is linewise this will
|
||||||
|
insert the text above the current line, like with `P`.
|
||||||
Does not replace characters!
|
Does not replace characters!
|
||||||
The '.' register (last inserted text) is still inserted as
|
The '.' register (last inserted text) is still inserted as
|
||||||
typed.
|
typed.
|
||||||
@ -607,13 +608,13 @@ Completion can be done for:
|
|||||||
10. User defined completion |i_CTRL-X_CTRL-U|
|
10. User defined completion |i_CTRL-X_CTRL-U|
|
||||||
11. omni completion |i_CTRL-X_CTRL-O|
|
11. omni completion |i_CTRL-X_CTRL-O|
|
||||||
12. Spelling suggestions |i_CTRL-X_s|
|
12. Spelling suggestions |i_CTRL-X_s|
|
||||||
13. keywords in 'complete' |i_CTRL-N|
|
13. keywords in 'complete' |i_CTRL-N| |i_CTRL-P|
|
||||||
|
|
||||||
All these (except 2) are done in CTRL-X mode. This is a sub-mode of Insert
|
All these, except CTRL-N and CTRL-P, are done in CTRL-X mode. This is a
|
||||||
and Replace modes. You enter CTRL-X mode by typing CTRL-X and one of the
|
sub-mode of Insert and Replace modes. You enter CTRL-X mode by typing CTRL-X
|
||||||
CTRL-X commands. You exit CTRL-X mode by typing a key that is not a valid
|
and one of the CTRL-X commands. You exit CTRL-X mode by typing a key that is
|
||||||
CTRL-X mode command. Valid keys are the CTRL-X command itself, CTRL-N (next),
|
not a valid CTRL-X mode command. Valid keys are the CTRL-X command itself,
|
||||||
and CTRL-P (previous).
|
CTRL-N (next), and CTRL-P (previous).
|
||||||
|
|
||||||
Also see the 'infercase' option if you want to adjust the case of the match.
|
Also see the 'infercase' option if you want to adjust the case of the match.
|
||||||
|
|
||||||
|
@ -68,8 +68,8 @@ The Vim pages contain the most recent information about Vim. They also
|
|||||||
contain links to the most recent version of Vim. The FAQ is a list of
|
contain links to the most recent version of Vim. The FAQ is a list of
|
||||||
Frequently Asked Questions. Read this if you have problems.
|
Frequently Asked Questions. Read this if you have problems.
|
||||||
|
|
||||||
VIM home page: http://www.vim.org/
|
Vim home page: http://www.vim.org/
|
||||||
VIM FAQ: http://vimdoc.sf.net/
|
Vim FAQ: http://vimdoc.sf.net/
|
||||||
Downloading: ftp://ftp.vim.org/pub/vim/MIRRORS
|
Downloading: ftp://ftp.vim.org/pub/vim/MIRRORS
|
||||||
|
|
||||||
|
|
||||||
|
@ -175,7 +175,7 @@ that starts with ",". Then you need to type another character for Vim to know
|
|||||||
whether to use the "," mapping or the longer one. To avoid this add the
|
whether to use the "," mapping or the longer one. To avoid this add the
|
||||||
<nowait> argument. Then the mapping will be used when it matches, Vim does
|
<nowait> argument. Then the mapping will be used when it matches, Vim does
|
||||||
not wait for more characters to be typed. However, if the characters were
|
not wait for more characters to be typed. However, if the characters were
|
||||||
already type they are used.
|
already typed they are used.
|
||||||
|
|
||||||
*:map-<silent>* *:map-silent*
|
*:map-<silent>* *:map-silent*
|
||||||
To define a mapping which will not be echoed on the command line, add
|
To define a mapping which will not be echoed on the command line, add
|
||||||
|
@ -744,6 +744,13 @@ a user-defined command.
|
|||||||
You tried to set an option after startup that only allows changes during
|
You tried to set an option after startup that only allows changes during
|
||||||
startup.
|
startup.
|
||||||
|
|
||||||
|
*E943* >
|
||||||
|
Command table needs to be updated, run 'make cmdidxs'
|
||||||
|
|
||||||
|
This can only happen when changing the source code, when adding a command in
|
||||||
|
src/ex_cmds.h. The lookup table then needs to be updated, by running: >
|
||||||
|
make cmdidxs
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
3. Messages *messages*
|
3. Messages *messages*
|
||||||
|
|
||||||
|
@ -311,7 +311,7 @@ Note: In the future more global options can be made global-local. Using
|
|||||||
|
|
||||||
Setting the filetype
|
Setting the filetype
|
||||||
|
|
||||||
:setf[iletype] {filetype} *:setf* *:setfiletype*
|
:setf[iletype] [FALLBACK] {filetype} *:setf* *:setfiletype*
|
||||||
Set the 'filetype' option to {filetype}, but only if
|
Set the 'filetype' option to {filetype}, but only if
|
||||||
not done yet in a sequence of (nested) autocommands.
|
not done yet in a sequence of (nested) autocommands.
|
||||||
This is short for: >
|
This is short for: >
|
||||||
@ -322,6 +322,12 @@ Setting the filetype
|
|||||||
setting the 'filetype' option twice, causing different
|
setting the 'filetype' option twice, causing different
|
||||||
settings and syntax files to be loaded.
|
settings and syntax files to be loaded.
|
||||||
|
|
||||||
|
When the optional FALLBACK argument is present, a
|
||||||
|
later :setfiletype command will override the
|
||||||
|
'filetype'. This is to used for filetype detections
|
||||||
|
that are just a guess. |did_filetype()| will return
|
||||||
|
false after this command.
|
||||||
|
|
||||||
*option-window* *optwin*
|
*option-window* *optwin*
|
||||||
:bro[wse] se[t] *:set-browse* *:browse-set* *:opt* *:options*
|
:bro[wse] se[t] *:set-browse* *:browse-set* *:opt* *:options*
|
||||||
:opt[ions] Open a window for viewing and setting all options.
|
:opt[ions] Open a window for viewing and setting all options.
|
||||||
@ -711,6 +717,12 @@ A jump table for the options with a short description can be found at |Q_op|.
|
|||||||
< Vim will guess the value. In the GUI this should work correctly,
|
< Vim will guess the value. In the GUI this should work correctly,
|
||||||
in other cases Vim might not be able to guess the right value.
|
in other cases Vim might not be able to guess the right value.
|
||||||
|
|
||||||
|
When the t_BG option is set, Vim will use it to request the background
|
||||||
|
color from the terminal. If the returned RGB value is dark/light and
|
||||||
|
'background' is not dark/light, 'background' will be set and the
|
||||||
|
screen is redrawn. This may have side effects, make t_BG empty in
|
||||||
|
your .vimrc if you suspect this problem.
|
||||||
|
|
||||||
When starting the GUI, the default value for 'background' will be
|
When starting the GUI, the default value for 'background' will be
|
||||||
"light". When the value is not set in the gvimrc, and Vim detects
|
"light". When the value is not set in the gvimrc, and Vim detects
|
||||||
that the background is actually quite dark, 'background' is set to
|
that the background is actually quite dark, 'background' is set to
|
||||||
|
@ -1058,12 +1058,16 @@ x A single character, with no special meaning, matches itself
|
|||||||
":s/[/x/" searches for "[/x" and replaces it with nothing. It does
|
":s/[/x/" searches for "[/x" and replaces it with nothing. It does
|
||||||
not search for "[" and replaces it with "x"!
|
not search for "[" and replaces it with "x"!
|
||||||
|
|
||||||
|
*E944* *E945*
|
||||||
If the sequence begins with "^", it matches any single character NOT
|
If the sequence begins with "^", it matches any single character NOT
|
||||||
in the collection: "[^xyz]" matches anything but 'x', 'y' and 'z'.
|
in the collection: "[^xyz]" matches anything but 'x', 'y' and 'z'.
|
||||||
- If two characters in the sequence are separated by '-', this is
|
- If two characters in the sequence are separated by '-', this is
|
||||||
shorthand for the full list of ASCII characters between them. E.g.,
|
shorthand for the full list of ASCII characters between them. E.g.,
|
||||||
"[0-9]" matches any decimal digit. Non-ASCII characters can be
|
"[0-9]" matches any decimal digit. If the starting character exceeds
|
||||||
used, but the character values must not be more than 256 apart.
|
the ending character, e.g. [c-a], E944 occurs. Non-ASCII characters
|
||||||
|
can be used, but the character values must not be more than 256 apart
|
||||||
|
in the old regexp engine. For example, searching by [\u3000-\u4000]
|
||||||
|
after setting re=1 emits a E945 error. Prepending \%#=2 will fix it.
|
||||||
- A character class expression is evaluated to the set of characters
|
- A character class expression is evaluated to the set of characters
|
||||||
belonging to that character class. The following character classes
|
belonging to that character class. The following character classes
|
||||||
are supported:
|
are supported:
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
*pi_matchit.txt* Extended "%" matching
|
*pi_matchit.txt* Extended "%" matching
|
||||||
|
|
||||||
For Vim version 6.3. Last change: 2015 May 21
|
For Vim version 6.3. Last change: 2017 May 14
|
||||||
|
|
||||||
*matchit* *matchit.vim*
|
*matchit* *matchit.vim*
|
||||||
|
|
||||||
@ -211,7 +211,7 @@ Examples:
|
|||||||
In LaTeX, since "%" is used as the comment character, you can >
|
In LaTeX, since "%" is used as the comment character, you can >
|
||||||
:let b:match_skip = 'r:%'
|
:let b:match_skip = 'r:%'
|
||||||
< Unfortunately, this will skip anything after "\%", an escaped "%". To
|
< Unfortunately, this will skip anything after "\%", an escaped "%". To
|
||||||
allow for this, and also "\\%" (an excaped backslash followed by the
|
allow for this, and also "\\%" (an escaped backslash followed by the
|
||||||
comment character) you can >
|
comment character) you can >
|
||||||
:let b:match_skip = 'r:\(^\|[^\\]\)\(\\\\\)*%'
|
:let b:match_skip = 'r:\(^\|[^\\]\)\(\\\\\)*%'
|
||||||
<
|
<
|
||||||
@ -356,7 +356,8 @@ The back reference '\'.d refers to the same thing as '\'.b:match_table[d] in
|
|||||||
The various |:vmap|s defined in the script (%, |g%|, |[%|, |]%|, |a%|) may
|
The various |:vmap|s defined in the script (%, |g%|, |[%|, |]%|, |a%|) may
|
||||||
have undesired effects in Select mode |Select-mode-mapping|. At least, if you
|
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
|
want to replace the selection with any character in "ag%[]" there will be a
|
||||||
pause of |'updatetime'| first.
|
pause of |'updatetime'| first. E.g., "yV%" would normally work linewise, but
|
||||||
|
the plugin mapping makes it characterwise.
|
||||||
|
|
||||||
It would be nice if "\0" were recognized as the entire pattern. That is, it
|
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".
|
would be nice if "foo:\end\0" had the same effect as "\(foo\):\end\1".
|
||||||
|
@ -87,25 +87,25 @@ If the option is empty, then vim will use the system default printer for
|
|||||||
Macintosh: mac-roman,
|
Macintosh: mac-roman,
|
||||||
HPUX: hp-roman8)
|
HPUX: hp-roman8)
|
||||||
global
|
global
|
||||||
Sets the character encoding used when printing. This option tells VIM which
|
Sets the character encoding used when printing. This option tells Vim which
|
||||||
print character encoding file from the "print" directory in 'runtimepath' to
|
print character encoding file from the "print" directory in 'runtimepath' to
|
||||||
use.
|
use.
|
||||||
|
|
||||||
This option will accept any value from |encoding-names|. Any recognized names
|
This option will accept any value from |encoding-names|. Any recognized names
|
||||||
are converted to VIM standard names - see 'encoding' for more details. Names
|
are converted to Vim standard names - see 'encoding' for more details. Names
|
||||||
not recognized by VIM will just be converted to lower case and underscores
|
not recognized by Vim will just be converted to lower case and underscores
|
||||||
replaced with '-' signs.
|
replaced with '-' signs.
|
||||||
|
|
||||||
If 'printencoding' is empty or VIM cannot find the file then it will use
|
If 'printencoding' is empty or Vim cannot find the file then it will use
|
||||||
'encoding' (if VIM is compiled with |+multi_byte| and it is set an 8-bit
|
'encoding' (if Vim is compiled with |+multi_byte| and it is set an 8-bit
|
||||||
encoding) to find the print character encoding file. If VIM is unable to find
|
encoding) to find the print character encoding file. If Vim is unable to find
|
||||||
a character encoding file then it will use the "latin1" print character
|
a character encoding file then it will use the "latin1" print character
|
||||||
encoding file.
|
encoding file.
|
||||||
|
|
||||||
When 'encoding' is set to a multi-byte encoding, VIM will try to convert
|
When 'encoding' is set to a multi-byte encoding, Vim will try to convert
|
||||||
characters to the printing encoding for printing (if 'printencoding' is empty
|
characters to the printing encoding for printing (if 'printencoding' is empty
|
||||||
then the conversion will be to latin1). Conversion to a printing encoding
|
then the conversion will be to latin1). Conversion to a printing encoding
|
||||||
other than latin1 will require VIM to be compiled with the |+iconv| feature.
|
other than latin1 will require Vim to be compiled with the |+iconv| feature.
|
||||||
If no conversion is possible then printing will fail. Any characters that
|
If no conversion is possible then printing will fail. Any characters that
|
||||||
cannot be converted will be replaced with upside down question marks.
|
cannot be converted will be replaced with upside down question marks.
|
||||||
|
|
||||||
@ -186,7 +186,7 @@ header is used when this option is empty.
|
|||||||
'printmbcharset' 'pmbcs' string (default "")
|
'printmbcharset' 'pmbcs' string (default "")
|
||||||
global
|
global
|
||||||
Sets the CJK character set to be used when generating CJK output from
|
Sets the CJK character set to be used when generating CJK output from
|
||||||
|:hardcopy|. The following predefined values are currently recognised by VIM:
|
|:hardcopy|. The following predefined values are currently recognised by Vim:
|
||||||
|
|
||||||
Value Description ~
|
Value Description ~
|
||||||
Chinese GB_2312-80
|
Chinese GB_2312-80
|
||||||
@ -253,7 +253,7 @@ Japanese text you would do the following; >
|
|||||||
|
|
||||||
If 'printmbcharset' is not one of the above values then it is assumed to
|
If 'printmbcharset' is not one of the above values then it is assumed to
|
||||||
specify a custom multi-byte character set and no check will be made that it is
|
specify a custom multi-byte character set and no check will be made that it is
|
||||||
compatible with the value for 'printencoding'. VIM will look for a file
|
compatible with the value for 'printencoding'. Vim will look for a file
|
||||||
defining the character set in the "print" directory in 'runtimepath'.
|
defining the character set in the "print" directory in 'runtimepath'.
|
||||||
|
|
||||||
*pmbfn-option*
|
*pmbfn-option*
|
||||||
@ -403,10 +403,10 @@ There are currently a number of limitations with PostScript printing:
|
|||||||
possible to get all the characters in an encoding to print by installing a
|
possible to get all the characters in an encoding to print by installing a
|
||||||
new version of the Courier font family.
|
new version of the Courier font family.
|
||||||
|
|
||||||
- Multi-byte support - Currently VIM will try to convert multi-byte characters
|
- Multi-byte support - Currently Vim will try to convert multi-byte characters
|
||||||
to the 8-bit encoding specified by 'printencoding' (or latin1 if it is
|
to the 8-bit encoding specified by 'printencoding' (or latin1 if it is
|
||||||
empty). Any characters that are not successfully converted are shown as
|
empty). Any characters that are not successfully converted are shown as
|
||||||
unknown characters. Printing will fail if VIM cannot convert the multi-byte
|
unknown characters. Printing will fail if Vim cannot convert the multi-byte
|
||||||
to the 8-bit encoding.
|
to the 8-bit encoding.
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
@ -417,11 +417,11 @@ you need to define your own PostScript font encoding vector. Details on how
|
|||||||
to define a font encoding vector is beyond the scope of this help file, but
|
to define a font encoding vector is beyond the scope of this help file, but
|
||||||
you can find details in the PostScript Language Reference Manual, 3rd Edition,
|
you can find details in the PostScript Language Reference Manual, 3rd Edition,
|
||||||
published by Addison-Wesley and available in PDF form at
|
published by Addison-Wesley and available in PDF form at
|
||||||
http://www.adobe.com/. The following describes what you need to do for VIM to
|
http://www.adobe.com/. The following describes what you need to do for Vim to
|
||||||
locate and use your print character encoding.
|
locate and use your print character encoding.
|
||||||
|
|
||||||
i. Decide on a unique name for your encoding vector, one that does not clash
|
i. Decide on a unique name for your encoding vector, one that does not clash
|
||||||
with any of the recognized or standard encoding names that VIM uses (see
|
with any of the recognized or standard encoding names that Vim uses (see
|
||||||
|encoding-names| for a list), and that no one else is likely to use.
|
|encoding-names| for a list), and that no one else is likely to use.
|
||||||
ii. Copy $VIMRUNTIME/print/latin1.ps to the print subdirectory in your
|
ii. Copy $VIMRUNTIME/print/latin1.ps to the print subdirectory in your
|
||||||
'runtimepath' and rename it with your unique name.
|
'runtimepath' and rename it with your unique name.
|
||||||
@ -429,23 +429,23 @@ iii. Edit your renamed copy of latin1.ps, replacing all occurrences of latin1
|
|||||||
with your unique name (don't forget the line starting %%Title:), and
|
with your unique name (don't forget the line starting %%Title:), and
|
||||||
modify the array of glyph names to define your new encoding vector. The
|
modify the array of glyph names to define your new encoding vector. The
|
||||||
array must have exactly 256 entries or you will not be able to print!
|
array must have exactly 256 entries or you will not be able to print!
|
||||||
iv. Within VIM, set 'printencoding' to your unique encoding name and then
|
iv. Within Vim, set 'printencoding' to your unique encoding name and then
|
||||||
print your file. VIM will now use your custom print character encoding.
|
print your file. Vim will now use your custom print character encoding.
|
||||||
|
|
||||||
VIM will report an error with the resource file if you change the order or
|
Vim will report an error with the resource file if you change the order or
|
||||||
content of the first 3 lines, other than the name of the encoding on the line
|
content of the first 3 lines, other than the name of the encoding on the line
|
||||||
starting %%Title: or the version number on the line starting %%Version:.
|
starting %%Title: or the version number on the line starting %%Version:.
|
||||||
|
|
||||||
[Technical explanation for those that know PostScript - VIM looks for a file
|
[Technical explanation for those that know PostScript - Vim looks for a file
|
||||||
with the same name as the encoding it will use when printing. The file
|
with the same name as the encoding it will use when printing. The file
|
||||||
defines a new PostScript Encoding resource called /VIM-name, where name is the
|
defines a new PostScript Encoding resource called /VIM-name, where name is the
|
||||||
print character encoding VIM will use.]
|
print character encoding Vim will use.]
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
5. PostScript CJK Printing *postscript-cjk-printing*
|
5. PostScript CJK Printing *postscript-cjk-printing*
|
||||||
*E673* *E674* *E675*
|
*E673* *E674* *E675*
|
||||||
|
|
||||||
VIM supports printing of Chinese, Japanese, and Korean files. Setting up VIM
|
Vim supports printing of Chinese, Japanese, and Korean files. Setting up Vim
|
||||||
to correctly print CJK files requires setting up a few more options.
|
to correctly print CJK files requires setting up a few more options.
|
||||||
|
|
||||||
Each of these countries has many standard character sets and encodings which
|
Each of these countries has many standard character sets and encodings which
|
||||||
@ -466,7 +466,7 @@ option allows you to specify different fonts to use when printing characters
|
|||||||
which are syntax highlighted with the font styles normal, italic, bold and
|
which are syntax highlighted with the font styles normal, italic, bold and
|
||||||
bold-italic.
|
bold-italic.
|
||||||
|
|
||||||
No CJK fonts are supplied with VIM. There are some free Korean, Japanese, and
|
No CJK fonts are supplied with Vim. There are some free Korean, Japanese, and
|
||||||
Traditional Chinese fonts available at:
|
Traditional Chinese fonts available at:
|
||||||
|
|
||||||
http://examples.oreilly.com/cjkvinfo/adobe/samples/
|
http://examples.oreilly.com/cjkvinfo/adobe/samples/
|
||||||
@ -481,7 +481,7 @@ CJK fonts can be large containing several thousand glyphs, and it is not
|
|||||||
uncommon to find that they only contain a subset of a national standard. It
|
uncommon to find that they only contain a subset of a national standard. It
|
||||||
is not unusual to find the fonts to not include characters for codes in the
|
is not unusual to find the fonts to not include characters for codes in the
|
||||||
ASCII code range. If you find half-width Roman characters are not appearing
|
ASCII code range. If you find half-width Roman characters are not appearing
|
||||||
in your printout then you should configure VIM to use the Courier font the
|
in your printout then you should configure Vim to use the Courier font the
|
||||||
half-width ASCII characters with 'printmbfont'. If your font does not include
|
half-width ASCII characters with 'printmbfont'. If your font does not include
|
||||||
other characters then you will need to find another font that does.
|
other characters then you will need to find another font that does.
|
||||||
|
|
||||||
@ -489,7 +489,7 @@ Another issue with ASCII characters, is that the various national character
|
|||||||
sets specify a couple of different glyphs in the ASCII code range. If you
|
sets specify a couple of different glyphs in the ASCII code range. If you
|
||||||
print ASCII text using the national character set you may see some unexpected
|
print ASCII text using the national character set you may see some unexpected
|
||||||
characters. If you want true ASCII code printing then you need to configure
|
characters. If you want true ASCII code printing then you need to configure
|
||||||
VIM to output ASCII characters for the ASCII code range with 'printmbfont'.
|
Vim to output ASCII characters for the ASCII code range with 'printmbfont'.
|
||||||
|
|
||||||
It is possible to define your own multi-byte character set although this
|
It is possible to define your own multi-byte character set although this
|
||||||
should not be attempted lightly. A discussion on the process if beyond the
|
should not be attempted lightly. A discussion on the process if beyond the
|
||||||
@ -508,13 +508,13 @@ print job completing.
|
|||||||
There are a number of possible causes as to why the printing may have failed:
|
There are a number of possible causes as to why the printing may have failed:
|
||||||
|
|
||||||
- Wrong version of the prolog resource file. The prolog resource file
|
- Wrong version of the prolog resource file. The prolog resource file
|
||||||
contains some PostScript that VIM needs to be able to print. Each version
|
contains some PostScript that Vim needs to be able to print. Each version
|
||||||
of VIM needs one particular version. Make sure you have correctly installed
|
of Vim needs one particular version. Make sure you have correctly installed
|
||||||
the runtime files, and don't have any old versions of a file called prolog
|
the runtime files, and don't have any old versions of a file called prolog
|
||||||
in the print directory in your 'runtimepath' directory.
|
in the print directory in your 'runtimepath' directory.
|
||||||
|
|
||||||
- Paper size. Some PostScript printers will abort printing a file if they do
|
- Paper size. Some PostScript printers will abort printing a file if they do
|
||||||
not support the requested paper size. By default VIM uses A4 paper. Find
|
not support the requested paper size. By default Vim uses A4 paper. Find
|
||||||
out what size paper your printer normally uses and set the appropriate paper
|
out what size paper your printer normally uses and set the appropriate paper
|
||||||
size with 'printoptions'. If you cannot find the name of the paper used,
|
size with 'printoptions'. If you cannot find the name of the paper used,
|
||||||
measure a sheet and compare it with the table of supported paper sizes listed
|
measure a sheet and compare it with the table of supported paper sizes listed
|
||||||
@ -645,7 +645,7 @@ complex print document creation.
|
|||||||
|
|
||||||
N-UP PRINTING
|
N-UP PRINTING
|
||||||
|
|
||||||
The psnup utility takes an existing PostScript file generated from VIM and
|
The psnup utility takes an existing PostScript file generated from Vim and
|
||||||
convert it to an n-up version. The simplest way to create a 2-up printout is
|
convert it to an n-up version. The simplest way to create a 2-up printout is
|
||||||
to first create a PostScript file with: >
|
to first create a PostScript file with: >
|
||||||
|
|
||||||
@ -701,16 +701,16 @@ There are a couple of points to bear in mind:
|
|||||||
==============================================================================
|
==============================================================================
|
||||||
8. Formfeed Characters *printing-formfeed*
|
8. Formfeed Characters *printing-formfeed*
|
||||||
|
|
||||||
By default VIM does not do any special processing of |formfeed| control
|
By default Vim does not do any special processing of |formfeed| control
|
||||||
characters. Setting the 'printoptions' formfeed item will make VIM recognize
|
characters. Setting the 'printoptions' formfeed item will make Vim recognize
|
||||||
formfeed characters and continue printing the current line at the beginning
|
formfeed characters and continue printing the current line at the beginning
|
||||||
of the first line on a new page. The use of formfeed characters provides
|
of the first line on a new page. The use of formfeed characters provides
|
||||||
rudimentary print control but there are certain things to be aware of.
|
rudimentary print control but there are certain things to be aware of.
|
||||||
|
|
||||||
VIM will always start printing a line (including a line number if enabled)
|
Vim will always start printing a line (including a line number if enabled)
|
||||||
containing a formfeed character, even if it is the first character on the
|
containing a formfeed character, even if it is the first character on the
|
||||||
line. This means if a line starting with a formfeed character is the first
|
line. This means if a line starting with a formfeed character is the first
|
||||||
line of a page then VIM will print a blank page.
|
line of a page then Vim will print a blank page.
|
||||||
|
|
||||||
Since the line number is printed at the start of printing the line containing
|
Since the line number is printed at the start of printing the line containing
|
||||||
the formfeed character, the remainder of the line printed on the new page
|
the formfeed character, the remainder of the line printed on the new page
|
||||||
@ -719,7 +719,7 @@ lines of a long line when wrap in 'printoptions' is enabled).
|
|||||||
|
|
||||||
If the formfeed character is the last character on a line, then printing will
|
If the formfeed character is the last character on a line, then printing will
|
||||||
continue on the second line of the new page, not the first. This is due to
|
continue on the second line of the new page, not the first. This is due to
|
||||||
VIM processing the end of the line after the formfeed character and moving
|
Vim processing the end of the line after the formfeed character and moving
|
||||||
down a line to continue printing.
|
down a line to continue printing.
|
||||||
|
|
||||||
Due to the points made above it is recommended that when formfeed character
|
Due to the points made above it is recommended that when formfeed character
|
||||||
|
@ -1253,6 +1253,7 @@ Context-sensitive completion on the command-line:
|
|||||||
|
|
||||||
|:sfind| :sf[ind] {file} split window, find {file} in 'path'
|
|:sfind| :sf[ind] {file} split window, find {file} in 'path'
|
||||||
and edit it
|
and edit it
|
||||||
|
|:terminal| :terminal {cmd} open a terminal window
|
||||||
|CTRL-W_]| CTRL-W ] split window and jump to tag under
|
|CTRL-W_]| CTRL-W ] split window and jump to tag under
|
||||||
cursor
|
cursor
|
||||||
|CTRL-W_f| CTRL-W f split window and edit file name under
|
|CTRL-W_f| CTRL-W f split window and edit file name under
|
||||||
|
@ -137,6 +137,7 @@ the description in |eval.txt| or use CTRL-] on the function name to jump to
|
|||||||
the full explanation.
|
the full explanation.
|
||||||
|
|
||||||
synopsis explanation ~
|
synopsis explanation ~
|
||||||
|
remote_startserver( name) run a server
|
||||||
remote_expr( server, string, idvar) send expression
|
remote_expr( server, string, idvar) send expression
|
||||||
remote_send( server, string, idvar) send key sequence
|
remote_send( server, string, idvar) send key sequence
|
||||||
serverlist() get a list of available servers
|
serverlist() get a list of available servers
|
||||||
|
@ -4757,10 +4757,11 @@ ctermbg={color-nr} *highlight-ctermbg*
|
|||||||
Example: >
|
Example: >
|
||||||
:highlight Normal ctermfg=grey ctermbg=darkblue
|
:highlight Normal ctermfg=grey ctermbg=darkblue
|
||||||
< When setting the "ctermbg" color for the Normal group, the
|
< When setting the "ctermbg" color for the Normal group, the
|
||||||
'background' option will be adjusted automatically. This causes the
|
'background' option will be adjusted automatically, under the
|
||||||
highlight groups that depend on 'background' to change! This means
|
condition that the color is recognized and 'background' was not set
|
||||||
you should set the colors for Normal first, before setting other
|
explicitly. This causes the highlight groups that depend on
|
||||||
colors.
|
'background' to change! This means you should set the colors for
|
||||||
|
Normal first, before setting other colors.
|
||||||
When a colorscheme is being used, changing 'background' causes it to
|
When a colorscheme is being used, changing 'background' causes it to
|
||||||
be reloaded, which may reset all colors (including Normal). First
|
be reloaded, which may reset all colors (including Normal). First
|
||||||
delete the "g:colors_name" variable when you don't want this.
|
delete the "g:colors_name" variable when you don't want this.
|
||||||
|
@ -187,7 +187,7 @@ mouse button. The selected text will be inserted.
|
|||||||
The "current selection" will only remain valid until some other text is
|
The "current selection" will only remain valid until some other text is
|
||||||
selected. After doing the paste in the other gVim, now select some characters
|
selected. After doing the paste in the other gVim, now select some characters
|
||||||
in that window. You will notice that the words that were previously selected
|
in that window. You will notice that the words that were previously selected
|
||||||
in the other gVim window are displayed differently. This means that it no
|
in the other gvim window are displayed differently. This means that it no
|
||||||
longer is the current selection.
|
longer is the current selection.
|
||||||
|
|
||||||
You don't need to select text with the mouse, using the keyboard commands for
|
You don't need to select text with the mouse, using the keyboard commands for
|
||||||
@ -211,7 +211,7 @@ USING BOTH
|
|||||||
|
|
||||||
This use of both the "current selection" and the "real clipboard" might sound
|
This use of both the "current selection" and the "real clipboard" might sound
|
||||||
a bit confusing. But it is very useful. Let's show this with an example.
|
a bit confusing. But it is very useful. Let's show this with an example.
|
||||||
Use one gVim with a text file and perform these actions:
|
Use one gvim with a text file and perform these actions:
|
||||||
|
|
||||||
- Select two words in Visual mode.
|
- Select two words in Visual mode.
|
||||||
- Use the Edit/Copy menu to get these words onto the clipboard.
|
- Use the Edit/Copy menu to get these words onto the clipboard.
|
||||||
|
@ -888,6 +888,7 @@ GUI: *gui-functions*
|
|||||||
|
|
||||||
Vim server: *server-functions*
|
Vim server: *server-functions*
|
||||||
serverlist() return the list of server names
|
serverlist() return the list of server names
|
||||||
|
remote_startserve() run a server
|
||||||
remote_send() send command characters to a Vim server
|
remote_send() send command characters to a Vim server
|
||||||
remote_expr() evaluate an expression in a Vim server
|
remote_expr() evaluate an expression in a Vim server
|
||||||
server2client() send a reply to a client of a Vim server
|
server2client() send a reply to a client of a Vim server
|
||||||
@ -2226,8 +2227,8 @@ plugin for the mail filetype: >
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
Two global variables are used:
|
Two global variables are used:
|
||||||
no_plugin_maps disables mappings for all filetype plugins
|
|no_plugin_maps| disables mappings for all filetype plugins
|
||||||
no_mail_maps disables mappings for a specific filetype
|
|no_mail_maps| disables mappings for the "mail" filetype
|
||||||
|
|
||||||
|
|
||||||
USER COMMANDS
|
USER COMMANDS
|
||||||
|
@ -686,7 +686,7 @@ that included files do this too, you might have to reset "b:current_syntax" if
|
|||||||
you include two files.
|
you include two files.
|
||||||
|
|
||||||
If you want your syntax file to work with Vim 5.x, add a check for v:version.
|
If you want your syntax file to work with Vim 5.x, add a check for v:version.
|
||||||
See yacc.vim for an example.
|
Find an syntax file in the Vim 7.2 distribution for an example.
|
||||||
|
|
||||||
Do not include anything that is a user preference. Don't set 'tabstop',
|
Do not include anything that is a user preference. Don't set 'tabstop',
|
||||||
'expandtab', etc. These belong in a filetype plugin.
|
'expandtab', etc. These belong in a filetype plugin.
|
||||||
|
@ -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: 2017 Mar 13
|
" Last Change: 2017 Jul 11
|
||||||
|
|
||||||
" 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")
|
||||||
@ -284,7 +284,8 @@ au BufNewFile,BufRead *.bib setf bib
|
|||||||
au BufNewFile,BufRead *.bst setf bst
|
au BufNewFile,BufRead *.bst setf bst
|
||||||
|
|
||||||
" BIND configuration
|
" BIND configuration
|
||||||
au BufNewFile,BufRead named.conf,rndc.conf setf named
|
" sudoedit uses namedXXXX.conf
|
||||||
|
au BufNewFile,BufRead named*.conf,rndc*.conf setf named
|
||||||
|
|
||||||
" BIND zone
|
" BIND zone
|
||||||
au BufNewFile,BufRead named.root setf bindzone
|
au BufNewFile,BufRead named.root setf bindzone
|
||||||
@ -626,7 +627,13 @@ au BufNewFile,BufRead dict.conf,.dictrc setf dictconf
|
|||||||
au BufNewFile,BufRead dictd.conf setf dictdconf
|
au BufNewFile,BufRead dictd.conf setf dictdconf
|
||||||
|
|
||||||
" Diff files
|
" Diff files
|
||||||
au BufNewFile,BufRead *.diff,*.rej,*.patch setf diff
|
au BufNewFile,BufRead *.diff,*.rej setf diff
|
||||||
|
au BufNewFile,BufRead *.patch
|
||||||
|
\ if getline(1) =~ '^From [0-9a-f]\{40\} Mon Sep 17 00:00:00 2001$' |
|
||||||
|
\ setf gitsendemail |
|
||||||
|
\ else |
|
||||||
|
\ setf diff |
|
||||||
|
\ endif
|
||||||
|
|
||||||
" Dircolors
|
" Dircolors
|
||||||
au BufNewFile,BufRead .dir_colors,.dircolors,*/etc/DIR_COLORS setf dircolors
|
au BufNewFile,BufRead .dir_colors,.dircolors,*/etc/DIR_COLORS setf dircolors
|
||||||
@ -795,6 +802,7 @@ if !empty($XDG_CONFIG_HOME)
|
|||||||
au BufNewFile,BufRead $XDG_CONFIG_HOME/git/config setf gitconfig
|
au BufNewFile,BufRead $XDG_CONFIG_HOME/git/config setf gitconfig
|
||||||
endif
|
endif
|
||||||
au BufNewFile,BufRead git-rebase-todo setf gitrebase
|
au BufNewFile,BufRead git-rebase-todo setf gitrebase
|
||||||
|
au BufRead,BufNewFile .gitsendemail.msg.?????? setf gitsendemail
|
||||||
au BufNewFile,BufRead .msg.[0-9]*
|
au BufNewFile,BufRead .msg.[0-9]*
|
||||||
\ if getline(1) =~ '^From.*# This line is ignored.$' |
|
\ if getline(1) =~ '^From.*# This line is ignored.$' |
|
||||||
\ setf gitsendemail |
|
\ setf gitsendemail |
|
||||||
@ -975,7 +983,7 @@ au BufNewFile,BufRead */etc/initng/*/*.i,*.ii setf initng
|
|||||||
|
|
||||||
" Innovation Data Processing
|
" Innovation Data Processing
|
||||||
au BufRead,BufNewFile upstream.dat\c,upstream.*.dat\c,*.upstream.dat\c setf upstreamdat
|
au BufRead,BufNewFile upstream.dat\c,upstream.*.dat\c,*.upstream.dat\c setf upstreamdat
|
||||||
au BufRead,BufNewFile upstream.log\c,upstream.*.log\c,*.upstream.log\c setf upstreamlog
|
au BufRead,BufNewFile fdrupstream.log,upstream.log\c,upstream.*.log\c,*.upstream.log\c,UPSTREAM-*.log\c setf upstreamlog
|
||||||
au BufRead,BufNewFile upstreaminstall.log\c,upstreaminstall.*.log\c,*.upstreaminstall.log\c setf upstreaminstalllog
|
au BufRead,BufNewFile upstreaminstall.log\c,upstreaminstall.*.log\c,*.upstreaminstall.log\c setf upstreaminstalllog
|
||||||
au BufRead,BufNewFile usserver.log\c,usserver.*.log\c,*.usserver.log\c setf usserverlog
|
au BufRead,BufNewFile usserver.log\c,usserver.*.log\c,*.usserver.log\c setf usserverlog
|
||||||
au BufRead,BufNewFile usw2kagt.log\c,usw2kagt.*.log\c,*.usw2kagt.log\c setf usw2kagtlog
|
au BufRead,BufNewFile usw2kagt.log\c,usw2kagt.*.log\c,*.usw2kagt.log\c setf usw2kagtlog
|
||||||
@ -1413,8 +1421,8 @@ if has("fname_case")
|
|||||||
else
|
else
|
||||||
au BufNewFile,BufRead *.pl call s:FTpl()
|
au BufNewFile,BufRead *.pl call s:FTpl()
|
||||||
endif
|
endif
|
||||||
au BufNewFile,BufRead *.plx,*.al setf perl
|
au BufNewFile,BufRead *.plx,*.al,*.psgi setf perl
|
||||||
au BufNewFile,BufRead *.p6,*.pm6,*.pl6 setf perl6
|
au BufNewFile,BufRead *.p6,*.pm6,*.pl6 setf perl6
|
||||||
|
|
||||||
func! s:FTpl()
|
func! s:FTpl()
|
||||||
if exists("g:filetype_pl")
|
if exists("g:filetype_pl")
|
||||||
@ -1801,6 +1809,9 @@ au BufNewFile,BufRead *.sa setf sather
|
|||||||
" Scala
|
" Scala
|
||||||
au BufNewFile,BufRead *.scala setf scala
|
au BufNewFile,BufRead *.scala setf scala
|
||||||
|
|
||||||
|
" SBT - Scala Build Tool
|
||||||
|
au BufNewFile,BufRead *.sbt setf sbt
|
||||||
|
|
||||||
" Scilab
|
" Scilab
|
||||||
au BufNewFile,BufRead *.sci,*.sce setf scilab
|
au BufNewFile,BufRead *.sci,*.sce setf scilab
|
||||||
|
|
||||||
@ -2127,7 +2138,10 @@ au BufNewFile,BufRead ssh_config,*/.ssh/config setf sshconfig
|
|||||||
au BufNewFile,BufRead sshd_config setf sshdconfig
|
au BufNewFile,BufRead sshd_config setf sshdconfig
|
||||||
|
|
||||||
" Stata
|
" Stata
|
||||||
au BufNewFile,BufRead *.ado,*.class,*.do,*.imata,*.mata setf stata
|
au BufNewFile,BufRead *.ado,*.do,*.imata,*.mata setf stata
|
||||||
|
" Also *.class, but not when it's a Java bytecode file
|
||||||
|
au BufNewFile,BufRead *.class
|
||||||
|
\ if getline(1) !~ "^\xca\xfe\xba\xbe" | setf stata | endif
|
||||||
|
|
||||||
" SMCL
|
" SMCL
|
||||||
au BufNewFile,BufRead *.hlp,*.ihlp,*.smcl setf smcl
|
au BufNewFile,BufRead *.hlp,*.ihlp,*.smcl setf smcl
|
||||||
@ -2222,6 +2236,8 @@ func! s:FTtex()
|
|||||||
let format = tolower(matchstr(firstline, '\a\+'))
|
let format = tolower(matchstr(firstline, '\a\+'))
|
||||||
let format = substitute(format, 'pdf', '', '')
|
let format = substitute(format, 'pdf', '', '')
|
||||||
if format == 'tex'
|
if format == 'tex'
|
||||||
|
let format = 'latex'
|
||||||
|
elseif format == 'plaintex'
|
||||||
let format = 'plain'
|
let format = 'plain'
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
" Language: Hamster Script
|
" Language: Hamster Script
|
||||||
" Version: 2.0.6.0
|
" Version: 2.0.6.0
|
||||||
" Maintainer: David Fishburn <dfishburn dot vim at gmail dot com>
|
" Maintainer: David Fishburn <dfishburn dot vim at gmail dot com>
|
||||||
" Last Change: 2017 Mar 07
|
" Last Change: 2017 Mar 18
|
||||||
|
|
||||||
" 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")
|
||||||
@ -14,7 +14,6 @@ let b:did_ftplugin = 1
|
|||||||
|
|
||||||
let s:cpo_save = &cpo
|
let s:cpo_save = &cpo
|
||||||
set cpo&vim
|
set cpo&vim
|
||||||
set cpo-=C
|
|
||||||
|
|
||||||
let b:undo_ftplugin = "setl fo< com< tw< commentstring<"
|
let b:undo_ftplugin = "setl fo< com< tw< commentstring<"
|
||||||
\ . "| unlet! b:match_ignorecase b:match_words b:match_skip"
|
\ . "| unlet! b:match_ignorecase b:match_words b:match_skip"
|
||||||
|
197
runtime/ftplugin/rust.vim
Normal file
197
runtime/ftplugin/rust.vim
Normal file
@ -0,0 +1,197 @@
|
|||||||
|
" Language: Rust
|
||||||
|
" Description: Vim ftplugin for Rust
|
||||||
|
" Maintainer: Chris Morgan <me@chrismorgan.info>
|
||||||
|
" Maintainer: Kevin Ballard <kevin@sb.org>
|
||||||
|
" Last Change: June 08, 2016
|
||||||
|
" For bugs, patches and license go to https://github.com/rust-lang/rust.vim
|
||||||
|
|
||||||
|
if exists("b:did_ftplugin")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
let s:save_cpo = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
augroup rust.vim
|
||||||
|
autocmd!
|
||||||
|
|
||||||
|
" Variables {{{1
|
||||||
|
|
||||||
|
" The rust source code at present seems to typically omit a leader on /*!
|
||||||
|
" comments, so we'll use that as our default, but make it easy to switch.
|
||||||
|
" This does not affect indentation at all (I tested it with and without
|
||||||
|
" leader), merely whether a leader is inserted by default or not.
|
||||||
|
if exists("g:rust_bang_comment_leader") && g:rust_bang_comment_leader != 0
|
||||||
|
" Why is the `,s0:/*,mb:\ ,ex:*/` there, you ask? I don't understand why,
|
||||||
|
" but without it, */ gets indented one space even if there were no
|
||||||
|
" leaders. I'm fairly sure that's a Vim bug.
|
||||||
|
setlocal comments=s1:/*,mb:*,ex:*/,s0:/*,mb:\ ,ex:*/,:///,://!,://
|
||||||
|
else
|
||||||
|
setlocal comments=s0:/*!,m:\ ,ex:*/,s1:/*,mb:*,ex:*/,:///,://!,://
|
||||||
|
endif
|
||||||
|
setlocal commentstring=//%s
|
||||||
|
setlocal formatoptions-=t formatoptions+=croqnl
|
||||||
|
" j was only added in 7.3.541, so stop complaints about its nonexistence
|
||||||
|
silent! setlocal formatoptions+=j
|
||||||
|
|
||||||
|
" smartindent will be overridden by indentexpr if filetype indent is on, but
|
||||||
|
" otherwise it's better than nothing.
|
||||||
|
setlocal smartindent nocindent
|
||||||
|
|
||||||
|
if !exists("g:rust_recommended_style") || g:rust_recommended_style != 0
|
||||||
|
setlocal tabstop=4 shiftwidth=4 softtabstop=4 expandtab
|
||||||
|
setlocal textwidth=99
|
||||||
|
endif
|
||||||
|
|
||||||
|
" This includeexpr isn't perfect, but it's a good start
|
||||||
|
setlocal includeexpr=substitute(v:fname,'::','/','g')
|
||||||
|
|
||||||
|
setlocal suffixesadd=.rs
|
||||||
|
|
||||||
|
if exists("g:ftplugin_rust_source_path")
|
||||||
|
let &l:path=g:ftplugin_rust_source_path . ',' . &l:path
|
||||||
|
endif
|
||||||
|
|
||||||
|
if exists("g:loaded_delimitMate")
|
||||||
|
if exists("b:delimitMate_excluded_regions")
|
||||||
|
let b:rust_original_delimitMate_excluded_regions = b:delimitMate_excluded_regions
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:delimitMate_extra_excluded_regions = ',rustLifetimeCandidate,rustGenericLifetimeCandidate'
|
||||||
|
|
||||||
|
" For this buffer, when delimitMate issues the `User delimitMate_map`
|
||||||
|
" event in the autocommand system, add the above-defined extra excluded
|
||||||
|
" regions to delimitMate's state, if they have not already been added.
|
||||||
|
autocmd User <buffer>
|
||||||
|
\ if expand('<afile>') ==# 'delimitMate_map' && match(
|
||||||
|
\ delimitMate#Get("excluded_regions"),
|
||||||
|
\ s:delimitMate_extra_excluded_regions) == -1
|
||||||
|
\| let b:delimitMate_excluded_regions =
|
||||||
|
\ delimitMate#Get("excluded_regions")
|
||||||
|
\ . s:delimitMate_extra_excluded_regions
|
||||||
|
\|endif
|
||||||
|
|
||||||
|
" For this buffer, when delimitMate issues the `User delimitMate_unmap`
|
||||||
|
" event in the autocommand system, delete the above-defined extra excluded
|
||||||
|
" regions from delimitMate's state (the deletion being idempotent and
|
||||||
|
" having no effect if the extra excluded regions are not present in the
|
||||||
|
" targeted part of delimitMate's state).
|
||||||
|
autocmd User <buffer>
|
||||||
|
\ if expand('<afile>') ==# 'delimitMate_unmap'
|
||||||
|
\| let b:delimitMate_excluded_regions = substitute(
|
||||||
|
\ delimitMate#Get("excluded_regions"),
|
||||||
|
\ '\C\V' . s:delimitMate_extra_excluded_regions,
|
||||||
|
\ '', 'g')
|
||||||
|
\|endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if has("folding") && exists('g:rust_fold') && g:rust_fold != 0
|
||||||
|
let b:rust_set_foldmethod=1
|
||||||
|
setlocal foldmethod=syntax
|
||||||
|
if g:rust_fold == 2
|
||||||
|
setlocal foldlevel<
|
||||||
|
else
|
||||||
|
setlocal foldlevel=99
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if has('conceal') && exists('g:rust_conceal') && g:rust_conceal != 0
|
||||||
|
let b:rust_set_conceallevel=1
|
||||||
|
setlocal conceallevel=2
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Motion Commands {{{1
|
||||||
|
|
||||||
|
" Bind motion commands to support hanging indents
|
||||||
|
nnoremap <silent> <buffer> [[ :call rust#Jump('n', 'Back')<CR>
|
||||||
|
nnoremap <silent> <buffer> ]] :call rust#Jump('n', 'Forward')<CR>
|
||||||
|
xnoremap <silent> <buffer> [[ :call rust#Jump('v', 'Back')<CR>
|
||||||
|
xnoremap <silent> <buffer> ]] :call rust#Jump('v', 'Forward')<CR>
|
||||||
|
onoremap <silent> <buffer> [[ :call rust#Jump('o', 'Back')<CR>
|
||||||
|
onoremap <silent> <buffer> ]] :call rust#Jump('o', 'Forward')<CR>
|
||||||
|
|
||||||
|
" Commands {{{1
|
||||||
|
|
||||||
|
" See |:RustRun| for docs
|
||||||
|
command! -nargs=* -complete=file -bang -buffer RustRun call rust#Run(<bang>0, <q-args>)
|
||||||
|
|
||||||
|
" See |:RustExpand| for docs
|
||||||
|
command! -nargs=* -complete=customlist,rust#CompleteExpand -bang -buffer RustExpand call rust#Expand(<bang>0, <q-args>)
|
||||||
|
|
||||||
|
" See |:RustEmitIr| for docs
|
||||||
|
command! -nargs=* -buffer RustEmitIr call rust#Emit("llvm-ir", <q-args>)
|
||||||
|
|
||||||
|
" See |:RustEmitAsm| for docs
|
||||||
|
command! -nargs=* -buffer RustEmitAsm call rust#Emit("asm", <q-args>)
|
||||||
|
|
||||||
|
" See |:RustPlay| for docs
|
||||||
|
command! -range=% RustPlay :call rust#Play(<count>, <line1>, <line2>, <f-args>)
|
||||||
|
|
||||||
|
" See |:RustFmt| for docs
|
||||||
|
command! -buffer RustFmt call rustfmt#Format()
|
||||||
|
|
||||||
|
" See |:RustFmtRange| for docs
|
||||||
|
command! -range -buffer RustFmtRange call rustfmt#FormatRange(<line1>, <line2>)
|
||||||
|
|
||||||
|
" Mappings {{{1
|
||||||
|
|
||||||
|
" Bind ⌘R in MacVim to :RustRun
|
||||||
|
nnoremap <silent> <buffer> <D-r> :RustRun<CR>
|
||||||
|
" Bind ⌘⇧R in MacVim to :RustRun! pre-filled with the last args
|
||||||
|
nnoremap <buffer> <D-R> :RustRun! <C-r>=join(b:rust_last_rustc_args)<CR><C-\>erust#AppendCmdLine(' -- ' . join(b:rust_last_args))<CR>
|
||||||
|
|
||||||
|
if !exists("b:rust_last_rustc_args") || !exists("b:rust_last_args")
|
||||||
|
let b:rust_last_rustc_args = []
|
||||||
|
let b:rust_last_args = []
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Cleanup {{{1
|
||||||
|
|
||||||
|
let b:undo_ftplugin = "
|
||||||
|
\ setlocal formatoptions< comments< commentstring< includeexpr< suffixesadd<
|
||||||
|
\|setlocal tabstop< shiftwidth< softtabstop< expandtab< textwidth<
|
||||||
|
\|if exists('b:rust_original_delimitMate_excluded_regions')
|
||||||
|
\|let b:delimitMate_excluded_regions = b:rust_original_delimitMate_excluded_regions
|
||||||
|
\|unlet b:rust_original_delimitMate_excluded_regions
|
||||||
|
\|else
|
||||||
|
\|unlet! b:delimitMate_excluded_regions
|
||||||
|
\|endif
|
||||||
|
\|if exists('b:rust_set_foldmethod')
|
||||||
|
\|setlocal foldmethod< foldlevel<
|
||||||
|
\|unlet b:rust_set_foldmethod
|
||||||
|
\|endif
|
||||||
|
\|if exists('b:rust_set_conceallevel')
|
||||||
|
\|setlocal conceallevel<
|
||||||
|
\|unlet b:rust_set_conceallevel
|
||||||
|
\|endif
|
||||||
|
\|unlet! b:rust_last_rustc_args b:rust_last_args
|
||||||
|
\|delcommand RustRun
|
||||||
|
\|delcommand RustExpand
|
||||||
|
\|delcommand RustEmitIr
|
||||||
|
\|delcommand RustEmitAsm
|
||||||
|
\|delcommand RustPlay
|
||||||
|
\|nunmap <buffer> <D-r>
|
||||||
|
\|nunmap <buffer> <D-R>
|
||||||
|
\|nunmap <buffer> [[
|
||||||
|
\|nunmap <buffer> ]]
|
||||||
|
\|xunmap <buffer> [[
|
||||||
|
\|xunmap <buffer> ]]
|
||||||
|
\|ounmap <buffer> [[
|
||||||
|
\|ounmap <buffer> ]]
|
||||||
|
\|set matchpairs-=<:>
|
||||||
|
\"
|
||||||
|
|
||||||
|
" }}}1
|
||||||
|
|
||||||
|
" Code formatting on save
|
||||||
|
if get(g:, "rustfmt_autosave", 0)
|
||||||
|
autocmd BufWritePre *.rs silent! call rustfmt#Format()
|
||||||
|
endif
|
||||||
|
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
let &cpo = s:save_cpo
|
||||||
|
unlet s:save_cpo
|
||||||
|
|
||||||
|
" vim: set noet sw=8 ts=8:
|
15
runtime/ftplugin/sbt.vim
Normal file
15
runtime/ftplugin/sbt.vim
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
" Vim filetype plugin file
|
||||||
|
" Language: sbt
|
||||||
|
" Maintainer: Steven Dobay <stevendobay at protonmail.com>
|
||||||
|
" License: Same as Vim
|
||||||
|
" Last Change: 2017.04.30
|
||||||
|
" ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if exists('b:did_ftplugin') || &cp
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
runtime! ftplugin/scala.vim
|
||||||
|
|
@ -87,7 +87,7 @@ function s:MainBlockIndent (prev_indent, prev_lnum, blockstart, stop_at)
|
|||||||
endwhile
|
endwhile
|
||||||
endwhile
|
endwhile
|
||||||
" Fallback - just move back one
|
" Fallback - just move back one
|
||||||
return a:prev_indent - &sw
|
return a:prev_indent - shiftwidth()
|
||||||
endfunction MainBlockIndent
|
endfunction MainBlockIndent
|
||||||
|
|
||||||
" Section: s:EndBlockIndent {{{1
|
" Section: s:EndBlockIndent {{{1
|
||||||
@ -131,7 +131,7 @@ function s:EndBlockIndent( prev_indent, prev_lnum, blockstart, blockend )
|
|||||||
endwhile
|
endwhile
|
||||||
endwhile
|
endwhile
|
||||||
" Fallback - just move back one
|
" Fallback - just move back one
|
||||||
return a:prev_indent - &sw
|
return a:prev_indent - shiftwidth()
|
||||||
endfunction EndBlockIndent
|
endfunction EndBlockIndent
|
||||||
|
|
||||||
" Section: s:StatementIndent {{{1
|
" Section: s:StatementIndent {{{1
|
||||||
@ -213,15 +213,15 @@ function GetAdaIndent()
|
|||||||
endif
|
endif
|
||||||
" Move indent in
|
" Move indent in
|
||||||
if ! false_match
|
if ! false_match
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
elseif line =~ '^\s*\(case\|exception\)\>'
|
elseif line =~ '^\s*\(case\|exception\)\>'
|
||||||
" Move indent in twice (next 'when' will move back)
|
" Move indent in twice (next 'when' will move back)
|
||||||
let ind = ind + 2 * &sw
|
let ind = ind + 2 * shiftwidth()
|
||||||
elseif line =~ '^\s*end\s*record\>'
|
elseif line =~ '^\s*end\s*record\>'
|
||||||
" Move indent back to tallying 'type' preceding the 'record'.
|
" Move indent back to tallying 'type' preceeding the 'record'.
|
||||||
" Allow indent to be equal to 'end record's.
|
" Allow indent to be equal to 'end record's.
|
||||||
let ind = s:MainBlockIndent( ind+&sw, lnum, 'type\>', '' )
|
let ind = s:MainBlockIndent( ind+shiftwidth(), lnum, 'type\>', '' )
|
||||||
elseif line =~ '\(^\s*new\>.*\)\@<!)\s*[;,]\s*$'
|
elseif line =~ '\(^\s*new\>.*\)\@<!)\s*[;,]\s*$'
|
||||||
" Revert to indent of line that started this parenthesis pair
|
" Revert to indent of line that started this parenthesis pair
|
||||||
exe lnum
|
exe lnum
|
||||||
@ -235,10 +235,10 @@ function GetAdaIndent()
|
|||||||
exe v:lnum
|
exe v:lnum
|
||||||
elseif line =~ '[.=(]\s*$'
|
elseif line =~ '[.=(]\s*$'
|
||||||
" A statement continuation - move in one
|
" A statement continuation - move in one
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
elseif line =~ '^\s*new\>'
|
elseif line =~ '^\s*new\>'
|
||||||
" Multiple line generic instantiation ('package blah is\nnew thingy')
|
" Multiple line generic instantiation ('package blah is\nnew thingy')
|
||||||
let ind = s:StatementIndent( ind - &sw, lnum )
|
let ind = s:StatementIndent( ind - shiftwidth(), lnum )
|
||||||
elseif line =~ ';\s*$'
|
elseif line =~ ';\s*$'
|
||||||
" Statement end (but not 'end' ) - try to find current statement-start indent
|
" Statement end (but not 'end' ) - try to find current statement-start indent
|
||||||
let ind = s:StatementIndent( ind, lnum )
|
let ind = s:StatementIndent( ind, lnum )
|
||||||
@ -256,17 +256,17 @@ function GetAdaIndent()
|
|||||||
elseif continuation && line =~ '^\s*('
|
elseif continuation && line =~ '^\s*('
|
||||||
" Don't do this if we've already indented due to the previous line
|
" Don't do this if we've already indented due to the previous line
|
||||||
if ind == initind
|
if ind == initind
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
elseif line =~ '^\s*\(begin\|is\)\>'
|
elseif line =~ '^\s*\(begin\|is\)\>'
|
||||||
let ind = s:MainBlockIndent( ind, lnum, '\(procedure\|function\|declare\|package\|task\)\>', 'begin\>' )
|
let ind = s:MainBlockIndent( ind, lnum, '\(procedure\|function\|declare\|package\|task\)\>', 'begin\>' )
|
||||||
elseif line =~ '^\s*record\>'
|
elseif line =~ '^\s*record\>'
|
||||||
let ind = s:MainBlockIndent( ind, lnum, 'type\>\|for\>.*\<use\>', '' ) + &sw
|
let ind = s:MainBlockIndent( ind, lnum, 'type\>\|for\>.*\<use\>', '' ) + shiftwidth()
|
||||||
elseif line =~ '^\s*\(else\|elsif\)\>'
|
elseif line =~ '^\s*\(else\|elsif\)\>'
|
||||||
let ind = s:MainBlockIndent( ind, lnum, 'if\>', '' )
|
let ind = s:MainBlockIndent( ind, lnum, 'if\>', '' )
|
||||||
elseif line =~ '^\s*when\>'
|
elseif line =~ '^\s*when\>'
|
||||||
" Align 'when' one /in/ from matching block start
|
" Align 'when' one /in/ from matching block start
|
||||||
let ind = s:MainBlockIndent( ind, lnum, '\(case\|exception\)\>', '' ) + &sw
|
let ind = s:MainBlockIndent( ind, lnum, '\(case\|exception\)\>', '' ) + shiftwidth()
|
||||||
elseif line =~ '^\s*end\>\s*\<if\>'
|
elseif line =~ '^\s*end\>\s*\<if\>'
|
||||||
" End of if statements
|
" End of if statements
|
||||||
let ind = s:EndBlockIndent( ind, lnum, 'if\>', 'end\>\s*\<if\>' )
|
let ind = s:EndBlockIndent( ind, lnum, 'if\>', 'end\>\s*\<if\>' )
|
||||||
|
@ -60,7 +60,7 @@ function! GetAwkIndent()
|
|||||||
" 'pattern { action }' (simple check match on /{/ increases the indent then)
|
" 'pattern { action }' (simple check match on /{/ increases the indent then)
|
||||||
|
|
||||||
if s:Get_brace_balance( prev_data, '{', '}' ) > 0
|
if s:Get_brace_balance( prev_data, '{', '}' ) > 0
|
||||||
return ind + &sw
|
return ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let brace_balance = s:Get_brace_balance( prev_data, '(', ')' )
|
let brace_balance = s:Get_brace_balance( prev_data, '(', ')' )
|
||||||
@ -99,7 +99,7 @@ function! GetAwkIndent()
|
|||||||
return s:Safe_indent( ind, s:First_word_len(prev_data), getline(v:lnum))
|
return s:Safe_indent( ind, s:First_word_len(prev_data), getline(v:lnum))
|
||||||
else
|
else
|
||||||
" if/for/while without '{'
|
" if/for/while without '{'
|
||||||
return ind + &sw
|
return ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@ -140,7 +140,7 @@ function! GetAwkIndent()
|
|||||||
|
|
||||||
" Decrease indent if this line contains a '}'.
|
" Decrease indent if this line contains a '}'.
|
||||||
if getline(v:lnum) =~ '^\s*}'
|
if getline(v:lnum) =~ '^\s*}'
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return ind
|
return ind
|
||||||
|
@ -69,7 +69,7 @@ function! GetBstIndent(lnum) abort
|
|||||||
endif
|
endif
|
||||||
let fakeline = substitute(line,'^}','','').matchstr(cline,'^}')
|
let fakeline = substitute(line,'^}','','').matchstr(cline,'^}')
|
||||||
let ind = indent(lnum)
|
let ind = indent(lnum)
|
||||||
let ind = ind + &sw * s:count(line,'{')
|
let ind = ind + shiftwidth() * s:count(line,'{')
|
||||||
let ind = ind - &sw * s:count(fakeline,'}')
|
let ind = ind - shiftwidth() * s:count(fakeline,'}')
|
||||||
return ind
|
return ind
|
||||||
endfunction
|
endfunction
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
" Vim indent file
|
" Vim indent file
|
||||||
" Language: Bazel (http://bazel.io)
|
" Language: Bazel (http://bazel.io)
|
||||||
" Maintainer: David Barnett (https://github.com/google/vim-ft-bzl)
|
" Maintainer: David Barnett (https://github.com/google/vim-ft-bzl)
|
||||||
" Last Change: 2015 Aug 11
|
" Last Change: 2017 Jun 13
|
||||||
|
|
||||||
if exists('b:did_indent')
|
if exists('b:did_indent')
|
||||||
finish
|
finish
|
||||||
@ -41,11 +41,8 @@ function GetBzlIndent(lnum) abort
|
|||||||
if exists('g:pyindent_open_paren')
|
if exists('g:pyindent_open_paren')
|
||||||
let l:pyindent_open_paren = g:pyindent_open_paren
|
let l:pyindent_open_paren = g:pyindent_open_paren
|
||||||
endif
|
endif
|
||||||
" Vim 7.3.693 and later defines a shiftwidth() function to get the effective
|
let g:pyindent_nested_paren = 'shiftwidth() * 2'
|
||||||
" shiftwidth value. Fall back to &shiftwidth if the function doesn't exist.
|
let g:pyindent_open_paren = 'shiftwidth() * 2'
|
||||||
let l:sw_expr = exists('*shiftwidth') ? 'shiftwidth()' : '&shiftwidth'
|
|
||||||
let g:pyindent_nested_paren = l:sw_expr . ' * 2'
|
|
||||||
let g:pyindent_open_paren = l:sw_expr . ' * 2'
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let l:indent = -1
|
let l:indent = -1
|
||||||
|
@ -47,7 +47,7 @@ fun! CdlGetIndent(lnum)
|
|||||||
let thisline = getline(a:lnum)
|
let thisline = getline(a:lnum)
|
||||||
if match(thisline, '^\s*\(\k\+\|\[[^]]*]\)\s*\(,\|;\s*$\)') >= 0
|
if match(thisline, '^\s*\(\k\+\|\[[^]]*]\)\s*\(,\|;\s*$\)') >= 0
|
||||||
" it's an attributes line
|
" it's an attributes line
|
||||||
return &sw
|
return shiftwidth()
|
||||||
elseif match(thisline, '^\c\s*\([{}]\|\/[*/]\|dimension\|schedule\|group\|hierarchy\|class\)') >= 0
|
elseif match(thisline, '^\c\s*\([{}]\|\/[*/]\|dimension\|schedule\|group\|hierarchy\|class\)') >= 0
|
||||||
" it's a header or '{' or '}' or a comment
|
" it's a header or '{' or '}' or a comment
|
||||||
return 0
|
return 0
|
||||||
@ -71,13 +71,13 @@ fun! CdlGetIndent(lnum)
|
|||||||
let c = line[inicio-1]
|
let c = line[inicio-1]
|
||||||
" ')' and '=' don't change indent and are useless to set 'f'
|
" ')' and '=' don't change indent and are useless to set 'f'
|
||||||
if c == '{'
|
if c == '{'
|
||||||
return &sw
|
return shiftwidth()
|
||||||
elseif c != ')' && c != '='
|
elseif c != ')' && c != '='
|
||||||
let f = 1 " all but 'elseif' are followed by a formula
|
let f = 1 " all but 'elseif' are followed by a formula
|
||||||
if c ==? 'n' || c ==? 'e' " 'then', 'else'
|
if c ==? 'n' || c ==? 'e' " 'then', 'else'
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
elseif strpart(line, inicio-6, 6) ==? 'elseif' " elseif, set f to conditional
|
elseif strpart(line, inicio-6, 6) ==? 'elseif' " elseif, set f to conditional
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
let f = 0
|
let f = 0
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -98,16 +98,16 @@ fun! CdlGetIndent(lnum)
|
|||||||
let ind = 0
|
let ind = 0
|
||||||
let f = 1
|
let f = 1
|
||||||
elseif c == ')' || c== ';' || strpart(line, inicio-5, 5) ==? 'endif'
|
elseif c == ')' || c== ';' || strpart(line, inicio-5, 5) ==? 'endif'
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
elseif c == '(' || c ==? 'f' " '(' or 'if'
|
elseif c == '(' || c ==? 'f' " '(' or 'if'
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
else " c == '='
|
else " c == '='
|
||||||
" if it is an asignment increase indent
|
" if it is an asignment increase indent
|
||||||
if f == -1 " we don't know yet, find out
|
if f == -1 " we don't know yet, find out
|
||||||
let f = CdlAsignment(lnum, strpart(line, 0, inicio))
|
let f = CdlAsignment(lnum, strpart(line, 0, inicio))
|
||||||
end
|
end
|
||||||
if f == 1 " formula increase it
|
if f == 1 " formula increase it
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
endw
|
endw
|
||||||
@ -115,13 +115,13 @@ fun! CdlGetIndent(lnum)
|
|||||||
" CURRENT LINE, if it starts with a closing element, decrease indent
|
" CURRENT LINE, if it starts with a closing element, decrease indent
|
||||||
" or if it starts with '=' (asignment), increase indent
|
" or if it starts with '=' (asignment), increase indent
|
||||||
if match(thisline, '^\c\s*\(else\|then\|endif\|[);]\)') >= 0
|
if match(thisline, '^\c\s*\(else\|then\|endif\|[);]\)') >= 0
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
elseif match(thisline, '^\s*=') >= 0
|
elseif match(thisline, '^\s*=') >= 0
|
||||||
if f == -1 " we don't know yet if is an asignment, find out
|
if f == -1 " we don't know yet if is an asignment, find out
|
||||||
let f = CdlAsignment(lnum, "")
|
let f = CdlAsignment(lnum, "")
|
||||||
end
|
end
|
||||||
if f == 1 " formula increase it
|
if f == 1 " formula increase it
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -31,19 +31,19 @@ function! GetChaiScriptIndent()
|
|||||||
let flag = 0
|
let flag = 0
|
||||||
let prevline = getline(lnum)
|
let prevline = getline(lnum)
|
||||||
if prevline =~ '^.*{.*'
|
if prevline =~ '^.*{.*'
|
||||||
let ind = ind + &shiftwidth
|
let ind = ind + shiftwidth()
|
||||||
let flag = 1
|
let flag = 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Subtract a 'shiftwidth' after lines containing a { followed by a }
|
" Subtract a 'shiftwidth' after lines containing a { followed by a }
|
||||||
" to keep it balanced
|
" to keep it balanced
|
||||||
if flag == 1 && prevline =~ '.*{.*}.*'
|
if flag == 1 && prevline =~ '.*{.*}.*'
|
||||||
let ind = ind - &shiftwidth
|
let ind = ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Subtract a 'shiftwidth' on lines ending with }
|
" Subtract a 'shiftwidth' on lines ending with }
|
||||||
if getline(v:lnum) =~ '^\s*\%(}\)'
|
if getline(v:lnum) =~ '^\s*\%(}\)'
|
||||||
let ind = ind - &shiftwidth
|
let ind = ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return ind
|
return ind
|
||||||
|
@ -261,7 +261,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)
|
||||||
@ -299,19 +299,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')
|
||||||
|
@ -68,19 +68,19 @@ fun! CMakeGetIndent(lnum)
|
|||||||
let ind = ind
|
let ind = ind
|
||||||
else
|
else
|
||||||
if previous_line =~? cmake_indent_begin_regex
|
if previous_line =~? cmake_indent_begin_regex
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
if previous_line =~? cmake_indent_open_regex
|
if previous_line =~? cmake_indent_open_regex
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Subtract
|
" Subtract
|
||||||
if this_line =~? cmake_indent_end_regex
|
if this_line =~? cmake_indent_end_regex
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
if previous_line =~? cmake_indent_close_regex
|
if previous_line =~? cmake_indent_close_regex
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return ind
|
return ind
|
||||||
|
@ -52,11 +52,11 @@ function! s:optionalblock(lnum,ind,blocks,clauses)
|
|||||||
if getline(lastclause) =~? clauses && s:stripped(lastclause) !~? '^'.begin
|
if getline(lastclause) =~? clauses && s:stripped(lastclause) !~? '^'.begin
|
||||||
let ind = indent(lastclause)
|
let ind = indent(lastclause)
|
||||||
elseif lastclause > 0
|
elseif lastclause > 0
|
||||||
let ind = indent(lastclause) + &sw
|
let ind = indent(lastclause) + shiftwidth()
|
||||||
"let ind = ind + &sw
|
"let ind = ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
elseif line =~? clauses && cline !~? end
|
elseif line =~? clauses && cline !~? end
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
return ind
|
return ind
|
||||||
endfunction
|
endfunction
|
||||||
@ -98,8 +98,8 @@ function! GetCobolIndent(lnum) abort
|
|||||||
let num = matchstr(line,'^\s*\zs\d\+\>')
|
let num = matchstr(line,'^\s*\zs\d\+\>')
|
||||||
if 0+cnum == num
|
if 0+cnum == num
|
||||||
return lindent
|
return lindent
|
||||||
elseif 0+cnum > num && default < lindent + &sw
|
elseif 0+cnum > num && default < lindent + shiftwidth()
|
||||||
let default = lindent + &sw
|
let default = lindent + shiftwidth()
|
||||||
endif
|
endif
|
||||||
elseif lindent < bshft && lindent >= ashft
|
elseif lindent < bshft && lindent >= ashft
|
||||||
break
|
break
|
||||||
@ -135,13 +135,13 @@ function! GetCobolIndent(lnum) abort
|
|||||||
if line =~? '^PERFORM\>'
|
if line =~? '^PERFORM\>'
|
||||||
let perfline = substitute(line, '\c^PERFORM\s*', "", "")
|
let perfline = substitute(line, '\c^PERFORM\s*', "", "")
|
||||||
if perfline =~? '^\%(\k\+\s\+TIMES\)\=\s*$'
|
if perfline =~? '^\%(\k\+\s\+TIMES\)\=\s*$'
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
elseif perfline =~? '^\%(WITH\s\+TEST\|VARYING\|UNTIL\)\>.*[^.]$'
|
elseif perfline =~? '^\%(WITH\s\+TEST\|VARYING\|UNTIL\)\>.*[^.]$'
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
if line =~? '^\%(IF\|THEN\|ELSE\|READ\|EVALUATE\|SEARCH\|SELECT\)\>'
|
if line =~? '^\%(IF\|THEN\|ELSE\|READ\|EVALUATE\|SEARCH\|SELECT\)\>'
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
let ind = s:optionalblock(a:lnum,ind,'ADD\|COMPUTE\|DIVIDE\|MULTIPLY\|SUBTRACT','ON\s\+SIZE\s\+ERROR')
|
let ind = s:optionalblock(a:lnum,ind,'ADD\|COMPUTE\|DIVIDE\|MULTIPLY\|SUBTRACT','ON\s\+SIZE\s\+ERROR')
|
||||||
let ind = s:optionalblock(a:lnum,ind,'STRING\|UNSTRING\|ACCEPT\|DISPLAY\|CALL','ON\s\+OVERFLOW\|ON\s\+EXCEPTION')
|
let ind = s:optionalblock(a:lnum,ind,'STRING\|UNSTRING\|ACCEPT\|DISPLAY\|CALL','ON\s\+OVERFLOW\|ON\s\+EXCEPTION')
|
||||||
@ -157,10 +157,10 @@ function! GetCobolIndent(lnum) abort
|
|||||||
"&& s:stripped(lastclause) !~? '^\%(SEARCH\|EVALUATE\|READ\)\>'
|
"&& s:stripped(lastclause) !~? '^\%(SEARCH\|EVALUATE\|READ\)\>'
|
||||||
let ind = indent(lastclause)
|
let ind = indent(lastclause)
|
||||||
elseif lastclause > 0
|
elseif lastclause > 0
|
||||||
let ind = indent(lastclause) + &sw
|
let ind = indent(lastclause) + shiftwidth()
|
||||||
endif
|
endif
|
||||||
elseif line =~? '^WHEN\>'
|
elseif line =~? '^WHEN\>'
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
"I'm not sure why I had this
|
"I'm not sure why I had this
|
||||||
"if line =~? '^ELSE\>-\@!' && line !~? '\.$'
|
"if line =~? '^ELSE\>-\@!' && line !~? '\.$'
|
||||||
@ -168,7 +168,7 @@ function! GetCobolIndent(lnum) abort
|
|||||||
"endif
|
"endif
|
||||||
if cline =~? '^\(END\)\>-\@!'
|
if cline =~? '^\(END\)\>-\@!'
|
||||||
" On lines with just END, 'guess' a simple shift left
|
" On lines with just END, 'guess' a simple shift left
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
elseif cline =~? '^\(END-IF\|THEN\|ELSE\)\>-\@!'
|
elseif cline =~? '^\(END-IF\|THEN\|ELSE\)\>-\@!'
|
||||||
call cursor(a:lnum,indent(a:lnum))
|
call cursor(a:lnum,indent(a:lnum))
|
||||||
let match = searchpair('\c-\@<!\<IF\>','\c-\@<!\%(THEN\|ELSE\)\>','\c-\@<!\<END-IF\>\zs','bnW',s:skip)
|
let match = searchpair('\c-\@<!\<IF\>','\c-\@<!\%(THEN\|ELSE\)\>','\c-\@<!\<END-IF\>\zs','bnW',s:skip)
|
||||||
@ -209,7 +209,7 @@ function! GetCobolIndent(lnum) abort
|
|||||||
if match > 0
|
if match > 0
|
||||||
let ind = indent(match)
|
let ind = indent(match)
|
||||||
elseif cline =~? '^\(END-\(READ\|EVALUATE\|SEARCH\|PERFORM\)\)\>'
|
elseif cline =~? '^\(END-\(READ\|EVALUATE\|SEARCH\|PERFORM\)\)\>'
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
return ind < bshft ? bshft : ind
|
return ind < bshft ? bshft : ind
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
" Vim indent file
|
" Vim indent file
|
||||||
" Language: Cucumber
|
" Language: Cucumber
|
||||||
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
||||||
" Last Change: 2016 Aug 29
|
" Last Change: 2017 Jun 13
|
||||||
|
|
||||||
if exists("b:did_indent")
|
if exists("b:did_indent")
|
||||||
finish
|
finish
|
||||||
@ -27,7 +27,7 @@ function! GetCucumberIndent()
|
|||||||
let line = getline(prevnonblank(v:lnum-1))
|
let line = getline(prevnonblank(v:lnum-1))
|
||||||
let cline = getline(v:lnum)
|
let cline = getline(v:lnum)
|
||||||
let nline = getline(nextnonblank(v:lnum+1))
|
let nline = getline(nextnonblank(v:lnum+1))
|
||||||
let sw = exists('*shiftwidth') ? shiftwidth() : &sw
|
let sw = exists('*shiftwidth') ? shiftwidth() : shiftwidth()
|
||||||
let syn = s:syn(prevnonblank(v:lnum-1))
|
let syn = s:syn(prevnonblank(v:lnum-1))
|
||||||
let csyn = s:syn(v:lnum)
|
let csyn = s:syn(v:lnum)
|
||||||
let nsyn = s:syn(nextnonblank(v:lnum+1))
|
let nsyn = s:syn(nextnonblank(v:lnum+1))
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
" Vim indent file
|
" Vim indent file
|
||||||
" Language: Dylan
|
" Language: Dylan
|
||||||
" Version: 0.01
|
" Version: 0.01
|
||||||
" Last Change: 2003 Feb 04
|
" Last Change: 2017 Jun 13
|
||||||
" Maintainer: Brent A. Fulgham <bfulgham@debian.org>
|
" Maintainer: Brent A. Fulgham <bfulgham@debian.org>
|
||||||
|
|
||||||
" Only load this indent file when no other was loaded.
|
" Only load this indent file when no other was loaded.
|
||||||
@ -45,13 +45,13 @@ function DylanGetIndent()
|
|||||||
|
|
||||||
" If previous line was a 'define', indent
|
" If previous line was a 'define', indent
|
||||||
if prevline =~? '\(^\s*\(begin\|block\|case\|define\|else\|elseif\|for\|finally\|if\|select\|unless\|while\)\|\s*\S*\s*=>$\)'
|
if prevline =~? '\(^\s*\(begin\|block\|case\|define\|else\|elseif\|for\|finally\|if\|select\|unless\|while\)\|\s*\S*\s*=>$\)'
|
||||||
let chg = &sw
|
let chg = shiftwidth()
|
||||||
" local methods indent the shift-width, plus 6 for the 'local'
|
" local methods indent the shift-width, plus 6 for the 'local'
|
||||||
elseif prevline =~? '^\s*local'
|
elseif prevline =~? '^\s*local'
|
||||||
let chg = &sw + 6
|
let chg = shiftwidth() + 6
|
||||||
" If previous line was a let with no closing semicolon, indent
|
" If previous line was a let with no closing semicolon, indent
|
||||||
elseif prevline =~? '^\s*let.*[^;]\s*$'
|
elseif prevline =~? '^\s*let.*[^;]\s*$'
|
||||||
let chg = &sw
|
let chg = shiftwidth()
|
||||||
" If previous line opened a parenthesis, and did not close it, indent
|
" If previous line opened a parenthesis, and did not close it, indent
|
||||||
elseif prevline =~ '^.*(\s*[^)]*\((.*)\)*[^)]*$'
|
elseif prevline =~ '^.*(\s*[^)]*\((.*)\)*[^)]*$'
|
||||||
return = match( prevline, '(.*\((.*)\|[^)]\)*.*$') + 1
|
return = match( prevline, '(.*\((.*)\|[^)]\)*.*$') + 1
|
||||||
@ -75,13 +75,13 @@ function DylanGetIndent()
|
|||||||
" line doesn't start with an indentable command:
|
" line doesn't start with an indentable command:
|
||||||
let curr_str = getline(curr_line)
|
let curr_str = getline(curr_line)
|
||||||
if curr_str =~? '^\s*\(begin\|block\|case\|define\|else\|elseif\|for\|finally\|if\|select\|unless\|while\)'
|
if curr_str =~? '^\s*\(begin\|block\|case\|define\|else\|elseif\|for\|finally\|if\|select\|unless\|while\)'
|
||||||
let chg = &sw
|
let chg = shiftwidth()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" If a line starts with end, un-indent (even if we just indented!)
|
" If a line starts with end, un-indent (even if we just indented!)
|
||||||
if cline =~? '^\s*\(cleanup\|end\|else\|elseif\|exception\|finally\|otherwise\)'
|
if cline =~? '^\s*\(cleanup\|end\|else\|elseif\|exception\|finally\|otherwise\)'
|
||||||
let chg = chg - &sw
|
let chg = chg - shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return ind + chg
|
return ind + chg
|
||||||
|
@ -669,7 +669,7 @@ function! s:BeginningOfClauseFound(stack, token, stored_vcol)
|
|||||||
call s:Pop(a:stack)
|
call s:Pop(a:stack)
|
||||||
if empty(a:stack)
|
if empty(a:stack)
|
||||||
call s:Log(' Stack is ["when"], so LTI is in a guard -> return')
|
call s:Log(' Stack is ["when"], so LTI is in a guard -> return')
|
||||||
return [1, a:stored_vcol + &sw + 2]
|
return [1, a:stored_vcol + shiftwidth() + 2]
|
||||||
else
|
else
|
||||||
return [1, s:UnexpectedToken(a:token, a:stack)]
|
return [1, s:UnexpectedToken(a:token, a:stack)]
|
||||||
endif
|
endif
|
||||||
@ -678,7 +678,7 @@ function! s:BeginningOfClauseFound(stack, token, stored_vcol)
|
|||||||
call s:Pop(a:stack)
|
call s:Pop(a:stack)
|
||||||
if empty(a:stack)
|
if empty(a:stack)
|
||||||
call s:Log(' Stack is ["->"], so LTI is in function body -> return')
|
call s:Log(' Stack is ["->"], so LTI is in function body -> return')
|
||||||
return [1, a:stored_vcol + &sw]
|
return [1, a:stored_vcol + shiftwidth()]
|
||||||
elseif a:stack[0] ==# ';'
|
elseif a:stack[0] ==# ';'
|
||||||
call s:Pop(a:stack)
|
call s:Pop(a:stack)
|
||||||
if empty(a:stack)
|
if empty(a:stack)
|
||||||
@ -797,7 +797,7 @@ function! s:ErlangCalcIndent2(lnum, stack)
|
|||||||
|
|
||||||
elseif token ==# 'begin'
|
elseif token ==# 'begin'
|
||||||
let [ret, res] = s:BeginElementFound(stack, token, curr_vcol,
|
let [ret, res] = s:BeginElementFound(stack, token, curr_vcol,
|
||||||
\stored_vcol, 'end', &sw)
|
\stored_vcol, 'end', shiftwidth())
|
||||||
if ret | return res | endif
|
if ret | return res | endif
|
||||||
|
|
||||||
" case EXPR of BRANCHES end
|
" case EXPR of BRANCHES end
|
||||||
@ -848,11 +848,11 @@ function! s:ErlangCalcIndent2(lnum, stack)
|
|||||||
elseif stack == ['->']
|
elseif stack == ['->']
|
||||||
call s:Log(' LTI is in a branch after ' .
|
call s:Log(' LTI is in a branch after ' .
|
||||||
\'"of/receive/after/if/catch" -> return')
|
\'"of/receive/after/if/catch" -> return')
|
||||||
return stored_vcol + &sw
|
return stored_vcol + shiftwidth()
|
||||||
elseif stack == ['when']
|
elseif stack == ['when']
|
||||||
call s:Log(' LTI is in a guard after ' .
|
call s:Log(' LTI is in a guard after ' .
|
||||||
\'"of/receive/after/if/catch" -> return')
|
\'"of/receive/after/if/catch" -> return')
|
||||||
return stored_vcol + &sw
|
return stored_vcol + shiftwidth()
|
||||||
else
|
else
|
||||||
return s:UnexpectedToken(token, stack)
|
return s:UnexpectedToken(token, stack)
|
||||||
endif
|
endif
|
||||||
@ -888,7 +888,7 @@ function! s:ErlangCalcIndent2(lnum, stack)
|
|||||||
if empty(stack)
|
if empty(stack)
|
||||||
call s:Log(' LTI is in a condition; matching ' .
|
call s:Log(' LTI is in a condition; matching ' .
|
||||||
\'"case/if/try/receive" found')
|
\'"case/if/try/receive" found')
|
||||||
let stored_vcol = curr_vcol + &sw
|
let stored_vcol = curr_vcol + shiftwidth()
|
||||||
elseif stack[0] ==# 'align_to_begin_element'
|
elseif stack[0] ==# 'align_to_begin_element'
|
||||||
call s:Pop(stack)
|
call s:Pop(stack)
|
||||||
let stored_vcol = curr_vcol
|
let stored_vcol = curr_vcol
|
||||||
@ -897,23 +897,23 @@ function! s:ErlangCalcIndent2(lnum, stack)
|
|||||||
\'"case/if/try/receive" found')
|
\'"case/if/try/receive" found')
|
||||||
call s:Pop(stack)
|
call s:Pop(stack)
|
||||||
call s:Pop(stack)
|
call s:Pop(stack)
|
||||||
let stored_vcol = curr_vcol + &sw
|
let stored_vcol = curr_vcol + shiftwidth()
|
||||||
elseif stack[0] ==# '->'
|
elseif stack[0] ==# '->'
|
||||||
call s:Log(' LTI is in a branch; matching ' .
|
call s:Log(' LTI is in a branch; matching ' .
|
||||||
\'"case/if/try/receive" found')
|
\'"case/if/try/receive" found')
|
||||||
call s:Pop(stack)
|
call s:Pop(stack)
|
||||||
let stored_vcol = curr_vcol + 2 * &sw
|
let stored_vcol = curr_vcol + 2 * shiftwidth()
|
||||||
elseif stack[0] ==# 'when'
|
elseif stack[0] ==# 'when'
|
||||||
call s:Log(' LTI is in a guard; matching ' .
|
call s:Log(' LTI is in a guard; matching ' .
|
||||||
\'"case/if/try/receive" found')
|
\'"case/if/try/receive" found')
|
||||||
call s:Pop(stack)
|
call s:Pop(stack)
|
||||||
let stored_vcol = curr_vcol + 2 * &sw + 2
|
let stored_vcol = curr_vcol + 2 * shiftwidth() + 2
|
||||||
endif
|
endif
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let [ret, res] = s:BeginElementFound(stack, token, curr_vcol,
|
let [ret, res] = s:BeginElementFound(stack, token, curr_vcol,
|
||||||
\stored_vcol, 'end', &sw)
|
\stored_vcol, 'end', shiftwidth())
|
||||||
if ret | return res | endif
|
if ret | return res | endif
|
||||||
|
|
||||||
elseif token ==# 'fun'
|
elseif token ==# 'fun'
|
||||||
@ -930,7 +930,7 @@ function! s:ErlangCalcIndent2(lnum, stack)
|
|||||||
" stack = ['when'] => LTI is in a guard
|
" stack = ['when'] => LTI is in a guard
|
||||||
if empty(stack)
|
if empty(stack)
|
||||||
call s:Log(' LTI is in a condition; matching "fun" found')
|
call s:Log(' LTI is in a condition; matching "fun" found')
|
||||||
let stored_vcol = curr_vcol + &sw
|
let stored_vcol = curr_vcol + shiftwidth()
|
||||||
elseif len(stack) > 1 && stack[0] ==# '->' && stack[1] ==# ';'
|
elseif len(stack) > 1 && stack[0] ==# '->' && stack[1] ==# ';'
|
||||||
call s:Log(' LTI is in a condition; matching "fun" found')
|
call s:Log(' LTI is in a condition; matching "fun" found')
|
||||||
call s:Pop(stack)
|
call s:Pop(stack)
|
||||||
@ -938,15 +938,15 @@ function! s:ErlangCalcIndent2(lnum, stack)
|
|||||||
elseif stack[0] ==# '->'
|
elseif stack[0] ==# '->'
|
||||||
call s:Log(' LTI is in a branch; matching "fun" found')
|
call s:Log(' LTI is in a branch; matching "fun" found')
|
||||||
call s:Pop(stack)
|
call s:Pop(stack)
|
||||||
let stored_vcol = curr_vcol + 2 * &sw
|
let stored_vcol = curr_vcol + 2 * shiftwidth()
|
||||||
elseif stack[0] ==# 'when'
|
elseif stack[0] ==# 'when'
|
||||||
call s:Log(' LTI is in a guard; matching "fun" found')
|
call s:Log(' LTI is in a guard; matching "fun" found')
|
||||||
call s:Pop(stack)
|
call s:Pop(stack)
|
||||||
let stored_vcol = curr_vcol + 2 * &sw + 2
|
let stored_vcol = curr_vcol + 2 * shiftwidth() + 2
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let [ret, res] = s:BeginElementFound(stack, token, curr_vcol,
|
let [ret, res] = s:BeginElementFound(stack, token, curr_vcol,
|
||||||
\stored_vcol, 'end', &sw)
|
\stored_vcol, 'end', shiftwidth())
|
||||||
if ret | return res | endif
|
if ret | return res | endif
|
||||||
else
|
else
|
||||||
" Pass: we have a function reference (e.g. "fun f/0")
|
" Pass: we have a function reference (e.g. "fun f/0")
|
||||||
@ -1220,7 +1220,7 @@ function! s:ErlangCalcIndent2(lnum, stack)
|
|||||||
" when A,
|
" when A,
|
||||||
" LTI
|
" LTI
|
||||||
let [ret, res] = s:BeginElementFoundIfEmpty(stack, token, curr_vcol,
|
let [ret, res] = s:BeginElementFoundIfEmpty(stack, token, curr_vcol,
|
||||||
\stored_vcol, &sw)
|
\stored_vcol, shiftwidth())
|
||||||
if ret | return res | endif
|
if ret | return res | endif
|
||||||
else
|
else
|
||||||
" Example:
|
" Example:
|
||||||
@ -1252,7 +1252,7 @@ function! s:ErlangCalcIndent2(lnum, stack)
|
|||||||
" If LTI is between an 'after' and the corresponding
|
" If LTI is between an 'after' and the corresponding
|
||||||
" 'end', then let's return
|
" 'end', then let's return
|
||||||
let [ret, res] = s:BeginElementFoundIfEmpty(stack, token, curr_vcol,
|
let [ret, res] = s:BeginElementFoundIfEmpty(stack, token, curr_vcol,
|
||||||
\stored_vcol, &sw)
|
\stored_vcol, shiftwidth())
|
||||||
if ret | return res | endif
|
if ret | return res | endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -47,11 +47,7 @@ set cpo&vim
|
|||||||
|
|
||||||
function! GetErubyIndent(...)
|
function! GetErubyIndent(...)
|
||||||
" The value of a single shift-width
|
" The value of a single shift-width
|
||||||
if exists('*shiftwidth')
|
let sw = shiftwidth()
|
||||||
let sw = shiftwidth()
|
|
||||||
else
|
|
||||||
let sw = &sw
|
|
||||||
endif
|
|
||||||
|
|
||||||
if a:0 && a:1 == '.'
|
if a:0 && a:1 == '.'
|
||||||
let v:lnum = line('.')
|
let v:lnum = line('.')
|
||||||
|
@ -339,7 +339,7 @@ function FalconGetIndent(...)
|
|||||||
|
|
||||||
" If the previous line ended with a block opening, add a level of indent.
|
" If the previous line ended with a block opening, add a level of indent.
|
||||||
if s:Match(lnum, s:block_regex)
|
if s:Match(lnum, s:block_regex)
|
||||||
return indent(s:GetMSL(lnum)) + &sw
|
return indent(s:GetMSL(lnum)) + shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" If it contained hanging closing brackets, find the rightmost one, find its
|
" If it contained hanging closing brackets, find the rightmost one, find its
|
||||||
@ -350,20 +350,20 @@ function FalconGetIndent(...)
|
|||||||
if opening.pos != -1
|
if opening.pos != -1
|
||||||
if opening.type == '(' && searchpair('(', '', ')', 'bW', s:skip_expr) > 0
|
if opening.type == '(' && searchpair('(', '', ')', 'bW', s:skip_expr) > 0
|
||||||
if col('.') + 1 == col('$')
|
if col('.') + 1 == col('$')
|
||||||
return ind + &sw
|
return ind + shiftwidth()
|
||||||
else
|
else
|
||||||
return virtcol('.')
|
return virtcol('.')
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
let nonspace = matchend(line, '\S', opening.pos + 1) - 1
|
let nonspace = matchend(line, '\S', opening.pos + 1) - 1
|
||||||
return nonspace > 0 ? nonspace : ind + &sw
|
return nonspace > 0 ? nonspace : ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
elseif closing.pos != -1
|
elseif closing.pos != -1
|
||||||
call cursor(lnum, closing.pos + 1)
|
call cursor(lnum, closing.pos + 1)
|
||||||
normal! %
|
normal! %
|
||||||
|
|
||||||
if s:Match(line('.'), s:falcon_indent_keywords)
|
if s:Match(line('.'), s:falcon_indent_keywords)
|
||||||
return indent('.') + &sw
|
return indent('.') + shiftwidth()
|
||||||
else
|
else
|
||||||
return indent('.')
|
return indent('.')
|
||||||
endif
|
endif
|
||||||
@ -392,7 +392,7 @@ function FalconGetIndent(...)
|
|||||||
let col = s:Match(lnum, s:falcon_indent_keywords)
|
let col = s:Match(lnum, s:falcon_indent_keywords)
|
||||||
if col > 0
|
if col > 0
|
||||||
call cursor(lnum, col)
|
call cursor(lnum, col)
|
||||||
let ind = virtcol('.') - 1 + &sw
|
let ind = virtcol('.') - 1 + shiftwidth()
|
||||||
" TODO: make this better (we need to count them) (or, if a searchpair
|
" TODO: make this better (we need to count them) (or, if a searchpair
|
||||||
" fails, we know that something is lacking an end and thus we indent a
|
" fails, we know that something is lacking an end and thus we indent a
|
||||||
" level
|
" level
|
||||||
@ -422,9 +422,9 @@ function FalconGetIndent(...)
|
|||||||
" TODO: this does not take into account contrived things such as
|
" TODO: this does not take into account contrived things such as
|
||||||
" module Foo; class Bar; end
|
" module Foo; class Bar; end
|
||||||
if s:Match(lnum, s:falcon_indent_keywords)
|
if s:Match(lnum, s:falcon_indent_keywords)
|
||||||
let ind = msl_ind + &sw
|
let ind = msl_ind + shiftwidth()
|
||||||
if s:Match(lnum, s:end_end_regex)
|
if s:Match(lnum, s:end_end_regex)
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
return ind
|
return ind
|
||||||
endif
|
endif
|
||||||
@ -433,7 +433,7 @@ function FalconGetIndent(...)
|
|||||||
" closing bracket, indent one extra level.
|
" closing bracket, indent one extra level.
|
||||||
if s:Match(lnum, s:non_bracket_continuation_regex) && !s:Match(lnum, '^\s*\([\])}]\|end\)')
|
if s:Match(lnum, s:non_bracket_continuation_regex) && !s:Match(lnum, '^\s*\([\])}]\|end\)')
|
||||||
if lnum == p_lnum
|
if lnum == p_lnum
|
||||||
let ind = msl_ind + &sw
|
let ind = msl_ind + shiftwidth()
|
||||||
else
|
else
|
||||||
let ind = msl_ind
|
let ind = msl_ind
|
||||||
endif
|
endif
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
" Vim indent file
|
" Vim indent file
|
||||||
" Language: git config file
|
" Language: git config file
|
||||||
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
||||||
" Last Change: 2016 Aug 29
|
" Last Change: 2017 Jun 13
|
||||||
|
|
||||||
if exists("b:did_indent")
|
if exists("b:did_indent")
|
||||||
finish
|
finish
|
||||||
@ -20,7 +20,7 @@ if exists("*GetGitconfigIndent")
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
function! GetGitconfigIndent()
|
function! GetGitconfigIndent()
|
||||||
let sw = exists('*shiftwidth') ? shiftwidth() : &sw
|
let sw = shiftwidth()
|
||||||
let line = getline(prevnonblank(v:lnum-1))
|
let line = getline(prevnonblank(v:lnum-1))
|
||||||
let cline = getline(v:lnum)
|
let cline = getline(v:lnum)
|
||||||
if line =~ '\\\@<!\%(\\\\\)*\\$'
|
if line =~ '\\\@<!\%(\\\\\)*\\$'
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
" Language: gitolite configuration
|
" Language: gitolite configuration
|
||||||
" URL: https://github.com/tmatilai/gitolite.vim
|
" URL: https://github.com/tmatilai/gitolite.vim
|
||||||
" Maintainer: Teemu Matilainen <teemu.matilainen@iki.fi>
|
" Maintainer: Teemu Matilainen <teemu.matilainen@iki.fi>
|
||||||
" Last Change: 2011-12-24
|
" Last Change: 2017 Jun 13
|
||||||
|
|
||||||
if exists("b:did_indent")
|
if exists("b:did_indent")
|
||||||
finish
|
finish
|
||||||
@ -27,11 +27,11 @@ function! GetGitoliteIndent()
|
|||||||
let cline = getline(v:lnum)
|
let cline = getline(v:lnum)
|
||||||
|
|
||||||
if cline =~ '^\s*\(C\|R\|RW\|RW+\|RWC\|RW+C\|RWD\|RW+D\|RWCD\|RW+CD\|-\)[ \t=]'
|
if cline =~ '^\s*\(C\|R\|RW\|RW+\|RWC\|RW+C\|RWD\|RW+D\|RWCD\|RW+CD\|-\)[ \t=]'
|
||||||
return &sw
|
return shiftwidth()
|
||||||
elseif cline =~ '^\s*config\s'
|
elseif cline =~ '^\s*config\s'
|
||||||
return &sw
|
return shiftwidth()
|
||||||
elseif pline =~ '^\s*repo\s' && cline =~ '^\s*\(#.*\)\?$'
|
elseif pline =~ '^\s*repo\s' && cline =~ '^\s*\(#.*\)\?$'
|
||||||
return &sw
|
return shiftwidth()
|
||||||
elseif cline =~ '^\s*#'
|
elseif cline =~ '^\s*#'
|
||||||
return indent(prevln)
|
return indent(prevln)
|
||||||
elseif cline =~ '^\s*$'
|
elseif cline =~ '^\s*$'
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
" Vim indent file
|
" Vim indent file
|
||||||
" Language: Go
|
" Language: Go
|
||||||
" Maintainer: David Barnett (https://github.com/google/vim-ft-go)
|
" Maintainer: David Barnett (https://github.com/google/vim-ft-go)
|
||||||
" Last Change: 2014 Aug 16
|
" Last Change: 2017 Jun 13
|
||||||
"
|
"
|
||||||
" TODO:
|
" TODO:
|
||||||
" - function invocations split across lines
|
" - function invocations split across lines
|
||||||
@ -23,18 +23,6 @@ if exists('*GoIndent')
|
|||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" The shiftwidth() function is relatively new.
|
|
||||||
" Don't require it to exist.
|
|
||||||
if exists('*shiftwidth')
|
|
||||||
function s:sw() abort
|
|
||||||
return shiftwidth()
|
|
||||||
endfunction
|
|
||||||
else
|
|
||||||
function s:sw() abort
|
|
||||||
return &shiftwidth
|
|
||||||
endfunction
|
|
||||||
endif
|
|
||||||
|
|
||||||
function! GoIndent(lnum)
|
function! GoIndent(lnum)
|
||||||
let l:prevlnum = prevnonblank(a:lnum-1)
|
let l:prevlnum = prevnonblank(a:lnum-1)
|
||||||
if l:prevlnum == 0
|
if l:prevlnum == 0
|
||||||
@ -51,17 +39,17 @@ function! GoIndent(lnum)
|
|||||||
|
|
||||||
if l:prevl =~ '[({]\s*$'
|
if l:prevl =~ '[({]\s*$'
|
||||||
" previous line opened a block
|
" previous line opened a block
|
||||||
let l:ind += s:sw()
|
let l:ind += shiftwidth()
|
||||||
endif
|
endif
|
||||||
if l:prevl =~# '^\s*\(case .*\|default\):$'
|
if l:prevl =~# '^\s*\(case .*\|default\):$'
|
||||||
" previous line is part of a switch statement
|
" previous line is part of a switch statement
|
||||||
let l:ind += s:sw()
|
let l:ind += shiftwidth()
|
||||||
endif
|
endif
|
||||||
" TODO: handle if the previous line is a label.
|
" TODO: handle if the previous line is a label.
|
||||||
|
|
||||||
if l:thisl =~ '^\s*[)}]'
|
if l:thisl =~ '^\s*[)}]'
|
||||||
" this line closed a block
|
" this line closed a block
|
||||||
let l:ind -= s:sw()
|
let l:ind -= shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Colons are tricky.
|
" Colons are tricky.
|
||||||
@ -69,7 +57,7 @@ function! GoIndent(lnum)
|
|||||||
" We ignore trying to deal with jump labels because (a) they're rare, and
|
" We ignore trying to deal with jump labels because (a) they're rare, and
|
||||||
" (b) they're hard to disambiguate from a composite literal key.
|
" (b) they're hard to disambiguate from a composite literal key.
|
||||||
if l:thisl =~# '^\s*\(case .*\|default\):$'
|
if l:thisl =~# '^\s*\(case .*\|default\):$'
|
||||||
let l:ind -= s:sw()
|
let l:ind -= shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return l:ind
|
return l:ind
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
" Vim indent file
|
" Vim indent file
|
||||||
" Language: Haml
|
" Language: Haml
|
||||||
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
||||||
" Last Change: 2016 Aug 29
|
" Last Change: 2017 Jun 13
|
||||||
|
|
||||||
if exists("b:did_indent")
|
if exists("b:did_indent")
|
||||||
finish
|
finish
|
||||||
@ -37,7 +37,7 @@ function! GetHamlIndent()
|
|||||||
let line = substitute(line,'^\s\+','','')
|
let line = substitute(line,'^\s\+','','')
|
||||||
let indent = indent(lnum)
|
let indent = indent(lnum)
|
||||||
let cindent = indent(v:lnum)
|
let cindent = indent(v:lnum)
|
||||||
let sw = exists('*shiftwidth') ? shiftwidth() : &sw
|
let sw = shiftwidth()
|
||||||
if cline =~# '\v^-\s*%(elsif|else|when)>'
|
if cline =~# '\v^-\s*%(elsif|else|when)>'
|
||||||
let indent = cindent < indent ? cindent : indent - sw
|
let indent = cindent < indent ? cindent : indent - sw
|
||||||
endif
|
endif
|
||||||
|
@ -27,13 +27,13 @@ function HamGetIndent(lnum)
|
|||||||
" Add a shiftwidth to statements following if, else, elseif,
|
" Add a shiftwidth to statements following if, else, elseif,
|
||||||
" case, select, default, do, until, while, for, start
|
" case, select, default, do, until, while, for, start
|
||||||
if prevline =~? '^\s*\<\(if\|else\%(if\)\?\|for\|repeat\|do\|while\|sub\)\>'
|
if prevline =~? '^\s*\<\(if\|else\%(if\)\?\|for\|repeat\|do\|while\|sub\)\>'
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Subtract a shiftwidth from else, elseif, end(if|while|for), until
|
" Subtract a shiftwidth from else, elseif, end(if|while|for), until
|
||||||
let line = getline(v:lnum)
|
let line = getline(v:lnum)
|
||||||
if line =~? '^\s*\(else\|elseif\|loop\|until\|end\%(if\|while\|for\|sub\)\)\>'
|
if line =~? '^\s*\(else\|elseif\|loop\|until\|end\%(if\|while\|for\|sub\)\)\>'
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return ind
|
return ind
|
||||||
|
@ -47,7 +47,7 @@ function GetHogIndent()
|
|||||||
" Continuation of a line that wasn't indented
|
" Continuation of a line that wasn't indented
|
||||||
let prevline = getline(prevlnum)
|
let prevline = getline(prevlnum)
|
||||||
if prevline =~ '^\k\+.*\\\s*$'
|
if prevline =~ '^\k\+.*\\\s*$'
|
||||||
return &sw
|
return shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Continuation of a line that was indented
|
" Continuation of a line that was indented
|
||||||
@ -58,13 +58,13 @@ function GetHogIndent()
|
|||||||
" Indent the next line if previous line contained a start of a block
|
" Indent the next line if previous line contained a start of a block
|
||||||
" definition ('{' or '(').
|
" definition ('{' or '(').
|
||||||
if prevline =~ '^\k\+[^#]*{}\@!\s*$' " TODO || prevline =~ '^\k\+[^#]*()\@!\s*$'
|
if prevline =~ '^\k\+[^#]*{}\@!\s*$' " TODO || prevline =~ '^\k\+[^#]*()\@!\s*$'
|
||||||
return &sw
|
return shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Match inside of a block
|
" Match inside of a block
|
||||||
if s:IsInBlock(v:lnum)
|
if s:IsInBlock(v:lnum)
|
||||||
if prevline =~ "^\k\+.*$"
|
if prevline =~ "^\k\+.*$"
|
||||||
return &sw
|
return shiftwidth()
|
||||||
else
|
else
|
||||||
return indent(prevlnum)
|
return indent(prevlnum)
|
||||||
endif
|
endif
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
" Header: "{{{
|
" Header: "{{{
|
||||||
" Maintainer: Bram Moolenaar
|
" Maintainer: Bram Moolenaar
|
||||||
" Original Author: Andy Wokula <anwoku@yahoo.de>
|
" Original Author: Andy Wokula <anwoku@yahoo.de>
|
||||||
" Last Change: 2017 Jan 17
|
" Last Change: 2017 Jun 13
|
||||||
" 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.
|
||||||
@ -51,15 +51,6 @@ if exists("*HtmlIndent") && !exists('g:force_reload_html')
|
|||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" shiftwidth() exists since patch 7.3.694
|
|
||||||
if exists('*shiftwidth')
|
|
||||||
let s:ShiftWidth = function('shiftwidth')
|
|
||||||
else
|
|
||||||
func! s:ShiftWidth()
|
|
||||||
return &shiftwidth
|
|
||||||
endfunc
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Allow for line continuation below.
|
" Allow for line continuation below.
|
||||||
let s:cpo_save = &cpo
|
let s:cpo_save = &cpo
|
||||||
set cpo-=C
|
set cpo-=C
|
||||||
@ -123,7 +114,7 @@ func! HtmlIndent_CheckUserSettings()
|
|||||||
|
|
||||||
let indone = {"zero": 0
|
let indone = {"zero": 0
|
||||||
\,"auto": "indent(prevnonblank(v:lnum-1))"
|
\,"auto": "indent(prevnonblank(v:lnum-1))"
|
||||||
\,"inc": "b:hi_indent.blocktagind + s:ShiftWidth()"}
|
\,"inc": "b:hi_indent.blocktagind + shiftwidth()"}
|
||||||
|
|
||||||
let script1 = ''
|
let script1 = ''
|
||||||
if exists("b:html_indent_script1")
|
if exists("b:html_indent_script1")
|
||||||
@ -358,7 +349,7 @@ func! s:CheckBlockTag(blocktag, ind)
|
|||||||
endif
|
endif
|
||||||
let b:hi_newstate.blocklnr = v:lnum
|
let b:hi_newstate.blocklnr = v:lnum
|
||||||
" save allover indent for the endtag
|
" save allover indent for the endtag
|
||||||
let b:hi_newstate.blocktagind = b:hi_indent.baseindent + (s:nextrel + s:curind) * s:ShiftWidth()
|
let b:hi_newstate.blocktagind = b:hi_indent.baseindent + (s:nextrel + s:curind) * shiftwidth()
|
||||||
if a:ind == 3
|
if a:ind == 3
|
||||||
return "SCRIPT" " all except this must be lowercase
|
return "SCRIPT" " all except this must be lowercase
|
||||||
" line is to be checked again for the type attribute
|
" line is to be checked again for the type attribute
|
||||||
@ -480,7 +471,7 @@ func! s:FreshState(lnum)
|
|||||||
let state.blocklnr = stopline
|
let state.blocklnr = stopline
|
||||||
" check preceding tags in the line:
|
" check preceding tags in the line:
|
||||||
call s:CountITags(tagline[: stopcol-2])
|
call s:CountITags(tagline[: stopcol-2])
|
||||||
let state.blocktagind = indent(stopline) + (s:curind + s:nextrel) * s:ShiftWidth()
|
let state.blocktagind = indent(stopline) + (s:curind + s:nextrel) * shiftwidth()
|
||||||
return state
|
return state
|
||||||
elseif stopline == state.lnum
|
elseif stopline == state.lnum
|
||||||
" handle special case: previous line (= state.lnum) contains a
|
" handle special case: previous line (= state.lnum) contains a
|
||||||
@ -490,7 +481,7 @@ func! s:FreshState(lnum)
|
|||||||
if !swendtag
|
if !swendtag
|
||||||
let [bline, bcol] = searchpos('<'.blocktag[1:].'\>', "bnW")
|
let [bline, bcol] = searchpos('<'.blocktag[1:].'\>', "bnW")
|
||||||
call s:CountITags(tolower(getline(bline)[: bcol-2]))
|
call s:CountITags(tolower(getline(bline)[: bcol-2]))
|
||||||
let state.baseindent = indent(bline) + (s:curind + s:nextrel) * s:ShiftWidth()
|
let state.baseindent = indent(bline) + (s:curind + s:nextrel) * shiftwidth()
|
||||||
return state
|
return state
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@ -511,7 +502,7 @@ func! s:FreshState(lnum)
|
|||||||
if found == 2
|
if found == 2
|
||||||
let state.baseindent = b:hi_indent.baseindent
|
let state.baseindent = b:hi_indent.baseindent
|
||||||
endif
|
endif
|
||||||
let state.blocktagind = indent(comlnum) + (s:curind + s:nextrel) * s:ShiftWidth()
|
let state.blocktagind = indent(comlnum) + (s:curind + s:nextrel) * shiftwidth()
|
||||||
return state
|
return state
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -530,7 +521,7 @@ func! s:FreshState(lnum)
|
|||||||
let text = tolower(getline(comlnum)[: comcol-2])
|
let text = tolower(getline(comlnum)[: comcol-2])
|
||||||
endif
|
endif
|
||||||
call s:CountITags(text)
|
call s:CountITags(text)
|
||||||
let state.baseindent = indent(comlnum) + (s:curind + s:nextrel) * s:ShiftWidth()
|
let state.baseindent = indent(comlnum) + (s:curind + s:nextrel) * shiftwidth()
|
||||||
" TODO check tags that follow "-->"
|
" TODO check tags that follow "-->"
|
||||||
return state
|
return state
|
||||||
endif
|
endif
|
||||||
@ -550,9 +541,9 @@ func! s:FreshState(lnum)
|
|||||||
let text = getline(start_lnum)
|
let text = getline(start_lnum)
|
||||||
let swendtag = match(text, '^\s*</') >= 0
|
let swendtag = match(text, '^\s*</') >= 0
|
||||||
call s:CountITags(text[: col('.') - 2])
|
call s:CountITags(text[: col('.') - 2])
|
||||||
let state.baseindent += s:nextrel * s:ShiftWidth()
|
let state.baseindent += s:nextrel * shiftwidth()
|
||||||
if !swendtag
|
if !swendtag
|
||||||
let state.baseindent += s:curind * s:ShiftWidth()
|
let state.baseindent += s:curind * shiftwidth()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
return state
|
return state
|
||||||
@ -565,9 +556,9 @@ func! s:FreshState(lnum)
|
|||||||
let text = getline(state.lnum)
|
let text = getline(state.lnum)
|
||||||
let swendtag = match(text, '^\s*</') >= 0
|
let swendtag = match(text, '^\s*</') >= 0
|
||||||
call s:CountITags(tolower(text))
|
call s:CountITags(tolower(text))
|
||||||
let state.baseindent = indent(state.lnum) + s:nextrel * s:ShiftWidth()
|
let state.baseindent = indent(state.lnum) + s:nextrel * shiftwidth()
|
||||||
if !swendtag
|
if !swendtag
|
||||||
let state.baseindent += s:curind * s:ShiftWidth()
|
let state.baseindent += s:curind * shiftwidth()
|
||||||
endif
|
endif
|
||||||
return state
|
return state
|
||||||
endfunc "}}}
|
endfunc "}}}
|
||||||
@ -646,7 +637,7 @@ func! s:CSSIndent()
|
|||||||
|
|
||||||
" add indent after {
|
" add indent after {
|
||||||
let brace_counts = HtmlIndent_CountBraces(prev_lnum)
|
let brace_counts = HtmlIndent_CountBraces(prev_lnum)
|
||||||
let extra = brace_counts.c_open * s:ShiftWidth()
|
let extra = brace_counts.c_open * shiftwidth()
|
||||||
|
|
||||||
let prev_text = getline(prev_lnum)
|
let prev_text = getline(prev_lnum)
|
||||||
let below_end_brace = prev_text =~ '}\s*$'
|
let below_end_brace = prev_text =~ '}\s*$'
|
||||||
@ -663,7 +654,7 @@ func! s:CSSIndent()
|
|||||||
" if the current line is not a comment or starts with @ (used by template
|
" if the current line is not a comment or starts with @ (used by template
|
||||||
" systems) reduce indent if previous line is a continuation line
|
" systems) reduce indent if previous line is a continuation line
|
||||||
if !prev_hasfield && !prev_special
|
if !prev_hasfield && !prev_special
|
||||||
let extra = -s:ShiftWidth()
|
let extra = -shiftwidth()
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
let cur_hasfield = curtext =~ '^\s*[a-zA-Z0-9-]\+:'
|
let cur_hasfield = curtext =~ '^\s*[a-zA-Z0-9-]\+:'
|
||||||
@ -671,14 +662,14 @@ func! s:CSSIndent()
|
|||||||
if !cur_hasfield && (prev_hasfield || prev_unfinished)
|
if !cur_hasfield && (prev_hasfield || prev_unfinished)
|
||||||
" Continuation line has extra indent if the previous line was not a
|
" Continuation line has extra indent if the previous line was not a
|
||||||
" continuation line.
|
" continuation line.
|
||||||
let extra = s:ShiftWidth()
|
let extra = shiftwidth()
|
||||||
" Align with @if
|
" Align with @if
|
||||||
if prev_text =~ '^\s*@if '
|
if prev_text =~ '^\s*@if '
|
||||||
let extra = 4
|
let extra = 4
|
||||||
endif
|
endif
|
||||||
elseif cur_hasfield && !prev_hasfield && !prev_special
|
elseif cur_hasfield && !prev_hasfield && !prev_special
|
||||||
" less indent below a continuation line
|
" less indent below a continuation line
|
||||||
let extra = -s:ShiftWidth()
|
let extra = -shiftwidth()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@ -699,10 +690,10 @@ func! s:CSSIndent()
|
|||||||
if special
|
if special
|
||||||
" do not reduce indent below @{ ... }
|
" do not reduce indent below @{ ... }
|
||||||
if extra < 0
|
if extra < 0
|
||||||
let extra += s:ShiftWidth()
|
let extra += shiftwidth()
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
let extra -= (brace_counts.c_close - (prev_text =~ '^\s*}')) * s:ShiftWidth()
|
let extra -= (brace_counts.c_close - (prev_text =~ '^\s*}')) * shiftwidth()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -710,10 +701,10 @@ func! s:CSSIndent()
|
|||||||
if extra == 0
|
if extra == 0
|
||||||
if brace_counts.p_open > brace_counts.p_close
|
if brace_counts.p_open > brace_counts.p_close
|
||||||
" previous line has more ( than ): add a shiftwidth
|
" previous line has more ( than ): add a shiftwidth
|
||||||
let extra = s:ShiftWidth()
|
let extra = shiftwidth()
|
||||||
elseif brace_counts.p_open < brace_counts.p_close
|
elseif brace_counts.p_open < brace_counts.p_close
|
||||||
" previous line has more ) than (: subtract a shiftwidth
|
" previous line has more ) than (: subtract a shiftwidth
|
||||||
let extra = -s:ShiftWidth()
|
let extra = -shiftwidth()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -816,7 +807,7 @@ func! s:Alien5()
|
|||||||
let idx = match(prevtext, '^\s*\zs<!--')
|
let idx = match(prevtext, '^\s*\zs<!--')
|
||||||
if idx >= 0
|
if idx >= 0
|
||||||
" just below comment start, add a shiftwidth
|
" just below comment start, add a shiftwidth
|
||||||
return idx + s:ShiftWidth()
|
return idx + shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Some files add 4 spaces just below a TODO line. It's difficult to detect
|
" Some files add 4 spaces just below a TODO line. It's difficult to detect
|
||||||
@ -837,7 +828,7 @@ func! s:Alien6()
|
|||||||
return indent(lnum)
|
return indent(lnum)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
return b:hi_indent.baseindent + s:ShiftWidth()
|
return b:hi_indent.baseindent + shiftwidth()
|
||||||
endfunc "}}}
|
endfunc "}}}
|
||||||
|
|
||||||
" When the "lnum" line ends in ">" find the line containing the matching "<".
|
" When the "lnum" line ends in ">" find the line containing the matching "<".
|
||||||
@ -947,7 +938,7 @@ func! HtmlIndent()
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
let curtext = tolower(getline(v:lnum))
|
let curtext = tolower(getline(v:lnum))
|
||||||
let indentunit = s:ShiftWidth()
|
let indentunit = shiftwidth()
|
||||||
|
|
||||||
let b:hi_newstate = {}
|
let b:hi_newstate = {}
|
||||||
let b:hi_newstate.lnum = v:lnum
|
let b:hi_newstate.lnum = v:lnum
|
||||||
@ -1030,9 +1021,9 @@ func! HtmlIndent()
|
|||||||
if col('.') > 2
|
if col('.') > 2
|
||||||
let swendtag = match(text, '^\s*</') >= 0
|
let swendtag = match(text, '^\s*</') >= 0
|
||||||
call s:CountITags(text[: col('.') - 2])
|
call s:CountITags(text[: col('.') - 2])
|
||||||
let indent += s:nextrel * s:ShiftWidth()
|
let indent += s:nextrel * shiftwidth()
|
||||||
if !swendtag
|
if !swendtag
|
||||||
let indent += s:curind * s:ShiftWidth()
|
let indent += s:curind * shiftwidth()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
" IDL (Interactive Data Language) indent file.
|
" IDL (Interactive Data Language) indent file.
|
||||||
" Language: IDL (ft=idlang)
|
" Language: IDL (ft=idlang)
|
||||||
" Last change: 2012 May 18
|
" Last change: 2017 Jun 13
|
||||||
" Maintainer: Aleksandar Jelenak <ajelenak AT yahoo.com>
|
" Maintainer: Aleksandar Jelenak <ajelenak AT yahoo.com>
|
||||||
|
|
||||||
" Only load this indent file when no other was loaded.
|
" Only load this indent file when no other was loaded.
|
||||||
@ -34,25 +34,25 @@ function GetIdlangIndent(lnum)
|
|||||||
" Indenting of continued lines.
|
" Indenting of continued lines.
|
||||||
if getline(pnum) =~ '\$\s*\(;.*\)\=$'
|
if getline(pnum) =~ '\$\s*\(;.*\)\=$'
|
||||||
if getline(pnum2) !~ '\$\s*\(;.*\)\=$'
|
if getline(pnum2) !~ '\$\s*\(;.*\)\=$'
|
||||||
let curind = curind+&sw
|
let curind = curind+shiftwidth()
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
if getline(pnum2) =~ '\$\s*\(;.*\)\=$'
|
if getline(pnum2) =~ '\$\s*\(;.*\)\=$'
|
||||||
let curind = curind-&sw
|
let curind = curind-shiftwidth()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Indenting blocks of statements.
|
" Indenting blocks of statements.
|
||||||
if getline(v:lnum) =~? '^\s*\(endif\|endelse\|endwhile\|endfor\|endrep\)\>'
|
if getline(v:lnum) =~? '^\s*\(endif\|endelse\|endwhile\|endfor\|endrep\)\>'
|
||||||
if getline(pnum) =~? 'begin\>'
|
if getline(pnum) =~? 'begin\>'
|
||||||
elseif indent(v:lnum) > curind-&sw
|
elseif indent(v:lnum) > curind-shiftwidth()
|
||||||
let curind = curind-&sw
|
let curind = curind-shiftwidth()
|
||||||
else
|
else
|
||||||
return -1
|
return -1
|
||||||
endif
|
endif
|
||||||
elseif getline(pnum) =~? 'begin\>'
|
elseif getline(pnum) =~? 'begin\>'
|
||||||
if indent(v:lnum) < curind+&sw
|
if indent(v:lnum) < curind+shiftwidth()
|
||||||
let curind = curind+&sw
|
let curind = curind+shiftwidth()
|
||||||
else
|
else
|
||||||
return -1
|
return -1
|
||||||
endif
|
endif
|
||||||
|
@ -50,17 +50,17 @@ fun! GetIshdIndent(lnum)
|
|||||||
|
|
||||||
" Add
|
" Add
|
||||||
if previous_line =~ '^\s*\<\(function\|begin\|switch\|case\|default\|if.\{-}then\|else\|elseif\|while\|repeat\)\>'
|
if previous_line =~ '^\s*\<\(function\|begin\|switch\|case\|default\|if.\{-}then\|else\|elseif\|while\|repeat\)\>'
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Subtract
|
" Subtract
|
||||||
if this_line =~ '^\s*\<endswitch\>'
|
if this_line =~ '^\s*\<endswitch\>'
|
||||||
let ind = ind - 2 * &sw
|
let ind = ind - 2 * shiftwidth()
|
||||||
elseif this_line =~ '^\s*\<\(begin\|end\|endif\|endwhile\|else\|elseif\|until\)\>'
|
elseif this_line =~ '^\s*\<\(begin\|end\|endif\|endwhile\|else\|elseif\|until\)\>'
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
elseif this_line =~ '^\s*\<\(case\|default\)\>'
|
elseif this_line =~ '^\s*\<\(case\|default\)\>'
|
||||||
if previous_line !~ '^\s*\<switch\>'
|
if previous_line !~ '^\s*\<switch\>'
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
" Language: Javascript
|
" Language: Javascript
|
||||||
" Maintainer: Chris Paul ( https://github.com/bounceme )
|
" Maintainer: Chris Paul ( https://github.com/bounceme )
|
||||||
" URL: https://github.com/pangloss/vim-javascript
|
" URL: https://github.com/pangloss/vim-javascript
|
||||||
" Last Change: December 31, 2016
|
" Last Change: March 21, 2017
|
||||||
|
|
||||||
" Only load this indent file when no other was loaded.
|
" Only load this indent file when no other was loaded.
|
||||||
if exists('b:did_indent')
|
if exists('b:did_indent')
|
||||||
@ -14,6 +14,10 @@ let b:did_indent = 1
|
|||||||
setlocal indentexpr=GetJavascriptIndent()
|
setlocal indentexpr=GetJavascriptIndent()
|
||||||
setlocal autoindent nolisp nosmartindent
|
setlocal autoindent nolisp nosmartindent
|
||||||
setlocal indentkeys+=0],0)
|
setlocal indentkeys+=0],0)
|
||||||
|
" Testable with something like:
|
||||||
|
" vim -eNs "+filetype plugin indent on" "+syntax on" "+set ft=javascript" \
|
||||||
|
" "+norm! gg=G" '+%print' '+:q!' testfile.js \
|
||||||
|
" | diff -uBZ testfile.js -
|
||||||
|
|
||||||
let b:undo_indent = 'setlocal indentexpr< smartindent< autoindent< indentkeys<'
|
let b:undo_indent = 'setlocal indentexpr< smartindent< autoindent< indentkeys<'
|
||||||
|
|
||||||
@ -32,10 +36,14 @@ if exists('*shiftwidth')
|
|||||||
endfunction
|
endfunction
|
||||||
else
|
else
|
||||||
function s:sw()
|
function s:sw()
|
||||||
return &sw
|
return &l:shiftwidth == 0 ? &l:tabstop : &l:shiftwidth
|
||||||
endfunction
|
endfunction
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" Performance for forwards search(): start search at pos rather than masking
|
||||||
|
" matches before pos.
|
||||||
|
let s:z = has('patch-7.4.984') ? 'z' : ''
|
||||||
|
|
||||||
" searchpair() wrapper
|
" searchpair() wrapper
|
||||||
if has('reltime')
|
if has('reltime')
|
||||||
function s:GetPair(start,end,flags,skip,time,...)
|
function s:GetPair(start,end,flags,skip,time,...)
|
||||||
@ -48,34 +56,41 @@ else
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
" Regex of syntax group names that are or delimit string or are comments.
|
" Regex of syntax group names that are or delimit string or are comments.
|
||||||
let s:syng_strcom = 'string\|comment\|regex\|special\|doc\|template'
|
let s:syng_strcom = 'string\|comment\|regex\|special\|doc\|template\%(braces\)\@!'
|
||||||
let s:syng_str = 'string\|template'
|
let s:syng_str = 'string\|template\|special'
|
||||||
let s:syng_com = 'comment\|doc'
|
let s:syng_com = 'comment\|doc'
|
||||||
" Expression used to check whether we should skip a match with searchpair().
|
" Expression used to check whether we should skip a match with searchpair().
|
||||||
let s:skip_expr = "synIDattr(synID(line('.'),col('.'),0),'name') =~? '".s:syng_strcom."'"
|
let s:skip_expr = "synIDattr(synID(line('.'),col('.'),0),'name') =~? '".s:syng_strcom."'"
|
||||||
|
|
||||||
|
function s:parse_cino(f) abort
|
||||||
|
return float2nr(eval(substitute(substitute(join(split(
|
||||||
|
\ matchstr(&cino,'.*'.a:f.'\zs[^,]*'), 's',1), '*'.s:W)
|
||||||
|
\ , '^-\=\zs\*','',''), '^-\=\zs\.','0.','')))
|
||||||
|
endfunction
|
||||||
|
|
||||||
function s:skip_func()
|
function s:skip_func()
|
||||||
if !s:free || search('\m`\|\*\/','nW',s:looksyn)
|
if getline('.') =~ '\%<'.col('.').'c\/.\{-}\/\|\%>'.col('.').'c[''"]\|\\$'
|
||||||
let s:free = !eval(s:skip_expr)
|
return eval(s:skip_expr)
|
||||||
let s:looksyn = s:free ? line('.') : s:looksyn
|
elseif s:checkIn || search('\m`\|\${\|\*\/','nW'.s:z,s:looksyn)
|
||||||
return !s:free
|
let s:checkIn = eval(s:skip_expr)
|
||||||
endif
|
endif
|
||||||
let s:looksyn = line('.')
|
let s:looksyn = line('.')
|
||||||
return (search('\m\/','nbW',s:looksyn) || search('\m[''"]\|\\$','nW',s:looksyn)) && eval(s:skip_expr)
|
return s:checkIn
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function s:alternatePair(stop)
|
function s:alternatePair(stop)
|
||||||
let pos = getpos('.')[1:2]
|
let pos = getpos('.')[1:2]
|
||||||
while search('\m[][(){}]','bW',a:stop)
|
let pat = '[][(){};]'
|
||||||
if !s:skip_func()
|
while search('\m'.pat,'bW',a:stop)
|
||||||
let idx = stridx('])}',s:looking_at())
|
if s:skip_func() | continue | endif
|
||||||
if idx + 1
|
let idx = stridx('])};',s:looking_at())
|
||||||
if !s:GetPair(['\[','(','{'][idx], '])}'[idx],'bW','s:skip_func()',2000,a:stop)
|
if idx is 3 | let pat = '[{}()]' | continue | endif
|
||||||
break
|
if idx + 1
|
||||||
endif
|
if s:GetPair(['\[','(','{'][idx], '])}'[idx],'bW','s:skip_func()',2000,a:stop) <= 0
|
||||||
else
|
break
|
||||||
return
|
|
||||||
endif
|
endif
|
||||||
|
else
|
||||||
|
return
|
||||||
endif
|
endif
|
||||||
endwhile
|
endwhile
|
||||||
call call('cursor',pos)
|
call call('cursor',pos)
|
||||||
@ -100,93 +115,91 @@ function s:token()
|
|||||||
return s:looking_at() =~ '\k' ? expand('<cword>') : s:looking_at()
|
return s:looking_at() =~ '\k' ? expand('<cword>') : s:looking_at()
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function s:b_token()
|
|
||||||
if s:looking_at() =~ '\k'
|
|
||||||
call search('\m\<','cbW')
|
|
||||||
endif
|
|
||||||
return search('\m\S','bW')
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function s:previous_token()
|
function s:previous_token()
|
||||||
let l:n = line('.')
|
let l:pos = getpos('.')[1:2]
|
||||||
while s:b_token()
|
if search('\m\k\{1,}\zs\k\|\S','bW')
|
||||||
if (s:looking_at() == '/' || line('.') != l:n && search('\m\/\/','nbW',
|
if (getline('.')[col('.')-2:col('.')-1] == '*/' || line('.') != l:pos[0] &&
|
||||||
\ line('.'))) && s:syn_at(line('.'),col('.')) =~? s:syng_com
|
\ getline('.') =~ '\%<'.col('.').'c\/\/') && s:syn_at(line('.'),col('.')) =~? s:syng_com
|
||||||
call search('\m\_[^/]\zs\/[/*]','bW')
|
while search('\m\S\ze\_s*\/[/*]','bW')
|
||||||
|
if s:syn_at(line('.'),col('.')) !~? s:syng_com
|
||||||
|
return s:token()
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
else
|
else
|
||||||
return s:token()
|
return s:token()
|
||||||
endif
|
endif
|
||||||
endwhile
|
endif
|
||||||
|
call call('cursor',l:pos)
|
||||||
return ''
|
return ''
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function s:others(p)
|
function s:expr_col()
|
||||||
return "((line2byte(line('.')) + col('.')) <= ".(line2byte(a:p[0]) + a:p[1]).") || ".s:skip_expr
|
if getline('.')[col('.')-2] == ':'
|
||||||
endfunction
|
return 1
|
||||||
|
|
||||||
function s:tern_skip(p)
|
|
||||||
return s:GetPair('{','}','nbW',s:others(a:p),200,a:p[0]) > 0
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function s:tern_col(p)
|
|
||||||
return s:GetPair('?',':\@<!::\@!','nbW',s:others(a:p)
|
|
||||||
\ .' || s:tern_skip('.string(a:p).')',200,a:p[0]) > 0
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function s:label_col()
|
|
||||||
let pos = getpos('.')[1:2]
|
|
||||||
let [s:looksyn,s:free] = pos
|
|
||||||
call s:alternatePair(0)
|
|
||||||
if s:save_pos('s:IsBlock')
|
|
||||||
let poss = getpos('.')[1:2]
|
|
||||||
return call('cursor',pos) || !s:tern_col(poss)
|
|
||||||
elseif s:looking_at() == ':'
|
|
||||||
return !s:tern_col([0,0])
|
|
||||||
endif
|
endif
|
||||||
|
let bal = 0
|
||||||
|
while search('\m[{}?:;]','bW')
|
||||||
|
if eval(s:skip_expr) | continue | endif
|
||||||
|
" switch (looking_at())
|
||||||
|
exe { '}': "if s:GetPair('{','}','bW',s:skip_expr,200) <= 0 | return | endif",
|
||||||
|
\ ';': "return",
|
||||||
|
\ '{': "return getpos('.')[1:2] != b:js_cache[1:] && !s:IsBlock()",
|
||||||
|
\ ':': "let bal -= getline('.')[max([col('.')-2,0]):col('.')] !~ '::'",
|
||||||
|
\ '?': "let bal += 1 | if bal > 0 | return 1 | endif" }[s:looking_at()]
|
||||||
|
endwhile
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" configurable regexes that define continuation lines, not including (, {, or [.
|
" configurable regexes that define continuation lines, not including (, {, or [.
|
||||||
let s:opfirst = '^' . get(g:,'javascript_opfirst',
|
let s:opfirst = '^' . get(g:,'javascript_opfirst',
|
||||||
\ '\%([<>=,?^%|*/&]\|\([-.:+]\)\1\@!\|!=\|in\%(stanceof\)\=\>\)')
|
\ '\C\%([<>=,?^%|*/&]\|\([-.:+]\)\1\@!\|!=\|in\%(stanceof\)\=\>\)')
|
||||||
let s:continuation = get(g:,'javascript_continuation',
|
let s:continuation = get(g:,'javascript_continuation',
|
||||||
\ '\%([<=,.~!?/*^%|&:]\|+\@<!+\|-\@<!-\|=\@<!>\|\<\%(typeof\|delete\|void\|in\|instanceof\)\)') . '$'
|
\ '\C\%([-+<>=,.~!?/*^%|&:]\|\<\%(typeof\|new\|delete\|void\|in\|instanceof\|await\)\)') . '$'
|
||||||
|
|
||||||
function s:continues(ln,con)
|
function s:continues(ln,con)
|
||||||
return !cursor(a:ln, match(' '.a:con,s:continuation)) &&
|
if !cursor(a:ln, match(' '.a:con,s:continuation))
|
||||||
\ eval((['s:syn_at(line("."),col(".")) !~? "regex"'] +
|
let teol = s:looking_at()
|
||||||
\ repeat(['s:previous_token() != "."'],5) + [1])[
|
if teol == '/'
|
||||||
\ index(split('/ typeof in instanceof void delete'),s:token())])
|
return s:syn_at(line('.'),col('.')) !~? 'regex'
|
||||||
|
elseif teol =~ '[-+>]'
|
||||||
|
return getline('.')[col('.')-2] != tr(teol,'>','=')
|
||||||
|
elseif teol =~ '\l'
|
||||||
|
return s:previous_token() != '.'
|
||||||
|
elseif teol == ':'
|
||||||
|
return s:expr_col()
|
||||||
|
endif
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" get the line of code stripped of comments and move cursor to the last
|
" get the line of code stripped of comments and move cursor to the last
|
||||||
" non-comment char.
|
" non-comment char.
|
||||||
function s:Trim(ln)
|
function s:Trim(ln)
|
||||||
let pline = substitute(getline(a:ln),'\s*$','','')
|
let pline = substitute(getline(a:ln),'\s*$','','')
|
||||||
let l:max = max([match(pline,'.*[^/]\zs\/[/*]'),0])
|
let l:max = max([strridx(pline,'//'), strridx(pline,'/*')])
|
||||||
while l:max && s:syn_at(a:ln, strlen(pline)) =~? s:syng_com
|
while l:max != -1 && s:syn_at(a:ln, strlen(pline)) =~? s:syng_com
|
||||||
let pline = substitute(strpart(pline, 0, l:max),'\s*$','','')
|
let pline = pline[: l:max]
|
||||||
let l:max = max([match(pline,'.*[^/]\zs\/[/*]'),0])
|
let l:max = max([strridx(pline,'//'), strridx(pline,'/*')])
|
||||||
|
let pline = substitute(pline[:-2],'\s*$','','')
|
||||||
endwhile
|
endwhile
|
||||||
return cursor(a:ln,strlen(pline)) ? pline : pline
|
return pline is '' || cursor(a:ln,strlen(pline)) ? pline : pline
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Find line above 'lnum' that isn't empty or in a comment
|
" Find line above 'lnum' that isn't empty or in a comment
|
||||||
function s:PrevCodeLine(lnum)
|
function s:PrevCodeLine(lnum)
|
||||||
let l:n = prevnonblank(a:lnum)
|
let [l:pos, l:n] = [getpos('.')[1:2], prevnonblank(a:lnum)]
|
||||||
while l:n
|
while l:n
|
||||||
if getline(l:n) =~ '^\s*\/[/*]'
|
if getline(l:n) =~ '^\s*\/[/*]'
|
||||||
if (stridx(getline(l:n),'`') > 0 || getline(l:n-1)[-1:] == '\') &&
|
|
||||||
\ s:syn_at(l:n,1) =~? s:syng_str
|
|
||||||
return l:n
|
|
||||||
endif
|
|
||||||
let l:n = prevnonblank(l:n-1)
|
let l:n = prevnonblank(l:n-1)
|
||||||
elseif s:syn_at(l:n,1) =~? s:syng_com
|
elseif stridx(getline(l:n), '*/') + 1 && s:syn_at(l:n,1) =~? s:syng_com
|
||||||
let l:n = s:save_pos('eval',
|
call cursor(l:n,1)
|
||||||
\ 'cursor('.l:n.',1) + search(''\m\/\*'',"bW")')
|
keepjumps norm! [*
|
||||||
|
let l:n = search('\m\S','nbW')
|
||||||
else
|
else
|
||||||
return l:n
|
break
|
||||||
endif
|
endif
|
||||||
endwhile
|
endwhile
|
||||||
|
call call('cursor',l:pos)
|
||||||
|
return l:n
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Check if line 'lnum' has a balanced amount of parentheses.
|
" Check if line 'lnum' has a balanced amount of parentheses.
|
||||||
@ -201,7 +214,9 @@ function s:Balanced(lnum)
|
|||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
let pos = match(l:line, '[][(){}]', pos + 1)
|
let pos = match(l:line, (l:open ?
|
||||||
|
\ '['.escape(tr(l:line[pos],'({[]})',')}][{(').l:line[pos],']').']' :
|
||||||
|
\ '[][(){}]'), pos + 1)
|
||||||
endwhile
|
endwhile
|
||||||
return !l:open
|
return !l:open
|
||||||
endfunction
|
endfunction
|
||||||
@ -210,20 +225,21 @@ function s:OneScope(lnum)
|
|||||||
let pline = s:Trim(a:lnum)
|
let pline = s:Trim(a:lnum)
|
||||||
let kw = 'else do'
|
let kw = 'else do'
|
||||||
if pline[-1:] == ')' && s:GetPair('(', ')', 'bW', s:skip_expr, 100) > 0
|
if pline[-1:] == ')' && s:GetPair('(', ')', 'bW', s:skip_expr, 100) > 0
|
||||||
call s:previous_token()
|
if s:previous_token() =~# '^\%(await\|each\)$'
|
||||||
let kw = 'for if let while with'
|
|
||||||
if index(split('await each'),s:token()) + 1
|
|
||||||
call s:previous_token()
|
call s:previous_token()
|
||||||
let kw = 'for'
|
let kw = 'for'
|
||||||
|
else
|
||||||
|
let kw = 'for if let while with'
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
return pline[-2:] == '=>' || index(split(kw),s:token()) + 1 &&
|
return pline[-2:] == '=>' || index(split(kw),s:token()) + 1 &&
|
||||||
\ s:save_pos('s:previous_token') != '.'
|
\ s:save_pos('s:previous_token') != '.'
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" returns braceless levels started by 'i' and above lines * &sw. 'num' is the
|
" returns braceless levels started by 'i' and above lines * shiftwidth().
|
||||||
" lineNr which encloses the entire context, 'cont' if whether line 'i' + 1 is
|
" 'num' is the lineNr which encloses the entire context, 'cont' if whether
|
||||||
" a continued expression, which could have started in a braceless context
|
" line 'i' + 1 is a continued expression, which could have started in a
|
||||||
|
" braceless context
|
||||||
function s:iscontOne(i,num,cont)
|
function s:iscontOne(i,num,cont)
|
||||||
let [l:i, l:num, bL] = [a:i, a:num + !a:num, 0]
|
let [l:i, l:num, bL] = [a:i, a:num + !a:num, 0]
|
||||||
let pind = a:num ? indent(l:num) + s:W : 0
|
let pind = a:num ? indent(l:num) + s:W : 0
|
||||||
@ -246,18 +262,23 @@ function s:IsBlock()
|
|||||||
if s:looking_at() == '{'
|
if s:looking_at() == '{'
|
||||||
let l:n = line('.')
|
let l:n = line('.')
|
||||||
let char = s:previous_token()
|
let char = s:previous_token()
|
||||||
let syn = char =~ '[{>/]' ? s:syn_at(line('.'),col('.')-(char == '{')) : ''
|
if match(s:stack,'\cxml\|jsx') + 1 && s:syn_at(line('.'),col('.')-1) =~? 'xml\|jsx'
|
||||||
if syn =~? 'xml\|jsx'
|
|
||||||
return char != '{'
|
return char != '{'
|
||||||
elseif char =~ '\k'
|
elseif char =~ '\k'
|
||||||
return index(split('return const let import export yield default delete var await void typeof throw case new in instanceof')
|
if char ==# 'type'
|
||||||
\ ,char) < (line('.') != l:n) || s:previous_token() == '.'
|
return s:previous_token() !~# '^\%(im\|ex\)port$'
|
||||||
|
endif
|
||||||
|
return index(split('return const let import export extends yield default delete var await void typeof throw case new of in instanceof')
|
||||||
|
\ ,char) < (line('.') != l:n) || s:save_pos('s:previous_token') == '.'
|
||||||
elseif char == '>'
|
elseif char == '>'
|
||||||
return getline('.')[col('.')-2] == '=' || syn =~? '^jsflow'
|
return getline('.')[col('.')-2] == '=' || s:syn_at(line('.'),col('.')) =~? '^jsflow'
|
||||||
elseif char == ':'
|
elseif char == ':'
|
||||||
return getline('.')[col('.')-2] != ':' && s:label_col()
|
return !s:save_pos('s:expr_col')
|
||||||
|
elseif char == '/'
|
||||||
|
return s:syn_at(line('.'),col('.')) =~? 'regex'
|
||||||
endif
|
endif
|
||||||
return syn =~? 'regex' || char !~ '[-=~!<*+,/?^%|&([]'
|
return char !~ '[=~!<*,?^%|&([]' &&
|
||||||
|
\ (char !~ '[-+]' || l:n != line('.') && getline('.')[col('.')-2] == char)
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
@ -266,7 +287,9 @@ function GetJavascriptIndent()
|
|||||||
" Get the current line.
|
" Get the current line.
|
||||||
call cursor(v:lnum,1)
|
call cursor(v:lnum,1)
|
||||||
let l:line = getline('.')
|
let l:line = getline('.')
|
||||||
let syns = s:syn_at(v:lnum, 1)
|
" use synstack as it validates syn state and works in an empty line
|
||||||
|
let s:stack = map(synstack(v:lnum,1),"synIDattr(v:val,'name')")
|
||||||
|
let syns = get(s:stack,-1,'')
|
||||||
|
|
||||||
" start with strings,comments,etc.
|
" start with strings,comments,etc.
|
||||||
if syns =~? s:syng_com
|
if syns =~? s:syng_com
|
||||||
@ -275,7 +298,7 @@ function GetJavascriptIndent()
|
|||||||
elseif l:line !~ '^\s*\/[/*]'
|
elseif l:line !~ '^\s*\/[/*]'
|
||||||
return -1
|
return -1
|
||||||
endif
|
endif
|
||||||
elseif syns =~? s:syng_str && l:line !~ '^[''"]'
|
elseif syns =~? s:syng_str
|
||||||
if b:js_cache[0] == v:lnum - 1 && s:Balanced(v:lnum-1)
|
if b:js_cache[0] == v:lnum - 1 && s:Balanced(v:lnum-1)
|
||||||
let b:js_cache[0] = v:lnum
|
let b:js_cache[0] = v:lnum
|
||||||
endif
|
endif
|
||||||
@ -295,69 +318,60 @@ function GetJavascriptIndent()
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
" the containing paren, bracket, or curly. Many hacks for performance
|
" the containing paren, bracket, or curly. Many hacks for performance
|
||||||
let idx = strlen(l:line) ? stridx('])}',l:line[0]) : -1
|
let idx = index([']',')','}'],l:line[0])
|
||||||
if b:js_cache[0] >= l:lnum && b:js_cache[0] < v:lnum &&
|
if b:js_cache[0] >= l:lnum && b:js_cache[0] < v:lnum &&
|
||||||
\ (b:js_cache[0] > l:lnum || s:Balanced(l:lnum))
|
\ (b:js_cache[0] > l:lnum || s:Balanced(l:lnum))
|
||||||
call call('cursor',b:js_cache[1:])
|
call call('cursor',b:js_cache[1:])
|
||||||
else
|
else
|
||||||
let [s:looksyn, s:free, top] = [v:lnum - 1, 1, (!indent(l:lnum) &&
|
let [s:looksyn, s:checkIn, top] = [v:lnum - 1, 0, (!indent(l:lnum) &&
|
||||||
\ s:syn_at(l:lnum,1) !~? s:syng_str) * l:lnum]
|
\ s:syn_at(l:lnum,1) !~? s:syng_str) * l:lnum]
|
||||||
if idx + 1
|
if idx + 1
|
||||||
call s:GetPair(['\[','(','{'][idx], '])}'[idx],'bW','s:skip_func()',2000,top)
|
call s:GetPair(['\[','(','{'][idx],'])}'[idx],'bW','s:skip_func()',2000,top)
|
||||||
elseif indent(v:lnum) && syns =~? 'block'
|
elseif getline(v:lnum) !~ '^\S' && syns =~? 'block'
|
||||||
call s:GetPair('{','}','bW','s:skip_func()',2000,top)
|
call s:GetPair('{','}','bW','s:skip_func()',2000,top)
|
||||||
else
|
else
|
||||||
call s:alternatePair(top)
|
call s:alternatePair(top)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if idx + 1 || l:line[:1] == '|}'
|
|
||||||
if idx == 2 && search('\m\S','bW',line('.')) && s:looking_at() == ')'
|
|
||||||
call s:GetPair('(',')','bW',s:skip_expr,200)
|
|
||||||
endif
|
|
||||||
return indent('.')
|
|
||||||
endif
|
|
||||||
|
|
||||||
let b:js_cache = [v:lnum] + (line('.') == v:lnum ? [0,0] : getpos('.')[1:2])
|
let b:js_cache = [v:lnum] + (line('.') == v:lnum ? [0,0] : getpos('.')[1:2])
|
||||||
let num = b:js_cache[1]
|
let num = b:js_cache[1]
|
||||||
|
|
||||||
let [s:W, isOp, bL, switch_offset] = [s:sw(),0,0,0]
|
let [s:W, isOp, bL, switch_offset] = [s:sw(),0,0,0]
|
||||||
if !num || s:IsBlock()
|
if !num || s:IsBlock()
|
||||||
|
let ilnum = line('.')
|
||||||
let pline = s:save_pos('s:Trim',l:lnum)
|
let pline = s:save_pos('s:Trim',l:lnum)
|
||||||
if num && s:looking_at() == ')' && s:GetPair('(', ')', 'bW', s:skip_expr, 100) > 0
|
if num && s:looking_at() == ')' && s:GetPair('(', ')', 'bW', s:skip_expr, 100) > 0
|
||||||
let num = line('.')
|
let num = ilnum == num ? line('.') : num
|
||||||
if s:previous_token() ==# 'switch' && s:previous_token() != '.'
|
if idx < 0 && s:previous_token() ==# 'switch' && s:previous_token() != '.'
|
||||||
if &cino !~ ':' || !has('float')
|
if &cino !~ ':'
|
||||||
let switch_offset = s:W
|
let switch_offset = s:W
|
||||||
else
|
else
|
||||||
let cinc = matchlist(&cino,'.*:\(-\)\=\([0-9.]*\)\(s\)\=\C')
|
let switch_offset = max([-indent(num),s:parse_cino(':')])
|
||||||
let switch_offset = float2nr(str2float(cinc[1].(strlen(cinc[2]) ? cinc[2] : strlen(cinc[3])))
|
|
||||||
\ * (strlen(cinc[3]) ? s:W : 1))
|
|
||||||
endif
|
endif
|
||||||
if pline[-1:] != '.' && l:line =~# '^\%(default\|case\)\>'
|
if pline[-1:] != '.' && l:line =~# '^\%(default\|case\)\>'
|
||||||
return indent(num) + switch_offset
|
return indent(num) + switch_offset
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
if pline[-1:] !~ '[{;]'
|
if idx < 0 && pline[-1:] !~ '[{;]'
|
||||||
if pline =~# ':\@<!:$'
|
let isOp = (l:line =~# s:opfirst || s:continues(l:lnum,pline)) * s:W
|
||||||
call cursor(l:lnum,strlen(pline))
|
let bL = s:iscontOne(l:lnum,b:js_cache[1],isOp)
|
||||||
let isOp = s:tern_col(b:js_cache[1:2])
|
|
||||||
else
|
|
||||||
let isOp = l:line =~# s:opfirst || s:continues(l:lnum,pline)
|
|
||||||
endif
|
|
||||||
let bL = s:iscontOne(l:lnum,num,isOp)
|
|
||||||
let bL -= (bL && l:line[0] == '{') * s:W
|
let bL -= (bL && l:line[0] == '{') * s:W
|
||||||
endif
|
endif
|
||||||
|
elseif idx < 0 && getline(b:js_cache[1])[b:js_cache[2]-1] == '(' && &cino =~ '('
|
||||||
|
let pval = s:parse_cino('(')
|
||||||
|
return !pval ? (s:parse_cino('w') ? 0 : -(!!search('\m\S','W'.s:z,num))) + virtcol('.') :
|
||||||
|
\ max([indent('.') + pval + (s:GetPair('(',')','nbrmW',s:skip_expr,100,num) * s:W),0])
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" main return
|
" main return
|
||||||
if isOp
|
if l:line =~ '^\%([])}]\||}\)'
|
||||||
return (num ? indent(num) : -s:W) + (s:W * 2) + switch_offset + bL
|
return max([indent(num),0])
|
||||||
elseif num
|
elseif num
|
||||||
return indent(num) + s:W + switch_offset + bL
|
return indent(num) + s:W + switch_offset + bL + isOp
|
||||||
endif
|
endif
|
||||||
return bL
|
return bL + isOp
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
let &cpo = s:cpo_save
|
let &cpo = s:cpo_save
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
" Vim indent file
|
" Vim indent file
|
||||||
" Language: JSON
|
" Language: JSON
|
||||||
" Mantainer: Eli Parra <eli@elzr.com> https://github.com/elzr/vim-json
|
" Mantainer: Eli Parra <eli@elzr.com> https://github.com/elzr/vim-json
|
||||||
" Last Change: 2014 Aug 29
|
" Last Change: 2017 Jun 13
|
||||||
" https://github.com/jakar/vim-json/commit/20b650e22aa750c4ab6a66aa646bdd95d7cd548a#diff-e81fc111b2052e306d126bd9989f7b7c
|
" https://github.com/jakar/vim-json/commit/20b650e22aa750c4ab6a66aa646bdd95d7cd548a#diff-e81fc111b2052e306d126bd9989f7b7c
|
||||||
" Original Author: Rogerz Zhang <rogerz.zhang at gmail.com> http://github.com/rogerz/vim-json
|
" Original Author: Rogerz Zhang <rogerz.zhang at gmail.com> http://github.com/rogerz/vim-json
|
||||||
" Acknowledgement: Based off of vim-javascript maintained by Darrick Wiebe
|
" Acknowledgement: Based off of vim-javascript maintained by Darrick Wiebe
|
||||||
@ -141,7 +141,7 @@ function GetJSONIndent()
|
|||||||
|
|
||||||
" If the previous line ended with a block opening, add a level of indent.
|
" If the previous line ended with a block opening, add a level of indent.
|
||||||
" if s:Match(lnum, s:block_regex)
|
" if s:Match(lnum, s:block_regex)
|
||||||
" return indent(lnum) + &sw
|
" return indent(lnum) + shiftwidth()
|
||||||
" endif
|
" endif
|
||||||
|
|
||||||
" If the previous line contained an opening bracket, and we are still in it,
|
" If the previous line contained an opening bracket, and we are still in it,
|
||||||
@ -149,7 +149,7 @@ function GetJSONIndent()
|
|||||||
if line =~ '[[({]'
|
if line =~ '[[({]'
|
||||||
let counts = s:LineHasOpeningBrackets(lnum)
|
let counts = s:LineHasOpeningBrackets(lnum)
|
||||||
if counts[0] == '1' || counts[1] == '1' || counts[2] == '1'
|
if counts[0] == '1' || counts[1] == '1' || counts[2] == '1'
|
||||||
return ind + &sw
|
return ind + shiftwidth()
|
||||||
else
|
else
|
||||||
call cursor(v:lnum, vcol)
|
call cursor(v:lnum, vcol)
|
||||||
end
|
end
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
" Vim indent file
|
" Vim indent file
|
||||||
" Language: Liquid
|
" Language: Liquid
|
||||||
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
||||||
" Last Change: 2016 Aug 29
|
" Last Change: 2017 Jun 13
|
||||||
|
|
||||||
if exists('b:did_indent')
|
if exists('b:did_indent')
|
||||||
finish
|
finish
|
||||||
@ -54,7 +54,7 @@ function! GetLiquidIndent(...)
|
|||||||
let line = substitute(line,'\C^\%(\s*{%\s*end\w*\s*%}\)\+','','')
|
let line = substitute(line,'\C^\%(\s*{%\s*end\w*\s*%}\)\+','','')
|
||||||
let line .= matchstr(cline,'\C^\%(\s*{%\s*end\w*\s*%}\)\+')
|
let line .= matchstr(cline,'\C^\%(\s*{%\s*end\w*\s*%}\)\+')
|
||||||
let cline = substitute(cline,'\C^\%(\s*{%\s*end\w*\s*%}\)\+','','')
|
let cline = substitute(cline,'\C^\%(\s*{%\s*end\w*\s*%}\)\+','','')
|
||||||
let sw = exists('*shiftwidth') ? shiftwidth() : &sw
|
let sw = shiftwidth()
|
||||||
let ind += sw * s:count(line,'{%\s*\%(if\|elsif\|else\|unless\|ifchanged\|case\|when\|for\|empty\|tablerow\|capture\)\>')
|
let ind += sw * s:count(line,'{%\s*\%(if\|elsif\|else\|unless\|ifchanged\|case\|when\|for\|empty\|tablerow\|capture\)\>')
|
||||||
let ind -= sw * s:count(line,'{%\s*end\%(if\|unless\|ifchanged\|case\|for\|tablerow\|capture\)\>')
|
let ind -= sw * s:count(line,'{%\s*end\%(if\|unless\|ifchanged\|case\|for\|tablerow\|capture\)\>')
|
||||||
let ind -= sw * s:count(cline,'{%\s*\%(elsif\|else\|when\|empty\)\>')
|
let ind -= sw * s:count(cline,'{%\s*\%(elsif\|else\|when\|empty\)\>')
|
||||||
|
@ -38,24 +38,24 @@ function! GetLogtalkIndent()
|
|||||||
endif
|
endif
|
||||||
" Check for entity opening directive on previous line
|
" Check for entity opening directive on previous line
|
||||||
if pline =~ '^\s*:-\s\(object\|protocol\|category\)\ze(.*,$'
|
if pline =~ '^\s*:-\s\(object\|protocol\|category\)\ze(.*,$'
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
" Check for clause head on previous line
|
" Check for clause head on previous line
|
||||||
elseif pline =~ ':-\s*\(%.*\)\?$'
|
elseif pline =~ ':-\s*\(%.*\)\?$'
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
" Check for entity closing directive on previous line
|
" Check for entity closing directive on previous line
|
||||||
elseif pline =~ '^\s*:-\send_\(object\|protocol\|category\)\.\(%.*\)\?$'
|
elseif pline =~ '^\s*:-\send_\(object\|protocol\|category\)\.\(%.*\)\?$'
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
" Check for end of clause on previous line
|
" Check for end of clause on previous line
|
||||||
elseif pline =~ '\.\s*\(%.*\)\?$'
|
elseif pline =~ '\.\s*\(%.*\)\?$'
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
" Check for opening conditional on previous line
|
" Check for opening conditional on previous line
|
||||||
if pline =~ '^\s*\([(;]\|->\)' && pline !~ '\.\s*\(%.*\)\?$' && pline !~ '^.*\([)][,]\s*\(%.*\)\?$\)'
|
if pline =~ '^\s*\([(;]\|->\)' && pline !~ '\.\s*\(%.*\)\?$' && pline !~ '^.*\([)][,]\s*\(%.*\)\?$\)'
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
" Check for closing an unclosed paren, or middle ; or ->
|
" Check for closing an unclosed paren, or middle ; or ->
|
||||||
if line =~ '^\s*\([);]\|->\)'
|
if line =~ '^\s*\([);]\|->\)'
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
return ind
|
return ind
|
||||||
endfunction
|
endfunction
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
" Language: Lua script
|
" Language: Lua script
|
||||||
" Maintainer: Marcus Aurelius Farias <marcus.cf 'at' bol.com.br>
|
" Maintainer: Marcus Aurelius Farias <marcus.cf 'at' bol.com.br>
|
||||||
" First Author: Max Ischenko <mfi 'at' ukr.net>
|
" First Author: Max Ischenko <mfi 'at' ukr.net>
|
||||||
" Last Change: 2016 Jan 10
|
" Last Change: 2017 Jun 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")
|
||||||
@ -48,7 +48,7 @@ function! GetLuaIndent()
|
|||||||
" Add 'shiftwidth' if what we found previously is not in a comment and
|
" Add 'shiftwidth' if what we found previously is not in a comment and
|
||||||
" an "end" or "until" is not present on the same line.
|
" an "end" or "until" is not present on the same line.
|
||||||
if synIDattr(synID(prevlnum, midx + 1, 1), "name") != "luaComment" && prevline !~ '\<end\>\|\<until\>'
|
if synIDattr(synID(prevlnum, midx + 1, 1), "name") != "luaComment" && prevline !~ '\<end\>\|\<until\>'
|
||||||
let ind = ind + &shiftwidth
|
let ind = ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -56,7 +56,7 @@ function! GetLuaIndent()
|
|||||||
" This is the part that requires 'indentkeys'.
|
" This is the part that requires 'indentkeys'.
|
||||||
let midx = match(getline(v:lnum), '^\s*\%(end\>\|else\>\|elseif\>\|until\>\|}\)')
|
let midx = match(getline(v:lnum), '^\s*\%(end\>\|else\>\|elseif\>\|until\>\|}\)')
|
||||||
if midx != -1 && synIDattr(synID(v:lnum, midx + 1, 1), "name") != "luaComment"
|
if midx != -1 && synIDattr(synID(v:lnum, midx + 1, 1), "name") != "luaComment"
|
||||||
let ind = ind - &shiftwidth
|
let ind = ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return ind
|
return ind
|
||||||
|
@ -44,9 +44,9 @@ function GetMatlabIndent(lnum)
|
|||||||
" See if this line does not follow the line right after an openblock
|
" See if this line does not follow the line right after an openblock
|
||||||
if getline(plnum) =~ '^\s*\(for\|if\|else\|elseif\|case\|while\|switch\|try\|otherwise\|catch\)\>'
|
if getline(plnum) =~ '^\s*\(for\|if\|else\|elseif\|case\|while\|switch\|try\|otherwise\|catch\)\>'
|
||||||
" See if the user has already dedented
|
" See if the user has already dedented
|
||||||
elseif indent(v:lnum) > curind - &sw
|
elseif indent(v:lnum) > curind - shiftwidth()
|
||||||
" If not, recommend one dedent
|
" If not, recommend one dedent
|
||||||
let curind = curind - &sw
|
let curind = curind - shiftwidth()
|
||||||
else
|
else
|
||||||
" Otherwise, trust the user
|
" Otherwise, trust the user
|
||||||
return -1
|
return -1
|
||||||
@ -56,9 +56,9 @@ function GetMatlabIndent(lnum)
|
|||||||
" If the previous line opened a block
|
" If the previous line opened a block
|
||||||
elseif getline(plnum) =~ '^\s*\(for\|if\|else\|elseif\|case\|while\|switch\|try\|otherwise\|catch\)\>'
|
elseif getline(plnum) =~ '^\s*\(for\|if\|else\|elseif\|case\|while\|switch\|try\|otherwise\|catch\)\>'
|
||||||
" See if the user has already indented
|
" See if the user has already indented
|
||||||
if indent(v:lnum) < curind + &sw
|
if indent(v:lnum) < curind + shiftwidth()
|
||||||
"If not, recommend indent
|
"If not, recommend indent
|
||||||
let curind = curind + &sw
|
let curind = curind + shiftwidth()
|
||||||
else
|
else
|
||||||
" Otherwise, trust the user
|
" Otherwise, trust the user
|
||||||
return -1
|
return -1
|
||||||
|
@ -49,7 +49,7 @@ function GetMmaIndent()
|
|||||||
" also, indent only if this line if this line isn't starting a new
|
" also, indent only if this line if this line isn't starting a new
|
||||||
" block... TODO - fix this with indentkeys?
|
" block... TODO - fix this with indentkeys?
|
||||||
if getline(v:lnum-1) =~ '\\\@<!\%(\[[^\]]*\|([^)]*\|{[^}]*\)$' && getline(v:lnum) !~ '\s\+[\[({]'
|
if getline(v:lnum-1) =~ '\\\@<!\%(\[[^\]]*\|([^)]*\|{[^}]*\)$' && getline(v:lnum) !~ '\s\+[\[({]'
|
||||||
let ind = ind+&sw
|
let ind = ind+shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" if this line had unmatched closing block,
|
" if this line had unmatched closing block,
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
" Mike Leary <leary@nwlink.com>
|
" Mike Leary <leary@nwlink.com>
|
||||||
" Markus Mottl <markus.mottl@gmail.com>
|
" Markus Mottl <markus.mottl@gmail.com>
|
||||||
" URL: http://www.ocaml.info/vim/indent/ocaml.vim
|
" URL: http://www.ocaml.info/vim/indent/ocaml.vim
|
||||||
" Last Change: 2013 Jun 29
|
" Last Change: 2017 Jun 13
|
||||||
" 2005 Jun 25 - Fixed multiple bugs due to 'else\nreturn ind' working
|
" 2005 Jun 25 - Fixed multiple bugs due to 'else\nreturn ind' working
|
||||||
" 2005 May 09 - Added an option to not indent OCaml-indents specially (MM)
|
" 2005 May 09 - Added an option to not indent OCaml-indents specially (MM)
|
||||||
" 2013 June - commented textwidth (Marc Weber)
|
" 2013 June - commented textwidth (Marc Weber)
|
||||||
@ -101,7 +101,7 @@ function! GetOCamlIndent()
|
|||||||
|
|
||||||
" Return double 'shiftwidth' after lines matching:
|
" Return double 'shiftwidth' after lines matching:
|
||||||
if lline =~ '^\s*|.*->\s*$'
|
if lline =~ '^\s*|.*->\s*$'
|
||||||
return ind + &sw + &sw
|
return ind + 2 * shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let line = getline(v:lnum)
|
let line = getline(v:lnum)
|
||||||
@ -172,7 +172,7 @@ function! GetOCamlIndent()
|
|||||||
" Indent if current line begins with 'and':
|
" Indent if current line begins with 'and':
|
||||||
elseif line =~ '^\s*and\>'
|
elseif line =~ '^\s*and\>'
|
||||||
if lline !~ '^\s*\(and\|let\|type\)\>\|\<end\s*$'
|
if lline !~ '^\s*\(and\|let\|type\)\>\|\<end\s*$'
|
||||||
return ind - &sw
|
return ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Indent if current line begins with 'with':
|
" Indent if current line begins with 'with':
|
||||||
@ -199,14 +199,14 @@ function! GetOCamlIndent()
|
|||||||
" or 'method':
|
" or 'method':
|
||||||
elseif line =~ '^\s*\(constraint\|inherit\|initializer\|method\)\>'
|
elseif line =~ '^\s*\(constraint\|inherit\|initializer\|method\)\>'
|
||||||
if lline !~ s:obj
|
if lline !~ s:obj
|
||||||
return indent(search('\<\(object\|object\s*(.*)\)\s*$', 'bW')) + &sw
|
return indent(search('\<\(object\|object\s*(.*)\)\s*$', 'bW')) + shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Add a 'shiftwidth' after lines ending with:
|
" Add a 'shiftwidth' after lines ending with:
|
||||||
if lline =~ '\(:\|=\|->\|<-\|(\|\[\|{\|{<\|\[|\|\[<\|\<\(begin\|do\|else\|fun\|function\|functor\|if\|initializer\|object\|parser\|private\|sig\|struct\|then\|try\)\|\<object\s*(.*)\)\s*$'
|
if lline =~ '\(:\|=\|->\|<-\|(\|\[\|{\|{<\|\[|\|\[<\|\<\(begin\|do\|else\|fun\|function\|functor\|if\|initializer\|object\|parser\|private\|sig\|struct\|then\|try\)\|\<object\s*(.*)\)\s*$'
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
|
|
||||||
" Back to normal indent after lines ending with ';;':
|
" Back to normal indent after lines ending with ';;':
|
||||||
elseif lline =~ ';;\s*$' && lline !~ '^\s*;;'
|
elseif lline =~ ';;\s*$' && lline !~ '^\s*;;'
|
||||||
@ -263,7 +263,7 @@ function! GetOCamlIndent()
|
|||||||
|
|
||||||
" Subtract a 'shiftwidth' after lines matching 'match ... with parser':
|
" Subtract a 'shiftwidth' after lines matching 'match ... with parser':
|
||||||
if lline =~ '\<match\>.*\<with\>\s*\<parser\s*$'
|
if lline =~ '\<match\>.*\<with\>\s*\<parser\s*$'
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return ind
|
return ind
|
||||||
|
@ -131,7 +131,7 @@ function GetOccamIndent()
|
|||||||
if line =~ s:FirstLevelIndent || (line =~ s:FirstLevelNonColonEndIndent && line !~ s:ColonEnd)
|
if line =~ s:FirstLevelIndent || (line =~ s:FirstLevelNonColonEndIndent && line !~ s:ColonEnd)
|
||||||
\ || (line !~ s:ColonStart && (prevline =~ s:SecondLevelIndent
|
\ || (line !~ s:ColonStart && (prevline =~ s:SecondLevelIndent
|
||||||
\ || (prevline =~ s:SecondLevelNonColonEndIndent && prevline !~ s:ColonEnd)))
|
\ || (prevline =~ s:SecondLevelNonColonEndIndent && prevline !~ s:ColonEnd)))
|
||||||
let curindent = curindent + &shiftwidth
|
let curindent = curindent + shiftwidth()
|
||||||
|
|
||||||
" Restore magic
|
" Restore magic
|
||||||
if !save_magic|setlocal nomagic|endif
|
if !save_magic|setlocal nomagic|endif
|
||||||
@ -153,7 +153,7 @@ function GetOccamIndent()
|
|||||||
|
|
||||||
while !found
|
while !found
|
||||||
|
|
||||||
if indent(prevlinenum) == curindent - &shiftwidth
|
if indent(prevlinenum) == curindent - shiftwidth()
|
||||||
let found = 1
|
let found = 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -171,7 +171,7 @@ function GetOccamIndent()
|
|||||||
|
|
||||||
if prevlinenum > 0
|
if prevlinenum > 0
|
||||||
if getline(prevlinenum) =~ s:SecondLevelIndent
|
if getline(prevlinenum) =~ s:SecondLevelIndent
|
||||||
let curindent = curindent + &shiftwidth
|
let curindent = curindent + shiftwidth()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
" Language: Pascal
|
" Language: Pascal
|
||||||
" Maintainer: Neil Carter <n.carter@swansea.ac.uk>
|
" Maintainer: Neil Carter <n.carter@swansea.ac.uk>
|
||||||
" Created: 2004 Jul 13
|
" Created: 2004 Jul 13
|
||||||
" Last Change: 2011 Apr 01
|
" Last Change: 2017 Jun 13
|
||||||
"
|
"
|
||||||
" This is version 2.0, a complete rewrite.
|
" This is version 2.0, a complete rewrite.
|
||||||
"
|
"
|
||||||
@ -102,12 +102,12 @@ function! GetPascalIndent( line_num )
|
|||||||
|
|
||||||
" If the PREVIOUS LINE ended in these items, always indent
|
" If the PREVIOUS LINE ended in these items, always indent
|
||||||
if prev_codeline =~ '\<\(type\|const\|var\)$'
|
if prev_codeline =~ '\<\(type\|const\|var\)$'
|
||||||
return indnt + &shiftwidth
|
return indnt + shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if prev_codeline =~ '\<repeat$'
|
if prev_codeline =~ '\<repeat$'
|
||||||
if this_codeline !~ '^\s*until\>'
|
if this_codeline !~ '^\s*until\>'
|
||||||
return indnt + &shiftwidth
|
return indnt + shiftwidth()
|
||||||
else
|
else
|
||||||
return indnt
|
return indnt
|
||||||
endif
|
endif
|
||||||
@ -115,7 +115,7 @@ function! GetPascalIndent( line_num )
|
|||||||
|
|
||||||
if prev_codeline =~ '\<\(begin\|record\)$'
|
if prev_codeline =~ '\<\(begin\|record\)$'
|
||||||
if this_codeline !~ '^\s*end\>'
|
if this_codeline !~ '^\s*end\>'
|
||||||
return indnt + &shiftwidth
|
return indnt + shiftwidth()
|
||||||
else
|
else
|
||||||
return indnt
|
return indnt
|
||||||
endif
|
endif
|
||||||
@ -125,10 +125,10 @@ function! GetPascalIndent( line_num )
|
|||||||
" followed by "begin"
|
" followed by "begin"
|
||||||
if prev_codeline =~ '\<\(\|else\|then\|do\)$' || prev_codeline =~ ':$'
|
if prev_codeline =~ '\<\(\|else\|then\|do\)$' || prev_codeline =~ ':$'
|
||||||
if this_codeline !~ '^\s*begin\>'
|
if this_codeline !~ '^\s*begin\>'
|
||||||
return indnt + &shiftwidth
|
return indnt + shiftwidth()
|
||||||
else
|
else
|
||||||
" If it does start with "begin" then keep the same indent
|
" If it does start with "begin" then keep the same indent
|
||||||
"return indnt + &shiftwidth
|
"return indnt + shiftwidth()
|
||||||
return indnt
|
return indnt
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@ -137,7 +137,7 @@ function! GetPascalIndent( line_num )
|
|||||||
" only the line before the current one. TODO: Get it working for
|
" only the line before the current one. TODO: Get it working for
|
||||||
" parameter lists longer than two lines.
|
" parameter lists longer than two lines.
|
||||||
if prev_codeline =~ '([^)]\+$'
|
if prev_codeline =~ '([^)]\+$'
|
||||||
return indnt + &shiftwidth
|
return indnt + shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
@ -146,7 +146,7 @@ function! GetPascalIndent( line_num )
|
|||||||
" Lines starting with "else", but not following line ending with
|
" Lines starting with "else", but not following line ending with
|
||||||
" "end".
|
" "end".
|
||||||
if this_codeline =~ '^\s*else\>' && prev_codeline !~ '\<end$'
|
if this_codeline =~ '^\s*else\>' && prev_codeline !~ '\<end$'
|
||||||
return indnt - &shiftwidth
|
return indnt - shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Lines after a single-statement branch/loop.
|
" Lines after a single-statement branch/loop.
|
||||||
@ -160,16 +160,16 @@ function! GetPascalIndent( line_num )
|
|||||||
" additional unindentation.
|
" additional unindentation.
|
||||||
if this_codeline =~ '^\s*\(end;\|except\|finally\|\)$'
|
if this_codeline =~ '^\s*\(end;\|except\|finally\|\)$'
|
||||||
" Note that we don't return from here.
|
" Note that we don't return from here.
|
||||||
return indnt - &shiftwidth - &shiftwidth
|
return indnt - 2 * shiftwidth()
|
||||||
endif
|
endif
|
||||||
return indnt - &shiftwidth
|
return indnt - shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Lines starting with "until" or "end". This rule must be overridden
|
" Lines starting with "until" or "end". This rule must be overridden
|
||||||
" by the one for "end" after a single-statement branch/loop. In
|
" by the one for "end" after a single-statement branch/loop. In
|
||||||
" other words that rule should come before this one.
|
" other words that rule should come before this one.
|
||||||
if this_codeline =~ '^\s*\(end\|until\)\>'
|
if this_codeline =~ '^\s*\(end\|until\)\>'
|
||||||
return indnt - &shiftwidth
|
return indnt - shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
@ -201,7 +201,7 @@ function! GetPascalIndent( line_num )
|
|||||||
|
|
||||||
" If the PREVIOUS LINE ended in these items, always indent.
|
" If the PREVIOUS LINE ended in these items, always indent.
|
||||||
if prev_codeline =~ '^\s*\(unit\|uses\|try\|except\|finally\|private\|protected\|public\|published\)$'
|
if prev_codeline =~ '^\s*\(unit\|uses\|try\|except\|finally\|private\|protected\|public\|published\)$'
|
||||||
return indnt + &shiftwidth
|
return indnt + shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" ???? Indent "procedure" and "functions" if they appear within an
|
" ???? Indent "procedure" and "functions" if they appear within an
|
||||||
@ -212,11 +212,11 @@ function! GetPascalIndent( line_num )
|
|||||||
" UNINDENT ONCE
|
" UNINDENT ONCE
|
||||||
|
|
||||||
if this_codeline =~ '^\s*\(except\|finally\)$'
|
if this_codeline =~ '^\s*\(except\|finally\)$'
|
||||||
return indnt - &shiftwidth
|
return indnt - shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if this_codeline =~ '^\s*\(private\|protected\|public\|published\)$'
|
if this_codeline =~ '^\s*\(private\|protected\|public\|published\)$'
|
||||||
return indnt - &shiftwidth
|
return indnt - shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
" Maintainer: vim-perl <vim-perl@googlegroups.com>
|
" Maintainer: vim-perl <vim-perl@googlegroups.com>
|
||||||
" Homepage: http://github.com/vim-perl/vim-perl
|
" Homepage: http://github.com/vim-perl/vim-perl
|
||||||
" Bugs/requests: http://github.com/vim-perl/vim-perl/issues
|
" Bugs/requests: http://github.com/vim-perl/vim-perl/issues
|
||||||
" Last Change: 2013-07-24
|
" Last Change: 2017 Jun 13
|
||||||
|
|
||||||
" Suggestions and improvements by :
|
" Suggestions and improvements by :
|
||||||
" Aaron J. Sherman (use syntax for hints)
|
" Aaron J. Sherman (use syntax for hints)
|
||||||
@ -138,9 +138,9 @@ function! GetPerlIndent()
|
|||||||
\ || synid =~ '^perl\(Sub\|Block\|Package\)Fold'
|
\ || synid =~ '^perl\(Sub\|Block\|Package\)Fold'
|
||||||
let brace = strpart(line, bracepos, 1)
|
let brace = strpart(line, bracepos, 1)
|
||||||
if brace == '(' || brace == '{' || brace == '['
|
if brace == '(' || brace == '{' || brace == '['
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
else
|
else
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
let bracepos = match(line, braceclass, bracepos + 1)
|
let bracepos = match(line, braceclass, bracepos + 1)
|
||||||
@ -152,25 +152,25 @@ function! GetPerlIndent()
|
|||||||
\ || synid == "perlMatchStartEnd"
|
\ || synid == "perlMatchStartEnd"
|
||||||
\ || synid == "perlBraces"
|
\ || synid == "perlBraces"
|
||||||
\ || synid =~ '^perl\(Sub\|Block\|Package\)Fold'
|
\ || synid =~ '^perl\(Sub\|Block\|Package\)Fold'
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
if line =~ '[{[(]\s*\(#[^])}]*\)\=$'
|
if line =~ '[{[(]\s*\(#[^])}]*\)\=$'
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
if cline =~ '^\s*[])}]'
|
if cline =~ '^\s*[])}]'
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Indent lines that begin with 'or' or 'and'
|
" Indent lines that begin with 'or' or 'and'
|
||||||
if cline =~ '^\s*\(or\|and\)\>'
|
if cline =~ '^\s*\(or\|and\)\>'
|
||||||
if line !~ '^\s*\(or\|and\)\>'
|
if line !~ '^\s*\(or\|and\)\>'
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
elseif line =~ '^\s*\(or\|and\)\>'
|
elseif line =~ '^\s*\(or\|and\)\>'
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return ind
|
return ind
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
" Maintainer: vim-perl <vim-perl@googlegroups.com>
|
" Maintainer: vim-perl <vim-perl@googlegroups.com>
|
||||||
" Homepage: http://github.com/vim-perl/vim-perl
|
" Homepage: http://github.com/vim-perl/vim-perl
|
||||||
" Bugs/requests: http://github.com/vim-perl/vim-perl/issues
|
" Bugs/requests: http://github.com/vim-perl/vim-perl/issues
|
||||||
" Last Change: 2013-07-21
|
" Last Change: 2017 Jun 13
|
||||||
" Contributors: Andy Lester <andy@petdance.com>
|
" Contributors: Andy Lester <andy@petdance.com>
|
||||||
" Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
|
" Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
|
||||||
"
|
"
|
||||||
@ -107,19 +107,19 @@ function! GetPerl6Indent()
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
if line =~ '[<«\[{(]\s*\(#[^)}\]»>]*\)\=$'
|
if line =~ '[<«\[{(]\s*\(#[^)}\]»>]*\)\=$'
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
if cline =~ '^\s*[)}\]»>]'
|
if cline =~ '^\s*[)}\]»>]'
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Indent lines that begin with 'or' or 'and'
|
" Indent lines that begin with 'or' or 'and'
|
||||||
if cline =~ '^\s*\(or\|and\)\>'
|
if cline =~ '^\s*\(or\|and\)\>'
|
||||||
if line !~ '^\s*\(or\|and\)\>'
|
if line !~ '^\s*\(or\|and\)\>'
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
elseif line =~ '^\s*\(or\|and\)\>'
|
elseif line =~ '^\s*\(or\|and\)\>'
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return ind
|
return ind
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
" Author: John Wellesz <John.wellesz (AT) teaser (DOT) fr>
|
" Author: John Wellesz <John.wellesz (AT) teaser (DOT) fr>
|
||||||
" URL: http://www.2072productions.com/vim/indent/php.vim
|
" URL: http://www.2072productions.com/vim/indent/php.vim
|
||||||
" Home: https://github.com/2072/PHP-Indenting-for-VIm
|
" Home: https://github.com/2072/PHP-Indenting-for-VIm
|
||||||
" Last Change: 2015 September 8th
|
" Last Change: 2017 Jun 13
|
||||||
" Version: 1.60
|
" Version: 1.62
|
||||||
"
|
"
|
||||||
"
|
"
|
||||||
" Type :help php-indent for available options
|
" Type :help php-indent for available options
|
||||||
@ -50,25 +50,15 @@ let b:did_indent = 1
|
|||||||
|
|
||||||
let g:php_sync_method = 0
|
let g:php_sync_method = 0
|
||||||
|
|
||||||
if exists('*shiftwidth')
|
|
||||||
function! s:sw()
|
|
||||||
return shiftwidth()
|
|
||||||
endfunction
|
|
||||||
else
|
|
||||||
function! s:sw()
|
|
||||||
return &shiftwidth
|
|
||||||
endfunction
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
if exists("PHP_default_indenting")
|
if exists("PHP_default_indenting")
|
||||||
let b:PHP_default_indenting = PHP_default_indenting * s:sw()
|
let b:PHP_default_indenting = PHP_default_indenting * shiftwidth()
|
||||||
else
|
else
|
||||||
let b:PHP_default_indenting = 0
|
let b:PHP_default_indenting = 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if exists("PHP_outdentSLComments")
|
if exists("PHP_outdentSLComments")
|
||||||
let b:PHP_outdentSLComments = PHP_outdentSLComments * s:sw()
|
let b:PHP_outdentSLComments = PHP_outdentSLComments * shiftwidth()
|
||||||
else
|
else
|
||||||
let b:PHP_outdentSLComments = 0
|
let b:PHP_outdentSLComments = 0
|
||||||
endif
|
endif
|
||||||
@ -141,11 +131,13 @@ let s:PHP_validVariable = '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'
|
|||||||
let s:notPhpHereDoc = '\%(break\|return\|continue\|exit\|die\|else\)'
|
let s:notPhpHereDoc = '\%(break\|return\|continue\|exit\|die\|else\)'
|
||||||
let s:blockstart = '\%(\%(\%(}\s*\)\=else\%(\s\+\)\=\)\=if\>\|\%(}\s*\)\?else\>\|do\>\|while\>\|switch\>\|case\>\|default\>\|for\%(each\)\=\>\|declare\>\|class\>\|trait\>\|use\>\|interface\>\|abstract\>\|final\>\|try\>\|\%(}\s*\)\=catch\>\|\%(}\s*\)\=finally\>\)'
|
let s:blockstart = '\%(\%(\%(}\s*\)\=else\%(\s\+\)\=\)\=if\>\|\%(}\s*\)\?else\>\|do\>\|while\>\|switch\>\|case\>\|default\>\|for\%(each\)\=\>\|declare\>\|class\>\|trait\>\|use\>\|interface\>\|abstract\>\|final\>\|try\>\|\%(}\s*\)\=catch\>\|\%(}\s*\)\=finally\>\)'
|
||||||
let s:functionDecl = '\<function\>\%(\s\+'.s:PHP_validVariable.'\)\=\s*(.*'
|
let s:functionDecl = '\<function\>\%(\s\+'.s:PHP_validVariable.'\)\=\s*(.*'
|
||||||
let s:endline= '\s*\%(//.*\|#.*\|/\*.*\*/\s*\)\=$'
|
let s:endline = '\s*\%(//.*\|#.*\|/\*.*\*/\s*\)\=$'
|
||||||
|
let s:unstated = '\%(^\s*'.s:blockstart.'.*)\|\%(//.*\)\@<!\<e'.'lse\>\)'.s:endline
|
||||||
|
|
||||||
|
|
||||||
let s:terminated = '\%(\%(;\%(\s*\%(?>\|}\)\)\=\|<<<\s*[''"]\=\a\w*[''"]\=$\|^\s*}\|^\s*'.s:PHP_validVariable.':\)'.s:endline.'\)\|^[^''"`]*[''"`]$'
|
let s:terminated = '\%(\%(;\%(\s*\%(?>\|}\)\)\=\|<<<\s*[''"]\=\a\w*[''"]\=$\|^\s*}\|^\s*'.s:PHP_validVariable.':\)'.s:endline.'\)'
|
||||||
let s:PHP_startindenttag = '<?\%(.*?>\)\@!\|<script[^>]*>\%(.*<\/script>\)\@!'
|
let s:PHP_startindenttag = '<?\%(.*?>\)\@!\|<script[^>]*>\%(.*<\/script>\)\@!'
|
||||||
|
let s:structureHead = '^\s*\%(' . s:blockstart . '\)\|'. s:functionDecl . s:endline . '\|\<new\s\+class\>'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -214,10 +206,28 @@ function! GetLastRealCodeLNum(startline) " {{{
|
|||||||
let lnum = lnum - 1
|
let lnum = lnum - 1
|
||||||
endwhile
|
endwhile
|
||||||
elseif lastline =~ '^[^''"`]*[''"`][;,]'.s:endline
|
elseif lastline =~ '^[^''"`]*[''"`][;,]'.s:endline
|
||||||
let tofind=substitute( lastline, '^.*\([''"`]\)[;,].*$', '^[^\1]\\+[\1]$', '')
|
|
||||||
while getline(lnum) !~? tofind && lnum > 1
|
let tofind=substitute( lastline, '^.*\([''"`]\)[;,].*$', '^[^\1]\\+[\1]$\\|^[^\1]\\+[=([]\\s*[\1]', '')
|
||||||
let lnum = lnum - 1
|
let trylnum = lnum
|
||||||
|
while getline(trylnum) !~? tofind && trylnum > 1
|
||||||
|
let trylnum = trylnum - 1
|
||||||
endwhile
|
endwhile
|
||||||
|
|
||||||
|
if trylnum == 1
|
||||||
|
break
|
||||||
|
else
|
||||||
|
if lastline =~ ';'.s:endline
|
||||||
|
while getline(trylnum) !~? s:terminated && getline(trylnum) !~? '{'.s:endline && trylnum > 1
|
||||||
|
let trylnum = prevnonblank(trylnum - 1)
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
|
||||||
|
if trylnum == 1
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
let lnum = trylnum
|
||||||
|
end
|
||||||
else
|
else
|
||||||
break
|
break
|
||||||
endif
|
endif
|
||||||
@ -262,7 +272,7 @@ function! FindOpenBracket(lnum, blockStarter) " {{{
|
|||||||
while line > 1
|
while line > 1
|
||||||
let linec = getline(line)
|
let linec = getline(line)
|
||||||
|
|
||||||
if linec =~ s:terminated || linec =~ '^\s*\%(' . s:blockstart . '\)\|'. s:functionDecl . s:endline
|
if linec =~ s:terminated || linec =~ s:structureHead
|
||||||
break
|
break
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -273,6 +283,20 @@ function! FindOpenBracket(lnum, blockStarter) " {{{
|
|||||||
return line
|
return line
|
||||||
endfun " }}}
|
endfun " }}}
|
||||||
|
|
||||||
|
let s:blockChars = {'{':1, '[': 1, '(': 1, ')':-1, ']':-1, '}':-1}
|
||||||
|
function! BalanceDirection (str)
|
||||||
|
|
||||||
|
let balance = 0
|
||||||
|
|
||||||
|
for c in split(a:str, '\zs')
|
||||||
|
if has_key(s:blockChars, c)
|
||||||
|
let balance += s:blockChars[c]
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
|
||||||
|
return balance
|
||||||
|
endfun
|
||||||
|
|
||||||
function! FindTheIfOfAnElse (lnum, StopAfterFirstPrevElse) " {{{
|
function! FindTheIfOfAnElse (lnum, StopAfterFirstPrevElse) " {{{
|
||||||
|
|
||||||
if getline(a:lnum) =~# '^\s*}\s*else\%(if\)\=\>'
|
if getline(a:lnum) =~# '^\s*}\s*else\%(if\)\=\>'
|
||||||
@ -323,7 +347,7 @@ function! FindTheSwitchIndent (lnum) " {{{
|
|||||||
let test = GetLastRealCodeLNum(a:lnum - 1)
|
let test = GetLastRealCodeLNum(a:lnum - 1)
|
||||||
|
|
||||||
if test <= 1
|
if test <= 1
|
||||||
return indent(1) - s:sw() * b:PHP_vintage_case_default_indent
|
return indent(1) - shiftwidth() * b:PHP_vintage_case_default_indent
|
||||||
end
|
end
|
||||||
|
|
||||||
while getline(test) =~ '^\s*}' && test > 1
|
while getline(test) =~ '^\s*}' && test > 1
|
||||||
@ -337,7 +361,7 @@ function! FindTheSwitchIndent (lnum) " {{{
|
|||||||
if getline(test) =~# '^\s*switch\>'
|
if getline(test) =~# '^\s*switch\>'
|
||||||
return indent(test)
|
return indent(test)
|
||||||
elseif getline(test) =~# s:defaultORcase
|
elseif getline(test) =~# s:defaultORcase
|
||||||
return indent(test) - s:sw() * b:PHP_vintage_case_default_indent
|
return indent(test) - shiftwidth() * b:PHP_vintage_case_default_indent
|
||||||
else
|
else
|
||||||
return FindTheSwitchIndent(test)
|
return FindTheSwitchIndent(test)
|
||||||
endif
|
endif
|
||||||
@ -410,7 +434,7 @@ function! GetPhpIndent()
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
if b:PHP_default_indenting
|
if b:PHP_default_indenting
|
||||||
let b:PHP_default_indenting = g:PHP_default_indenting * s:sw()
|
let b:PHP_default_indenting = g:PHP_default_indenting * shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let cline = getline(v:lnum)
|
let cline = getline(v:lnum)
|
||||||
@ -457,7 +481,7 @@ function! GetPhpIndent()
|
|||||||
|
|
||||||
if synname!=""
|
if synname!=""
|
||||||
if synname == "SpecStringEntrails"
|
if synname == "SpecStringEntrails"
|
||||||
let b:InPHPcode = -1
|
let b:InPHPcode = -1 " thumb down
|
||||||
let b:InPHPcode_tofind = ""
|
let b:InPHPcode_tofind = ""
|
||||||
elseif synname != "phpHereDoc" && synname != "phpHereDocDelimiter"
|
elseif synname != "phpHereDoc" && synname != "phpHereDocDelimiter"
|
||||||
let b:InPHPcode = 1
|
let b:InPHPcode = 1
|
||||||
@ -540,7 +564,7 @@ function! GetPhpIndent()
|
|||||||
let b:InPHPcode_and_script = 1
|
let b:InPHPcode_and_script = 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
elseif last_line =~ '^[^''"`]\+[''"`]$'
|
elseif last_line =~ '^[^''"`]\+[''"`]$' " a string identifier with nothing after it and no other string identifier before
|
||||||
let b:InPHPcode = -1
|
let b:InPHPcode = -1
|
||||||
let b:InPHPcode_tofind = substitute( last_line, '^.*\([''"`]\).*$', '^[^\1]*\1[;,]$', '')
|
let b:InPHPcode_tofind = substitute( last_line, '^.*\([''"`]\).*$', '^[^\1]*\1[;,]$', '')
|
||||||
elseif last_line =~? '<<<\s*[''"]\=\a\w*[''"]\=$'
|
elseif last_line =~? '<<<\s*[''"]\=\a\w*[''"]\=$'
|
||||||
@ -660,25 +684,26 @@ function! GetPhpIndent()
|
|||||||
|
|
||||||
let terminated = s:terminated
|
let terminated = s:terminated
|
||||||
|
|
||||||
let unstated = '\%(^\s*'.s:blockstart.'.*)\|\%(//.*\)\@<!\<e'.'lse\>\)'.endline
|
let unstated = s:unstated
|
||||||
|
|
||||||
|
|
||||||
if ind != b:PHP_default_indenting && cline =~# '^\s*else\%(if\)\=\>'
|
if ind != b:PHP_default_indenting && cline =~# '^\s*else\%(if\)\=\>'
|
||||||
let b:PHP_CurrentIndentLevel = b:PHP_default_indenting
|
let b:PHP_CurrentIndentLevel = b:PHP_default_indenting
|
||||||
return indent(FindTheIfOfAnElse(v:lnum, 1))
|
return indent(FindTheIfOfAnElse(v:lnum, 1))
|
||||||
elseif cline =~# s:defaultORcase
|
elseif cline =~# s:defaultORcase
|
||||||
return FindTheSwitchIndent(v:lnum) + s:sw() * b:PHP_vintage_case_default_indent
|
return FindTheSwitchIndent(v:lnum) + shiftwidth() * b:PHP_vintage_case_default_indent
|
||||||
elseif cline =~ '^\s*)\=\s*{'
|
elseif cline =~ '^\s*)\=\s*{'
|
||||||
let previous_line = last_line
|
let previous_line = last_line
|
||||||
let last_line_num = lnum
|
let last_line_num = lnum
|
||||||
|
|
||||||
while last_line_num > 1
|
while last_line_num > 1
|
||||||
|
|
||||||
if previous_line =~ terminated || previous_line =~ '^\s*\%(' . s:blockstart . '\)\|'. s:functionDecl . endline
|
if previous_line =~ terminated || previous_line =~ s:structureHead
|
||||||
|
|
||||||
let ind = indent(last_line_num)
|
let ind = indent(last_line_num)
|
||||||
|
|
||||||
if b:PHP_BracesAtCodeLevel
|
if b:PHP_BracesAtCodeLevel
|
||||||
let ind = ind + s:sw()
|
let ind = ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return ind
|
return ind
|
||||||
@ -689,7 +714,7 @@ function! GetPhpIndent()
|
|||||||
endwhile
|
endwhile
|
||||||
|
|
||||||
elseif last_line =~# unstated && cline !~ '^\s*);\='.endline
|
elseif last_line =~# unstated && cline !~ '^\s*);\='.endline
|
||||||
let ind = ind + s:sw()
|
let ind = ind + shiftwidth() " we indent one level further when the preceding line is not stated
|
||||||
return ind + addSpecial
|
return ind + addSpecial
|
||||||
|
|
||||||
elseif (ind != b:PHP_default_indenting || last_line =~ '^[)\]]' ) && last_line =~ terminated
|
elseif (ind != b:PHP_default_indenting || last_line =~ '^[)\]]' ) && last_line =~ terminated
|
||||||
@ -699,7 +724,7 @@ function! GetPhpIndent()
|
|||||||
|
|
||||||
let isSingleLineBlock = 0
|
let isSingleLineBlock = 0
|
||||||
while 1
|
while 1
|
||||||
if ! isSingleLineBlock && previous_line =~ '^\s*}\|;\s*}'.endline
|
if ! isSingleLineBlock && previous_line =~ '^\s*}\|;\s*}'.endline " XXX
|
||||||
|
|
||||||
call cursor(last_line_num, 1)
|
call cursor(last_line_num, 1)
|
||||||
if previous_line !~ '^}'
|
if previous_line !~ '^}'
|
||||||
@ -780,15 +805,15 @@ function! GetPhpIndent()
|
|||||||
if !LastLineClosed
|
if !LastLineClosed
|
||||||
|
|
||||||
|
|
||||||
if last_line =~# '[{(\[]'.endline || last_line =~? '\h\w*\s*(.*,$' && AntepenultimateLine !~ '[,(\[]'.endline
|
if last_line =~# '[{(\[]'.endline || last_line =~? '\h\w*\s*(.*,$' && AntepenultimateLine !~ '[,(\[]'.endline && BalanceDirection(last_line) > 0
|
||||||
|
|
||||||
let dontIndent = 0
|
let dontIndent = 0
|
||||||
if last_line =~ '\S\+\s*{'.endline && last_line !~ '^\s*)\s*{'.endline && last_line !~ '^\s*\%(' . s:blockstart . '\)\|'. s:functionDecl . s:endline
|
if last_line =~ '\S\+\s*{'.endline && last_line !~ '^\s*[)\]]\+\s*{'.endline && last_line !~ s:structureHead
|
||||||
let dontIndent = 1
|
let dontIndent = 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if !dontIndent && (!b:PHP_BracesAtCodeLevel || last_line !~# '^\s*{')
|
if !dontIndent && (!b:PHP_BracesAtCodeLevel || last_line !~# '^\s*{')
|
||||||
let ind = ind + s:sw()
|
let ind = ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if b:PHP_BracesAtCodeLevel || b:PHP_vintage_case_default_indent == 1
|
if b:PHP_BracesAtCodeLevel || b:PHP_vintage_case_default_indent == 1
|
||||||
@ -797,26 +822,26 @@ function! GetPhpIndent()
|
|||||||
return ind + addSpecial
|
return ind + addSpecial
|
||||||
endif
|
endif
|
||||||
|
|
||||||
elseif last_line =~ '\S\+\s*),'.endline
|
elseif last_line =~ '\S\+\s*),'.endline && BalanceDirection(last_line) < 0
|
||||||
call cursor(lnum, 1)
|
call cursor(lnum, 1)
|
||||||
call search('),'.endline, 'W')
|
call search('),'.endline, 'W') " line never begins with ) so no need for 'c' flag
|
||||||
let openedparent = searchpair('(', '', ')', 'bW', 'Skippmatch()')
|
let openedparent = searchpair('(', '', ')', 'bW', 'Skippmatch()')
|
||||||
if openedparent != lnum
|
if openedparent != lnum
|
||||||
let ind = indent(openedparent)
|
let ind = indent(openedparent)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
elseif last_line =~ '^\s*'.s:blockstart
|
elseif last_line =~ '^\s*'.s:blockstart
|
||||||
let ind = ind + s:sw()
|
let ind = ind + shiftwidth()
|
||||||
|
|
||||||
|
|
||||||
elseif AntepenultimateLine =~ '{'.endline || AntepenultimateLine =~ terminated || AntepenultimateLine =~# s:defaultORcase
|
elseif AntepenultimateLine =~ '{'.endline && AntepenultimateLine !~? '^\s*use\>' || AntepenultimateLine =~ terminated || AntepenultimateLine =~# s:defaultORcase
|
||||||
let ind = ind + s:sw()
|
let ind = ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if cline =~ '^\s*[)\]];\='
|
if cline =~ '^\s*[)\]];\='
|
||||||
let ind = ind - s:sw()
|
let ind = ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let b:PHP_CurrentIndentLevel = ind
|
let b:PHP_CurrentIndentLevel = ind
|
||||||
|
@ -41,16 +41,16 @@ function! PostscrIndentGet(lnum)
|
|||||||
|
|
||||||
" Indent for dicts, arrays, and saves with possible trailing comment
|
" Indent for dicts, arrays, and saves with possible trailing comment
|
||||||
if pline =~ '\(begin\|<<\|g\=save\|{\|[\)\s*\(%.*\)\=$'
|
if pline =~ '\(begin\|<<\|g\=save\|{\|[\)\s*\(%.*\)\=$'
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Remove indent for popped dicts, and restores.
|
" Remove indent for popped dicts, and restores.
|
||||||
if pline =~ '\(end\|g\=restore\)\s*$'
|
if pline =~ '\(end\|g\=restore\)\s*$'
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
|
|
||||||
" Else handle immediate dedents of dicts, restores, and arrays.
|
" Else handle immediate dedents of dicts, restores, and arrays.
|
||||||
elseif getline(a:lnum) =~ '\(end\|>>\|g\=restore\|}\|]\)'
|
elseif getline(a:lnum) =~ '\(end\|>>\|g\=restore\|}\|]\)'
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
|
|
||||||
" Else handle DSC comments - always start of line.
|
" Else handle DSC comments - always start of line.
|
||||||
elseif getline(a:lnum) =~ '^\s*%%'
|
elseif getline(a:lnum) =~ '^\s*%%'
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
" Vim indent file
|
" Vim indent file
|
||||||
" Language: PoV-Ray Scene Description Language
|
" Language: PoV-Ray Scene Description Language
|
||||||
" Maintainer: David Necas (Yeti) <yeti@physics.muni.cz>
|
" Maintainer: David Necas (Yeti) <yeti@physics.muni.cz>
|
||||||
" Last Change: 2002-10-20
|
" Last Change: 2017 Jun 13
|
||||||
" URI: http://trific.ath.cx/Ftp/vim/indent/pov.vim
|
" URI: http://trific.ath.cx/Ftp/vim/indent/pov.vim
|
||||||
|
|
||||||
" Only load this indent file when no other was loaded.
|
" Only load this indent file when no other was loaded.
|
||||||
@ -75,9 +75,9 @@ function GetPoVRayIndent()
|
|||||||
" opening line.
|
" opening line.
|
||||||
let cur = s:MatchCount(v:lnum, '^\s*\%(#\s*\%(end\|else\)\>\|[]})]\)')
|
let cur = s:MatchCount(v:lnum, '^\s*\%(#\s*\%(end\|else\)\>\|[]})]\)')
|
||||||
if cur > 0
|
if cur > 0
|
||||||
let final = plind + (chg - cur) * &sw
|
let final = plind + (chg - cur) * shiftwidth()
|
||||||
else
|
else
|
||||||
let final = plind + chg * &sw
|
let final = plind + chg * shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return final < 0 ? 0 : final
|
return final < 0 ? 0 : final
|
||||||
|
@ -41,18 +41,18 @@ function! GetPrologIndent()
|
|||||||
endif
|
endif
|
||||||
" Check for clause head on previous line
|
" Check for clause head on previous line
|
||||||
if pline =~ ':-\s*\(%.*\)\?$'
|
if pline =~ ':-\s*\(%.*\)\?$'
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
" Check for end of clause on previous line
|
" Check for end of clause on previous line
|
||||||
elseif pline =~ '\.\s*\(%.*\)\?$'
|
elseif pline =~ '\.\s*\(%.*\)\?$'
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
" Check for opening conditional on previous line
|
" Check for opening conditional on previous line
|
||||||
if pline =~ '^\s*\([(;]\|->\)'
|
if pline =~ '^\s*\([(;]\|->\)'
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
" Check for closing an unclosed paren, or middle ; or ->
|
" Check for closing an unclosed paren, or middle ; or ->
|
||||||
if line =~ '^\s*\([);]\|->\)'
|
if line =~ '^\s*\([);]\|->\)'
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
return ind
|
return ind
|
||||||
endfunction
|
endfunction
|
||||||
|
@ -274,7 +274,7 @@ function GetRIndent()
|
|||||||
let nlnum = s:Get_prev_line(nlnum)
|
let nlnum = s:Get_prev_line(nlnum)
|
||||||
let nline = SanitizeRLine(getline(nlnum)) . nline
|
let nline = SanitizeRLine(getline(nlnum)) . nline
|
||||||
endwhile
|
endwhile
|
||||||
if nline =~ '^\s*function\s*(' && indent(nlnum) == &sw
|
if nline =~ '^\s*function\s*(' && indent(nlnum) == shiftwidth()
|
||||||
return 0
|
return 0
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@ -285,7 +285,7 @@ function GetRIndent()
|
|||||||
|
|
||||||
" line is an incomplete command:
|
" line is an incomplete command:
|
||||||
if line =~ '\<\(if\|while\|for\|function\)\s*()$' || line =~ '\<else$' || line =~ '<-$' || line =~ '->$'
|
if line =~ '\<\(if\|while\|for\|function\)\s*()$' || line =~ '\<else$' || line =~ '<-$' || line =~ '->$'
|
||||||
return indent(lnum) + &sw
|
return indent(lnum) + shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Deal with () and []
|
" Deal with () and []
|
||||||
@ -293,14 +293,14 @@ function GetRIndent()
|
|||||||
let pb = s:Get_paren_balance(line, '(', ')')
|
let pb = s:Get_paren_balance(line, '(', ')')
|
||||||
|
|
||||||
if line =~ '^\s*{$' || line =~ '(\s*{' || (pb == 0 && (line =~ '{$' || line =~ '(\s*{$'))
|
if line =~ '^\s*{$' || line =~ '(\s*{' || (pb == 0 && (line =~ '{$' || line =~ '(\s*{$'))
|
||||||
return indent(lnum) + &sw
|
return indent(lnum) + shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let s:curtabstop = repeat(' ', &tabstop)
|
let s:curtabstop = repeat(' ', &tabstop)
|
||||||
|
|
||||||
if g:r_indent_align_args == 1
|
if g:r_indent_align_args == 1
|
||||||
if pb > 0 && line =~ '{$'
|
if pb > 0 && line =~ '{$'
|
||||||
return s:Get_last_paren_idx(line, '(', ')', pb) + &sw
|
return s:Get_last_paren_idx(line, '(', ')', pb) + shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let bb = s:Get_paren_balance(line, '[', ']')
|
let bb = s:Get_paren_balance(line, '[', ']')
|
||||||
@ -364,11 +364,11 @@ function GetRIndent()
|
|||||||
if oline =~ g:r_indent_op_pattern && s:Get_paren_balance(line, "(", ")") == 0
|
if oline =~ g:r_indent_op_pattern && s:Get_paren_balance(line, "(", ")") == 0
|
||||||
return indent(lnum)
|
return indent(lnum)
|
||||||
else
|
else
|
||||||
return indent(lnum) + &sw
|
return indent(lnum) + shiftwidth()
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
if oline =~ g:r_indent_op_pattern && s:Get_paren_balance(line, "(", ")") == 0
|
if oline =~ g:r_indent_op_pattern && s:Get_paren_balance(line, "(", ")") == 0
|
||||||
return indent(lnum) - &sw
|
return indent(lnum) - shiftwidth()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@ -383,7 +383,7 @@ function GetRIndent()
|
|||||||
let line = linepiece . line
|
let line = linepiece . line
|
||||||
endwhile
|
endwhile
|
||||||
if line =~ '{$' && post_block == 0
|
if line =~ '{$' && post_block == 0
|
||||||
return indent(lnum) + &sw
|
return indent(lnum) + shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Now we can do some tests again
|
" Now we can do some tests again
|
||||||
@ -393,19 +393,19 @@ function GetRIndent()
|
|||||||
if post_block == 0
|
if post_block == 0
|
||||||
let newl = SanitizeRLine(line)
|
let newl = SanitizeRLine(line)
|
||||||
if newl =~ '\<\(if\|while\|for\|function\)\s*()$' || newl =~ '\<else$' || newl =~ '<-$'
|
if newl =~ '\<\(if\|while\|for\|function\)\s*()$' || newl =~ '\<else$' || newl =~ '<-$'
|
||||||
return indent(lnum) + &sw
|
return indent(lnum) + shiftwidth()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if cline =~ '^\s*else'
|
if cline =~ '^\s*else'
|
||||||
if line =~ '<-\s*if\s*()'
|
if line =~ '<-\s*if\s*()'
|
||||||
return indent(lnum) + &sw
|
return indent(lnum) + shiftwidth()
|
||||||
else
|
else
|
||||||
if line =~ '\<if\s*()'
|
if line =~ '\<if\s*()'
|
||||||
return indent(lnum)
|
return indent(lnum)
|
||||||
else
|
else
|
||||||
return indent(lnum) - &sw
|
return indent(lnum) - shiftwidth()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@ -474,12 +474,12 @@ function GetRIndent()
|
|||||||
let ind = indent(lnum)
|
let ind = indent(lnum)
|
||||||
|
|
||||||
if g:r_indent_align_args == 0 && pb != 0
|
if g:r_indent_align_args == 0 && pb != 0
|
||||||
let ind += pb * &sw
|
let ind += pb * shiftwidth()
|
||||||
return ind
|
return ind
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if g:r_indent_align_args == 0 && bb != 0
|
if g:r_indent_align_args == 0 && bb != 0
|
||||||
let ind += bb * &sw
|
let ind += bb * shiftwidth()
|
||||||
return ind
|
return ind
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -489,7 +489,7 @@ function GetRIndent()
|
|||||||
let pind = 0
|
let pind = 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if ind == pind || (ind == (pind + &sw) && pline =~ '{$' && ppost_else == 0)
|
if ind == pind || (ind == (pind + shiftwidth()) && pline =~ '{$' && ppost_else == 0)
|
||||||
return ind
|
return ind
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -509,7 +509,7 @@ function GetRIndent()
|
|||||||
let pbb = s:Get_paren_balance(pline, '[', ']')
|
let pbb = s:Get_paren_balance(pline, '[', ']')
|
||||||
endwhile
|
endwhile
|
||||||
let pind = indent(plnum)
|
let pind = indent(plnum)
|
||||||
if ind == (pind + &sw) && pline =~ '{$'
|
if ind == (pind + shiftwidth()) && pline =~ '{$'
|
||||||
return ind
|
return ind
|
||||||
endif
|
endif
|
||||||
endwhile
|
endwhile
|
||||||
|
@ -82,7 +82,7 @@ function GetRHelpIndent()
|
|||||||
let closeb = strlen(line2) - strlen(line3)
|
let closeb = strlen(line2) - strlen(line3)
|
||||||
let bb = openb - closeb
|
let bb = openb - closeb
|
||||||
|
|
||||||
let ind = indent(lnum) + (bb * &sw)
|
let ind = indent(lnum) + (bb * shiftwidth())
|
||||||
|
|
||||||
if line =~ '^\s*}\s*$'
|
if line =~ '^\s*}\s*$'
|
||||||
let ind = indent(lnum)
|
let ind = indent(lnum)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
" Vim indent file
|
" Vim indent file
|
||||||
" Language: RPL/2
|
" Language: RPL/2
|
||||||
" Version: 0.2
|
" Version: 0.2
|
||||||
" Last Change: 2005 Mar 28
|
" Last Change: 2017 Jun 13
|
||||||
" Maintainer: BERTRAND Joël <rpl2@free.fr>
|
" Maintainer: BERTRAND Joël <rpl2@free.fr>
|
||||||
|
|
||||||
" Only load this indent file when no other was loaded.
|
" Only load this indent file when no other was loaded.
|
||||||
@ -32,16 +32,16 @@ function RplGetIndent(lnum)
|
|||||||
if prevstat =~? '\<\(if\|iferr\|do\|while\)\>' && prevstat =~? '\<end\>'
|
if prevstat =~? '\<\(if\|iferr\|do\|while\)\>' && prevstat =~? '\<end\>'
|
||||||
elseif prevstat =~? '\(^\|\s\+\)<<\($\|\s\+\)' && prevstat =~? '\s\+>>\($\|\s\+\)'
|
elseif prevstat =~? '\(^\|\s\+\)<<\($\|\s\+\)' && prevstat =~? '\s\+>>\($\|\s\+\)'
|
||||||
elseif prevstat =~? '\<\(if\|iferr\|then\|else\|elseif\|select\|case\|do\|until\|while\|repeat\|for\|start\|default\)\>' || prevstat =~? '\(^\|\s\+\)<<\($\|\s\+\)'
|
elseif prevstat =~? '\<\(if\|iferr\|then\|else\|elseif\|select\|case\|do\|until\|while\|repeat\|for\|start\|default\)\>' || prevstat =~? '\(^\|\s\+\)<<\($\|\s\+\)'
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Subtract a shiftwidth from then, else, elseif, end, until, repeat, next,
|
" Subtract a shiftwidth from then, else, elseif, end, until, repeat, next,
|
||||||
" step
|
" step
|
||||||
let line = getline(v:lnum)
|
let line = getline(v:lnum)
|
||||||
if line =~? '^\s*\(then\|else\|elseif\|until\|repeat\|next\|step\|default\|end\)\>'
|
if line =~? '^\s*\(then\|else\|elseif\|until\|repeat\|next\|step\|default\|end\)\>'
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
elseif line =~? '^\s*>>\($\|\s\+\)'
|
elseif line =~? '^\s*>>\($\|\s\+\)'
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return ind
|
return ind
|
||||||
|
@ -404,11 +404,7 @@ function GetRubyIndent(...)
|
|||||||
" ----------
|
" ----------
|
||||||
|
|
||||||
" The value of a single shift-width
|
" The value of a single shift-width
|
||||||
if exists('*shiftwidth')
|
let sw = shiftwidth()
|
||||||
let sw = shiftwidth()
|
|
||||||
else
|
|
||||||
let sw = &sw
|
|
||||||
endif
|
|
||||||
|
|
||||||
" For the current line, use the first argument if given, else v:lnum
|
" For the current line, use the first argument if given, else v:lnum
|
||||||
let clnum = a:0 ? a:1 : v:lnum
|
let clnum = a:0 ? a:1 : v:lnum
|
||||||
|
213
runtime/indent/rust.vim
Normal file
213
runtime/indent/rust.vim
Normal file
@ -0,0 +1,213 @@
|
|||||||
|
" Vim indent file
|
||||||
|
" Language: Rust
|
||||||
|
" Author: Chris Morgan <me@chrismorgan.info>
|
||||||
|
" Last Change: 2017 Jun 13
|
||||||
|
" For bugs, patches and license go to https://github.com/rust-lang/rust.vim
|
||||||
|
|
||||||
|
" Only load this indent file when no other was loaded.
|
||||||
|
if exists("b:did_indent")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let b:did_indent = 1
|
||||||
|
|
||||||
|
setlocal cindent
|
||||||
|
setlocal cinoptions=L0,(0,Ws,J1,j1
|
||||||
|
setlocal cinkeys=0{,0},!^F,o,O,0[,0]
|
||||||
|
" Don't think cinwords will actually do anything at all... never mind
|
||||||
|
setlocal cinwords=for,if,else,while,loop,impl,mod,unsafe,trait,struct,enum,fn,extern
|
||||||
|
|
||||||
|
" Some preliminary settings
|
||||||
|
setlocal nolisp " Make sure lisp indenting doesn't supersede us
|
||||||
|
setlocal autoindent " indentexpr isn't much help otherwise
|
||||||
|
" Also do indentkeys, otherwise # gets shoved to column 0 :-/
|
||||||
|
setlocal indentkeys=0{,0},!^F,o,O,0[,0]
|
||||||
|
|
||||||
|
setlocal indentexpr=GetRustIndent(v:lnum)
|
||||||
|
|
||||||
|
" Only define the function once.
|
||||||
|
if exists("*GetRustIndent")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:save_cpo = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
" Come here when loading the script the first time.
|
||||||
|
|
||||||
|
function! s:get_line_trimmed(lnum)
|
||||||
|
" Get the line and remove a trailing comment.
|
||||||
|
" Use syntax highlighting attributes when possible.
|
||||||
|
" NOTE: this is not accurate; /* */ or a line continuation could trick it
|
||||||
|
let line = getline(a:lnum)
|
||||||
|
let line_len = strlen(line)
|
||||||
|
if has('syntax_items')
|
||||||
|
" If the last character in the line is a comment, do a binary search for
|
||||||
|
" the start of the comment. synID() is slow, a linear search would take
|
||||||
|
" too long on a long line.
|
||||||
|
if synIDattr(synID(a:lnum, line_len, 1), "name") =~ 'Comment\|Todo'
|
||||||
|
let min = 1
|
||||||
|
let max = line_len
|
||||||
|
while min < max
|
||||||
|
let col = (min + max) / 2
|
||||||
|
if synIDattr(synID(a:lnum, col, 1), "name") =~ 'Comment\|Todo'
|
||||||
|
let max = col
|
||||||
|
else
|
||||||
|
let min = col + 1
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
let line = strpart(line, 0, min - 1)
|
||||||
|
endif
|
||||||
|
return substitute(line, "\s*$", "", "")
|
||||||
|
else
|
||||||
|
" Sorry, this is not complete, nor fully correct (e.g. string "//").
|
||||||
|
" Such is life.
|
||||||
|
return substitute(line, "\s*//.*$", "", "")
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! s:is_string_comment(lnum, col)
|
||||||
|
if has('syntax_items')
|
||||||
|
for id in synstack(a:lnum, a:col)
|
||||||
|
let synname = synIDattr(id, "name")
|
||||||
|
if synname == "rustString" || synname =~ "^rustComment"
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
else
|
||||||
|
" without syntax, let's not even try
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function GetRustIndent(lnum)
|
||||||
|
|
||||||
|
" Starting assumption: cindent (called at the end) will do it right
|
||||||
|
" normally. We just want to fix up a few cases.
|
||||||
|
|
||||||
|
let line = getline(a:lnum)
|
||||||
|
|
||||||
|
if has('syntax_items')
|
||||||
|
let synname = synIDattr(synID(a:lnum, 1, 1), "name")
|
||||||
|
if synname == "rustString"
|
||||||
|
" If the start of the line is in a string, don't change the indent
|
||||||
|
return -1
|
||||||
|
elseif synname =~ '\(Comment\|Todo\)'
|
||||||
|
\ && line !~ '^\s*/\*' " not /* opening line
|
||||||
|
if synname =~ "CommentML" " multi-line
|
||||||
|
if line !~ '^\s*\*' && getline(a:lnum - 1) =~ '^\s*/\*'
|
||||||
|
" This is (hopefully) the line after a /*, and it has no
|
||||||
|
" leader, so the correct indentation is that of the
|
||||||
|
" previous line.
|
||||||
|
return GetRustIndent(a:lnum - 1)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
" If it's in a comment, let cindent take care of it now. This is
|
||||||
|
" for cases like "/*" where the next line should start " * ", not
|
||||||
|
" "* " as the code below would otherwise cause for module scope
|
||||||
|
" Fun fact: " /*\n*\n*/" takes two calls to get right!
|
||||||
|
return cindent(a:lnum)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" cindent gets second and subsequent match patterns/struct members wrong,
|
||||||
|
" as it treats the comma as indicating an unfinished statement::
|
||||||
|
"
|
||||||
|
" match a {
|
||||||
|
" b => c,
|
||||||
|
" d => e,
|
||||||
|
" f => g,
|
||||||
|
" };
|
||||||
|
|
||||||
|
" Search backwards for the previous non-empty line.
|
||||||
|
let prevlinenum = prevnonblank(a:lnum - 1)
|
||||||
|
let prevline = s:get_line_trimmed(prevlinenum)
|
||||||
|
while prevlinenum > 1 && prevline !~ '[^[:blank:]]'
|
||||||
|
let prevlinenum = prevnonblank(prevlinenum - 1)
|
||||||
|
let prevline = s:get_line_trimmed(prevlinenum)
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
" Handle where clauses nicely: subsequent values should line up nicely.
|
||||||
|
if prevline[len(prevline) - 1] == ","
|
||||||
|
\ && prevline =~# '^\s*where\s'
|
||||||
|
return indent(prevlinenum) + 6
|
||||||
|
endif
|
||||||
|
|
||||||
|
if prevline[len(prevline) - 1] == ","
|
||||||
|
\ && s:get_line_trimmed(a:lnum) !~ '^\s*[\[\]{}]'
|
||||||
|
\ && prevline !~ '^\s*fn\s'
|
||||||
|
\ && prevline !~ '([^()]\+,$'
|
||||||
|
\ && s:get_line_trimmed(a:lnum) !~ '^\s*\S\+\s*=>'
|
||||||
|
" Oh ho! The previous line ended in a comma! I bet cindent will try to
|
||||||
|
" take this too far... For now, let's normally use the previous line's
|
||||||
|
" indent.
|
||||||
|
|
||||||
|
" One case where this doesn't work out is where *this* line contains
|
||||||
|
" square or curly brackets; then we normally *do* want to be indenting
|
||||||
|
" further.
|
||||||
|
"
|
||||||
|
" Another case where we don't want to is one like a function
|
||||||
|
" definition with arguments spread over multiple lines:
|
||||||
|
"
|
||||||
|
" fn foo(baz: Baz,
|
||||||
|
" baz: Baz) // <-- cindent gets this right by itself
|
||||||
|
"
|
||||||
|
" Another case is similar to the previous, except calling a function
|
||||||
|
" instead of defining it, or any conditional expression that leaves
|
||||||
|
" an open paren:
|
||||||
|
"
|
||||||
|
" foo(baz,
|
||||||
|
" baz);
|
||||||
|
"
|
||||||
|
" if baz && (foo ||
|
||||||
|
" bar) {
|
||||||
|
"
|
||||||
|
" Another case is when the current line is a new match arm.
|
||||||
|
"
|
||||||
|
" There are probably other cases where we don't want to do this as
|
||||||
|
" well. Add them as needed.
|
||||||
|
return indent(prevlinenum)
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !has("patch-7.4.355")
|
||||||
|
" cindent before 7.4.355 doesn't do the module scope well at all; e.g.::
|
||||||
|
"
|
||||||
|
" static FOO : &'static [bool] = [
|
||||||
|
" true,
|
||||||
|
" false,
|
||||||
|
" false,
|
||||||
|
" true,
|
||||||
|
" ];
|
||||||
|
"
|
||||||
|
" uh oh, next statement is indented further!
|
||||||
|
|
||||||
|
" Note that this does *not* apply the line continuation pattern properly;
|
||||||
|
" that's too hard to do correctly for my liking at present, so I'll just
|
||||||
|
" start with these two main cases (square brackets and not returning to
|
||||||
|
" column zero)
|
||||||
|
|
||||||
|
call cursor(a:lnum, 1)
|
||||||
|
if searchpair('{\|(', '', '}\|)', 'nbW',
|
||||||
|
\ 's:is_string_comment(line("."), col("."))') == 0
|
||||||
|
if searchpair('\[', '', '\]', 'nbW',
|
||||||
|
\ 's:is_string_comment(line("."), col("."))') == 0
|
||||||
|
" Global scope, should be zero
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
" At the module scope, inside square brackets only
|
||||||
|
"if getline(a:lnum)[0] == ']' || search('\[', '', '\]', 'nW') == a:lnum
|
||||||
|
if line =~ "^\\s*]"
|
||||||
|
" It's the closing line, dedent it
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return shiftwidth()
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Fall back on cindent, which does it mostly right
|
||||||
|
return cindent(a:lnum)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
let &cpo = s:save_cpo
|
||||||
|
unlet s:save_cpo
|
@ -1,7 +1,7 @@
|
|||||||
" Vim indent file
|
" Vim indent file
|
||||||
" Language: Sass
|
" Language: Sass
|
||||||
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
||||||
" Last Change: 2016 Aug 29
|
" Last Change: 2017 Jun 13
|
||||||
|
|
||||||
if exists("b:did_indent")
|
if exists("b:did_indent")
|
||||||
finish
|
finish
|
||||||
@ -29,7 +29,7 @@ function! GetSassIndent()
|
|||||||
let indent = indent(lnum)
|
let indent = indent(lnum)
|
||||||
let cindent = indent(v:lnum)
|
let cindent = indent(v:lnum)
|
||||||
if line !~ s:property && line !~ s:extend && cline =~ s:property
|
if line !~ s:property && line !~ s:extend && cline =~ s:property
|
||||||
return indent + (exists('*shiftwidth') ? shiftwidth() : &sw)
|
return indent + shiftwidth()
|
||||||
else
|
else
|
||||||
return -1
|
return -1
|
||||||
endif
|
endif
|
||||||
|
@ -46,17 +46,17 @@ function! GetSDLIndent()
|
|||||||
if (getline(lnum) =~? '^\s*\(start\|state\|system\|package\|connection\|channel\|alternative\|macro\|operator\|newtype\|select\|substructure\|decision\|generator\|refinement\|service\|method\|exceptionhandler\|asntype\|syntype\|value\|(.*):\|\(priority\s\+\)\=input\|provided\)'
|
if (getline(lnum) =~? '^\s*\(start\|state\|system\|package\|connection\|channel\|alternative\|macro\|operator\|newtype\|select\|substructure\|decision\|generator\|refinement\|service\|method\|exceptionhandler\|asntype\|syntype\|value\|(.*):\|\(priority\s\+\)\=input\|provided\)'
|
||||||
\ || getline(lnum) =~? virtuality . '\(process\|procedure\|block\|object\)')
|
\ || getline(lnum) =~? virtuality . '\(process\|procedure\|block\|object\)')
|
||||||
\ && getline(lnum) !~? 'end[[:alpha:]]\+;$'
|
\ && getline(lnum) !~? 'end[[:alpha:]]\+;$'
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Subtract a 'shiftwidth' after states
|
" Subtract a 'shiftwidth' after states
|
||||||
if getline(lnum) =~? '^\s*\(stop\|return\>\|nextstate\)'
|
if getline(lnum) =~? '^\s*\(stop\|return\>\|nextstate\)'
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Subtract a 'shiftwidth' on on end (uncompleted line)
|
" Subtract a 'shiftwidth' on on end (uncompleted line)
|
||||||
if getline(v:lnum) =~? '^\s*end\>'
|
if getline(v:lnum) =~? '^\s*end\>'
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Put each alternatives where the corresponding decision was
|
" Put each alternatives where the corresponding decision was
|
||||||
|
@ -3,10 +3,12 @@
|
|||||||
" Maintainer: Christian Brabandt <cb@256bit.org>
|
" Maintainer: Christian Brabandt <cb@256bit.org>
|
||||||
" Previous Maintainer: Peter Aronoff <telemachus@arpinum.org>
|
" Previous Maintainer: Peter Aronoff <telemachus@arpinum.org>
|
||||||
" Original Author: Nikolai Weibull <now@bitwi.se>
|
" Original Author: Nikolai Weibull <now@bitwi.se>
|
||||||
" Latest Revision: 2016-06-27
|
" Latest Revision: 2017-05-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:
|
||||||
|
" 20170502: - get rid of buffer-shiftwidth function
|
||||||
|
" 20160912: - preserve indentation of here-doc blocks
|
||||||
" 20160627: - detect heredocs correctly
|
" 20160627: - detect heredocs correctly
|
||||||
" 20160213: - detect function definition correctly
|
" 20160213: - detect function definition correctly
|
||||||
" 20160202: - use shiftwidth() function
|
" 20160202: - use shiftwidth() function
|
||||||
@ -33,15 +35,11 @@ endif
|
|||||||
let s:cpo_save = &cpo
|
let s:cpo_save = &cpo
|
||||||
set cpo&vim
|
set cpo&vim
|
||||||
|
|
||||||
function s:buffer_shiftwidth()
|
|
||||||
return shiftwidth()
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
let s:sh_indent_defaults = {
|
let s:sh_indent_defaults = {
|
||||||
\ 'default': function('s:buffer_shiftwidth'),
|
\ 'default': function('shiftwidth'),
|
||||||
\ 'continuation-line': function('s:buffer_shiftwidth'),
|
\ 'continuation-line': function('shiftwidth'),
|
||||||
\ 'case-labels': function('s:buffer_shiftwidth'),
|
\ 'case-labels': function('shiftwidth'),
|
||||||
\ 'case-statements': function('s:buffer_shiftwidth'),
|
\ 'case-statements': function('shiftwidth'),
|
||||||
\ 'case-breaks': 0 }
|
\ 'case-breaks': 0 }
|
||||||
|
|
||||||
function! s:indent_value(option)
|
function! s:indent_value(option)
|
||||||
@ -110,6 +108,9 @@ function! GetShIndent()
|
|||||||
let ind -= s:indent_value('case-breaks')
|
let ind -= s:indent_value('case-breaks')
|
||||||
elseif s:is_here_doc(line)
|
elseif s:is_here_doc(line)
|
||||||
let ind = 0
|
let ind = 0
|
||||||
|
" statements, executed within a here document. Keep the current indent
|
||||||
|
elseif match(map(synstack(v:lnum, 1), 'synIDattr(v:val, "name")'), '\c\mheredoc') > -1
|
||||||
|
return indent(v:lnum)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return ind
|
return ind
|
||||||
|
@ -115,9 +115,9 @@ function! GetSMLIndent()
|
|||||||
|
|
||||||
" Return double 'shiftwidth' after lines matching:
|
" Return double 'shiftwidth' after lines matching:
|
||||||
if lline =~ '^\s*|.*=>\s*$'
|
if lline =~ '^\s*|.*=>\s*$'
|
||||||
return ind + &sw + &sw
|
return ind + 2 *shiftwidth()
|
||||||
elseif lline =~ '^\s*val\>.*=\s*$'
|
elseif lline =~ '^\s*val\>.*=\s*$'
|
||||||
return ind + &sw
|
return ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let line = getline(v:lnum)
|
let line = getline(v:lnum)
|
||||||
@ -157,7 +157,7 @@ function! GetSMLIndent()
|
|||||||
if lastModule == -1
|
if lastModule == -1
|
||||||
return 0
|
return 0
|
||||||
else
|
else
|
||||||
return lastModule + &sw
|
return lastModule + shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Indent lines starting with '|' from matching 'case', 'handle'
|
" Indent lines starting with '|' from matching 'case', 'handle'
|
||||||
@ -172,7 +172,7 @@ function! GetSMLIndent()
|
|||||||
if switchLine =~ '\<case\>'
|
if switchLine =~ '\<case\>'
|
||||||
return col(".") + 2
|
return col(".") + 2
|
||||||
elseif switchLine =~ '\<handle\>'
|
elseif switchLine =~ '\<handle\>'
|
||||||
return switchLineIndent + &sw
|
return switchLineIndent + shiftwidth()
|
||||||
elseif switchLine =~ '\<datatype\>'
|
elseif switchLine =~ '\<datatype\>'
|
||||||
call search('=')
|
call search('=')
|
||||||
return col(".") - 1
|
return col(".") - 1
|
||||||
@ -184,7 +184,7 @@ function! GetSMLIndent()
|
|||||||
" Indent if last line ends with 'sig', 'struct', 'let', 'then', 'else',
|
" Indent if last line ends with 'sig', 'struct', 'let', 'then', 'else',
|
||||||
" 'in'
|
" 'in'
|
||||||
elseif lline =~ '\<\(sig\|struct\|let\|in\|then\|else\)\s*$'
|
elseif lline =~ '\<\(sig\|struct\|let\|in\|then\|else\)\s*$'
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
|
|
||||||
" Indent if last line ends with 'of', align from 'case'
|
" Indent if last line ends with 'of', align from 'case'
|
||||||
elseif lline =~ '\<\(of\)\s*$'
|
elseif lline =~ '\<\(of\)\s*$'
|
||||||
@ -199,14 +199,14 @@ function! GetSMLIndent()
|
|||||||
|
|
||||||
" Indent if last line starts with 'fun', 'case', 'fn'
|
" Indent if last line starts with 'fun', 'case', 'fn'
|
||||||
elseif lline =~ '^\s*\(fun\|fn\|case\)\>'
|
elseif lline =~ '^\s*\(fun\|fn\|case\)\>'
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Don't indent 'let' if last line started with 'fun', 'fn'
|
" Don't indent 'let' if last line started with 'fun', 'fn'
|
||||||
if line =~ '^\s*let\>'
|
if line =~ '^\s*let\>'
|
||||||
if lline =~ '^\s*\(fun\|fn\)'
|
if lline =~ '^\s*\(fun\|fn\)'
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
" Vim indent file
|
" Vim indent file
|
||||||
" Language: SQL
|
" Language: SQL
|
||||||
" Maintainer: David Fishburn <dfishburn dot vim at gmail dot com>
|
" Maintainer: David Fishburn <dfishburn dot vim at gmail dot com>
|
||||||
" Last Change: 2012 Dec 06
|
" Last Change: 2017 Jun 13
|
||||||
" Version: 3.0
|
" Version: 3.0
|
||||||
" Download: http://vim.sourceforge.net/script.php?script_id=495
|
" Download: http://vim.sourceforge.net/script.php?script_id=495
|
||||||
|
|
||||||
@ -147,7 +147,7 @@ function! s:CheckToIgnoreRightParan( prev_lnum, num_levels )
|
|||||||
endwhile
|
endwhile
|
||||||
|
|
||||||
" Fallback - just move back one
|
" Fallback - just move back one
|
||||||
" return a:prev_indent - &sw
|
" return a:prev_indent - shiftwidth()
|
||||||
return ignore_paran
|
return ignore_paran
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
@ -166,7 +166,7 @@ function! s:GetStmtStarterIndent( keyword, curr_lnum )
|
|||||||
let lnum = a:curr_lnum
|
let lnum = a:curr_lnum
|
||||||
|
|
||||||
" Default - reduce indent by 1
|
" Default - reduce indent by 1
|
||||||
let ind = indent(a:curr_lnum) - &sw
|
let ind = indent(a:curr_lnum) - shiftwidth()
|
||||||
|
|
||||||
if a:keyword =~? 'end'
|
if a:keyword =~? 'end'
|
||||||
exec 'normal! ^'
|
exec 'normal! ^'
|
||||||
@ -230,7 +230,7 @@ function! s:ModuloIndent(ind)
|
|||||||
let ind = a:ind
|
let ind = a:ind
|
||||||
|
|
||||||
if ind > 0
|
if ind > 0
|
||||||
let modulo = ind % &shiftwidth
|
let modulo = ind % shiftwidth()
|
||||||
|
|
||||||
if modulo > 0
|
if modulo > 0
|
||||||
let ind = ind - modulo
|
let ind = ind - modulo
|
||||||
@ -291,7 +291,7 @@ function! GetSQLIndent()
|
|||||||
" where END IF, END, should decrease the indent.
|
" where END IF, END, should decrease the indent.
|
||||||
if prevline =~? s:SQLBlockStart
|
if prevline =~? s:SQLBlockStart
|
||||||
" Move indent in
|
" Move indent in
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
" echom 'prevl - SQLBlockStart - indent ' . ind . ' line: ' . prevline
|
" echom 'prevl - SQLBlockStart - indent ' . ind . ' line: ' . prevline
|
||||||
elseif prevline =~ '[()]'
|
elseif prevline =~ '[()]'
|
||||||
if prevline =~ '('
|
if prevline =~ '('
|
||||||
@ -308,7 +308,7 @@ function! GetSQLIndent()
|
|||||||
if num_unmatched_left > 0
|
if num_unmatched_left > 0
|
||||||
" There is a open left paranethesis
|
" There is a open left paranethesis
|
||||||
" increase indent
|
" increase indent
|
||||||
let ind = ind + ( &sw * num_unmatched_left )
|
let ind = ind + ( shiftwidth() * num_unmatched_left )
|
||||||
elseif num_unmatched_right > 0
|
elseif num_unmatched_right > 0
|
||||||
" if it is an unbalanced paranethesis only unindent if
|
" if it is an unbalanced paranethesis only unindent if
|
||||||
" it was part of a command (ie create table(..) )
|
" it was part of a command (ie create table(..) )
|
||||||
@ -323,7 +323,7 @@ function! GetSQLIndent()
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
if (num_unmatched_right - ignore) > 0
|
if (num_unmatched_right - ignore) > 0
|
||||||
let ind = ind - ( &sw * (num_unmatched_right - ignore) )
|
let ind = ind - ( shiftwidth() * (num_unmatched_right - ignore) )
|
||||||
endif
|
endif
|
||||||
|
|
||||||
endif
|
endif
|
||||||
@ -339,12 +339,12 @@ function! GetSQLIndent()
|
|||||||
if line =~? '^\s*els'
|
if line =~? '^\s*els'
|
||||||
" Any line when you type else will automatically back up one
|
" Any line when you type else will automatically back up one
|
||||||
" ident level (ie else, elseif, elsif)
|
" ident level (ie else, elseif, elsif)
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
" echom 'curr - else - indent ' . ind
|
" echom 'curr - else - indent ' . ind
|
||||||
elseif line =~? '^\s*end\>'
|
elseif line =~? '^\s*end\>'
|
||||||
let ind = s:GetStmtStarterIndent('end', v:lnum)
|
let ind = s:GetStmtStarterIndent('end', v:lnum)
|
||||||
" General case for end
|
" General case for end
|
||||||
" let ind = ind - &sw
|
" let ind = ind - shiftwidth()
|
||||||
" echom 'curr - end - indent ' . ind
|
" echom 'curr - end - indent ' . ind
|
||||||
elseif line =~? '^\s*when\>'
|
elseif line =~? '^\s*when\>'
|
||||||
let ind = s:GetStmtStarterIndent('when', v:lnum)
|
let ind = s:GetStmtStarterIndent('when', v:lnum)
|
||||||
@ -352,7 +352,7 @@ function! GetSQLIndent()
|
|||||||
" clause, do not change the indent level, since these
|
" clause, do not change the indent level, since these
|
||||||
" statements do not have a corresponding END statement.
|
" statements do not have a corresponding END statement.
|
||||||
" if stmt_starter =~? 'case'
|
" if stmt_starter =~? 'case'
|
||||||
" let ind = ind - &sw
|
" let ind = ind - shiftwidth()
|
||||||
" endif
|
" endif
|
||||||
" elseif line =~ '^\s*)\s*;\?\s*$'
|
" elseif line =~ '^\s*)\s*;\?\s*$'
|
||||||
" elseif line =~ '^\s*)'
|
" elseif line =~ '^\s*)'
|
||||||
@ -371,14 +371,14 @@ function! GetSQLIndent()
|
|||||||
" let num_unmatched_right = s:CountUnbalancedParan( line, ')' )
|
" let num_unmatched_right = s:CountUnbalancedParan( line, ')' )
|
||||||
" if num_unmatched_right > 0
|
" if num_unmatched_right > 0
|
||||||
" elseif strpart( line, strlen(line)-1, 1 ) =~ ')'
|
" elseif strpart( line, strlen(line)-1, 1 ) =~ ')'
|
||||||
" let ind = ind - &sw
|
" let ind = ind - shiftwidth()
|
||||||
if line =~ '^\s*)'
|
if line =~ '^\s*)'
|
||||||
" let ignore = ignore + 1
|
" let ignore = ignore + 1
|
||||||
" echom 'curr - begins ) unbalanced ignore: ' . ignore
|
" echom 'curr - begins ) unbalanced ignore: ' . ignore
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if (num_unmatched_right - ignore) > 0
|
if (num_unmatched_right - ignore) > 0
|
||||||
let ind = ind - ( &sw * (num_unmatched_right - ignore) )
|
let ind = ind - ( shiftwidth() * (num_unmatched_right - ignore) )
|
||||||
endif
|
endif
|
||||||
" endif
|
" endif
|
||||||
endif
|
endif
|
||||||
|
@ -29,7 +29,7 @@ function SystemVerilogIndent()
|
|||||||
if exists('b:systemverilog_indent_width')
|
if exists('b:systemverilog_indent_width')
|
||||||
let offset = b:systemverilog_indent_width
|
let offset = b:systemverilog_indent_width
|
||||||
else
|
else
|
||||||
let offset = &sw
|
let offset = shiftwidth()
|
||||||
endif
|
endif
|
||||||
if exists('b:systemverilog_indent_modules')
|
if exists('b:systemverilog_indent_modules')
|
||||||
let indent_modules = offset
|
let indent_modules = offset
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
" Based on Tera Term Version 4.92
|
" Based on Tera Term Version 4.92
|
||||||
" Maintainer: Ken Takata
|
" Maintainer: Ken Takata
|
||||||
" URL: https://github.com/k-takata/vim-teraterm
|
" URL: https://github.com/k-takata/vim-teraterm
|
||||||
" Last Change: 2016 Aug 17
|
" Last Change: 2017 Jun 13
|
||||||
" Filenames: *.ttl
|
" Filenames: *.ttl
|
||||||
" License: VIM License
|
" License: VIM License
|
||||||
|
|
||||||
@ -22,16 +22,6 @@ if exists("*GetTeraTermIndent")
|
|||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" The shiftwidth() function is relatively new.
|
|
||||||
" Don't require it to exist.
|
|
||||||
if exists('*shiftwidth')
|
|
||||||
let s:sw = function('shiftwidth')
|
|
||||||
else
|
|
||||||
function s:sw() abort
|
|
||||||
return &shiftwidth
|
|
||||||
endfunction
|
|
||||||
endif
|
|
||||||
|
|
||||||
function! GetTeraTermIndent(lnum)
|
function! GetTeraTermIndent(lnum)
|
||||||
let l:prevlnum = prevnonblank(a:lnum-1)
|
let l:prevlnum = prevnonblank(a:lnum-1)
|
||||||
if l:prevlnum == 0
|
if l:prevlnum == 0
|
||||||
@ -48,15 +38,15 @@ function! GetTeraTermIndent(lnum)
|
|||||||
|
|
||||||
if l:prevl =~ '^\s*if\>.*\<then\>'
|
if l:prevl =~ '^\s*if\>.*\<then\>'
|
||||||
" previous line opened a block
|
" previous line opened a block
|
||||||
let l:ind += s:sw()
|
let l:ind += shiftwidth()
|
||||||
endif
|
endif
|
||||||
if l:prevl =~ '^\s*\%(elseif\|else\|do\|until\|while\|for\)\>'
|
if l:prevl =~ '^\s*\%(elseif\|else\|do\|until\|while\|for\)\>'
|
||||||
" previous line opened a block
|
" previous line opened a block
|
||||||
let l:ind += s:sw()
|
let l:ind += shiftwidth()
|
||||||
endif
|
endif
|
||||||
if l:thisl =~ '^\s*\%(elseif\|else\|endif\|enduntil\|endwhile\|loop\|next\)\>'
|
if l:thisl =~ '^\s*\%(elseif\|else\|endif\|enduntil\|endwhile\|loop\|next\)\>'
|
||||||
" this line closed a block
|
" this line closed a block
|
||||||
let l:ind -= s:sw()
|
let l:ind -= shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return l:ind
|
return l:ind
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
" Vim indent file
|
" Vim indent file
|
||||||
" Language: LaTeX
|
" Language: LaTeX
|
||||||
" Maintainer: YiChao Zhou <broken.zhou AT gmail.com>
|
" Maintainer: Yichao Zhou <broken.zhou AT gmail.com>
|
||||||
" Created: Sat, 16 Feb 2002 16:50:19 +0100
|
" Created: Sat, 16 Feb 2002 16:50:19 +0100
|
||||||
" Version: 0.9.2
|
" Version: 0.9.4
|
||||||
" Please email me if you found something I can do. Comments, bug report and
|
" Please email me if you found something I can do. Comments, bug report and
|
||||||
" feature request are welcome.
|
" feature request are welcome.
|
||||||
|
|
||||||
@ -15,49 +15,53 @@
|
|||||||
" 2005/06/15, Moshe Kaminsky <kaminsky AT math.huji.ac.il>
|
" 2005/06/15, Moshe Kaminsky <kaminsky AT math.huji.ac.il>
|
||||||
" (*) New variables:
|
" (*) New variables:
|
||||||
" g:tex_items, g:tex_itemize_env, g:tex_noindent_env
|
" g:tex_items, g:tex_itemize_env, g:tex_noindent_env
|
||||||
" 2011/3/6, by Zhou YiChao <broken.zhou AT gmail.com>
|
" 2011/3/6, by Yichao Zhou <broken.zhou AT gmail.com>
|
||||||
" (*) Don't change indentation of lines starting with '%'
|
" (*) Don't change indentation of lines starting with '%'
|
||||||
" I don't see any code with '%' and it doesn't work properly
|
" I don't see any code with '%' and it doesn't work properly
|
||||||
" so I add some code.
|
" so I add some code.
|
||||||
" (*) New features: Add smartindent-like indent for "{}" and "[]".
|
" (*) New features: Add smartindent-like indent for "{}" and "[]".
|
||||||
" (*) New variables: g:tex_indent_brace
|
" (*) New variables: g:tex_indent_brace
|
||||||
" 2011/9/25, by Zhou Yichao <broken.zhou AT gmail.com>
|
" 2011/9/25, by Yichao Zhou <broken.zhou AT gmail.com>
|
||||||
" (*) Bug fix: smartindent-like indent for "[]"
|
" (*) Bug fix: smartindent-like indent for "[]"
|
||||||
" (*) New features: Align with "&".
|
" (*) New features: Align with "&".
|
||||||
" (*) New variable: g:tex_indent_and.
|
" (*) New variable: g:tex_indent_and.
|
||||||
" 2011/10/23 by Zhou Yichao <broken.zhou AT gmail.com>
|
" 2011/10/23 by Yichao Zhou <broken.zhou AT gmail.com>
|
||||||
" (*) Bug fix: improve the smartindent-like indent for "{}" and
|
" (*) Bug fix: improve the smartindent-like indent for "{}" and
|
||||||
" "[]".
|
" "[]".
|
||||||
" 2012/02/27 by Zhou Yichao <broken.zhou AT gmail.com>
|
" 2012/02/27 by Yichao Zhou <broken.zhou AT gmail.com>
|
||||||
" (*) Bug fix: support default folding marker.
|
" (*) Bug fix: support default folding marker.
|
||||||
" (*) Indent with "&" is not very handy. Make it not enable by
|
" (*) Indent with "&" is not very handy. Make it not enable by
|
||||||
" default.
|
" default.
|
||||||
" 2012/03/06 by Zhou Yichao <broken.zhou AT gmail.com>
|
" 2012/03/06 by Yichao Zhou <broken.zhou AT gmail.com>
|
||||||
" (*) Modify "&" behavior and make it default again. Now "&"
|
" (*) Modify "&" behavior and make it default again. Now "&"
|
||||||
" won't align when there are more then one "&" in the previous
|
" won't align when there are more then one "&" in the previous
|
||||||
" line.
|
" line.
|
||||||
" (*) Add indent "\left(" and "\right)"
|
" (*) Add indent "\left(" and "\right)"
|
||||||
" (*) Trust user when in "verbatim" and "lstlisting"
|
" (*) Trust user when in "verbatim" and "lstlisting"
|
||||||
" 2012/03/11 by Zhou Yichao <broken.zhou AT gmail.com>
|
" 2012/03/11 by Yichao Zhou <broken.zhou AT gmail.com>
|
||||||
" (*) Modify "&" so that only indent when current line start with
|
" (*) Modify "&" so that only indent when current line start with
|
||||||
" "&".
|
" "&".
|
||||||
" 2012/03/12 by Zhou Yichao <broken.zhou AT gmail.com>
|
" 2012/03/12 by Yichao Zhou <broken.zhou AT gmail.com>
|
||||||
" (*) Modify indentkeys.
|
" (*) Modify indentkeys.
|
||||||
" 2012/03/18 by Zhou Yichao <broken.zhou AT gmail.com>
|
" 2012/03/18 by Yichao Zhou <broken.zhou AT gmail.com>
|
||||||
" (*) Add &cpo
|
" (*) Add &cpo
|
||||||
" 2013/05/02 by Zhou Yichao <broken.zhou AT gmail.com>
|
" 2013/05/02 by Yichao Zhou <broken.zhou AT gmail.com>
|
||||||
" (*) Fix problem about GetTeXIndent checker. Thank Albert Netymk
|
" (*) Fix problem about GetTeXIndent checker. Thank Albert Netymk
|
||||||
" for reporting this.
|
" for reporting this.
|
||||||
" 2014/06/23 by Zhou Yichao <broken.zhou AT gmail.com>
|
" 2014/06/23 by Yichao Zhou <broken.zhou AT gmail.com>
|
||||||
" (*) Remove the feature g:tex_indent_and because it is buggy.
|
" (*) Remove the feature g:tex_indent_and because it is buggy.
|
||||||
" (*) If there is not any obvious indentation hints, we do not
|
" (*) If there is not any obvious indentation hints, we do not
|
||||||
" alert our user's current indentation.
|
" alert our user's current indentation.
|
||||||
" (*) g:tex_indent_brace now only works if the open brace is the
|
" (*) g:tex_indent_brace now only works if the open brace is the
|
||||||
" last character of that line.
|
" last character of that line.
|
||||||
" 2014/08/03 by Zhou Yichao <broken.zhou AT gmail.com>
|
" 2014/08/03 by Yichao Zhou <broken.zhou AT gmail.com>
|
||||||
" (*) Indent current line if last line has larger indentation
|
" (*) Indent current line if last line has larger indentation
|
||||||
" 2014/08/09 by Zhou Yichao <broken.zhou AT gmail.com>
|
" 2016/11/08 by Yichao Zhou <broken.zhou AT gmail.com>
|
||||||
" (*) Add missing return value for s:GetEndIndentation(...)
|
" (*) Fix problems for \[ and \]. Thanks Bruno for reporting.
|
||||||
|
" 2017/04/30 by Yichao Zhou <broken.zhou AT gmail.com>
|
||||||
|
" (*) Fix a bug between g:tex_noindent_env and g:tex_indent_items
|
||||||
|
" Now g:tex_noindent_env='document\|verbatim\|itemize' (Emacs
|
||||||
|
" style) is supported. Thanks Miles Wheeler for reporting.
|
||||||
"
|
"
|
||||||
" }}}
|
" }}}
|
||||||
|
|
||||||
@ -206,17 +210,19 @@ function! GetTeXIndent() " {{{
|
|||||||
|
|
||||||
" Add a 'shiftwidth' after beginning of environments.
|
" Add a 'shiftwidth' after beginning of environments.
|
||||||
" Don't add it for \begin{document} and \begin{verbatim}
|
" Don't add it for \begin{document} and \begin{verbatim}
|
||||||
""if line =~ '^\s*\\begin{\(.*\)}' && line !~ 'verbatim'
|
" if line =~ '^\s*\\begin{\(.*\)}' && line !~ 'verbatim'
|
||||||
" LH modification : \begin does not always start a line
|
" LH modification : \begin does not always start a line
|
||||||
" ZYC modification : \end after \begin won't cause wrong indent anymore
|
" ZYC modification : \end after \begin won't cause wrong indent anymore
|
||||||
if line =~ '\\begin{.*}' && line !~ g:tex_noindent_env
|
if line =~ '\\begin{.*}'
|
||||||
let ind = ind + &sw
|
if line !~ g:tex_noindent_env
|
||||||
let stay = 0
|
let ind = ind + shiftwidth()
|
||||||
|
let stay = 0
|
||||||
|
endif
|
||||||
|
|
||||||
if g:tex_indent_items
|
if g:tex_indent_items
|
||||||
" Add another sw for item-environments
|
" Add another sw for item-environments
|
||||||
if line =~ g:tex_itemize_env
|
if line =~ g:tex_itemize_env
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
let stay = 0
|
let stay = 0
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@ -235,39 +241,37 @@ function! GetTeXIndent() " {{{
|
|||||||
if g:tex_indent_items
|
if g:tex_indent_items
|
||||||
" Remove another sw for item-environments
|
" Remove another sw for item-environments
|
||||||
if cline =~ g:tex_itemize_env
|
if cline =~ g:tex_itemize_env
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
let stay = 0
|
let stay = 0
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
let stay = 0
|
let stay = 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if g:tex_indent_brace
|
if g:tex_indent_brace
|
||||||
let char = line[strlen(line)-1]
|
if line =~ '[[{]$'
|
||||||
if char == '[' || char == '{'
|
let ind += shiftwidth()
|
||||||
let ind += &sw
|
|
||||||
let stay = 0
|
let stay = 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let cind = indent(v:lnum)
|
if cline =~ '^\s*\\\?[\]}]' && s:CheckPairedIsLastCharacter(v:lnum, indent(v:lnum))
|
||||||
let char = cline[cind]
|
let ind -= shiftwidth()
|
||||||
if (char == ']' || char == '}') &&
|
|
||||||
\ s:CheckPairedIsLastCharacter(v:lnum, cind)
|
|
||||||
let ind -= &sw
|
|
||||||
let stay = 0
|
let stay = 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
for i in range(indent(lnum)+1, strlen(line)-1)
|
if line !~ '^\s*\\\?[\]}]'
|
||||||
let char = line[i]
|
for i in range(indent(lnum)+1, strlen(line)-1)
|
||||||
if char == ']' || char == '}'
|
let char = line[i]
|
||||||
if s:CheckPairedIsLastCharacter(lnum, i)
|
if char == ']' || char == '}'
|
||||||
let ind -= &sw
|
if s:CheckPairedIsLastCharacter(lnum, i)
|
||||||
let stay = 0
|
let ind -= shiftwidth()
|
||||||
|
let stay = 0
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endfor
|
||||||
endfor
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Special treatment for 'item'
|
" Special treatment for 'item'
|
||||||
@ -276,12 +280,12 @@ function! GetTeXIndent() " {{{
|
|||||||
if g:tex_indent_items
|
if g:tex_indent_items
|
||||||
" '\item' or '\bibitem' itself:
|
" '\item' or '\bibitem' itself:
|
||||||
if cline =~ g:tex_items
|
if cline =~ g:tex_items
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
let stay = 0
|
let stay = 0
|
||||||
endif
|
endif
|
||||||
" lines following to '\item' are intented once again:
|
" lines following to '\item' are intented once again:
|
||||||
if line =~ g:tex_items
|
if line =~ g:tex_items
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
let stay = 0
|
let stay = 0
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@ -309,13 +313,13 @@ function! s:GetLastBeginIndentation(lnum) " {{{
|
|||||||
let matchend -= 1
|
let matchend -= 1
|
||||||
endif
|
endif
|
||||||
if matchend == 0
|
if matchend == 0
|
||||||
if line =~ g:tex_itemize_env
|
|
||||||
return indent(lnum) + 2 * &sw
|
|
||||||
endif
|
|
||||||
if line =~ g:tex_noindent_env
|
if line =~ g:tex_noindent_env
|
||||||
return indent(lnum)
|
return indent(lnum)
|
||||||
endif
|
endif
|
||||||
return indent(lnum) + &sw
|
if line =~ g:tex_itemize_env
|
||||||
|
return indent(lnum) + 2 * shiftwidth()
|
||||||
|
endif
|
||||||
|
return indent(lnum) + shiftwidth()
|
||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
return -1
|
return -1
|
||||||
@ -343,17 +347,20 @@ function! s:GetEndIndentation(lnum) " {{{
|
|||||||
let min_indent = min([min_indent, indent(lnum)])
|
let min_indent = min([min_indent, indent(lnum)])
|
||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
return min_indent - &sw
|
return min_indent - shiftwidth()
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Most of the code is from matchparen.vim
|
" Most of the code is from matchparen.vim
|
||||||
function! s:CheckPairedIsLastCharacter(lnum, col) "{{{
|
function! s:CheckPairedIsLastCharacter(lnum, col) "{{{
|
||||||
" Get the character under the cursor and check if it's in 'matchpairs'.
|
|
||||||
let c_lnum = a:lnum
|
let c_lnum = a:lnum
|
||||||
let c_col = a:col+1
|
let c_col = a:col+1
|
||||||
|
|
||||||
|
let line = getline(c_lnum)
|
||||||
|
if line[c_col-1] == '\'
|
||||||
|
let c_col = c_col + 1
|
||||||
|
endif
|
||||||
|
let c = line[c_col-1]
|
||||||
|
|
||||||
let c = getline(c_lnum)[c_col-1]
|
|
||||||
let plist = split(&matchpairs, '.\zs[:,]')
|
let plist = split(&matchpairs, '.\zs[:,]')
|
||||||
let i = index(plist, c)
|
let i = index(plist, c)
|
||||||
if i < 0
|
if i < 0
|
||||||
|
@ -25,11 +25,11 @@ function GetTildeIndent(lnum)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
if getline(v:lnum) =~ '^\s*\~\(endif\|else\|elseif\|end\)\>'
|
if getline(v:lnum) =~ '^\s*\~\(endif\|else\|elseif\|end\)\>'
|
||||||
return indent(v:lnum) - &sw
|
return indent(v:lnum) - shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if getline(plnum) =~ '^\s*\~\(if\|foreach\|foreach_row\|xml_loop\|file_loop\|file_write\|file_append\|imap_loopsections\|imap_index\|imap_list\|ldap_search\|post_loopall\|post_loop\|file_loop\|sql_loop_num\|sql_dbmsselect\|search\|sql_loop\|post\|for\|function_define\|silent\|while\|setvalbig\|mail_create\|systempipe\|mail_send\|dual\|elseif\|else\)\>'
|
if getline(plnum) =~ '^\s*\~\(if\|foreach\|foreach_row\|xml_loop\|file_loop\|file_write\|file_append\|imap_loopsections\|imap_index\|imap_list\|ldap_search\|post_loopall\|post_loop\|file_loop\|sql_loop_num\|sql_dbmsselect\|search\|sql_loop\|post\|for\|function_define\|silent\|while\|setvalbig\|mail_create\|systempipe\|mail_send\|dual\|elseif\|else\)\>'
|
||||||
return indent(plnum) + &sw
|
return indent(plnum) + shiftwidth()
|
||||||
else
|
else
|
||||||
return -1
|
return -1
|
||||||
endif
|
endif
|
||||||
|
@ -49,26 +49,26 @@ fun! VbGetIndent(lnum)
|
|||||||
|
|
||||||
" Add
|
" Add
|
||||||
if previous_line =~? '^\s*\<\(begin\|\%(\%(private\|public\|friend\)\s\+\)\=\%(function\|sub\|property\)\|select\|case\|default\|if\|else\|elseif\|do\|for\|while\|enum\|with\)\>'
|
if previous_line =~? '^\s*\<\(begin\|\%(\%(private\|public\|friend\)\s\+\)\=\%(function\|sub\|property\)\|select\|case\|default\|if\|else\|elseif\|do\|for\|while\|enum\|with\)\>'
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Subtract
|
" Subtract
|
||||||
if this_line =~? '^\s*\<end\>\s\+\<select\>'
|
if this_line =~? '^\s*\<end\>\s\+\<select\>'
|
||||||
if previous_line !~? '^\s*\<select\>'
|
if previous_line !~? '^\s*\<select\>'
|
||||||
let ind = ind - 2 * &sw
|
let ind = ind - 2 * shiftwidth()
|
||||||
else
|
else
|
||||||
" this case is for an empty 'select' -- 'end select'
|
" this case is for an empty 'select' -- 'end select'
|
||||||
" (w/o any case statements) like:
|
" (w/o any case statements) like:
|
||||||
"
|
"
|
||||||
" select case readwrite
|
" select case readwrite
|
||||||
" end select
|
" end select
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
elseif this_line =~? '^\s*\<\(end\|else\|elseif\|until\|loop\|next\|wend\)\>'
|
elseif this_line =~? '^\s*\<\(end\|else\|elseif\|until\|loop\|next\|wend\)\>'
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
elseif this_line =~? '^\s*\<\(case\|default\)\>'
|
elseif this_line =~? '^\s*\<\(case\|default\)\>'
|
||||||
if previous_line !~? '^\s*\<select\>'
|
if previous_line !~? '^\s*\<select\>'
|
||||||
let ind = ind - &sw
|
let ind = ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
" Language: VHDL
|
" Language: VHDL
|
||||||
" Maintainer: Gerald Lai <laigera+vim?gmail.com>
|
" Maintainer: Gerald Lai <laigera+vim?gmail.com>
|
||||||
" Version: 1.60
|
" Version: 1.60
|
||||||
" Last Change: 2016 Feb 26
|
" Last Change: 2017 Jun 13
|
||||||
" URL: http://www.vim.org/scripts/script.php?script_id=1450
|
" URL: http://www.vim.org/scripts/script.php?script_id=1450
|
||||||
|
|
||||||
" only load this indent file when no other was loaded
|
" only load this indent file when no other was loaded
|
||||||
@ -114,9 +114,9 @@ function GetVHDLindent()
|
|||||||
return ind2 + m
|
return ind2 + m
|
||||||
else
|
else
|
||||||
if g:vhdl_indent_genportmap
|
if g:vhdl_indent_genportmap
|
||||||
return ind2 + stridx(prevs_noi, '(') + &sw
|
return ind2 + stridx(prevs_noi, '(') + shiftwidth()
|
||||||
else
|
else
|
||||||
return ind2 + &sw
|
return ind2 + shiftwidth()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@ -128,7 +128,7 @@ function GetVHDLindent()
|
|||||||
if g:vhdl_indent_rhsassign
|
if g:vhdl_indent_rhsassign
|
||||||
return ind2 + matchend(prevs_noi, '<=\s*\ze.')
|
return ind2 + matchend(prevs_noi, '<=\s*\ze.')
|
||||||
else
|
else
|
||||||
return ind2 + &sw
|
return ind2 + shiftwidth()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -218,12 +218,12 @@ function GetVHDLindent()
|
|||||||
let ps = getline(pn)
|
let ps = getline(pn)
|
||||||
|
|
||||||
if (ps =~? s:NC.'\<begin\>')
|
if (ps =~? s:NC.'\<begin\>')
|
||||||
return indent(pn) - &sw
|
return indent(pn) - shiftwidth()
|
||||||
endif
|
endif
|
||||||
endwhile
|
endwhile
|
||||||
|
|
||||||
if (pn == 0)
|
if (pn == 0)
|
||||||
return ind - &sw
|
return ind - shiftwidth()
|
||||||
else
|
else
|
||||||
return indent(pn)
|
return indent(pn)
|
||||||
endif
|
endif
|
||||||
@ -237,7 +237,7 @@ function GetVHDLindent()
|
|||||||
" keyword: "type"
|
" keyword: "type"
|
||||||
let s3 = s:NC.s:NE.'\<type\>'
|
let s3 = s:NC.s:NE.'\<type\>'
|
||||||
if curs !~? s3.'.*'.s:NC.'\<\%(record\|units\)\>.*'.s:ES && prevs =~? s3
|
if curs !~? s3.'.*'.s:NC.'\<\%(record\|units\)\>.*'.s:ES && prevs =~? s3
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
return ind
|
return ind
|
||||||
endif
|
endif
|
||||||
@ -282,7 +282,7 @@ function GetVHDLindent()
|
|||||||
" removed: "begin", "case", "elsif", "if", "loop", "record", "units", "while"
|
" removed: "begin", "case", "elsif", "if", "loop", "record", "units", "while"
|
||||||
" where: anywhere in previous line
|
" where: anywhere in previous line
|
||||||
if prevs =~? s:NC.s:NE.'\<\%(block\|process\)\>'
|
if prevs =~? s:NC.s:NE.'\<\%(block\|process\)\>'
|
||||||
return ind + &sw
|
return ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" indent: +sw
|
" indent: +sw
|
||||||
@ -290,7 +290,7 @@ function GetVHDLindent()
|
|||||||
" removed: "component", "for", "when", "with"
|
" removed: "component", "for", "when", "with"
|
||||||
" where: start of previous line
|
" where: start of previous line
|
||||||
if prevs =~? '^\s*\%(architecture\|configuration\|entity\|package\)\>'
|
if prevs =~? '^\s*\%(architecture\|configuration\|entity\|package\)\>'
|
||||||
return ind + &sw
|
return ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" indent: +sw
|
" indent: +sw
|
||||||
@ -298,7 +298,7 @@ function GetVHDLindent()
|
|||||||
" removed: "generate", "is", "=>"
|
" removed: "generate", "is", "=>"
|
||||||
" where: end of previous line
|
" where: end of previous line
|
||||||
if prevs =~? s:NC.'\<select'.s:ES
|
if prevs =~? s:NC.'\<select'.s:ES
|
||||||
return ind + &sw
|
return ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" indent: +sw
|
" indent: +sw
|
||||||
@ -310,7 +310,7 @@ function GetVHDLindent()
|
|||||||
" where: end of previous line
|
" where: end of previous line
|
||||||
" _note_: indent allowed to leave this filter
|
" _note_: indent allowed to leave this filter
|
||||||
if prevs =~? s:NC.'\%(\<begin\>\|'.s:NE.'\<\%(loop\|record\|units\)\>\)' || prevs =~? '^\s*\%(component\|else\|for\)\>' || prevs =~? s:NC.'\%('.s:NE.'\<generate\|\<\%(is\|then\)\|=>\)'.s:ES
|
if prevs =~? s:NC.'\%(\<begin\>\|'.s:NE.'\<\%(loop\|record\|units\)\>\)' || prevs =~? '^\s*\%(component\|else\|for\)\>' || prevs =~? s:NC.'\%('.s:NE.'\<generate\|\<\%(is\|then\)\|=>\)'.s:ES
|
||||||
let ind = ind + &sw
|
let ind = ind + shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" ****************************************************************************************
|
" ****************************************************************************************
|
||||||
@ -322,7 +322,7 @@ function GetVHDLindent()
|
|||||||
if prevs =~? s:NC.'\<is'.s:ES
|
if prevs =~? s:NC.'\<is'.s:ES
|
||||||
return ind
|
return ind
|
||||||
elseif prevs !~? s4
|
elseif prevs !~? s4
|
||||||
return ind - &sw
|
return ind - shiftwidth()
|
||||||
else
|
else
|
||||||
return ind2
|
return ind2
|
||||||
endif
|
endif
|
||||||
@ -336,7 +336,7 @@ function GetVHDLindent()
|
|||||||
if prevs =~? '^\s*\%(elsif\|'.s5.'\)'
|
if prevs =~? '^\s*\%(elsif\|'.s5.'\)'
|
||||||
return ind
|
return ind
|
||||||
else
|
else
|
||||||
return ind - &sw
|
return ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -367,9 +367,9 @@ function GetVHDLindent()
|
|||||||
"where: start of previous non-comment line
|
"where: start of previous non-comment line
|
||||||
if m == 1
|
if m == 1
|
||||||
if ps =~? '^\s*end\s\+case\>'
|
if ps =~? '^\s*end\s\+case\>'
|
||||||
return indent(pn) - 2 * &sw
|
return indent(pn) - 2 * shiftwidth()
|
||||||
elseif ps =~? '^\s*when\>'
|
elseif ps =~? '^\s*when\>'
|
||||||
return indent(pn) - &sw
|
return indent(pn) - shiftwidth()
|
||||||
elseif ps =~? '^\s*case\>'
|
elseif ps =~? '^\s*case\>'
|
||||||
return indent(pn)
|
return indent(pn)
|
||||||
endif
|
endif
|
||||||
@ -385,14 +385,14 @@ function GetVHDLindent()
|
|||||||
let pn = prevnonblank(pn - 1)
|
let pn = prevnonblank(pn - 1)
|
||||||
let ps = getline(pn)
|
let ps = getline(pn)
|
||||||
endwhile
|
endwhile
|
||||||
return ind - &sw
|
return ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" indent: -sw
|
" indent: -sw
|
||||||
" keyword: ")"
|
" keyword: ")"
|
||||||
" where: start of current line
|
" where: start of current line
|
||||||
if curs =~ '^\s*)'
|
if curs =~ '^\s*)'
|
||||||
return ind - &sw
|
return ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" indent: 0
|
" indent: 0
|
||||||
@ -407,7 +407,7 @@ function GetVHDLindent()
|
|||||||
" where: start of current line
|
" where: start of current line
|
||||||
"if curs =~? '^\s*end\s\+\w\+\>'
|
"if curs =~? '^\s*end\s\+\w\+\>'
|
||||||
if curs =~? '^\s*end\%(\s\|;'.s:ES.'\)'
|
if curs =~? '^\s*end\%(\s\|;'.s:ES.'\)'
|
||||||
return ind - &sw
|
return ind - shiftwidth()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" ****************************************************************************************
|
" ****************************************************************************************
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
" Language: xml
|
" Language: xml
|
||||||
" Maintainer: Johannes Zellner <johannes@zellner.org>
|
" Maintainer: Johannes Zellner <johannes@zellner.org>
|
||||||
" Last Change: 2012 Jul 25
|
" Last Change: 2017 Jun 13
|
||||||
" Notes: 1) does not indent pure non-xml code (e.g. embedded scripts)
|
" Notes: 1) does not indent pure non-xml code (e.g. embedded scripts)
|
||||||
" 2) will be confused by unbalanced tags in comments
|
" 2) will be confused by unbalanced tags in comments
|
||||||
" or CDATA sections.
|
" or CDATA sections.
|
||||||
@ -67,7 +67,7 @@ endfun
|
|||||||
fun! <SID>XmlIndentSum(lnum, style, add)
|
fun! <SID>XmlIndentSum(lnum, style, add)
|
||||||
let line = getline(a:lnum)
|
let line = getline(a:lnum)
|
||||||
if a:style == match(line, '^\s*</')
|
if a:style == match(line, '^\s*</')
|
||||||
return (&sw *
|
return (shiftwidth() *
|
||||||
\ (<SID>XmlIndentWithPattern(line, b:xml_indent_open)
|
\ (<SID>XmlIndentWithPattern(line, b:xml_indent_open)
|
||||||
\ - <SID>XmlIndentWithPattern(line, b:xml_indent_close)
|
\ - <SID>XmlIndentWithPattern(line, b:xml_indent_close)
|
||||||
\ - <SID>XmlIndentWithPattern(line, '.\{-}/>'))) + a:add
|
\ - <SID>XmlIndentWithPattern(line, '.\{-}/>'))) + a:add
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
" Vim indent file
|
" Vim indent file
|
||||||
" Language: YAML
|
" Language: YAML
|
||||||
" Maintainer: Nikolai Pavlov <zyx.vim@gmail.com>
|
" Maintainer: Nikolai Pavlov <zyx.vim@gmail.com>
|
||||||
" Last Change: 2015 Nov 01
|
" Last Change: 2017 Jun 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')
|
||||||
@ -24,14 +24,6 @@ if exists('*GetYAMLIndent')
|
|||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if exists('*shiftwidth')
|
|
||||||
let s:shiftwidth = function('shiftwidth')
|
|
||||||
else
|
|
||||||
function s:shiftwidth()
|
|
||||||
return &shiftwidth
|
|
||||||
endfunction
|
|
||||||
endif
|
|
||||||
|
|
||||||
function s:FindPrevLessIndentedLine(lnum, ...)
|
function s:FindPrevLessIndentedLine(lnum, ...)
|
||||||
let prevlnum = prevnonblank(a:lnum-1)
|
let prevlnum = prevnonblank(a:lnum-1)
|
||||||
let curindent = a:0 ? a:1 : indent(a:lnum)
|
let curindent = a:0 ? a:1 : indent(a:lnum)
|
||||||
@ -119,7 +111,7 @@ function GetYAMLIndent(lnum)
|
|||||||
"
|
"
|
||||||
" - |-
|
" - |-
|
||||||
" Block scalar without indentation indicator
|
" Block scalar without indentation indicator
|
||||||
return previndent+s:shiftwidth()
|
return previndent+shiftwidth()
|
||||||
elseif prevline =~# '\v[:-]\ [|>]%(\d+[+\-]?|[+\-]?\d+)%(\#.*|\s*)$'
|
elseif prevline =~# '\v[:-]\ [|>]%(\d+[+\-]?|[+\-]?\d+)%(\#.*|\s*)$'
|
||||||
" - |+2
|
" - |+2
|
||||||
" block scalar with indentation indicator
|
" block scalar with indentation indicator
|
||||||
@ -155,7 +147,7 @@ function GetYAMLIndent(lnum)
|
|||||||
\ '\v)%(\s+|\s*%(\#.*)?$))*'
|
\ '\v)%(\s+|\s*%(\#.*)?$))*'
|
||||||
" Mapping with: value
|
" Mapping with: value
|
||||||
" that is multiline scalar
|
" that is multiline scalar
|
||||||
return previndent+s:shiftwidth()
|
return previndent+shiftwidth()
|
||||||
endif
|
endif
|
||||||
return previndent
|
return previndent
|
||||||
endfunction
|
endfunction
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
" Vim script to work like "less"
|
" Vim script to work like "less"
|
||||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||||
" Last Change: 2015 Nov 15
|
" Last Change: 2017 Mar 31
|
||||||
|
|
||||||
" Avoid loading this file twice, allow the user to define his own script.
|
" Avoid loading this file twice, allow the user to define his own script.
|
||||||
if exists("loaded_less")
|
if exists("loaded_less")
|
||||||
@ -81,6 +81,10 @@ fun! s:Help()
|
|||||||
echo "\n"
|
echo "\n"
|
||||||
echo "/pattern Search for pattern ?pattern Search backward for pattern"
|
echo "/pattern Search for pattern ?pattern Search backward for pattern"
|
||||||
echo "n next pattern match N Previous pattern match"
|
echo "n next pattern match N Previous pattern match"
|
||||||
|
if &foldmethod != "manual"
|
||||||
|
echo "\n"
|
||||||
|
echo "zR open all folds zm increase fold level"
|
||||||
|
endif
|
||||||
echo "\n"
|
echo "\n"
|
||||||
echo ":n<Enter> Next file :p<Enter> Previous file"
|
echo ":n<Enter> Next file :p<Enter> Previous file"
|
||||||
echo "\n"
|
echo "\n"
|
||||||
@ -96,7 +100,11 @@ map <C-F> <Space>
|
|||||||
map <PageDown> <Space>
|
map <PageDown> <Space>
|
||||||
map <kPageDown> <Space>
|
map <kPageDown> <Space>
|
||||||
map <S-Down> <Space>
|
map <S-Down> <Space>
|
||||||
map z <Space>
|
" If 'foldmethod' was changed keep the "z" commands, e.g. "zR" to open all
|
||||||
|
" folds.
|
||||||
|
if &foldmethod == "manual"
|
||||||
|
map z <Space>
|
||||||
|
endif
|
||||||
map <Esc><Space> <Space>
|
map <Esc><Space> <Space>
|
||||||
fun! s:NextPage()
|
fun! s:NextPage()
|
||||||
if line(".") == line("$")
|
if line(".") == line("$")
|
||||||
|
@ -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: 2017 Jan 28
|
" Last Change: 2017 Jul 15
|
||||||
|
|
||||||
" If there already is an option window, jump to that one.
|
" If there already is an option window, jump to that one.
|
||||||
if bufwinnr("option-window") > 0
|
if bufwinnr("option-window") > 0
|
||||||
@ -506,6 +506,14 @@ if has("cursorbind")
|
|||||||
call append("$", "\t(local to window)")
|
call append("$", "\t(local to window)")
|
||||||
call <SID>BinOptionL("crb")
|
call <SID>BinOptionL("crb")
|
||||||
endif
|
endif
|
||||||
|
if has("terminal")
|
||||||
|
call append("$", "termsize\tsize of a terminal window")
|
||||||
|
call append("$", "\t(local to window)")
|
||||||
|
call <SID>OptionL("tms")
|
||||||
|
call append("$", "termkey\tkey that precedes Vim commands in a terminal window")
|
||||||
|
call append("$", "\t(local to window)")
|
||||||
|
call <SID>OptionL("tk")
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
call <SID>Header("multiple tab pages")
|
call <SID>Header("multiple tab pages")
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
" matchit.vim: (global plugin) Extended "%" matching
|
" matchit.vim: (global plugin) Extended "%" matching
|
||||||
" Last Change: 2016 Aug 21
|
" Last Change: 2017 March 26
|
||||||
" Maintainer: Benji Fisher PhD <benji@member.AMS.org>
|
" Maintainer: Benji Fisher PhD <benji@member.AMS.org>
|
||||||
" Version: 1.13.2, for Vim 6.3+
|
" Version: 1.13.3, for Vim 6.3+
|
||||||
" Fix from Tommy Allen included.
|
" Fix from Tommy Allen included.
|
||||||
" Fix from Fernando Torres included.
|
" Fix from Fernando Torres included.
|
||||||
" Improvement from Ken Takata included.
|
" Improvement from Ken Takata included.
|
||||||
@ -90,12 +90,15 @@ let s:notslash = '\\\@<!\%(\\\\\)*'
|
|||||||
|
|
||||||
function! s:Match_wrapper(word, forward, mode) range
|
function! s:Match_wrapper(word, forward, mode) range
|
||||||
" In s:CleanUp(), :execute "set" restore_options .
|
" In s:CleanUp(), :execute "set" restore_options .
|
||||||
let restore_options = (&ic ? " " : " no") . "ignorecase"
|
let restore_options = ""
|
||||||
if exists("b:match_ignorecase")
|
if exists("b:match_ignorecase") && b:match_ignorecase != &ic
|
||||||
|
let restore_options .= (&ic ? " " : " no") . "ignorecase"
|
||||||
let &ignorecase = b:match_ignorecase
|
let &ignorecase = b:match_ignorecase
|
||||||
endif
|
endif
|
||||||
let restore_options = " ve=" . &ve . restore_options
|
if &ve != ''
|
||||||
set ve=
|
let restore_options = " ve=" . &ve . restore_options
|
||||||
|
set ve=
|
||||||
|
endif
|
||||||
" If this function was called from Visual mode, make sure that the cursor
|
" If this function was called from Visual mode, make sure that the cursor
|
||||||
" is at the correct end of the Visual range:
|
" is at the correct end of the Visual range:
|
||||||
if a:mode == "v"
|
if a:mode == "v"
|
||||||
@ -283,7 +286,9 @@ endfun
|
|||||||
" Restore options and do some special handling for Operator-pending mode.
|
" Restore options and do some special handling for Operator-pending mode.
|
||||||
" The optional argument is the tail of the matching group.
|
" The optional argument is the tail of the matching group.
|
||||||
fun! s:CleanUp(options, mode, startline, startcol, ...)
|
fun! s:CleanUp(options, mode, startline, startcol, ...)
|
||||||
execute "set" a:options
|
if strlen(a:options)
|
||||||
|
execute "set" a:options
|
||||||
|
endif
|
||||||
" Open folds, if appropriate.
|
" Open folds, if appropriate.
|
||||||
if a:mode != "o"
|
if a:mode != "o"
|
||||||
if &foldopen =~ "percent"
|
if &foldopen =~ "percent"
|
||||||
@ -635,8 +640,9 @@ fun! s:MultiMatch(spflag, mode)
|
|||||||
if !exists("b:match_words") || b:match_words == ""
|
if !exists("b:match_words") || b:match_words == ""
|
||||||
return {}
|
return {}
|
||||||
end
|
end
|
||||||
let restore_options = (&ic ? "" : "no") . "ignorecase"
|
let restore_options = ""
|
||||||
if exists("b:match_ignorecase")
|
if exists("b:match_ignorecase") && b:match_ignorecase != &ic
|
||||||
|
let restore_options .= (&ic ? " " : " no") . "ignorecase"
|
||||||
let &ignorecase = b:match_ignorecase
|
let &ignorecase = b:match_ignorecase
|
||||||
endif
|
endif
|
||||||
let startline = line(".")
|
let startline = line(".")
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
" Language: AutoHotkey script file
|
" Language: AutoHotkey script file
|
||||||
" Maintainer: Michael Wong
|
" Maintainer: Michael Wong
|
||||||
" https://github.com/mmikeww/autohotkey.vim
|
" https://github.com/mmikeww/autohotkey.vim
|
||||||
" Latest Revision: 2017-01-23
|
" Latest Revision: 2017-04-03
|
||||||
" Previous Maintainers: SungHyun Nam <goweol@gmail.com>
|
" Previous Maintainers: SungHyun Nam <goweol@gmail.com>
|
||||||
" Nikolai Weibull <now@bitwi.se>
|
" Nikolai Weibull <now@bitwi.se>
|
||||||
|
|
||||||
@ -106,6 +106,7 @@ syn keyword autohotkeyCommand
|
|||||||
\ FormatTime IfInString IfNotInString Sort StringCaseSense StringGetPos
|
\ FormatTime IfInString IfNotInString Sort StringCaseSense StringGetPos
|
||||||
\ StringLeft StringRight StringLower StringUpper StringMid StringReplace
|
\ StringLeft StringRight StringLower StringUpper StringMid StringReplace
|
||||||
\ StringSplit StringTrimLeft StringTrimRight StringLen
|
\ StringSplit StringTrimLeft StringTrimRight StringLen
|
||||||
|
\ StrSplit StrReplace Throw
|
||||||
\ Control ControlClick ControlFocus ControlGet ControlGetFocus
|
\ Control ControlClick ControlFocus ControlGet ControlGetFocus
|
||||||
\ ControlGetPos ControlGetText ControlMove ControlSend ControlSendRaw
|
\ ControlGetPos ControlGetText ControlMove ControlSend ControlSendRaw
|
||||||
\ ControlSetText Menu PostMessage SendMessage SetControlDelay
|
\ ControlSetText Menu PostMessage SendMessage SetControlDelay
|
||||||
@ -119,17 +120,18 @@ syn keyword autohotkeyCommand
|
|||||||
\ SetCapsLockState SetNumLockState SetScrollLockState
|
\ SetCapsLockState SetNumLockState SetScrollLockState
|
||||||
|
|
||||||
syn keyword autohotkeyFunction
|
syn keyword autohotkeyFunction
|
||||||
\ InStr RegExMatch RegExReplace StrLen SubStr Asc Chr
|
\ InStr RegExMatch RegExReplace StrLen SubStr Asc Chr Func
|
||||||
\ DllCall VarSetCapacity WinActive WinExist IsLabel OnMessage
|
\ DllCall VarSetCapacity WinActive WinExist IsLabel OnMessage
|
||||||
\ Abs Ceil Exp Floor Log Ln Mod Round Sqrt Sin Cos Tan ASin ACos ATan
|
\ Abs Ceil Exp Floor Log Ln Mod Round Sqrt Sin Cos Tan ASin ACos ATan
|
||||||
\ FileExist GetKeyState NumGet NumPut StrGet StrPut RegisterCallback
|
\ FileExist GetKeyState NumGet NumPut StrGet StrPut RegisterCallback
|
||||||
\ IsFunc Trim LTrim RTrim IsObject Object Array FileOpen
|
\ IsFunc Trim LTrim RTrim IsObject Object Array FileOpen
|
||||||
\ ComObjActive ComObjArray ComObjConnect ComObjCreate ComObjGet
|
\ ComObjActive ComObjArray ComObjConnect ComObjCreate ComObjGet
|
||||||
\ ComObjError ComObjFlags ComObjQuery ComObjType ComObjValue ComObject
|
\ ComObjError ComObjFlags ComObjQuery ComObjType ComObjValue ComObject
|
||||||
|
\ Format Exception
|
||||||
|
|
||||||
syn keyword autohotkeyStatement
|
syn keyword autohotkeyStatement
|
||||||
\ Break Continue Exit ExitApp Gosub Goto OnExit Pause Return
|
\ Break Continue Exit ExitApp Gosub Goto OnExit Pause Return
|
||||||
\ Suspend Reload
|
\ Suspend Reload new class extends
|
||||||
|
|
||||||
syn keyword autohotkeyRepeat
|
syn keyword autohotkeyRepeat
|
||||||
\ Loop
|
\ Loop
|
||||||
@ -138,7 +140,7 @@ syn keyword autohotkeyConditional
|
|||||||
\ IfExist IfNotExist If IfEqual IfLess IfGreater Else
|
\ IfExist IfNotExist If IfEqual IfLess IfGreater Else
|
||||||
\ IfWinExist IfWinNotExist IfWinActive IfWinNotActive
|
\ IfWinExist IfWinNotExist IfWinActive IfWinNotActive
|
||||||
\ IfNotEqual IfLessOrEqual IfGreaterOrEqual
|
\ IfNotEqual IfLessOrEqual IfGreaterOrEqual
|
||||||
\ while until for in
|
\ while until for in try catch finally
|
||||||
|
|
||||||
syn match autohotkeyPreProcStart
|
syn match autohotkeyPreProcStart
|
||||||
\ nextgroup=
|
\ nextgroup=
|
||||||
@ -178,7 +180,7 @@ syn keyword autohotkeyPreProc
|
|||||||
\ Warn
|
\ Warn
|
||||||
|
|
||||||
syn keyword autohotkeyMatchClass
|
syn keyword autohotkeyMatchClass
|
||||||
\ ahk_group ahk_class ahk_id ahk_pid
|
\ ahk_group ahk_class ahk_id ahk_pid ahk_exe
|
||||||
|
|
||||||
syn match autohotkeyNumbers
|
syn match autohotkeyNumbers
|
||||||
\ display
|
\ display
|
||||||
@ -217,7 +219,7 @@ syn match autohotkeyHotkey
|
|||||||
\ contains=autohotkeyKey,
|
\ contains=autohotkeyKey,
|
||||||
\ autohotkeyHotkeyDelimiter
|
\ autohotkeyHotkeyDelimiter
|
||||||
\ display
|
\ display
|
||||||
\ '^.\{-}::'
|
\ '^\s*\S*\%( Up\)\?::'
|
||||||
|
|
||||||
syn match autohotkeyKey
|
syn match autohotkeyKey
|
||||||
\ contained
|
\ contained
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
" Vim syntax file
|
" Vim syntax file
|
||||||
" Language: C
|
" Language: C
|
||||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||||
" Last Change: 2016 Nov 18
|
" Last Change: 2017 Apr 30
|
||||||
|
|
||||||
" Quit when a (custom) syntax file was already loaded
|
" Quit when a (custom) syntax file was already loaded
|
||||||
if exists("b:current_syntax")
|
if exists("b:current_syntax")
|
||||||
@ -311,44 +311,32 @@ if !exists("c_no_ansi") || exists("c_ansi_constants") || exists("c_gnu")
|
|||||||
syn keyword cConstant PTRDIFF_MIN PTRDIFF_MAX SIG_ATOMIC_MIN SIG_ATOMIC_MAX
|
syn keyword cConstant PTRDIFF_MIN PTRDIFF_MAX SIG_ATOMIC_MIN SIG_ATOMIC_MAX
|
||||||
syn keyword cConstant SIZE_MAX WCHAR_MIN WCHAR_MAX WINT_MIN WINT_MAX
|
syn keyword cConstant SIZE_MAX WCHAR_MIN WCHAR_MAX WINT_MIN WINT_MAX
|
||||||
endif
|
endif
|
||||||
syn keyword cConstant FLT_RADIX FLT_ROUNDS
|
syn keyword cConstant FLT_RADIX FLT_ROUNDS FLT_DIG FLT_MANT_DIG FLT_EPSILON DBL_DIG DBL_MANT_DIG DBL_EPSILON
|
||||||
syn keyword cConstant FLT_DIG FLT_MANT_DIG FLT_EPSILON
|
syn keyword cConstant LDBL_DIG LDBL_MANT_DIG LDBL_EPSILON FLT_MIN FLT_MAX FLT_MIN_EXP FLT_MAX_EXP FLT_MIN_10_EXP FLT_MAX_10_EXP
|
||||||
syn keyword cConstant DBL_DIG DBL_MANT_DIG DBL_EPSILON
|
syn keyword cConstant DBL_MIN DBL_MAX DBL_MIN_EXP DBL_MAX_EXP DBL_MIN_10_EXP DBL_MAX_10_EXP LDBL_MIN LDBL_MAX LDBL_MIN_EXP LDBL_MAX_EXP
|
||||||
syn keyword cConstant LDBL_DIG LDBL_MANT_DIG LDBL_EPSILON
|
syn keyword cConstant LDBL_MIN_10_EXP LDBL_MAX_10_EXP HUGE_VAL CLOCKS_PER_SEC NULL LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY
|
||||||
syn keyword cConstant FLT_MIN FLT_MAX FLT_MIN_EXP FLT_MAX_EXP
|
syn keyword cConstant LC_NUMERIC LC_TIME SIG_DFL SIG_ERR SIG_IGN SIGABRT SIGFPE SIGILL SIGHUP SIGINT SIGSEGV SIGTERM
|
||||||
syn keyword cConstant FLT_MIN_10_EXP FLT_MAX_10_EXP
|
|
||||||
syn keyword cConstant DBL_MIN DBL_MAX DBL_MIN_EXP DBL_MAX_EXP
|
|
||||||
syn keyword cConstant DBL_MIN_10_EXP DBL_MAX_10_EXP
|
|
||||||
syn keyword cConstant LDBL_MIN LDBL_MAX LDBL_MIN_EXP LDBL_MAX_EXP
|
|
||||||
syn keyword cConstant LDBL_MIN_10_EXP LDBL_MAX_10_EXP
|
|
||||||
syn keyword cConstant HUGE_VAL CLOCKS_PER_SEC NULL
|
|
||||||
syn keyword cConstant LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY
|
|
||||||
syn keyword cConstant LC_NUMERIC LC_TIME
|
|
||||||
syn keyword cConstant SIG_DFL SIG_ERR SIG_IGN
|
|
||||||
syn keyword cConstant SIGABRT SIGFPE SIGILL SIGHUP SIGINT SIGSEGV SIGTERM
|
|
||||||
" Add POSIX signals as well...
|
" Add POSIX signals as well...
|
||||||
syn keyword cConstant SIGABRT SIGALRM SIGCHLD SIGCONT SIGFPE SIGHUP
|
syn keyword cConstant SIGABRT SIGALRM SIGCHLD SIGCONT SIGFPE SIGHUP SIGILL SIGINT SIGKILL SIGPIPE SIGQUIT SIGSEGV
|
||||||
syn keyword cConstant SIGILL SIGINT SIGKILL SIGPIPE SIGQUIT SIGSEGV
|
syn keyword cConstant SIGSTOP SIGTERM SIGTRAP SIGTSTP SIGTTIN SIGTTOU SIGUSR1 SIGUSR2
|
||||||
syn keyword cConstant SIGSTOP SIGTERM SIGTRAP SIGTSTP SIGTTIN SIGTTOU
|
syn keyword cConstant _IOFBF _IOLBF _IONBF BUFSIZ EOF WEOF FOPEN_MAX FILENAME_MAX L_tmpnam
|
||||||
syn keyword cConstant SIGUSR1 SIGUSR2
|
syn keyword cConstant SEEK_CUR SEEK_END SEEK_SET TMP_MAX stderr stdin stdout EXIT_FAILURE EXIT_SUCCESS RAND_MAX
|
||||||
syn keyword cConstant _IOFBF _IOLBF _IONBF BUFSIZ EOF WEOF
|
|
||||||
syn keyword cConstant FOPEN_MAX FILENAME_MAX L_tmpnam
|
|
||||||
syn keyword cConstant SEEK_CUR SEEK_END SEEK_SET
|
|
||||||
syn keyword cConstant TMP_MAX stderr stdin stdout
|
|
||||||
syn keyword cConstant EXIT_FAILURE EXIT_SUCCESS RAND_MAX
|
|
||||||
" POSIX 2001
|
" POSIX 2001
|
||||||
syn keyword cConstant SIGBUS SIGPOLL SIGPROF SIGSYS SIGURG
|
syn keyword cConstant SIGBUS SIGPOLL SIGPROF SIGSYS SIGURG SIGVTALRM SIGXCPU SIGXFSZ
|
||||||
syn keyword cConstant SIGVTALRM SIGXCPU SIGXFSZ
|
|
||||||
" non-POSIX signals
|
" non-POSIX signals
|
||||||
syn keyword cConstant SIGWINCH SIGINFO
|
syn keyword cConstant SIGWINCH SIGINFO
|
||||||
" Add POSIX errors as well
|
" Add POSIX errors as well. List comes from:
|
||||||
syn keyword cConstant E2BIG EACCES EAGAIN EBADF EBADMSG EBUSY
|
" http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/errno.h.html
|
||||||
syn keyword cConstant ECANCELED ECHILD EDEADLK EDOM EEXIST EFAULT
|
syn keyword cConstant E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EAFNOSUPPORT EAGAIN EALREADY EBADF
|
||||||
syn keyword cConstant EFBIG EILSEQ EINPROGRESS EINTR EINVAL EIO EISDIR
|
syn keyword cConstant EBADMSG EBUSY ECANCELED ECHILD ECONNABORTED ECONNREFUSED ECONNRESET EDEADLK
|
||||||
syn keyword cConstant EMFILE EMLINK EMSGSIZE ENAMETOOLONG ENFILE ENODEV
|
syn keyword cConstant EDESTADDRREQ EDOM EDQUOT EEXIST EFAULT EFBIG EHOSTUNREACH EIDRM EILSEQ
|
||||||
syn keyword cConstant ENOENT ENOEXEC ENOLCK ENOMEM ENOSPC ENOSYS
|
syn keyword cConstant EINPROGRESS EINTR EINVAL EIO EISCONN EISDIR ELOOP EMFILE EMLINK EMSGSIZE
|
||||||
syn keyword cConstant ENOTDIR ENOTEMPTY ENOTSUP ENOTTY ENXIO EPERM
|
syn keyword cConstant EMULTIHOP ENAMETOOLONG ENETDOWN ENETRESET ENETUNREACH ENFILE ENOBUFS ENODATA
|
||||||
syn keyword cConstant EPIPE ERANGE EROFS ESPIPE ESRCH ETIMEDOUT EXDEV
|
syn keyword cConstant ENODEV ENOENT ENOEXEC ENOLCK ENOLINK ENOMEM ENOMSG ENOPROTOOPT ENOSPC ENOSR
|
||||||
|
syn keyword cConstant ENOSTR ENOSYS ENOTCONN ENOTDIR ENOTEMPTY ENOTRECOVERABLE ENOTSOCK ENOTSUP
|
||||||
|
syn keyword cConstant ENOTTY ENXIO EOPNOTSUPP EOVERFLOW EOWNERDEAD EPERM EPIPE EPROTO
|
||||||
|
syn keyword cConstant EPROTONOSUPPORT EPROTOTYPE ERANGE EROFS ESPIPE ESRCH ESTALE ETIME ETIMEDOUT
|
||||||
|
syn keyword cConstant ETXTBSY EWOULDBLOCK EXDEV
|
||||||
" math.h
|
" math.h
|
||||||
syn keyword cConstant M_E M_LOG2E M_LOG10E M_LN2 M_LN10 M_PI M_PI_2 M_PI_4
|
syn keyword cConstant M_E M_LOG2E M_LOG10E M_LN2 M_LN10 M_PI M_PI_2 M_PI_4
|
||||||
syn keyword cConstant M_1_PI M_2_PI M_2_SQRTPI M_SQRT2 M_SQRT1_2
|
syn keyword cConstant M_1_PI M_2_PI M_2_SQRTPI M_SQRT2 M_SQRT1_2
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
" Language: C++
|
" Language: C++
|
||||||
" Current Maintainer: vim-jp (https://github.com/vim-jp/vim-cpp)
|
" Current Maintainer: vim-jp (https://github.com/vim-jp/vim-cpp)
|
||||||
" Previous Maintainer: Ken Shan <ccshan@post.harvard.edu>
|
" Previous Maintainer: Ken Shan <ccshan@post.harvard.edu>
|
||||||
" Last Change: 2016 Oct 28
|
" Last Change: 2017 Jun 05
|
||||||
|
|
||||||
" quit when a syntax file was already loaded
|
" quit when a syntax file was already loaded
|
||||||
if exists("b:current_syntax")
|
if exists("b:current_syntax")
|
||||||
@ -48,7 +48,7 @@ endif
|
|||||||
if !exists("cpp_no_cpp14")
|
if !exists("cpp_no_cpp14")
|
||||||
syn case ignore
|
syn case ignore
|
||||||
syn match cppNumber display "\<0b[01]\('\=[01]\+\)*\(u\=l\{0,2}\|ll\=u\)\>"
|
syn match cppNumber display "\<0b[01]\('\=[01]\+\)*\(u\=l\{0,2}\|ll\=u\)\>"
|
||||||
syn match cppNumber display "\<[1-9]\('\=\d\+\)*\(u\=l\{0,2}\|ll\=u\)\>"
|
syn match cppNumber display "\<[1-9]\('\=\d\+\)*\(u\=l\{0,2}\|ll\=u\)\>" contains=cFloat
|
||||||
syn match cppNumber display "\<0x\x\('\=\x\+\)*\(u\=l\{0,2}\|ll\=u\)\>"
|
syn match cppNumber display "\<0x\x\('\=\x\+\)*\(u\=l\{0,2}\|ll\=u\)\>"
|
||||||
syn case match
|
syn case match
|
||||||
endif
|
endif
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user