X-Git-Url: https://code.delx.au/gnu-emacs-elpa/blobdiff_plain/8f2c03248b5517d82588a05f357805cbb0f384ed..69228c73e01ec9a3ae6cf5a1f8c4d83d8c6f4999:/company-eclim.el diff --git a/company-eclim.el b/company-eclim.el index 24f05f517..b37f75602 100644 --- a/company-eclim.el +++ b/company-eclim.el @@ -1,6 +1,6 @@ -;;; company-eclim.el --- company-mode completion back-end for Eclim +;;; company-eclim.el --- company-mode completion backend for Eclim -;; Copyright (C) 2009, 2011, 2013 Free Software Foundation, Inc. +;; Copyright (C) 2009, 2011, 2013, 2015 Free Software Foundation, Inc. ;; Author: Nikolaj Schumacher @@ -21,10 +21,10 @@ ;;; Commentary: ;; -;; Using `emacs-eclim' together with (or instead of) this back-end is +;; Using `emacs-eclim' together with (or instead of) this backend is ;; recommended, as it allows you to use other Eclim features. ;; -;; The alternative back-end provided by `emacs-eclim' uses `yasnippet' +;; The alternative backend provided by `emacs-eclim' uses `yasnippet' ;; instead of `company-template' to expand function calls, and it supports ;; some languages other than Java. @@ -35,12 +35,12 @@ (require 'cl-lib) (defgroup company-eclim nil - "Completion back-end for Eclim." + "Completion backend for Eclim." :group 'company) (defun company-eclim-executable-find () (let (file) - (dolist (eclipse-root '("/Applications/eclipse" "/usr/lib/eclipse" + (cl-dolist (eclipse-root '("/Applications/eclipse" "/usr/lib/eclipse" "/usr/local/lib/eclipse")) (and (file-exists-p (setq file (expand-file-name "plugins" eclipse-root))) (setq file (car (last (directory-files file t "^org.eclim_")))) @@ -48,7 +48,9 @@ (cl-return file))))) (defcustom company-eclim-executable - (or (executable-find "eclim") (company-eclim-executable-find)) + (or (bound-and-true-p eclim-executable) + (executable-find "eclim") + (company-eclim-executable-find)) "Location of eclim executable." :type 'file) @@ -60,11 +62,9 @@ eclim can only complete correctly when the buffer has been saved." ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defvar company-eclim--project-dir 'unknown) -(make-variable-buffer-local 'company-eclim--project-dir) +(defvar-local company-eclim--project-dir 'unknown) -(defvar company-eclim--project-name nil) -(make-variable-buffer-local 'company-eclim--project-name) +(defvar-local company-eclim--project-name nil) (declare-function json-read "json") (defvar json-array-type) @@ -89,10 +89,11 @@ eclim can only complete correctly when the buffer has been saved." (defun company-eclim--project-dir () (if (eq company-eclim--project-dir 'unknown) - (setq company-eclim--project-dir - (directory-file-name - (expand-file-name - (locate-dominating-file buffer-file-name ".project")))) + (let ((dir (locate-dominating-file buffer-file-name ".project"))) + (when dir + (setq company-eclim--project-dir + (directory-file-name + (expand-file-name dir))))) company-eclim--project-dir)) (defun company-eclim--project-name () @@ -155,7 +156,7 @@ eclim can only complete correctly when the buffer has been saved." prefix))) (defun company-eclim (command &optional arg &rest ignored) - "`company-mode' completion back-end for Eclim. + "`company-mode' completion backend for Eclim. Eclim provides access to Eclipse Java IDE features for other editors. Eclim version 1.7.13 or newer (?) is required.