Last active
December 19, 2015 09:29
-
-
Save rejeep/5933343 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defun rejeep-projectile-completion-fn (prompt choises) | |
"Projectile completion function that only shows file name. | |
If two files have same name, new completion appears to select between | |
them. These include the path relative to the project root." | |
(interactive) | |
(let* ((stripped-choises | |
(-uniq (--map (file-name-nondirectory it) choises))) | |
(choise | |
(ido-completing-read prompt stripped-choises)) | |
(matching-files | |
(-filter | |
(lambda (file) | |
(equal (file-name-nondirectory file) choise)) | |
choises))) | |
(if (> (length matching-files) 1) | |
(ido-completing-read prompt matching-files) | |
(car matching-files)))) | |
(setq projectile-completion-system 'rejeep-projectile-completion-fn) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This completion function does not handle directories properly for me (emacs 24.3): the stripped version of a directory name is the empty string. This interferes with projectile-switch-project, requiring an extra step.
To fix it, replace both occurences of
(file-name-nondirectory ...)
with
(file-name-nondirectory (directory-file-name ...))