स्क्रीन से बाहर होने पर स्कोप की शुरुआत प्रदर्शित करें


12

जब यह स्क्रीन से बाहर निकलता है तो मैं एक दायरे के शुरुआती हिस्से को प्रदर्शित करना चाहूंगा।

उदाहरण:

namespace a  
{  
...  
--------------------- <- display frame 
...                 |  
}*                  | * when cursor is here display "namespace a" in the minibuffer
---------------------   or on screen

यह कई प्रोग्रामिंग भाषा के लिए काम कर सकता है लेकिन मैं मुख्य रूप से C ++ के बारे में सोच रहा हूं।

थोड़ा और स्पष्ट करने के लिए और उन लोगों के लिए जो वीएस को जानते हैं, मैं विज़ुअल स्टूडियो के लिए मौजूद समान सुविधा को पसंद करूंगा। अर्थात् एक गुंजाइश के अंत में कर्सर को संपादित करना बफर के शीर्ष पर गुंजाइश की शुरुआत को प्रदर्शित करता है।

क्या यह सुविधा पहले से मौजूद है?


मैं उत्सुक हूं, क्या मेरे जवाब से मदद मिली?
Tu Do

@TuDo हाँ! मेरे पास सिर्फ एक बार देखने का समय था। मेरे पास पहले से ही शब्दार्थ था और केवल वैश्विक-शब्दार्थ-स्टिकफुनक-मोड पर बारी-बारी से काम किया। धन्यवाद। मेरी समस्या अब यह है कि रंग हेडलाइन को पठनीय नहीं बनाता है ..
लॉग ० एनवी

जवाबों:


14

यदि आप C / C ++ / Java / Emacs Lisp / Python लिख रहे हैं, तो सिमेंटिक-स्टिकी-फंक-मोड वही करेगा जो आप चाहते हैं।

नोट : ऐसा लगता है कि GED से CEDET के साथ काम कर रहा है, वर्तमान में Emacs 24.4 में CEDET का स्टॉक नहीं है। Git से Emacs प्राप्त करने के लिए:

git क्लोन http://git.code.sf.net/p/cedet/git cedet

और CEDET को अपनी init फाइल में अन्य सभी चीजों से पहले लोड करें:

