Как написать .emacs из Emacs, когда я удалил .emacs - PullRequest
6 голосов
/ 31 августа 2011

У меня открыт Emacs, но случайно я удалил файл .emacs, который он прочитал при запуске.Это составляет около 15 лет настройки.(Я знаю, я знаю, резервные копии.)

Есть ли способ заставить Emacs записать файл .emacs, который я удалил?

Я бы обычно не спрашивал такого отстойвопрос по SO, но я знаю, что у меня есть только один день или около того до окончания этой сессии Emacs.

Ответы [ 4 ]

5 голосов
/ 31 августа 2011

Как рекомендует айкостер, вы можете попробовать инструмент для восстановления файлов или криминалистику, например The Sleuth Kit . Или, и это может показаться сумасшедшим, если вы работаете в Unix-подобной системе, вы можете выполнять поиск через устройство с необработанным диском (на Mac, на котором я сейчас работаю, это будет / dev / rdisk1). Серьезно, несколько раз я был слишком ленив, чтобы запустить полнофункциональный инструмент восстановления, но вместо этого использовал что-то вроде sudo less -f /dev/rdisk1, искал строку, которая, как я знал, была в файле (global-set-key, кто-нибудь?), И преуспел в восстановление исходного содержимого файла.

5 голосов
/ 31 августа 2011

Если у вас включена функция резервного копирования Emacs, у вас должна быть копия вашего предпоследнего файла .emacs в ~ / .emacs ~. Если это так, просто переименуйте его в «.emacs», и вы получите файл .emacs со всеми, кроме ваших последних изменений. Даже если в настоящее время у вас не включено резервное копирование, у вас все равно может быть значительная часть файла .emacs в последней резервной копии файла. Вам также следует обратить внимание на значение переменной «backup-directory-alist» - оно указывает расположение (а) для файлов резервных копий, которые должны храниться, если не используется значение по умолчанию (тот же каталог, что и у измененного файла).

Иначе как хороша твоя память ...; -)

РЕДАКТИРОВАТЬ: поскольку у вас нет резервной копии вашего файла .emacs, но у вас есть работающий экземпляр Emacs, который был запущен с этим файлом .emacs, еще одна вещь, которую вы можете сделать, это сохранить все пользовательские настройки, которые были бы определено в вашем файле .emacs. Для этого сделайте что-то вроде:

(setq custom-file "/my/home/directory/.emacs-custom.el")
(custom-save-all)

Затем вы можете создать новый файл .emacs и добавить в него следующие строки:

(setq custom-file "/my/home/directory/.emacs-custom.el")
(load custom-file)

Это как минимум восстановит некоторые настройки пользовательских переменных, которые были в вашем файле .emacs.

1 голос
/ 31 августа 2011

Я не знаю, как заставить Emacs предоставить исходный файл .emacs, но вы, безусловно, можете запросить загруженную функцию и переменные символы и получить их значения.

Это было бы скореемного работы, но я думаю, что в теории вы должны быть в состоянии получить хороший кусок этих данных в той или иной форме, если вам удалось отфильтровать все это к тому, что вы знали, было вашим.

Для оцененныхfunctions, (symbol-function 'SYMBOL) вернет (менее читабельное) определение предоставленной функции.Затем вы можете использовать (fset 'SYMBOL VALUE), где VALUE - результат вызова symbol-function, чтобы определить эту функцию в новом файле .emacs.Это даст вам подход к восстановлению определенных вами функций.

Вы также можете посмотреть на: Как напечатать все определенные переменные в emacs?

Это очень неполный стартер, но с учетом временных ограничений я публикую и отмечаю его вики сообщества, если кто-то захочетработать с ним.

Как сделать сброс состояния приложения надежно восстанавливаемым способом, было бы отличным началом, если текущий сеанс определенно будет уничтожен (или даже если это не так,на самом деле, для защиты от сбоев или других сбоев).

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

1 голос
/ 31 августа 2011

Emacs оценивает ваш файл .emacs, после чего он закрывается.Поэтому, в принципе, вы не можете получить свой .emacs обратно.

Решением может быть использование приложения для восстановления файлов.Шансы вашего .emacs на вашем жестком диске довольно хорошие.

Поскольку большинство таких программ не могут определить имя файла или имя каталога удаленного файла, вы должны знать содержимое вашего .emacs.

Затем вы можете восстановить все в настоящее время удаленные файлы в некоторой папке и рекурсивно искать содержимое вашего .emacs.

Этот процесс может занять очень много времени.Вы должны решить, стоит ли это ваших усилий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...