Emacs wspiera programowanie w c[1]

Kolorowanie składni języka C w Emacsie


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

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

linii ( hak ) : [7]

(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

w wierszu trybów

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 ( ang. Collection of Emacs Development Environment Tools [11] )

ECB ( ang. Emacs Code Browser )[12]

Bibliografia

edytuj
  1. emacs wiki - c
  2. Jakub Narebski  : Edytowanie plików C w Emacsie
  3. Dokumentacja Emacsa : The Mark and the Region
  4. GCC wiki : FormattingCodeForGCC
  5. david ha : emacs-cc-modes-built-in-styles-gallery
  6. emacs wiki: Indenting C
  7. david ha : emacs-cc-modes-built-in-styles-gallery
  8. emacs manual : cc mode
  9. emacs manual  : Abbrevs
  10. Łukasz Sowa : emacs dla cc
  11. Collection of Emacs Development Environment Tools
  12. ECB - Emacs Code Browser