Commit 3a66e78f authored by Chong Yidong's avatar Chong Yidong

* eshell/em-ls.el (eshell-ls-applicable): Frob file attributes correctly (Bug#5548).

parent 14a225f9
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.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment