2010-01-14 16 views
6

GNU 23.1.1zapisz i skompiluj automatycznie:

Klikając przycisk F5 mogę skompilować mój projekt. Jednak chcę to rozszerzyć, aby niezapisane prace zostały zapisane, a następnie skompilowane.

Normalnie po prostu wykonuję C-x-s, aby zapisać, a następnie kliknij F5. Ale czy mogę dodać linię, która zaoszczędzi, nie pytając mnie, czy chcę ją zapisać, to się skompiluje, wszystko zrobione automatycznie?

; Compile program using <F5> 
; Save all unsaved files here, then compile 
(global-set-key [f5] 'compile) 

Mam nadzieję, że mnie rozumiesz?

Wielkie dzięki za wszelkie rady,

+0

Myślę, że pytasz, jak sprawić, aby Emacs automatycznie zapisywał pliki podczas kompilacji? Sprawdź moją odpowiedź poniżej, aby dowiedzieć się, jak to zrobić. –

+0

Chociaż nieco różni się to od tego, o co prosisz, ten przepis na dodanie 'po-ratowaniu-haka' zrobił mi pewną sztuczkę - http://rtime.felk.cvut.cz/~sojka/blog/compile- on-save/ – Manav

Odpowiedz

7

Można użyć (save-some-buffers 1) zapisać wszystkie bufory zawierające zmiany.

owinąć go z funkcji wraz z compile tak:

(defun save-all-and-compile() 
    (save-some-buffers 1) 
    (compile compile-command)) 

Następnie ustaw F5, aby uruchomić tę funkcję zamiast zwykłego kompilacji.

Użyj (save-some-buffers) (bez argumentów), jeśli wolisz, aby Emacs pytał Cię o zapisanie każdego bufora. Poza tym możesz chcieć dostosować konfigurację do swoich poleceń, tak jak to jest z compile ... Zostawię to tobie.

+3

Zalecam użycie klucza (lub kombinacji) w głównym obszarze pisania, a nie czegoś w stylu F5, aby to zrobić. –

+2

Uzyskiwanie tego błędu 'polecenie-wykonaj: błędny typ argumentu: polecenie, zapisz-wszystko-i-kompiluj' podczas wpisywania F5 po dodaniu tej linii' (globalny zestaw-klawisz [f5] 'zapisz-wszystko-i-kompiluj) ' do wiązania klucza. Jestem na Emacs 24.5.1. –

13

Na każdym używanym emacsie (od 19.34 do 24), kompilacja nie wymaga zapisania niezapisanego bufora przed kontynuowaniem. Jestem bardzo zaskoczony, że tak nie jest w twoim przypadku.

Po prostu kompilacja M-x (f5 dla ciebie) poprosi o zapisanie niezapisanego bufora.

możesz dostosować kompilację - pytaj o zapisanie do zera, jeśli chcesz, aby kompilacja bezwarunkowo zapisywała wszystkie bufory, lub pozwól na jej domyślną wartość zerową, jeśli chcesz zostać zapytany.

+0

Tak, masz rację. Poprosi cię o zapisanie. Jednak wolałbym nie być monitowany, ale zapisać wszystko na każdym kompilacji. Normalnie zawsze mam otwarty więcej niż 1 bufor i chciałbym tylko zapisać cokolwiek bez pytania o każdą kompilację. – ant2009

+3

, a następnie dostosuj kompilację-pytaj o zapisanie. Po prostu do tego (zapisać cały bufor bez pytania przed kompilacją)? –

15

Umieść (setq compilation-ask-about-save nil) w swoim .emacs, aby automatycznie zapisać (bez pytania) przed kompilacją lub rekompilacją.