Как сохранить отступ под обычными элементами списка в режиме org

12

В то время как регулярные абзацы удачно отступают под обычными элементами списка (с помощью строки [SPACE] для отступа в первой строке берется все остальное), я заметил, что блоки кода не любят взаимодействовать. Есть ли способ это исправить?

Прямо сейчас, это то, что у меня есть:

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

Я хотел бы получить это:

- [ ] 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
Адам
источник
Я настоятельно рекомендую использовать org-indent-mode.
Васамаса
Благодарю. Я использую org-indent-mode. Он отлично работает для всего, кроме блоков исходного кода ... Я мог бы сделать что-то не так ... Вы можете сделать отступ исходного кода с помощью org-indent?
Адам
Позвольте мне изменить это ... отступ в блоке исходного кода подходит для меня, но только для заголовков, а не для простых списков ...
Адам
(org-list-in-valid-context-p)в блоке src вам сообщат, что по умолчанию org не хочет, чтобы блок src был контекстом, в котором разрешены списки. Изменение org-list-forbidden-blocksможет изменить это, это не defcustomвсе же.
Mutbuerger
Помог ли мой ответ? Я рад обновить свой текущий ответ или добавить новый ответ. Спасибо за вопрос!
Мелиоратус

Ответы:

1

Попробуй это

Я использую следующие методы для исправления отступов блоков src в простых списках. После правильной настройки отступа всегда используйте M-S-leftи M-S-rightдля сохранения отступа списка.

Исправление форматирования для новых блоков кода

Сначала создайте отступ для курсора, а затем используйте встроенный шаблон <sпри создании нового блока src под простым списком.

например 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

Исправление форматирования для существующих блоков кода

Шаг 1 - Определите желаемый номер столбца отступа. Для примера ниже используйте 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

Шаг 2 - Поместите курсор в начало #+END_SRCстроки, затем сделайте M-xindent-to-column 2 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.

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

Шаг 3 - Откройте и закройте блок src, поместив курсор внутрь блока и используя 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

Спасибо за вопрос.
Надеюсь, что это помогло!


Этот ответ был проверен с использованием:
GNU Emacs 25.3.1
org-mode: 9.1.13

Melioratus
источник
1
Альтернатива самому определению отступа: перейдите к началу списка (элемента), напечатайте, M-hчтобы пометить весь элемент, а затем C-M-` to reindent that region. That sorts out the position of the маркер END_SRC`, но тогда вам все равно придется проделать свой трюк для отступа в реальном коде.
Эндрю Суонн
@AndrewSwann - это круто! Спасибо!
Мелиоратус