2013-09-13 3 views
2

Не кажется, что dired предоставляет интерфейс для сортировки файлов/папок в соответствии с произвольной функцией компаратора. (По умолчанию он позволяет сортировать только по имени и по дате).Сортировка emacs dired buffer в соответствии с пользовательским компаратором

я копал в исходный код для того, чтобы определить механизм для этой сортировки, и я вижу, что это призыв к (revert-buffer) в dired-sort-toggledired.el), который делает повторного отображения. Это приводит меня к пониманию того, что при прошивке просто выполняется команда ls с определенными ключами, а затем считывается вывод в буфер.

Есть ли лучший способ достичь этой пользовательской сортировки, чем для того, чтобы использовать функцию ls-to-point для пользовательской? Я чувствую, что может существовать переменная, которая содержит упорядоченный список файлов/каталогов в буфере, который я мог бы переустановить.

Я нашел переменную dired-subdir-alist, но это только кажется, содержит верхний каталог (даже если в соответствии с документацией, это похоже именно список, я хочу)

Dired-подкаталог-креном является переменная, определенная в `dired.el '. Документация: Список ассоциаций поддиректорий и их буфер позиций. Каждый подкаталог имеет элемент: (DIRNAME. STARTMARKER). Порядок элементов в обратном порядке в буфере. В простых случаях этот список содержит один элемент.

Как я могу найти такую ​​переменную?

ответ

1

Возможно, вам захочется использовать ls-lisp, который представляет собой реализацию Elisp от insert-directory, которая является функцией, используемой Dired to (обычно) run ls. Это, как правило, используется под Windows, где ls часто отсутствует:

(require 'ls-lisp) 

Это должно быть легко настроить код, чтобы иметь возможность использовать свою собственную функцию сортировки.

+0

Я рассмотрю это. В конце концов я выяснил, что именно эта функция «insert-directory» действительно отвечала за порядок файлов и каталогов. – erjoalgo

2

Ваше понимание верности. И, как отмечает @Stefan, ls-lisp.el обеспечивает некоторую гибкость.

См. Также библиотеку Dired Sort Menu, которая по меньшей мере предоставляет более ls возможностей и позволяет комбинировать заказы сортировки. (Это не позволяет вам предоставить произвольный порядок сортировки, однако - для этого см. ls-lisp.el.)

Смежные вопросы