GNU bug report logs - #16648
[PATCH] Improved ffap-completable

Previous Next

Package: emacs;

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


View this message in rfc822 format

From: E Sabof <esabof <at> gmail.com>
To: 16648 <at> debbugs.gnu.org
Subject: bug#16648: [PATCH] Improved ffap-completable
Date: Wed, 05 Feb 2014 07:14:28 +0000
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 44 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.