स्थानीय चर रीफैक्टरिंग का नाम बदलें


10

क्या कोई अपरिवर्तनशील उपकरण है जो स्थानीय चर और फ़ंक्शन तर्कों का नाम बदल सकता है? मैं मोड़ने में सक्षम होना चाहता हूं:

(defun my-func (s r)
  ...
  (use s .. r))

में:

(defun my-func (string replacement)
  ...
  (use string .. replacement))

एक ऐसी विधि का उपयोग करना जो जानता है कि चर संदर्भों को कैसे खोजना है। अगर यह सुपर-हाइजेनिक नहीं है तो मैं ठीक हूं।


4
एकाधिक कर्सर वर्तमान डिफ्यूजन में एक प्रतीक के सभी उदाहरणों को संपादित कर सकते हैं।
मालाबार 08

Iedit भी देखें।
inHarmsWay


4
सभी कोड हमारा नहीं है। कुछ कोड पुराना है।
ग्रेकजन पोलाक

2
मैं आमतौर पर क्षेत्र \ bSYM \ b में प्रतिस्थापित करता हूं ...
BRPocock

जवाबों:


2

टी एल; डॉ: erefactor-rename-symbol-in-buffer

आप एक शाब्दिक नाम बदलने वाले फ़ंक्शन की तलाश कर रहे हैं - एक जो अपने दायरे द्वारा चर का नाम बदल देता है, न कि केवल एक गूंगा खोज और प्रतिस्थापित करता है। इस तरह के पैकेज बहुत सी भाषाओं के लिए मौजूद हैं लेकिन लेखन के रूप में (अप्रैल 2019), वास्तव में Emacs Lisp के लिए कई विकल्प नहीं हैं। erefactorपैकेज केवल एक ही मैं के बारे में पता है।

erefactor-rename-symbol-in-bufferआप चाहते हैं समारोह है। यह एक इंटेलिजेंट फ़ाइंड-एंड-रिप्लेस्ड कमांड है जो मौजूदा स्कोप (डोकस्ट्रिंग्स सहित) में प्रतीकों को बदल देगा। इस आदेश की सीमा यह है कि यह वर्तमान बफर के बाहर खोज नहीं करेगा। यह स्मार्ट है, लेकिन सही नहीं है। यह आपको अंतिम परिणाम सेनिटरी सुनिश्चित करने के लिए प्रत्येक संभावना की पुष्टि करने के लिए कहेगा।

अन्य नाम बदलने का कार्य है erefactor-rename-symbol-in-package। यह उसी तरह से काम नहीं करता है - यह केवल वैश्विक प्रतीकों पर काम करता है। यह आपके पैकेज पर निर्भर करता है एक समूहीकरण प्रणाली और उपसर्ग के साथ सही ढंग से सेट किया गया है, और इसे पैकेज के उपसर्ग से मिलान करने के लिए चर की आवश्यकता है। यह बहुत मजबूत नहीं है - यह विफल हो जाएगा यदि आपने चीजों को उस तरह से सेट नहीं किया है जिस तरह से यह फ़ंक्शन अपेक्षा करता है। मुझे लगता है कि यदि आप एक वैश्विक प्रतीक का नाम बदल रहे हैं, तो आप एक भोली खोज का उपयोग कर सकते हैं और बदल सकते हैं क्योंकि एलीश में वैश्विक प्रतीकों का कोई नाम नहीं है। शाब्दिक समझ के लाभ न्यूनतम हैं। यह कमांड ट्रेडऑफ के लिए बहुत नाजुक है। मैं सिर्फ उपयोग करने का सुझाव दूंगा projectile-replace

Erefactor के पास कई अन्य संभावित कमांड हैं जो आपको उपयोगी लग सकते हैं। रीडमी में एक (अपूर्ण) सूची उपलब्ध है ।

यह GitHub पेज पर वर्णित नहीं है, लेकिन erefactorMELPA ( M-x package-install RET erefactor) पर उपलब्ध है । MELPA पेज यहां पाया जा सकता है

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