Commit 99f01c91 authored by Kenichi Handa's avatar Kenichi Handa
Browse files

(insert-directory): Read the output of "ls" by

no-conversion, and decode it later while preserving
`dired-filename' property.
parent ecc39168
...@@ -4017,12 +4017,15 @@ If WILDCARD, it also runs the shell specified by `shell-file-name'." ...@@ -4017,12 +4017,15 @@ If WILDCARD, it also runs the shell specified by `shell-file-name'."
;; Read the actual directory using `insert-directory-program'. ;; Read the actual directory using `insert-directory-program'.
;; RESULT gets the status code. ;; RESULT gets the status code.
(let* ((coding-system-for-read (let* (;; We at first read by no-conversion, then after
;; putting text property `dired-filename, decode one
;; bunch by one to preserve that property.
(coding-system-for-read 'no-conversion)
;; This is to control encoding the arguments in call-process.
(coding-system-for-write
(and enable-multibyte-characters (and enable-multibyte-characters
(or file-name-coding-system (or file-name-coding-system
default-file-name-coding-system))) default-file-name-coding-system))))
;; This is to control encoding the arguments in call-process.
(coding-system-for-write coding-system-for-read))
(setq result (setq result
(if wildcard (if wildcard
;; Run ls in the directory part of the file pattern ;; Run ls in the directory part of the file pattern
...@@ -4106,6 +4109,23 @@ If WILDCARD, it also runs the shell specified by `shell-file-name'." ...@@ -4106,6 +4109,23 @@ If WILDCARD, it also runs the shell specified by `shell-file-name'."
(beginning-of-line) (beginning-of-line)
(delete-region (point) (progn (forward-line 2) (point))))) (delete-region (point) (progn (forward-line 2) (point)))))
;; Now decode what read if necessary.
(let ((coding (or coding-system-for-write
(detect-coding-region beg (point) t)))
val pos)
(if (not (eq (coding-system-base coding) 'undecided))
(save-restriction
(narrow-to-region beg (point))
(goto-char (point-min))
(while (not (eobp))
(setq pos (point)
val (get-text-property (point) 'dired-filename))
(goto-char (next-single-property-change
(point) 'dired-filename nil (point-max)))
(decode-coding-region pos (point) coding)
(if val
(put-text-property pos (point) 'dired-filename t))))))
(if full-directory-p (if full-directory-p
;; Try to insert the amount of free space. ;; Try to insert the amount of free space.
(save-excursion (save-excursion
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment