В ситуации, когда Emacs ведет себя не так, как я хочу, что я могу сделать, чтобы устранить проблему? Какие шаги я могу предпринять, чтобы найти и устранить проблему самостоятельно?
Или, в противном случае, как я могу собрать полезную информацию, чтобы люди, находящиеся здесь (или в списке рассылки или на других форумах), могли помочь мне с моей проблемой?
Мой Emacs включает в себя множество пакетов, коллекцию фрагментов, копируемых и вставляемых (или убиваемых и выдергиваемых) со всего интернета, и мой собственный elisp, некоторые из которых я не помню, писал или больше не понимаю. Есть ли способ разобраться во всех этих осложнениях?
emacs -Q
в качестве первого шага. Я написал это как нечто, связывающее эти вопросы с общей справкой для новых пользователей.Ответы:
Шаг 1: бег
emacs -Q
Первое, что вам нужно сделать, это запустить emacs без каких-либо настроек. Если вы можете воспроизвести проблему в ванильном Emacs, это может быть ошибка в самом Emacs. Это редко, но мы исключаем это как первый шаг.
Если вы запустите Emacs из командной строки с
-Q
флагом, т. Е.emacs -Q
Вы получите чистый или «ванильный» emacs без загруженных локальных настроек. Ваша проблема все еще возникает? Если это так, перейдите к «Предоставление рецепта ошибки».Шаг 1б: что если проблема с пакетом?
Если ваша проблема связана с конкретным пакетом, то, очевидно, вы не сможете воспроизвести его без загрузки этого пакета. Но вы хотите загрузить только соответствующий пакет, а не всю вашу конфигурацию. Для этого
emacs -Q
снова запустите и подготовьте короткий скрипт, такой как следующий:Замените
package1
на имя пакета, который вы хотите загрузить. Если вам нужно загрузить несколько пакетов, измените скрипт соответствующим образом:Чтобы загрузить этот код, вы можете вставить его в
*scratch*
буфер и вызватьM-x eval-buffer
. (или любой буфер, если в нем нет другого кода!).На данный момент вы загрузили пакет (ы) и только те пакеты, которые вы тестируете. Если вы можете воспроизвести проблему сейчас, перейдите к разделу «Предоставление рецепта ошибки».
Шаг 2: Нахождение ошибки в вашем
.emacs
Теперь вы подтвердили, что проблема связана с чем-то в вашей конфигурации («звонок поступает из дома!»). Ваша конфигурация может быть длиной в несколько тысяч строк и может загружать много разных файлов. Чтобы найти проблему, вы выполните бинарный поиск, закомментируя половину кода за раз, чтобы сузить круг. 1
emacs
, без-Q
опции.~/.emacs
или.emacs.d/init.el
, если вы не можете найти его, попробуйтеC-h v user-init-file
)C-space
чтобы установить метку, прокрутите вниз наполовину, чтобы расширить областьM-;
и сохраните файлemacs
(ваш тестовый emacs ), оставив первый запущенный emacs. Тест Emacs будет читать сокращенную версию вашего конфига.undo
оставьте комментарийC-/
и закомментируйте половину оставшегося кода. Откройте новый тестовый emacs и попробуйте снова.Если ваша проблема связана с конкретным пакетом, вам, конечно, придется оставить код, загружающий этот пакет, без комментариев.
Если ваш конфигурационный файл загружает другие файлы, вы можете расширить поиск и на эти файлы.
В этот момент вы, возможно, обнаружили, что проблема связана с одной или двумя строками кода. Вы можете даже быть в состоянии исправить это самостоятельно. Если так, поздравляю, вы чему-то научились! В противном случае перейдите к третьему шагу.
Шаг 3: Предоставление рецепта ошибки
На данный момент, вы должны быть в состоянии предоставить подробный рецепт ошибки, чтобы опубликовать здесь. Он должен включать в себя:
M-x emacs-version
Например, я мог бы опубликовать такой вопрос:
1 Пакет Bug Hunter может помочь вам (полу) автоматически разделить ваш файл инициализации.
источник