Jak zachować wcięcie pod zwykłymi elementami listy w trybie org

12

Podczas gdy zwykłe akapity są szczęśliwie wcięte pod zwykłymi elementami listy (użycie wcięcia [SPACJA] do wcięcia pierwszego wiersza zajmuje resztę), zauważyłem, że bloki kodu nie lubią współpracować. Czy jest jakiś sposób to naprawić?

W tej chwili mam to:

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

Chciałbym to uzyskać:

- [ ] 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
źródło
Zdecydowanie rozważę użycie org-indent-mode.
wasamasa,
Dzięki. Korzystam z trybu wcięcia org. Działa świetnie do wszystkiego oprócz bloków kodu źródłowego ... Mógłbym zrobić coś złego ... czy jesteś w stanie wciąć kod źródłowy za pomocą org-indent?
Adam
Pozwólcie, że zmodyfikuję to ... wcięcie bloku kodu źródłowego dla mnie grzywnę, ale tylko pod nagłówkami, a nie zwykłymi listami ...
Adam
(org-list-in-valid-context-p)w bloku src powie ci, że domyślnie org nie chce, aby blok src był kontekstem, w którym listy są dozwolone. Zmiana org-list-forbidden-blocksmoże to zmienić, ale to nie wszystko defcustom.
mutbuerger
Czy moja odpowiedź pomogła? Z przyjemnością zaktualizuję moją obecną odpowiedź lub dodam nową. Dziękujemy za pytanie!
Melioratus

Odpowiedzi:

1

Spróbuj tego

Korzystam z następujących metod, aby naprawić wcięcie bloków src w listach. Po prawidłowym ustawieniu wcięcia zawsze używaj M-S-lefti M-S-rightutrzymuj wcięcie listy.

Napraw formatowanie dla nowych bloków kodu

Najpierw wcięcie kursora, a następnie użycie wbudowanego szablonu <spodczas tworzenia nowego bloku src na prostej liście.

na przykład 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

Napraw formatowanie dla istniejących bloków kodu

Krok 1 - Ustal żądany numer kolumny wcięcia. W poniższym przykładzie użyj 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

Krok 2 - Umieść kursor na początku #+END_SRClinii, a następnie wykonaj M-xindent-to-column 2 return. Po tym powinieneś zobaczyć następujące informacje:


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

Krok 3 - Otwórz i zamknij blok src, umieszczając kursor wewnątrz bloku i używając 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

Dziękuję za pytanie.
Mam nadzieję, że to pomogło!


Ta odpowiedź została przetestowana przy użyciu:
GNU Emacs 25.3.1
org-mode: 9.1.13

Melioratus
źródło
1
Alternatywą do samodzielnego ustalenia wcięcia: przejdź na początek listy (pozycji), wpisz, M-haby zaznaczyć cały element, a następnie C-M-` to reindent that region. That sorts out the position of the znacznik END_SRC`, ale nadal musisz zrobić sztuczkę, aby wprowadzić wcięcie rzeczywistego kodu.
Andrew Swann,
@AndrewSwann - To świetna poprawka! Dziękuję Ci!
Melioratus