Comment écrire un mode majeur qui n'ouvre pas le fichier mais fournit une vue dessus

9

Je voudrais écrire un mode majeur pour inspecter les fichiers netCDF. Ce sont des fichiers binaires qui peuvent avoir plusieurs Go de taille. Je ne veux donc pas les ouvrir dans emacs.

L'interaction que j'ai en tête est la suivante:

  1. L'utilisateur ouvre le fichier netCDF comme tout autre fichier dans emacs.
  2. Un programme en ligne de commande ( ncdump -h) est exécuté sur le fichier et la sortie est interprétée par emacs.

Le problème est qu'il ne semble pas possible d'empêcher emacs d'ouvrir le fichier.

cpaulik
la source
3
Problème intéressant. Vous ne pourrez pas le faire à partir du mode principal car cela s'exécute trop tard: Emacs doit d'abord ouvrir le fichier car il peut choisir le mode principal en fonction du contenu du fichier (par exemple -*-my-mode-*-). Vous devez vous connecter plus tôt find-find-noselect, peut-être à l'endroit où il existe maintenant une exception pour les répertoires.
Gilles 'SO- arrête d'être méchant'
4
Avez-vous juste besoin d'une fonction qui exécute un processus et envoie la sortie à un tampon particulier (le nom de fichier étant un argument que l'utilisateur peut choisir)? De quelle autre manière auriez-vous besoin d'un mode majeur, car cela implique normalement d'opérer sur un tampon particulier (par exemple, quel est le but du mode majeur, que fait-il ...)? Voici le lien vers le manuel décrivant les différents processus qui peuvent être démarrés avec Emacs: gnu.org/software/emacs/manual/html_node/elisp/…
lawlist
2
Un début serait d'utiliser process-fileou call-processsur un tel fichier, en utilisant ncdump -hetc.
Drew
2
Connaissez-vous le package vlf d'elpa? J'ai l'impression que ce paquet fait exactement ce que vous essayez d'accomplir non pas avec des fichiers binaires mais avec des fichiers texte. Je pense que vous pouvez apprendre de ce package comment faire ce que vous voulez. Si vous avez un emacs 64 bits, les limitations entières d'emacs ne sont également pas concernées par ce package. Vous pouvez installer le package via M-x package-install.
Tobias
1
Je vous recommande de revoir la suggestion de @ Tobias. Non pas parce que vous voulez la fonctionnalité de vlf, mais parce que vlf a besoin de la même fonctionnalité que vous avez besoin, donc cela vaut la peine de voir comment il le fait.
Stefan

Réponses:

1

J'utilise un package appelé vorbiscomment, que je ne trouve plus à l'URL dans son commentaire d'en-tête, et qui n'apparaît pas dans * ELPA ou sur EmacsWiki. Voici cette URL qui ne fonctionne pas:

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

Quoi qu'il en soit, il vous permet de modifier les métadonnées de balise pour les fichiers audio (binaires) OGG Vorbis, ce qui semble conceptuellement similaire à ce que vous voulez. C'est vraiment juste un simple wrapper autour des outils de ligne de commande.

Je l'ai copié dans l'essentiel suivant:

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

Phil Hudson
la source