mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-03 11:33:37 +00:00
(locate-file-completion): Handle nil in path-and-suffixes.
(file-truename): Expand all ~ constructs directly. (insert-directory): Delete any error msg output by the `insert-directory-program'.
This commit is contained in:
parent
95c12694a4
commit
f2440e42fa
@ -616,6 +616,8 @@ PATH-AND-SUFFIXES is a pair of lists (DIRECTORIES . SUFFIXES)."
|
||||
(suffix (concat (regexp-opt (cdr path-and-suffixes) t) "\\'"))
|
||||
(string-dir (file-name-directory string)))
|
||||
(dolist (dir (car path-and-suffixes))
|
||||
(unless dir
|
||||
(setq dir default-directory))
|
||||
(if string-dir (setq dir (expand-file-name string-dir dir)))
|
||||
(when (file-directory-p dir)
|
||||
(dolist (file (file-name-all-completions
|
||||
@ -668,14 +670,17 @@ Do not specify them in other calls."
|
||||
;; PREV-DIRS can be a cons cell whose car is an alist
|
||||
;; of truenames we've just recently computed.
|
||||
|
||||
;; The last test looks dubious, maybe `+' is meant here? --simon.
|
||||
(if (or (string= filename "") (string= filename "~")
|
||||
(and (string= (substring filename 0 1) "~")
|
||||
(string-match "~[^/]*" filename)))
|
||||
(progn
|
||||
(setq filename (expand-file-name filename))
|
||||
(if (string= filename "")
|
||||
(setq filename "/"))))
|
||||
(cond ((or (string= filename "") (string= filename "~"))
|
||||
(setq filename (expand-file-name filename))
|
||||
(if (string= filename "")
|
||||
(setq filename "/")))
|
||||
((and (string= (substring filename 0 1) "~")
|
||||
(string-match "~[^/]*/?" filename))
|
||||
(let ((first-part
|
||||
(substring filename 0 (match-end 0)))
|
||||
(rest (substring filename (match-end 0))))
|
||||
(setq filename (concat (expand-file-name first-part) rest)))))
|
||||
|
||||
(or counter (setq counter (list 100)))
|
||||
(let (done
|
||||
;; For speed, remove the ange-ftp completion handler from the list.
|
||||
@ -4307,6 +4312,8 @@ normally equivalent short `-D' option is just passed on to
|
||||
|
||||
;; If `insert-directory-program' failed, signal an error.
|
||||
(unless (eq 0 result)
|
||||
;; Delete the error message it may have output.
|
||||
(delete-region beg (point))
|
||||
;; On non-Posix systems, we cannot open a directory, so
|
||||
;; don't even try, because that will always result in
|
||||
;; the ubiquitous "Access denied". Instead, show the
|
||||
|
Loading…
Reference in New Issue
Block a user