سؤال

آمل أن يكون هذا هو سؤال وجيه:كيف التحسس العمل في VS2008?أنا بعد ما هو معروف عن خوارزمية يستخدم للعثور على اقتراحات بالضبط متى ظهر (ال "." هو مجرد واحد واضح الزناد), كيف سلوكها يمكن تعديلها إذا كان ذلك ممكنا ، إلخ.

طرح هذا السؤال في السياق:القضية الرئيسية أحاول حل هو كيفية تفعيل وتعطيل خاصية التحسس الذكي في أجزاء من محرر الشاشة و كيفية تعديل حيث يبحث لملء صندوق الاقتراحات.

جميع المعلومات هو موضع ترحيب.

هل كانت مفيدة؟

المحلول

ونلقي نظرة على هذه DIY المادة التحسس على CodeProject.

نصائح أخرى

انها أكثر متعة على عكس ذلك.دعونا النظر في المشكلة:

  • تحتاج إلى التعرف على الكلمات من الفائدة
  • تحتاج إلى العثور على خيارات ممكنة
  • تحتاج إلى تقديم لهم

الآن الخطوة الأولى يعني تحتاج إلى تحليل التعليمات البرمجية.كنت قد حصلت على C/C** كلمات, كنت قبل تحليل مختلف وظيفة من الدرجة إعلانات وتحميلها إلى نوع من بنية البيانات.ثم تحليل رمز مخزن الصف ، متغير ، إلخ أسماء ووضعها في نفس بنية البيانات.

الخطوة الثانية يعني أنك تريد بنية البيانات بكفاءة يمكن البحث عن جزئية كلمة والحصول على جميع الكلمات التي يجب أن البادئة.يمكنك هل هذا مع التعابير العادية ، ولكن ليست فعالة جدا.كفاءة هيكل البيانات لهذا النوع من البحث هو trie ، والتي يتم مناقشتها هنا على ذلك .

مرة واحدة لديك قائمة من الاحتمالات ، كنت موجودة فقط في ذلك.ربما كنت تريد أن تبقي إشارة إلى جذر الشجرة من الاحتمالات لذلك يمكنك البحث في الوقت الحقيقي كشخص أنواع أكثر من الحروف.

لقد الكسوف أيضا هذه الميزة وأنه هو مشروع مفتوح المصدر. لماذا لا تحقق من مدى الكسوف يفعل ذلك من خلال النظر في الواقع في مدونة؟

وهذا السؤال واسع جدا. وبما أن هناك عددا من اللغات المختلفة IDE VS يدعم من خارج منطقة الجزاء وهناك N عدد من التحسينات DSL و IDE التي تدعم التحسس بديل هذا ينطوي على عدد من الإجابات. إذا كنت تتحدث عن C # تحديدا ثم انظر أدوات | خيارات | محرر النص | C # | منطقة التحسس لمعرفة الخيارات المتاحة من الخيارات الانتهاء. وفيما يتعلق خوارزمية [ق] المستخدمة، يمكنك أن تبحث عن البيانات الوصفية من الجمعيات، والتخزين المؤقت وفيرة من أعضاء نوع، قائمة MRU لعضو آخر تم اختياره لنوع معين، وما إذا كان لديك سؤال أكثر تحديدا، فإنني أقترح لك أن توضح.

وانظر مثال على DSL (و IronPython) وتنفيذها هنا .

وأنا لم أر أي محرر نصوص في VS أن حدود حيث يظهر التحسس تصل. كل شيء بلغة معينة. إذا كان موجودا المؤشر عند النقطة التي يمكن أن تسهم التحسس إلى رمز مميز صحيح، وذلك عندما سيتم استخدامها.

وأعتقد أن هناك بعض التفاعل مع مشروع نظام المستخدمة، ولكن هذا بقدر ما أعرف. وأعتقد أيضا أن هناك مشروع نظام العينة في البصرية ستوديو SDK، والتي يمكن أن تعطيك فكرة.

لمثل هذه الحالات وأنا في بعض الأحيان استخدام نسختي الخاصة من InteliSense أنني وضعت ل أوتوهوتكي عندما أريد سلوك معين. نقطة من هذا السيناريو هو أنه يمكن استخدامها مع أي محرر، أو أساسا أي سيطرة قبول النص. وهو يعمل عن طريق تسجيل إدخال النص وتفسيره على ملف بناء الجملة.

ويمكنك ربما استخدامه كقاعدة لشيء تريد تحقيقه. كنت ISense succesifully مع العديد من اللغات التي لم يكن لديك شيء من هذا القبيل، مثل Csound أو حتى دفعة نصوص. سيكون من الممكن توسيع نطاقه ليشمل دعم C # باستخدام الإدخال الرصد في تركيبة مع التأمل.

وعلى أي حال، مع AHK حتى يمكنك السيطرة VS intelissense ب "اتخاذ" قائمة العناصر ويعرض وتصفية، أو أشياء مماثلة. قد يكون لديك بعض المشاكل الصغيرة مع حدود العملية ولكن لا شيء غير قادر على أن تكون ثابتة.

ووالناهية التحسس عموما، AFAIK، نفذت باستخدام أساليب مختلفة. قرأت أن دلفي سريع بحيث تنفذ isense من اعادة تجميع المشروع على كل رمز وأن يكون السبب لم C ++ بناء يكن لديك isense ليصل إلى تجميع بطيئة للغاية.

وأما فيما يتعلق بك كيفية تغيير حيث يبدو السؤال، الجواب القصير هو، لا يمكنك. يتم توفير التحسس بالنسبة للجزء الأكبر من انعكاس المجالس تضمينها في المشروع (وبعض الحيل الأخرى مع C ++). ما كنت تحصل هو نتيجة لمعالجة VS من خلال جميع المجالس قمت بتضمين وجميع المجالس من GAC.

ومع ذلك، إذا كنت ترغب في تقديم نتائج التحسس صريحة من مشروع كنت تعمل على، والنظر في <لأ href = "http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell .interop.ivscontextualintellisensefilterprovider (VS.80) .aspx اتصال "يختلط =" نوفولو noreferrer "> IVsContextualIntellisenseFilterProvider

وأخيرا، بالنسبة لبعض نظرة ثاقبة وراء عملية الكواليس، تحقق <لأ href = "http://blogs.msdn.com/vsdteam/archive/2006/06/09/624131.aspx" يختلط = "نوفولو noreferrer "> هذا بلوق وظيفة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top