วิธีเก็บย่อหน้าภายใต้รายการธรรมดาในโหมดองค์กร


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 หรือไม่
อดัม

ให้ฉันแก้ไขว่า ... ซอร์สโค้ดบล็อกเยื้องปรับสำหรับฉัน แต่ภายใต้ส่วนหัวไม่ใช่รายการธรรมดา ...
Adam

(org-list-in-valid-context-p)ในบล็อก src จะบอกคุณว่าโดยค่าเริ่มต้น org ไม่ต้องการให้บล็อก src เป็นบริบทที่อนุญาตรายการ การเปลี่ยนแปลงorg-list-forbidden-blocksอาจเปลี่ยนแปลงได้defcustomแต่ไม่ใช่
ประกอบการ

คำตอบของฉันช่วยได้ไหม? ฉันยินดีที่จะอัปเดตคำตอบปัจจุบันของฉันหรือเพิ่มคำตอบใหม่ ขอบคุณที่ถามคำถามของคุณ!
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: 9.1.13


1
ทางเลือกอื่นในการหาการเยื้องของตัวเอง: เลื่อนไปที่จุดเริ่มต้นของรายการ (รายการ) พิมพ์M-hเพื่อทำเครื่องหมายรายการทั้งหมดแล้วC-M-` to reindent that region. That sorts out the position of the ทำเครื่องหมาย END_SRC` แต่คุณยังต้องใช้เคล็ดลับในการเยื้องรหัสจริง
Andrew Swann

@AndrewSwann - นั่นเป็นการแก้ไขที่ยอดเยี่ยม! ขอบคุณ!
Melioratus
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.