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)
(defvar ls-lisp-dirs-first)
(defvar ls-lisp-emulation)
(defvar ls-lisp-ignore-case)
(defvar ls-lisp-use-insert-directory-program)
(defvar ls-lisp-verbosity)
(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)
;; We bind `ls-lisp-emulation' to nil (which is GNU).
;; `ls-lisp-set-options' modifies `ls-lisp-ignore-case',
;; `ls-lisp-dirs-first' and `ls-lisp-verbosity', so we bind them
;; as well. We don't want to use `insert-directory-program'.
(let (ls-lisp-emulation ls-lisp-ignore-case ls-lisp-dirs-first
ls-lisp-verbosity ls-lisp-use-insert-directory-program start)
;; Set proper options based on `ls-lisp-emulation'.
(tramp-compat-funcall 'ls-lisp-set-options)
(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 (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)))))))))