วิธีการจัดรูปแบบบล็อกรหัสต้นฉบับโดยอัตโนมัติในโหมดองค์กร


11

เมื่อฉันใช้โหมดองค์กรเพื่อจดบันทึกเกี่ยวกับหนังสือบางครั้งฉันจะคัดลอก / วางโค้ดบางส่วนลงในไฟล์โน้ต หลังจากวางมันฉันจะ

1. `C-c '` to call `org-edit-special`
2. `C-x h` to mark all the source code
3. `TAB` to format it

มีวิธีแก้ปัญหาในโหมด org สำหรับฉันหรือไม่หลังจากวางโค้ดใน#+BEGIN_SRC...#+END_SRCมันจะจัดรูปแบบบล็อกรหัสโดยอัตโนมัติหรือฉันสามารถใช้รหัสเดียวเช่นTABการจัดรูปแบบ (เยื้อง) บล็อกซอร์สโค้ดทั้งหมดหรือไม่

ค่าเริ่มต้นTAB(พิมพ์ในบล็อกไม่ได้ใช้C-c ') เป็นเพียงการจัดเรียงคอลัมน์ 2 บรรทัดทั้งหมดหลังจาก#+BEGIN_SRCส่วนหัวหากมีช่องว่างที่จุดเริ่มต้นของบรรทัดที่สองก็จะเพิ่มช่องว่างมากขึ้นก็จะไม่เยื้องทุกบรรทัดเช่น 3 ขั้นตอน

คำตอบ:


7

ด้านล่างเป็นวิธีที่ยาก แต่ใช้งานได้สมบูรณ์ จริงๆแล้วมันเป็นเพียงฟังก์ชั่นที่จำลองการทำงานของคุณและใช้ a run-at-timeเพื่อให้มันถูกเรียกทุก 10 วินาที ไชโย

(defun indent-org-block-automatically ()
  (when (org-in-src-block-p)
   (org-edit-special)
    (indent-region (point-min) (point-max))
    (org-edit-src-exit)))

(run-at-time 1 10 'indent-org-block-automatically)

แน่นอนคุณสามารถเรียกมันว่าทุกๆ 1 วินาทีเพียงเปลี่ยน 10 เป็น 1


ฉันไม่จำเป็นrun-at-timeจริง ๆ ว่าฉันผูกสามารถTABที่สำคัญที่จะทำนี้เพื่อเปลี่ยนค่าเริ่มต้นเมื่อTAB org-in-src-block-pค่าเริ่มต้นTABถูกผูกไว้yas-expandแต่จะทำสิ่งต่าง ๆ ตามที่ฉันพูดในโพสต์
CodyChan


0

นี่คือรหัสที่ฉันเขียนเพื่อแก้ปัญหานี้:

(defun udf/my-org-tab-dwim (&optional arg)
  (interactive)
  (or (org-babel-do-key-sequence-in-edit-buffer (kbd "TAB"))
      (org-cycle arg)))

(define-key org-mode-map
  (kbd "<tab>") #'udf/my-org-tab-dwim)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.