diff options
| -rw-r--r-- | ftdetect/polyglot.vim | 4 | ||||
| -rw-r--r-- | ftplugin/latex-box/latexmk.vim | 15 | ||||
| -rw-r--r-- | indent/ruby.vim | 65 | ||||
| -rw-r--r-- | syntax/mason.vim | 2 | 
4 files changed, 85 insertions, 1 deletions
| diff --git a/ftdetect/polyglot.vim b/ftdetect/polyglot.vim index 03efb46e..457fd19a 100644 --- a/ftdetect/polyglot.vim +++ b/ftdetect/polyglot.vim @@ -81,6 +81,10 @@ autocmd BufNewFile,BufRead *.markdown,*.md,*.mdown,*.mkd,*.mkdn        \ else |        \   setf markdown |        \ endif +autocmd BufRead *.html +    \ if getline(1) =~ '^\(%\|<[%&].*>\)' | +    \     set filetype=mason | +    \ endif  au BufRead,BufNewFile /etc/nginx/*,/usr/local/nginx/*,*/nginx/vhosts.d/*,nginx.conf if &ft == '' | setfiletype nginx | endif  autocmd BufNewFile,BufRead *.proto setfiletype proto  au BufRead,BufNewFile *.pp              set filetype=puppet diff --git a/ftplugin/latex-box/latexmk.vim b/ftplugin/latex-box/latexmk.vim index 0049146a..87ac2a99 100644 --- a/ftplugin/latex-box/latexmk.vim +++ b/ftplugin/latex-box/latexmk.vim @@ -143,6 +143,13 @@ function! LatexBox_Latexmk(force)  	let texroot = shellescape(LatexBox_GetTexRoot())  	let mainfile = fnameescape(fnamemodify(LatexBox_GetMainTexFile(), ':t')) +	" Check if latexmk is installed +	if !executable('latexmk') +		echomsg "Error: LaTeX-Box relies on latexmk for compilation, but it" . +					\ " is not installed!" +		return +	endif +  	" Check if already running  	if has_key(g:latexmk_running_pids, basepath)  		echomsg "latexmk is already running for `" . basename . "'" @@ -301,7 +308,15 @@ endfunction  " LatexmkClean {{{  function! LatexBox_LatexmkClean(cleanall) +	" Check if latexmk is installed +	if !executable('latexmk') +		echomsg "Error: LaTeX-Box relies on latexmk for compilation, but it" . +					\ " is not installed!" +		return +	endif +  	let basename = LatexBox_GetTexBasename(1) +  	if has_key(g:latexmk_running_pids, basename)  		echomsg "don't clean when latexmk is running"  		return diff --git a/indent/ruby.vim b/indent/ruby.vim index c669a1d5..89a430c4 100644 --- a/indent/ruby.vim +++ b/indent/ruby.vim @@ -13,12 +13,18 @@ if exists("b:did_indent")  endif  let b:did_indent = 1 +if !exists('g:ruby_indent_access_modifier_style') +  " Possible values: "normal", "indent", "outdent" +  let g:ruby_indent_access_modifier_style = 'normal' +endif +  setlocal nosmartindent  " Now, set up our indentation expression and keys that trigger it.  setlocal indentexpr=GetRubyIndent(v:lnum) -setlocal indentkeys=0{,0},0),0],!^F,o,O,e +setlocal indentkeys=0{,0},0),0],!^F,o,O,e,:  setlocal indentkeys+==end,=else,=elsif,=when,=ensure,=rescue,==begin,==end +setlocal indentkeys+==private,=protected,=public  " Only define the function once.  if exists("*GetRubyIndent") @@ -92,6 +98,12 @@ let s:bracket_continuation_regex = '%\@<!\%([({[]\)\s*\%(#.*\)\=$'  " Regex that defines the first part of a splat pattern  let s:splat_regex = '[[,(]\s*\*\s*\%(#.*\)\=$' +" Regex that describes all indent access modifiers +let s:access_modifier_regex = '\C^\s*\%(private\|public\|protected\)\s*\%(#.*\)\=$' + +" Regex that describes the indent access modifiers (excludes public) +let s:indent_access_modifier_regex = '\C^\s*\%(private\|protected\)\s*\%(#.*\)\=$' +  " Regex that defines blocks.  "  " Note that there's a slight problem with this regex and s:continuation_regex. @@ -315,6 +327,25 @@ function s:Match(lnum, regex)    endif  endfunction +" Locates the containing class/module's definition line, ignoring nested classes +" along the way. +" +function! s:FindContainingClass() +  let saved_position = getpos('.') + +  while searchpair(s:end_start_regex, s:end_middle_regex, s:end_end_regex, 'bW', +        \ s:end_skip_expr) > 0 +    if expand('<cword>') =~# '\<class\|module\>' +      let found_lnum = line('.') +      call setpos('.', saved_position) +      return found_lnum +    endif +  endif + +  call setpos('.', saved_position) +  return 0 +endfunction +  " 3. GetRubyIndent Function {{{1  " ========================= @@ -335,6 +366,24 @@ function GetRubyIndent(...)    let line = getline(clnum)    let ind = -1 +  " If this line is an access modifier keyword, align according to the closest +  " class declaration. +  if g:ruby_indent_access_modifier_style == 'indent' +    if s:Match(clnum, s:access_modifier_regex) +      let class_line = s:FindContainingClass() +      if class_line > 0 +        return indent(class_line) + &sw +      endif +    endif +  elseif g:ruby_indent_access_modifier_style == 'outdent' +    if s:Match(clnum, s:access_modifier_regex) +      let class_line = s:FindContainingClass() +      if class_line > 0 +        return indent(class_line) +      endif +    endif +  endif +    " If we got a closing bracket on an empty line, find its match and indent    " according to it.  For parentheses we indent to its column - 1, for the    " others we indent to the containing line's MSL's level.  Return -1 if fail. @@ -411,6 +460,20 @@ function GetRubyIndent(...)    let line = getline(lnum)    let ind = indent(lnum) +  if g:ruby_indent_access_modifier_style == 'indent' +    " If the previous line was a private/protected keyword, add a +    " level of indent. +    if s:Match(lnum, s:indent_access_modifier_regex) +      return indent(lnum) + &sw +    endif +  elseif g:ruby_indent_access_modifier_style == 'outdent' +    " If the previous line was a private/protected/public keyword, add +    " a level of indent, since the keyword has been out-dented. +    if s:Match(lnum, s:access_modifier_regex) +      return indent(lnum) + &sw +    endif +  endif +    " If the previous line ended with a block opening, add a level of indent.    if s:Match(lnum, s:block_regex)      return indent(s:GetMSL(lnum)) + &sw diff --git a/syntax/mason.vim b/syntax/mason.vim index 71a1e37e..c94f8e8e 100644 --- a/syntax/mason.vim +++ b/syntax/mason.vim @@ -59,6 +59,8 @@ syn region masonLine matchgroup=Delimiter start="^%" end="$" keepend contains=@p  syn region masonExpr matchgroup=Delimiter start="<%" end="%>" contains=@perlTop  syn region masonPerl matchgroup=Delimiter start="<%perl>" end="</%perl>" contains=masonPod,@perlTop  syn region masonComp keepend matchgroup=Delimiter start="<&\s*\%(\a\+:\)\?[._/[:alnum:]]*" end="&>" contains=@perlTop +syn region masonComp keepend matchgroup=Delimiter skipnl start="<&|\s*\%(\a\+:\)\?[._/[:alnum:]]*" end="&>" contains=@perlTop nextgroup=masonCompContent +syn region masonCompContent matchgroup=Delimiter start="" end="</&>" contained contains=@masonTop  syn region masonArgs matchgroup=Delimiter start="<%args>" end="</%args>" contains=masonPod,@perlTop | 
