Ich ging meine Konfigurationsdateien durch und wollte etwas aufräumen.
Mein Verständnis with-eval-after-load
war, dass sein Körper sofort ausgewertet wird, nachdem das zugehörige Paket geladen wurde. Während ich meine Konfigurationsdateien bereinigte und noch mehr aufteilte, wollte ich jede Paketkonfiguration mit einschließen with-eval-after-load
. Alles lief wie erwartet, bis ich die Konfiguration für helm
und beigelegt habe helm-projectile
.
Folgendes habe ich mir vorgestellt ( 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))
Nach dem Neustart von Emacs erhalte ich das folgende Problem mit der Fenstergröße:
So ändere ich die Größe meines Fensters:
(set-frame-parameter nil 'fullscreen 'fullboth)
Ich vermute, ich missbrauche with-eval-after-load
, wie würde man seine Emacs-Konfiguration bereinigen und sicherstellen, dass nichts kaputt geht, egal welches Paket installiert ist?
with-eval-after-load
alle meine paketbezogenen Anpassungen einmal zu verpacken. Dann sah ich das Licht und begannuse-package
stattdessen zu benutzen .(package-initialize)
und durch ersetzt,(require 'use-package)
aber es wird ein Dateifehler angezeigt: Datei kann nicht geladen werden, keine solche Datei oder kein solches Verzeichnis, use-package beim Neustart von Emacs. Und doch, sobald Emacs gestartet ist, kann ich ohne Probleme auswerten(require 'use-package)
. Schließlich habe ich sogar versuchtwith-eval-after-load
, noch den gleichen Fehler. Die Readme- Datei enthält keine genauen Informationen zur Installationuse-package
von Paketen aus package.el..emacs
, vorzugsweise eine abgespeckte Version, die das Problem mit möglichst wenigen Zeilen und möglichst wenigen externen Paketen demonstriert. Dies hängt wahrscheinlich mit dem Timing des Frame-Setups im Verhältnis zur Paketlast beim Start zusammen . Aber ohne Ihren Code zu sehen, können wir nicht viel tun. Sagen Sie uns auch, welche Version von Emacs Sie verwenden.Antworten:
Ich verwende
with-eval-after-load
viel, hauptsächlich, um Elemente zu Listen hinzuzufügen oder daraus zu entfernen, nachdem die Standardwerte ausgewertet wurden. Auf diese Weise muss ich Änderungen an den Standardwerten nicht nachverfolgen.Was das Problem mit Ihrer
helm
Initialisierung betrifft, wird in der Dokumentation empfohlen, dass(require 'helm-config)
es in Ihreninit.el
oder seinen Abhängigkeiten vorhanden ist.Ich habe festgestellt, dass es einfacher ist, es nur
helm-config
während der Initialisierung zu benötigen, alsautoload
mich darauf zu verlassen , zumal ich es sowieso fast sofort die meiste Zeit laden würde.quelle
use-package
, und auch wennhelm-config
ich es benötige, bekomme ich immer noch das gleiche Problem. Hier ist meine aktualisierte Konfiguration: bitbucket.org/angrybacon/dotemacs/src .Es stellte sich heraus, dass es nichts mit der
helm
Initialisierung (oder wenig) zu tun hatte .In meinem immerwährenden Bestreben, die Startzeit von Emacs zu optimieren, habe ich am Anfang meiner Konfiguration alle mit der Benutzeroberfläche zusammenhängenden Dinge verschoben . Das schließt den Pseudo-Vollbildmodus ein, den ich verwende.
Das Setzen der entsprechenden Zeile, bevor irgendeines der schweren Lispes geladen wurde, behebt mein Problem.
Hier ist meine Konfiguration als Referenz .
quelle