bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#14175: 24.3.50; Bad completion behavior with read-file-name-completi


From: Michael Heerdegen
Subject: bug#14175: 24.3.50; Bad completion behavior with read-file-name-completion-ignore-case t
Date: Fri, 12 Apr 2013 16:53:47 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux)

Michael Heerdegen <michael_heerdegen@web.de> writes:

> Hello,
>
> 1.  I tried to debug a bit.
>
> When you hit TAB the second time, this call in
> `completion--nth-completion' changes the result from ("download/"
> "Downloads/") to ("Download/" "Downloads/"):
>
>    (if requote
>         (funcall requote result n)
>       result)

Some more information: this call at the very last lines of
`completion-table-with-quoting':

(when last
 (setcdr last nil)
 (completion--twq-all string ustring
                      unquoted-result base
                      unquote requote))

returns the changed case of the first candidate (from "~/download" to
"~/Download"), i.e., introduces the error.

Here is a backtrace of that point of time:

,----------------------------------------------------------------------
|   completion--twq-all("~/Download" "~/Download" (#("download/" 0 8 (face 
(completions-common-part)) 8 9 (face (completions-first-difference))) 
#("Downloads/" 0 8 (face (completions-common-part)) 8 9 (face 
(completions-first-difference)))) 2 substitute-in-file-name 
completion--sifn-requote)
|   (progn (setcdr last nil) (completion--twq-all string ustring 
unquoted-result base unquote requote))
|   (if last (progn (setcdr last nil) (completion--twq-all string ustring 
unquoted-result base unquote requote)))
|   (let* ((last (last unquoted-result)) (base (or (cdr last) 0))) (if last 
(progn (setcdr last nil) (completion--twq-all string ustring unquoted-result 
base unquote requote))))
|   (let nil (debug) (let* ((last (last unquoted-result)) (base (or (cdr last) 
0))) (if last (progn (setcdr last nil) (completion--twq-all string ustring 
unquoted-result base unquote requote)))))
|   (cond ((eq op (quote 1)) (let nil (if (not (stringp (car-safe 
unquoted-result))) unquoted-result (completion--twq-try string ustring (car 
unquoted-result) (cdr unquoted-result) unquote requote)))) ((eq op (quote 2)) 
(let nil (debug) (let* ((last (last unquoted-result)) (base (or (cdr last) 0))) 
(if last (progn (setcdr last nil) (completion--twq-all string ustring 
unquoted-result base unquote requote)))))) (t nil))
|   (closure ((uprefix . "~/Download") (ustring . #1="~/Download") (action . 
completion--unquote) (pred . 10) (string . #1#) (requote . 
completion--sifn-requote) (unquote . substitute-in-file-name) (table . 
completion-file-name-table) t) (unquoted-result op) (cond ((eq op (quote 1)) 
(let nil (if (not (stringp (car-safe unquoted-result))) unquoted-result 
(completion--twq-try string ustring (car unquoted-result) (cdr unquoted-result) 
unquote requote)))) ((eq op (quote 2)) (let nil (debug) (let* ((last (last 
unquoted-result)) (base (or ... 0))) (if last (progn (setcdr last nil) 
(completion--twq-all string ustring unquoted-result base unquote requote)))))) 
(t nil)))((#("download/" 0 8 (face (completions-common-part)) 8 9 (face 
(completions-first-difference))) #("Downloads/" 0 8 (face 
(completions-common-part)) 8 9 (face (completions-first-difference)))) 2)
|   funcall((closure ((uprefix . "~/Download") (ustring . #1="~/Download") 
(action . completion--unquote) (pred . 10) (string . #1#) (requote . 
completion--sifn-requote) (unquote . substitute-in-file-name) (table . 
completion-file-name-table) t) (unquoted-result op) (cond ((eq op (quote 1)) 
(let nil (if (not (stringp (car-safe unquoted-result))) unquoted-result 
(completion--twq-try string ustring (car unquoted-result) (cdr unquoted-result) 
unquote requote)))) ((eq op (quote 2)) (let nil (debug) (let* ((last (last 
unquoted-result)) (base (or ... 0))) (if last (progn (setcdr last nil) 
(completion--twq-all string ustring unquoted-result base unquote requote)))))) 
(t nil))) (#("download/" 0 8 (face (completions-common-part)) 8 9 (face 
(completions-first-difference))) #("Downloads/" 0 8 (face 
(completions-common-part)) 8 9 (face (completions-first-difference)))) 2)
|   (if requote (funcall requote result n) result)
|   (let ((requote (if (completion-metadata-get metadata (quote 
completion--unquote-requote)) (progn (let ((new ...)) (setq string (car ...)) 
(setq table (car ...)) (setq point (car ...)) (car (prog1 new ...)))))) (result 
(progn (completion--some (function (lambda (style) (funcall ... string table 
pred point))) (completion--styles metadata))))) (if requote (funcall requote 
result n) result))
|   completion--nth-completion(2 "~/Download" read-file-name-internal 
file-exists-p 10 (metadata (category . file) (completion--unquote-requote . t)))
|   completion-all-completions("~/Download" read-file-name-internal 
file-exists-p 10 (metadata (category . file) (completion--unquote-requote . t)))
|   (let* ((start (field-beginning)) (end (field-end)) (string (field-string)) 
(md (completion--field-metadata start)) (completions 
(completion-all-completions string minibuffer-completion-table 
minibuffer-completion-predicate (- (point) (field-beginning)) md))) (message 
nil) (if (or (null completions) (and (not (consp (cdr completions))) (equal 
(car completions) string))) (progn (minibuffer-hide-completions) (ding) 
(minibuffer-message (if completions "Sole completion" "No completions"))) (let* 
((last (last completions)) (base-size (cdr last)) (prefix (if (zerop base-size) 
nil (substring string 0 base-size))) (all-md (completion--metadata 
(buffer-substring-no-properties start (point)) base-size md 
minibuffer-completion-table minibuffer-completion-predicate)) (afun (or 
(completion-metadata-get all-md (quote annotation-function)) (plist-get 
completion-extra-properties :annotation-function) 
completion-annotate-function)) (display-buffer-mark-dedicated (quote soft))) 
(let* ((#1=#:old-dir default-directory) (#4=#:buf (save-current-buffer 
(set-buffer ...) (prog1 ... ... ... ... ... ... ...))) (standard-output #4#)) 
(prog1 (progn (if last (progn ...)) (setq completions (let ... ...)) (if afun 
(progn ...)) (save-current-buffer (set-buffer standard-output) (set ... ...) 
(set ... ...)) (display-completion-list completions)) 
(internal-temp-output-buffer-show #4#))))) nil)
|   minibuffer-completion-help()
|   (if (if (eq completion-auto-help (quote lazy)) (let nil (eq this-command 
last-command)) (let nil completion-auto-help)) (minibuffer-completion-help) 
(completion--message "Next char not unique"))
|   (cond ((and (consp (cdr comps)) (not (condition-case nil (progn (consp 
(nthcdr threshold comps))) (error nil)))) (setq completed t exact t) 
(completion--cache-all-sorted-completions comps) (minibuffer-force-complete)) 
(completed (minibuffer-hide-completions) (if exact (completion--done completion 
(if (< comp-pos (length completion)) (quote exact) (quote unknown))))) ((not 
exact) (if (if (eq completion-auto-help (quote lazy)) (let nil (eq this-command 
last-command)) (let nil completion-auto-help)) (minibuffer-completion-help) 
(completion--message "Next char not unique"))) (t (if (and (eq this-command 
last-command) completion-auto-help) (minibuffer-completion-help)) 
(completion--done completion (quote exact) (if expect-exact nil "Complete, but 
not unique"))))
|   (let* ((exact (test-completion completion minibuffer-completion-table 
minibuffer-completion-predicate)) (threshold (completion--cycle-threshold md)) 
(comps (if (and threshold (or (not completed) (< (car ...) comp-pos))) (progn 
(completion-all-sorted-completions))))) 
(completion--flush-all-sorted-completions) (cond ((and (consp (cdr comps)) (not 
(condition-case nil (progn (consp ...)) (error nil)))) (setq completed t exact 
t) (completion--cache-all-sorted-completions comps) 
(minibuffer-force-complete)) (completed (minibuffer-hide-completions) (if exact 
(completion--done completion (if (< comp-pos (length completion)) (quote exact) 
(quote unknown))))) ((not exact) (if (if (eq completion-auto-help (quote lazy)) 
(let nil (eq this-command last-command)) (let nil completion-auto-help)) 
(minibuffer-completion-help) (completion--message "Next char not unique"))) (t 
(if (and (eq this-command last-command) completion-auto-help) 
(minibuffer-completion-help)) (completion--done completion (quote exact) (if 
expect-exact nil "Complete, but not unique")))) (minibuffer--bitset completed t 
exact))
|   (if (not (or unchanged completed)) (completion--do-completion 
try-completion-function expect-exact) (let* ((exact (test-completion completion 
minibuffer-completion-table minibuffer-completion-predicate)) (threshold 
(completion--cycle-threshold md)) (comps (if (and threshold (or (not completed) 
(< ... comp-pos))) (progn (completion-all-sorted-completions))))) 
(completion--flush-all-sorted-completions) (cond ((and (consp (cdr comps)) (not 
(condition-case nil (progn ...) (error nil)))) (setq completed t exact t) 
(completion--cache-all-sorted-completions comps) (minibuffer-force-complete)) 
(completed (minibuffer-hide-completions) (if exact (completion--done completion 
(if (< comp-pos ...) (quote exact) (quote unknown))))) ((not exact) (if (if (eq 
completion-auto-help (quote lazy)) (let nil (eq this-command last-command)) 
(let nil completion-auto-help)) (minibuffer-completion-help) 
(completion--message "Next char not unique"))) (t (if (and (eq this-command 
last-command) completion-auto-help) (minibuffer-completion-help)) 
(completion--done completion (quote exact) (if expect-exact nil "Complete, but 
not unique")))) (minibuffer--bitset completed t exact)))
|   (let* ((comp-pos (cdr comp)) (completion (car comp)) (completed (not (eq t 
(compare-strings completion nil nil string nil nil t)))) (unchanged (eq t 
(compare-strings completion nil nil string nil nil nil)))) (if unchanged 
(goto-char end) (completion--replace beg end completion)) (forward-char (- 
comp-pos (length completion))) (if (not (or unchanged completed)) 
(completion--do-completion try-completion-function expect-exact) (let* ((exact 
(test-completion completion minibuffer-completion-table 
minibuffer-completion-predicate)) (threshold (completion--cycle-threshold md)) 
(comps (if (and threshold (or ... ...)) (progn 
(completion-all-sorted-completions))))) 
(completion--flush-all-sorted-completions) (cond ((and (consp (cdr comps)) (not 
(condition-case nil ... ...))) (setq completed t exact t) 
(completion--cache-all-sorted-completions comps) (minibuffer-force-complete)) 
(completed (minibuffer-hide-completions) (if exact (completion--done completion 
(if ... ... ...)))) ((not exact) (if (if (eq completion-auto-help ...) (let nil 
...) (let nil completion-auto-help)) (minibuffer-completion-help) 
(completion--message "Next char not unique"))) (t (if (and (eq this-command 
last-command) completion-auto-help) (minibuffer-completion-help)) 
(completion--done completion (quote exact) (if expect-exact nil "Complete, but 
not unique")))) (minibuffer--bitset completed t exact))))
|   (cond ((null comp) (minibuffer-hide-completions) (if 
completion-fail-discreetly nil (ding) (completion--message "No match")) 
(minibuffer--bitset nil nil nil)) ((eq t comp) (minibuffer-hide-completions) 
(goto-char end) (completion--done string (quote finished) (if expect-exact nil 
"Sole completion")) (minibuffer--bitset nil nil t)) (t (let* ((comp-pos (cdr 
comp)) (completion (car comp)) (completed (not (eq t (compare-strings 
completion nil nil string nil nil t)))) (unchanged (eq t (compare-strings 
completion nil nil string nil nil nil)))) (if unchanged (goto-char end) 
(completion--replace beg end completion)) (forward-char (- comp-pos (length 
completion))) (if (not (or unchanged completed)) (completion--do-completion 
try-completion-function expect-exact) (let* ((exact (test-completion completion 
minibuffer-completion-table minibuffer-completion-predicate)) (threshold 
(completion--cycle-threshold md)) (comps (if ... ...))) 
(completion--flush-all-sorted-completions) (cond ((and ... ...) (setq completed 
t exact t) (completion--cache-all-sorted-completions comps) 
(minibuffer-force-complete)) (completed (minibuffer-hide-completions) (if exact 
...)) ((not exact) (if ... ... ...)) (t (if ... ...) (completion--done 
completion ... ...))) (minibuffer--bitset completed t exact))))))
|   (let* ((beg (field-beginning)) (end (field-end)) (string (buffer-substring 
beg end)) (md (completion--field-metadata beg)) (comp (funcall (or 
try-completion-function (quote completion-try-completion)) string 
minibuffer-completion-table minibuffer-completion-predicate (- (point) beg) 
md))) (cond ((null comp) (minibuffer-hide-completions) (if 
completion-fail-discreetly nil (ding) (completion--message "No match")) 
(minibuffer--bitset nil nil nil)) ((eq t comp) (minibuffer-hide-completions) 
(goto-char end) (completion--done string (quote finished) (if expect-exact nil 
"Sole completion")) (minibuffer--bitset nil nil t)) (t (let* ((comp-pos (cdr 
comp)) (completion (car comp)) (completed (not (eq t ...))) (unchanged (eq t 
(compare-strings completion nil nil string nil nil nil)))) (if unchanged 
(goto-char end) (completion--replace beg end completion)) (forward-char (- 
comp-pos (length completion))) (if (not (or unchanged completed)) 
(completion--do-completion try-completion-function expect-exact) (let* ((exact 
...) (threshold ...) (comps ...)) (completion--flush-all-sorted-completions) 
(cond (... ... ... ...) (completed ... ...) (... ...) (t ... ...)) 
(minibuffer--bitset completed t exact)))))))
|   completion--do-completion()
|   (let* ((#1=#:val (completion--do-completion))) (if (eq #1# (quote 0)) (let 
nil nil) (let nil t)))
|   (cond ((window-live-p minibuffer-scroll-window) (let ((window 
minibuffer-scroll-window)) (save-current-buffer (set-buffer (window-buffer 
window)) (if (pos-visible-in-window-p (point-max) window) (set-window-start 
window (point-min) nil) (scroll-other-window)) nil))) ((and completion-cycling 
completion-all-sorted-completions) (minibuffer-force-complete) t) (t (let* 
((#1=#:val (completion--do-completion))) (if (eq #1# (quote 0)) (let nil nil) 
(let nil t)))))
|   minibuffer-complete()
|   call-interactively(minibuffer-complete nil nil)
|   command-execute(minibuffer-complete)
|   read-from-minibuffer("Dired (directory): " "~/today/" (keymap (keymap (32)) 
keymap (7 . minibuffer-keyboard-quit) (menu-bar keymap (minibuf #1="Minibuf" 
keymap (tab menu-item "Complete" minibuffer-complete :help "Complete as far as 
possible") (space menu-item "Complete Word" minibuffer-complete-word :help 
"Complete at most one word") (63 menu-item "List Completions" 
minibuffer-completion-help :help "Display all possible completions") #1#)) (27 
keymap (21) (23) (118 . switch-to-completions)) (prior . switch-to-completions) 
(63 . minibuffer-completion-help) (32 . minibuffer-complete-word) (9 . 
minibuffer-complete) keymap (f9 . my-enlarge-mb) (menu-bar keymap (minibuf #1# 
keymap (previous menu-item "Previous History Item" previous-history-element 
:help "Put previous minibuffer history element in the minibuffer") (next 
menu-item "Next History Item" next-history-element :help "Put next minibuffer 
history element in the minibuffer") (isearch-backward menu-item "Isearch 
History Backward" isearch-backward :help "Incrementally search minibuffer 
history backward") (isearch-forward menu-item "Isearch History Forward" 
isearch-forward :help "Incrementally search minibuffer history forward") 
(return menu-item "Enter" exit-minibuffer :key-sequence "" :help "Terminate 
input and exit minibuffer") (quit menu-item "Quit" abort-recursive-edit :help 
"Abort input and exit minibuffer") #1#)) (10 . exit-minibuffer) (13 . 
exit-minibuffer) (7 . abort-recursive-edit) (C-tab . 
file-cache-minibuffer-complete) (9 . self-insert-command) (XF86Back . 
previous-history-element) (up . previous-history-element) (prior . 
previous-history-element) (XF86Forward . next-history-element) (down . 
next-history-element) (next . next-history-element) (27 keymap (114 . 
previous-matching-history-element) (115 . next-matching-history-element) (112 . 
previous-history-element) (110 . next-history-element))) nil file-name-history 
"~/today/" nil)
|   (let* ((minibuffer-completion-table collection) 
(minibuffer-completion-predicate predicate) (minibuffer-completion-confirm (if 
(eq require-match t) nil require-match)) (base-keymap (if require-match 
minibuffer-local-must-match-map minibuffer-local-completion-map)) (keymap (if 
(memq minibuffer-completing-file-name (quote (nil lambda))) base-keymap 
(make-composed-keymap minibuffer-local-filename-completion-map base-keymap))) 
(result (read-from-minibuffer prompt initial-input keymap nil hist def 
inherit-input-method))) (if (and (equal result "") def) (progn (setq result (if 
(consp def) (car def) def)))) result)
|   completing-read-default("Dired (directory): " read-file-name-internal 
file-exists-p nil "~/today/" file-name-history "~/today/" nil)
|   completing-read("Dired (directory): " read-file-name-internal file-exists-p 
nil "~/today/" file-name-history "~/today/")
|   (progn (add-hook (quote minibuffer-setup-hook) #:setup-hook) 
(completing-read prompt (quote read-file-name-internal) pred mustmatch insdef 
(quote file-name-history) default-filename))
|   (unwind-protect (progn (add-hook #1=(quote minibuffer-setup-hook) 
#2=#:setup-hook) (completing-read prompt (quote read-file-name-internal) pred 
mustmatch insdef (quote file-name-history) default-filename)) (remove-hook #1# 
#2#))
|   (let (#1=#:setup-hook) (setq #1# (function (lambda nil (remove-hook 
#2=(quote minibuffer-setup-hook) #1#) (funcall (function (lambda nil (setq 
default-directory dir) (if ... ...) (set ... ...) (set-syntax-table 
minibuffer-local-filename-syntax))))))) (unwind-protect (progn (add-hook #2# 
#1#) (completing-read prompt (quote read-file-name-internal) pred mustmatch 
insdef (quote file-name-history) default-filename)) (remove-hook #2# #1#)))
|   (let ((dir (file-name-as-directory (expand-file-name dir)))) (let 
(#1=#:setup-hook) (setq #1# (function (lambda nil (remove-hook #2=(quote 
minibuffer-setup-hook) #1#) (funcall (function (lambda nil ... ... ... 
...)))))) (unwind-protect (progn (add-hook #2# #1#) (completing-read prompt 
(quote read-file-name-internal) pred mustmatch insdef (quote file-name-history) 
default-filename)) (remove-hook #2# #1#))))
|   (if (or (not (next-read-file-uses-dialog-p)) (file-remote-p dir)) (let 
((dir (file-name-as-directory (expand-file-name dir)))) (let (#1=#:setup-hook) 
(setq #1# (function (lambda nil (remove-hook #2=(quote minibuffer-setup-hook) 
#1#) (funcall (function ...))))) (unwind-protect (progn (add-hook #2# #1#) 
(completing-read prompt (quote read-file-name-internal) pred mustmatch insdef 
(quote file-name-history) default-filename)) (remove-hook #2# #1#)))) (let 
((file (file-name-nondirectory dir)) (dialog-mustmatch (not (memq mustmatch 
(quote (nil confirm confirm-after-completion)))))) (if (and (not 
default-filename) (not (zerop (length file)))) (progn (setq default-filename 
file) (setq dir (file-name-directory dir)))) (if default-filename (progn (setq 
default-filename (expand-file-name (if (consp default-filename) (car 
default-filename) default-filename) dir)))) (setq add-to-history t) 
(x-file-dialog prompt dir default-filename dialog-mustmatch (eq predicate 
(quote file-directory-p)))))
|   (let* ((val (if (or (not (next-read-file-uses-dialog-p)) (file-remote-p 
dir)) (let ((dir (file-name-as-directory ...))) (let (#1=#:setup-hook) (setq 
#1# (function ...)) (unwind-protect (progn ... ...) (remove-hook #2=... #1#)))) 
(let ((file (file-name-nondirectory dir)) (dialog-mustmatch (not ...))) (if 
(and (not default-filename) (not ...)) (progn (setq default-filename file) 
(setq dir ...))) (if default-filename (progn (setq default-filename ...))) 
(setq add-to-history t) (x-file-dialog prompt dir default-filename 
dialog-mustmatch (eq predicate (quote file-directory-p)))))) 
(replace-in-history (eq (car-safe file-name-history) val))) (if (consp 
default-filename) (progn (setq default-filename (car default-filename)))) (if 
(eq val default-filename) (progn (if (not replace-in-history) (setq 
add-to-history t)) (setq val ""))) (if val nil (error "No file name 
specified")) (if (and default-filename (string-equal val (if (consp insdef) 
(car insdef) insdef))) (setq val default-filename)) (setq val 
(substitute-in-file-name val)) (if replace-in-history (let ((val1 
(minibuffer--double-dollars val))) (if history-delete-duplicates (setcdr 
file-name-history (delete val1 (cdr file-name-history)))) (if (string= val1 
(cadr file-name-history)) (car (prog1 file-name-history (setq file-name-history 
(cdr file-name-history)))) (setcar file-name-history val1))) (if add-to-history 
(let ((val1 (minibuffer--double-dollars val))) (if (and (consp 
file-name-history) (equal (car file-name-history) val1)) nil (setq 
file-name-history (cons val1 (if history-delete-duplicates ... 
file-name-history))))))) val)
|   (let ((completion-ignore-case read-file-name-completion-ignore-case) 
(minibuffer-completing-file-name t) (pred (or predicate (quote file-exists-p))) 
(add-to-history nil)) (let* ((val (if (or (not (next-read-file-uses-dialog-p)) 
(file-remote-p dir)) (let ((dir ...)) (let (#1=#:setup-hook) (setq #1# ...) 
(unwind-protect ... ...))) (let ((file ...) (dialog-mustmatch ...)) (if (and 
... ...) (progn ... ...)) (if default-filename (progn ...)) (setq 
add-to-history t) (x-file-dialog prompt dir default-filename dialog-mustmatch 
(eq predicate ...))))) (replace-in-history (eq (car-safe file-name-history) 
val))) (if (consp default-filename) (progn (setq default-filename (car 
default-filename)))) (if (eq val default-filename) (progn (if (not 
replace-in-history) (setq add-to-history t)) (setq val ""))) (if val nil (error 
"No file name specified")) (if (and default-filename (string-equal val (if 
(consp insdef) (car insdef) insdef))) (setq val default-filename)) (setq val 
(substitute-in-file-name val)) (if replace-in-history (let ((val1 
(minibuffer--double-dollars val))) (if history-delete-duplicates (setcdr 
file-name-history (delete val1 (cdr file-name-history)))) (if (string= val1 
(cadr file-name-history)) (car (prog1 file-name-history (setq file-name-history 
...))) (setcar file-name-history val1))) (if add-to-history (let ((val1 
(minibuffer--double-dollars val))) (if (and (consp file-name-history) (equal 
... val1)) nil (setq file-name-history (cons val1 ...)))))) val))
|   (let ((insdef (cond ((and insert-default-directory (stringp dir)) (if 
initial (cons (minibuffer--double-dollars ...) (length ...)) 
(minibuffer--double-dollars dir))) (initial (cons (minibuffer--double-dollars 
initial) 0))))) (let ((completion-ignore-case 
read-file-name-completion-ignore-case) (minibuffer-completing-file-name t) 
(pred (or predicate (quote file-exists-p))) (add-to-history nil)) (let* ((val 
(if (or (not ...) (file-remote-p dir)) (let (...) (let ... ... ...)) (let (... 
...) (if ... ...) (if default-filename ...) (setq add-to-history t) 
(x-file-dialog prompt dir default-filename dialog-mustmatch ...)))) 
(replace-in-history (eq (car-safe file-name-history) val))) (if (consp 
default-filename) (progn (setq default-filename (car default-filename)))) (if 
(eq val default-filename) (progn (if (not replace-in-history) (setq 
add-to-history t)) (setq val ""))) (if val nil (error "No file name 
specified")) (if (and default-filename (string-equal val (if (consp insdef) 
(car insdef) insdef))) (setq val default-filename)) (setq val 
(substitute-in-file-name val)) (if replace-in-history (let ((val1 
(minibuffer--double-dollars val))) (if history-delete-duplicates (setcdr 
file-name-history (delete val1 ...))) (if (string= val1 (cadr 
file-name-history)) (car (prog1 file-name-history ...)) (setcar 
file-name-history val1))) (if add-to-history (let ((val1 ...)) (if (and ... 
...) nil (setq file-name-history ...))))) val)))
|   read-file-name-default("Dired (directory): " nil "/home/micha/today/" nil 
nil nil)
|   funcall(read-file-name-default "Dired (directory): " nil 
"/home/micha/today/" nil nil nil)
|   read-file-name("Dired (directory): " nil "/home/micha/today/" nil)
|   dired-read-dir-and-switches("")
|   call-interactively(dired nil nil)
|   command-execute(dired)
`----------------------------------------------------------------------

I can reproduce this behavior manually:

(completion--twq-all
 #1="~/Download"
 #1# '(#("download/" 0 8 (face (completions-common-part)) 8 9 (face 
(completions-first-difference)))
       #("Downloads/" 0 8 (face (completions-common-part)) 8 9 (face 
(completions-first-difference))))
 2 'substitute-in-file-name 'completion--sifn-requote)

==>

(#("Download/" 0 8
   (face completions-common-part)
   8 9
   (face
    (completions-first-difference)))
 #("Downloads/" 0 8
   (face completions-common-part)
   8 9
   (face
    (completions-first-difference)))
 . 2)

I can't dig further 'cause I don't know what `completion--twq-all' is or
should do.


HTH,

Michael.

 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]