Function: tramp-handle-insert-directory
tramp-handle-insert-directory is a byte-compiled function defined in
tramp.el.gz.
Signature
(tramp-handle-insert-directory FILENAME SWITCHES &optional WILDCARD FULL-DIRECTORY-P)
Documentation
Like insert-directory for Tramp files.
Source Code
;; Defined in /usr/src/emacs/lisp/net/tramp.el.gz
(defun tramp-handle-insert-directory
(filename switches &optional wildcard full-directory-p)
"Like `insert-directory' for Tramp files."
(require 'ls-lisp)
(unless switches (setq switches ""))
;; Mark trailing "/".
(when (and (directory-name-p filename)
(not full-directory-p))
(setq switches (concat switches "F")))
;; Check, whether directory is accessible.
(unless wildcard
(access-file filename "Reading directory"))
(with-parsed-tramp-file-name (expand-file-name filename) nil
(with-tramp-progress-reporter v 0 (format "Opening directory %s" filename)
(let (ls-lisp-use-insert-directory-program start)
;; Silence byte compiler.
(tramp-run-real-handler
#'insert-directory
(list filename switches wildcard full-directory-p))
;; `ls-lisp' always returns full listings. We must remove
;; superfluous parts.
(unless (tramp-compat-string-search "l" switches)
(save-excursion
(goto-char (point-min))
(while (setq start
(text-property-not-all
(point) (line-end-position) 'dired-filename t))
(delete-region
start
(or (text-property-any
start (line-end-position) 'dired-filename t)
(line-end-position)))
(if (= (line-beginning-position) (line-end-position))
;; Empty line.
(delete-region (point) (progn (forward-line) (point)))
(forward-line)))))))))