Ersetzen Sie die erforderlichen Anweisungen durch automatisches Laden in die .emacs-Datei, um die Leistung zu verbessern

8

Nach diesen Beiträgen:

man kann irgendwie ersetzen requireund loadAnweisungen in der .emacsDatei, um den Emacs-Start zu beschleunigen. Ich weiß jedoch nicht, wie ich das im Detail machen soll.

Zum Beispiel habe ich (unter anderem) in meiner .emacs-Datei Folgendes requireund loadAnweisungen:

(load "auctex.el" nil t t)
(require 'alarm)
(require 'linked)
(load "nxhtml/autostart.el")
(require 'autoinsert)
(require 'recentf)
(require 'color-theme)
(load "~/.emacsaddons/emacs-color-theme-solarized/color-theme-solarized")
...

Für alarmund linkedes gibt entsprechende Dateien in einem Verzeichnis namens .emacsaddons, denn nxhtmles gibt ein Verzeichnis, für die anderen gibt es keine entsprechenden Dateien .emacsaddons. Ich habe umfassen nicht alle requireoder loadAussagen aus meiner .emacsDatei in dem obigen Beispiel nur ein paar , wo ich das Gefühl , dass die Schritte für sie zu ersetzen mit autoloadzwischen ihnen (zum Beispiel unterscheiden , da einige haben elDateien unter .emacsaddonsund einige nicht, oder weil nxhtmlheißt ein Unterverzeichnis von .emacsaddons...).

Wie sind die detaillierten Schritte, um alles durch autoloadFunktionen zur Verbesserung der Leistung zu ersetzen ?

Schüler
quelle

Antworten:

4

Als ersten Schritt zum automatischen loadLaden würde ich vorschlagen, dass Sie Ihre expliziten Befehle mit Pfaden konvertieren, die an die Liste der Dinge angehängt werden, die Emacs laden sollen, wie in:

(add-to-list 'load-path (expand-file-name "~/.emacs.d/"))

Damit .emacskönnen Sie andere Dinge aufrufen, die vom Laden anderer Dateien abhängen, damit sie gefunden werden.

Speziell zum Verschieben des Ladens von Dateien sollten Sie diese für jede Datei, (require 'foo)die Sie in Ihrer haben .emacs, durch etwas Ähnliches ersetzen wie:

(autoload 'name-of-foo-mode "code-for-foo.el" "Minor/Major mode for foo" t)

Möglicherweise müssen Sie den Code für die jeweilige .el Datei experimentieren (möglicherweise lesen), um festzustellen, welchen Namen Sie anstelle von eingeben müssen 'name-of-foo-mode. Am häufigsten sind 'foooder 'foo-mode, aber es gibt Inkonsistenzen.

In meinem Fall habe ich diese Erklärungen ganz unten in meinem .emacs:

(autoload 'textmate-mode "textmate" "Minor mode for automatic bracket pairs" t)
(autoload 'post-mode "post" "Mode for editing e-mails" t)
(autoload 'turn-on-reftex "reftex" "Minor mode for references in TeX files" t)
(autoload 'mode-compile "mode-compile" "Compile current buffer" t)
(autoload 'markdown-mode "markdown-mode" "Major mode for Markdown files" t)

Einige der Erklärungen, die ich abgeben musste, requirebevor ich zum automatischen Laden überging, waren:

(require 'reftex)
(require 'post)
(require 'compile)
(require 'textmate)

Wie gesagt, Sie müssen möglicherweise experimentieren oder Code lesen, aber am Ende lohnt es sich, da Sie Zeit sparen, wenn Sie häufig Emacs aufrufen.

rbrito
quelle
1

Der beste Weg, um Emacs schnell zu starten, besteht darin, den Prozess zu dämonisieren. Diese Anweisungen beziehen sich auf emacs23. Frühere Versionen sind Server / Client-fähig, die Konfiguration kann jedoch schwieriger sein. Wenn ich mich zum ersten Mal bei meinem Desktop anmelde, führe ich aus emacs --daemon. Danach führe ich jedes Mal, wenn ich Emacs benötige, aus emacsclient -c filenameund es erscheint sofort. Wenn Sie Emacs im Server- / Client-Modus verwenden, müssen Sie die Gewohnheit des Beendens C-x C-cbeenden, anstatt zu tippen C-x #. FWIW, dies ist etwas, das emacs23 zu beheben scheint, da ich mich gelegentlich beim Tippen ertappt habe, C-x C-cohne den Serverprozess zu beenden , aber ich halte immer noch an meinen alten Gewohnheiten fest.

Abhängig von Ihren Anforderungen funktioniert dies möglicherweise besser, als Ihre Konfiguration mit geringem Gewinn zu manipulieren.

Umeboshi
quelle