major-mode – ¿Cómo puedo hacer que emacs ignore parte del nombre del archivo al decidir el modo principal?

Pregunta:

Si tiene un archivo cifrado con GPG, digamos notes.org.gpg , emacs se da cuenta de que el modo principal debe configurarse en org-mode . Esto se aplica en general a cualquier modo principal; no es necesario modificar la auto-mode-alist de auto-mode-alist para cada modo principal para admitir esa extensión .gpg .

Me gustaría tener mi propia extensión adicional, digamos .~bkp~ y que emacs ignore eso al determinar el modo principal. Actualmente, si tengo un archivo llamado notes.org.~bkp~ , el org-mode no se configura automáticamente.

files.el en files.el , epa*.el , busqué en epa*.el , pero no pude averiguar cómo emacs está ignorando el .gpg en los nombres de los archivos.

¿Qué función puedo recomendar probablemente o una variable puedo modificar para admitir mis extensiones adjuntas personalizadas?

Respuesta:

La entrada relevante en auto-mode-alist es esta:

 ([...] ("\\.gpg\\(~\\|\\.~[0-9]+~\\)?\\'" nil epa-file) [...])

Y aquí está la documentación que describe lo que está sucediendo:

auto-mode-alist es una variable definida en files.el .

Esta variable puede ser peligrosa si se usa como una variable local de archivo.

Documentación: una lista de patrones de nombre de archivo frente a las correspondientes funciones del modo principal. Cada elemento se parece a (REGEXP . FUNCTION) O (REGEXP FUNCTION NON-NIL) . (NON-NIL significa cualquier cosa que no sea nil; el valor no importa). Visitar un archivo cuyo nombre coincide con REGEXP especifica FUNCTION como la función de modo a usar. FUNCTION llamará a FUNCTION , a menos que sea nil .

Si el elemento tiene la forma (REGEXP FUNCTION NON-NIL) , luego de llamar a FUNCTION (si no es nil ), eliminamos el sufijo que coincide con REGEXP y buscamos en la lista otra coincidencia.

Las extensiones cuya FUNCTION es archive-mode también deben aparecer en auto-coding-alist con no-conversion sistema de codificación no-conversion .

Consulte también interpreter-mode-alist , que detecta modos de script ejecutables según los intérpretes que especifican para ejecutar, y magic-mode-alist , que determina modos según el contenido del archivo.

[…]

¡Ahí vas!

(add-to-list 'auto-mode-alist '("\\.bkp\\(~[0-9_]+~\\)\\'" nil backup-file))

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım