[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#16648: [PATCH] Improved ffap-completable
From: |
E Sabof |
Subject: |
bug#16648: [PATCH] Improved ffap-completable |
Date: |
Wed, 05 Feb 2014 07:14:28 +0000 |
User-agent: |
mu4e 0.9.9.6pre2; emacs 24.3.50.1 |
Assuming that point is at the word "The", and the complete filename follows.
The current version will work when the default-directory contains one file "The
first file.txt". But it won't if there is another file "The second file.txt",
since file-name-completion will only give a partial completion.
Evgeni
diff --git a/lisp/ffap.el b/lisp/ffap.el
index bb0f61d..4655639 100644
--- a/lisp/ffap.el
+++ b/lisp/ffap.el
@@ -819,8 +819,28 @@ URL, or nil. If nil, search the alist for further
matches.")
(defun ffap-completable (name)
(let* ((dir (or (file-name-directory name) default-directory))
- (cmp (file-name-completion (file-name-nondirectory name) dir)))
- (and cmp (concat dir cmp))))
+ (completions (file-name-all-completions
+ (file-name-nondirectory name) dir))
+ (looking-at-candidate
+ (lambda (candidate)
+ (string-equal (buffer-substring
+ (point)
+ (min (+ (point) (length candidate))
+ (point-max)))
+ candidate)))
+ start)
+ (when (and completions (cdr completions))
+ (setq completions
+ (or (cl-remove-if-not looking-at-candidate
+ completions)
+ (and (setq start (car (bounds-of-thing-at-point 'symbol)))
+ (/= start (point))
+ (save-excursion
+ (goto-char start)
+ (cl-remove-if-not looking-at-candidate
+ completions))))))
+ (when completions
+ (concat dir (car completions)))))
(defun ffap-home (name) (ffap-locate-file name t '("~")))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- bug#16648: [PATCH] Improved ffap-completable,
E Sabof <=