يوفر الاستشارة أوامر البحث والتنقل بناءً على وظيفة إكمال القراءة في Emacs. يتيح لك الإكمال تحديد عنصر بسرعة من قائمة المرشحين. يقدم Consult أوامر consult-grep
و consult-ripgrep
غير المتزامنة والتفاعلية، وخط consult-line
أمر البحث القائم على السطر. علاوة على ذلك، يوفر Consult مخزنًا مؤقتًا متقدمًا لاستشارة أمر تبديل المخزن consult-buffer
للتبديل بين المخازن المؤقتة والملفات المفتوحة مؤخرًا والإشارات المرجعية والمرشحات الشبيهة بالمخزن المؤقت من مصادر أخرى. بعض أوامر الاستشارة هي إصدارات محسنة لأوامر Emacs المضمنة. على سبيل المثال، يقدم الأمر consult-imenu
قائمة مسطحة لقائمة Imenu مع معاينة مباشرة وتجميع وتضييق. يرجى إلقاء نظرة على القائمة الكاملة للأوامر.
إن Consult متوافق تمامًا مع أنظمة الإكمال التي تتمحور حول واجهة برمجة التطبيقات (API) completing-read
القياسية لـ Emacs، ولا سيما نظام الإكمال الافتراضي، Vertico، وMct، وIcomplete.
تحافظ هذه الحزمة على الحد الأدنى من تفاصيل نظام الإكمال. تعد قدرة أوامر Consult على العمل بشكل جيد مع أنظمة الإكمال العشوائية إحدى المزايا الرئيسية للحزمة. تتناسب الاستشارة بشكل جيد مع الإعدادات الحالية وتساعدك على إنشاء بيئة إكمال كاملة من مكونات صغيرة ومستقلة.
يمكنك الجمع بين الحزم التكميلية Marginalia وEmbark وOrderless مع Consult. تعمل Marginalia على إثراء عرض الإكمال بالتعليقات التوضيحية، على سبيل المثال، سلاسل التوثيق أو معلومات الملف. توفر حزمة Embark متعددة الاستخدامات إجراءات محلية يمكن مقارنتها بقائمة السياق. تعمل هذه الإجراءات على المرشح المحدد في المخزن المؤقت الصغير أو عند نقطة ما في المخازن المؤقتة العادية. على سبيل المثال، عند الاختيار من قائمة الملفات، يعرض Embark إجراءً لحذف الملف. بالإضافة إلى ذلك، تقدم Embark وسيلة لجمع المرشحين للإكمال في مخزن مؤقت للتجميع. يوثق قسم التكامل Embark بالتفصيل كيفية عمل Consult وEmbark معًا.
الشكل 1: consult-git-grep
الشكل 2: consult-imenu
الأوامر
الشكل 3: consult-line
الأوامر
تتبع معظم أوامر Consult نظام التسمية ذي المعنى consult-
. تطبق العديد من الأوامر ميزة Emacs غير المعروفة ولكنها مريحة والتي تسمى "السجل المستقبلي"، والتي تخمن المدخلات التي يريدها المستخدم. في موجه الأوامر، اكتب Mn
وعادة ما يقوم Consult بإدراج الرمز أو الشيء عند النقطة في الإدخال.
تلميح: إذا قمت بتنشيط التعليقات التوضيحية لـ Marginalia، فاكتب Mx ^consult
لرؤية جميع أوامر Consult مع وصفها المختصر. وبدلاً من ذلك، اكتب Ch a ^consult
للحصول على نظرة عامة على كافة متغيرات ووظائف Consult مع أوصافها.
consult-buffer
: نسخة محسنة من switch-to-buffer
مع دعم المخازن المؤقتة الافتراضية. يدعم المعاينة المباشرة للمخازن المؤقتة وتضييق أنواع المخازن المؤقتة الافتراضية. يمكنك كتابة f SPC
لتضييق نطاق الملفات الحديثة. اضغط على SPC
لإظهار المخازن المؤقتة المؤقتة. مفاتيح التضييق المدعومة:recentf-mode
)consult-buffer-sources
.consult-buffer-other-window
، consult-buffer-other-frame
، consult-buffer-other-tab
: متغيرات consult-buffer
.consult-project-buffer
: متغير من consult-buffer
يقتصر على المخازن المؤقتة والملفات الحديثة للمشروع الحالي. يمكنك إضافة مصادر مخصصة إلى consult-project-buffer-sources
. قد يطالبك الأمر بمشروع إذا قمت باستدعائه من خارج المشروع.consult-bookmark
: حدد أو قم بإنشاء إشارة مرجعية. لتحديد الإشارات المرجعية، يمكنك استخدام consult-buffer
كبديل، والذي يمكن أن يتضمن مصدر مخزن مؤقت افتراضي للإشارات المرجعية. لاحظ أن consult-bookmark
تدعم معاينة الإشارات المرجعية وتضييقها.consult-recent-file
: اختر من الملفات الأخيرة مع المعاينة. قد تفضل consult-buffer
القوي بدلاً من ذلك، والذي يمكن أن يتضمن الملفات الحديثة كمصدر مخزن مؤقت افتراضي. يتيح recentf-mode
إمكانية تتبع الملفات الحديثة. consult-yank-from-kill-ring
: نسخة محسنة من yank
لتحديد عنصر من kill-ring
. تمت معاينه النص المحدد كتراكب في المخزن المؤقت.consult-yank-pop
: نسخة محسنة من yank-pop
مع سلوك DWIM، والذي إما يستبدل آخر yank
سحب عبر kill-ring
، أو إذا لم تكن هناك yank
أخيرة، فاستشير kill-ring
. تمت معاينه النص المحدد كتراكب في المخزن المؤقت.consult-yank-replace
: مثل consult-yank-pop
، ولكن دائمًا ما يتم استبدال آخر yank
بعنصر من kill-ring
.consult-kmacro
: حدد ماكرو من حلقة الماكرو وقم بتنفيذه. consult-register
: اختر من قائمة السجلات. يدعم الأمر تضييق أنواع التسجيل ومعاينة مواضع العلامات. هذا الأمر مفيد للبحث في محتويات التسجيل. للوصول السريع، استخدم الأوامر consult-register-load
أو consult-register-store
أو أوامر تسجيل Emacs المضمنة.consult-register-format
: قم بتعيين register-preview-function
لهذه الوظيفة لتنسيق السجل المحسن. انظر تكوين المثال.consult-register-window
: استبدل register-preview
بهذه الوظيفة للحصول على نافذة تسجيل أفضل. انظر تكوين المثال.consult-register-load
: أمر الأداة المساعدة لتحميل السجل بسرعة. ينتقل الأمر إما إلى قيمة التسجيل أو يقوم بإدراجها.consult-register-store
: واجهة مستخدم محسنة لتخزين السجلات اعتمادًا على السياق الحالي من خلال قائمة الإجراءات. مع المنطقة النشطة، قم بتخزين/إلحاق/إلحاق المحتويات مسبقًا، وحذف المنطقة اختياريًا عند إعطاء وسيطة بادئة. باستخدام وسيطة بادئة رقمية، قم بتخزين/إضافة الرقم. بخلاف ذلك، قم بتخزين نقطة أو مجموعة إطارات أو نافذة أو kmacro. أمثلة الاستخدام:M-' x
: إذا لم تكن هناك منطقة نشطة، قم بتخزين النقطة في السجل x
. إذا كانت المنطقة نشطة، قم بتخزين المنطقة في السجل x
.M-' Mw x
: تكوين نافذة المتجر في السجل x
.Cu 100 M-' x
: رقم المتجر في السجل x
. consult-goto-line
: انتقل إلى رقم السطر المعزز بالمعاينة المباشرة. هذا بديل مباشر لـ goto-line
. أدخل رقم السطر للانتقال إلى العمود الأول من السطر المحدد. وبدلاً من ذلك، أدخل line:column
للانتقال إلى عمود محدد.consult-mark
: انتقل إلى العلامة الموجودة في mark-ring
. يدعم المعاينة المباشرة والتحرير العودي.consult-global-mark
: انتقل إلى علامة في global-mark-ring
. يدعم المعاينة المباشرة والتحرير العودي.consult-outline
: انتقل إلى عنوان المخطط التفصيلي. يدعم التضييق إلى مستوى العنوان والمعاينة المباشرة والتحرير المتكرر.consult-imenu
: انتقل إلى عنصر imenu الموجود في المخزن المؤقت الحالي. يدعم المعاينة المباشرة والتحرير العودي والتضييق.consult-imenu-multi
: انتقل إلى عنصر imenu في المخازن المؤقتة للمشروع، بنفس الوضع الرئيسي مثل المخزن المؤقت الحالي. يدعم المعاينة المباشرة والتحرير العودي والتضييق. هذه الميزة مستوحاة من imenu-anywhere. consult-line
: أدخل سلسلة البحث واختر من بين الأسطر المطابقة. يدعم المعاينة المباشرة والتحرير العودي. تتم إضافة الرمز عند النقطة وسلسلة Isearch الأخيرة إلى "السجل المستقبلي" ويمكن الوصول إليهما بالضغط على Mn
. عندما يرتبط consult-line
isearch-mode-map
ويتم استدعاؤه أثناء تشغيل Isearch، فإنه سيستخدم سلسلة Isearch الحالية.consult-line-multi
: البحث ديناميكيًا عبر مخازن مؤقتة متعددة. بشكل افتراضي البحث عبر المخازن المؤقتة للمشروع. إذا تم استدعاؤه باستخدام وسيطة بادئة، فابحث عبر جميع المخازن المؤقتة. يتم حساب المرشحين على أساس الطلب على أساس المدخلات. يتصرف الأمر مثل consult-grep
، ولكنه يعمل على المخازن المؤقتة بدلاً من الملفات.consult-keep-lines
: بديل keep/flush-lines
التي تستخدم نمط الإكمال الحالي لتصفية المخزن المؤقت. تقوم الوظيفة بتحديث المخزن المؤقت أثناء الكتابة. على وجه الخصوص، يمكن consult-keep-lines
تضييق نطاق المخزن المؤقت للتجميع Embark الذي تم تصديره بشكل أكبر، وذلك بالاعتماد على نفس تصفية الإكمال مثل completing-read
. إذا كان الإدخال يبدأ بمعامل النفي، على سبيل المثال، ! SPC
، يطابق المرشح المكمل. إذا كانت المنطقة نشطة، فإن المنطقة تقيد التصفية.consult-focus-lines
: إخفاء الخطوط مؤقتًا عن طريق تصفيتها باستخدام نمط الإكمال الحالي. اتصل باستخدام وسيطة البادئة Cu
لإظهار الخطوط المخفية مرة أخرى. إذا كان الإدخال يبدأ بمعامل النفي، على سبيل المثال، ! SPC
، يطابق المرشح المكمل. وعلى النقيض من consult-keep-lines
لا تقوم هذه الوظيفة بتحرير المخزن المؤقت. إذا كانت المنطقة نشطة، فإن المنطقة تقيد التصفية. consult-grep
, consult-ripgrep
, consult-git-grep
: ابحث عن التعبير العادي في الملفات. يستدعي الاستشارة Grep بشكل غير متزامن، أثناء إدخال مصطلح البحث. بعد الحصول على أحرف consult-async-min-input
على الأقل، يبدأ البحث. يقوم Consult بتقسيم سلسلة الإدخال إلى جزأين، إذا كان الحرف الأول عبارة عن علامة ترقيم، مثل #
. على سبيل المثال، يتم تقسيم #regexps#filter-string
عند #
الثاني. يتم تمرير regexps
السلسلة إلى Grep. لاحظ أن Consult تقوم بتحويل تعبيرات Emacs العادية إلى تعبيرات يفهمها برنامج البحث. استخدم دائمًا تعبيرات Emacs العادية عند المطالبة. إذا قمت بإدخال تعبيرات عادية متعددة مفصولة بمسافات، فسيتم عرض الأسطر المطابقة لجميع التعبيرات العادية فقط. من أجل مطابقة المساحة حرفيًا، قم بالهروب من المساحة باستخدام شرطة مائلة عكسية. يتم تمرير filter-string
إلى تصفية Emacs السريعة لتضييق نطاق قائمة التطابقات بشكل أكبر. يعد هذا مفيدًا بشكل خاص إذا كنت تستخدم أسلوب إكمال متقدم مثل النظام غير المنظم. consult-grep
يدعم المعاينة. يبحث consult-grep
في دليل المشروع الحالي إذا تم العثور على مشروع. وإلا فسيتم البحث default-directory
. إذا تم استدعاء consult-grep
باستخدام وسيطة البادئة Cu Ms g
، فيمكنك تحديد واحد أو أكثر من الملفات والأدلة المفصولة بفواصل يدويًا. إذا تم استدعاؤه باستخدام وسيطتين بادئتين Cu Cu Ms g
، فيمكنك أولاً تحديد مشروع إذا لم تكن داخل المشروع بعد.consult-find
، consult-fd
، consult-locate
: ابحث عن الملف عن طريق مطابقة المسار مع regexp. كما هو الحال مع consult-grep
، إما أن يكون جذر المشروع أو الدليل الحالي هو الدليل الجذري للبحث. يتم التعامل مع سلسلة الإدخال بشكل مشابه للمعاملة consult-grep
، حيث يتم تمرير الجزء الأول للبحث عنه، ويتم استخدام الجزء الثاني لتصفية Emacs. وسيطات البادئة consult-find
العمل تمامًا مثل تلك الخاصة بأوامر Consult grep. consult-compile-error
: انتقل إلى خطأ في الترجمة. يدعم تضييق المعاينة المباشرة والتحرير العودي.consult-flymake
: انتقل إلى تشخيص Flymake. يدعم المعاينة المباشرة والتحرير العودي. الأمر يدعم التضييق. اضغط على e SPC
و w SPC
و n SPC
لعرض الأخطاء والتحذيرات والملاحظات فقط على التوالي.consult-xref
: التكامل مع xref. يمكن تعيين هذه الوظيفة كـ xref-show-xrefs-function
و xref-show-definitions-function
. consult-complex-command
: حدد أمرًا من command-history
. هذا الأمر هو نسخة completing-read
من repeat-complex-command
وهو أيضًا بديل لأمر command-history
من chistory.el.consult-history
: أدخل سلسلة من سجل المخزن المؤقت الحالي، على سبيل المثال سجل Eshell أو Comint. يمكنك أيضًا استدعاء هذا الأمر من المخزن المؤقت. في هذه الحالة، يستخدم consult-history
السجل المخزن في minibuffer-history-variable
. إذا كنت تفضل completion-at-point
، فقم بإلقاء نظرة على cape-history
من حزمة كيب.consult-isearch-history
: أثناء جلسة Isearch، يختار هذا الأمر سلسلة بحث من السجل ويواصل البحث باستخدام السلسلة المحددة حديثًا. خارج Isearch، يسمح لك الأمر باختيار سلسلة من السجل وبدء بحث Isearch جديد. يعمل consult-isearch-history
كبديل مباشر لـ isearch-edit-string
. consult-minor-mode-menu
: تمكين/تعطيل الوضع الثانوي. يدعم التضييق إلى أوضاع التشغيل/الإيقاف/المحلية/العالمية بالضغط على i/o/l/g SPC
على التوالي.consult-mode-command
: قم بتشغيل أمر من الأوضاع الثانوية أو الرئيسية النشطة حاليًا. يدعم التضييق إلى الوضع المحلي الصغير/العالمي الصغير/الرئيسي عبر المفاتيح l/g/m
. consult-org-heading
: البديل من consult-imenu
أو consult-outline
للمخازن المؤقتة للمؤسسة. يتم فصل العنوان وعناوين أسلافه بخطوط مائلة. يدعم التضييق حسب مستوى العنوان والأولوية وكلمة TODO الرئيسية، بالإضافة إلى المعاينة المباشرة والتحرير المتكرر.consult-org-agenda
: انتقل إلى عنوان جدول أعمال المؤسسة. يدعم التضييق حسب مستوى العنوان والأولوية وكلمة TODO الرئيسية، بالإضافة إلى المعاينة المباشرة والتحرير المتكرر. consult-man
: ابحث عن صفحة دليل Unix عبر Unix apropos
أو man -k
. يقوم consult-man
بفتح صفحة الدليل المحددة باستخدام أمر Emacs man
.consult-info
: البحث عن النص الكامل من خلال صفحات المعلومات. إذا تم استدعاء الأمر من داخل المخزن المؤقت *info*
، فسيتم البحث خلال الدليل الحالي. قد ترغب في إنشاء أوامرك الخاصة التي تبحث من خلال مجموعة محددة مسبقًا من صفحات المعلومات، على سبيل المثال: ( defun consult-info-emacs ()
" Search through Emacs info pages. "
( interactive )
(consult-info " emacs " " efaq " " elisp " " cl " " compat " ))
( defun consult-info-org ()
" Search through the Org info page. "
( interactive )
(consult-info " org " ))
( defun consult-info-completion ()
" Search through completion info pages. "
( interactive )
(consult-info " vertico " " consult " " marginalia " " orderless " " embark "
" corfu " " cape " " tempel " ))
consult-theme
: حدد موضوعًا وقم بتعطيل جميع السمات الممكّنة حاليًا. يدعم المعاينة المباشرة للموضوع أثناء التمرير عبر المرشحين.consult-preview-at-point
و consult-preview-at-point-mode
: وضع الأمر والثانوي الذي يقوم بمعاينة المرشح عند نقطة في المخزن *Completions*
. يكون هذا الوضع مناسبًا إذا كنت تستخدم Mct أو واجهة المستخدم *Completions*
الافتراضية.consult-completion-in-region
: في حالة عدم استخدام Corfu كواجهة مستخدم للإكمال داخل المخزن المؤقت، يمكن تعيين هذه الوظيفة completion-in-region-function
. بعد ذلك، سيتم استخدام واجهة مستخدم إكمال المخزن المؤقت الصغير (على سبيل المثال، Vertico أو Icomplete) completion-at-point
. ; ; Use `consult-completion-in-region' if Vertico is enabled.
; ; Otherwise use the default `completion--in-region' function.
( setq completion-in-region-function
( lambda ( &rest args )
( apply ( if vertico-mode
# 'consult-completion-in-region
# 'completion--in-region )
args)))
بدلاً من consult-completion-in-region
، قد تفضل رؤية الإكمالات مباشرة في المخزن المؤقت كنافذة صغيرة منبثقة. في هذه الحالة، أوصي بحزمة كورفو. هناك قيود فنية على consult-completion-in-region
مع أوضاع Lsp. يعتمد خادم Lsp على الإدخال عند النقطة، من أجل إنشاء سلاسل مرشحة منقحة. نظرًا لنقل الإكمال من المخزن المؤقت الأصلي إلى المخزن المؤقت الصغير، لا يتلقى الخادم الإدخال المحدث. في المقابل، فإن إكمال Lsp داخل المخزن المؤقت، على سبيل المثال عبر Corfu، يعمل بشكل صحيح حيث أن الإكمال يتم مباشرة في المخزن المؤقت الأصلي.
تعمل الاستشارة على تحسين completing-read
من خلال المعاينات المباشرة للمرشحين، وإمكانيات تضييق إضافية لمجموعات المرشحين وقوائم المرشحين التي يتم إنشاؤها بشكل غير متزامن. إن وظيفة consult--read
الداخلية، والتي تستخدمها معظم أوامر الاستشارة، عبارة عن غلاف رفيع حول completing-read
وتوفر الوظيفة الخاصة. من أجل دعم مصادر مرشحة متعددة، توجد consult--multi
. تسمح بنية Consult لها بالعمل مع أنظمة إكمال مختلفة في الواجهة الخلفية، مع الاستمرار في تقديم ميزات متقدمة.
تدعم بعض أوامر الاستشارة المعاينات المباشرة. على سبيل المثال، عند التمرير خلال عناصر consult-line
، سيتم تمرير المخزن المؤقت إلى الموضع المقابل. من الممكن الانتقال ذهابًا وإيابًا بين المخزن المؤقت الصغير والمخزن المؤقت لإجراء تحرير متكرر أثناء استمرار البحث.
تتيح الاستشارة المعاينات بشكل افتراضي. يمكنك تعطيلها عن طريق ضبط متغير consult-preview-key
. علاوة على ذلك، من الممكن تحديد روابط المفاتيح التي تؤدي إلى تشغيل المعاينة يدويًا كما هو موضح في تكوين المثال. الإعداد الافتراضي consult-preview-key
هو any
مما يعني أن Consult يقوم بتشغيل المعاينة فورًا عند أي ضغطة على المفتاح عندما يتغير المرشح المحدد. يمكنك تكوين كل أمر على حدة باستخدام :preview-key
. الإعدادات التالية ممكنة:
'any
(list :debounce 0.5 'any)
"M-."
(list :debounce 0.5 "M-.")
nil
التوصية الآمنة هي ترك المعاينات الفورية التلقائية ممكّنة بشكل عام وتعطيل المعاينة التلقائية فقط للأوامر التي قد تكون المعاينة فيها باهظة الثمن بسبب تحميل الملف. داخليًا، يستخدم Consult قيمة this-command
لتحديد :preview-key
المخصص. هذا يعني أنه إذا قمت بلف أمر consult-*
داخل وظيفتك أو أمرك، فستحتاج أيضًا إلى إضافة اسم الأمر المخصص إلى استدعاء consult-customize
حتى يتم أخذه في الاعتبار.
(consult-customize
consult-ripgrep consult-git-grep consult-grep
consult-bookmark consult-recent-file consult-xref
consult--source-bookmark consult--source-file-register
consult--source-recent-file consult--source-project-recent-file
; ; my/command-wrapping-consult ;; disable auto previews inside my command
:preview-key '( :debounce 0.4 any) ; ; Option 1: Delay preview
; ; :preview-key "M-.") ;; Option 2: Manual preview
في هذه الحالة، قد يتساءل المرء عن الفرق بين استخدام إجراء Embark على المرشح الحالي مقارنةً بالمعاينة التي يتم تشغيلها يدويًا. والفرق الرئيسي هو أن الملفات المفتوحة عن طريق المعاينة اليدوية يتم إغلاقها مرة أخرى بعد جلسة الإكمال. أثناء المعاينة، يتم تعطيل بعض الوظائف لتحسين الأداء، راجع على سبيل المثال متغيرات التخصيص consult-preview-variables
و consult-preview-allowed-hooks
. يتم تنفيذ الخطافات المدرجة في consult-preview-allowed-hooks
فقط. ينطبق هذا المتغير على خطافات find-file-hook
و change-major-mode-hook
وخطافات الوضع، على سبيل المثال، prog-mode-hook
. لتمكين تأمين الخط الإضافي أثناء المعاينة، قم بإضافة الخطافات المقابلة إلى قائمة السماح. يوضح التعليمة البرمجية التالية هذا لـ org-modern وhl-todo.
; ; local modes added to prog-mode hooks
( add-to-list 'consult-preview-allowed-hooks 'hl-todo-mode )
( add-to-list 'consult-preview-allowed-hooks 'elide-head-mode )
; ; enabled global modes
( add-to-list 'consult-preview-allowed-hooks 'global-org-modern-mode )
( add-to-list 'consult-preview-allowed-hooks 'global-hl-todo-mode )
تتم معاينة الملفات الأكبر من consult-preview-partial-size
جزئيًا. يعد تأخير المعاينة مفيدًا أيضًا لـ consult-theme
، نظرًا لأن معاينة السمة بطيئة. يؤدي التأخير إلى تجربة واجهة مستخدم أكثر سلاسة.
; ; Preview on any key press, but delay 0.5s
(consult-customize consult-theme :preview-key '( :debounce 0.5 any))
; ; Preview immediately on M-., on up/down after 0.5s, on any other key after 1s
(consult-customize consult-theme
:preview-key
'( " M-. "
:debounce 0.5 " " " "
:debounce 1 any))
لدى Consult دعمًا خاصًا للمجموعات المرشحة. إذا كانت واجهة مستخدم الإكمال تدعم وظيفة التجميع، فستفصل واجهة المستخدم المجموعات بخطوط رفيعة وتعرض عناوين المجموعة. يكون التجميع مفيدًا إذا كانت قائمة المرشحين تتكون من مرشحين من أنواع متعددة أو مرشحين من مصادر متعددة، مثل أمر consult-buffer
، الذي يعرض كلا من المخازن المؤقتة والملفات المفتوحة مؤخرًا. لاحظ أنه يمكنك تعطيل عناوين المجموعة عن طريق تعيين الخاصية :group
للأمر المقابل على صفر باستخدام الماكرو consult-customize
.
من خلال إدخال بادئة تضييق أو بالضغط على مفتاح تضييق، من الممكن قصر مرشحي الإكمال على مجموعة مرشحة معينة. عند استخدام أمر consult-buffer
، يمكنك إدخال البادئة b SPC
لتقييد قائمة المرشحين بالمخازن المؤقتة فقط. إذا قمت بالضغط على DEL
بعد ذلك، سيتم عرض قائمة المرشحين الكاملة مرة أخرى. علاوة على ذلك، يمكن تكوين مفتاح بادئة تضييق ومفتاح توسيع يمكن الضغط عليهما لتحقيق نفس التأثير، راجع متغيرات التكوين consult-narrow-key
و consult-widen-key
.
بعد الضغط على consult-narrow-key
، يمكن إظهار مفاتيح التضييق المحتملة بالضغط على Ch
. عند الضغط على Ch
بعد بعض مفاتيح البادئة، يتم استدعاء prefix-help-command
، مما يعرض نافذة تعليمات ربط المفاتيح بشكل افتراضي. كبديل أكثر إحكاما، هناك أمر consult-narrow-help
الذي يمكن ربطه بمفتاح، على سبيل المثال ?
أو Ch
في consult-narrow-map
، كما هو موضح في تكوين المثال. في حالة تثبيت أي مفتاح، ستظهر مفاتيح التضييق تلقائيًا في نافذة أي مفتاح بعد الضغط على consult-narrow-key
.
لدى Consult دعمًا للإنشاء غير المتزامن لقوائم المرشحين. يتم استخدام هذه الميزة لأوامر البحث مثل consult-grep
، حيث يتم إنشاء قائمة التطابقات ديناميكيًا أثناء قيام المستخدم بكتابة تعبير عادي. يتم تنفيذ عملية grep في الخلفية. عند تعديل التعبير العادي، يتم إنهاء عملية الخلفية وتبدأ عملية جديدة بالتعبير العادي المعدل.
يمكن بعد ذلك تضييق نطاق التطابقات التي تم العثور عليها باستخدام نمط إكمال Emacs المثبت. يمكن أن يكون هذا فعالاً إذا كنت تستخدم على سبيل المثال أسلوب الإكمال orderless
.
هذا التصفية على مستويين ممكن عن طريق تقسيم سلسلة الإدخال. يتم التعامل مع جزء من سلسلة الإدخال كمدخل لـ grep ويتم استخدام جزء من الإدخال للتصفية. هناك العديد من أنماط التقسيم المتاحة، والتي تم تكوينها في consult-async-split-styles-alist
: nil
و comma
و semicolon
و perl
. يتم تكوين نمط التقسيم الافتراضي باستخدام المتغير consult-async-split-style
.
باستخدام أنماط تقسيم comma
والفاصلة semicolon
، يتم تمرير الكلمة الأولى قبل الفاصلة أو الفاصلة المنقوطة إلى grep، ويتم استخدام السلسلة المتبقية للتصفية. لا يؤدي نمط التقسيم nil
إلى أي تقسيم، ويتم تمرير الإدخال بالكامل إلى grep.
يقوم نمط تقسيم perl
بتقسيم سلسلة الإدخال عند حرف علامات الترقيم، باستخدام بناء جملة مشابه لتعبيرات Perl العادية.
أمثلة:
#defun
: ابحث عن "defun" باستخدام grep.#consult embark
: ابحث عن كل من "consult" و"embark" باستخدام grep بأي ترتيب.#first.*second
: ابحث عن "الأول" متبوعًا بـ "الثاني" باستخدام grep.#(consult|embark)
: ابحث عن "consult" أو "embark" باستخدام grep. لاحظ استخدام التعبيرات العادية بنمط Emacs.#defun#consult
: ابحث عن "defun" باستخدام grep، وقم بالتصفية باستخدام كلمة "consult"./defun/consult
: من الممكن أيضًا استخدام أحرف ترقيم أخرى.#to#
: فرض البحث عن "to" باستخدام grep، نظرًا لأن نمط grep يجب أن يكون أطول من أحرف consult-async-min-input
افتراضيًا.#defun -- --invert-match#
: تمرير الوسيطة --invert-match
إلى grep. تُنشئ العمليات غير المتزامنة مثل find
و grep
مخزنًا مؤقتًا لسجل الأخطاء _*consult-async*
(لاحظ المسافة البادئة)، وهو أمر مفيد لاستكشاف الأخطاء وإصلاحها. يحتوي الموجه على مؤشر صغير يوضح حالة العملية:
:
النقطتان الموجهتان المعتادتان، قبل توفير الإدخال.*
مع وجه تحذير، العملية قيد التشغيل.:
مع وجه النجاح، النجاح، خرجت العملية برمز خطأ صفر.!
مع وجود خطأ، فشل، تم الخروج من العملية برمز خطأ غير صفري.;
مع وجه خطأ، تمت مقاطعته، على سبيل المثال، إذا تم توفير المزيد من المدخلات. يمكن دمج مصادر مرشحة متزامنة متعددة. يتم استخدام هذه الميزة بواسطة أمر consult-buffer
لتقديم مرشحين يشبهون المخزن المؤقت في قائمة واحدة للوصول السريع. بشكل افتراضي، يشتمل consult-buffer
على المخازن المؤقتة والإشارات المرجعية والملفات الحديثة والمخازن المؤقتة والملفات الخاصة بالمشروع. من الممكن تكوين قائمة المصادر عبر المتغير consult-buffer-sources
. يمكن تعريف المصادر المخصصة التعسفية.
على سبيل المثال، يتم تعريف مصدر الإشارة المرجعية على النحو التالي:
( defvar consult--source-bookmark
`( :name " Bookmark "
:narrow ?m
:category bookmark
:face consult-bookmark
:history bookmark-history
:items ,# 'bookmark-all-names
:action ,# 'consult--bookmark-action ))
حقول المصدر المطلوبة:
:category
.:items
قائمة السلاسل للاختيار من بينها أو وظيفة إرجاع قائمة السلاسل. قائمة الخلايا السلبية غير مدعومة.حقول المصدر الاختيارية:
:name
اسم المصدر المستخدم للتضييق وعناوين المجموعات والشروح.:narrow
حرف تضييق أو زوج (character . string)
.:preview-key
مفتاح المعاينة أو المفاتيح التي تؤدي إلى المعاينة.:enabled
الدالة التي يجب أن ترجع t إذا تم تمكين المصدر.:hidden
عندما يتم إخفاء مرشحي هذا المصدر افتراضيًا.:face
يستخدم لتسليط الضوء على المرشحين.:annotate
يتم استدعاء وظيفة التعليق التوضيحي لكل مرشح، وإرجاع السلسلة.:history
اسم متغير التاريخ لإضافة المرشح المحدد.:default
يجب أن يكون t إذا كان العنصر الأول من المصدر هو القيمة الافتراضية.:action
يتم استدعاء الدالة مع المرشح المحدد.:new
باسم مرشح جديد، فقط إذا كانت :require-match
لا شيء.:state
منشئ الدولة للمصدر، يجب أن يعيد وظيفة الحالة. تستحق حقول :state
و :action
للمصادر شرحًا أطول. تأخذ الدالة :action
وسيطة واحدة ولا يتم استدعاؤها إلا بعد الاختيار مع المرشح المحدد، إذا لم يتم إلغاء التحديد. يتم توفير هذه الوظيفة لتوفير الراحة وسهولة تعريف المصادر. الحقل :state
أكثر عمومية. الدالة :state
هي دالة منشئة بدون وسيطات، والتي يمكنها إجراء بعض الإعدادات اللازمة للمعاينة. يجب أن يُرجع إغلاقًا يتطلب إجراءً ووسيطة CANDIDATE. راجع مستندات consult--with-preview
للحصول على مزيد من التفاصيل حول وسيطة ACTION.
افتراضيًا، consult-buffer
بمعاينة المخازن المؤقتة والإشارات المرجعية والملفات. يمكن أن يؤدي تحميل الملفات أو الإشارات المرجعية الحديثة إلى عمليات مكلفة. ومع ذلك فمن الممكن تكوين المعاينة اليدوية على النحو التالي.
(consult-customize
consult--source-bookmark consult--source-file-register
consult--source-recent-file consult--source-project-recent-file
:preview-key " M-. " )
يمكن إضافة المصادر مباشرة إلى قائمة consult-buffer-source
للراحة. على سبيل المثال، يسرد المصدر التالي جميع المخازن المؤقتة للمؤسسة ويتيح لك إنشاء مخازن جديدة.
( defvar org-source
( list :name " Org Buffer "
:category 'buffer
:narrow ?o
:face 'consult-buffer
:history 'buffer-name-history
:state # 'consult--buffer-state
:new
( lambda ( name )
( with-current-buffer ( get-buffer-create name)
( insert " #+title: " name " nn " )
( org-mode )
(consult--buffer-action ( current-buffer ))))
:items
( lambda ()
(consult--buffer-query :mode 'org-mode :as # 'consult--buffer-pair ))))
( add-to-list 'consult-buffer-sources 'org-source 'append )
يمكن للمرء إنشاء مصادر مماثلة للأوضاع الرئيسية الأخرى. راجع موقع Consult wiki للحصول على العديد من أمثلة المصادر الإضافية. راجع أيضًا وثائق consult-buffer
consult--multi
API. يمكن استخدام وظيفة consult--multi
لإنشاء أوامر جديدة متعددة المصادر.
ملاحظة : قم بتثبيت حزمة embark-consult
من MELPA، والتي توفر إجراءات Embark الخاصة بالاستشارة وتصدير المخزن المؤقت لـ Occur.
Embark عبارة عن حزمة متعددة الاستخدامات توفر إجراءات تعتمد على السياق، ويمكن مقارنتها بقائمة السياق. راجع دليل Embark للحصول على وصف شامل لقدراته.
الإجراءات هي أوامر يمكن أن تعمل على المرشح المحدد حاليًا (أو الهدف في مصطلحات Embark). عند استكمال الملفات، على سبيل المثال، يتم تقديم أمر delete-file
. باستخدام Embark، يمكنك تنفيذ أوامر عشوائية على المرشح المحدد حاليًا عبر Mx
.
علاوة على ذلك، توفر Embark أمر embark-collect
، الذي يجمع المرشحين ويقدمهم في المخزن المؤقت للتجميع Embark، حيث يمكن تطبيق المزيد من الإجراءات عليهم. الميزة ذات الصلة هي أمر embark-export
، الذي يقوم بتصدير قوائم المرشحين إلى مخزن مؤقت من نوع خاص. على سبيل المثال، في حالة اكتمال الملف، يتم فتح مخزن مؤقت Dired.
في سياق الاستشارة، من المثير بشكل خاص إمكانية تصدير الأسطر المطابقة من consult-line
consult-outline
consult-mark
consult-global-mark
. يتم تصدير الأسطر المطابقة إلى مخزن مؤقت للحدث حيث يمكن تحريرها عبر occur-edit-mode
(اضغط على المفتاح e
). وبالمثل، يدعم Embark تصدير المطابقات التي تم العثور عليها بواسطة consult-grep
و consult-ripgrep
و consult-git-grep
إلى مخزن Grep المؤقت، حيث يمكن تحرير المطابقات عبر الملفات، إذا تم تثبيت حزمة wgrep. مسارات العمل الثلاثة هذه متماثلة.
consult-line
-> embark-export
إلى المخزن occur-mode
-> occur-edit-mode
لتحرير التطابقات في المخزن المؤقت.consult-grep
-> embark-export
إلى المخزن grep-mode
-> wgrep
لتحرير جميع التطابقات.consult-find
-> embark-export
إلى المخزن dired-mode
-> wdired-change-to-wdired-mode
للتحرير.يمكن تثبيت الاستشارة من ELPA أو MELPA عبر مدير الحزم المدمج في Emacs. وبدلاً من ذلك، يمكن تثبيته مباشرة من مستودع التطوير عبر مديري الحزم غير القياسيين الآخرين.
يوجد موقع Consult wiki، حيث يمكن المساهمة بأمثلة تكوين إضافية.
هام: من المستحسن أن تقوم بتمكين الربط المعجمي في التكوين الخاص بك. تتطلب العديد من مقتطفات التعليمات البرمجية ذات الصلة بالاستشارة ربطًا معجميًا، نظرًا لأنها تستخدم عمليات الإغلاق واللامدا.
توفر حزمة الاستشارة الأوامر فقط ولا تضيف أي روابط مفاتيح أو أوضاع. وبالتالي فإن الحزمة غير تدخلية ولكنها تتطلب القليل من جهد الإعداد. من أجل استخدام أوامر الاستشارة، يُنصح بإضافة روابط مفاتيح للأوامر التي يتم الوصول إليها كثيرًا. يمكن استدعاء الأوامر النادرة الاستخدام عبر Mx
. لا تتردد في ربط الأوامر التي تعتبرها مفيدة لسير عملك فقط. يعتمد التكوين الموضح هنا على ماكرو use-package
، وهو أداة ملائمة لإدارة تكوينات الحزمة.
ملاحظة: يوجد موقع Consult wiki، حيث يمكنك المساهمة بأمثلة تكوين إضافية.
; ; Example configuration for Consult
( use-package consult
; ; Replace bindings. Lazily loaded by `use-package' .
:bind ( ; ; C-c bindings in `mode-specific-map'
( " C-c M-x " . consult-mode-command)
( " C-c h " . consult-history)
( " C-c k " . consult-kmacro)
( " C-c m " . consult-man)
( " C-c i " . consult-info)
([remap Info-search] . consult-info)
; ; C-x bindings in `ctl-x-map'
( " C-x M-: " . consult-complex-command) ; ; orig. repeat-complex-command
( " C-x b " . consult-buffer) ; ; orig. switch-to-buffer
( " C-x 4 b " . consult-buffer-other-window) ; ; orig. switch-to-buffer-other-window
( " C-x 5 b " . consult-buffer-other-frame) ; ; orig. switch-to-buffer-other-frame
( " C-x t b " . consult-buffer-other-tab) ; ; orig. switch-to-buffer-other-tab
( " C-x r b " . consult-bookmark) ; ; orig. bookmark-jump
( " C-x p b " . consult-project-buffer) ; ; orig. project-switch-to-buffer
; ; Custom M-# bindings for fast register access
( " M-# " . consult-register-load)
( " M-' " . consult-register-store) ; ; orig. abbrev-prefix-mark (unrelated)
( " C-M-# " . consult-register)
; ; Other custom bindings
( " M-y " . consult-yank-pop) ; ; orig. yank-pop
; ; M-g bindings in `goto-map'
( " M-g e " . consult-compile-error)
( " M-g f " . consult-flymake) ; ; Alternative: consult-flycheck
( " M-g g " . consult-goto-line) ; ; orig. goto-line
( " M-g M-g " . consult-goto-line) ; ; orig. goto-line
( " M-g o " . consult-outline) ; ; Alternative: consult-org-heading
( " M-g m " . consult-mark)
( " M-g k " . consult-global-mark)
( " M-g i " . consult-imenu)
( " M-g I " . consult-imenu-multi)
; ; M-s bindings in `search-map'
( " M-s d " . consult-find) ; ; Alternative: consult-fd
( " M-s c " . consult-locate)
( " M-s g " . consult-grep)
( " M-s G " . consult-git-grep)
( " M-s r " . consult-ripgrep)
( " M-s l " . consult-line)
( " M-s L " . consult-line-multi)
( " M-s k " . consult-keep-lines)
( " M-s u " . consult-focus-lines)
; ; Isearch integration
( " M-s e " . consult-isearch-history)
:map isearch-mode-map
( " M-e " . consult-isearch-history) ; ; orig. isearch-edit-string
( " M-s e " . consult-isearch-history) ; ; orig. isearch-edit-string
( " M-s l " . consult-line) ; ; needed by consult-line to detect isearch
( " M-s L " . consult-line-multi) ; ; needed by consult-line to detect isearch
; ; Minibuffer history
:map minibuffer-local-map
( " M-s " . consult-history) ; ; orig. next-matching-history-element
( " M-r " . consult-history)) ; ; orig. previous-matching-history-element
; ; Enable automatic preview at point in the *Completions* buffer. This is
; ; relevant when you use the default completion UI.
:hook ( completion-list-mode . consult-preview-at-point-mode)
; ; The :init configuration is always executed (Not lazy)
:init
; ; Optionally configure the register formatting. This improves the register
; ; preview for `consult-register' , `consult-register-load' ,
; ; `consult-register-store' and the Emacs built-ins.
( setq register-preview-delay 0.5
register-preview-function # 'consult-register-format )
; ; Optionally tweak the register preview window.
; ; This adds thin lines, sorting and hides the mode line of the window.
( advice-add # 'register-preview :override # 'consult-register-window )