;ELC   
;;; Compiled by buildd@akateko.buildd on Fri Oct 25 13:48:16 2013
;;; from file /build/buildd/emacs23-23.4+1/debian/build-x/lisp/ls-lisp.el
;;; in Emacs version 23.4
;;; with all optimizations.

;;; This file uses dynamic docstrings, first added in Emacs 19.29.

;;; This file does not contain utf-8 non-ASCII characters,
;;; and so can be loaded in Emacs versions earlier than 23.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(custom-declare-group 'ls-lisp nil "Emulate the ls program completely in Emacs Lisp." :version "21.1" :group 'dired)
#@324 Platform to emulate: GNU (default), MacOS, MS-Windows, UNIX.
Corresponding value is one of the atoms: nil, MacOS, MS-Windows, UNIX.
Sets default values for: `ls-lisp-ignore-case', `ls-lisp-dirs-first',
`ls-lisp-verbosity'.  Need not match actual platform.  Changing this
option will have no effect until you restart Emacs.
(custom-declare-variable 'ls-lisp-emulation '(cond ((memq system-type '(hpux usg-unix-v irix berkeley-unix)) 'UNIX)) '(#$ . 653) :type '(choice (const :tag "GNU" nil) (const MacOS) (const MS-Windows) (const UNIX)) :group 'ls-lisp)
(byte-code "\302\303\304\305#\210\306\305\211\203, 	@\303N\203% \304N\204% \307\304\303N#\210	A\211\204 *\310\303\304\311#\207" [prop #:--cl-dolist-temp-- defvaralias ls-lisp-dired-ignore-case ls-lisp-ignore-case nil (saved-value saved-variable-comment) put make-obsolete-variable "21.1"] 6)
#@59 Non-nil causes ls-lisp alphabetic sorting to ignore case.
(custom-declare-variable 'ls-lisp-ignore-case '(memq ls-lisp-emulation '(MS-Windows MacOS)) '(#$ . 1514) :type 'boolean :group 'ls-lisp)
#@133 Non-nil causes ls-lisp to sort directories first in any ordering.
(Or last if it is reversed.)  Follows Microsoft Windows Explorer.
(custom-declare-variable 'ls-lisp-dirs-first '(eq ls-lisp-emulation 'MS-Windows) '(#$ . 1716) :type 'boolean :group 'ls-lisp)
#@588 A list of optional file attributes that ls-lisp should display.
It should contain none or more of the symbols: links, uid, gid.
A value of nil (or an empty list) means display none of them.

Concepts come from UNIX: `links' means count of names associated with
the file; `uid' means user (owner) identifier; `gid' means group
identifier.