(load-file (concat user-emacs-directory "/cedet/cedet-devel-load.el"))
(add-to-list 'load-path (concat user-emacs-directory "cedet/contrib"))
(load-file (concat user-emacs-directory "cedet/contrib/cedet-contrib-load.el"))

जब सक्षम होता है, तो यह मोड दिखाता है कि फ़ंक्शन बिंदु वर्तमान में वर्तमान बफर की पहली पंक्ति में है। यह तब उपयोगी होता है जब आपके पास एक बहुत लंबा कार्य होता है जो स्क्रीन से अधिक फैलता है, और आपको फ़ंक्शन का नाम पढ़ने के लिए स्क्रॉल नहीं करना पड़ता है और फिर मूल स्थिति तक नीचे स्क्रॉल करना पड़ता है।

यह पूर्ण फ़ंक्शन इंटरफ़ेस (रिटर्न प्रकार, फ़ंक्शन नाम और पैरामीटर) प्रदर्शित करता है , न कि केवल फ़ंक्शन नाम।

इसे सक्षम करने के लिए, इस कोड को अपनी इनिट फ़ाइल में डालें:

(require 'semantic)
(semantic-mode 1)
(global-semantic-stickyfunc-mode 1)

अद्यतन : वर्तमान के साथ एक समस्या semantic-stickyfunc-modeयह है कि यह सभी मापदंडों को प्रदर्शित नहीं करता है जो कई लाइनों पर बिखरे हुए हैं। इस समस्या को हल करने के लिए, मैंने पैकेज चिपचिपा-वृद्धि का पैकेज बनाया ।

डेमो :

यहाँ C में एक डेमो है:

अर्थ चिपचिपा-समारोह मोड-सी

यहाँ Emacs लिस्प में एक डेमो है:

अर्थ चिपचिपा-समारोह मोड-elisp

UPDATE : वैकल्पिक रूप से, आप helm-semantic-or-imenu का उपयोग कर सकते हैं । जब आप किसी फ़ंक्शन के अंदर होते हैं और कमांड चलाते हैं, तो कर्सर को सूची में फ़ंक्शन पर सही स्थान पर रखा जाता है, जिससे आप हमेशा पूर्ण फ़ंक्शन इंटरफ़ेस देख सकते हैं। डेमो:

  • सबसे पहले, मैं helm-semantic-or-imenuफंक्शन में जाने के लिए helm-define-key-with-subkeysऔर वहां पॉइंट को स्थानांतरित करने के लिए उपयोग करता हूं ।

  • फिर, मैं फिर helm-semantic-or-imenuसे शुरू करता हूं और helm-define-key-with-subkeysपूर्व-चयनित हूं ।

  • फिर, मैं चर हेलम-मैप को इंगित करता हूं और helm-semantic-or-imenuदो फ़ंक्शन पर फिर से निष्पादित करता हूं : हेल्म-नेक्स्ट-सोर्स और हेल्म-पिछले-सोर्स। इस बार, मैं वर्तमान शब्दार्थ टैग को दिखा रहा हूँ, जो (जो कि helm-map है) में चल रहा है, यह Helm Semantic बफर में अन्य दो टैग दिखाता है। ऐसा इसलिए है क्योंकि मैंने कमांड चलाने से पहले एक उपसर्ग तर्क दिया।

इसके अलावा यह डेमो Emacs Lisp में है, यह C / C ++ के लिए भी काम करता है और यह अधिक लचीला है यदि आपको वास्तव में लंबा फंक्शन इंटरफ़ेस मिला है।

पतवार-अर्थ या imenu


आपको यह लिस्प के लिए काम करने के लिए कैसे मिला (विशेष रूप से एलिसिप)? मैंने आपके कोड का मूल्यांकन किया, emacs -Qलेकिन जब मैं ब्राउज़ करता हूं, तो आपको वह व्यवहार नहीं मिलता है, जैसे org.el,।
इसका अजायबघर

मैंने जवाब अपडेट किया। आप bzr से शब्दार्थ के साथ यह कोशिश करनी चाहिए।
तू डो

1
पूरी तरह से विषय से दूर। मुझे नयन विधा से परिचित कराने के लिए धन्यवाद। मेरी कोडिंग फिर कभी एक जैसी नहीं होगी।
पर्पल_रोज़

6

आप कर के चालू कर सकते which-function-modeहैं

M-x which-function-mode RET

सेटिंग को स्थायी बनाने के लिए, जोड़ें

(which-function-mode 1)

आपकी init-file में।

प्रलेखन से:

वर्तमान फ़ंक्शन (कौन सा फ़ंक्शन मोड) का मोड लाइन प्रदर्शन टॉगल करें। [...]

कौन सा फ़ंक्शन मोड एक वैश्विक मामूली मोड है। जब सक्षम किया जाता है, तो वर्तमान फ़ंक्शन नाम को कुछ प्रमुख मोड में लगातार मोड लाइन में प्रदर्शित किया जाता है

नोट : नाम वास्तव में इसका सुझाव नहीं देता है, लेकिन यह न केवल "फ़ंक्शन" के लिए, बल्कि अन्य प्रकार के स्कोप के लिए भी काम करता है। उदाहरण के लिए, में org-mode, which-function-modeवर्तमान सबट्री के हेडिंग को प्रदर्शित करता है।


धन्यवाद! मुझे मोड लाइन में प्रदर्शित फ़ंक्शन नाम मधुमक्खी पसंद है। कुछ मामले बहुत अच्छी तरह से काम नहीं कर रहे थे। किसी नाम स्थान की संरचना में विधि की तरह, नाम स्थान केवल प्रदर्शित किया गया था
log0
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.