Похоже, что нет общедоступных библиотек древовидной структуры Emacs, которые в настоящее время предлагают эту функцию.
Поэтому я создам такую функцию сам. Следующая функция может использоваться для получения настраиваемого списка имени файла, размера, даты и разрешений. Функция file-size-human-readable
может быть недоступна в более ранних версиях Emacs, но она доступна в Emacs Trunk. Функция ls-lisp-format-file-size
в ls-lisp
является альтернативой, но она дает результат с лидирующим пробелом - я решил не использовать этот, а не возиться с ним. message
не нужно, но полезно посмотреть, как выглядит пользовательский список - просто для демонстрации.
(defun random-sort--filename-size-date-permissions ()
"Return a custom list (sorted randomly):
absolute name, size, date and permissions."
(let* (
(directory "~/")
(master (directory-files-and-attributes directory t nil t nil))
(custom-list (mapcar (lambda (x)
(list
(nth 0 x) ;; filename
(file-size-human-readable (nth 8 x)) ;; size
(format-time-string "%m-%d-%Y %R" (nth 6 x)) ;; date
(nth 9 x) )) ;; permissions
master)) )
(dolist (x custom-list)
(message "%s" x))
custom-list))
(defun date-sort--filename-size-date-permissions ()
"Return a custom list (sorted by date -- newest first):
absolute name, size, date and permissions."
(let* (
(directory "~/")
(random-master (directory-files-and-attributes directory t nil t nil))
(date-sort--master (sort random-master
#'(lambda (x y) (time-less-p (nth 6 y) (nth 6 x)))))
(custom-list (mapcar (lambda (x)
(list
(nth 0 x) ;; filename
(file-size-human-readable (nth 8 x)) ;; size
(format-time-string "%m-%d-%Y %R" (nth 6 x)) ;; date
(nth 9 x) )) ;; permissions
date-sort--master)) )
(dolist (x custom-list)
(message "%s" x))
custom-list))
(defun alpha-sort--filename-size-date-permissions ()
"Return a custom list (sorted alphabetically):
absolute name, size, date and permissions."
(let* (
(directory "~/")
(alpha-sort--master (directory-files-and-attributes directory t nil nil nil))
(custom-list (mapcar (lambda (x)
(list
(nth 0 x) ;; filename
(file-size-human-readable (nth 8 x)) ;; size
(format-time-string "%m-%d-%Y %R" (nth 6 x)) ;; date
(nth 9 x) )) ;; permissions
alpha-sort--master)) )
(dolist (x custom-list)
(message "%s" x))
custom-list))
Сортировка по имени с небольшим изменением функции alpha-sort--filename-size-date-permissions
с измененной пользователем версией ztree-mode
:
Сортировка по дате с использованием небольшого изменения функции date-sort--filename-size-date-permissions
с измененной пользователем версией ztree-mode
: