भराई-पैरा LaTeX मोड में


9

मैं का व्यवहार बदलने के लिए करना चाहते हैं fill-paragraphकुछ मोड में (जैसे LaTeX-modeद्वारा प्रदान की AucTeX)।

मैं तो बस कुंजी rebind सकता है M-q, लेकिन मैं यह भी उपयोग कर रहा हूँ evil-modeकी जिसका कार्यान्वयन evil-fill-and-moveका उपयोग करता है fill-region। आदर्श रूप से, मेरा कस्टम फिल फ़ंक्शन दोनों कार्यों को ओवरराइड करता है fill-paragraph(इसलिए यह साथ काम करता है M-q) और fill-region(इसलिए यह साथ काम करता है evil)।

यह मानते हुए कि मेरे पास एक स्टैंडअलोन प्रोग्राम है formatजो LaTeX कोड के माध्यम से stdinऔर आउटपुट स्वरूपित कोड पर लेता है stdout, मैं उपयोग करने के लिए उपरोक्त दो भरण कार्यों को कैसे ओवरराइड करूंगा format?

(नोट: इस के समान है vimके formatprgविकल्प।)


वैसे भी रिबाइंडिंग M-qप्रभावित करता evil-fill-and-moveहै? मैं बुराई का उपयोग नहीं करता हूं इसलिए मैं उत्सुक हूं। यदि क्षेत्र वैसे भी सक्रिय fill-paragraphकॉल fill-regionहै। तो आप सलाह दे सकते हैं या fill-regionअपने कार्य को बदल सकते हैं।
वामसी

मैंने इसकी कोई कोशिश नहीं की है, लेकिन मेरा मानना ​​है कि नहीं। बुराई के सामान्य मोड में evil-fill-and-moveमहत्वपूर्ण अनुक्रम के लिए बाध्य gqहै। रीबाइंडिंग M-qइस कीबाइंडिंग को प्रभावित नहीं करना चाहिए। कुछ अर्थों में, मेरा प्रश्न वास्तव में दो प्रश्न हैं: 1) दो कार्यों को कैसे बदला जाए? 2) बाहरी प्रोग्राम का उपयोग कैसे करें? 2) का कारण यह है कि मेरे पास पहले से ही एक बाहरी, गैर-एलस्प समाधान है।
केविन

1
उस मामले में आप अपनी समस्या का हिस्सा हल कर सकते हैं कि आपका कस्टम (add-hook 'LaTeX-mode-hook (lambda () local-set-key (kbd "M-q") 'your-fill-function))कहाँ your-fill-functionहै। यह उस कुंजी कॉम्बो को केवल ऑक्टेक्स में सेट करेगा। आप शायद shell-command-on-regionपरिभाषित करने के लिए REPLACE तर्क के साथ उपयोग कर सकते हैं your-fill-function
वामसी

जवाबों:


7

2 कार्य करना बेहतर होगा, हालांकि एक को दूसरे के संदर्भ में लागू किया जा सकता है। इसका कारण यह है कि एक पैराग्राफ एक अंतर्निहित क्षेत्र है, इसलिए दोनों मामलों में इनपुट अलग होना चाहिए

(defun my-format-region (beg end)
  (interactive "r")
  (shell-command-on-region beg end "format"))

(defun my-format-paragraph ()
  (interactive)
  (save-excursion
    (mark-paragraph)
    (my-format-region (point) (mark))))

अपनी कीबाइंडिंग की परवाह किए बिना दूसरों को कार्य करने के लिए, रीमैप कीबाइंडिंग का उपयोग करें:

 (define-key LaTeX-mode-map [remap fill-region] 'my-format-region)
 (define-key LaTeX-mode-map [remap fill-paragraph] 'my-format-paragraph)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.