/ / Triez le tampon emacs dired selon le comparateur personnalisé - tri, emacs, elisp, dired

Triez le tampon emacs dired en fonction du comparateur personnalisé - tri, emacs, elisp, dired

Il ne semble pas que dired fournisse une interface pour trier les fichiers / dossiers selon une fonction de comparaison arbitraire. (Par défaut, il ne permet de trier que par nom et par date).

J'ai fouillé dans le code source afin de déterminer le mécanisme de ce tri, et je vois que c'est l'appel à (revert-buffer) dans dired-sort-toggle (dans dired.el) qui fait la rediffusion. Cela me conduit à réaliser que dired exécute simplement une commande ls avec certains commutateurs, puis lit la sortie dans la mémoire tampon.

Y at-il un meilleur moyen de réaliser cette coutumetrier que pointer dired "s ls function sur une fonction personnalisée? Je pense qu’il pourrait exister une variable contenant la liste ordonnée de fichiers / répertoires dans le tampon dired, que je pourrais éventuellement réarranger.

J'ai trouvé la variable dired-subdir-alist, mais cela ne semble contenir que le premier répertoire (même si selon la documentation, cela ressemble exactement à la liste que je veux)

dired-subdir-alist est une variable définie dans`dired.el". Documentation: Liste d'association des sous-répertoires et de leur tampon positions. Chaque sous-répertoire a un élément: (DIRNAME. STARTMARKER). L'ordre des éléments est l'inverse de l'ordre dans le tampon. Dans cas simples, cette liste contient un élément.

Comment pourrais-je trouver une telle variable?

Réponses:

2 pour la réponse № 1

Votre compréhension est correcte. Et, comme le note @ Stefan, ls-lisp.el fournit une certaine flexibilité.

Voir aussi bibliothèque Menu de tri Dired, qui au moins fournit plus ls possibilités et vous permet de combiner les ordres de tri. (Il ne vous permet toutefois pas de donner un ordre de tri arbitraire - pour cela, voir ls-lisp.el.)


1 pour la réponse № 2

Vous voudrez peut-être utiliser ls-lisp, qui est une implémentation Elisp de insert-directory, qui est la fonction utilisée par Dired pour (normalement) exécuter ls. Ceci est généralement utilisé sous Windows où ls est souvent absent:

(require "ls-lisp)

Il devrait être facile de modifier le code pour pouvoir utiliser votre propre fonction de tri.