W sytuacji, gdy Emacs nie zachowuje się tak, jak chcę, co mogę zrobić, aby rozwiązać problem? Jakie kroki mogę podjąć, aby samemu znaleźć i naprawić problem?
Lub, w przeciwnym razie, w jaki sposób mogę zebrać przydatne informacje, aby ludzie tutaj (lub na liście mailingowej lub na innych forach) mogli mi pomóc z moim problemem?
My Emacs zawiera wiele paczek, zbiór fragmentów kopiowanych i wklejanych (lub zabijanych i szarpanych) z całego Internetu oraz mój własny elips, z których niektórych nie pamiętam pisania ani już nie rozumiem. Czy istnieje sposób na zrozumienie tych wszystkich komplikacji?
emacs -Q
jako pierwszy krok. Napisałem to jako coś do połączenia tych pytań z ogólną pomocą dla nowych użytkowników.Odpowiedzi:
Krok 1: bieganie
emacs -Q
Pierwszą rzeczą, którą musisz zrobić, to uruchomić emacsa bez żadnych dostosowań. Jeśli możesz odtworzyć problem w waniliowym Emacsie, może to być błąd w samym Emacsie. To rzadkie, ale wykluczamy to jako pierwszy krok.
Jeśli uruchomisz Emacsa z wiersza poleceń z
-Q
flagą, tzn.emacs -Q
Dostaniesz goły lub „waniliowy” emacs, bez załadowania żadnych lokalnych dostosowań. Czy Twój problem nadal występuje? Jeśli tak, przejdź do „Zapewnienia przepisu na błąd”.Krok 1b: Co jeśli problem dotyczy pakietu?
Jeśli twój problem dotyczy konkretnego pakietu, to oczywiście nie możesz go odtworzyć bez załadowania tego pakietu. Ale chcesz załadować tylko odpowiedni pakiet, a nie całą konfigurację. Aby to zrobić, uruchom
emacs -Q
ponownie i przygotuj krótki skrypt, taki jak:Zamień
package1
na nazwę pakietu, który chcesz załadować. Jeśli musisz załadować wiele pakietów, odpowiednio zmodyfikuj skrypt:Aby załadować ten kod, możesz go wkleić do
*scratch*
bufora i wywołaćM-x eval-buffer
. (lub dowolny bufor, o ile nie ma w nim żadnego innego kodu!).W tym momencie załadowałeś pakiety, a tylko pakiety, które testujesz. Jeśli możesz teraz odtworzyć problem, przejdź do „Zapewnianie przepisu na błąd”.
Krok 2: Znalezienie błędu w twoim
.emacs
Potwierdziłeś, że problem pochodzi z czegoś w twojej konfiguracji („połączenie przychodzi z domu!”). Twoja konfiguracja może mieć wiele tysięcy linii i może ładować wiele różnych plików. Aby znaleźć problem, przeszukujesz dane binarne, komentując połowę kodu na raz, aby zawęzić listę. 1
emacs
, bez-Q
opcji.~/.emacs
lub.emacs.d/init.el
, jeśli nie możesz go znaleźć, spróbujC-h v user-init-file
)C-space
aby ustawić znak, przewiń w dół do połowy, aby rozszerzyć regionM-;
i zapisz plikemacs
( testowy emacs ), pozostawiając uruchomione pierwsze emacs. test emacs odczyta zredukowaną wersję twojej konfiguracji.undo
skomentujC-/
i skomentuj połowę pozostałego kodu. Otwórz nowy emac testowy i spróbuj ponownie.Jeśli twój problem dotyczy konkretnego pakietu, oczywiście musisz zostawić kod, który ładuje ten pakiet, bez komentarza.
Jeśli plik konfiguracyjny ładuje inne pliki, możesz również rozszerzyć wyszukiwanie na te pliki.
W tym momencie być może zauważyłeś, że problem wynika tylko z jednej lub dwóch linii kodu. Być może będziesz w stanie to naprawić samodzielnie. Jeśli tak, gratulacje, nauczyłeś się czegoś! W przeciwnym razie przejdź do kroku trzeciego.
Krok 3: Zapewnienie przepisu na błąd
W tym momencie powinieneś być w stanie podać szczegółowy przepis na błąd, aby opublikować tutaj. Powinien obejmować:
M-x emacs-version
Na przykład mogę opublikować takie pytanie:
1 Pakiet Bug Hunter może ci w tym pomóc (częściowo) automatycznie podzielony plik init.
źródło