Re: Ouverture de fichier en mode Markdown

Liste des GroupesRevenir à fca emacs 
Sujet : Re: Ouverture de fichier en mode Markdown
De : damien.wyart (at) *nospam* free.fr (Damien Wyart)
Groupes : fr.comp.applications.emacs
Organisation : Serveur de News Free
Date : 11. Dec 2020, 18:30:28
Message-ID : <5fd39ea4$0$8948$426a74cc@news.free.fr>
References : 1 2 3
User-Agent : Gnus/5.13 (Gnus v5.13) Emacs/28.0.50
Bonjour,

* Jean-Yves Baudais <jean-yves.baudais@insa-rennes.fr> in fr.comp.applications.emacs:
J'ai quand même réussi un truc malgré mon ignorance :
"markdown-shifttab" à la place de "markdown-cycle t".

Je préfère ma version :)

En effet, j'avais bien vu que S-TAB est mappé sur markdown-shifttab,
mais sa définition est la suivante :

,----
| (defun markdown-shifttab ()
|   "Handle S-TAB keybinding based on context.
| When in a table, move backward one cell.
| Otherwise, cycle global heading visibility by calling
| `markdown-cycle' with argument t."
|   (interactive)
|   (cond ((markdown-table-at-point-p)
|          (call-interactively #'markdown-table-backward-cell))
|         (t (markdown-cycle t))))
`----

donc quand on est à l'intérieur d'un tableau, on se déplace à la cellule
précédente. Vu que la demande initiale était de changer le mode
d'affichage inconditionnellement, j'ai repris directement
(markdown-cycle t) dans mon hook.

Dans les deux cas, ça fonctionne si j'ouvre le fichier au lancement
d'Emacs (sous un shell : "emacs monfichier.md"). Par contre si j'ouvre
un fichier markdown à partir d'Emacs avec CTRL-X CTRL-F, il s'ouvre en
mode OVERVIEW et pas CONTENTS.
(Sans le hook, ça s'ouvre toujours en mode SHOW ALL.) Dans le buffer
*Messages*, j'ai OVERVIEW [2 times]

à la place de

OVERVIEW
CONTENTS

Effectivement, je reproduis bien le problème. La partie de la fonction
markdown-cycle qui nous intéresse fait ceci :

,----
|     (cond
|      ;; Move from overview to contents
|      ((and (eq last-command this-command)
|            (eq markdown-cycle-global-status 2))
|       (outline-hide-sublevels 1)
|       (message "CONTENTS")
|       (setq markdown-cycle-global-status 3)
|       (markdown-outline-fix-visibility))
|      ;; Move from contents to all
|      ((and (eq last-command this-command)
|            (eq markdown-cycle-global-status 3))
|       (outline-show-all)
|       (message "SHOW ALL")
|       (setq markdown-cycle-global-status 1))
|      ;; Defaults to overview
|      (t
|       (outline-hide-body)
|       (message "OVERVIEW")
|       (setq markdown-cycle-global-status 2)
|       (markdown-outline-fix-visibility))))
`----

et donc j'ai l'impression que dans le cas C-x C-f la condition
(eq last-command this-command) n'est pas vérifiée. Je n'ai pas
d'explication et j'avoue que je suis pas enthousiaste pour
débugguer ça :)

Une idée pour corriger ça ?

Je propose donc ceci, moins élégant car on duplique du code, mais qui
fonctionne dans tous les cas (j'avoue que pour ma première version, je
n'avais testé que le chargement initial).

(add-hook 'markdown-mode-hook
  (lambda () (progn
      (outline-hide-sublevels 1)
      (message "CONTENTS")
      (setq markdown-cycle-global-status 3)
      (markdown-outline-fix-visibility))))

(on peut éventuellement supprimer la ligne message si on n'en a pas l'utilité)

En espérant que cela fonctionnera bien aussi de votre côté :)

--
DW

Date Sujet#  Auteur
07.12 * Ouverture de fichier en mode Markdown6Jean-Yves Baudais
08.12 `* Re: Ouverture de fichier en mode Markdown5Damien Wyart
09.12  +* Re: Ouverture de fichier en mode Markdown3Jean-Yves Baudais
11.12  i`* Re: Ouverture de fichier en mode Markdown2Damien Wyart
15.12  i `- Re: Ouverture de fichier en mode Markdown1Jean-Yves Baudais
08.12  `- Re: Ouverture de fichier en mode Markdown1Jean-Yves Baudais

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal