# History of user-visible changes
+## Next
+
+* `company-elisp-show-locals-first`: new customizable variable.
+* `company-eclim` shows more accurate and comprehensive candidates.
+
## 2013-03-26 (0.6.4)
* `company-eclim` shows valid completions after an opening paren.
:type '(choice (const :tag "Off" nil)
(const :tag "On" t)))
+(defcustom company-elisp-show-locals-first t
+ "If enabled, locally bound variables and functions are displayed
+first in the candidates list.")
+
(defun company-grab-lisp-symbol ()
(let ((prefix (company-grab-symbol)))
(if prefix
res))
(defun company-elisp-candidates (prefix)
- (let ((predicate (company-elisp-candidates-predicate prefix)))
- (append (company-elisp-locals prefix (eq predicate 'fboundp))
- (company-elisp-globals prefix predicate))))
+ (let* ((predicate (company-elisp-candidates-predicate prefix))
+ (locals (company-elisp-locals prefix (eq predicate 'fboundp)))
+ (globals (company-elisp-globals prefix predicate)))
+ (if company-elisp-show-locals-first
+ (append (sort locals 'string<)
+ (sort globals 'string<))
+ (append locals globals))))
(defun company-elisp-globals (prefix predicate)
(all-completions prefix obarray predicate))
(prefix (and (eq (derived-mode-p 'emacs-lisp-mode) 'emacs-lisp-mode)
(company-grab-lisp-symbol)))
(candidates (company-elisp-candidates arg))
+ (sorted company-elisp-show-locals-first)
(meta (company-elisp-doc arg))
(doc-buffer (let ((symbol (intern arg)))
(save-window-excursion
"(let ((foo 1)
(f| )))"
(should (null (company-elisp-locals "f" nil)))))
+
+(ert-deftest company-elisp-show-locals-first ()
+ (company-elisp-with-buffer
+ "(let ((floo 1)
+ (flop 2)
+ (flee 3))
+ fl|)"
+ (let ((obarray [float-pi]))
+ (let (company-elisp-show-locals-first)
+ (should (eq nil (company-elisp 'sorted))))
+ (let ((company-elisp-show-locals-first t))
+ (should (eq t (company-elisp 'sorted)))
+ (should (equal '("flee" "floo" "flop" "float-pi")
+ (company-elisp-candidates "fl")))))))