Emacs/C
Emacs wspiera programowanie w c[1]
Wstęp
[edytuj]Utwórz nowy plik za pomocą skrótu :
C-x C-f
podaj jego nazwę i rozszerzenie, np. "p.c" i wciśnij enter.
Wpisz zawartość pliku :
Wprowadź lub formatuj komentarz (indent-for-comment)
M-;
Uzyskasz
/* */
Automatyczne wcinanie (formatowanie = ang. indentation ) kodu : [2]
- linii za pomocą klawisza TAB
- całego programu
Zaznacz cały bufor/plik :
(mark-whole-buffer)
lub skrótem :
C-x h
( pamiętaj że w standardowym ustawieniu Emacs nie podświetla zaznaczonego fragmentu,[3] chyba że zaznaczasz za pomocą myszy )
automatycznie formatuj cały zaznaczony region ( indent-region )
M-C-\
Zapisz plik
C-x C-s
Tryby główne
[edytuj]W starszych wersjach Emacsa używano trybu c-mode. W nowszych cc-mode dla c, c++, awk i jawy.
c-mode
[edytuj]Możesz ręcznie przełączyć się do trybu c :
M-x c-mode
Tryb c-mode był zdefiniowany w pliku c-mode.el
/usr/share/emacs/site-lisp/c-mode.el
cc-mode
[edytuj]cc-mode jest to główny tryb Emacsa dla języków :
cc-mode zastępuje tryby zdefiniowane wcześniej w plikach :
- c-mode.el,
- c++-mode.el
- awk-mode.el
Ten tryb nie jest zdefiniowany w pliku cc-mode.el
Tryb ten otwiera się automatycznie po otwarciu pliku określonego typu.
Można sprawdzić wersję trybu :
M-x c-version
otrzymamy :
Using CC Mode version 5.31.7
Style
[edytuj]Styl jest to zbiór ustawień Emacsa ( ang. coherent collection of customizations with a name ) dotyczących wyglądu kodu ( formatowanie ) Tryb cc zawiera wbudowane style :
- gnu : domyślny styl dla c w Emacsie ( używany przez FSF w programach GNU )[4]
- k&r : klasyczny styl Kernighana i Ritchiego dla C
- bsd : styl Allman'a ( Eric Allman ) - - nawiasy klamrowe otwierające blok znajdują się w osobnej linii
- whitesmith : styl z przykładów Whitesmiths C, wczesnego komercyjnego kompilatora
- stroustrup : klasyczny styl Stroustrupa dla C++
- ellemtel : dla C++ zdefiniowany w “Programming in C++, Rules and Recommendations,” Erik Nyquist i Mats Henricson, Ellemtel1.
- linux : dla C wg standardów Linuksa (jądro).
- python : C dla Python extension modules2.
- java
- awk
- user
Zobacz jak wygląda efekt zastosowania różnych stylów w galerii [5]
Możesz zmienić style czasowo :[6]
C-c .
lub :
M-x c-set-style nazwa-stylu
lub
(c-set-style)
albo na stałe poprzez dodanie do pliku
~/.emacs
(add-hook 'c-mode-common-hook '(lambda () (c-set-style "nazwa-stylu")))
albo
(setq c-default-style ’((java-mode . "java") (awk-mode . "awk") (other . "linux")))
Zobacz również:
Tryby dodatkowe
[edytuj]Tryb cc korzysta też z trybów dodatkowych związanych z cc-mode:
- Auto-newline oznaczony literą ‘a’ (np. or ).
- electric mode oznaczony przez 'l'
- hungry delete mode - 'h'
- subword mode - 'w'
Na wierszu trybu widzimy : (tryb główny/pierwsze 4 tryby dodatkowe oznaczone pojedynczą literą ). Przykładowo :
- 'C/l' - aktywny jest tryb główny C i dodatkowy electric ( tak jest w standardowo ustawione w Emacsie 22.2.1 )
- ‘C/a’ - aktywny jest tryb główny C i dodatkowy Auto-newline
- ‘C/la’ - aktywny jest tryb główny C i 2 dodatkowe : Auto-newline i electric
- ‘C/lahw’ oznacza że wszystkie 4 dodatkowe tryby są aktywne [8]
Na wierszu trybu widać również oznaczenie inne trybów dodatkowych :
(C/l Abbrev)
Oznacza to że jest również otwarty tryb skrótów ( ang. abbrev-mode ). w którym możemy wpisywać skrót a Emacs rozwinie go do pełnej nazwy. [9]
Pozostałe tryby dodatkowe zobaczymy po wpisaniu komendy describe-mode :
C-h m
Electric minor mode
[edytuj]W tym trybie wpisanie pewnych znaków (ang. electric characters) :
{, }, :, #, ;, ,, <, >, /, *, (, )
powoduje automatyczne przejście do nowej linii.
Takie zachowanie występuje gdy są jednocześnie aktywne dwa tryby : electric i auto new-line , co jest widoczne jako :
C/la
Dodatkowe pakiety
[edytuj]Swieży Emacs - prosto z pudełka zapewnia wiele, ale jeśli chcesz więcej to zainstaluj dodatki ( pluginy )[10]
- Flycheck
CEDET
[edytuj]CEDET ( ang. Collection of Emacs Development Environment Tools [11] )
ECB
[edytuj]ECB ( ang. Emacs Code Browser )[12]
Bibliografia
[edytuj]- ↑ emacs wiki - c
- ↑ Jakub Narebski : Edytowanie plików C w Emacsie
- ↑ Dokumentacja Emacsa : The Mark and the Region
- ↑ GCC wiki : FormattingCodeForGCC
- ↑ david ha : emacs-cc-modes-built-in-styles-gallery
- ↑ emacs wiki: Indenting C
- ↑ david ha : emacs-cc-modes-built-in-styles-gallery
- ↑ emacs manual : cc mode
- ↑ emacs manual : Abbrevs
- ↑ Łukasz Sowa : emacs dla cc
- ↑ Collection of Emacs Development Environment Tools
- ↑ ECB - Emacs Code Browser