Emacs - Tygrys w programowaniu
Wsparcie dla profesjonalnego programowania
1.0 CSCOPE
Szybkie i zaawansowanie wyszukiwanie i przechodzenie do kodu c, c++.
Projekt CSCOPE ma dostepna konfigurację dla edytora emacs co sprawia, że cscope całkowicie jest zintegrowany z emacsem.
Włączenie cscope w emacsie:
(require 'xcscope)
Podstawowe skróty klawiszowe dla cscope:
(global-set-key [(control x) (meta n)] 'cscope-set-initial-directory )
(global-set-key [(control x) (meta o)] 'cscope-find-this-symbol )
(global-set-key [(control x) (meta p)] 'cscope-find-global-definition )
(global-set-key [(control x) (meta r)] 'cscope-pop-mark )
(global-set-key [(control x) (meta b)] 'cscope-display-buffer )
(global-set-key [(control x) (meta t)] 'cscope-display-buffer-toggle )
Najwiekszą zaletę czyli szybkie wyszukiwanie proszę spróbować wyszukać dowolny tekst w źródłach kernela linuksa i porównać z wyszukiwaniem np. w Total Commanderze.
2.0 ECB (Emacs source code browser)
Bardzo wygodne i z wieloma możliwościami środowisko dla edycji kodu C, C++ i Java.
Środowisko może nie przypomina swojego konkurenta Microsoftowego edytora czy innego Buildera, bo jest ono zintergrowane z emacsem. Zaleta emacsa i vima jest taka, że w obu wykorzystanie myszki jest minimalne.
Środowisko ECB ma takie możliwości, że trudno od razu poznać wszystkie skróty i udogodnienia.
Włączenie środowiska ECB e emacsie:
(add-to-list 'load-path "/tools/emacs/ecb-2.32")
(require 'ecb-autoloads)
Uruchomienie środowiska ECB:
(global-set-key [(control x) (meta z)] 'ecb-activate )
Połączenie obu projektów przy edycji C, C++ to sama przyjemność pracy w C i C++(zapewne też i w Javie).
3.0 Skróty w programowaniu, czyli to co tygryski lubią najbardziej
Można także samemu napisać sobie własne makro i uruchamiać je z zdefiniowanego skrótu:
(defun put-comment-function ()
(interactive)
(insert-string "//******************************************************************\n")
(insert-string "/** ")
(save-excursion
(insert-string "\n * \\param \n")
(insert-string " * \\remarks \n")
(insert-string " * \\return void\n")
(insert-string "*/\n")
(insert-string "//******************************************************************\n")
(kill-region (point)
(progn
(re-search-forward "[^ \t\n]" nil t)
(1- (point)) )) ))
Poniższe makro wstawia komentarz dla funkcji:
//******************************************************************
/**
* \param
* \remarks
* \return void
*/
//******************************************************************
4.0 Konfiguracja emacsa
Konfiguracja dla języka c++ i C
(defun my-c++-mode-hook ()
(setq tab-width 4)
(define-key c++-mode-map "\C-m" 'reindent-then-newline-and-indent)
(define-key c++-mode-map "\C-ce" 'c-comment-edit)
(setq c++-auto-hungry-initial-state 'none)
(setq c++-delete-function 'backward-delete-char)
(setq c++-tab-always-indent t)
(setq c-indent-level 4)
(setq c-continued-statement-offset 4)
(setq c++-empty-arglist-indent 4))
Ustawienie koloru kursora na zielony:
(set-cursor-color "green")
Ustawienie koloru tła i tekstu:
(set-foreground-color "green")
(set-background-color "black")
Ustawienie skrótu do shela
(global-set-key [f3] 'shell)
Emacs umożliwia uruchomienie powłoki shella w sobie. Co to tak naprawdę umożliwia?
To, że możemy cokolwiek uruchamiać i kompilować. Czym się to różni od kompilacji czy uruchamiania w zwykłej powłoce bez emacsa. To, że wynik kompilacji umieszczony jest w buforze. Cokolwiek zostanie wygenerowane podczas kompilacji to z tym możemy robic co chcemy, czyli?
Możemy wyszukiwać błędy kompilacji na przeróżne sposoby. Możemy trzymać ten wynik w buforze, zawsze mamy ten wynik dostepny. Możemy wyszukiwać bardzo zawiłe "warningi" i "errory". Możemy odnosić się do kodu źródłowego bez wklepywania szukanego błędu, albo poprostu kopiować tekst "warninga" czy "errora" z bufora.
Emacs to naprawdę wydajne środowisko. Nie ma żadnych problemów z uruchomieniem kompilacji na 20 minut i przeglądanie oraz przetwarzanie kilkudziesięciu stron tekstu z wynikami. Po prostu proszę samemu spróbować z dużym projektem w emacsie.
Włączenie stylu formatowania dla języka c,C++ na "K&R"
(c-set-style "k&r")
Skrót Meta \ pozwala formatować tekst. Dla mnie była to pierwsza zaleta edytora emacs, która sprawiła, że porzuciłem naukę edytora Vim i rozpocząłem długą wędrówkę z edytorem emacs.
Automatyczne ustawienie odstępu tag na 3:
(setq tab-width 3)
Dodatkowe pakiety, które rozszerzają możliwości emacsa w programowaniu:
emacs-tiny
x-symbol
x-ref
etags
completion
oo-browser
xrefactory
session
ede
1 komentarz:
Męczę się z ustawieniem takiego środowiska pod WIN7. Mam emacs/cscope/cygwin (potem ECB). Ale problem mam taki, że emacs nie może znaleźć mi cscope-indexer'a choćby niewiem jak ustawiać ścieżki to ciągle nie widzi. O co chodzi?
Prześlij komentarz