2009-05-07 11 views
6

मुझे आशा है कि यह एक वैध प्रश्न है: इंटेलिजेंस VS2008 में कैसे काम करता है? मैं सुझावों को खोजने के लिए उपयोग किए जाने वाले एल्गोरिदम के बारे में क्या जानता हूं, जब यह वास्तव में पॉप अप होता है ("।" केवल एक स्पष्ट ट्रिगर होता है), यदि संभव हो तो इसका व्यवहार कैसे संशोधित किया जा सकता है, आदिविजुअल स्टूडियो में इंटेलिजेंस कैसे काम करता है?

इस प्रश्न को संदर्भ में रखने के लिए: मुख्य मुद्दा जिसे मैं हल करने का प्रयास कर रहा हूं वह है कि संपादक स्क्रीन के हिस्सों में इंटेलिजेंस को सक्रिय और निष्क्रिय कैसे करें और सुझाव बॉक्स को पॉप्युलेट करने के लिए कहां संशोधित करें।

सभी जानकारी का स्वागत है।

उत्तर

1

क्या आपने msdn में this धागा देखा है?

+0

अच्छी शुरुआत। धन्यवाद। –

0

ग्रहण में यह सुविधा भी है और यह एक ओपन सोर्स प्रोजेक्ट है। वास्तव में कोड को देखकर ग्रहण कैसे करता है यह जांच न करें?

+0

मैं एक घर में डोमेन-विशिष्ट भाषा –

0

यह प्रश्न बहुत व्यापक है। चूंकि वहां कई अलग-अलग भाषाएं हैं, वीएस आईडीई बॉक्स से बाहर निकलती है और वहां कई डीएसएल और आईडीई एन्हांसमेंट हैं जो वैकल्पिक इंटेलिजेंस का समर्थन करते हैं, यह कई उत्तरों का तात्पर्य है। यदि आप सी # के बारे में बात कर रहे हैं तो विशेष रूप से टूल्स देखें विकल्प | पाठ संपादक | सी # | समापन विकल्पों के उपलब्ध विकल्पों को देखने के लिए Intellisense क्षेत्र। जहां तक ​​एल्गोरिदम का उपयोग किया जाता है, आप असेंबली के मेटाडेटा, प्रकार के सदस्यों की नकली कैशिंग, विशिष्ट प्रकार के लिए चुने गए अंतिम सदस्य के लिए एमआरयू सूची आदि की तलाश करेंगे। यदि आपके पास एक और विशिष्ट सवाल है, तो मैं सुझाव दूंगा आप स्पष्ट करते हैं।

डीएसएल (लोहेप्थाथन) और इसके कार्यान्वयन here का उदाहरण देखें।

8

हालांकि, इसे रिवर्स-इंजीनियर करने के लिए यह और अधिक मजेदार है। की समस्या पर विचार करें:

  • आप रुचि के शब्द
  • आप संभव
  • विकल्प आप अब उन्हें

पेश करने के लिए की जरूरत है खोजने की जरूरत है की पहचान करने की जरूरत है, पहला कदम आप का मतलब कोड को पार्स करना होगा। आपके पास सी/सी ** कीवर्ड हैं, आप विभिन्न फ़ंक्शन और क्लास घोषणाओं को पूर्व-विश्लेषण करते हैं, और उन्हें किसी प्रकार की डेटा संरचना में लोड करते हैं। फिर आप कोड को पार्स करते हैं और कक्षा, चर, आदि नामों को स्टोर करते हैं और उन्हें एक ही डेटा संरचना में डाल देते हैं।

दूसरा चरण का मतलब है कि आप एक डेटा संरचना चाहते हैं जो कुशलतापूर्वक आंशिक शब्द की खोज कर सके और उस उपसर्ग वाले सभी शब्द प्राप्त कर सकें। आप कर सकते हैं कि नियमित अभिव्यक्तियों के साथ, लेकिन यह बहुत ही कुशल नहीं है। उस तरह की खोज के लिए एक कुशल डेटा संरचना एक trie है, जिस पर चर्चा here on SO है।

