समाधान 1:
चरण 1, https://github.com/felipeochoa/rjsx-mode का उपयोग करें
चरण 2, Emacs 25+ स्थापित करें, https://github.com/mooz/js2-mode/issues/291 देखें
चरण 3, नीचे कोड के साथ पैच rjsx- मोड
(defadvice js-jsx-indent-line (after js-jsx-indent-line-after-hack activate)
"Workaround sgml-mode and follow airbnb component style."
(save-excursion
(beginning-of-line)
(if (looking-at-p "^ +\/?> *$")
(delete-char sgml-basic-offset))))
कृपया ध्यान दें कि घटक विशेषता में तीर फ़ंक्शन का उपयोग करने पर अभी भी कुछ इंडेंट इश्यू है। लेकिन यह समाधान ज्यादातर मामलों में ठीक काम करता है।
वर्तमान स्थिर संस्करण के लिए पैच अभी भी उपयोगी है rjsx-mode v0.4.0
।
बग 2018-8-19 पर अस्थिर संस्करण में तय किया गया था , विवरण के लिए https://github.com/felipeochoa/rjsx-mode/pull/75 देखें।
मेरे द्वारा छड़ी करने rjsx-mode
का कारण यह है कि यह js2- मोड से विरासत में मिला है इसलिए मैं js2- मोड से imenu फ़ंक्शन का उपयोग कर सकता हूं। Es6 जावास्क्रिप्ट लिखते समय यह बहुत उपयोगी है।
कृपया ध्यान दें कि यदि आप js2-jsx-mode
इसके बजाय उपयोग करते हैं rjsx-mode
, तो भी आपको मेरे पैच की आवश्यकता है।
समाधान 2:
वेब-मोड का उपयोग करें । मैं वेब-मोड का उपयोग नहीं करता, लेकिन इसके हालिया रिलीज़ नोट का दावा है कि jsx इंडेंटेशन को ठीक से संभाला जा सकता है। यदि आप वेब-मोड का उपयोग करते हैं, तो js2-mode से imenu कोई और उपलब्ध नहीं है।