Comment conserver les éléments sous la liste en retrait en mode org

12

Bien que les paragraphes normaux soient heureusement en retrait sous les éléments de liste simples (en utilisant la barre [ESPACE] pour mettre en retrait la première ligne prend le reste avec), j'ai remarqué que les blocs de code n'aiment pas coopérer. Y a-t-il un moyen de réparer ceci?

En ce moment, voici ce que j'ai:

- [ ] My plain list item

  Nicely indented paragraph, blah blah blah blah blah blah blah blah
  blah blah blah blah blah blah blah blah blah blah blah blah blah blah
  blah blah blah.

  #+BEGIN_SRC elisp
; Uncooperative code block -> notice that only the first line indents.
(lambda () (do-something-amazing))
(blah-blah-blah)
#+END_SRC

Je voudrais obtenir ceci:

- [ ] My plain list item

  Nicely indented paragraph, blah blah blah blah blah blah blah blah
  blah blah blah blah blah blah blah blah blah blah blah blah blah blah
  blah blah blah.

  #+BEGIN_SRC elisp
  ; Happily indented code block -> notice that all code follows with :)
  (lambda () (do-something-amazing))
  (blah-blah-blah)
  #+END_SRC
Adam
la source
Je considérerais fortement l'utilisation de org-indent-mode.
wasamasa
Merci. J'utilise le mode org-indent. Cela fonctionne très bien pour tout sauf les blocs de code source ... Je pourrais faire quelque chose de mal ... pouvez-vous indenter le code source avec org-indent?
Adam
Permettez-moi de modifier cela ... indentation de bloc de code source bien pour moi, mais uniquement sous les en-têtes, pas les listes simples ...
Adam
(org-list-in-valid-context-p)dans le bloc src vous dira que, par défaut, org ne veut pas qu'un bloc src soit le contexte où les listes sont autorisées. La org-list-forbidden-blocksmodification peut changer cela, ce n'est pas le cas defcustom.
mutbuerger
Ma réponse a-t-elle aidé? Je suis heureux de mettre à jour ma réponse actuelle ou d'ajouter une nouvelle réponse. Merci d'avoir posé votre question!
Melioratus

Réponses:

1

Essaye ça

J'utilise les méthodes suivantes pour corriger l'indentation des blocs src sous des listes simples. Une fois l'indentation correctement configurée, utilisez toujours M-S-leftet M-S-rightpour conserver l'indentation de la liste.

Correction de la mise en forme des nouveaux blocs de code

Mettez d'abord le curseur en retrait, puis utilisez le modèle intégré <slors de la création d'un nouveau bloc src sous une liste simple.

par exemple tab <s tab language return

- [ ] My plain list item

  Nicely indented paragraph, blah blah blah blah blah blah blah blah
  blah blah blah blah blah blah blah blah blah blah blah blah blah blah
  blah blah blah.

  <s

Correction de la mise en forme des blocs de code existants

Étape 1 - Calculez le numéro de colonne de retrait souhaité. Pour l'exemple ci-dessous, utilisez 2.


- [ ] My plain list item

  Nicely indented paragraph, blah blah blah blah blah blah blah blah
  blah blah blah blah blah blah blah blah blah blah blah blah blah blah
  blah blah blah.

  #+BEGIN_SRC elisp
; Uncooperative code block -> notice that only the first line indents.
(lambda () (do-something-amazing))
(blah-blah-blah)
#+END_SRC

Étape 2 - Placez le curseur au début de la #+END_SRCligne, puis faites M-xindent-to-column 2 return. Après quoi, vous devriez voir ce qui suit:


- [ ] My plain list item

  Nicely indented paragraph, blah blah blah blah blah blah blah blah
  blah blah blah blah blah blah blah blah blah blah blah blah blah blah
  blah blah blah.

  #+BEGIN_SRC elisp
; Uncooperative code block -> notice that only the first line indents.
(lambda () (do-something-amazing))
(blah-blah-blah)
  #+END_SRC

Étape 3 - Ouvrez et fermez le bloc src en plaçant le curseur à l'intérieur du bloc et en utilisant C-' C-'.


- [ ] My plain list item

  Nicely indented paragraph, blah blah blah blah blah blah blah blah
  blah blah blah blah blah blah blah blah blah blah blah blah blah blah
  blah blah blah.

  #+BEGIN_SRC elisp
   ; Uncooperative code block -> notice that only the first line indents.
   (lambda () (do-something-amazing))
   (blah-blah-blah)
  #+END_SRC

Merci d'avoir posé votre question.
J'espère que cela a aidé!


Cette réponse a été testée en utilisant:
GNU Emacs 25.3.1
org-mode: 9.1.13

Melioratus
la source
1
Alternative au calcul de l'indentation vous-même: passez au début de la liste (élément), tapez M-hpour marquer l'élément entier, puis le C-M-` to reindent that region. That sorts out the position of the marqueur END_SRC`, mais vous devez encore faire votre astuce pour l'indentation du code réel.
Andrew Swann
@AndrewSwann - C'est une bonne solution! Je vous remercie!
Melioratus