J'aimerais mettre quelque chose comme ça dans mon .emacs: mais chaque fois que je l'exécute, je reçois une erreur "Type de type argument: numerp, nil". p> Que signifie cette erreur et comment puis-je avoir l'effet que je recherche? p> p>
3 Réponses :
J'ai séparé la source de align-regexp code> (Installer emacs23-el code> sur Debian) et est venu avec ceci: (local-set-key (kbd "C-c a =")
(lambda () (interactive)
(align-region (region-beginning)
(region-end)
'entire
(list (list nil
(cons 'regexp "\\(\\s-*\\)=")
(cons 'group 1)
(cons 'bogus nil)
(cons 'spacing 1)))
nil
nil)))
Mais il est sûrement possible de faire cette mission sans creuser les entrailles de la commande Align?
J'aurais pensé, mais je ne comprends pas align.el code> tout ça bien.
"Thunk" de #emacs a résolu:
(local-set-key (kbd "C-c a =")
(lambda () (interactive)
(align-regexp (region-beginning) (region-end) "\\(\\s-*\\)=" 1 1 nil)))
Notez que le dernier nil est facultatif et que les 1 1 ne sont pas. La documentation pour Align.el a besoin d'un rangement.
Ici, vous êtes mon cher gars.
(list (concat "\\(\\s-*\\)"
Je vais vous donner un +1 cependant :) ... que \ S- * préfixe est très étrange.
Comme d'habitude, je vous prie tout d'utiliser "RX" de sorte que ceux qui lisent votre code ne deviendront pas fou ni aveugle: (RX (Groupe (Zero-ou-plus (Syntaxe Whitespace))) est exactement équivalent à "\ (\\ s - * \ \) ="
@ Offby1, c'est bizarre. Je peux grok (\\ s- *), mais ce groupe Rx ... zéro-ou-d plus, etc., etc., je n'ai aucune idée de ce que c'est. Je suppose que je suis déjà l'un des "touchés".
@slomojo - bonne réponse, mais vous avez laissé une chose hors de l'explication - pourquoi devons-nous spécifier des chiffres pour le groupe et l'espacement? Ils sont documentés comme facultatifs. La vraie raison de l'erreur rapportée par OP ("Type de type argument: numerp, nil") est qu'il n'a pas spécifié de groupe et d'espacement. Vous avez spécifié 1 et 1 pour ceux-ci, évitant ainsi l'erreur. On dirait que ces arguments "facultatifs" ne sont pas réellement facultatifs.
@Cheeso, oui, il a été impliqué par l'utilisation de valeurs arbitraires, et vous avez parfaitement raison ... ils ne sont pas facultatifs, c'est un cas de mauvaise documentation dans la bibliothèque align.el code> bibliothèque.
@slomojo, de toute façon, merci beaucoup pour la pointe. Cela m'a aidé aussi.
BTW, ce serait assez cool si vous n'avez pas mis de bouchons dans vos réponses, à moins que vous n'ayez réellement l'intention de transmettre que vous criez. Acclamations ;)