config/.vim/plugin/eclim.vim

171 lines
4.7 KiB
VimL
Raw Normal View History

" Author: Eric Van Dewoestine
"
" Description: {{{
" Plugin which bootstraps the eclim environment.
"
" License:
"
" Copyright (C) 2005 - 2009 Eric Van Dewoestine
"
" This program is free software: you can redistribute it and/or modify
" it under the terms of the GNU General Public License as published by
" the Free Software Foundation, either version 3 of the License, or
" (at your option) any later version.
"
" This program is distributed in the hope that it will be useful,
" but WITHOUT ANY WARRANTY; without even the implied warranty of
" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
" GNU General Public License for more details.
"
" You should have received a copy of the GNU General Public License
" along with this program. If not, see <http://www.gnu.org/licenses/>.
"
" }}}
" Command Declarations {{{
if !exists(":EclimValidate")
command EclimValidate :call <SID>Validate()
endif
" }}}
" Validate() {{{
" Validates some settings and environment values required by eclim.
" NOTE: don't add command-line continuation characters anywhere in the
" function, just in case the user has &compatible set.
function! s:Validate()
" Check vim version.
if v:version < 700
let ver = strpart(v:version, 0, 1) . '.' . strpart(v:version, 2)
echom "Error: Your vim version is " . ver . "."
echom " Eclim requires version 7.x.x"
return
endif
let errors = []
" Check 'compatible' option.
if &compatible
call add(errors, "Error: You have 'compatible' set:")
call add(errors, " Eclim requires 'set nocompatible' in your vimrc.")
call add(errors, " Type \":help 'compatible'\" for more details.")
endif
" Check filetype support
redir => ftsupport
silent filetype
redir END
let ftsupport = substitute(ftsupport, '\n', '', 'g')
if ftsupport !~ 'detection:ON' || ftsupport !~ 'plugin:ON'
echo " "
let chose = 0
while string(chose) !~ '1\|2'
redraw
echo "Filetype plugin support looks to be disabled, but due to possible"
echo "language differences, please check the following line manually."
echo " " . ftsupport
echo "Does it have detection and plugin 'ON'?"
echo "1) Yes"
echo "2) No"
let chose = input("Please Choose (1 or 2): ")
endwhile
if chose != 1
call add(errors, "Error: Eclim requires filetype plugins to be enabled.")
call add(errors, " Please add 'filetype plugin indent on' to your vimrc.")
call add(errors, " Type \":help filetype-plugin-on\" for more details.")
endif
endif
" Print the results.
redraw
echohl Statement
if len(errors) == 0
echom "Result: OK, required settings are valid."
else
for error in errors
echom error
endfor
endif
echohl None
endfunction " }}}
" exit early if unsupported vim version, compatible is set, or eclim is
" disabled.
if v:version < 700 || &compatible || exists("g:EclimDisabled")
finish
endif
" EclimBaseDir() {{{
" Gets the base directory where the eclim vim scripts are located.
function! EclimBaseDir()
if !exists("g:EclimBaseDir")
let savewig = &wildignore
set wildignore=""
let file = findfile('plugin/eclim.vim', escape(&runtimepath, ' '))
let &wildignore = savewig
if file == ''
echoe 'Unable to determine eclim basedir. ' .
\ 'Please report this issue on the eclim user mailing list.'
let g:EclimBaseDir = ''
return g:EclimBaseDir
endif
let basedir = substitute(fnamemodify(file, ':p:h:h'), '\', '/', 'g')
let g:EclimBaseDir = escape(basedir, ' ')
endif
return g:EclimBaseDir
endfunction " }}}
" Init() {{{
" Initializes eclim.
function! s:Init()
" on windows, this eclim plugin gets called first, so force taglist to be
" called prior.
runtime! plugin/taglist.vim
" add eclim dir to runtime path.
let basedir = EclimBaseDir()
if basedir == ''
return
endif
exec 'set runtimepath+=' .
\ basedir . '/eclim,' .
\ basedir . '/eclim/after'
" Alternate version which inserts the eclim path just after the currently
" executing runtime path element and puts the eclim/after path at the very
" end.
"let paths = split(&rtp, ',')
"let index = 0
"for path in paths
" let index += 1
" if tolower(path) == tolower(basedir)
" break
" endif
"endfor
"let tail = paths[index :]
"for path in tail
" exec 'set runtimepath-=' . escape(path, ' ')
"endfor
"exec 'set runtimepath+=' . basedir . '/eclim'
"for path in tail
" exec 'set runtimepath+=' . escape(path, ' ')
"endfor
"exec 'set runtimepath+=' . basedir . '/eclim/after'
" need to be manually sourced
runtime! eclim/plugin/*.vim
runtime! eclim/after/plugin/*.vim
endfunction " }}}
call <SID>Init()
" vim:ft=vim:fdm=marker