Emacs - चिह्न-संपूर्ण-बफर और इंडेंट-क्षेत्र के बाद कर्सर को वापस ले जाएं


4

मैं Emacs नौसिखिया हूँ और Emacs में अपने स्रोत कोड के स्वचालित पुन: स्वरूपण के लिए मैंने सरल मैक्रो का उपयोग करके mark-whole-bufferऔर indent-regionकमांड बनाया है, Cj शॉर्टकट के लिए मैप किया गया है:

(fset 'format-document
"\C-[xmark-whole-buffer\C-m\C-[xindent-region\C-m")
(global-set-key (kbd "C-j") 'format-document)

हालांकि, निष्पादित होने पर, कर्सर की मूल स्थिति खो जाती है और नए कर्सर की स्थिति बफर की शुरुआत में सेट होती है। क्या कोई तरीका है कि इस मैक्रो को कैसे निष्पादित किया जाए और कर्सर को अपनी पिछली स्थिति में वापस लौटाया जाए? मैं Ubuntu 14.04 पर GNU / Emacs 24.3 का उपयोग कर रहा हूं।

धन्यवाद

जवाबों:


2

मैक्रो का उपयोग करने के बजाय, फ़ंक्शन का उपयोग करने पर विचार करें। फ़ंक्शन indent-regionमें क्षेत्र की शुरुआत और समाप्ति के लिए तर्क होते हैं। इस प्रकार, आप (indent-region (point-min) (point-max))संपूर्ण बफर को संभालने के लिए मूल्यांकन कर सकते हैं । आप एक ही कार्य करने के लिए एक साधारण फ़ंक्शन का भी उपयोग कर सकते हैं:

(defun my-format-document ()
(interactive)
  (indent-region (point-min) (point-max)) )

हालांकि यहां जरूरत नहीं है, भविष्य में आपको कुछ ऐसा उपयोग करने की आवश्यकता हो सकती है save-excursionजो आपको मूल बिंदु पर वापस लाती है।


1
मेरी समस्या हल कर दी, बहुत-बहुत धन्यवाद, दुर्भाग्य से आप मेरी कम प्रतिष्ठा के स्तर के कारण अब आपको +1 नहीं दे सकते हैं
xwinus
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.