Sostituisci le istruzioni richieste caricando automaticamente il file .emacs per migliorare le prestazioni


8

Secondo questi post:

si può in qualche modo sostituire requiree le loadistruzioni nel .emacsfile per accelerare l'avvio di emacs. Tuttavia non so come farlo in dettaglio.

Ad esempio ho (tra le altre cose) nel mio file .emacs le seguenti requiree le seguenti loaddichiarazioni:

(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")
...

Per alarme linkedci sono file corrispondenti in una directory chiamata .emacsaddons, poiché nxhtmlesiste una directory, per gli altri non ci sono file corrispondenti in .emacsaddons. Non ho incluso tutte requireo le loaddichiarazioni del mio .emacsfile nell'esempio sopra, solo alcune in cui ritengo che i passaggi per la loro sostituzione autoloaddifferiranno tra loro (ad esempio perché alcuni hanno elfile non inseriti .emacsaddonse altri no, o perché nxhtmlè un sottodirettore di .emacsaddons...).

Come sono i passaggi dettagliati per sostituire tutto con autoloadfunzionalità per migliorare le prestazioni?

Risposte:


4

Come primo passo verso il caricamento automatico, suggerirei di convertire i tuoi loadcomandi espliciti con percorsi aggiunti all'elenco di cose che emacs dovrebbe caricare, come in:

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

Con quello nella parte superiore del tuo .emacs, puoi chiamare altre cose che dipendono dal caricamento di altri file in modo che possano essere trovati.

In particolare per posticipare il caricamento dei file, per ognuno di quelli (require 'foo)che hai nel tuo .emacs, dovresti sostituirlo con qualcosa di simile a:

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

Potrebbe essere necessario sperimentare (forse leggere) il codice per il rispettivo .el file per vedere qual è il nome che è necessario inserire al posto di 'name-of-foo-mode. I più comuni sono 'fooo 'foo-mode, ma c'è un'incoerenza.

Nel mio caso, ho queste dichiarazioni vicino al fondo del mio .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)

ma alcune delle dichiarazioni che dovevo fare requireprima di passare al caricamento automatico erano:

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

Quindi, come ho detto, potresti dover fare qualche sperimentazione o leggere il codice, ma alla fine ne vale la pena, poiché ti farà risparmiare un po 'di tempo se invochi spesso emacs.


1

Il modo migliore che ho trovato per avviare rapidamente emacs è di demonizzare il processo. Queste istruzioni riguardano emacs23. Le versioni precedenti hanno capacità server / client, ma può essere più difficile da configurare. Quando accedo per la prima volta al desktop, eseguo emacs --daemon. Dopodiché, ogni volta che ho bisogno di emacs, eseguo emacsclient -c filenamee si apre all'istante. Quando si utilizza emacs in modalità server / client, è necessario interrompere l'abitudine di utilizzare C-x C-cper uscire, invece di digitare C-x #. FWIW, questo è qualcosa che emacs23 sembra correggere, dato che a volte mi sono sorpreso a digitare C-x C-csenza uccidere il processo del server, ma continuo a mantenere le mie vecchie abitudini.

A seconda delle esigenze, questo potrebbe funzionare meglio rispetto alla manipolazione della configurazione per un piccolo guadagno.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.