Przejrzałem moje pliki konfiguracyjne i chciałem trochę wyczyścić.
Zrozumiałem, with-eval-after-load
że jego ciało zostanie ocenione zaraz po załadowaniu powiązanego pakietu. Oczyszczając moje pliki konfiguracji i dzieląc je jeszcze bardziej, chciałem dołączyć każdą konfigurację pakietu with-eval-after-load
. Wszystko poszło zgodnie z oczekiwaniami, dopóki nie załączyłem konfiguracji dla helm
i helm-projectile
.
Oto, co miałem na myśli ( lisp / init-helm.el ):
(with-eval-after-load 'helm
(setq helm-mode-line-string "")
(add-to-list 'helm-sources-using-default-as-input 'helm-source-man-pages)
(define-key global-map (kbd "C-c m") 'helm-imenu)
(define-key global-map (kbd "C-x b") 'helm-buffers-list))
(with-eval-after-load 'helm-command
(global-set-key (kbd "M-x") 'helm-M-x))
(with-eval-after-load 'helm-projectile
(helm-projectile-on))
Po ponownym uruchomieniu Emacsa pojawia się problem z rozmiarem okna:
Oto jak zmieniam rozmiar mojego okna:
(set-frame-parameter nil 'fullscreen 'fullboth)
Zgaduję, że niewłaściwie używam with-eval-after-load
, w jaki sposób można zdezynfekować jego konfigurację Emacsa i upewnić się, że nic się nie zepsuje bez względu na to, jaki pakiet jest zainstalowany?
with-eval-after-load
aby zawinąć wszystkie moje dostosowania związane z pakietami. Potem zobaczyłem światło i zacząłem używaćuse-package
.(package-initialize)
i zastąpiłem go,(require 'use-package)
ale dostanę Błąd pliku: nie można otworzyć pliku ładowania, nie ma takiego pliku lub katalogu, użyj pakietu podczas ponownego uruchamiania Emacsa. A jednak, kiedy Emacs zaczął, mogę ewaluować(require 'use-package)
bez problemu. Wreszcie nawet próbowałemwith-eval-after-load
, wciąż ten sam błąd. Plik Readme nie jest zbyt jasny w kwestii instalacjiuse-package
podczas korzystania z pakietów z pliku package.el..emacs
, najlepiej uproszczoną wersję, która pokazuje problem z jak najmniejszą liczbą wierszy i jak najmniejszą liczbą zewnętrznych pakietów. Prawdopodobnie ma to związek z czasem konfiguracji ramki w porównaniu do obciążenia pakietu podczas uruchamiania . Ale bez zobaczenia twojego kodu niewiele możemy zrobić. Powiedz nam także, której wersji Emacsa używasz.Odpowiedzi:
with-eval-after-load
Dużo używam , głównie do dodawania lub usuwania elementów do lub z list po ocenie wartości domyślnych. W ten sposób nie muszę śledzić zmian wartości domyślnych.Jeśli chodzi o problem z
helm
inicjalizacją, dokumentacja zaleca, aby(require 'helm-config)
był obecny w twojejinit.el
zależności lub w jej zależnościach.Przekonałem się, że łatwiej jest po prostu wymagać
helm-config
podczas inicjalizacji, niż polegaćautoload
, zwłaszcza, że i tak ładowałbym ją niemal natychmiast.źródło
use-package
, a nawet gdy wymagamhelm-config
, wciąż otrzymuję ten sam problem. Oto moja zaktualizowana konfiguracja konfiguracji: bitbucket.org/angrybacon/dotemacs/src .Okazuje się, że nie miało to nic wspólnego z
helm
inicjalizacją (lub niewielką).W mojej wiecznej pogoni za optymalizacją czasu uruchamiania Emacsa przeniosłem wszystkie rzeczy związane z interfejsem na samym początku mojej konfiguracji. Obejmuje to pseudo pełny ekran, którego używam.
Umieszczenie odpowiedniej linii przed załadowaniem któregoś z ciężkich seplindów naprawiło mój problem.
Oto moja konfiguracja w celach informacyjnych .
źródło