From 5357085e29c849870b2f90750c57622c043a9cdf Mon Sep 17 00:00:00 2001 From: Samuel Tonini Date: Mon, 29 Jun 2015 12:37:32 +0200 Subject: [PATCH] better completion candidates selection of module prefix --- alchemist-complete.el | 7 ++++++- test/alchemist-complete-test.el | 16 ++++++++++++---- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/alchemist-complete.el b/alchemist-complete.el index fdf3a406..b305a159 100644 --- a/alchemist-complete.el +++ b/alchemist-complete.el @@ -61,7 +61,12 @@ (replace-regexp-in-string "/[0-9]$" "" candidate)) 'meta meta)) (t (propertize (replace-regexp-in-string "/[0-9]$" "" candidate) 'meta meta))))) candidates))) - candidates)) + (cond + ((and (string-match-p "\\.$" search-term) + (not (string-match-p "\\.$" alchemist-server--last-completion-exp)) + ) + (push (replace-regexp-in-string "\\.$" "" search-term) candidates)) + (t candidates)))) (defun alchemist-complete--build-help-candidates (a-list) (let* ((search-term (car a-list)) diff --git a/test/alchemist-complete-test.el b/test/alchemist-complete-test.el index 6e288a8b..694ea90d 100644 --- a/test/alchemist-complete-test.el +++ b/test/alchemist-complete-test.el @@ -34,25 +34,33 @@ cmp:to_string/1") (ert-deftest test-complete-candidates/build-candidates () "Build a candidates list" + (setq alchemist-server--last-completion-exp "Lis") (should (equal (alchemist-complete--build-candidates '("List." "delete/2" "to_string/1")) - '("List.delete" "List.to_string"))) + '("List" "List.delete" "List.to_string"))) + (setq alchemist-server--last-completion-exp "Li") (should (equal (alchemist-complete--build-candidates '("List." "delete/2" "delete/3" "to_string/1")) - '("List.delete" "List.delete" "List.to_string"))) + '("List" "List.delete" "List.delete" "List.to_string"))) + (setq alchemist-server--last-completion-exp "En") (should (equal (alchemist-complete--build-candidates '("Enum" "Enum" "Enumerable")) '("Enum" "Enumerable"))) + (setq alchemist-server--last-completion-exp "Li") (should (equal (alchemist-complete--build-candidates '("List" "List")) '("List"))) + (setq alchemist-server--last-completion-exp "def") (should (equal (alchemist-complete--build-candidates '("def" "def/2" "defdelegate/2" "defexception/1")) '("def" "defdelegate" "defexception"))) + (setq alchemist-server--last-completion-exp "List.") (should (equal (alchemist-complete--build-candidates '("List.delete" "delete/2" "delete_at/2")) '("List.delete" "List.delete_at"))) + (setq alchemist-server--last-completion-exp ":file") (should (equal (alchemist-complete--build-candidates '(":file" "filename" "file_server" "file_io_server")) '(":filename" ":file_server" ":file_io_server"))) + (setq alchemist-server--last-completion-exp ":file.") (should (equal (alchemist-complete--build-candidates '(":file." "pid2name/1" "set_cwd/1" "rename/2")) '(":file.pid2name" ":file.set_cwd" ":file.rename"))) + (setq alchemist-server--last-completion-exp "pid2name") (should (equal (alchemist-complete--build-candidates '("pid2name/1")) - '("pid2name"))) - ) + '("pid2name")))) (ert-deftest test-complete-candidates/build-help-candidates () "Build a candidates list"