क्या उचित मोड में ऑर्ग-मोड कोलाहल अनुभाग के अंदर स्निपेट्स का विस्तार करने के लिए यस्नीपेट्स बनाना संभव है?


10

उदाहरण के लिए मेरे पास एक ओआरजी मोड है जिसमें निम्नलिखित हैं

#+BEGIN_SRC emacs-lisp


#+END_SRC

क्या इस तरह से yasnippets को कॉन्फ़िगर करना संभव है इसलिए सभी emacs-lisp-mode स्निपेट्स को उस ब्लॉक के अंदर विस्तारित किया जा सकता है लेकिन इसके बाहर नहीं?


6
मुझे लगता है कि "मानक" तरीका C-c 'वैसे भी उन ब्लॉकों को संपादित करना होगा - उस स्थिति में, emacs-lisp प्रमुख मोड में ब्लॉक को अपनी अलग विंडो में संपादित करते समय उपयुक्त yasnippet स्निपेट्स लोड होंगे (वह भी सही इंडेंटेशन का ख्याल रखता है आदि)
वैनलेसर

हां, मैं वनलेसर की प्रतिक्रिया पर सहमत हूं। यह emacs द्वारा समर्थित किसी भी भाषा के लिए काम करता है।
dmg

अरे सच है। तुम सही हो। क्या आप इसे प्रतिक्रिया पर रख सकते हैं ताकि मैं आपकी प्रतिक्रिया को सही मानूं? मैंने इस बारे में नहीं सोचा: पी
राफा डे कास्त्रो

जवाबों:


7

2017 के रूप में, 22 जनवरी, यदि आप सेट करते हैं org-src-tab-acts-nativelyऔर org-src-fontify-natively, तो स्रोत ब्लॉकों में टीएबी ब्लॉक की भाषा के स्निपेट का विस्तार करेगा। आप yas-buffer-local-conditionब्लॉक मोड के स्निपेट्स को छाया देने से ऑर्ग मोड स्निपपेट को रोकने के लिए सेट करना चाह सकते हैं :

(defun my-org-mode-hook ()
  (setq-local yas-buffer-local-condition
              '(not (org-in-src-block-p t))))
(add-hook 'org-mode-hook #'my-org-mode-hook)

Https://github.com/joaotavora/yasnippet/issues/761 , https://github.com/joaotavora/yasnippet/pull/760 भी देखें


2

मैं इसके लिए दो तरीकों का उपयोग करता हूं। बबल हेडर बनाने में मेरी मदद करने के लिए मेरे पास कुछ ऑर्गन स्निपेट्स हैं। उदाहरण के लिए, यह बैबल के लिए C ++ - 14 हेडर बनाता है। मैं टाइप करता हूं <s C++_और विस्तार करता हूं :

# -*- mode: snippet -*-
# name: c++_header
# key: C++_
# --
C++ :main no :flags -std=c++14 -Wall --pedantic -Werror :results output :exports both
#include <iostream>
int main()
{
   $0

   return 0;
}

फिर मैं Cc 'का उपयोग करता हूं जो विशिष्ट भाषा मोड में स्विच करता है और उस भाषा के लिए स्निपेट का उपयोग करता है। फिर ऑर्ग फाइल में वापस आने के लिए Cc 'का उपयोग करें। यह अच्छा काम करता है।


0

जैसा कि npostavs ने पहले ही उत्तर दिया था, स्निपेट्स को एक org- मोड फ़ाइल के भीतर भाषाओं के आधार पर अलग-अलग विस्तारित किया जाता है।

बस पायथन या इमैक लिस्प कोड ब्लॉक के भीतर "सह" और [टैब] टाइप करें।

#+BEGIN_SRC python :session *Python* :results output
co[tab]
# comment
#+END_SRC

#+BEGIN_SRC emacs-lisp :results value scalar
co[tab]
                                        ; comment
#+END_SRC
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.