Alignement du texte dans les listes numérotées en mode organisation?

13

Q: Existe - t-il un moyen d'ajouter des zéros aux org-modelistes numérotées?

L'alignement du texte dans les listes numérotées commence à paraître désagréable lorsque les nombres entrent dans les deux chiffres:

* A numbered list

  1. Item 1
  2. Item 2
  3. Item 3
  4. Item 4
  5. Item 5
  6. Item 6
  7. Item 7
  8. Item 8
  9. Item 9
  10. Item 10   # ah, my eyes!

Le org-modemanuel sur les listes simples indique que:

Les éléments appartenant à la même liste doivent avoir la même indentation sur la première ligne. En particulier, si une liste ordonnée atteint le numéro «10», les numéros à 2 chiffres doivent être écrits alignés à gauche avec les autres numéros de la liste. Un élément se termine avant la ligne suivante qui est moins ou également en retrait que sa puce / numéro.

Il semble donc que org-modeles chiffres doivent être alignés à gauche. En tant que tel, je me demande s'il est possible d'ajouter des zéros aux éléments à un chiffre afin que le texte s'aligne bien:

* A zero-padded numbered list

  01. Item 1
  02. Item 2
  03. Item 3
  04. Item 4
  05. Item 5
  06. Item 6
  07. Item 7
  08. Item 8
  09. Item 9
  10. Item 10   # much better!

Par curiosité, j'ai essayé d'entrer manuellement les zéros dans une liste et de les frapper C-c C-c, ce qui les a simplement supprimés à nouveau.

Donc: existe-t-il un moyen de convaincre org-moded'ajouter des zéros dans les listes numérotées?

(Remarque: question inspirée de ce fil SO .)

Dan
la source

Réponses:

10

Le diff suivant org-list.elfait l'affaire!

diff --git a/lisp/org-list.el b/lisp/org-list.el
index b1d47c9..509e79f 100644
--- a/lisp/org-list.el
+++ b/lisp/org-list.el
@@ -1641,7 +1641,8 @@ as returned by `org-list-prevs-alist'."
      ;; Num bullet: increment it.
      ((string-match "[0-9]+" bullet)
       (replace-match
-       (number-to-string (1+ (string-to-number (match-string 0 bullet))))
+       (format (format "%%0%dd" (length (match-string 0 bullet)))
+          (1+ (string-to-number (match-string 0 bullet))))
        nil nil bullet))
      ;; Alpha bullet: increment it.
      ((string-match "[A-Za-z]" bullet)
@@ -1715,7 +1716,7 @@ This function modifies STRUCT."
          (replace-match "a" nil nil bullet))
         ;; First bullet is num: use "1".
         ((string-match "\\([0-9]+\\|[A-Za-z]\\)" bullet)
-         (replace-match "1" nil nil bullet))
+         (replace-match (format (format "%%0%dd" (1+ (log (length struct) 10))) 1) nil nil bullet))
         ;; Not an ordered list: keep bullet.
         (t bullet)))))))))
     (mapc fix-bul (mapcar 'car struct))))

Les premiers patchs fonctionnels org-list-inc-bullet-maybeconservent le rembourrage utilisé sur le premier élément. La seconde fonction de patchs de blocs permet org-list-struct-fix-bulde calculer le remplissage en fonction du nombre d'éléments dans la liste.

thisirs
la source
2
Agréable! Ce serait formidable si vous pouviez soumettre cela (de préférence avec une option pour le basculer) aux développeurs en mode org.
Saint Aardvark le Moquette