diff options
author | Andreas Schwab <schwab@suse.de> | 2000-08-17 12:08:26 +0000 |
---|---|---|
committer | Andreas Schwab <schwab@suse.de> | 2000-08-17 12:08:26 +0000 |
commit | d2473540a7c79d60f374a0c12513842b6ed66535 (patch) | |
tree | f8425926ec55b79ed948bcc1fe2cf89846f2bcc3 /lisp | |
parent | c0bbaf57af49951e40395bc41a231c518d832e29 (diff) | |
download | emacs-d2473540a7c79d60f374a0c12513842b6ed66535.tar.gz |
(insert-directory): Don't lose original file name,
undoing an undocumented change.
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/ChangeLog | 5 | ||||
-rw-r--r-- | lisp/files.el | 61 |
2 files changed, 37 insertions, 29 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index e23a91e6c27..f0d2b6d367d 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2000-08-17 Andreas Schwab <schwab@suse.de> + + * files.el (insert-directory): Don't lose original file name, + undoing an undocumented change. + 2000-08-17 Alex Schroeder <alex@gnu.org> * sql.el (sql-magic-go): Use comint-bol. diff --git a/lisp/files.el b/lisp/files.el index 6292588e369..17c54f69d51 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -3503,9 +3503,9 @@ This works by running a directory listing program whose name is in the variable `insert-directory-program'. If WILDCARD, it also runs the shell specified by `shell-file-name'." ;; We need the directory in order to find the right handler. - (let* ((file (expand-file-name file)) - (handler (find-file-name-handler file 'insert-directory))) - (if handler + (let ((handler (find-file-name-handler (expand-file-name file) + 'insert-directory))) + (if handler (funcall handler 'insert-directory file switches wildcard full-directory-p) (if (eq system-type 'vax-vms) @@ -3519,19 +3519,22 @@ If WILDCARD, it also runs the shell specified by `shell-file-name'." (result (if wildcard ;; Run ls in the directory of the file pattern we asked for - (let ((default-directory (file-name-directory file)) + (let ((default-directory + (if (file-name-absolute-p file) + (file-name-directory file) + (file-name-directory (expand-file-name file)))) (pattern (file-name-nondirectory file))) (call-process - shell-file-name nil t nil - "-c" (concat (if (memq system-type '(ms-dos windows-nt)) + shell-file-name nil t nil + "-c" (concat (if (memq system-type '(ms-dos windows-nt)) "" "\\") ; Disregard Unix shell aliases! - insert-directory-program - " -d " - (if (stringp switches) - switches - (mapconcat 'identity switches " ")) - " -- " + insert-directory-program + " -d " + (if (stringp switches) + switches + (mapconcat 'identity switches " ")) + " -- " ;; Quote some characters that have ;; special meanings in shells; but ;; don't quote the wildcards--we @@ -3541,26 +3544,26 @@ If WILDCARD, it also runs the shell specified by `shell-file-name'." ;; people want to use them ;; explicitly to quote wildcard ;; characters. - (shell-quote-wildcard-pattern pattern)))) + (shell-quote-wildcard-pattern pattern)))) ;; SunOS 4.1.3, SVr4 and others need the "." to list the ;; directory if FILE is a symbolic link. (apply 'call-process - insert-directory-program nil t nil - (append - (if (listp switches) switches - (unless (equal switches "") - ;; Split the switches at any spaces so we can - ;; pass separate options as separate args. - (split-string switches))) - ;; Avoid lossage if FILE starts with `-'. - '("--") - (progn - (if (string-match "\\`~" file) - (setq file (expand-file-name file))) - (list - (if full-directory-p - (concat (file-name-as-directory file) ".") - file)))))))) + insert-directory-program nil t nil + (append + (if (listp switches) switches + (unless (equal switches "") + ;; Split the switches at any spaces so we can + ;; pass separate options as separate args. + (split-string switches))) + ;; Avoid lossage if FILE starts with `-'. + '("--") + (progn + (if (string-match "\\`~" file) + (setq file (expand-file-name file))) + (list + (if full-directory-p + (concat (file-name-as-directory file) ".") + file)))))))) (if (/= result 0) ;; We get here if `insert-directory-program' failed. ;; On non-Posix systems, we cannot open a directory, so |