Jak napisać tryb główny, który nie otwiera pliku, ale zapewnia widok na niego

9

Chciałbym napisać tryb główny do sprawdzania plików netCDF. Są to pliki binarne, które mogą mieć rozmiar wielu GB. Więc nie chcę ich otwierać w emacs.

Interakcja, o której myślę, jest następująca:

  1. Użytkownik otwiera plik netCDF jak każdy inny plik w emacsie.
  2. Program wiersza polecenia ( ncdump -h) jest wykonywany na pliku, a dane wyjściowe są interpretowane przez emacs.

Problem polega na tym, że wydaje się, że nie ma sposobu, aby zatrzymać emacsa przed faktycznym otwarciem pliku.

cpaulik
źródło
3
Ciekawy problem. Nie będzie można tego zrobić w trybie głównym, ponieważ działa zbyt późno: Emacs musi najpierw otworzyć plik, ponieważ może wybrać tryb główny na podstawie zawartości pliku (np -*-my-mode-*-.). Trzeba było wcześniej się podłączyć find-find-noselect, być może w miejscu, w którym teraz jest wyjątek dla katalogów.
Gilles „SO- przestań być zły”
4
Czy potrzebujesz tylko funkcji, która uruchamia proces i wysyła dane wyjściowe do określonego bufora (gdzie nazwa pliku jest argumentem, który użytkownik może wybrać)? W jaki inny sposób potrzebny byłby tryb główny, ponieważ normalnie oznacza to działanie na określonym buforze (np. Jaki jest cel trybu głównego, co on robi ...)? Oto link do instrukcji opisującej różne procesy, które można uruchomić za pomocą Emacsa: gnu.org/software/emacs/manual/html_node/elisp/…
lawlist
2
Początkiem byłoby użycie process-filelub call-processna takim pliku, przy użyciu ncdump -hitp.
Drew
2
Czy znasz pakiet vlf od elpa? Mam wrażenie, że ten pakiet robi dokładnie to, co próbujesz osiągnąć nie z plikami binarnymi, ale z plikami tekstowymi. Myślę, że możesz nauczyć się z tego pakietu, jak robić, co chcesz. Jeśli masz 64-bitowy emacs, to ograniczenia całkowite emacsa również nie dotyczą tego pakietu. Możesz zainstalować pakiet za pośrednictwem M-x package-install.
Tobias
1
Polecam spojrzeć jeszcze raz na sugestię @ Tobiasza. Nie dlatego, że chcesz funkcjonalność vlf, ale dlatego, że vlf potrzebuje takiej samej funkcjonalności, jakiej potrzebujesz, dlatego warto spojrzeć na to, jak to robi.
Stefan

Odpowiedzi:

1

Używam pakietu o nazwie vorbiscomment, którego teraz nie mogę znaleźć pod adresem URL w komentarzu nagłówka, i który nie pojawia się w * ELPA ani na EmacsWiki. Oto ten niedziałający adres URL:

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

W każdym razie pozwala edytować metadane znaczników dla (binarnych) plików audio OGG Vorbis, które brzmią koncepcyjnie podobnie do tego, czego chcesz. To naprawdę tylko proste opakowanie narzędzi wiersza polecenia.

Skopiowałem go do następującej treści:

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

Phil Hudson
źródło