Emacs pour le développement
Table of Contents
Salut à toi ! Bienvenue dans la bidouille !
Utilise « C-c C-o » (control+c puis control+o) pour suivre les liens (les trucs soulignés en bleu ci-dessous).
Ce fichier est disponible à http://people.bordeaux.inria.fr/lcourtes/emacs_dev.org.
1 prérequis
GNU Emacs 24.3+
Configuration du système de paquets :
(require 'package)
(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")
("ELPA" . "http://tromey.com/elpa/")
("Marmelade" . "http://marmalade-repo.org/packages/")))
;; Make the installed packages available.
(package-initialize)
2 compilation
M-x compile C-x ` (next-error)
3 shell
M-x shell C-c C-p (comint-previous-prompt) C-c C-n (comint-next-prompt) C-c C-o (comint-delete-output)
4 coloration
4.1 coloration syntaxique
(global-font-lock-mode 1)
4.2 correspondance des parenthèses
(show-paren-mode 1)
4.3 coloration des changements
M-x highlight-changes-mode
4.4 coloration de trucs spécifiques
M-x highlight-regexp (C-x w h) M-x unhighlight-regexp (C-x w u) M-x hl-line-mode
4.5 coloration de mots récurrents
4.5.1 préparation
M-x package-list-packages
installe le paquet 'highlight-symbol'
4.5.2 utilisation
M-x highlight-symbol-mode
4.6 coloration de la casse de chameau
M-x glasses-mode
4.7 correction orthographique (dans les commentaires)
M-x flyspell-prog-mode
5 affichage
5.1 bug-reference-prog-mode
faire des boutons sur les références à des rapports de bug
5.2 fonction courante dans la ligne de mode
M-x which-function-mode
5.3 pliage de code
installer le paquet 'fold-dwim'.
(require 'fold-dwim)
(global-set-key (kbd "<f7>") 'fold-dwim-toggle)
(global-set-key (kbd "<M-f7>") 'fold-dwim-hide-all)
(global-set-key (kbd "<S-M-f7>") 'fold-dwim-show-all)
6 gestion de version
6.1 VC : générique
C-x v d (vc-dir) C-x v l (vc-print-log) C-x v L (vc-print-root-log) C-x v g (vc-annotate)
- d, D, a, etc.
6.2 Magit : spécifique à Git
installer avec M-x package-list-packages
M-x magit-status stage/unstage, par hunk branches rebase
7 navigation dans le source
7.1 la base (en C)
C-M-a (c-beginning-of-defun) C-M-e (c-end-of-defun) M-a (c-beginning-of-statement) M-e (c-end-of-statement) M-} (forward-paragraph) M-{ (backward-paragraph)
7.2 pour la casse de chameau
M-x subword-mode
7.3 recherche avec grep
M-x grep M-x rgrep
7.4 navigation dans les fonctions
7.4.1 avec etags
M-! etags *.c RET M-.
7.4.2 avec GNU GLOBAL
- avec gtags (basique, fourni avec GLOBAL)
(setq c-mode-hook
'(lambda ()
(gtags-mode 1)))
(define-key gtags-mode-map [(meta ?.)] 'gtags-find-tag)
(define-key gtags-mode-map [(meta ?*)] 'gtags-pop-stack)
M-. et M-* M-x gtags-find-pattern M-x gtags-find-rtag
- avec xgtags (plus sophistiqué)
M-. et M-* C-c w c (xgtags-find-rtag) C-c w s (xgtags-find-symbol) C-c w n (xgtags-select-next-tag) C-c w p (xgtags-select-prev-tag) C-c w r (xgtags-query-replace-regexp)
7.4.3 avec Semantic
M-x semantic-mode C-c , J (semantic-complete-jump)
problème : pas de pile de symboles, et donc pas de M-*
8 écriture
8.1 indentation
TAB (c-indent-line-or-region) C-M-\ (indent-region) M-x electric-indent-mode
8.2 insertion de parenthèses etc.
M-x electric-pair-mode
8.3 complétion avec « hippie-expand »
(define-key global-map [(meta ?/)] 'hippie-expand)
8.4 complétion avec Semantic
M-x semantic-mode M-TAB (complete-symbol, avec semantic-completion-at-point-function) M-x semantic-idle-completions-mode
9 trucs qui dépotent avec Semantic
M-x semantic-ia-show-summary M-x semantic-highlight-func-mode M-x semantic-stickyfunc-mode
10 déverminage : GUD
M-x gdb C-x SPC (gud-break) C-x C-a C-s (gud-step) C-x C-a C-n (gud-next) C-x C-a < (gud-up) C-x C-a > (gud-down) M-x gdb-display-stack-buffer
11 correction à la volée du code
installer Flycheck avec M-x package-list-packages
M-x flycheck-mode M-x flycheck-select-checker C-c ! n (flycheck-next-error) C-c ! p (flycheck-previous-error)
12 la prochaine fois…
Gnus, ERC, Org, Geiser, w3m, eww, etc.