Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
dot-emacs
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Stéphane Del Pino
dot-emacs
Commits
e827b992
You need to sign in or sign up before continuing.
Commit
e827b992
authored
Apr 8, 2020
by
Stéphane Del Pino
Browse files
Options
Downloads
Patches
Plain Diff
Ajout de la courte introduction à YASnippet
parent
a73e9e09
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
Tutoriel.org
+75
-4
75 additions, 4 deletions
Tutoriel.org
with
75 additions
and
4 deletions
Tutoriel.org
+
75
−
4
View file @
e827b992
...
...
@@ -708,13 +708,11 @@ 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
style est remplacé par le style demandé. Par exemple, si on avait le
texte suivant
#+header: :exports code
#+BEGIN_SRC latex
#+BEGIN_SRC latex :exports code
\emph{Un texte}
#+END_SRC
si on utilise la commande ~C-u C-c C-f C-b~, il sera transformé en
#+header: :exports code
#+BEGIN_SRC latex
#+BEGIN_SRC latex :exports code
\textbf{Un texte}
#+END_SRC
...
...
@@ -888,6 +886,79 @@ conseillé d'utiliser les raccourcis de navigation classiques :
| ~C-x left~ | Retourne au /buffer/ précédent |
| ~C-x right~ | Retourne au /buffer/ suivant |
*** YASnippet
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~ (littéralement *fragments* en français) sont des patrons
(/template/) de code qui évitent de taper toujours et encore des
motifs de code qui se répètent. Emacs offre depuis très longtemps des
~snippets~ qui permettent souvent de n'écrire que les zones du code
faisant sens. ~YASnippet~ s'est imposé comme la version la plus
aboutie et est maintenant la plus utilisée.
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
on les utilise, Emacs invite l'utilisateur à renseigner certains
champs (en ligne) ce qui permet d'obtenir directement le code
correspondant au patron sans autre modification.
Notons également que ~YASnippet~ est livré avec une collection
impressionnante de modèles. Ces patrons sont accessibles selon le
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
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
en tapant la commande ~M-x yas-describe-tables~ qui ouvre un buffer
contenant tous les ~snippets~ disponibles.
Un autre avantage de ~YASnippet~ est qu'il est très facile d'ajouter
de nouveaux modèles, mais nous ne décrivons pas la procédure ici (voir
[[http://joaotavora.github.io/yasnippet]] pour les détails).
| Raccourci | Description |
|-----------+---------------------|
| ~C-RET~ | Développe le modèle |
Dans cette configuration, on a désactivé le raccourci usuel +~TAB~+,
qui 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
code, mais si le /mini-mode/ de ~YASnippet~ interceptait un
développement de modèle possible, il prenait la main et remplaçait
l'indentation demandée par une expansion de modèle. Le nouveau
raccourci reste simple et n'interfère plus avec les fonctions
usuelles.
On termine cette courte introduction en donnant un exemple
d'utilisation en ~C++~. Si on écrit ~cls~ et si on utilise
immédiatement le raccourci ~C-RET~, le modèle (simple) de *classe* est
utilisé. On obtient alors
#+BEGIN_SRC c++ :exports code
class Name
{
public:
Name();
virtual ~Name();
};
#+END_SRC
Le curseur est alors positionné sur le premier ~Name~ qui est en fait
éditable. On est toujours en train d'appliquer le modèle et il suffit
maintenant (sans autre action) d'entrer le nom de la classe. Par
exemple, si on écrit ~Tableau~ (une seule fois), on obtient
#+BEGIN_SRC c++ :exports code
class Tableau
{
public:
Tableau();
virtual ~Tableau();
};
#+END_SRC
On n'a modifié qu'un champ pour obtenir ce résultat. ~TAB~ permet de
passer au champ suivant s'il y en a d'autres et ~S-TAB~ (ou ~backtab~)
permet de revenir à l'édition d'un champ précédent. Pour obtenir ce
résultat, on a simplement pressé la suite de touches suivantes.
#+BEGIN_EXAMPLE
c l s C-RET T a b l e a u
#+END_EXAMPLE
Cet exemple simple illustre bien l'efficacité de l'approche.
* Pour aller plus loin
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment