Есть некое приложение A, которое обрабатывает данные и возвращает отчёт размером от 100Mb. Суть приложения A чем-то напоминает wireshark: оно что-то захватывает и парсит.
Отчёт, соответственно, представляет собой некие структурированные данные. Формат вывода приложения A можно сделать каким угодно, главное подружить его с Emacs.
Emacs будет выступать умным просмотрщиком отчёта (продолжая аналогию — мордой для вайршарка), при этом хотелось бы, чтобы представление можно было настраивать (разного рода фильтрация и т.п.).
Вопрос архитектурный, как делать, чтобы минимизировать оверхед:
1) Приложение A выдаёт отчёт в виде S-Exp в process buffer (#<buffer *A*>), за презентацию отчёта полностью отвечает Emacs (есть отдельные буффера с неким описанием презентации #<buffer *presentation 1*>, #<buffer *presentation 2*>, ..., где описывается формат, фильтрация и т.п.) и буфферы, непосредственно видимые пользователю.
+-------------------- Emacs ------------------------------------+
| |
| |
| |
+-----+ | /--->#<buffer *presentation 1*> -> #<buffer A1> |
| | | / |
| A +---> #buffer *A* ----->#<buffer *presentation 2*> -> #<buffer A2> |
| | | \ |
+-----+ | ---->#<buffer *presentation 3*> -> #<buffer A3> |
| |
| |
| |
+---------------------------------------------------------------+
2) В emacs есть те же #<buffer *presentation N*>, но всю работу по фильтрации, форматированию и раскраске текста выполняет процесс A, emacs только показывает его выхлоп.
При изменении #<buffer *presentation N*> A запускается заново.
Склоняюсь ко второму варианту, так как перенос сложной логики в emacs не желателен, но с трудом представляю overhead такого решения, а так же возможность встраивания в выхлоп таких вещей как кликабельные ссылки.