पुराने "XML को कैसे मोड़ें" सवाल


42

मैं काफी मैनुअल XML संपादन कर रहा हूं (कुछ कोड पीढ़ी की स्रोत परिभाषा जो मैं कर रहा हूं एक कस्टम XML प्रारूप है) और निश्चित रूप से किसी विशेष उद्देश्य (आमतौर पर बदसूरत) XML संपादकों पर Emacs का उपयोग करना पसंद करते हैं। nXml मोड ने मुझे अतीत में अच्छी तरह से खड़ा किया है, लेकिन मैं इसके "रूपरेखा" समर्थन के आसपास अपना सिर नहीं प्राप्त कर सकता। विभिन्न इंटरनेट और एसओ पोस्ट प्रभावी रूप से कुछ भी नहीं कहते हैं - मैं सोच रहा हूं कि क्या किसी को एमएसीएस (किसी भी मोड) में एक्सएमएल को रेखांकित / मोड़ने के साथ कोई व्यावहारिक अनुभव है या नहीं, जिसे एक्सएमएल संरचना को बदलने की आवश्यकता है या नहीं।


बाहर में देखो।
मालाबार

यहाँ एक उदाहरण का एक लिंक है जो मैंने कुछ समय पहले nxml मोड में मनमाने टैग के लिए फोल्डिंग कोड से निपटने के लिए किया था - शायद यह आपको अपना कोड विकसित करने में मदद कर सकता था: superuser.com/a/787030/206164 मैंने जिस विशेष टैग को टैकल किया था xsl- - मैंने एक ही नाम के साथ नेस्टेड टैग से निपटने के लिए एक काउंटर को शामिल किया।
कानून

जवाबों:


39

मुझे यह SO पोस्ट मिला: https://stackoverflow.com/questions/944614/emacs-does-hideshow-work-with-xml-mode-sgml-mode

(require 'hideshow)
(require 'sgml-mode)
(require 'nxml-mode)

(add-to-list 'hs-special-modes-alist
             '(nxml-mode
               "<!--\\|<[^/>]*[^/]>"
               "-->\\|</[^/>]*[^/]>"

               "<!--"
               sgml-skip-tag-forward
               nil))



(add-hook 'nxml-mode-hook 'hs-minor-mode)

;; optional key bindings, easier than hs defaults
(define-key nxml-mode-map (kbd "C-c h") 'hs-toggle-hiding)

आप वहां से कोड का उपयोग कर सकते हैं, थोड़ा संशोधित, nxml- मोड के लिए आसानी से।

यह आपको xml तत्वों को छिपाने / अनहाइड करने की अनुमति देगा C-chऔर नामों में अंडरस्कोर का समर्थन करेगा।

यहाँ छवि विवरण दर्ज करें


2
टाइपो: nxmlनहींnmxl
सीन एल्रेड

3
@ सीन: मुझे टाइपो तय हो गया। कट-एंड-पेस्टर्स आपको पकड़ने के लिए धन्यवाद देंगे!
दान

प्रतिभाशाली! यह भी दिखता है कि hideshowकिसी दिए गए टैग के सभी उदाहरणों को टॉगल करने के लिए एक बफर को स्कैन करने के लिए कस्टम फ़ंक्शन लिखना आसान होगा आदि अगर माउस को अन-छिपाना के साथ एक दीर्घवृत्त पर क्लिक करना अच्छा होगा, लेकिन मैं कोशिश नहीं करूँगा याक को दाढ़ी बनाने के लिए :)
मार्क आफ्लिक

@MarkAufflick hideshow में माउस सपोर्ट है, डिफ़ॉल्ट रूप से, शिफ्ट + माउस 2 hs-mouse-toggle-hiding के लिए बाध्य है, जिसे ठीक उसी तरह काम करना चाहिए जैसे आप इसे चाहते हैं।
जॉर्डन बियोन्डो

2
+1000। इस जवाब ने मेरी पवित्रता को बचा लिया। मुझे nxml-mode बहुत पसंद है लेकिन बाद के टैग-फोल्डिंग सपोर्ट के लिए यह और एक समर्पित XML एडिटर के बीच लगातार स्विच कर रहा था। मुझे आश्चर्य है, हालांकि, अगर यह संभव हो तो इस कार्यशीलता को गन्दगी के रूप में एक ही लाइब्रेरी का उपयोग करके लागू किया जा सकता है , जो GUI Emacsen में पेड़ की संरचना के माउस और लाइन-ड्राइंग के साथ गुना / खुलासा करता है?
डोडगेटेस्टेमोलर

12

वेब-मोड में एलिमेंट फोल्डिंग बिल्ट इन और बाउंड टू है C-c C-f। लेकिन आप स्पष्ट रूप से nxml- मोड का उपयोग करने के कुछ सुविधाओं को खो देंगे।


मैं वेब-मोड के बारे में नहीं जानता था (इन दिनों ज्यादा वेब देव नहीं करता)। मैं इसे आज़माऊँगा और वापस रिपोर्ट करूँगा, धन्यवाद।
मार्क आफ्लिक

1
बहुत करीब! दुर्भाग्य से वेब-मोड xml टैग नामों (जो हम उपयोग करते हैं) में अंडरस्कोर के लिए अनुमति नहीं देता है। पूरे वेब-मोड कोड में लिटरेड सैकड़ों समान-समान हार्ड कोडेड रेगेक्स स्ट्रिंग्स हैं। मेरे पास काम करने का एक छुरा था जिसे संशोधित किया जाना चाहिए लेकिन यह थकावट की वजह से है! अन्यथा, वेब-मोड में तह वास्तव में काम करता है :)
मार्क Aufflick

0
(add-to-list
 'hs-special-modes-alist
 '(nxml-mode
   "<!--\\|<[^/>][^>]*>" "-->\\|</[^/>]+>" "<!--" #'nxml-forward-element nil))
(add-hook 'nxml-mode-hook #'hs-minor-mode)
;; (setcdr (assoc 'nxml-mode hs-special-modes-alist) (list "<!--\\|<[^/>][^>]*>" "-->\\|</[^/>]+>" "<!--" #'nxml-forward-element nil))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.