mirror of
https://github.com/neovim/neovim.git
synced 2026-01-03 01:46:31 +10:00
This reverts commits:
- 6b652a785033fd4164e049492a7327c1ed7c3e5f
- 2f689d5abde0ccddca9e20d8c93a0299bd054e32
- a025a46d4169587145fb54f04af349cd05cb6122
Several email addresses that are known to be valid caused bounces
due to an issue with my email setup. The previous commits incorrectly
marked these addresses as invalid. So revert the whole thing again.
62d8f3dab5
N/A patch:
vim-patch:2f689d5: runtime: mark more invalid email addresses
Co-authored-by: Christian Brabandt <cb@256bit.org>
151 lines
4.2 KiB
VimL
151 lines
4.2 KiB
VimL
" Vim indent file
|
|
" Language: Java
|
|
" Previous Maintainer: Toby Allsopp <toby.allsopp@peace.com>
|
|
" Current Maintainer: Hong Xu <hong@topbug.net>
|
|
" Homepage: http://www.vim.org/scripts/script.php?script_id=3899
|
|
" https://github.com/xuhdev/indent-java.vim
|
|
" Last Change: 2016 Mar 7
|
|
" Version: 1.1
|
|
" License: Same as Vim.
|
|
" Copyright (c) 2012-2016 Hong Xu
|
|
" Before 2012, this file was maintained by Toby Allsopp.
|
|
|
|
" Only load this indent file when no other was loaded.
|
|
if exists("b:did_indent")
|
|
finish
|
|
endif
|
|
let b:did_indent = 1
|
|
|
|
" Indent Java anonymous classes correctly.
|
|
setlocal cindent cinoptions& cinoptions+=j1
|
|
|
|
" The "extends" and "implements" lines start off with the wrong indent.
|
|
setlocal indentkeys& indentkeys+=0=extends indentkeys+=0=implements
|
|
|
|
" Set the function to do the work.
|
|
setlocal indentexpr=GetJavaIndent()
|
|
|
|
let b:undo_indent = "set cin< cino< indentkeys< indentexpr<"
|
|
|
|
" Only define the function once.
|
|
if exists("*GetJavaIndent")
|
|
finish
|
|
endif
|
|
|
|
let s:keepcpo= &cpo
|
|
set cpo&vim
|
|
|
|
function! SkipJavaBlanksAndComments(startline)
|
|
let lnum = a:startline
|
|
while lnum > 1
|
|
let lnum = prevnonblank(lnum)
|
|
if getline(lnum) =~ '\*/\s*$'
|
|
while getline(lnum) !~ '/\*' && lnum > 1
|
|
let lnum = lnum - 1
|
|
endwhile
|
|
if getline(lnum) =~ '^\s*/\*'
|
|
let lnum = lnum - 1
|
|
else
|
|
break
|
|
endif
|
|
elseif getline(lnum) =~ '^\s*//'
|
|
let lnum = lnum - 1
|
|
else
|
|
break
|
|
endif
|
|
endwhile
|
|
return lnum
|
|
endfunction
|
|
|
|
function GetJavaIndent()
|
|
|
|
" Java is just like C; use the built-in C indenting and then correct a few
|
|
" specific cases.
|
|
let theIndent = cindent(v:lnum)
|
|
|
|
" If we're in the middle of a comment then just trust cindent
|
|
if getline(v:lnum) =~ '^\s*\*'
|
|
return theIndent
|
|
endif
|
|
|
|
" find start of previous line, in case it was a continuation line
|
|
let lnum = SkipJavaBlanksAndComments(v:lnum - 1)
|
|
|
|
" If the previous line starts with '@', we should have the same indent as
|
|
" the previous one
|
|
if getline(lnum) =~ '^\s*@.*$'
|
|
return indent(lnum)
|
|
endif
|
|
|
|
let prev = lnum
|
|
while prev > 1
|
|
let next_prev = SkipJavaBlanksAndComments(prev - 1)
|
|
if getline(next_prev) !~ ',\s*$'
|
|
break
|
|
endif
|
|
let prev = next_prev
|
|
endwhile
|
|
|
|
" Try to align "throws" lines for methods and "extends" and "implements" for
|
|
" classes.
|
|
if getline(v:lnum) =~ '^\s*\(throws\|extends\|implements\)\>'
|
|
\ && getline(lnum) !~ '^\s*\(throws\|extends\|implements\)\>'
|
|
let theIndent = theIndent + shiftwidth()
|
|
endif
|
|
|
|
" correct for continuation lines of "throws", "implements" and "extends"
|
|
let cont_kw = matchstr(getline(prev),
|
|
\ '^\s*\zs\(throws\|implements\|extends\)\>\ze.*,\s*$')
|
|
if strlen(cont_kw) > 0
|
|
let amount = strlen(cont_kw) + 1
|
|
if getline(lnum) !~ ',\s*$'
|
|
let theIndent = theIndent - (amount + shiftwidth())
|
|
if theIndent < 0
|
|
let theIndent = 0
|
|
endif
|
|
elseif prev == lnum
|
|
let theIndent = theIndent + amount
|
|
if cont_kw ==# 'throws'
|
|
let theIndent = theIndent + shiftwidth()
|
|
endif
|
|
endif
|
|
elseif getline(prev) =~ '^\s*\(throws\|implements\|extends\)\>'
|
|
\ && (getline(prev) =~ '{\s*$'
|
|
\ || getline(v:lnum) =~ '^\s*{\s*$')
|
|
let theIndent = theIndent - shiftwidth()
|
|
endif
|
|
|
|
" When the line starts with a }, try aligning it with the matching {,
|
|
" skipping over "throws", "extends" and "implements" clauses.
|
|
if getline(v:lnum) =~ '^\s*}\s*\(//.*\|/\*.*\)\=$'
|
|
call cursor(v:lnum, 1)
|
|
silent normal! %
|
|
let lnum = line('.')
|
|
if lnum < v:lnum
|
|
while lnum > 1
|
|
let next_lnum = SkipJavaBlanksAndComments(lnum - 1)
|
|
if getline(lnum) !~ '^\s*\(throws\|extends\|implements\)\>'
|
|
\ && getline(next_lnum) !~ ',\s*$'
|
|
break
|
|
endif
|
|
let lnum = prevnonblank(next_lnum)
|
|
endwhile
|
|
return indent(lnum)
|
|
endif
|
|
endif
|
|
|
|
" Below a line starting with "}" never indent more. Needed for a method
|
|
" below a method with an indented "throws" clause.
|
|
let lnum = SkipJavaBlanksAndComments(v:lnum - 1)
|
|
if getline(lnum) =~ '^\s*}\s*\(//.*\|/\*.*\)\=$' && indent(lnum) < theIndent
|
|
let theIndent = indent(lnum)
|
|
endif
|
|
|
|
return theIndent
|
|
endfunction
|
|
|
|
let &cpo = s:keepcpo
|
|
unlet s:keepcpo
|
|
|
|
" vi: sw=2 et
|