понедельник, 26 октября 2015 г.

Визуальные undo redo в Emacs

Концепция операций undo/redo кажется выверенной и отточенной многими годами, добавить туда что-то новое не возможно. Большинство редакторов впрочем и не пытаются, полностью сосредоточившись на редизайне кнопок в интерфейсе и добавлении новых шкурок. В Emacs'е же, попытки изменить устоявшуюся концепцию есть и на мой взгляд удачные.


Есть такой замечательный плагин undo-tree, он основан на том, что "undo/redo" в принципе являются частным случаем системы контроля версий. И в процессе редактирования текста периодически возникают "ветки", которые нужно показывать пользователям и дать возможность по ним "ходить".

Вот допустим написали мы "hello", потом откатились назад на пустую страницу и написали "word", теперь в большинстве редакторов никакими "ctrl+Z" откатиться до "hello" не возможно. А с этим плагином в Emacs сделать такое не сложно, вот как это выглядит:

Настройка в простейшем случае, проблем не вызывает:
(require 'undo-tree)
(global-undo-tree-mode)
После установки продолжают работать стандартные не визуальные "undo/redo". Но при необходимости всегда можно вызывать расширенное "дерево отмены" через "M-x undo-tree-visualize". Пользоваться им постоянно конечно не удобно, но когда понадобиться, не раз скажешь спасибо автору.

Подробнее про навигацию и расширенные возможности неплохо написано в документации.