2012-05-19 4 views
12

forward/backward-word फ़ंक्शन के लिए शब्द के हिस्से के रूप में अंडरस्कोर को इलाज करने की कोशिश कर रहा है जैसा कि here और here वर्णित है। मैं विशेष रूप से इसे nxhtml मोड के लिए काम करने की कोशिश कर रहा हूं, लेकिन वास्तव में यह सभी मोड के लिए इस तरह काम करना पसंद करेगा।फॉरवर्ड-वर्ड के लिए शब्द के हिस्से के रूप में अंडरस्कोर

मैंने अपनी site-start.el फ़ाइल को कई अलग-अलग तरीकों से संशोधित किया है लेकिन इसका कोई फायदा नहीं हुआ है। लेकिन अगर मैं बफर में M-x modify-syntax-table कमांड को मैन्युअल रूप से निष्पादित करता हूं, तो यह ठीक काम करता है। मैं इसे डिफ़ॉल्ट व्यवहार नहीं कर सकता।

;; 1 
;; thought this would apply it to all modes - no error, but did not work 
(modify-syntax-entry ?_ "w") 

;; 2 
;; thought this would automatically set it on a mode change - no error, but did not work 
(defun change-major-mode-hook() 
(modify-syntax-entry ?_ "w")) 


;; 3 
;; thought this would apply it to all modes - no error, but did not work 
(modify-syntax-entry ?_ "w") 

;; 4 
;; this produced a symbol's value as variable is void error 
(modify-syntax-entry ?_ "w" nxhtml-mode-syntax-table) 

मैं क्या याद आ रही है:

यहाँ क्या मैं अपने site-start.el फ़ाइल में डालने की कोशिश की है?

+1

'संशोधित-वाक्य रचना-entry' की docstring कहते हैं," वाक्य रचना केवल तालिका सिंटैक्स-टेबल, वर्तमान बफर के वाक्य रचना मेज पर जो चूक के लिए बदल गया है "। सुझाव देने के लिए वहां कुछ भी नहीं है कि आप उस पैरामीटर को छोड़कर सभी सिंटैक्स टेबल को वैश्विक रूप से बदल सकते हैं। – phils

उत्तर

18

क्या आपने nxhtml-mode-hook को सीधे संशोधित करने का प्रयास किया है? इसलिए जैसा:

(add-hook 'nxhtml-mode-hook 
      (lambda() (modify-syntax-entry ?_ "w"))) 
+0

धन्यवाद - यह वही किया जो मैं खोज रहा था। और मैं कहा: (एड-हुक 'php-मोड हुक (लैम्ब्डा() (संशोधित-वाक्य रचना-एंट्री _ "डब्ल्यू"))?) –

+0

मैं किसी को स्पष्ट करने के लिए के लिए करना चाहते हैं: सभी Emacs मोड के लिए यह काम करता है , या केवल 'nxhtml-mode' के लिए? (मैं बाद में अनुमान लगाने रहा हूँ, लेकिन कृपया स्पष्ट) – Qqwy

6

ट्रे के अपने बहुत विशिष्ट सवाल का जवाब दे।

लेकिन Emacs में पहले से ही एक चरित्र संगठन है जो आप पूछते हैं: sexp। आप के बजाय sexp आदेशों शब्द आदेशों को तोड़ने के सीखा है, तो आप "शब्द" या "प्रतीक" के रूप में स्थिति के अनुसार सही से हटा सकते हैं।

+0

अंडरस्कोर से चर नाम का उपयोग कर, मैं वास्तव में शब्द के हिस्से के रूप अंडरस्कोर का इलाज करना चाहते हैं। प्रतीक आधारित आंदोलनों अभी भी काफी है कि मैं क्या करने के लिए इस्तेमाल कर रहा हूँ से अलग हैं। –

+0

मुझे एक अंडरस्कोर का इलाज एक अलग शब्द के रूप में बहुत असुविधाजनक था।मुझे तब भी याद नहीं आया जब मुझे वास्तव में एक शब्द 'foo_bar' * (बीटीडब्ल्यू, वर्तमान में मेरे पास वास्तव में ऐसे कई शब्द हैं) * पर जाने के लिए जरूरी था। *। लेकिन इसके विपरीत: हर बार जब मैं हिल रहा हूं, या इमाक्स के एविल में टेक्स्ट ऑब्जेक्ट के साथ कुछ करने की कोशिश कर रहा हूं, और मेरे पास ऐसा शब्द है - यह बात सिर्फ मेरे संपादन में हस्तक्षेप करती है और मुझे धीमा कर देती है। –

4

event_jr के रूप में, मुझे सलाह है कि आप sexp- आधारित कमांड जैसे C-M-f और C-M-b का उपयोग करना सीखें। लेकिन यदि आप वास्तव में केवल पहचानकर्ताओं (और कोष्ठक जैसी चीजों को अनदेखा करना) पर कूदना चाहते हैं, तो सभी प्रमुख मोड (जो अप्रत्याशित परिणाम समाप्त हो सकते हैं) में सभी वाक्यविन्यास तालिकाओं को आजमाएं और बदलने के बजाय, मैं आपको बस नए प्रतीक-आधारित का उपयोग करने की सलाह देता हूं आंदोलन आदेश। ईजी। (global-set-key [remap forward-word] 'forward-symbol)। कुछ आदेशों के लिए (जैसे kill-word) आपको kill-symbol स्वयं लिखना होगा, लेकिन यह करना आसान होना चाहिए।

3

ट्रेई जैक्सन द्वारा सुझाए गए अनुसार प्रत्येक प्रमुख मोड के लिए हुक जोड़ने के बजाय, आप मानक वाक्यविन्यास तालिका को संशोधित कर सकते हैं। अलग प्रकार मानक वाक्य रचना तालिका से विरासत तो अपने संशोधन उम्मीद है कि सभी साधनों के लिए लागू होगी:

(modify-syntax-entry ?_ "w" (standard-syntax-table)) 

यह नियमित पाठ, एक्सएमएल, अजगर और अन्य लोगों को प्रभावित करेगा।

कुछ मोड अधिक जिद्दी हैं, और मानक वाक्यविन्यास तालिका को संशोधित करने से उन्हें प्रभावित नहीं होगा क्योंकि वे प्रारंभिकरण के दौरान कुछ प्रतीकों को ओवरराइड करते हैं। एक उदाहरण cc-mode है। आपको अभी भी अपनी तालिकाओं को स्पष्ट रूप से संशोधित करना होगा।

संबंधित मुद्दे