Function: dired-sort-R-check

dired-sort-R-check is a byte-compiled function defined in dired.el.gz.

Signature

(dired-sort-R-check SWITCHES)

Documentation

Additional processing of -R in ls option string SWITCHES.

Saves dired-subdir-alist when R is set and restores saved value minus any directories explicitly deleted when R is cleared. To be called first in body of dired-sort-other, etc.

Source Code

;; Defined in /usr/src/emacs/lisp/dired.el.gz
(defun dired-sort-R-check (switches)
  "Additional processing of -R in ls option string SWITCHES.
Saves `dired-subdir-alist' when R is set and restores saved value
minus any directories explicitly deleted when R is cleared.
To be called first in body of `dired-sort-other', etc."
  (cond
   ((and (dired-switches-recursive-p switches)
	 (not (dired-switches-recursive-p dired-actual-switches)))
    ;; Adding -R to ls switches -- save `dired-subdir-alist':
    (setq dired-subdir-alist-pre-R dired-subdir-alist))
   ((and (dired-switches-recursive-p dired-actual-switches)
	 (not (dired-switches-recursive-p switches)))
    ;; Deleting -R from ls switches -- revert to pre-R subdirs
    ;; that are still present:
    (setq dired-subdir-alist
	  (if dired-subdir-alist-pre-R
	      (let (subdirs)
		(while dired-subdir-alist-pre-R
		  (if (assoc (caar dired-subdir-alist-pre-R)
			     dired-subdir-alist)
		      ;; subdir still present...
		      (setq subdirs
			    (cons (car dired-subdir-alist-pre-R)
				  subdirs)))
		  (setq dired-subdir-alist-pre-R
			(cdr dired-subdir-alist-pre-R)))
		(reverse subdirs))
	    ;; No pre-R subdir alist, so revert to main directory
	    ;; listing:
	    (list (car (reverse dired-subdir-alist))))))))