ऑर्ग-मोड में सोर्स कोड ब्लॉक को ऑटो-फॉर्मेट कैसे करें


11

जब मैं किसी पुस्तक के बारे में नोट्स लेने के लिए org-mode का उपयोग कर रहा हूं, तो कभी-कभी मैं कुछ कोड स्निपेट को नोट फ़ाइल में कॉपी / पेस्ट कर दूंगा। इसे चिपकाने के बाद, मैं हूँ

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

क्या मेरे लिए ऑर्ग-मोड में एक समाधान है, जो कोड को पेस्ट करने के बाद #+BEGIN_SRC...#+END_SRC, यह स्वचालित रूप से कोड ब्लॉक को प्रारूपित करेगा या मैं TABपूरे स्रोत कोड ब्लॉक को प्रारूप (इंडेंट) करने के लिए सिर्फ एक कुंजी का उपयोग कर सकता हूं ?

डिफ़ॉल्ट TAB(ब्लॉक में टाइप किया गया, उपयोग नहीं किया गया C-c ') #+BEGIN_SRCहेडर के बाद बस सभी लाइनों 2 कॉलम को संरेखित करें , अगर दूसरी पंक्ति की शुरुआत में रिक्त स्थान हैं, तो यह बस अधिक स्थान जोड़ देगा, यह 3 चरणों की तरह सभी लाइनों को इंडेंट नहीं करेगा।

जवाबों:


7

नीचे एक कठिन समाधान है, लेकिन यह सही काम करता है। वास्तव में यह केवल एक फ़ंक्शन है जो आपके कार्यों का अनुकरण करता है, और 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लेकिन यह उन चीजों को करेगा जैसा मैंने अपनी पोस्ट में कहा था।
कोडिचन


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)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.