Cómo escribir un modo principal que no abra el archivo pero proporcione una vista sobre él

9

Me gustaría escribir un modo principal para inspeccionar archivos netCDF. Estos son archivos binarios que pueden tener varios GB de tamaño. Así que no quiero abrirlos en emacs.

La interacción que tengo en mente es la siguiente:

  1. El usuario abre el archivo netCDF como cualquier otro archivo en emacs.
  2. Un programa de línea de comando ( ncdump -h) se ejecuta en el archivo y la salida es interpretada por emacs.

El problema es que parece que no hay forma de evitar que emacs realmente abra el archivo.

cpaulik
fuente
3
Interesante problema No podrá hacer esto desde el modo principal porque se ejecuta demasiado tarde: Emacs necesita abrir el archivo primero porque puede elegir el modo principal en función del contenido del archivo (por ejemplo -*-my-mode-*-). Tendría que conectar antes find-find-noselect, tal vez en el lugar donde ahora hay una excepción para los directorios.
Gilles 'SO- deja de ser malvado'
44
¿Solo necesita una función que ejecute un proceso y envíe la salida a un búfer particular (con el nombre de archivo como argumento que el usuario puede elegir)? ¿De qué otra manera necesitaría un modo mayor, ya que eso normalmente implica operar en un búfer particular (por ejemplo, cuál es el propósito del modo mayor, qué hace ...)? Aquí está el enlace al manual que describe varios procesos que pueden iniciarse con Emacs: gnu.org/software/emacs/manual/html_node/elisp/…
lawlist del
2
Un comienzo sería usar process-fileo call-processen un archivo así, usar ncdump -hetc.
Drew
2
¿Conoces el paquete vlf de elpa? Tengo la impresión de que este paquete hace exactamente lo que intenta lograr no con archivos binarios sino con archivos de texto. Creo que puede aprender de ese paquete cómo hacer lo que quiere. Si tiene un emacs de 64 bits, las limitaciones de los enteros de emacs tampoco son de importancia para este paquete. Puede instalar el paquete a través de M-x package-install.
Tobias
1
Le recomiendo que eche un vistazo a la sugerencia de @ Tobias No porque desee la funcionalidad de vlf, sino porque vlf necesita la misma funcionalidad que necesita, por lo que vale la pena ver cómo lo hace.
Stefan

Respuestas:

1

Uso un paquete llamado vorbiscomment, que ahora no puedo encontrar en la URL en su comentario de encabezado, y que no aparece en * ELPA o en EmacsWiki. Aquí está esa URL que no funciona:

http://users-phys.au.dk/harder/

De todos modos, le permite editar los metadatos de la etiqueta para los archivos de audio OGG Vorbis (binarios), que suena conceptualmente similar a lo que desea. Realmente es solo un contenedor simple alrededor de herramientas de línea de comandos.

Lo he copiado a la siguiente esencia:

https://gist.github.com/PhilHudson/4fc8f38a5dc2b39f256feddb0014041c

Phil Hudson
fuente