# -*- mode: org -*-
#+TITLE:     Premiers pas avec Emacs/org-mode
#+DATE: March 2019
#+STARTUP: overview indent
#+OPTIONS: num:nil toc:t
#+PROPERTY: header-args :eval never-export

Ce document présuppose que vous avez déjà installé Emacs et suivi les
instructions données [[https://www.fun-mooc.fr/courses/course-v1:inria+41016+session02/jump_to_id/954f94ce4f9a4d858d47b41793cc96c8][ici]]. 
Toutes les captures d'écran utilisées dans ce document ont été faites sous 
Windows mais vous devriez obtenir le même genre de choses avec n'importe quel 
système d'exploitation.

* Premiers pas avec Emacs pour éditer des documents computationnels
** Un premier document org-mode
- Lancez Emacs
  #+BEGIN_CENTER
  [[file:emacs_orgmode_images/emacs.png]]
  #+END_CENTER
- Créez un nouveau fichier à l'aide de la petite icône en forme de
  "feuille de papier" en haut à gauche, juste en dessous du menu =File=.
  Placez le dans le répertoire de votre choix et nommez le =toto.org=.
** Exécuter des commandes dos/shell
- Vous disposez maintenant d'un document org-mode vide
- Tapez =<b= et appuyez sur =tab= pour obtenir un bloc de code shell. Vous
  pouvez alors écrire la commande shell de votre choix (par exemple
  =dir= sous Windows ou =ls= sous Linux et Mac). Maintenant, faites =C-c C-c= 
  (cette notation signifie appuyer deux fois de suite rapidement
  sur les touches =Ctrl= et =c=). Votre commande shell devrait avoir été
  exécutée et la sortie devrait avoir été mise juste en dessous.
  #+BEGIN_CENTER
  [[file:emacs_orgmode_images/shell.png]]
  #+END_CENTER
- Si jamais vous avez l'impression qu'Emacs est entré dans un mode un
  peu étrange suite à un raccourci clavier malencontreux, faites
  plusieurs fois de suite =C-g= (à nouveau, cela signifie appuyer
  sur les touches =Ctrl= et =g=).
** Exécuter du code R 
- De la même façon que le raccourci =<b= que nous venons de présenter
  permet d'insérer des blocs de commandes shell, le raccourci =<r= + =tab=
  vous permettra d'insérer des blocs de commandes R (par exemple
  =summary(cars)=). Toujours pareil, le code est exécuté à l'aide de la
  séquence de touches =C-c C-c= (appuyer deux fois de suite sur les
  touches =Ctrl= et =c=).
  #+BEGIN_CENTER
  [[file:emacs_orgmode_images/commandeR1.png]]
  #+END_CENTER
  Normalement, Emacs vous demandera alors où il doit lancer
  R. Conservez alors la proposition d'utiliser le répertoire courant
  en appuyant sur la touche =Entrée=. À nouveau, la sortie devrait être
  capturée et insérée juste en dessous.
  #+BEGIN_CENTER
  [[file:emacs_orgmode_images/commandeR2.png]]
  #+END_CENTER

- Le raccourci clavier =<R= + =tab= vous permettra d'insérer des blocs de
  code R adaptés au cas où vos commandes R génèrent des images. Le
  =(org-babel-temp-file \"figure\" \".png\")= génère un nom de fichier
  temporaire à chaque exécution. Ce fichier sera donc effacé lorsque
  vous fermerez Emacs. Si vous souhaitez que vos images soient
  conservées d'une fois sur l'autre, indiquez un vrai nom de fichier à
  la place.
  #+BEGIN_CENTER
  [[file:emacs_orgmode_images/graphiqueR.png]]
  #+END_CENTER

  Si ce comportement de noms de fichiers temporaires ne vous convient
  pas, il vous suffit d'éditer votre fichier de configuration =init.el=
  et de remplacer les occurrences (pour =<R= et =<PP=) de
  =(org-babel-temp-file \"figure\" \".png\")= par =\"D:/temp/figure.png\"= 
  ou tout autre endroit/nom de fichier que vous préféreriez.
** Exécuter du code Python
- Vous trouverez quelques exemples sur la page [[https://orgmode.org/worg/org-contrib/babel/languages/ob-doc-python.html][Python Source Code Blocks
  in Org Mode]].

- Le raccourci =<p= + =tab= permet d'insérer un bloc de code Python en
  mode /non-session/. Cela signifie qu'un nouvel interpréteur Python est
  lancé pour chaque bloc et que les variables ne seront pas partagées 
  entre les blocs. Comme d'habitude, le code sera exécuté à l'aide de la
  séquence de touches =C-c C-c=.
  #+BEGIN_CENTER
  [[file:emacs_orgmode_images/commande_python.png]]
  #+END_CENTER
  #+BEGIN_CENTER
  [[file:emacs_orgmode_images/python1.png]]
  #+END_CENTER
  # Note that if Python was not correctly installed, you may end up with
  # a message like this:
  # #+BEGIN_CENTER
  # [[file:emacs_orgmode_images/python3.png]]
  # #+END_CENTER
  # Then try to follow the steps in the installation section.
- Le raccourci =<P= + =tab= permet d'insérer un bloc de code Python, mais
  cette fois-ci en mode /session/. Cela permet de conserver les
  variables et leurs valeurs d'un bloc à l'autre. En interne et en
  arrière-plan, Emacs aura un buffer avec une session Python en cours
  d'exécution. Comme d'habitude, le code sera exécuté à
  l'aide de la séquence de touches =C-c C-c=.
  #+BEGIN_CENTER
  [[file:emacs_orgmode_images/python2.png]]
  #+END_CENTER

- Enfin, le raccourci =<PP= + =tab= vous permettra d'insérer un bloc
  Python en mode /session/ spécialement adapté à la production de graphiques
  #+BEGIN_CENTER
  [[file:emacs_orgmode_images/python4.png]]
  #+END_CENTER
  Si vous rencontrez un problème, essayez de mettre à jour la
  bibliothèque Python =numpy=, par exemple à l'aide de =pip= dans une
  commande dos/shell :
  #+begin_src shell :results output :exports both
  python -m pip install -U numpy
  #+end_src
* Prendre des notes avec Emacs Org-Mode
** Le journal
- Ouvrez le fichier =journal.org= que vous devriez avoir placé dans le
  répertoire =~/org/=. Vous y trouverez au tout début quelques
  "vieilles" entrées avec les raccourcis clavier Emacs les plus
  utiles, dont ceux que nous venons de vous présenter ci-dessus.
** Prendre des notes
- Le raccourci =C-c c= (attention, pas =C-c C-c=, mais =C-c= puis =c=)
  ouvrira un menu vous demandant si vous souhaitez prendre des notes
  dans votre todo list ou dans votre journal.
  #+BEGIN_CENTER
  [[file:emacs_orgmode_images/ctrl_c_c.png]]
  #+END_CENTER

- Appuyez sur =j= pour prendre des notes dans votre journal. Emacs va
  alors ouvrir votre fichier =journal.org= pour y créer, à la toute fin,
  une entrée avec la date du jour et va vous présenter un mini buffer
  dans lequel vous allez pouvoir prendre vos notes.
  #+BEGIN_CENTER
  [[file:emacs_orgmode_images/org_mode.png]]
  #+END_CENTER
  Lorsque vous avez fini, faites simplement =C-c C-c= pour sauvegarder
  vos modifications et fermer le mini-buffer.
** Édition d'un document org
- Il est courant lorsque l'on prend des notes dans une session de
  brainstorming de devoir les nettoyer et les réorganiser. Les raccourcis 
  =Alt= + =\leftarrow= et =Alt= + =\rightarrow= vous permettront de
  décaler les entrées vers la gauche ou vers la droite. Pareil pour
  vers le haut ou vers le bas...
- Les raccourcis Org-mode sont en fait bien plus intuitifs que les
  raccourcis (pré-)historiques d'Emacs. Vous devriez vite vous y faire.
  Encore une fois, regardez bien la première entrée de votre
  =journal.org=. Nous y avons mis les raccourcis et les ruses les plus
  essentiel(le)s.
- N'oubliez pas de sauvegarder vos fichiers avant de fermer Emacs.

Amusez-vous bien !
