* eshell/em-ls.el (eshell-ls-applicable): Frob file attributes correctly (Bug#5548).
This commit is contained in:
parent
14a225f9c2
commit
3a66e78f66
2 changed files with 27 additions and 12 deletions
|
|
@ -1,3 +1,8 @@
|
|||
2010-02-09 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* eshell/em-ls.el (eshell-ls-applicable): Frob file attributes
|
||||
correctly (Bug#5548).
|
||||
|
||||
2010-02-08 Jose E. Marchesi <jemarch@gnu.org>
|
||||
|
||||
* progmodes/ada-mode.el (ada-in-numeric-literal-p): New function.
|
||||
|
|
|
|||
|
|
@ -225,18 +225,28 @@ really need to stick around for very long."
|
|||
(eq (aref (nth 8 attrs) 0) type)))
|
||||
|
||||
(defmacro eshell-ls-applicable (attrs index func file)
|
||||
"Test whether, for ATTRS, the user UID can do what corresponds to INDEX.
|
||||
This is really just for efficiency, to avoid having to stat the file
|
||||
yet again."
|
||||
`(if (numberp (nth 2 ,attrs))
|
||||
(if (= (user-uid) (nth 2 ,attrs))
|
||||
(not (eq (aref (nth 8 ,attrs) ,index) ?-))
|
||||
(,(eval func) ,file))
|
||||
(not (eq (aref (nth 8 ,attrs)
|
||||
(+ ,index (if (member (nth 2 ,attrs)
|
||||
(eshell-current-ange-uids))
|
||||
0 6)))
|
||||
?-))))
|
||||
"Test whether, for ATTRS, the user can do what corresponds to INDEX.
|
||||
ATTRS is a string of file modes. See `file-attributes'.
|
||||
If we cannot determine the answer using ATTRS (e.g., if we need
|
||||
to know what group the user is in), compute the return value by
|
||||
calling FUNC with FILE as an argument."
|
||||
`(let ((owner (nth 2 ,attrs))
|
||||
(modes (nth 8 ,attrs)))
|
||||
(cond ((cond ((numberp owner)
|
||||
(= owner (user-uid)))
|
||||
((stringp owner)
|
||||
(or (string-equal owner (user-login-name))
|
||||
(member owner (eshell-current-ange-uids)))))
|
||||
;; The user owns this file.
|
||||
(not (eq (aref modes ,index) ?-)))
|
||||
((eq (aref modes (+ ,index 3))
|
||||
(aref modes (+ ,index 6)))
|
||||
;; If the "group" and "other" fields give identical
|
||||
;; results, use that.
|
||||
(not (eq (aref modes (+ ,index 3)) ?-)))
|
||||
(t
|
||||
;; Otherwise call FUNC.
|
||||
(,(eval func) ,file)))))
|
||||
|
||||
(defcustom eshell-ls-highlight-alist nil
|
||||
"*This alist correlates test functions to color.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue