Skip to content
Snippets Groups Projects
Commit f37839ba authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Amérlioration de la configuration et des rendus des exports

parent a560b7cb
No related branches found
No related tags found
No related merge requests found
...@@ -26,5 +26,5 @@ auto-save-list ...@@ -26,5 +26,5 @@ auto-save-list
/.mc-lists.el /.mc-lists.el
/tramp /tramp
/Tutoriel.pyg /Tutoriel.pyg
/_minted-Tutoriel/ /_minted*/
/custom.el /custom.el
#+SETUPFILE: ~/.emacs.d/org-html-themes/setup/theme-readtheorg-local.setup
#+STARTUP: org-pretty-entities entitiespretty #+STARTUP: org-pretty-entities entitiespretty
#+PROPERTY: header-args :comments yes :results silent #+PROPERTY: header-args :comments yes :results silent :exports both
#+options: h:3 num:t toc:nil #+options: h:3 num:t toc:3
#+TITLE: Configuration
#+OPTIONS: author:nil date:nil
#+LANGUAGE: fr
#+LATEX_CLASS_OPTIONS: [10pt]
#+LATEX_HEADER: \usepackage[hmargin=2.5cm,vmargin=1.5cm]{geometry}
#+LATEX_COMPILER: pdflatex --shell-escape
#+LATEX_HEADER_EXTRA: \usepackage{mdframed}
#+LATEX_HEADER_EXTRA: \BeforeBeginEnvironment{minted}{\begin{mdframed}}
#+LATEX_HEADER_EXTRA: \AfterEndEnvironment{minted}{\end{mdframed}}
* Choix d'interface * Choix d'interface
** Pas d'écran de bienvenue ** Pas d'écran de bienvenue
...@@ -130,7 +146,14 @@ Org bullets makes things look pretty ...@@ -130,7 +146,14 @@ Org bullets makes things look pretty
'(org-confirm-babel-evaluate nil) '(org-confirm-babel-evaluate nil)
'(org-src-fontify-natively t) '(org-src-fontify-natively t)
'(org-html-htmlize-output-type 'css) '(org-html-htmlize-output-type 'css)
'(org-latex-listings 'minted)) '(org-latex-listings 'minted)
'(org-hide-emphasis-markers t))
(setq org-latex-listings 'minted
org-latex-packages-alist '(("" "minted"))
org-latex-pdf-process
'("pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f"
"pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f"))
(setq org-file-apps (setq org-file-apps
(append '( (append '(
...@@ -218,7 +241,7 @@ classiques. Deux différences notables. ...@@ -218,7 +241,7 @@ classiques. Deux différences notables.
possible de sélectionner la zone de saisie (avec les flèches) et de possible de sélectionner la zone de saisie (avec les flèches) et de
simplement valider la chaîne avec ~RET~. simplement valider la chaîne avec ~RET~.
| Raccourci | Description | | Raccourci | Description |
|-----------+------------------------------------------------------------------| |-----------+-------------------------------------------------|
| ~C-s~ | Recherche incrémentale vers le bas | | ~C-s~ | Recherche incrémentale vers le bas |
| ~C-r~ | Recherche incrémentale vers le haut | | ~C-r~ | Recherche incrémentale vers le haut |
| ~M-x~ | Recherche incrémentale d'une commande | | ~M-x~ | Recherche incrémentale d'une commande |
...@@ -428,13 +451,13 @@ On charge flycheck ...@@ -428,13 +451,13 @@ On charge flycheck
#+END_SRC #+END_SRC
Active flycheck globalement Active flycheck globalement
#+BEGIN_SRC #+BEGIN_SRC emacs-lisp
(add-hook 'after-init-hook #'global-flycheck-mode) (add-hook 'after-init-hook #'global-flycheck-mode)
#+END_SRC #+END_SRC
** Python ** Python
Attention pour que la configuration fonctionne, il faut installer Attention pour que la configuration fonctionne, il faut installer
~virtualenv~. Pour les systèmes Debian ~virtualenv~. Pour les systèmes Debian
#+BEGIN_SRC shell #+BEGIN_SRC bash :eval no
apt install virtualenv apt install virtualenv
#+END_SRC #+END_SRC
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
...@@ -520,7 +543,7 @@ etc de manière intelligente. ...@@ -520,7 +543,7 @@ etc de manière intelligente.
Modifie les copies d'une zone séléctionnée simultanément Modifie les copies d'une zone séléctionnée simultanément
| Raccourci | Description | | Raccourci | Description |
|-------------+----------------------------| |-----------+----------------------------|
| ~C-h C-;~ | démarrer les modifications | | ~C-h C-;~ | démarrer les modifications |
| ~M-ESC ESC~ | sortir du mode | | ~M-ESC ESC~ | sortir du mode |
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
...@@ -653,6 +676,7 @@ Charge les langages disponnibles pour org-mode ...@@ -653,6 +676,7 @@ Charge les langages disponnibles pour org-mode
(emacs-lisp . t) (emacs-lisp . t)
(shell . t) (shell . t)
(C . t) (C . t)
(gnuplot . t)
(js . t) (js . t)
(ditaa . t) (ditaa . t)
(dot . t) (dot . t)
...@@ -739,7 +763,7 @@ Outil de simplification des raccourcis. Un popup contextuel apparaît. ...@@ -739,7 +763,7 @@ Outil de simplification des raccourcis. Un popup contextuel apparaît.
** Modes git ** Modes git
Le sublime *magit* Le sublime *magit*
| Raccourci | Description | | Raccourci | Description |
|-----------+--------------------------------------| |-----------+----------------------------------|
| ~C-x g~ | Démarre *magit* (~M-x magit-status~) | | ~C-x g~ | Démarre *magit* (~M-x magit-status~) |
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package magit (use-package magit
...@@ -757,7 +781,7 @@ Affiche l'état git dans la marge ...@@ -757,7 +781,7 @@ Affiche l'état git dans la marge
Utilise git-gutter avec hydra. Permet de voir rapidement les Utilise git-gutter avec hydra. Permet de voir rapidement les
modifications, de les valider (~git add -p~) ou de les annuler (~git checkout -p~) modifications, de les valider (~git add -p~) ou de les annuler (~git checkout -p~)
| Raccourci | Description | | Raccourci | Description |
|-----------+--------------------------------------| |-----------+----------------------------------|
| ~C-x g~ | Démarre *magit* (~M-x magit-status~) | | ~C-x g~ | Démarre *magit* (~M-x magit-status~) |
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package git-gutter (use-package git-gutter
...@@ -893,7 +917,7 @@ Mode permettant le pliage (/folding/) de regions ...@@ -893,7 +917,7 @@ Mode permettant le pliage (/folding/) de regions
Un meilleur gestionnaire de /buffers/. Un meilleur gestionnaire de /buffers/.
| Raccourci | Description | | Raccourci | Description |
|-----------+------------------------------------| |-----------+----------------------------------|
| ~C-x C-b~ | Ouvre le gestionnaire de /buffers/ | | ~C-x C-b~ | Ouvre le gestionnaire de /buffers/ |
| ~C-x b~ | Change de /buffer/ | | ~C-x b~ | Change de /buffer/ |
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
...@@ -933,7 +957,7 @@ Permet de modifier le résultat d'un *grep* (donc simultanément dans ...@@ -933,7 +957,7 @@ Permet de modifier le résultat d'un *grep* (donc simultanément dans
plusieurs fichiers par exemple). plusieurs fichiers par exemple).
| Raccourci | Description | | Raccourci | Description |
|-----------+----------------------------------------------------------| |-----------+--------------------------------------------------------|
| ~C-c C-p~ | passe en mode écriture dans le buffer résultat de *grep* | | ~C-c C-p~ | passe en mode écriture dans le buffer résultat de *grep* |
| ~C-c C-e~ | sauve les modifications | | ~C-c C-e~ | sauve les modifications |
| ~C-x C-q~ | quitte le mode | | ~C-x C-q~ | quitte le mode |
...@@ -957,7 +981,9 @@ Outils d'édition de PDF dans Emacs ...@@ -957,7 +981,9 @@ Outils d'édition de PDF dans Emacs
(setq TeX-view-program-selection '((output-pdf "pdf-tools"))) (setq TeX-view-program-selection '((output-pdf "pdf-tools")))
(setq TeX-view-program-list '(("pdf-tools" "TeX-pdf-tools-sync-view")))) (setq TeX-view-program-list '(("pdf-tools" "TeX-pdf-tools-sync-view"))))
:init :init
(add-hook 'LaTeX-mode-hook '(lambda () (local-set-key (kbd "C-c C-g") 'pdf-sync-forward-search)))) (add-hook 'LaTeX-mode-hook
'(lambda () (local-set-key (kbd "C-c C-g")
'pdf-sync-forward-search))))
(use-package org-pdftools (use-package org-pdftools
:ensure t) :ensure t)
......
#+SETUPFILE: ~/.emacs.d/org-html-themes/setup/theme-readtheorg-local.setup
#+STARTUP: org-pretty-entities entitiespretty #+STARTUP: org-pretty-entities entitiespretty
#+PROPERTY: header-args :comments yes :results silent #+PROPERTY: header-args :comments yes :results silent :exports both
#+OPTIONS: h:4 num:t toc:nil #+options: h:3 num:t toc:3
#+OPTIONS: title:nil
#+OPTIONS: author:nil date:nil title:nil
#+LANGUAGE: fr
#+LATEX_HEADER: \usepackage[hmargin=2.5cm,vmargin=1.5cm]{geometry}
#+LATEX_COMPILER: pdflatex --shell-escape
#+LATEX_HEADER_EXTRA: \usepackage{mdframed}
#+LATEX_HEADER_EXTRA: \BeforeBeginEnvironment{minted}{\begin{mdframed}}
#+LATEX_HEADER_EXTRA: \AfterEndEnvironment{minted}{\end{mdframed}}
* Installation * Installation
L'installation la plus simple de cette configuration se résume à L'installation la plus simple de cette configuration se résume à
renommer ce répertoire en renommer ce répertoire en
#+BEGIN_SRC shell #+BEGIN_SRC shell :eval no
~/.emacs.d ~/.emacs.d
#+END_SRC #+END_SRC
Emacs fonctionne plus rapidement lorsqu'il est lancé en mode client Emacs est chargé plus rapidement lorsqu'il est lancé en mode client
(plusieurs client s'attachent à un même serveur). Pour bénéficier de (plusieurs client s'attachent à un même serveur). Pour bénéficier de
cette optimisation ajouter les alias suivants à votre shell cette optimisation ajouter les alias suivants à votre shell
#+BEGIN_SRC shell #+BEGIN_SRC shell :eval no
alias emacs="emacsclient -q -a '' -c" alias emacs="emacsclient -q -a '' -c"
alias kill-emacs="emacsclient -q -e '(let ((last-nonmenu-event nil))(save-buffers-kill-emacs))'" alias kill-emacs="emacsclient -q -e '(let ((last-nonmenu-event nil))(save-buffers-kill-emacs))'"
#+END_SRC #+END_SRC
...@@ -20,7 +33,7 @@ cette optimisation ajouter les alias suivants à votre shell ...@@ -20,7 +33,7 @@ cette optimisation ajouter les alias suivants à votre shell
* Premiers pas avec Emacs * Premiers pas avec Emacs
Emacs est bien plus qu'un éditeur de texte. C'est un véritable Emacs est bien plus qu'un éditeur de texte. C'est un véritable
environnement de travail dont la tâche ne se réduit pas à la environnement de travail dont la tâche ne se réduit pas à la
programmation. programmation. Certains vont jusqu'à parler de système d'exploitation.
On fournit un tutoriel (voir [[file:Tutoriel.org][Tutoriel.org]]) qui n'a pour but que de On fournit un tutoriel (voir [[file:Tutoriel.org][Tutoriel.org]]) qui n'a pour but que de
donner quelques liens utiles et de rappeler les principes de base donner quelques liens utiles et de rappeler les principes de base
...@@ -47,5 +60,3 @@ For a list of all posts and videos check out ...@@ -47,5 +60,3 @@ For a list of all posts and videos check out
# Local Variables: # Local Variables:
# ispell-local-dictionary: "francais" # ispell-local-dictionary: "francais"
# End: # End:
# pas de titre
...@@ -26,10 +26,9 @@ l'édition de fichier orienté ligne. ...@@ -26,10 +26,9 @@ l'édition de fichier orienté ligne.
En 1983 RMS lance le projet [[https://fr.wikipedia.org/wiki/Projet_GNU][GNU]] et l'une de ses premières tâches est En 1983 RMS lance le projet [[https://fr.wikipedia.org/wiki/Projet_GNU][GNU]] et l'une de ses premières tâches est
de le doter d'un éditeur digne de ce nom. Profitant de son expérience de le doter d'un éditeur digne de ce nom. Profitant de son expérience
et en s'inspirant de [[https://fr.wikipedia.org/wiki/Gosling_Emacs][Gosling Emacs]] il crée [[https://fr.wikipedia.org/wiki/GNU_Emacs][GNU Emacs]]. Pour cela, il et en s'inspirant de [[https://fr.wikipedia.org/wiki/Gosling_Emacs][Gosling Emacs]] il crée [[https://fr.wikipedia.org/wiki/GNU_Emacs][GNU Emacs]]. Pour cela, il
l'écrit en [[https://fr.wikipedia.org/wiki/C_(langage)][C]] et permet l'écriture d'extensions en l'écrit en [[https://fr.wikipedia.org/wiki/C_(langage)][C]] et permet l'écriture d'extensions en [[https://fr.wikipedia.org/wiki/Emacs_Lisp][Emacs Lisp]]. C'est
[[https://fr.wikipedia.org/wiki/Emacs_Lisp][Emacs Lisp]]. C'est probablement cette extensibilité qui fait que probablement cette extensibilité qui fait que malgré son âge avancé,
malgré son âge avancé, Emacs est l'un des outils les plus utilisés Emacs est l'un des outils les plus utilisés pour le développement.
pour le développement.
* Lancement d'Emacs * Lancement d'Emacs
Pour lancer Emacs, il suffit de taper la commande Pour lancer Emacs, il suffit de taper la commande
...@@ -38,15 +37,15 @@ Pour lancer Emacs, il suffit de taper la commande ...@@ -38,15 +37,15 @@ Pour lancer Emacs, il suffit de taper la commande
#+END_SRC #+END_SRC
dans un terminal. Si le terminal ne permet pas l'ouverture de fenêtres dans un terminal. Si le terminal ne permet pas l'ouverture de fenêtres
graphiques (pas de ~DISPLAY~), Emacs démarrera alors en mode texte. Si graphiques (pas de ~DISPLAY~), Emacs démarrera alors en mode texte. Si
on utilise l'option ~-nw~, pour /no window/, on force le lancement on utilise l'option ~-nw~, pour /no window/, on force le lancement d'Emacs
d'Emacs en mode texte. en mode texte.
#+BEGIN_SRC bash :eval no #+BEGIN_SRC bash :eval no
emacs -nw emacs -nw
#+END_SRC #+END_SRC
Attention dans ce mode, pour quitter Emacs, il faut utiliser le Attention dans ce mode, pour quitter Emacs, il faut utiliser le
raccourcis clavier ~C-x C-c~ (contrôle-x puis contrôle-c). Une raccourcis clavier ~C-x C-c~ (contrôle-x puis contrôle-c). Une dernière
dernière option pratique est l'option ~-q~. Son effet est de lancer option pratique est l'option ~-q~. Son effet est de lancer Emacs sans
Emacs sans utiliser la configuration locale. utiliser la configuration locale.
#+BEGIN_SRC bash :eval no #+BEGIN_SRC bash :eval no
emacs -q emacs -q
#+END_SRC #+END_SRC
...@@ -60,20 +59,20 @@ fonctionnement. ...@@ -60,20 +59,20 @@ fonctionnement.
Comme on l'a dit, Emacs a vu le jour comme un ensemble de *macros*, Comme on l'a dit, Emacs a vu le jour comme un ensemble de *macros*,
c'est-à-dire des enchaînements de commandes simples ou d'autres c'est-à-dire des enchaînements de commandes simples ou d'autres
macros. Ces macros (ou plus précisément ces *fonctions*) sont macros. Ces macros (ou plus précisément ces *fonctions*) sont toujours
toujours un des piliers du fonctionnement d'Emacs. Le nombre de un des piliers du fonctionnement d'Emacs. Le nombre de fonctions
fonctions proposées par Emacs est très important et pour y accéder proposées par Emacs est très important et pour y accéder rapidement
rapidement Emacs permet l'usage de raccourcis clavier. C'est en Emacs permet l'usage de raccourcis clavier. C'est en apprenant et en
apprenant et en utilisant ces raccourcis qu'on gagne en utilisant ces raccourcis qu'on gagne en productivité. L'utilisation de
productivité. L'utilisation de la souris avec Emacs est donc souvent la souris avec Emacs est donc souvent contre productive. Enfin on peut
contre productive. Enfin on peut facilement créer et enregistrer des facilement créer et enregistrer des enchaînements de commandes pour
enchaînements de commandes pour éviter les tâches répétitives. éviter les tâches répétitives.
Une première façon d'apprendre un peu Emacs est d'effectuer le Une première façon d'apprendre un peu Emacs est d'effectuer le
*tutoriel intégré* qu'il propose. Pour démarrer le tutoriel il suffit *tutoriel intégré* qu'il propose. Pour démarrer le tutoriel il suffit de
de saisir le raccourcis ~C-h t~. Pour le novice, cela signifie qu'on saisir le raccourcis ~C-h t~. Pour le novice, cela signifie qu'on doit
doit taper sur la touche contrôle (~C~) et sur la touche ~h~ taper sur la touche contrôle (~C~) et sur la touche ~h~ simultanément,
simultanément, puis sur la touche ~t~ seulement. puis sur la touche ~t~ seulement.
** Interface ** Interface
Globalement, l'interface d'Emacs est assez intuitive, mais elle a Globalement, l'interface d'Emacs est assez intuitive, mais elle a
...@@ -92,8 +91,8 @@ Emacs. Chaque vue est appelée *fenêtre*. Attention, dans le jargon ...@@ -92,8 +91,8 @@ Emacs. Chaque vue est appelée *fenêtre*. Attention, dans le jargon
Emacs, une fenêtre n'est pas à confondre avec les fenêtres gérées par Emacs, une fenêtre n'est pas à confondre avec les fenêtres gérées par
le /window-manager/ de l'interface graphique (voir le /window-manager/ de l'interface graphique (voir
figure [[fig:trois-windows]], où un [[sec:frames][cadre]] Emacs est découpé en trois figure [[fig:trois-windows]], où un [[sec:frames][cadre]] Emacs est découpé en trois
fenêtres). On peut afficher un *même* /buffer/ dans différentes fenêtres). On peut afficher un *même* /buffer/ dans différentes fenêtres
fenêtres et il peut être modifié dans n'importe laquelle de ses vues. et il peut être modifié dans n'importe laquelle de ses vues.
#+CAPTION: Trois fenêtres affichées dans Emacs #+CAPTION: Trois fenêtres affichées dans Emacs
#+NAME: fig:trois-windows #+NAME: fig:trois-windows
...@@ -102,27 +101,26 @@ fenêtres et il peut être modifié dans n'importe laquelle de ses vues. ...@@ -102,27 +101,26 @@ fenêtres et il peut être modifié dans n'importe laquelle de ses vues.
*** <<sec:frames>> Cadre (/frames/) *** <<sec:frames>> Cadre (/frames/)
Lorsqu'il est exécuté en mode graphique, une même instance d'Emacs Lorsqu'il est exécuté en mode graphique, une même instance d'Emacs
peut proposer plusieurs cadres (/frames/) d'affichage. Il s'agit en peut proposer plusieurs cadres (/frames/) d'affichage. Il s'agit en fait
fait de plusieurs fenêtres du gestionnaire graphique. de plusieurs fenêtres du gestionnaire graphique.
Dans l'exemple de la figure [[fig:deux-frames]], il s'agit bien de la même Dans l'exemple de la figure [[fig:deux-frames]], il s'agit bien de la même
instance d'Emacs\nbsp{}: on a lancé un seul exécutable, mais on a ouvert un instance d'Emacs\nbsp{}: on a lancé un seul exécutable, mais on a ouvert un
cadre (/frame/) supplémentaire. Dans chacun des cadres, on affiche une cadre (/frame/) supplémentaire. Dans chacun des cadres, on affiche une
vue d'un *même* /buffer/ d'édition, c'est-à-dire que le *même* vue d'un *même* /buffer/ d'édition, c'est-à-dire que le *même* /buffer/ peut
/buffer/ peut être modifié par l'intermédiaire de l'un ou l'autre des être modifié par l'intermédiaire de l'un ou l'autre des cadres.
cadres.
#+CAPTION: Deux cadres (/frames/) Emacs affichant le même /buffer/ #+CAPTION: Deux cadres (/frames/) Emacs affichant le même /buffer/
#+NAME: fig:deux-frames #+NAME: fig:deux-frames
[[file:emacs-frames.png]] [[file:emacs-frames.png]]
*** /Modeline/ *** /Modeline/
Dans Emacs, chaque /buffer/ est délimité *en bas* par la Dans Emacs, chaque /buffer/ est délimité *en bas* par la /modeline/. Il
/modeline/. Il s'agit d'une zone dans laquelle sont affichées divers s'agit d'une zone dans laquelle sont affichées divers informations
informations quant au mode de fonctionnement d'Emacs dans son quant au mode de fonctionnement d'Emacs dans son /buffer/. On la voit en
/buffer/. On la voit en action sur la figure [[fig:emacs-modeline]], le action sur la figure [[fig:emacs-modeline]], le mode majeur est ~CMake~, le
mode majeur est ~CMake~, le fichier édité s'appelle ~CMakeList.txt~, fichier édité s'appelle ~CMakeList.txt~, enfin, on travaille sur la
enfin, on travaille sur la branche ~develop~. branche ~develop~.
#+CAPTION: La /modeline/. Ici on voit qu'on est en mode ~CMake~, que le fichier édité s'appelle ~CMakeList.txt~ et qu'on travaille sur la branche ~develop~. #+CAPTION: La /modeline/. Ici on voit qu'on est en mode ~CMake~, que le fichier édité s'appelle ~CMakeList.txt~ et qu'on travaille sur la branche ~develop~.
#+NAME: fig:emacs-modeline #+NAME: fig:emacs-modeline
...@@ -178,16 +176,16 @@ On ne liste ici que quelques unes des commandes (et raccourcis), ...@@ -178,16 +176,16 @@ On ne liste ici que quelques unes des commandes (et raccourcis),
seulement une liste de celles qu'on juge importantes. seulement une liste de celles qu'on juge importantes.
Noter que cette configuration utilise le mode ~which-key~, dont l'une Noter que cette configuration utilise le mode ~which-key~, dont l'une
des fonctionnalités est de fournir une aide dans le /minibuffer/ lors des fonctionnalités est de fournir une aide dans le /minibuffer/ lors de
de la saisie de commandes. Par exemple, si on tape ~C-x~, au bout d'un la saisie de commandes. Par exemple, si on tape ~C-x~, au bout d'un
instant ~which-key~ affiche dans le /minibuffer/ la liste des instant ~which-key~ affiche dans le /minibuffer/ la liste des commandes
commandes qui commencent par ~C-x~. C'est donc un excellent moyen de qui commencent par ~C-x~. C'est donc un excellent moyen de retrouver les
retrouver les raccourcis et d'en apprendre de nouveaux. Cette aide est raccourcis et d'en apprendre de nouveaux. Cette aide est évidemment
évidemment contextuelle. contextuelle.
** Commandes générales ** Commandes générales
| Raccourci | Description | | Raccourci | Description |
|-----------+--------------------------------------------------| |-----------+----------------------------------------------|
| ~C-x C-c~ | Sort d'Emacs | | ~C-x C-c~ | Sort d'Emacs |
| ~C-g~ | Interrompt la commande en cours | | ~C-g~ | Interrompt la commande en cours |
| ~C-S-g~ | Force l'interruption de la commande | | ~C-S-g~ | Force l'interruption de la commande |
...@@ -213,7 +211,7 @@ exemple) ...@@ -213,7 +211,7 @@ exemple)
On peut lancer l'aide en tapant ~C-h~ et en suivant les indications du On peut lancer l'aide en tapant ~C-h~ et en suivant les indications du
/minibuffer/. /minibuffer/.
| Raccourci | Description | | Raccourci | Description |
|-----------+-----------------------------------------------| |-----------+-------------------------------------------|
| ~C-h t~ | Lance le tutoriel intégré | | ~C-h t~ | Lance le tutoriel intégré |
| ~C-h m~ | Informations sur le mode courant | | ~C-h m~ | Informations sur le mode courant |
| ~C-h i~ | Accède à la documentation (~info~) | | ~C-h i~ | Accède à la documentation (~info~) |
...@@ -223,25 +221,24 @@ On peut lancer l'aide en tapant ~C-h~ et en suivant les indications du ...@@ -223,25 +221,24 @@ On peut lancer l'aide en tapant ~C-h~ et en suivant les indications du
Au delà des flèches et autres touches usuelles du clavier, Emacs Au delà des flèches et autres touches usuelles du clavier, Emacs
propose d'autres moyens de se déplacer dans un /buffer/. propose d'autres moyens de se déplacer dans un /buffer/.
| Raccourci | Description | | Raccourci | Description |
|------------------+--------------------------------------------------| |--------------+------------------------------------------------|
| ~C-b~ | Recule d'un caractère | | ~C-b~ | Recule d'un caractère |
| ~C-f~ | Avance d'un caractère | | ~C-f~ | Avance d'un caractère |
|------------------+--------------------------------------------------| |--------------+------------------------------------------------|
| ~M-b~ | Recule d'un mot | | ~M-b~ | Recule d'un mot |
| ~M-f~ | Avance d'un mot | | ~M-f~ | Avance d'un mot |
|------------------+--------------------------------------------------| |--------------+------------------------------------------------|
| ~C-p~ | Ligne précédente | | ~C-p~ | Ligne précédente |
| ~C-n~ | Ligne suivante | | ~C-n~ | Ligne suivante |
|------------------+--------------------------------------------------| |--------------+------------------------------------------------|
| ~C-a~ | Début de ligne | | ~C-a~ | Début de ligne |
| ~C-e~ | Fin de ligne | | ~C-e~ | Fin de ligne |
|------------------+--------------------------------------------------| |--------------+------------------------------------------------|
| ~M-a~ | Début de la phrase | | ~M-a~ | Début de la phrase |
| ~M-e~ | Fin de la phrase | | ~M-e~ | Fin de la phrase |
| ~M-m~ | Début de l'indentation | | ~M-m~ | Début de l'indentation |
|------------------+--------------------------------------------------| |--------------+------------------------------------------------|
| ~M-g g~ /numéro/ | Positionne le curseur à la ligne numéro /numéro/ | | ~M-g g~ /numéro/ | Positionne le curseur à la ligne numéro /numéro/ |
| | |
Noter qu'on peut généralement utiliser des combinaisons de ~Ctrl~, Noter qu'on peut généralement utiliser des combinaisons de ~Ctrl~,
~Meta~,... avec les touches de déplacement du clavier (comme les ~Meta~,... avec les touches de déplacement du clavier (comme les
...@@ -253,7 +250,7 @@ position courante du curseur Créer une zone consiste donc à poser une ...@@ -253,7 +250,7 @@ position courante du curseur Créer une zone consiste donc à poser une
*marque*, puis à déplacer le curseur pour la délimiter. Tous les *marque*, puis à déplacer le curseur pour la délimiter. Tous les
caractères compris entre ces deux positions font partie de la zone. caractères compris entre ces deux positions font partie de la zone.
| Raccourci | Description | | Raccourci | Description |
|------------------+------------------------------------------| |--------------+------------------------------------------|
| ~C-SPC~ ou ~C-@~ | Pose une *marque* | | ~C-SPC~ ou ~C-@~ | Pose une *marque* |
| ~C-g~ | Supprime la *marque* | | ~C-g~ | Supprime la *marque* |
| ~C-x C-x~ | Inverse la *marque* et le curseur | | ~C-x C-x~ | Inverse la *marque* et le curseur |
...@@ -264,78 +261,78 @@ encadrant une chaîne de caractères, aux paramètres ou au corps d'une ...@@ -264,78 +261,78 @@ encadrant une chaîne de caractères, aux paramètres ou au corps d'une
fonction par exemple, ce qui permet de facilement les sélectionner. fonction par exemple, ce qui permet de facilement les sélectionner.
** Éditer le contenu d'un /buffer/ ** Éditer le contenu d'un /buffer/
Le commandes citées ici concernent essentiellement les *modes* Le commandes citées ici concernent essentiellement les *modes* d'édition
d'édition classiques. Il est possible que pour certains modes les classiques. Il est possible que pour certains modes les raccourcis ne
raccourcis ne fonctionnent pas ou n'aient simplement pas de sens. fonctionnent pas ou n'aient simplement pas de sens. Dans ces modes
Dans ces modes d'édition classiques (modes de saisie par exemple), le d'édition classiques (modes de saisie par exemple), le clavier
clavier fonctionne normalement. On précise simplement ici quelques fonctionne normalement. On précise simplement ici quelques commandes
commandes usuelles. usuelles.
L'action des commandes d'édition décrites ci-dessous est effectuée L'action des commandes d'édition décrites ci-dessous est effectuée
relativement à la position courante du curseur. relativement à la position courante du curseur.
| Raccourci | Description | | Raccourci | Description |
|---------------------------+-------------------------------------------------| |---------------------+---------------------------------------------|
| ~DEL~ | *Efface* un caractère vers la gauche | | ~DEL~ | *Efface* un caractère vers la gauche |
| ~C-d~ ou ~SUPR~ | *Efface* le caractère sous le curseur | | ~C-d~ ou ~SUPR~ | *Efface* le caractère sous le curseur |
|---------------------------+-------------------------------------------------| |---------------------+---------------------------------------------|
| ~DEL~ ou ~SUPR~ | *Efface* une zone sélectionnée | | ~DEL~ ou ~SUPR~ | *Efface* une zone sélectionnée |
|---------------------------+-------------------------------------------------| |---------------------+---------------------------------------------|
| ~C-DEL~, ~M-DEL~ ou ~C-w~ | *Coupe* le mot vers la gauche | | ~C-DEL~, ~M-DEL~ ou ~C-w~ | *Coupe* le mot vers la gauche |
| ~M-d~ | *Coupe* le mot vers la droite | | ~M-d~ | *Coupe* le mot vers la droite |
|---------------------------+-------------------------------------------------| |---------------------+---------------------------------------------|
| ~M-0 C-k~ | *Coupe* jusqu'au début de la ligne | | ~M-0 C-k~ | *Coupe* jusqu'au début de la ligne |
| ~C-k~ | *Coupe* jusqu'à la fin de la ligne | | ~C-k~ | *Coupe* jusqu'à la fin de la ligne |
|---------------------------+-------------------------------------------------| |---------------------+---------------------------------------------|
| ~C-w~ | *Coupe* une zone sélectionnée | | ~C-w~ | *Coupe* une zone sélectionnée |
| ~M-w~ | *Copie* une zone sélectionnée | | ~M-w~ | *Copie* une zone sélectionnée |
| ~M-z~ /caractère/ | *Coupe* jusqu'au prochain caractère /caractère/ | | ~M-z~ /caractère/ | *Coupe* jusqu'au prochain caractère /caractère/ |
|---------------------------+-------------------------------------------------| |---------------------+---------------------------------------------|
| ~C-_~ ou ~C-/~ ou ~C-x u~ | Annule la dernière saisie/commande | | ~C-_~ ou ~C-/~ ou ~C-x u~ | Annule la dernière saisie/commande |
Noter qu'avec cette configuration d'Emacs, si le caractère à effacer Noter qu'avec cette configuration d'Emacs, si le caractère à effacer
est un *blanc*, tous les blancs suivants dans la direction est un *blanc*, tous les blancs suivants dans la direction d'effacement
d'effacement sont supprimés. sont supprimés.
Puisqu'on vient d'aborder comment *copier* ou *couper* une zone du Puisqu'on vient d'aborder comment *copier* ou *couper* une zone du texte,
texte, nous allons décrire le *coller*. Là encore, le vocable Emacs nous allons décrire le *coller*. Là encore, le vocable Emacs n'est pas
n'est pas standard. L'action *couper* dans Emacs se nomme */kill/* et standard. L'action *couper* dans Emacs se nomme */kill/* et *coller*,
*coller*, */yank/*. On comprend ainsi mieux les choix de lettres ~k~ */yank/*. On comprend ainsi mieux les choix de lettres ~k~ et ~y~ dans ce
et ~y~ dans ce contexte. contexte.
| Raccourci | Description | | Raccourci | Description |
|-----------+-------------------------------------------------| |-----------+-------------------------------------------------|
| ~C-y~ | *Colle* la dernière sélection *copiée* | | ~C-y~ | *Colle* la dernière sélection *copiée* |
| ~M-y~ | Remplace le texte collé par la copie précédente | | ~M-y~ | Remplace le texte collé par la copie précédente |
En fait, Emacs conserve toutes les copies en mémoire (/kill-ring/) et En fait, Emacs conserve toutes les copies en mémoire (/kill-ring/) et on
on peut donc les utiliser à tout moment. Dans sa version de base, peut donc les utiliser à tout moment. Dans sa version de base,
parcourir le /kill-ring/ nécessite d'abord un *coller*. C'est-à-dire parcourir le /kill-ring/ nécessite d'abord un *coller*. C'est-à-dire qu'il
qu'il faut effectuer ~C-y~ and de taper ~M-y~ pour le parcourir. faut effectuer ~C-y~ and de taper ~M-y~ pour le parcourir.
Cette configuration d'Emacs utilise ~swiper~ et le parcours du Cette configuration d'Emacs utilise ~swiper~ et le parcours du /kill-ring/
/kill-ring/ est amélioré. En effet, ~swiper~ propose l'utilisation est amélioré. En effet, ~swiper~ propose l'utilisation directe de ~M-y~ et
directe de ~M-y~ et plutôt que de remplacer le texte /en ligne/ comme plutôt que de remplacer le texte /en ligne/ comme le fait la version de
le fait la version de base, on y accède dans le /minibuffer/. On peut base, on y accède dans le /minibuffer/. On peut alors le parcourir, soit
alors le parcourir, soit en continuant à presser ~M-y~, soit en en continuant à presser ~M-y~, soit en utilisant les flèches du clavier,
utilisant les flèches du clavier, soit même en entrant les une partie soit même en entrant les une partie du texte comme pour les
du texte comme pour les [[tab:recherche][recherches]]. [[tab:recherche][recherches]].
** Gestion des /buffers/, fenêtres et cadres ** Gestion des /buffers/, fenêtres et cadres
*** /buffers/ *** /buffers/
Dans cette configuration, on utilise le paquet ~IBuffer~ à la place du Dans cette configuration, on utilise le paquet ~IBuffer~ à la place du
mode ~Buffer~ classique. Il fonctionne avec les mêmes raccourcis mode ~Buffer~ classique. Il fonctionne avec les mêmes raccourcis de
de base. base.
| Raccourci | Description | | Raccourci | Description |
|-------------+--------------------------------| |-----------+------------------------------|
| ~C-x b~ | Choisit un autre /buffer/ | | ~C-x b~ | Choisit un autre /buffer/ |
| ~C-x C-b~ | Ouvre le mode ~IBuffer~ | | ~C-x C-b~ | Ouvre le mode ~IBuffer~ |
|-------------+--------------------------------| |-----------+------------------------------|
| ~C-x k~ | Choisit un /buffer/ à fermer | | ~C-x k~ | Choisit un /buffer/ à fermer |
| ~C-x k RET~ | Ferme le /buffer/ courant | | ~C-x k RET~ | Ferme le /buffer/ courant |
|-------------+--------------------------------| |-----------+------------------------------|
| ~C-x left~ | Retourne au /buffer/ précédent | | ~C-x left~ | Retourne au /buffer/ précédent |
| ~C-x right~ | Retourne au /buffer/ suivant | | ~C-x right~ | Retourne au /buffer/ suivant |
Noter que les raccourcis ~C-x left~ et ~C-x right~ (où ~left~ et Noter que les raccourcis ~C-x left~ et ~C-x right~ (où ~left~ et ~right~
~right~ désignent les flèches du clavier) sont extrêmement utiles et désignent les flèches du clavier) sont extrêmement utiles et il est
il est important de les mémoriser. On parle bien ici de retrouver le important de les mémoriser. On parle bien ici de retrouver le /buffer/
/buffer/ précédent ou suivant dans la même fenêtre. précédent ou suivant dans la même fenêtre.
Lorsqu'on ferme un /buffer/, si les données n'ont pas été sauvegardées Lorsqu'on ferme un /buffer/, si les données n'ont pas été sauvegardées
Emacs invite l'utilisateur à le faire. Emacs invite l'utilisateur à le faire.
...@@ -350,11 +347,10 @@ Emacs invite l'utilisateur à le faire. ...@@ -350,11 +347,10 @@ Emacs invite l'utilisateur à le faire.
|-----------+-------------------------------------------------------| |-----------+-------------------------------------------------------|
| ~C-x o~ | Positionne le curseur dans une autre fenêtre | | ~C-x o~ | Positionne le curseur dans une autre fenêtre |
Pour la gestion des fenêtres, on utilise le mode ~ace-window~ qui Pour la gestion des fenêtres, on utilise le mode ~ace-window~ qui ajoute
ajoute la fonctionnalité suivante. Si plus de deux fenêtres sont la fonctionnalité suivante. Si plus de deux fenêtres sont actives dans
actives dans le cadre courant, ~C-x o~ affiche alors des numéros dans le cadre courant, ~C-x o~ affiche alors des numéros dans chacune des
chacune des fenêtres. On entre ce numéro pour basculer dans la fenêtre fenêtres. On entre ce numéro pour basculer dans la fenêtre choisie.
choisie.
*** Cadres (/frames/) *** Cadres (/frames/)
| Raccourci | Description | | Raccourci | Description |
...@@ -365,7 +361,7 @@ choisie. ...@@ -365,7 +361,7 @@ choisie.
** Fichiers ** Fichiers
| Raccourci | Description | | Raccourci | Description |
|-----------+--------------------------------------------------------| |-----------+------------------------------------------------------|
| ~C-x C-f~ | Recherche incrémentale d'un fichier ou le crée | | ~C-x C-f~ | Recherche incrémentale d'un fichier ou le crée |
| ~C-x C-s~ | Sauvegarde le /buffer/ courant | | ~C-x C-s~ | Sauvegarde le /buffer/ courant |
| ~C-x s~ | Sauvegarde tous les /buffers/ | | ~C-x s~ | Sauvegarde tous les /buffers/ |
...@@ -376,21 +372,20 @@ choisie. ...@@ -376,21 +372,20 @@ choisie.
#+BEGIN_mdframed #+BEGIN_mdframed
*IMPORTANT* *IMPORTANT*
Si on souhaite créer un nouveau fichier avec ~C-x C-f~ Si on souhaite créer un nouveau fichier avec ~C-x C-f~ dont le nom est
dont le nom est une sous chaîne d'un fichier existant, il ne faut pas une sous chaîne d'un fichier existant, il ne faut pas utiliser ~RET~
utiliser ~RET~ pour valider, mais ~C-M-j~. Utiliser ~RET~ valide la pour valider, mais ~C-M-j~. Utiliser ~RET~ valide la recherche.
recherche.
Une autre façon de créer le fichier ~foo~, si un fichier correspondant Une autre façon de créer le fichier ~foo~, si un fichier correspondant à
à l'expression /foo/ existe (par exemple ~foobar~), consiste à l'expression /foo/ existe (par exemple ~foobar~), consiste à interrompre
interrompre la recherche incrémentale en sélectionnant la *zone de la recherche incrémentale en sélectionnant la *zone de saisie* avec les
saisie* avec les flèches puis à taper ~RET~. flèches puis à taper ~RET~.
#+END_mdframed #+END_mdframed
*Ouverture de fichiers/répertoirs distants.* *Ouverture de fichiers/répertoirs distants.* À noter que cette
À noter que cette configuration d'Emacs utilise le mode ~TRAMP~ pour configuration d'Emacs utilise le mode ~TRAMP~ pour (/Transparent Remote
(/Transparent Remote Access, Multiple Protocols/) qui permet Access, Multiple Protocols/) qui permet l'ouverture de fichiers à
l'ouverture de fichiers à distance depuis Emacs. distance depuis Emacs.
Pour que l'édition distante fonctionne, il suffit que la connexion par Pour que l'édition distante fonctionne, il suffit que la connexion par
~ssh~ soit autorisée. ~ssh~ soit autorisée.
...@@ -405,11 +400,11 @@ Pour ouvrir un fichier distant, il suffit d'utiliser le raccourci ...@@ -405,11 +400,11 @@ Pour ouvrir un fichier distant, il suffit d'utiliser le raccourci
#+BEGIN_SRC bash #+BEGIN_SRC bash
/sshx:username@hostname: /sshx:username@hostname:
#+END_SRC #+END_SRC
À partir de là, si on presse ~RET~, Emacs ouvrira un ~dired~ /buffer/ À partir de là, si on presse ~RET~, Emacs ouvrira un ~dired~ /buffer/ (c'est
(c'est à dire un buffer permettant de manipuler les fichiers du à dire un buffer permettant de manipuler les fichiers du répertoire
répertoire ~HOME~ de l'utilisateur sur la machine distante. On peut ~HOME~ de l'utilisateur sur la machine distante. On peut aussi utiliser
aussi utiliser ~TAB~ pour voir alors la liste des fichiers accessibles ~TAB~ pour voir alors la liste des fichiers accessibles dans le
dans le /minibuffer/, la complétion fonctionnant comme en local. /minibuffer/, la complétion fonctionnant comme en local.
Une fois un fichier ouvert, il est manipulé classiquement dans le Une fois un fichier ouvert, il est manipulé classiquement dans le
/buffer/ et seule la sauvegarde du fichier nécessite la connexion. /buffer/ et seule la sauvegarde du fichier nécessite la connexion.
...@@ -417,19 +412,18 @@ Une fois un fichier ouvert, il est manipulé classiquement dans le ...@@ -417,19 +412,18 @@ Une fois un fichier ouvert, il est manipulé classiquement dans le
** Recherche ** Recherche
#+NAME: tab:recherche #+NAME: tab:recherche
| Raccourci | Description | | Raccourci | Description |
|-------------+------------------------------------------------------| |-----------+---------------------------------------------------|
| ~C-s~ | Recherche une chaîne dans le /buffer/ vers le *bas* | | ~C-s~ | Recherche une chaîne dans le /buffer/ vers le *bas* |
| ~C-r~ | Recherche une chaîne dans le /buffer/ vers le *haut* | | ~C-r~ | Recherche une chaîne dans le /buffer/ vers le *haut* |
| ~C-S-s C-w~ | Complète la chaîne à chercher avec le mot courant | | ~C-S-s C-w~ | Complète la chaîne à chercher avec le mot courant |
|-------------+------------------------------------------------------| |-----------+---------------------------------------------------|
| ~C-M-s~ | Recherche une expression régulière vers le *bas* | | ~C-M-s~ | Recherche une expression régulière vers le *bas* |
| ~C-M-r~ | Recherche une expression régulière vers le *haut* | | ~C-M-r~ | Recherche une expression régulière vers le *haut* |
Une fois une occurrence trouvée, on peut poursuivre la recherche vers Une fois une occurrence trouvée, on peut poursuivre la recherche vers
le bas ou vers le haut, en faisant respectivement ~C-s~ ou le bas ou vers le haut, en faisant respectivement ~C-s~ ou
~C-r~. Puisqu'on utilise pas le mode standard de recherche d'Emacs, ~C-r~. Puisqu'on utilise pas le mode standard de recherche d'Emacs, mais
mais le mode ~swiper~, il est possible de naviguer dans le le mode ~swiper~, il est possible de naviguer dans le /minibuffer/ avec
/minibuffer/ avec les flèches pour se déplacer d'une occurrence à les flèches pour se déplacer d'une occurrence à l'autre.
l'autre.
Quand la recherche est terminée, Quand la recherche est terminée,
- soit on utilise ~C-g~ pour revenir où on était quand on a commencé - soit on utilise ~C-g~ pour revenir où on était quand on a commencé
...@@ -437,8 +431,8 @@ Quand la recherche est terminée, ...@@ -437,8 +431,8 @@ Quand la recherche est terminée,
- soit ~RET~ pour continuer l'édition du /buffer/ à la position de - soit ~RET~ pour continuer l'édition du /buffer/ à la position de
l'occurrence. l'occurrence.
Une autre particularité intéressante de ~swiper~ est son utilisation Une autre particularité intéressante de ~swiper~ est son utilisation de
de ~SPC~ qui sert de joker pendant les saisies. Voir par exemple, la ~SPC~ qui sert de joker pendant les saisies. Voir par exemple, la
figure [[fig:recherche-swiper]], où on a lancé une recherche puis tapé figure [[fig:recherche-swiper]], où on a lancé une recherche puis tapé
~y t x(~ dans le /minibuffer/, les lignes correspondantes y sont ~y t x(~ dans le /minibuffer/, les lignes correspondantes y sont
affichées. On peut parcourir cette liste à l'aide des flèches du affichées. On peut parcourir cette liste à l'aide des flèches du
...@@ -469,10 +463,10 @@ remplacer, Emacs attend une validation. ...@@ -469,10 +463,10 @@ remplacer, Emacs attend une validation.
Noter que le mode de remplacement est /intelligent/ au sens où il Noter que le mode de remplacement est /intelligent/ au sens où il
respecte la case si possible. respecte la case si possible.
Si on demande le remplacement de ~foo~ par ~bar~ on obtient les Si on demande le remplacement de ~foo~ par ~bar~ on obtient les résultats
résultats suivants. suivants.
| Chaîne initiale | Résultat | | Chaîne initiale | Résultat |
|-----------------+----------------| |-----------------+--------------|
| ~foobar~ | ~barbar~ | | ~foobar~ | ~barbar~ |
| ~barfooFoobar~ | ~barbarBarbar~ | | ~barfooFoobar~ | ~barbarBarbar~ |
| ~Foobar~ | ~Barbar~ | | ~Foobar~ | ~Barbar~ |
...@@ -480,29 +474,29 @@ résultats suivants. ...@@ -480,29 +474,29 @@ résultats suivants.
** Répétitions et macros ** Répétitions et macros
Il existe de nombreuses façons d'automatiser des actions dans Emacs. Il existe de nombreuses façons d'automatiser des actions dans Emacs.
Les deux plus simples consistent à répéter une action (*macro* ou Les deux plus simples consistent à répéter une action (*macro* ou autre)
autre) ou à créer une macro /interactivement/. ou à créer une macro /interactivement/.
| Raccourci | Description | | Raccourci | Description |
|---------------------------+--------------------------------------------------| |---------------------+----------------------------------------------|
| ~C-u~ /nombre/ /commande/ | Exécute la commande /commande/, /nombre/ de fois | | ~C-u~ /nombre/ /commande/ | Exécute la commande /commande/, /nombre/ de fois |
Par exemple, si on tape ~C-u 10 C-n~, on se déplace de 10 lignes vers Par exemple, si on tape ~C-u 10 C-n~, on se déplace de 10 lignes vers le
le bas dans le fichier. bas dans le fichier.
L'autre manière basique est la création et l'utilisation de macros L'autre manière basique est la création et l'utilisation de macros
/clavier/. /clavier/.
| Raccourci | Description | | Raccourci | Description |
|-----------------+------------------------------------------------------| |-------------+------------------------------------------------------|
| ~C-(~ | Débute la création d'une macro | | ~C-(~ | Débute la création d'une macro |
| ~f3~ | Débute la création d'une macro ou insère le compteur | | ~f3~ | Débute la création d'une macro ou insère le compteur |
| ~C-)~ | Termine la définition d'une macro | | ~C-)~ | Termine la définition d'une macro |
| ~C-x e~ ou ~f4~ | Exécute la dernière macro créée | | ~C-x e~ ou ~f4~ | Exécute la dernière macro créée |
Il est donc très facile de créer et d'exécuter une macro clavier avec Il est donc très facile de créer et d'exécuter une macro clavier avec
Emacs. Mais on peut aller facilement un peu plus loin en utilisant les Emacs. Mais on peut aller facilement un peu plus loin en utilisant les
commandes suivantes. On rappelle que pour exécuter la commande /cmd/, commandes suivantes. On rappelle que pour exécuter la commande /cmd/, il
il suffit de taper ~M-x cmd~. suffit de taper ~M-x cmd~.
| Commande | Description | | Commande | Description |
|-----------------------+------------------------------------------------------| |---------------------+----------------------------------------------------|
| ~insert-kbd-macro~ | Écrit le code (~ELisp~) de la dernière macro définie | | ~insert-kbd-macro~ | Écrit le code (~ELisp~) de la dernière macro définie |
| ~name-last-kbd-macro~ | Donne un nom à la dernière macro définie | | ~name-last-kbd-macro~ | Donne un nom à la dernière macro définie |
...@@ -520,8 +514,8 @@ certaines erreurs de frappe. ...@@ -520,8 +514,8 @@ certaines erreurs de frappe.
En fait, cette configuration utilise ~company~ qui est un moteur de En fait, cette configuration utilise ~company~ qui est un moteur de
complétion plus souple et configurable. Le fonctionnement de ~company~ complétion plus souple et configurable. Le fonctionnement de ~company~
est très intuitif. En effet pendant la saisie de texte, si des est très intuitif. En effet pendant la saisie de texte, si des
complétion sont possibles, une fenêtre /pop-up/ qui les propose complétion sont possibles, une fenêtre /pop-up/ qui les propose apparaît
apparaît (voir figure [[fig:completion-company]]). (voir figure [[fig:completion-company]]).
#+CAPTION: /Pop-up/ présentant les complétions possibles #+CAPTION: /Pop-up/ présentant les complétions possibles
#+NAME: fig:completion-company #+NAME: fig:completion-company
[[file:emacs-company.png]] [[file:emacs-company.png]]
...@@ -542,14 +536,13 @@ déplaçant le curseur vers la droite ou vers la gauche. ...@@ -542,14 +536,13 @@ déplaçant le curseur vers la droite ou vers la gauche.
À noter qu'avec cette configuration, la complétion peut-être beaucoup À noter qu'avec cette configuration, la complétion peut-être beaucoup
plus évoluée selon le mode majeur actif. Par exemple, les modes de plus évoluée selon le mode majeur actif. Par exemple, les modes de
programmation proposent une complétion contextuelle. En mode ~LaTeX~, programmation proposent une complétion contextuelle. En mode ~LaTeX~,
les commandes LaTeX (qui commencent par un ~\~) sont proposées (même les commandes LaTeX (qui commencent par un ~\~) sont proposées (même si
si elles ne sont pas présentes dans les /buffers/ ouverts). De même, elles ne sont pas présentes dans les /buffers/ ouverts). De même, en ~C++~
en ~C++~ ou en ~Python~ par exemple, la complétion est contextuelle ou en ~Python~ par exemple, la complétion est contextuelle (les types et
(les types et variables accessibles, les fonctions ou fonctions variables accessibles, les fonctions ou fonctions membres sont
membres sont proposées). Dans certains cas, la complétion donne accès proposées). Dans certains cas, la complétion donne accès à un mode de
à un mode de remplissage interactif des arguments de fonctions. On remplissage interactif des arguments de fonctions. On passe alors d'un
passe alors d'un arguments au suivant en tapant ~TAB~ et ~S-TAB~ arguments au suivant en tapant ~TAB~ et ~S-TAB~ pour revenir en arrière.
pour revenir en arrière.
* Modes utiles * Modes utiles
On présente ici quelques modes particulièrement utiles. La liste On présente ici quelques modes particulièrement utiles. La liste
...@@ -571,11 +564,11 @@ on a choisi le dictionnaire /american/ qui est finalement souvent le ...@@ -571,11 +564,11 @@ on a choisi le dictionnaire /american/ qui est finalement souvent le
plus utile. plus utile.
On peut cependant facilement choisir localement le dictionnaire dans On peut cependant facilement choisir localement le dictionnaire dans
un /buffer/ en utilisant la commande ~M-x ispell-change-dictionary~ et un /buffer/ en utilisant la commande ~M-x ispell-change-dictionary~ et en
en choisissant le dictionnaire adéquate ou en définissant une variable choisissant le dictionnaire adéquate ou en définissant une variable
locale dans le /buffer/ pour que ce changement intervienne à chaque locale dans le /buffer/ pour que ce changement intervienne à chaque fois
fois que le fichier sera ouvert. Par exemple en LaTeX, on pourra que le fichier sera ouvert. Par exemple en LaTeX, on pourra mettre le
mettre le bloc suivant en fin de fichier. bloc suivant en fin de fichier.
#+BEGIN_SRC emacs-lisp :exports code :eval no #+BEGIN_SRC emacs-lisp :exports code :eval no
% Local Variables: % Local Variables:
% ispell-local-dictionary: "francais" % ispell-local-dictionary: "francais"
...@@ -610,46 +603,46 @@ Emacs possède différentes interfaces à ~git~. Les deux plus abouties ...@@ -610,46 +603,46 @@ Emacs possède différentes interfaces à ~git~. Les deux plus abouties
sont probablement ~magit~ et ~GitGutter~. Ces deux modes sont sont probablement ~magit~ et ~GitGutter~. Ces deux modes sont
complémentaires, ~GitGutter~ permet d'afficher dans le /buffer/ complémentaires, ~GitGutter~ permet d'afficher dans le /buffer/
quelles lignes ont été modifiées et de voir rapidement ce qu'on a quelles lignes ont été modifiées et de voir rapidement ce qu'on a
changé. Quant à ~magit~, c'est une excellent interface à ~git~. En changé. Quant à ~magit~, c'est une excellent interface à ~git~. En fait le
fait le mode ~magit~ à lui seul justifie l'utilisation d'Emacs. mode ~magit~ à lui seul justifie l'utilisation d'Emacs.
*** GitGutter *** GitGutter
Le principe de ~GitGutter~ est d'afficher (en marge de gauche) les Le principe de ~GitGutter~ est d'afficher (en marge de gauche) les
modifications faites au fichier. La mise à jour (pour ne pas modifications faites au fichier. La mise à jour (pour ne pas
surcharger l'outil est effectuée à la sauvegarde du fichier). surcharger l'outil est effectuée à la sauvegarde du fichier).
Cette configuration interface ~GitGutter~ avec ~Hydra~ ce qui permet Cette configuration interface ~GitGutter~ avec ~Hydra~ ce qui permet de
de simplifier l'utilisation des raccourcis clavier. simplifier l'utilisation des raccourcis clavier.
| Raccourci | Description | | Raccourci | Description |
|-----------+--------------------------------------------| |-----------+--------------------------------------|
| ~M-g M-g~ | Ouvre le /pop-up/ ~Hydra~ pour ~GitGutter~ | | ~M-g M-g~ | Ouvre le /pop-up/ ~Hydra~ pour ~GitGutter~ |
Une fois qu'on a tapé ~M-g M-g~ une fenêtre /pop-up/ apparaît et on Une fois qu'on a tapé ~M-g M-g~ une fenêtre /pop-up/ apparaît et on peut
peut alors suivre les indications pour effectuer les commandes de alors suivre les indications pour effectuer les commandes de révision
révision de la version. C'est-à-dire, qu'on peut parcourir les de la version. C'est-à-dire, qu'on peut parcourir les changements,
changements, afficher les changements, ou annuler des changements. afficher les changements, ou annuler des changements.
On peut également *ajouter* des zones particulières pour préparer un On peut également *ajouter* des zones particulières pour préparer un
commit ~git~ mais pour ce genre d'opérations, on préférera utiliser commit ~git~ mais pour ce genre d'opérations, on préférera utiliser
~Magit~. ~Magit~.
*** Magit *** Magit
~Magit~ est une superbe interface à ~git~ pour Emacs. Encore une fois, ~Magit~ est une superbe interface à ~git~ pour Emacs. Encore une fois, il
il ne serait pas raisonnable de tenter de fournir une documentation ne serait pas raisonnable de tenter de fournir une documentation
complète du mode dans ce tutoriel. On se contentera de décrire complète du mode dans ce tutoriel. On se contentera de décrire
simplement quelques éléments de son fonctionnement. Pour une simplement quelques éléments de son fonctionnement. Pour une
description plus précise, on se référera au site [[https://magit.vc/][web]] de ~Magit~. Enfin description plus précise, on se référera au site [[https://magit.vc/][web]] de ~Magit~. Enfin
il est important de préciser que l'aide en ligne de ~Magit~ est il est important de préciser que l'aide en ligne de ~Magit~ est
simplement excellente. simplement excellente.
| Raccourci | Description | | Raccourci | Description |
|-----------+----------------------------------| |-----------+--------------------------------|
| ~C-x g~ | Lance git dans un autre /buffer/ | | ~C-x g~ | Lance git dans un autre /buffer/ |
Le /buffer/ ~Magit~ (obtenu en tapant donc ~C-x g~) n'est pas un Le /buffer/ ~Magit~ (obtenu en tapant donc ~C-x g~) n'est pas un /buffer/
/buffer/ d'édition, mais un /buffer/ spécial. Dans ce /buffer/, les d'édition, mais un /buffer/ spécial. Dans ce /buffer/, les touches du
touches du clavier sont directement surchargées. On a ainsi accès à clavier sont directement surchargées. On a ainsi accès à des nouveaux
des nouveaux raccourcis très simples. raccourcis très simples.
| Raccourci ~Magit~ | Description | | Raccourci ~Magit~ | Description |
|-------------------+---------------------------------------------------------| |-----------------+---------------------------------------------------------|
| ~h~ | Affiche l'aide en ligne | | ~h~ | Affiche l'aide en ligne |
| ~TAB~ | (dé)plie la zone du curseur | | ~TAB~ | (dé)plie la zone du curseur |
| ~RET~ | Affiche la zone du curseur | | ~RET~ | Affiche la zone du curseur |
...@@ -685,18 +678,18 @@ qui ne sera pas abordé dans ce tutoriel. ...@@ -685,18 +678,18 @@ qui ne sera pas abordé dans ce tutoriel.
plupart des fonctionnalités utiles à l'édition LaTeX. plupart des fonctionnalités utiles à l'édition LaTeX.
Nous rappelons ici quelques raccourcis de base. Pour aller accéder à Nous rappelons ici quelques raccourcis de base. Pour aller accéder à
la documentation complète d'~AUCTeX~, on peut parcourir l'aide la documentation complète d'~AUCTeX~, on peut parcourir l'aide intégrée
intégrée d'Emacs en tapant ~C-h i~ et en consultant la rubrique qui d'Emacs en tapant ~C-h i~ et en consultant la rubrique qui lui est
lui est associée. associée.
**** Typographie **** Typographie
Pour les changements de styles typographiques, tous les raccourcis Pour les changements de styles typographiques, tous les raccourcis
débutent par la séquence ~C-c C-f~. Le changement de fonte dépend du débutent par la séquence ~C-c C-f~. Le changement de fonte dépend du
contexte de saisie~: texte ou mathématique. Noter que si on saisit contexte de saisie~: texte ou mathématique. Noter que si on saisit
~C-c C-f~ suivit de n'importe quel caractère Emacs affiche la liste ~C-c C-f~ suivit de n'importe quel caractère Emacs affiche la liste des
des possibilités. possibilités.
| Raccourcis | Style | Comm. (texte) | Style | Comm. (math) | | Raccourcis | Style | Comm. (texte) | Style | Comm. (math) |
|---------------+-------------------+---------------+-------------------+---------------| |-------------+-------------------+---------------+-------------------+--------------|
| ~C-c C-f C-a~ | -- | -- | calligraphique | =\mathcal= | | ~C-c C-f C-a~ | -- | -- | calligraphique | =\mathcal= |
| ~C-c C-f C-b~ | gras | =\textbf= | gras | =\mathbf= | | ~C-c C-f C-b~ | gras | =\textbf= | gras | =\mathbf= |
| ~C-c C-f C-c~ | petites capitales | =\textsc= | -- | -- | | ~C-c C-f C-c~ | petites capitales | =\textsc= | -- | -- |
...@@ -712,9 +705,9 @@ des possibilités. ...@@ -712,9 +705,9 @@ des possibilités.
Noter que si une région est sélectionnée, la commande est appliquée à Noter que si une région est sélectionnée, la commande est appliquée à
la région, sinon, le curseur est positionné entre les accolades. la région, sinon, le curseur est positionné entre les accolades.
Enfin, si on préfixe les raccourcis précédents par ~C-u~ alors, le Enfin, si on préfixe les raccourcis précédents par ~C-u~ alors, le style
style est remplacé par le style demandé. Par exemple, si on avait le est remplacé par le style demandé. Par exemple, si on avait le texte
texte suivant suivant
#+BEGIN_SRC latex :exports code #+BEGIN_SRC latex :exports code
\emph{Un texte} \emph{Un texte}
#+END_SRC #+END_SRC
...@@ -724,8 +717,7 @@ si on utilise la commande ~C-u C-c C-f C-b~, il sera transformé en ...@@ -724,8 +717,7 @@ si on utilise la commande ~C-u C-c C-f C-b~, il sera transformé en
#+END_SRC #+END_SRC
**** Sections **** Sections
AUCTeX propose moyen de créer les éléments structurants du AUCTeX propose moyen de créer les éléments structurants du document.
document.
| Raccourci | Description | | Raccourci | Description |
|-----------+------------------| |-----------+------------------|
| ~C-c C-s~ | Crée une section | | ~C-c C-s~ | Crée une section |
...@@ -746,40 +738,40 @@ possibles sont proposés dans le /minibuffer/ et éventuellement, on ...@@ -746,40 +738,40 @@ possibles sont proposés dans le /minibuffer/ et éventuellement, on
propose de saisir un label. propose de saisir un label.
Comme dans le cas des changements typographiques, si une région était Comme dans le cas des changements typographiques, si une région était
sélectionnée, les balises ~begin~ et ~end~ entourent la zone. Sinon, sélectionnée, les balises ~begin~ et ~end~ entourent la zone. Sinon, le
le curseur est placé entre les balises. curseur est placé entre les balises.
**** Compilation et visualisation **** Compilation et visualisation
| Raccourci | Description | | Raccourci | Description |
|------------------------+----------------------------------| |--------------------+----------------------------------|
| ~C-c C-c~ ou ~C-c C-z~ | Accède à une commande LaTeX | | ~C-c C-c~ ou ~C-c C-z~ | Accède à une commande LaTeX |
| ~C-c C-k~ | Tue le processus LaTeX actif | | ~C-c C-k~ | Tue le processus LaTeX actif |
| ~C-c C-l~ | Affiche la sortie de compilation | | ~C-c C-l~ | Affiche la sortie de compilation |
En fait, lorsqu'on invoque ~C-c C-c~ ou ~C-c C-z~, la liste des En fait, lorsqu'on invoque ~C-c C-c~ ou ~C-c C-z~, la liste des commandes
commandes proposées comprend la compilation du document, la proposées comprend la compilation du document, la compilation de la
compilation de la bibliographie, la visualisation du document bibliographie, la visualisation du document produit,... Par défaut
produit,... Par défaut ~AUCTeX~ propose l'action qu'il juge ~AUCTeX~ propose l'action qu'il juge naturelle. Par exemple, si le
naturelle. Par exemple, si le document n'a pas besoin d'être recompilé document n'a pas besoin d'être recompilé il proposera sa
il proposera sa visualisation. visualisation.
Cette configuration utilise ~pdf-tools~ pour visualiser les documents Cette configuration utilise ~pdf-tools~ pour visualiser les documents
produits. Cela a plusieurs avantages, les ~pdf~ sont affichés produits. Cela a plusieurs avantages, les ~pdf~ sont affichés
directement dans Emacs (dans une nouvelle *fenêtre*, mais on peut directement dans Emacs (dans une nouvelle *fenêtre*, mais on peut
évidemment utiliser un autre *cadre*. De plus, on utilise ~synctex~ évidemment utiliser un autre *cadre*. De plus, on utilise ~synctex~ qui
qui permet de synchroniser le source ~tex~ et le ~pdf~ produit. Ainsi permet de synchroniser le source ~tex~ et le ~pdf~ produit. Ainsi si on
si on utilise ~C-mouse1~ ou le double-clic (~mouse1 mouse1~) sur une utilise ~C-mouse1~ ou le double-clic (~mouse1 mouse1~) sur une zone du
zone du document ~pdf~ produit, Emacs positionne le curseur sur la document ~pdf~ produit, Emacs positionne le curseur sur la partie du
partie du source LaTeX associé. De même, on peut visualiser la zone du source LaTeX associé. De même, on peut visualiser la zone du document
document ~pdf~ correspondant au curseur dans les sources en utilisant ~pdf~ correspondant au curseur dans les sources en utilisant le
le raccourci ~C-c C-g~. On rappelle dans le tableau suivant quelques raccourci ~C-c C-g~. On rappelle dans le tableau suivant quelques
raccourcis utiles pour la visualisation. raccourcis utiles pour la visualisation.
| Raccourci | Description | | Raccourci | Description |
|-----------------------------+------------------------------------------------------------| |---------------------------+----------------------------------------------------------|
| dans les sources | | | dans les sources | |
| ~C-c C-a~ | Génère et affiche le ~pdf~ (enchaîne toutes les commandes) | | ~C-c C-a~ | Génère et affiche le ~pdf~ (enchaîne toutes les commandes) |
| ~C-c C-v~ | Affiche le ~pdf~ s'il existe | | ~C-c C-v~ | Affiche le ~pdf~ s'il existe |
| ~C-c C-g~ | Synchronise la vue du ~pdf~ avec les sources au curseur | | ~C-c C-g~ | Synchronise la vue du ~pdf~ avec les sources au curseur |
|-----------------------------+------------------------------------------------------------| |---------------------------+----------------------------------------------------------|
| dans le ~pdf~ | | | dans le ~pdf~ | |
| ~C-mouse1~ (ou double clic) | Positionne le curseur dans les sources correspondantes | | ~C-mouse1~ (ou double clic) | Positionne le curseur dans les sources correspondantes |
| ~PageUp~ | Aller à la page précédente | | ~PageUp~ | Aller à la page précédente |
...@@ -790,11 +782,11 @@ raccourcis utiles pour la visualisation. ...@@ -790,11 +782,11 @@ raccourcis utiles pour la visualisation.
| ~N~ | Retourne en avant (inverse de ~B~) | | ~N~ | Retourne en avant (inverse de ~B~) |
*** RefTeX *** RefTeX
~AUCTeX~ est distribué avec ~RefTeX~ qui est un mode mineur qui permet ~AUCTeX~ est distribué avec ~RefTeX~ qui est un mode mineur qui permet une
une gestion simplifiée des références. Que ce soient des références à gestion simplifiée des références. Que ce soient des références à des
des équations, des figures, des tables ou des citations équations, des figures, des tables ou des citations
bibliographiques. ~RefTeX~ analyse le fichier source (ou les fichiers bibliographiques. ~RefTeX~ analyse le fichier source (ou les fichiers si
si nécessaire) pour déterminer les références possibles. nécessaire) pour déterminer les références possibles.
| Raccourci | Description | | Raccourci | Description |
|-----------+-------------------------------------------------| |-----------+-------------------------------------------------|
| ~C-c (~ | Ajoute un label | | ~C-c (~ | Ajoute un label |
...@@ -819,12 +811,12 @@ On utilise le paquet ~jedi~ qui gère la complétion dans Emacs pour ...@@ -819,12 +811,12 @@ On utilise le paquet ~jedi~ qui gère la complétion dans Emacs pour
~Python~. On se reportera donc à la documentation en ligne ~Python~. On se reportera donc à la documentation en ligne
[[http://tkf.github.io/emacs-jedi/latest/]], pour plus d'informations. [[http://tkf.github.io/emacs-jedi/latest/]], pour plus d'informations.
| Raccourci | Description | | Raccourci | Description |
|-----------+-------------------------------------------------------------------| |-----------+-----------------------------------------------------------------|
| ~C-c C-c~ | Exécute le script | | ~C-c C-c~ | Exécute le script |
| ~C-c C-z~ | Passe du /buffer/ du code à la console d'exécution ou inversement | | ~C-c C-z~ | Passe du /buffer/ du code à la console d'exécution ou inversement |
Il existe également, une interface à ~Jupyter~, mais cette dernière Il existe également, une interface à ~Jupyter~, mais cette dernière ne
ne fait pas partie de cette configuration. fait pas partie de cette configuration.
Enfin, si on exécute les scripts dans Emacs ~C-c C-c~, le terminal Enfin, si on exécute les scripts dans Emacs ~C-c C-c~, le terminal
occupe un /buffer/ interactif (c'est-à-dire qu'on peut y entrer des occupe un /buffer/ interactif (c'est-à-dire qu'on peut y entrer des
...@@ -844,10 +836,10 @@ d'installation). ...@@ -844,10 +836,10 @@ d'installation).
| ~C-c C-c~ | Affiche l'invite de compilation dans le /minibuffer/ | | ~C-c C-c~ | Affiche l'invite de compilation dans le /minibuffer/ |
| ~C-c `~ | Positionne le curseur à la première erreur de compilation | | ~C-c `~ | Positionne le curseur à la première erreur de compilation |
Le /buffer/ de compilation est interactif : si on clique sur un Le /buffer/ de compilation est interactif : si on clique sur un message
message d'erreur, les sources sont ouvertes et le curseur est d'erreur, les sources sont ouvertes et le curseur est positionné à
positionné à l'endroit correspondant. Il est donc très pratique de l'endroit correspondant. Il est donc très pratique de compiler dans
compiler dans Emacs plutôt que dans un terminal. Emacs plutôt que dans un terminal.
On notera également que si on laisse le curseur positionné sur un mot On notera également que si on laisse le curseur positionné sur un mot
du code source, le /minibuffer/ affiche des informations concernant le du code source, le /minibuffer/ affiche des informations concernant le
...@@ -878,7 +870,7 @@ d'occurrences de textes et même si elle est plutôt efficace, il est ...@@ -878,7 +870,7 @@ d'occurrences de textes et même si elle est plutôt efficace, il est
parfois possible que les références ne correspondent pas au même parfois possible que les références ne correspondent pas au même
objet. objet.
| Raccourci | Description | | Raccourci | Description |
|-----------+-----------------------------------------------------------------| |-----------+---------------------------------------------------------------|
| ~M-.~ | Cherche un /tag/ | | ~M-.~ | Cherche un /tag/ |
| ~C-M-.~ | Cherche les /tags/ qui correspondent à une expression régulière | | ~C-M-.~ | Cherche les /tags/ qui correspondent à une expression régulière |
| ~M-,~ | Continue à chercher un /tag/ | | ~M-,~ | Continue à chercher un /tag/ |
...@@ -888,19 +880,19 @@ objet. ...@@ -888,19 +880,19 @@ objet.
Dans ce contexte, on rappelle que pour revenir dans le /buffer/ il est Dans ce contexte, on rappelle que pour revenir dans le /buffer/ il est
conseillé d'utiliser les raccourcis de navigation classiques : conseillé d'utiliser les raccourcis de navigation classiques :
| Raccourci | Description | | Raccourci | Description |
|-------------+--------------------------------| |-----------+------------------------------|
| ~C-x left~ | Retourne au /buffer/ précédent | | ~C-x left~ | Retourne au /buffer/ précédent |
| ~C-x right~ | Retourne au /buffer/ suivant | | ~C-x right~ | Retourne au /buffer/ suivant |
*** YASnippet *** YASnippet
Il n'est pas envisageable d'écrire un tutoriel Emacs sans évoquer les Il n'est pas envisageable d'écrire un tutoriel Emacs sans évoquer les
~snippets~. Commençons donc par rappeler de quoi il s'agit. Les ~snippets~. Commençons donc par rappeler de quoi il s'agit. Les ~snippets~
~snippets~ (littéralement *fragments* en français) sont des patrons (littéralement *fragments* en français) sont des patrons (/template/) de
(/template/) de code qui évitent de taper toujours et encore des code qui évitent de taper toujours et encore des motifs de code qui se
motifs de code qui se répètent. Emacs offre depuis très longtemps des répètent. Emacs offre depuis très longtemps des ~snippets~ qui
~snippets~ qui permettent souvent de n'écrire que les zones du code permettent souvent de n'écrire que les zones du code faisant
faisant sens. ~YASnippet~ s'est imposé comme la version la plus sens. ~YASnippet~ s'est imposé comme la version la plus aboutie et est
aboutie et est maintenant la plus utilisée. maintenant la plus utilisée.
Il faut bien intégrer le fait que les ~snippets~ ne sont pas des Il faut bien intégrer le fait que les ~snippets~ ne sont pas des
morceaux de code simplement insérés mais de véritables modèles. Quand morceaux de code simplement insérés mais de véritables modèles. Quand
...@@ -913,30 +905,29 @@ impressionnante de modèles. Ces patrons sont accessibles selon le ...@@ -913,30 +905,29 @@ impressionnante de modèles. Ces patrons sont accessibles selon le
contexte d'édition : les patrons utiles au ~Python~, à la rédaction contexte d'édition : les patrons utiles au ~Python~, à la rédaction
LaTeX ou au ~C++~, par exemple ne sont proposés que dans leur mode. Au LaTeX ou au ~C++~, par exemple ne sont proposés que dans leur mode. Au
vu de leur nombre, il serait impensable d'en faire une quelconque vu de leur nombre, il serait impensable d'en faire une quelconque
liste ici, mais on peut en avoir la liste dans le menu ~YASnippet~ ou liste ici, mais on peut en avoir la liste dans le menu ~YASnippet~ ou en
en tapant la commande ~M-x yas-describe-tables~ qui ouvre un buffer tapant la commande ~M-x yas-describe-tables~ qui ouvre un buffer
contenant tous les ~snippets~ disponibles. contenant tous les ~snippets~ disponibles.
Un autre avantage de ~YASnippet~ est qu'il est très facile d'ajouter Un autre avantage de ~YASnippet~ est qu'il est très facile d'ajouter de
de nouveaux modèles, mais nous ne décrivons pas la procédure ici (voir nouveaux modèles, mais nous ne décrivons pas la procédure ici (voir
[[http://joaotavora.github.io/yasnippet]] pour les détails). [[http://joaotavora.github.io/yasnippet]] pour les détails).
| Raccourci | Description | | Raccourci | Description |
|-----------+---------------------| |-----------+---------------------|
| ~C-RET~ | Développe le modèle | | ~C-RET~ | Développe le modèle |
Dans cette configuration, on a désactivé le raccourci usuel +~TAB~+, Dans cette configuration, on a désactivé le raccourci usuel +~TAB~+, qui
qui pouvait avoir des effets inattendus et désagréables, au profit de pouvait avoir des effets inattendus et désagréables, au profit de
~C RET~. En effet, l'effet principal de ~TAB~ est l'indentation du ~C RET~. En effet, l'effet principal de ~TAB~ est l'indentation du code,
code, mais si le /mini-mode/ de ~YASnippet~ interceptait un mais si le /mini-mode/ de ~YASnippet~ interceptait un développement de
développement de modèle possible, il prenait la main et remplaçait modèle possible, il prenait la main et remplaçait l'indentation
l'indentation demandée par une expansion de modèle. Le nouveau demandée par une expansion de modèle. Le nouveau raccourci reste
raccourci reste simple et n'interfère plus avec les fonctions simple et n'interfère plus avec les fonctions usuelles.
usuelles.
On termine cette courte introduction en donnant un exemple On termine cette courte introduction en donnant un exemple
d'utilisation en ~C++~. Si on écrit ~cls~ et si on utilise d'utilisation en ~C++~. Si on écrit ~cls~ et si on utilise immédiatement
immédiatement le raccourci ~C-RET~, le modèle (simple) de *classe* est le raccourci ~C-RET~, le modèle (simple) de *classe* est utilisé. On
utilisé. On obtient alors obtient alors
#+BEGIN_SRC C++ :exports code #+BEGIN_SRC C++ :exports code
class Name class Name
{ {
...@@ -970,15 +961,14 @@ Cet exemple simple illustre bien l'efficacité de l'approche. ...@@ -970,15 +961,14 @@ Cet exemple simple illustre bien l'efficacité de l'approche.
** Pliage et dépliage avec ~narrow-or-widen-dwim~ ** Pliage et dépliage avec ~narrow-or-widen-dwim~
Emacs propose des fonctions de (dé)-pliage de zones. La dénomination Emacs propose des fonctions de (dé)-pliage de zones. La dénomination
pour ces fonctionnalités dans Emacs est /narrowing/ (pliage) et pour ces fonctionnalités dans Emacs est /narrowing/ (pliage) et /widening/
/widening/ (dépliage). (dépliage).
Il s'agit d'un outil très puissant pour l'édition avec Emacs. Son Il s'agit d'un outil très puissant pour l'édition avec Emacs. Son
fonctionnement n'est pas de cacher des zones de texte comme le fonctionnement n'est pas de cacher des zones de texte comme le
proposent de nombreux outils, mais de modifier le /buffer/ pour qu'il proposent de nombreux outils, mais de modifier le /buffer/ pour qu'il ne
ne contienne plus que la région sélectionnée. Le /buffer/ *n'est donc contienne plus que la région sélectionnée. Le /buffer/ *n'est donc plus*
plus* le reflet du fichier édité, mais simplement le reflet de la le reflet du fichier édité, mais simplement le reflet de la zone.
zone.
Les modifications apportées à la zone sont donc bien sauvées dans le Les modifications apportées à la zone sont donc bien sauvées dans le
fichier, mais on ne peut plus modifier le reste du fichier. C'est donc fichier, mais on ne peut plus modifier le reste du fichier. C'est donc
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment