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
bd1b0f5d
Commit
bd1b0f5d
authored
Apr 16, 2020
by
Stéphane Del Pino
Browse files
Options
Downloads
Patches
Plain Diff
Fin (?) de la description Org-mode
parent
293c8d44
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
Tutoriel.org
+133
-22
133 additions, 22 deletions
Tutoriel.org
with
133 additions
and
22 deletions
Tutoriel.org
+
133
−
22
View file @
bd1b0f5d
...
@@ -962,32 +962,137 @@ Cet exemple simple illustre bien l'efficacité de l'approche.
...
@@ -962,32 +962,137 @@ Cet exemple simple illustre bien l'efficacité de l'approche.
** Org-mode
** Org-mode
Une fois encore, il est inenvisageable de faire un tour complet de ce
Une fois encore, il est inenvisageable de faire un tour complet de ce
mode dans un tel document. On va donc seulement tracer les grandes
mode dans un tel document. On va donc seulement
en
tracer les grandes
lignes certaines des fonctionnalités
d'~Org-mode~
. Pour vraiment en
lignes
et décrire
certaines de
se
s fonctionnalités. Pour vraiment en
appréhender les possibilités, il faut consulter les multiples
appréhender les possibilités, il faut consulter les multiples
ressources disponibles sur le net, et en particulier des vidéos de
ressources disponibles sur le net, et en particulier des vidéos de
démonstration.
démonstration
s
.
Initialement, ~Org-mode~ est un outil conçu pour la gestion, le suivi et
Initialement, ~Org-mode~ est un outil conçu pour la gestion, le suivi et
l'archivage de tâches personnelles. La gestion d'agenda n'étant
l'archivage de tâches personnelles. La gestion d'agenda n'en est plus
finalement devenu qu'un aspect mineur. En fait, son intégration à
aujourd'hui qu'un aspect mineur. Son intégration à Emacs est
Emacs est extrêmement poussée et tire profit de l'interopérabilité des
extrêmement poussée[fn:1] et tire profit de l'interopérabilité des
différents modes d'Emacs.
différents modes d'Emacs. Il bénéficie donc d'une extensibilité assez
spectaculaire. En fait, ~Org-mode~ définit en fait un véritable langage
Ce document (et ce n'est qu'un exemple très simple) est rédigé en
de (méta-)programmation et utilise son propre format de fichier ~.org~.
~org-mode~, de même qu'en particulier le fichier de configuration
[[Configuration.org]] (ce qui est devenu un standard de nos jours).
Même si un document ~Org-mode~ est *lisible* avec n'importe quel éditeur
La raison pour laquelle on préfère écrire une configuration en
de texte, de nombreux rendus sont possibles : ~Markdown~, texte (ASCII
~Org-mode~ plutôt que directement en ~Elisp~ est qu'il donne une véritable
ou UTF-8), ~PDF~ (générés en LaTeX), ~HTML~, ~OpenDocument~,... On peut
à la fois une véritable structure au document.
publier des /blogs/, générer des présentations (~Beamer~ ou autres). Et
~Org-mode~ permet beaucoup d'autres choses encore.
En fait, l'un des avantages d'~Org-mode~ est qu'il permet d'insérer des
blocs de code (dans de nombreux langages) qu'il est possible d'évaluer
L'une des forces d'~Org-mode~ est la possibilité d'insérer des blocs de
soit localement, soit globalement. Dans le cas de l'~ELisp~,
code (dans de nombreux langages) directement dans le
l'évaluation de ces blocs n'est autre que la configuration. Mais il
document. ~Org-mode~ peut alors les évaluer en les compilant ou en les
est aussi possible de récupérer le résultat de l'exécution et de
exécutant par exemple. Dans un même document, on peut par exemple
l'insérer automatiquement au document. De ce fait, le document est
utiliser des programmes ~C++~ ou ~Python~, des script ~shell~, des commandes
extrêmement dynamique.
LaTeX, des instructions ~gnuplot~, tracer des graphes ou des diagrammes
avec ~dot~,... ~Org-mode~ permet en plus de faire communiquer ces
différents programmes. Dans un document ~Org-mode~, il est possible
d'afficher des images en ligne. On peut aussi créer des tableaux
dynamiques (provenant d'évaluations de blocs de code par exemple) ou
statiques. On peut écrire des formules mathématiques en ligne, c'est à
dire sans définir des zones de code source, en utilisant directement
des formules LaTeX (~$(a+b)^2 = a^2+2ab+b^2$~ est interprété directement
$(a+b)^2 = a^2+2ab+b^2$),...
Ce document (et ce n'est qu'un exemple *très* simple) est rédigé en
~Org-mode.~ C'est aussi le cas du fichier de configuration
[[file:Configuration.org][(Configuration.org]]). Cette pratique est devenue un standard de nos
jours. On préfère écrire une configuration en ~Org-mode~ plutôt que
directement en ~Elisp~. Cela donne une véritable structure au document
et donc, en améliore beaucoup la lisibilité. Au delà, on peut même
exporter le contenu (en ~HTML~ par exemple) pour obtenir une véritable
documentation de la configuration. Notons aussi que ~Gitlab~ et ~Github~
affichent raisonnablement le contenu des fichiers ~.org~ (sans toute
fois interpréter les zones de code ou les équations LaTeX). C'est
commode pour partager une configuration.
Dans le cas d'un fichier de configuration, ces blocs sont
principalement des morceaux de codes ~ELisp~ dont l'évaluation modifie
le comportement d'Emacs. Mais, en général, il est aussi possible de
récupérer le résultat de l'exécution et de l'insérer automatiquement
dans le document. De ce fait, le document est extrêmement
dynamique. La rédaction de documentations ou de tutoriels par exemple
est donc grandement facilité, puisqu'Emacs vérifie par l'évaluation du
document ~Org-mode~ que tous les morceaux de code sont valides et met à
jour les résultats.
Par certains aspects, ~Org-mode~ est similaire à certains langages de
description de contenus comme par exemple ~Markdown~, puisqu'il est très
simple de définir des hiérarchies de sections, des listes, des
hyperliens, de créer des tableaux,...
Par exemple pour créer une section de niveau $n$, on débute une ligne
avec $n$ étoiles ($\star$) consécutives suivies d'un espace et du
titre. La création d'une liste est tout aussi simple, il suffit par
exemple de commencer les lignes par un tiret ($-$), l'indentation
définit le niveau de l'item.
On termine cette très brève introduction par un rappel de quelques
raccourcis basiques.
Les raccourcis suivants fonctionnent pour les sections et les
listes. Les mêmes raccourcis ont des effets voisins dans les tableaux,
voir plus bas.
| Raccourci | Description |
|-------------------+---------------------------------------------------------------|
| ~M-up~ | Échange l'élément avec l'élément précédent (de même niveau) |
| ~M-down~ | Échange l'élément avec l'élément suivant (de même niveau ) |
| ~M-left~ | Diminue le niveau de l'élément (plus haut dans la hiérarchie) |
| ~M-right~ | Augmente le niveau de l'élément (plus bas dans la hiérarchie) |
| ~TAB~ | Plie ou déplie le contenu |
| ~S-left~ ou ~S-right~ | Modifie le statut de l'élément (~TODO~, ~DONE~,...) |
| ~M-RET~ | Crée un élément de même niveau que l'élément courant |
Dans le cas des listes, ~S-left~ et ~S-right~ modifient le type d'élément
de la liste (et des éléments de même niveau), on peut ainsi obtenir
une numérotation par exemple.
Enfin, si on utilise ~M-RET~ au milieu d'un élément, il est décomposé en
deux éléments, le contenu reste associé à la seconde partie de l'élément.
Insistons sur le fait qu'en cas de déplacement d'un élément, son
contenu (les sous items en particulier) lui restent attachés. Dans le
cas des listes numérotées, la numérotation est maintenue à jour par
toutes les opérations.
Dans le cas des tableaux, comme on l'a dit, ces raccourcis sont
réutilisés avec des effets très voisins
| Raccourci | Description |
|------------------+--------------------------------------------------------------------------------|
| ~M-up~ | Échange la ligne avec la ligne précédente |
| ~M-down~ | Échange la ligne avec la ligne suivante |
| ~M-left~ | Échange la colonne avec la colonne précédente |
| ~M-right~ | Échange la colonne avec la colonne suivante |
| ~TAB~ | Positionne le curseur sur la cellule suivante (ajoute une ligne si nécessaire) |
| ~S-TAB~ ou ~backtab~ | Positionne le curseur sur la cellule précédente |
En fin de ligne (après le dernier ~|~), si on presse ~TAB~, alors le
tableau est réaligné. Il existe de nombreux autres raccourcis pour les
tableaux, (suppression/ajout de lignes ou de colonnes) mais comme
certains sont dangereux nous ne les rappelons pas ici. Ces raccourcis
sont rappelés dans le menu ~Tbl~.
Nous terminons cette description des tableaux en donnant *un* moyen de
les créer. Il est extrêmement simple. Il suffit de commencer une ligne
par un ~|~ puis de séparer les colonnes par d'autres ~|~. Pour ajouter une
ligne de séparation, il suffit de commencer une ligne par la séquence
~|-~ puis de presser ~TAB~ n'importe où dans la zone du tableau.
Finalement, on donne quelques raccourcis plus généraux pour
~Org-mode~. On ne décris pas ici comment générer des zones de code, ni
autres comportements dynamiques. Les fonctionnalités basiques sont
accessibles dans le menu, mais il est préférable pour cela de
consulter de vraies documentations.
| Raccourci | Description |
|-------------+-----------------------------------------------------|
| ~C-c C-c~ | Évalue une zone de code et met à jour le résultat |
| ~C-c C-v C-b~ | Évalue tout le document et met à jour les résultats |
| ~C-c C-e~ | Lance le menu ~Hydra~ pour déclencher les exports |
| ~C-c '~ | Édite une zone de code dans le mode approprié |
Ce dernier raccourci : ~C-c '~ est *extrêmement* important pour la
modification des blocs de codes. Il faut éviter de modifier
directement ces éléments avec le mode ~Org~.
** 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
...
@@ -1021,6 +1126,12 @@ c'est cette région qui sera considérée, mais sinon, c'est le
...
@@ -1021,6 +1126,12 @@ c'est cette région qui sera considérée, mais sinon, c'est le
paragraphe, la section ou la fonction courante (dans un mode de
paragraphe, la section ou la fonction courante (dans un mode de
programmation) même qui occupera tout le /buffer/.
programmation) même qui occupera tout le /buffer/.
* Footnotes
[fn:1] ~Org-mode~ n'existe que dans Emacs. Il n'y a pas d'application
autonome qui offre les mêmes fonctionnalités. Cela n'aurait pas
vraiment de sens.
# Local Variables:
# Local Variables:
# ispell-local-dictionary: "francais"
# ispell-local-dictionary: "francais"
# End:
# End:
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