История изменений
Исправление Zubok, (текущая версия) :
Если честно, то не могу полностью погрузиться в твою проблему. Может, оверлеи использовать? Ты можешь создать оверлей с текстом, покрывающий конкретный регион. А потом при помощи overley-put в этот оверлей, в его свойство modification-hooks положить список функций с четырьмя аргументами (см. док-цию), которые вызываются, если ты пытаешься изменить текст внутри оверлея.
Скопируй то, что ниже в *scratch*, в самое начало буфера напиши для теста defun, потом последовательно eval на эти конструкции и попробуй потом удалить оверлей - увидишь именно то поведение, которое хочешь.
(defun ov-rem (a b c d)
(remove-overlays))
(setq ov (make-overlay 1 6))
(overlay-put ov 'display "∃ƒ")
(overlay-put ov 'modification-hooks '(ov-rem))
Я это ну очень быстро накидал - нет времени сейчас. в функции ov-rem можешь делать действия с нужным оверлеем - данные о нем передаются через параметры. Я тупо все оверлеи удаляю из буфера.
Остается открытым вопрос замены defun в оверлей на лету.
Исправление Zubok, :
Если честно, то не могу полностью погрузиться в твою проблему. Может, оверлеи использовать? Ты можешь создать оверлей с текстом, покрывающий конкретный регион. А потом при помощи overley-put в этот оверлей, в его свойство modification-hooks положить список функций с четырьмя аргументами (см. док-цию), которые вызываются, если ты пытаешься изменить текст внутри оверлея.
Скопируй то, что ниже в *scratch*, в самое начало буфера напиши для теста defun, потом последовательно eval на эти конструкции и попробуй потом удалить оверлей - увидишь именно то поведение, которое хочешь.
(defun ov-rem (a b c d)
(remove-overlays))
(setq ov (make-overlay 1 6))
(overlay-put ov 'display"∃ƒ")
(overlay-put ov 'modification-hooks '(ov-rem))
Я это ну очень быстро накидал - нет времени сейчас. в функции ov-rem можешь делать действия с нужным оверлеем - данные о нем передаются через параметры. Я тупо все оверлеи удаляю из буфера.
Остается открытым вопрос замены defun в оверлей на лету.
Исходная версия Zubok, :
Если честно, то не могу полностью погрузиться в твою проблему. Может, оверлеи использовать? Ты можешь создать оверлей с текстом, покрывающий конкретный регион. А потом при помощи overley-put в этот оверлей, в его свойство modification-hooks положить список функций с четырьмя аргументами (см. док-цию), которые вызываются, если ты пытаешься изменить текст внутри оверлея.
Скопируй то, что ниже в *scratch*, в самое начало буфера напиши для теста defun, потом последовательно eval на эти конструкции и попробуй потом удалить оверлей - увидишь именно то поведение, которое хочешь.
(defun ov-rem (a b c d)
(remove-overlays))
(setq ov (make-overlay 1 6))
(overlay-put ov 'display
(format "∃ƒ"))
(overlay-put ov 'modification-hooks '(ov-rem))
Я это ну очень быстро накидал - нет времени сейчас. в функции ov-rem можешь делать действия с нужным оверлеем - данные о нем передаются через параметры. Я тупо все оверлеи удаляю из буфера.
Остается открытым вопрос замены defun в оверлей на лету.