سؤال

يبدو أن هناك العديد من آليات إتمام السيارات البديلة EMACs. بدون بحث شامل ، تتبادر إلى الذهن: IDO ، الإكمال التلقائي ، الجليد ، في الانتهاء من المخزن المؤقت ، وإكمال الحافز ، والقياسية من الانتهاء من الصندوق. ثم هناك إكمال رمز. الكثير منه. والكثير منها تعتمد على اللغة. سيكون من المفيد للغاية أن يكون لديك معلم EMACs ، أو ثلاثة ، لتلخيص فوائد اللاعبين الرئيسيين في كل من الكود والكمالة التلقائية غير الرمز. وكونها فائض في التدفق ، وغني عن القول أنه سيكون من الجيد تحديد أوضاع إكمال السيارات التي تعمل بشكل أفضل لآليات تشبه IDE الخاصة بـ EMACS.

تحديث: لقد اكتشفت للتو صفحة إكمال emacs wiki ما الذي يضخّم سؤالي الأساسي: من بين كل هذه الخيارات ، ما هو جيد ، ما هو أقل جيدة ، وإذا كان بإمكانك اللعب فقط مع 2-3 ما الذي تنصح به؟

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

المحلول

أستخدم عمومًا حزمتين للإكمال (بخلاف إكمال علامة التبويب المدمجة في المخازن المؤقتة MiniBuffer و Comint).

Pabbrev.el - الذي يوفر اقتراحًا في المؤشر (اضغط التبويب) لقبول. يتم اتخاذ الخيارات من خلال النظر في تردد الكلمات. يعجبني هذا بسبب الإشارة البصرية لما يمكن الانتهاء منه - لكنه يعمل في الغالب من أجل إكمال واحد فقط.

الهبي - الذي يرتبط عمومًا م-/ بدلاً من Dabbrev لأنه يفعل كل ما يفعله Dabbrev وأكثر من ذلك. هذا يعمل بشكل جيد عندما تحتاج إلى ركوب بعض البدائل ، أو إذا كنت ترغب في إكمال اسم ملف أو أي شيء آخر.

يعجبني كلاهما لأنهم لا يحتاجون إلى أي حركة ماوس ويعمل بسرعة.

نصائح أخرى

wrt الثلج --

بالنسبة للجزء الأكبر ، icicles تدور حول الحافز إكمال. هناك بعض الحالات التي يقدم فيها شيء لإنجاز (EG EG) ، ولكنه يتعلق بشكل أساسي بإنجاز Minibuffer.

عندما يفكر معظم الناس في إكمال MiniBuffer ، فإنهم يفكرون في إكمال اسم الملف ، وإكمال الاسم العازلة ، وإكمال اسم القيادة. لكن هناك أ كثيرا أكثر من ذلك.

بصفتك مبرمجًا لـ EMACS-LISP ، يمكنك استخدام الإكمال حيثما ترغب في منح المستخدمين خيارًا تفاعليًا. هذا عام جميل!

الانتهاء هو حقا عن مطابقة للأنماط لتحديد المجموعات, ، والتي يمكنك معالجتها بعد ذلك.

يعتقد معظم الناس أن الهدف الوحيد لإنجاز MiniBuffer هو اختيار اسم واحد (ملف ، عازلة ، أمر ، متغير ، ...). لكن قوة الانتهاء هي في الحقيقة تصفية وربما فرز مجموعة أسماء الملفات الكاملة ، وأسماء العازلة ، إلخ. بطرق مختلفة ، ثم السماح للمستخدمين بعمل شيء أو مع النات جلس (ليس بالضرورة كائن واحد).

وهذا ما الثلج حول: السماح لك تحدد المجموعات ديناميكيًا (تدريجيًا) باستخدام مطابقة الأنماط, ، ثم العمل على أعضاء مختارين أو جميع أعضاء تلك المجموعات.

هذا ليس هدفا أفعل أو حزم الانتهاء الأخرى ، مع استثناء ممكن من هيلم (أي شيء).

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

في هيلم (أي شيء), ، بشكل عام مدخلاتك مطابقة أولاً باسم الكائن ضد الكون بأكمله من الكائنات من جميع الأنواع ، وبعد ذلك تضيق لأسفل لاختيار بعض العمليات (العمليات) لأداء.

أخيرًا ، ضع في اعتبارك أن كل من أساليب الإكمال المختلفة تقدم شيئًا (على سبيل المثال) للمستخدمين النهائيين وشيء (على سبيل المثال ميزات الإكمال) للمبرمجين.

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

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

دونو ما إذا كان ذلك يساعد ، لكن هذا هو رأيي على أي حال.

يمكنني استخدام إكمال علامة التبويب القياسية في MiniBuffer لأسماء الملفات ، M-x الأوامر وأشياء أخرى.

أنا أيضا استخدام في كثير من الأحيان M-/ ضرب المفاتيح (dabbrev-expand) لاستكمال أي كلمة في أي من المخازن المؤقتة emacs الخاصة بك. إنه لأمر رائع ، خاصة بالنسبة للأسماء المتغيرة الطويلة. هنا الوثائق:

M-/ runs the command dabbrev-expand, which is an interactive
autoloaded Lisp function in `dabbrev.el'.

It is bound to M-/.

(dabbrev-expand ARG)

Expand previous word "dynamically".

Expands to the most recent, preceding word for which this is a prefix.
If no suitable preceding word is found, words following point are
considered.  If still no suitable word is found, then look in the
buffers accepted by the function pointed out by variable
`dabbrev-friend-buffer-function'.

A positive prefix argument, N, says to take the Nth backward *distinct*
possibility.  A negative argument says search forward.

If the cursor has not moved from the end of the previous expansion and
no argument is given, replace the previously-made expansion
with the next possible expansion not yet tried.

The variable `dabbrev-backward-only' may be used to limit the
direction of search to backward if set non-nil.

See also `dabbrev-abbrev-char-regexp' and C-M-/.

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

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