" Author: Eric Van Dewoestine " " Description: {{{ " see http://eclim.org/vim/java/import.html " " License: " " Copyright (C) 2005 - 2013 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 . " " }}} " Script Variables {{{ let s:command_import = \ '-command java_import -p "" -f "" -o -e ' let s:command_organize = \ '-command java_import_organize -p "" -f "" -o -e ' " }}} function! eclim#java#import#Import(...) " {{{ if !eclim#project#util#IsCurrentFileInProject() return endif if !a:0 let name = expand('') if !eclim#java#util#IsValidIdentifier(name) || \ eclim#java#util#IsKeyword(name) call eclim#util#EchoError("'" . name . "' not a classname.") return endif endif let project = eclim#project#util#GetCurrentProjectName() let file = eclim#lang#SilentUpdate() let offset = eclim#util#GetOffset() let command = s:command_import let command = substitute(command, '', project, '') let command = substitute(command, '', file, '') let command = substitute(command, '', offset, '') let command = substitute(command, '', eclim#util#GetEncoding(), '') if a:0 let command .= ' -t ' . a:1 endif let result = eclim#Execute(command) if type(result) == g:STRING_TYPE call eclim#util#EchoError(result) return endif if type(result) == g:DICT_TYPE call eclim#util#Reload({'pos': [result.line, result.column]}) call eclim#lang#UpdateSrcFile('java', 1) if result.offset != offset call eclim#util#Echo('Imported ' . (a:0 ? a:1 : '')) endif return endif if type(result) != g:LIST_TYPE return endif let choice = eclim#java#import#ImportPrompt(result) if choice != '' call eclim#java#import#Import(choice) endif endfunction " }}} function! eclim#java#import#OrganizeImports(...) " {{{ if !eclim#project#util#IsCurrentFileInProject() return endif let project = eclim#project#util#GetCurrentProjectName() let file = eclim#lang#SilentUpdate() let offset = eclim#util#GetOffset() let command = s:command_organize let command = substitute(command, '', project, '') let command = substitute(command, '', file, '') let command = substitute(command, '', offset, '') let command = substitute(command, '', eclim#util#GetEncoding(), '') if a:0 let command .= ' -t ' . join(a:1, ',') endif let result = eclim#Execute(command) if type(result) == g:STRING_TYPE call eclim#util#EchoError(result) return endif if type(result) == g:DICT_TYPE call eclim#util#Reload({'pos': [result.line, result.column]}) call eclim#lang#UpdateSrcFile('java', 1) return endif if type(result) != g:LIST_TYPE return endif let chosen = [] for choices in result let choice = eclim#java#import#ImportPrompt(choices) if choice == '' return endif call add(chosen, choice) endfor if len(chosen) call eclim#java#import#OrganizeImports(chosen) endif endfunction " }}} function! eclim#java#import#ImportPrompt(choices) " {{{ " prompt the user to choose the class to import. let response = eclim#util#PromptList("Choose the class to import", a:choices) if response == -1 return '' endif return get(a:choices, response) endfunction " }}} " vim:ft=vim:fdm=marker