GNU bug report logs -
#16648
[PATCH] Improved ffap-completable
Previous Next
Reported by: E Sabof <esabof <at> gmail.com>
Date: Wed, 5 Feb 2014 07:16:01 UTC
Severity: wishlist
Tags: patch
Done: Lars Ingebrigtsen <larsi <at> gnus.org>
Bug is archived. No further changes may be made.
Full log
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
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 '("~")))
This bug report was last modified 6 years and 45 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.