GNU bug report logs -
#3250
23.0.93; tab completion flakey with tramp when insert-default-directory is nil
Previous Next
Full log
Message #65 received at 3250-done <at> emacsbugs.donarmstrong.com (full text, mbox):
> Okay, here's what I did:
The recipe I used was:
> emacs -Q
C-x C-f
C-a C-k
TAB
left right
TAB
left right
TAB
where you see that default-directory moves up one level each time the
*Completions* buffer is refreshed.
The patch below fixes the problem,
Stefan
--- simple.el.~1.986.~ 2009-05-03 21:41:00.000000000 -0400
+++ simple.el 2009-05-11 11:30:20.000000000 -0400
@@ -5851,20 +5851,23 @@
;; after the text of the completion list buffer is written.
(defun completion-setup-function ()
(let* ((mainbuf (current-buffer))
- (mbuf-contents (minibuffer-completion-contents))
- common-string-length)
+ (base-dir
;; When reading a file name in the minibuffer,
- ;; set default-directory in the minibuffer
- ;; so it will get copied into the completion list buffer.
+ ;; try and find the right default-directory to set in the
+ ;; completion list buffer.
+ ;; FIXME: Why do we do that, actually? --Stef
(if minibuffer-completing-file-name
- (with-current-buffer mainbuf
- (setq default-directory
- (file-name-directory (expand-file-name mbuf-contents)))))
+ (file-name-as-directory
+ (expand-file-name
+ (substring (minibuffer-completion-contents)
+ 0 (or completion-base-size 0))))))
+ common-string-length)
(with-current-buffer standard-output
(let ((base-size completion-base-size)) ;Read before killing localvars.
(completion-list-mode)
(set (make-local-variable 'completion-base-size) base-size))
(set (make-local-variable 'completion-reference-buffer) mainbuf)
+ (if base-dir (setq default-directory base-dir))
(unless completion-base-size
;; This shouldn't be needed any more, but further analysis is needed
;; to make sure it's the case.
This bug report was last modified 16 years and 75 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.