Крок 1: біг emacs -Q
Перше, що вам потрібно зробити, це запустити emacs без будь-яких налаштувань. Якщо ви зможете відтворити проблему у ванільному Emacs, це насправді може бути помилка в самому Emacs. Це рідко, але ми виключаємо це як перший крок.
Якщо ви запустите Emacs з командного рядка з -Q
прапором, тобто, emacs -Q
ви отримаєте голий або 'vanilla' emacs, не завантажуючи жодного з ваших локальних налаштувань. Чи все-таки виникає ваша проблема? Якщо так, перейдіть до пункту "Надання рецепту помилок".
Крок 1b: що робити, якщо проблема з пакетом?
Якщо ваша проблема стосується конкретного пакету, очевидно, ви не можете його відтворити, не завантажуючи цей пакет. Але ви хочете завантажити лише відповідний пакет, а не всю конфігурацію. Для цього запустіть emacs -Q
ще раз і підготуйте короткий сценарій, наприклад наступний:
(require 'package)
(setq package-load-list
'((package1 t)))
(package-initialize)
Замініть package1
назви пакета, який ви хочете завантажити. Якщо вам потрібно завантажити кілька пакетів, змініть сценарій відповідно:
(require 'package)
(setq package-load-list
'((package1 t)
(package2 t)
(package3 t)))
(package-initialize)
Щоб завантажити цей код, ви можете вставити його в *scratch*
буфер і зателефонувати M-x eval-buffer
. (або будь-який буфер, якщо в ньому немає іншого коду!).
У цей момент ви завантажили пакет (и) і просто пакет (и), які ви тестуєте. Якщо ви можете відтворити проблему зараз, перейдіть до пункту "Надання рецепту помилок".
Крок 2: Пошук помилки у вашому .emacs
Тепер ви підтвердили, що проблема виникає через щось у вашій конфігурації ("дзвінок надходить зсередини будинку!"). Ваша конфігурація може містити багато тисяч рядків і може завантажувати багато різних файлів. Щоб знайти проблему, ви зробите двійковий пошук, коментуючи половину коду за один раз, щоб звузити речі. 1
- Відкрийте звичайні emacs
emacs
, без -Q
можливості.
- Відкрийте свій конфігураційний файл (як правило,
~/.emacs
або .emacs.d/init.el
, якщо ви не можете його спробувати C-h v user-init-file
)
- Виберіть першу половину файлу:
C-space
щоб встановити позначку, прокрутіть наполовину, щоб розширити область
- Прокоментуйте вибраний регіон:
M-;
і збережіть файл
- Відкрийте новий
emacs
(ваш тестовий emacs ), залишивши перший emacs запущеним. test emacs прочитає зменшену версію вашого конфігурації.
- Спробуйте відтворити проблему в тестових emacs
- Якщо ви не можете його відтворити, закрийте тестові emacs , а в оригіналі emacs
undo
- коментар C-/
, і прокоментуйте половину коду, що залишився. Відкрийте новий тестовий emacs і повторіть спробу.
- Якщо ви можете відтворити проблему, прокоментуйте половину коду, що залишився, і подивіться, чи проблема не зникає.
- Повторіть цей процес, поки не знайдете найменший біт своєї конфігурації, необхідний для відтворення проблеми.
Якщо ваша проблема пов’язана з певним пакетом, вам, звичайно, доведеться залишити код, який завантажує цей пакет, без коментарів.
Якщо ваш конфігураційний файл завантажує інші файли, ви можете в кінцевому підсумку розширити пошук і на ці файли.
На даний момент ви, можливо, виявили, що проблема пов’язана лише з рядком або двома кодами. Ви навіть можете самі це виправити. Якщо так, вітаю, ви щось дізналися! В іншому випадку перейдіть до третього кроку.
Крок 3: Надання рецепту помилок
На цьому етапі ви зможете надати детальний рецепт помилок, щоб розмістити тут. Він повинен включати:
- Ваша версія Emacs (ви можете отримати це у Emacs за допомогою
M-x emacs-version
- Ваша операційна система (дистрибутив Windows #, Mac, Linux)
- Версія пакету, з яким ви боретеся, якщо це застосовується
- Конкретні кроки, необхідні для демонстрації проблеми, включаючи те, що ви очікуєте , і що насправді відбувається .
Наприклад, я можу опублікувати таке запитання:
У мене проблеми із супер-режимом. Під час використання я знімаю M-x sm-compile-code
з мого рахунку PayPal.
Кроки до відтворення:
Завантажити суперрежим:
(require 'package)
(setq package-load-list
'((super-mode t)))
(package-initialize)
- відкрити новий файл з
C-x C-f my-code
- введіть рядок коду:
10 goto 10
- дзвінок
M-x sm-compile-code
Я очікую, що це викликає суперкомпілятор і компілює мою програму. Натомість я бачу повідомлення в мінібуфері "100 доларів переведено з paypal автору супер-режиму"
GNU Emacs 25.1.50.3 Суперрежим
Debian Linux
версії 3.1415
1 Пакет помилок Hunter може допомогти вам у цьому ((напів-) автоматично розділяє ваш файл init.
emacs -Q
з першим кроком. Я написав це як щось, щоб пов’язати ці питання як загальну допомогу для нових користувачів.