Cara menulis mode utama yang tidak membuka file tetapi memberikan pandangan tentang itu

9

Saya ingin menulis mode utama untuk memeriksa file netCDF. Ini adalah file biner yang berukuran beberapa GB. Jadi saya tidak ingin membukanya di emacs.

Interaksi yang ada dalam pikiran saya adalah sebagai berikut:

  1. Pengguna membuka file netCDF seperti file lainnya di emacs.
  2. Program baris perintah ( ncdump -h) dijalankan pada file dan output ditafsirkan oleh emacs.

Masalahnya adalah sepertinya tidak ada cara untuk menghentikan emacs dari benar-benar membuka file.

cpaulik
sumber
3
Masalah menarik. Anda tidak akan dapat melakukan ini dari mode utama karena sudah terlambat: Emacs perlu membuka file terlebih dahulu karena dapat memilih mode utama berdasarkan konten file (misalnya -*-my-mode-*-). Anda harus menghubungkan sebelumnya find-find-noselect, mungkin di tempat di mana sekarang ada pengecualian untuk direktori.
Gilles 'SANGAT berhenti menjadi jahat'
4
Apakah Anda hanya memerlukan fungsi yang menjalankan proses dan mengirimkan output ke buffer tertentu (dengan nama file menjadi argumen yang dapat dipilih pengguna)? Dengan cara apa lagi Anda memerlukan mode-utama, karena itu biasanya berarti beroperasi pada buffer tertentu (misalnya, apa tujuan mode-utama, apa fungsinya ...)? Berikut ini tautan ke manual yang menjelaskan berbagai proses yang dapat dimulai dengan Emacs: gnu.org/software/emacs/manual/html_node/elisp/…
hukum
2
Awal akan menggunakan process-fileatau call-processpada file seperti itu, menggunakan ncdump -hdll.
Drew
2
Apakah Anda tahu paket vlf dari elpa? Saya mendapat kesan bahwa paket ini tidak persis melakukan apa yang Anda coba capai bukan dengan file biner tetapi dengan file teks. Saya pikir Anda dapat belajar dari paket itu bagaimana melakukan apa yang Anda inginkan. Jika Anda memiliki emacs 64-bit, maka batasan-integer emacs juga tidak menjadi perhatian dengan paket ini. Anda dapat menginstal paket melalui M-x package-install.
Tobias
1
Saya sarankan Anda melihat lagi saran @ Tobias. Bukan karena Anda menginginkan fungsionalitas vlf, tetapi karena vlf membutuhkan fungsionalitas yang sama dengan yang Anda butuhkan, maka ada baiknya melihat bagaimana ia menjalankannya.
Stefan

Jawaban:

1

Saya menggunakan paket yang disebut vorbiscomment, yang sekarang tidak dapat saya temukan di URL di komentar tajuknya, dan yang tidak muncul di * ELPA atau di EmacsWiki. Inilah URL yang tidak berfungsi:

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

Bagaimanapun, ini memungkinkan Anda mengedit metadata tag untuk file audio OGG Vorbis (biner), yang secara konseptual mirip dengan apa yang Anda inginkan. Ini benar-benar hanya pembungkus sederhana di sekitar alat baris perintah.

Saya sudah menyalinnya ke intisari berikut:

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

Phil Hudson
sumber