एक बार आपके पास संभावनाओं की सूची हो जाने के बाद, आप इसे प्रस्तुत करते हैं। आप शायद संभावनाओं के वृक्ष की जड़ का संदर्भ रखना चाहते हैं ताकि आप उन्हें वास्तविक समय में खोज सकें क्योंकि कोई और अक्षर लिखता है।

0

मैंने वीएस में कोई टेक्स्ट एडिटर नहीं देखा है जो इंटेलिसेन्स कहां दिखाता है। यह सभी भाषा विशिष्ट है। यदि आपका कर्सर उस बिंदु पर स्थित है जहां IntelliSense एक वैध टोकन में योगदान दे सकता है, तो इसका उपयोग कब किया जाएगा।

मेरा मानना ​​है कि परियोजना प्रणाली का उपयोग करने के साथ कुछ बातचीत है, लेकिन जहां तक ​​मुझे पता है। मुझे यह भी विश्वास है कि विजुअल स्टूडियो एसडीके में नमूना प्रोजेक्ट सिस्टम है, और यह आपको एक विचार दे सकता है।

0

ऐसे मामलों के लिए मैं कभी-कभी इंटेलिसेन्स के अपने संस्करण का उपयोग करता हूं जिसे मैंने AutoHotKey के लिए विकसित किया जब मैं विशिष्ट व्यवहार चाहता हूं। इस स्क्रिप्ट का मुद्दा यह है कि इसका उपयोग किसी भी संपादक, या मूल रूप से किसी भी नियंत्रण स्वीकार करने वाले पाठ के साथ किया जा सकता है। यह टेक्स्ट इनपुट रिकॉर्ड करके और सिंटैक्स फ़ाइल पर व्याख्या करके काम करता है।

आप शायद उस चीज़ के आधार के रूप में इसका उपयोग कर सकते हैं जिसे आप प्राप्त करना चाहते हैं। मैंने कई भाषाओं के साथ सफलतापूर्वक ISense का उपयोग किया, जिसमें Csound या बैच स्क्रिप्ट्स जैसी कोई चीज़ नहीं है। प्रतिबिंब के साथ संयोजन में इनपुट निगरानी का उपयोग कर सी # का समर्थन करने के लिए इसे विस्तारित करना संभव होगा।

वैसे भी, एएचके के साथ आप वीएस इंटेलिसेंस को आइटमों की सूची लेने और इसे फ़िल्टर करने, या इसी तरह की चीजों को "ले जाकर" नियंत्रित कर सकते हैं। आपको प्रक्रिया सीमाओं के साथ कुछ छोटी समस्याएं हो सकती हैं लेकिन कुछ भी नहीं तय किया जा सकता है।

इंटेलिजेंस ius आमतौर पर, AFAIK, विभिन्न विधियों का उपयोग करके लागू किया गया। मैंने पढ़ा है कि डेल्फी इतनी तेज़ी से है कि यह प्रत्येक टोकन पर प्रोजेक्ट को पुन: संकलित करके आइसेंस लागू करता है और यही वजह है कि सी ++ बिल्डर के पास बहुत धीमी गति से संकलन नहीं होता है।

0

यह कहां बदलता है कि यह कहां दिखता है, संक्षिप्त जवाब है, आप नहीं कर सकते। अधिकांश भाग के लिए इंटेलिजेंस आपके प्रोजेक्ट में शामिल असेंबली (और सी ++ के साथ कुछ अन्य चाल) के प्रतिबिंब द्वारा प्रदान किया जाता है। जो भी आप प्राप्त कर रहे हैं वह आपके द्वारा शामिल सभी असेंबली और जीएसी की सभी असेंबली के माध्यम से वीएस प्रसंस्करण का परिणाम है।

कहा, यदि आप एक परियोजना तुम पर काम कर रहे से स्पष्ट IntelliSense परिणाम प्रदान करना चाहते हैं,,, IVsContextualIntellisenseFilterProvider

अंत में इस पर गौर दृश्यों प्रक्रिया के पीछे में कुछ अंतर्दृष्टि के लिए जाँच this blog post

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