From: Mauro Aranda <maurooaranda@gmail.com>
Date: Wed, 28 Aug 2019 11:29:57 +0000 (-0300)
Subject: Improve file name completion in file and directory widgets (Bug#7779)
X-Git-Tag: emacs-27.0.90~1553^2~23
X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=5b117511aa1b5c451773891b505a7098a67f9532;p=emacs.git

Improve file name completion in file and directory widgets (Bug#7779)

* lisp/wid-edit.el (widget 'file, widget 'directory): Respect the option
read-file-name-completion-ignore-case.
(widget 'directory): Filter the file names, to only perform directory name
completion.
---

diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el
index fdc16299c88..9bc7a076eec 100644
--- a/lisp/wid-edit.el
+++ b/lisp/wid-edit.el
@@ -3083,7 +3083,9 @@ as the value."
 (define-widget 'file 'string
   "A file widget.
 It reads a file name from an editable text field."
-  :completions #'completion-file-name-table
+  :completions (completion-table-case-fold
+                #'completion-file-name-table
+                (not read-file-name-completion-ignore-case))
   :prompt-value 'widget-file-prompt-value
   :format "%{%t%}: %v"
   ;; Doesn't work well with terminating newline.
@@ -3118,6 +3120,11 @@ It reads a file name from an editable text field."
 (define-widget 'directory 'file
   "A directory widget.
 It reads a directory name from an editable text field."
+  :completions (apply-partially #'completion-table-with-predicate
+                                (completion-table-case-fold
+                                 #'completion-file-name-table
+                                 (not read-file-name-completion-ignore-case))
+                                #'directory-name-p 'strict)
   :tag "Directory")
 
 (defvar widget-symbol-prompt-value-history nil