Como escrever um modo principal que não abre o arquivo, mas fornece uma visão dele

9

Eu gostaria de escrever um modo principal para inspecionar arquivos netCDF. Esses são arquivos binários que podem ter vários GB de tamanho. Então, eu não quero abri-los no emacs.

A interação que tenho em mente é a seguinte:

  1. O usuário abre o arquivo netCDF como qualquer outro arquivo no emacs.
  2. Um programa de linha de comando ( ncdump -h) é executado no arquivo e a saída é interpretada pelo emacs.

O problema é que parece não haver maneira de impedir o emacs de abrir o arquivo.

cpaulik
fonte
3
Problema interessante. Você não poderá fazer isso no modo principal, porque isso é muito tarde: o Emacs precisa abrir o arquivo primeiro, porque pode escolher o modo principal com base no conteúdo do arquivo (por exemplo -*-my-mode-*-). Você precisaria se conectar mais cedo find-find-noselect, talvez no local onde agora há uma exceção para diretórios.
Gilles 'SO- stop be evil'
4
Você só precisa de uma função que execute um processo e envie a saída para um buffer específico (com o nome do arquivo sendo um argumento que o usuário pode escolher)? De que outra maneira você precisaria de um modo principal, uma vez que isso normalmente implica operar em um buffer específico (por exemplo, qual é o objetivo do modo principal, o que ele faz ...)? Aqui está o link para o manual que descrevem vários processos que podem ser iniciados com o Emacs: gnu.org/software/emacs/manual/html_node/elisp/...
lawlist
2
Um começo seria usar process-fileou call-processem um arquivo desse tipo, usando ncdump -hetc.
Drew
2
Você conhece o pacote vlf da elpa? Tenho a impressão de que este pacote faz exatamente o que você tenta realizar, não com arquivos binários, mas com arquivos de texto. Eu acho que você pode aprender com esse pacote como fazer o que quiser. Se você possui um emacs de 64 bits, as limitações de número inteiro do emacs também não são motivo de preocupação para este pacote. Você pode instalar o pacote via M-x package-install.
Tobias
11
Eu recomendo que você dê uma nova olhada na sugestão de @ Tobias. Não porque você deseja a funcionalidade do vlf, mas porque o vlf precisa da mesma funcionalidade que você precisa, vale a pena ver como ele faz isso.
Stefan

Respostas:

1

Eu uso um pacote chamado vorbiscomment, que agora não consigo encontrar no URL no comentário do cabeçalho e que não aparece no * ELPA ou no EmacsWiki. Aqui está o URL que não funciona:

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

De qualquer forma, ele permite editar os metadados da tag para arquivos de áudio OGG Vorbis (binários), que soam conceitualmente semelhantes ao que você deseja. É realmente apenas um invólucro simples em torno das ferramentas de linha de comando.

Eu copiei para a seguinte essência:

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

Phil Hudson
fonte