2015-03-08 1 views
2

Как и внутри firefox, мы можем восстановить закрытую вкладку (буфер в случае Emacs). Кажется, это не должно быть слишком сложно написать, но прежде чем изобретать колесо, есть ли хороший, который люди написали, быстрый поиск в Google не принес удовлетворительных результатов.Есть ли плагин undo-close-buffer внутри Emacs

+0

Вы уже смотрели на встроенном 'desktop.el'? Вам не нужно автоматически открывать все, когда вы запускаете Emacs, если вы этого не хотите - это может быть интерактивный выбор, который вы делаете. Например, у меня есть пользовательская версия 'desktop.el', и у меня есть функция' desktop-read' на 'emacs-startup-hook' - я мог бы просто удалить крючок и вручную вызвать' desktop-read 'всякий раз, когда я хочу. – lawlist

+0

Я использую рабочий стол в течение многих лет, но, как я понимаю, все дело в восстановлении сеанса в последний раз? Но когда я просто закрыл буфер и хочу его вернуть, есть ли хороший способ? – user1961679

+0

Вы можете использовать «kill-buffer-hook» для добавления соответствующих данных в файл рабочего стола. Например, 'desktop.el' использует' kill-emacs-hook', и вы также будете использовать «kill-buffer-hook». – lawlist

ответ

1

Я не знаю о существовании такой функции. Но вы можете закодировать один, например, советовать kill-buffer.

Имейте булевский вариант, аналогичный delete-by-moving-to-trash. Прежде чем убить буфер, сохраните его соответствующую информацию (для ее воссоздания) для последующего поиска. Если вы хотите разрешить такое отмена для более чем одного буфера за раз (например, не только для последнего убитого), затем поместите сохраненную информацию на алист и т. Д.

Однако, какая именно информация необходима до save и восстановление данный буфер неясно - это зависит от конкретного буфера (по крайней мере, от его режима, но даже от других частей его истории/состояния).

Так что в общем случае это проблематично. Вероятно, вы можете придумать что-то работоспособное и полезное для некоторых ваших случаев использования, но просто помните, что, вероятно, нет хорошего общего ответа.

0

Это не совсем то, что вы описываете, но пакет recentf позволит вам открывать последние файлы. Это часть Emacs, поэтому нет пакета для установки. Добавьте это в ваш файл инициализации,

(require 'recentf) 
(recentf 1) 
(global-set-key (kbd "C-x R") 'recentf-open-files) 

, а затем, если вы закроете файл, вы можете нажать C-х R, чтобы увидеть список недавно открытых файлов, чтобы выбрать из.

Список файлов также сохраняется для recentf-save-file.


Единственная проблема в том, что не перемещает последний закрытый файл в верхней части списка - если это так можно назвать recentf-open-most-recent-file-1, который откроет этот файл, давая вам отменить близкую функцию файла.

Это может быть вопрос о перемещении файла в передней части списка в этой функции -

(defun recentf-track-closed-file() 
    "Update the recent list when a buffer is killed. 
That is, remove a non kept file from the recent list." 
    (and buffer-file-name 
     (recentf-remove-if-non-kept buffer-file-name))) 
Смежные вопросы