Cómo mantener sangrado bajo elementos de lista simple en modo org


12

Si bien los párrafos regulares se sangran felizmente debajo de los elementos de la lista simple (usando la barra [ESPACIO] para sangrar la primera línea toma el resto junto), he notado que a los bloques de código no les gusta cooperar. ¿Hay alguna forma de arreglar esto?

En este momento, esto es lo que tengo:

- [ ] 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

Me gustaría obtener esto:

- [ ] 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

Consideraría fuertemente el uso de org-indent-mode.
wasamasa

Gracias. Estoy usando org-indent-mode. Funciona muy bien para todo excepto los bloques de código fuente ... Podría estar haciendo algo mal ... ¿puede sangrar el código fuente con org-indent?
Adam

Permítanme modificar eso ... sangría de bloque de código fuente bien para mí, pero solo bajo encabezados, no listas simples ...
Adam

(org-list-in-valid-context-p)en el bloque src le dirá que, por defecto, org no quiere que un bloque src sea el contexto donde se permiten listas. La alteración org-list-forbidden-blockspuede cambiar eso, no es un defcustompensamiento.
mutbuerger

¿Me ayudó mi respuesta? Me complace actualizar mi respuesta actual o agregar una nueva respuesta. ¡Gracias por hacer su pregunta!
Melioratus

Respuestas:


1

Prueba esto

Utilizo los siguientes métodos para arreglar la sangría de bloques src en listas simples. Después de que la sangría esté configurada correctamente, use siempre M-S-lefty M-S-rightpara mantener la sangría de la lista.

Reparar formato para nuevos bloques de código

Primero sangra el cursor y luego usa la plantilla integrada <sal crear un nuevo bloque src en una lista simple.

p.ej 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

Reparar formato para bloques de código existentes

Paso 1: descubra el número de columna de sangría deseado. Para el siguiente ejemplo, use 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

Paso 2: coloca el cursor al comienzo de la #+END_SRClínea y luego hazlo M-xindent-to-column 2 return. Después de lo cual debería ver lo siguiente:


- [ ] 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

Paso 3: abre y cierra el bloque src colocando el cursor dentro del bloque y usando 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

Gracias por hacer su pregunta.
Espero que haya ayudado!


Esta respuesta se probó usando:
GNU Emacs 25.3.1
org-mode: 9.1.13


1
Alternativa a descubrir la sangría usted mismo: vaya al principio de la lista (elemento), escriba M-hpara marcar todo el elemento y luego el C-M-` to reindent that region. That sorts out the position of the marcador END_SRC`, pero aún debe hacer su truco para la sangría del código real.
Andrew Swann el

@ AndrewSwann: ¡es una solución genial! ¡Gracias!
Melioratus
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.