If emulation is MacOS then default is nil;
if emulation is MS-Windows then default is `(links)' if platform is
Windows NT/2K, nil otherwise;
if emulation is UNIX then default is `(links uid)';
if emulation is GNU then default is `(links uid gid)'.
(custom-declare-variable 'ls-lisp-verbosity '(cond ((eq ls-lisp-emulation 'MacOS) nil) ((eq ls-lisp-emulation 'MS-Windows) (if (and (fboundp 'w32-using-nt) (w32-using-nt)) '(links))) ((eq ls-lisp-emulation 'UNIX) '(links uid)) (t '(links uid gid))) '(#$ . 1981) :type '(set (const :tag "Show Link Count" links) (const :tag "Show User" uid) (const :tag "Show Group" gid)) :group 'ls-lisp)
#@246 Non-nil causes ls-lisp to revert back to using `insert-directory-program'.
This is useful on platforms where ls-lisp is dumped into Emacs, such as
Microsoft Windows, but you would still like to use a program to list
the contents of a directory.
(custom-declare-variable 'ls-lisp-use-insert-directory-program '(not (memq system-type '(ms-dos windows-nt))) '(#$ . 2963) :type 'boolean :group 'ls-lisp)
#@138 Non-nil means ls-lisp treats file patterns as shell wildcards.
Otherwise they are treated as Emacs regexps (for backward compatibility).
(custom-declare-variable 'ls-lisp-support-shell-wildcards 't '(#$ . 3370) :type 'boolean :group 'ls-lisp)
#@555 List of `format-time-string' specs to display file time stamps.
These specs are used ONLY if a valid locale can not be determined.

If `ls-lisp-use-localized-time-format' is non-nil, these specs are used
regardless of whether the locale can be determined.

Syntax:  (EARLY-TIME-FORMAT OLD-TIME-FORMAT)

The EARLY-TIME-FORMAT is used if file has been modified within the
current year. The OLD-TIME-FORMAT is used for older files.  To use ISO
8601 dates, you could set:

(setq ls-lisp-format-time-list
       '("%Y-%m-%d %H:%M"
         "%Y-%m-%d      "))
(custom-declare-variable 'ls-lisp-format-time-list ''("%b %e %H:%M" "%b %e  %Y") '(#$ . 3620) :type '(list (string :tag "Early time format") (string :tag "Old time format")) :group 'ls-lisp)
#@236 Non-nil causes ls-lisp to use `ls-lisp-format-time-list' even if
a valid locale is specified.

WARNING: Using localized date/time format might cause Dired columns
to fail to lign up, e.g. if month names are not all of the same length.
(custom-declare-variable 'ls-lisp-use-localized-time-format 'nil '(#$ . 4372) :type 'boolean :group 'ls-lisp)
#@68 This holds the original function definition of `insert-directory'.
(defvar original-insert-directory nil (#$ . 4723))
#@33 Format to display integer UIDs.
(defvar ls-lisp-uid-d-fmt "-%d" (#$ . 4847))
#@31 Format to display user names.
(defvar ls-lisp-uid-s-fmt "-%s" (#$ . 4930))
#@33 Format to display integer GIDs.
(defvar ls-lisp-gid-d-fmt "-%d" (#$ . 5011))
#@37 Format to display user group names.
(defvar ls-lisp-gid-s-fmt "-%s" (#$ . 5094))
#@39 Format to display integer file sizes.
(defvar ls-lisp-filesize-d-fmt "%d" (#$ . 5181))
#@37 Format to display float file sizes.
(defvar ls-lisp-filesize-f-fmt "%.0f" (#$ . 5274))
(byte-code "\301\302!\204	 \303K\301\207" [original-insert-directory featurep ls-lisp insert-directory] 2)
#@1216 Insert directory listing for FILE, formatted according to SWITCHES.
Leaves point after the inserted text.
SWITCHES may be a string of options, or a list of strings.
Optional third arg WILDCARD means treat FILE as shell wildcard.
Optional fourth arg FULL-DIRECTORY-P means file is a directory and
switches do not contain `d', so that a full listing is expected.

This version of the function comes from `ls-lisp.el'.
If the value of `ls-lisp-use-insert-directory-program' is non-nil then
it works exactly like the version from `files.el' and runs a directory
listing program whose name is in the variable
`insert-directory-program'; if also WILDCARD is non-nil then it runs
the shell specified by `shell-file-name'.  If the value of
`ls-lisp-use-insert-directory-program' is nil then it runs a Lisp
emulation.

The Lisp emulation does not run any external programs or shells.  It
supports ordinary shell wildcards if `ls-lisp-support-shell-wildcards'
is non-nil; otherwise, it interprets wildcards as regular expressions
to match file names.  It does not support all `ls' switches -- those
that work are: A a B C c F G g h i n R r S s t U u X.  The l switch
is assumed to be always present and cannot be turned off.
(defalias 'insert-directory #[(file switches &optional wildcard full-directory-p) "\203 	\n\f$\207\306\307\n!\310\"\n\311%&\211'\203( '\310\n\f%\202\264 \312\313\"\2036 \314\315\311\211$\316\317\316\320\321\311\"\"\"(\203f \312\322\n\"\203f \323\n!\204f \n\211GSH\324=\203d \n\325\nGSO\326\f\203\203 (\203w \327\330\n!!\202z \330\n!%\331\n!\202\214 \332>\203\214 \333%\334\335\336\217\210\212eb\210\337\340\311\326#\205\263 \341\342!\211)\205\262 \314\343!\210\311\210\344)\261))+\207" [ls-lisp-use-insert-directory-program original-insert-directory file switches wildcard full-directory-p find-file-name-handler expand-file-name insert-directory nil string-match "--dired " replace-match "" delete 32 45 append "[[?*]" file-exists-p 47 0 t wildcard-to-regexp file-name-nondirectory file-name-directory 66 "[^~]\\'" err (byte-code "\304	\305	!\n%\207" [file switches wildcard-regexp full-directory-p ls-lisp-insert-directory ls-lisp-time-index] 6) ((invalid-regexp (byte-code "\211A@)\306\232\203% \307\n>\205 \310\311\f!\312\n\313\n!\314%\210\202, \315@A\"\210\314\207" [err x switches wildcard-regexp orig-file file "Unmatched [ or [^" 66 "[^~]\\'" file-relative-name ls-lisp-insert-directory ls-lisp-time-index nil signal full-directory-p] 7))) re-search-forward "^total" get-free-disk-space "." "total used in directory" " available " wildcard-regexp orig-file handler ls-lisp-support-shell-wildcards available] 8 (#$ . 5477)])
#@528 Insert directory listing for FILE, formatted according to SWITCHES.
Leaves point after the inserted text.  This is an internal function
optionally called by the `ls-lisp.el' version of `insert-directory'.
It is called recursively if the -R switch is used.
SWITCHES is a *list* of characters.  TIME-INDEX is the time index into
file-attributes according to SWITCHES.  WILDCARD-REGEXP is nil or an *Emacs
regexp*.  FULL-DIRECTORY-P means file is a directory and SWITCHES does
not contain `d', so that a full listing is expected.
(defalias 'ls-lisp-insert-directory #[(file switches time-index wildcard-regexp full-directory-p) "\204 	\203)\306\n!\211\307\310\311\312>\203 \313\202 \314%>\315 ?\316\211@A\316\211BC\310\211DE\310\211FG\310\211HI\310\211JK\310\211LM\310N\317>\203b \320\321>\">\202o \322>\204o \320\323>\">\324>\">\325>\203\204 \326>!\210\202\337`>\242BD>\310F\211O\203O@\211FAJ\327J8\211K;\203\261 \330K!\202\267 \331\332K\"GM\333J8\211L;\203\313 \330L!\202\321 \331\332L\"GN\334J8HMAV\203\345 MANBV\203\361 NBHCV\203\375 HCOA\211O\204\226 *\331\335A\"P\331\336A\"Q\331\335B\"R\331\336B\"S\331\337\340>\2038\331\341\342C\343\245!\"G\202>\331\341C\"G\"T\331\344\340>\203V\331\341\342C\345\245!\"G\202\\\331\341C\"G\"U>EE\203\304E@FEAEF@GFAJ\334J8HJ\203cH@\346HZW\204\241\347@!\204\241\347H!\203\246@\202\252\350@!\\\211@\203c\351GJHV?&c\210\202c\212D@b\210DA\204\323\352c\210\331\353\342@\354\245!\"c\210)\355>\205&>\205&>@F>A>F\211WA@)\311=\203\345\356\357F@\"\204\345\360F@\"F\361F\362\261\210\363FV	%\210\202\345.\207\364\n!\2033\360\n!\n\211GSH\365=\203B\n\316\366O\367\n\314\"\211X\203m\351\370>\203[\371\nX\"\202\\\nX\334X8V\315 &c\202x\372\373\n\"\210\374 \210\375\327!)\207" [wildcard-regexp full-directory-p file dir default-directory switches file-name-as-directory directory-files-and-attributes nil t 110 integer string current-time 0 65 ls-lisp-delete-matching "^\\.\\.?$" 97 "^\\." ls-lisp-handle-switches 67 ls-lisp-column-format 2 string-width format "%d" 3 7 " %%-%dd" " %%-%ds" " %%%dd" 115 "%.0f" fceiling 1024.0 " %%%d.0f" 1024.0 134217727 floatp float ls-lisp-format "(No match)\n" "total %.0f\n" 1024.0 82 string-match "\\`\\.\\.?/?\\'" expand-file-name "\n" ":\n" ls-lisp-insert-directory file-name-absolute-p 47 -1 file-attributes 70 ls-lisp-classify-file message "%s: doesn't exist or is inaccessible" ding sit-for file-alist now sum max-uid-len max-gid-len max-file-size total-line files elt short file-size fil attr fuid fgid uid-len gid-len #1=#:--cl-dolist-temp-- ls-lisp-uid-d-fmt ls-lisp-uid-s-fmt ls-lisp-gid-d-fmt ls-lisp-gid-s-fmt ls-lisp-filesize-d-fmt ls-lisp-filesize-f-fmt time-index x fattr] 8 (#$ . 8170)])
#@183 Insert the file names (only) in FILE-ALIST into the current buffer.
Format in columns, sorted vertically, following GNU ls -C.
Responds to the window width as ls should but may not!
(defalias 'ls-lisp-column-format #[(file-alist) "\306\211\211\211\307\211\306\211\203> 	T\211@@)\211BAG\211V\203 \202 *\237\310\\\311\312\"\313 \245	\245	\n_V\203_ \nT\307\306\211\nW\205\234 \211	W\203\210 \311\f8\"c\210\n\\\211\202p `\314\306x\210`|\210\315c\210T\211\202f .\207" [colwid nfiles collen ncols fmt files nil 0 2 format "%%-%ds" window-width " 	" 10 len file file-alist x j i] 7 (#$ . 11012)])
#@65 Delete all elements matching REGEXP from LIST, return new list.
(defalias 'ls-lisp-delete-matching #[(regexp list) "\304	\203 \305\n	\211@@)\"\204 	@B	A\211\204 )\207" [result list regexp x nil string-match] 4 (#$ . 11675)])
#@182 Return t if string S1 is less than string S2 in lexicographic order.
Case is significant if `ls-lisp-ignore-case' is nil.
Unibyte strings are converted to multibyte for comparison.
(defalias 'ls-lisp-string-lessp #[(s1 s2) "\304\305\306	\305\306\n&\211\247\205 \305W)\207" [s1 s2 ls-lisp-ignore-case u compare-strings 0 nil] 9 (#$ . 11916)])
(put 'ls-lisp-string-lessp 'byte-optimizer 'byte-compile-inline-expand)
#@119 Return new FILE-ALIST sorted according to SWITCHES.
SWITCHES is a list of characters.  Default sorting is alphabetic.
(defalias 'ls-lisp-handle-switches #[(file-alist switches) "\306>\204 \307\310\311\217\210\312>\203 \313\314	\"\n\203m \315\211\211	\203\\ 	@\211\211A@)\316=\204J \211A@);\203Q \317\211A@)!\203Q \fB\202U B	A\211\204$ \306>\203h \f\244\202k \f\244+\306>?\320>?=\n=\203~ 	\237\207	\207" [switches file-alist ls-lisp-dirs-first files dirs el 85 err (byte-code "\303\304\305	!\306\n>\203 \307\202' \310\n!\211\203 \311\202' \312\n>\203& \313\202' \314\")\303\207" [index file-alist switches nil sort copy-sequence 83 #[(x y) "\302A8\302	A8W\207" [y x 7] 3] ls-lisp-time-index #[(x y) "\303	A8\nA8\"\207" [index y x ls-lisp-time-lessp] 4] 88 #[(x y) "\306@!\306	@!\307\310\311\n\310\311\f&\211\247\205 \310W+\207" [x y s2 s1 ls-lisp-ignore-case u ls-lisp-extension compare-strings 0 nil] 9] #[(x y) "@	@\306\307\310\n\307\310\f&\211\247\205 \307W+\207" [x y s2 s1 ls-lisp-ignore-case u compare-strings 0 nil] 9]] 4) ((error (byte-code "\301\302\303!\"\210\304 \210\305\306!\207" [err message "Unsorted (ls-lisp sorting error) - %s" error-message-string ding sit-for 2] 4))) 70 mapcar ls-lisp-classify nil t file-directory-p 114 x] 4 (#$ . 12342)])
#@319 Append a character to FILENAME indicating the file type.

FATTR is the file attributes returned by `file-attributes' for the file.
The file type indicators are `/' for directories, `@' for symbolic
links, `|' for FIFOs, `=' for sockets, `*' for regular files that
are executable, and nothing for other types of files.
(defalias 'ls-lisp-classify-file #[(filename fattr) "@\3058\211\306\307O	\203  \f	\310=\203 \311\202 \312P\202F \313\314\n\"\203- \f\315P\202F \316\230\2039 \f\317P\202F \320\230\203E \f\321P\202F \f+\207" [fattr type modestr typestr filename 8 0 1 t "/" "@" string-match "x" "*" "p" "|" "s" "="] 4 (#$ . 13664)])
#@386 Append a character to file name in FILEDATA indicating the file type.

FILEDATA has the form (FILENAME . ATTRIBUTES), where ATTRIBUTES is the
structure returned by `file-attributes' for that file.

The file type indicators are `/' for directories, `@' for symbolic
links, `|' for FIFOs, `=' for sockets, `*' for regular files that
are executable, and nothing for other types of files.
(defalias 'ls-lisp-classify #[(filedata) "@A\303\n\304\305#\306\n	\"	*B\207" [filedata fattr file-name propertize dired-filename t ls-lisp-classify-file] 4 (#$ . 14312)])
#@127 Return extension of FILENAME (ignoring any version extension)
FOLLOWED by null and full filename, SOLELY for full alpha sort.
(defalias 'ls-lisp-extension #[(filename) "G\303	SH\304U\203 \305\202` 	S\211\306Y\203# 	H\304U\203 	\306W\203- \307\202` 	TH\310U\204> 	T\303O\202` 		S\211\306Y\203Q 	H\304U\203@ 	\306W\203[ \307\202` 	T\nO*\305Q\207" [filename i end nil 46 " " 0 "  " 126] 3 (#$ . 14880)])
#@52 Return t if time TIME0 is earlier than time TIME1.
(defalias 'ls-lisp-time-lessp #[(time0 time1) "@	@\211\nW\206 \nU\205 \211A@)	\211A@)W*\207" [time0 time1 hi1 hi0 x] 3 (#$ . 15302)])
#@186 Format one line of long ls output for file FILE-NAME.
FILE-ATTR and FILE-SIZE give the file's attributes and size.
SWITCHES, TIME-INDEX and NOW give the full switch list and time data.
(defalias 'ls-lisp-format #[(file-name file-attr file-size switches time-index now) "@\3068\307>\205^ \3108\211:\203Y \fA:\203L \f@\311_\312\f@\313_\f\211A@)\314_\f\211AA)#+,\315\316,\317+\320\"\\\321+\322\"#*\202] \315\323\f@\324_\fA\\\"\202] \315\325\f\")\326>\205n \315-\327.\330\245!\"	\331/>\205| \315\332A@\"\333/>\205\232 \3348\315;\203\224 0\202\226 1\")\335>?\205\305 \336>\204\256 \337/>\205\305 \3408\315;\203\277 2\202\301 3\")\341.\342>\"\343\34445#\343\345>\204\344 \3466\347\350#\202\346 6\n;\205\356 \351\nP\352\260*\207" [file-attr drwxrwxrwx file-type switches inode x 8 105 10 10995116.0 + 27776.0 65536.0 format " %13.0f%05.0f " floor 100000.0 mod 100000.0 " %18.0f " 65536.0 " %18d " 115 fceiling 1024.0 links "%3d" uid 2 71 103 gid 3 ls-lisp-format-file-size 104 " " ls-lisp-format-time 70 propertize dired-filename t " -> " "\n" p2 p1 ls-lisp-filesize-f-fmt file-size ls-lisp-verbosity ls-lisp-uid-s-fmt ls-lisp-uid-d-fmt ls-lisp-gid-s-fmt ls-lisp-gid-d-fmt time-index now file-name] 15 (#$ . 15503)])
#@107 Return time index into file-attributes according to ls SWITCHES list.
Return nil if no time switch found.
(defalias 'ls-lisp-time-index #[(switches) "\301>\203 \302\207\303>\203 \304\207\305>\205 \306\207" [switches 99 6 116 5 117 4] 2 (#$ . 16770)])
#@42 Convert TIME to a floating point number.
(defalias 'ls-lisp-time-to-seconds #[(time) "\302@\303_\211A@)\3048\206 \305\306\245#\207" [time x + 65536.0 2 0 1000000.0] 6 (#$ . 17033)])
#@248 Format time for file with attributes FILE-ATTR according to TIME-INDEX.
Use the same method as ls to decide whether to show time-of-day or year,
depending on distance between file date and NOW.
All ls time options, namely c, t and u, are handled.
(defalias 'ls-lisp-format-time #[(file-attr time-index now) "\206 \306	8\307\n!\307!Z\310\311\312\313\217+\207" [time-index file-attr time now diff past-cutoff 5 ls-lisp-time-to-seconds -15778476 nil (byte-code "\211\204 \306\307\n@!\211\204 \nA\211\204 )	\310\235\203! \311\312\fX\203@ \f\313X\203@ 	\203: \204: \314\202P @\202P 	\203L \204L \315\202P A@\")\207" [system-time-locale locale vars past-cutoff diff ls-lisp-use-localized-time-format ("LC_ALL" "LC_TIME" "LANG") getenv ("C" "POSIX") nil format-time-string 0 "%m-%d %H:%M" "%Y-%m-%d " ls-lisp-format-time-list time] 4) ((error "Unk  0  0000"))] 3 (#$ . 17227)])
(defalias 'ls-lisp-format-file-size #[(file-size human-readable) "\204 \305\306	!\203 \n\202 	\"\207	\307W\203 \305\310	\"\207	\311\245\312\313\314\315\316\317\257	\307W\204; 	\320\245\fA\202+ \305\321	\f@#*\207" [human-readable file-size ls-lisp-filesize-f-fmt ls-lisp-filesize-d-fmt post-fixes format floatp 1024 " %4d" 1024.0 "k" "M" "G" "T" "P" "E" 1024.0 " %3.0f%s"] 7])
(provide 'ls-lisp)
