-;;; company-elisp.el --- A company-mode completion back-end for emacs-lisp-mode
+;;; company-elisp.el --- A company-mode completion back-end for emacs-lisp-mode -*- lexical-binding: t -*-
;; Copyright (C) 2009, 2011-2012 Free Software Foundation, Inc.
(defun company-elisp-candidates (prefix)
(let* ((predicate (company-elisp-candidates-predicate prefix))
(locals (company-elisp-locals prefix (eq predicate 'fboundp)))
- (globals (company-elisp-globals prefix predicate)))
+ (globals (company-elisp-globals prefix predicate))
+ (locals (loop for local in locals
+ when (not (member local globals))
+ collect local)))
(if company-elisp-show-locals-first
(append (sort locals 'string<)
(sort globals 'string<))
(should (eq t (company-elisp 'sorted)))
(should (equal '("flee" "floo" "flop" "float-pi")
(company-elisp-candidates "fl")))))))
+
+(ert-deftest company-elisp-candidates-no-duplicates ()
+ (company-elisp-with-buffer
+ "(let ((float-pi 4))
+ f|)"
+ (let ((obarray [float-pi])
+ (company-elisp-show-locals-first t))
+ (should (equal '("float-pi") (company-elisp-candidates "f"))))))