Pregunta:
Tengo un modo Emacs. Tiene un defgroup
y varios defcustom
s. Digamos:
(defgroup some-group nil
"Some group"
:prefix "prefix-"
:group 'languages)
(defcustom some-option-1 t
"Option 1"
:tag "Option 1?"
:type 'boolean
:group 'some-group)
(defcustom some-option-2 t
"Option 2"
:tag "Option 2?"
:type 'boolean
:group 'some-group)
(defcustom some-option-3 t
"Option 3"
:tag "Option 3?"
:type 'boolean
:group 'some-group)
Todo funciona bien, excepto que el orden en el que aparecen en el búfer de personalización mostrado por Mx customize
no es el orden en que aparecen los defcustom
s en la fuente, ni alfabéticamente por su identificador, ni alfabéticamente por su :tag
– o cualquier otro patrón I He podido averiguarlo hasta ahora. Por ejemplo, las opciones anteriores pueden terminar en la interfaz de usuario como 3, 1, 2. Pero me gustaría que aparecieran como 1, 2, 3.
Lo mismo parece cierto para el orden de subgrupos.
¿Hay alguna forma de hacer que aparezcan en el orden que especifique? Si es así, ¿cómo?
(Esto con Emacs 24.3, en caso de que sea relevante).
Respuesta:
En resumen, cuando los defcustom
s se ordenan alfabéticamente [^ 1], es por su nombre de identificador, nunca por su :tag
(si corresponde).
Puede usar :tag
porque su nombre de identificador es ideal para el código, pero menos en la interfaz de usuario de personalización. Una motivación relacionada es que :prefix
ya no tiene ningún efecto [^ 2]. Pero si la etiqueta se ordena de manera diferente al nombre del identificador, es posible que se confunda, como yo.
[^ 1]: como señaló @angus, el orden de personalización está en última instancia bajo el control del usuario, en una personalización para búferes personalizados: Help / Customize / Custom Buffer / Custom Buffer Sort Automatically: "Whether to sort customization groups alphabetically in Custom buffer."
.
[^ 2]: Comentario no en los documentos GNU que leí originalmente, pero que encontré aquí :
La función de descarte de prefijo está actualmente desactivada, lo que significa que: el prefijo actualmente no tiene ningún efecto. Hicimos esto porque descubrimos que descartar los prefijos especificados a menudo conducía a confundir los nombres de las opciones. Esto sucedió porque las personas que escribieron las definiciones de defgroup para varios grupos agregaron: prefijo palabras clave siempre que tengan sentido lógico, es decir, siempre que las variables de la biblioteca tengan un prefijo común.
Para obtener buenos resultados con: prefix, sería necesario verificar los efectos específicos de descartar un prefijo en particular, dados los elementos específicos de un grupo y sus nombres y documentación. Si el texto resultante no es claro, entonces: prefix no debe usarse en ese caso.
Debería ser posible volver a verificar todos los grupos de personalización, eliminar las especificaciones del prefijo: que dan resultados poco claros y luego volver a activar esta función, si alguien quisiera hacer el trabajo.