組織モードでプレーンリストアイテムの下にインデントを保持する方法


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
-wasamasa

ありがとう。org-indent-modeを使用しています。ソースコードのブロックを除くすべての場合にうまく機能します...私は何か間違ったことをしている可能性があります...ソースコードをorg-indentでインデントできますか?
アダム

それを変更させてください...ソースコードブロックインデントは私にとっては問題ありませんが、プレーンリストではなくヘッダーの下でのみです
Adam

(org-list-in-valid-context-p)srcブロックでは、デフォルトで、組織はsrcブロックをリストが許可されるコンテキストにしたくないことを通知します。変更は、org-list-forbidden-blocksそれを変えることがあり、そうではありませんdefcustomけれども。
mutbuerger

私の答えは役に立ちましたか?現在の回答を更新するか、新しい回答を追加します。ご質問いただきありがとうございます!
Melioratus

回答:


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 を使用してテストされました


1
自分でインデントを理解する代わりに:リスト(アイテム)の先頭に移動し、アイテムM-h全体をマークしてからC-M-` to reindent that region. That sorts out the position of the END_SRC`マーカーを入力しますが、実際のコードをインデントするためのトリックを行う必要があります。
アンドリュース

@AndrewSwann-それはクールな修正です!ありがとうございました!
Melioratus
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.