2009-08-01 10 views
116

Postanowiłem sprawdzić Emacsa i bardzo mi się podobało. Teraz używam Emacs Starter Kit, który zapewnia lepsze ustawienia domyślne i kilka ładnych dostosowań do domyślnej instalacji Emacsa.Jak skompilować bajt wszystkiego w katalogu .emacs.d?

Spersonalizowałem to nieco, dodałem trochę rzeczy takich jak yasnippet, color-themes, unbound i innych rzeczy. Skonfigurowałem github repository, w której zachowuję wszystkie dostosowania, dzięki czemu mogę uzyskać do nich dostęp z wielu miejsc lub na wypadek, gdyby coś poszło nie tak i straciłem katalog .emacs.d.

Wszystko to jest bardzo ładne, ale jest problem: ładowanie Emacsa zajmuje około 1-2 sekund. AFAIK Mogę skompilować pojedyncze pliki .el z plikiem kompilacji bajtów M-x do .elc i to działa. Ale istnieje wiele plików .el i zastanawiam się, czy istnieje sposób na skompilowanie ich wszystkich za pomocą prostej komendy lub czegoś, aby przyspieszyć ładowanie Emacsa. Mój Emacs nie zawsze jest otwarty, a ja otwieram i zamykam go dość często, szczególnie po tym, jak ustawiłem go jako domyślny edytor dla polecenia edycji w Total Commander, aby przyzwyczaić się do niego szybciej (tak, Windows XP tutaj).

Moja wersja Emacsa to 22,3. I tak, domyślna instalacja Emacsa bez żadnych dostosowań uruchamia się natychmiast.

Nie jestem pewien, która wersja jest korzystne podczas załadunku, na .el lub skompilowany .elc jeden przy okazji Oo

Tak, jest tam elisp polecenie lub Emacs przełącznik linii poleceń, aby Emacs bajt kompilacji wszystko w katalogu .emacs.d?

Odpowiedz

182

C-u 0 M-x byte-recompile-directory

skompiluje wszystkie .el pliki w katalogu i we wszystkich poniższych podkatalogów.

C-u 0 część jest, aby nie prosić o każdy .el plik, który nie posiada .elc odpowiednika.

+8

a następnie (gdy każdy został skompilowany raz), wystarczy użyć tego samego polecenia bez "Cu 0" (inaczej "C-0", BTW). To skompiluje bajt tylko tych plików źródłowych, które są nowsze niż ich wersje skompilowane bajtowo. – Drew

+1

Mała uwaga: dla mnie to zadziałało, dopóki nie usunąłem wszystkich plików ".elc". Po prostu powiedziano coś w stylu «Gotowe, zlikwidowano pliki 0, pominięto pliki α». –

+1

@ Hi-Angel Mam ten sam problem. Czy znalazłeś jakieś rozwiązanie? – zhanxw

15

to kołysząc się nieco od kwestii, ale aby rozwiązać problem załadunku powoli można korzystać z nowej funkcji demon Emacs 23.

„Jeśli masz wiele pakietów wsparcia, emacs Uruchamianie może być nieco powolne Jednak emacs 23 przynosi emacs --daemon, który umożliwia uruchamianie emacs w tle (na przykład po zalogowaniu). Możesz natychmiast otworzyć nowe okna emacs (ramki) z emacsclient. Oczywiście, możesz już mieć serwer 'emacs' w starsze wersje, ale jest w stanie uruchomić go w tle sprawia, że ​​ten znacznie ładniejszy rozwiązanie”

Od http://emacs-fu.blogspot.com/2009/07/emacs-23-is-very-near.html

+0

Zdecydowanie sprawdzę ten jeden. Dziękuję Ci! – Mikka

+2

Jeśli dodać alias emacsowi = „emacsclient -nw -a«»-c” do .bashrc (lub wersji twojej powłoki) będzie najpierw spróbować połączyć się z systemem demona, jeśli istnieje, jeśli nie zacznie jeden i połączyć cię. – Frederick

41

Aby automatycznie bajt kompilacji wszystko, co potrzebuje bajt kompilacji przy każdym uruchomieniu emacs, ja Umieść następujący po moich zmianach load-path na szczycie mojej .emacs pliku:

(byte-recompile-directory (expand-file-name "~/.emacs.d") 0) 

Niespodziewanie nie dodaje dużo mojego czasu rozruchu (chyba somethi ng wymaga kompilacji).

Aby przyspieszyć działanie emacsa, najpierw zidentyfikowałem wolne części za pomocą profile-dotemacs.el, a następnie zastąpiłem je autoloads.

20

Możesz użyć flagi --batch przekompilować z wiersza poleceń.

rekompilacji wszystkich tych,

emacs --batch --eval '(byte-recompile-directory "~/.emacs.d")' 

lub rekompilacji pojedynczy plik jako z Makefile,

emacs --batch --eval '(byte-compile-file "your-elisp-file.el")' 
+5

zastosowanie [periodyczny bajt kompilacji] (http://www.gnu.org/software/emacs/manual/html_node/elisp/Compilation-Functions.html#index-batch_002dbyte_002dcompile-909) zamiast. – npostavs

+0

Czy powinieneś go używać? . – nacho4d

+4

@ nacho4d 'emacs -Q --batch -f partia-bajt kompilacji * .el foo/* el' - nie recurse jak ** bajtów-rekompilacji-katalogu ** ma chociaż. –

Powiązane problemy