22
|
1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
2 ;;
|
|
3 ;; File: dired-oas.el
|
116
|
4 ;; Dired Version: #Revision: 7.9 $
|
22
|
5 ;; RCS:
|
|
6 ;; Description: dired odds and sods. Dired functions not usually needed.
|
|
7 ;; This file is not a reference to the Organization of
|
|
8 ;; American States.
|
|
9 ;;
|
|
10 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
11
|
|
12 ;;; Don't require or provide anything, as this file is just an archive.
|
|
13
|
|
14 (defun dired-sort-on-size ()
|
|
15 "Sorts a dired listing on file size.
|
|
16 If your ls cannot sort on size, this is useful as `dired-after-readin-hook':
|
|
17 \(setq dired-after-readin-hook 'dired-sort-on-size\)"
|
|
18 (require 'sort)
|
|
19 (goto-char (point-min))
|
|
20 (dired-goto-next-file) ; skip `total' line
|
|
21 (beginning-of-line)
|
|
22 (sort-subr t 'forward-line 'end-of-line 'dired-get-file-size))
|
|
23
|
|
24 (defun dired-directories-of (files)
|
|
25 ;; Return unique list of parent directories of FILES.
|
|
26 (let (dirs dir file)
|
|
27 (while files
|
|
28 (setq file (car files)
|
|
29 files (cdr files)
|
|
30 dir (file-name-directory file))
|
|
31 (or (member dir dirs)
|
|
32 (setq dirs (cons dir dirs))))
|
|
33 dirs))
|
|
34
|
|
35 (defun dired-parse-ls-show ()
|
|
36 (interactive)
|
|
37 (let (inode s mode size uid gid nlink time name sym)
|
|
38 (if (dired-parse-ls)
|
|
39 (message "%s" (list inode s mode nlink uid gid size time name sym))
|
|
40 (message "Not on a file line."))))
|
|
41
|
|
42 (defun dired-files-same-directory (file-list &optional absolute)
|
|
43 "If all files in LIST are in the same directory return it, otherwise nil.
|
|
44 Returned name has no trailing slash. \"Same\" means file-name-directory of
|
|
45 the files are string=. File names in LIST must all be absolute or all be
|
|
46 relative. Implicitly, relative file names are in default-directory. If
|
|
47 optional ABS is non-nil, the returned name will be absolute, otherwise the
|
|
48 returned name will be absolute or relative as per the files in LIST."
|
|
49 (let ((dir (file-name-directory (car file-list))))
|
|
50 (if (memq nil (mapcar (function
|
|
51 (lambda (file)
|
|
52 (string= dir (file-name-directory file))))
|
|
53 file-list))
|
|
54 nil
|
|
55 (directory-file-name
|
|
56 (if (or (not absolute) (and dir (file-name-absolute-p dir)))
|
|
57 (or dir "")
|
|
58 (concat default-directory dir))))))
|