LINUX.ORG.RU

Проектирование Elisp модуля

 ,


0

1

Есть некое приложение 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 такого решения, а так же возможность встраивания в выхлоп таких вещей как кликабельные ссылки.

отчёт размером от 100Mb

emacs будет тормозить
vim, по-моему тоже(если только не открыть файл в бинарном режиме)

Bad_ptr ★★★★★
()
Ответ на: комментарий от Bad_ptr

Нет, не будет. Приложение А уже и так работает, для его выхлопа даже есть font-lock раскрашивалка. Всё летает, но не радует, что фильтрация сейчас делается обычным occur — это неудобно.

good_riddance
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.