একটি সংগ্রহের অর্ডার বাছাইয়ের অর্ডারটি সম্পূর্ণরূপে পড়ুন


10

উভয় ক্ষেত্রেই:

(completing-read "test: " '("a" "b" "c"))

বা:

(completing-read "test: " '("c" "b" "a"))

টিপে যখন সমাপ্তি বাফার একই ফলাফল উত্পাদন করে TAB। আমি কীভাবে এটি বাছাইয়ের আদেশকে সম্মান করব?

উত্তর:


9

* সমাপ্তি * তালিকায় বাছাইয়ের আদেশটি display-sort-functionআপনার সমাপ্তির টেবিলের সম্পত্তি দ্বারা নির্ধারিত হয় (ফিরে আসার সাথে সাথে completion-metadata)। আপনার ক্ষেত্রে, আপনার সমাপ্তির টেবিলের তেমন কোনও সম্পত্তি নেই, তাই এটি ডিফল্টে ফিরে আসে, যা বর্ণমালা অনুসারে বাছাই করা হয়।

তুমি ব্যবহার করতে পার:

(defun my-presorted-completion-table (completions)
  (lambda (string pred action)
    (if (eq action 'metadata)
        `(metadata (display-sort-function . ,#'identity))
      (complete-with-action action completions string pred))))

এবং তারপর

(completing-read "test: " (my-presorted-completion-table '("a" "b" "c")))

[এটি ধরে নিচ্ছে আপনি ব্যবহার করছেন lexical-binding। ]


আপনি যদি icompleteআদেশটিকেও সম্মান করতে চান তবে আপনি (cycle-sort-function . ,#'identity)মেটাডেটা তালিকায় একটি যুক্ত করতে পারেন ।
ওমর

2

completing-readতালিকাগুলির একটি তালিকা দিন এবং এটি আদেশটিকে সম্মান করবে:

(completing-read "test: " '(("a") ("b") ("c")))
(completing-read "test: " '(("c") ("b") ("a")))

দস্তাবেজ বলেছেন:

(completing-read PROMPT COLLECTION &optional PREDICATE REQUIRE-MATCH INITIAL-INPUT HIST DEF INHERIT-INPUT-METHOD)

সম্পূর্ণ হওয়ার সাথে সাথে মিনিপাফারে একটি স্ট্রিং পড়ুন। PROMPT প্রম্পট একটি স্ট্রিং; সাধারণত এটি একটি কোলন এবং একটি স্পেসে শেষ হয়। সংগ্রহটি স্ট্রিংগুলির তালিকা, একটি তালিকা, একটি ওবারে বা হ্যাশ টেবিল হতে পারে। ...

এটি সংগ্রহ হিসাবে একটি তালিকায় নিতে পারে। কার্যত, আপনি কীগুলি দিয়ে একটি মানচিত্র তৈরি করছেন তবে মান ছাড়াই।


এই এ গিয়ে Emacs 27. আমার জন্য কাজ করে না
আদম সিম্পসন

2

আমি এই প্রাচীন বানানটি ব্যবহার না করার পরামর্শ দেব।

বিল্ট- ido-completing-readইনটির এই ঘাটতি নেই:

(ido-completing-read "test: " '("a" "b" "c"))
(ido-completing-read "test: " '("c" "b" "a"))

না helm:

(helm :sources
      `((name . "test: ")
        (candidates . ("a" "b" "c"))))
(helm :sources
      `((name . "test: ")
        (candidates . ("c" "b" "a"))))

1
সমস্যাটি ido-completing-readহ'ল এর ^থেকে অদ্ভুত নতুন লাইনের চরিত্র রয়েছে semantic-format-tag-summarize। হেলম হিসাবে, আমি সবাই এটি ব্যবহার করে ধরে নিতে পারি না। এজন্যই completing-readএকমাত্র বিকল্প।
আপনি ডু

এটি ব্যবহার না করার একটি লম্পট কারণ। semantic-format-tag-summarizeআপনাকে যা দেবে তা কেবল পোস্টপ্রসেস করুন ।
আবো-আবো

অথবা এর জন্য বাগ রিপোর্ট জমা দিনido
অ্যাবো-অ্যাবো

1
আমি তাও করেছি কিন্তু সফল হই নি। আউটপুট semantic-format-tag-summarizeশেষে কিছু দেয়, তবে অক্ষরটি প্রদর্শিত completing-readবা প্রদর্শিত হয় না helm-comp-read। আমি ইতিমধ্যে অন্য semantic-format-tag-summarizeমুখোমুখি স্থানে অন্য একটি ফাংশন লিখেছি । ব্যবহারকারীদের ট্যাগ (রঙ সহ) প্রদর্শন করার জন্য, আমি এখনও ব্যবহার করি semantic-format-tag-summarizeতবে পরিবর্তে পাঠ্য উইজেটগুলি সহ একটি কাস্টম বাফার ব্যবহার করি।
টু ডু

সম্ভবত আমি শেষে কী semantic-format-tag-summarizeফিরে আসবে তা খুঁজে পাওয়ার পরে ইডো-তে বাগ জমা দেব । আমার একটি সমাধান ছিল তবে আমি এর সমাধানটি এখনও জানতে চাই completing-read। আমি জানি হেলম এটি তৈরি করতে পারে তবে কেবল এটির সাথে একটি সহজ উপায় completing-readবিদ্যমান কিনা তা জানতে চেয়েছিলাম ।
টু ডো

1

আপনি যদি আইকিকেল ব্যবহার করেন তবে অর্ডারটি সম্মানিত completing-read

(এবং আপনি সাজানোর ব্যবহার করতে পারেন বিভিন্ন সাজানোর অর্ডার , হয় ইন্টারেক্টিভ পদ্ধতিতে অথবা পাতার মর্মর মাধ্যমে। এবং ভ্যানিলা গিয়ে Emacs মতো বাছাই উভয় প্রভাবিত *Completions*প্রদর্শন এবং সাইকেল অর্ডার।)


1
আবো-আবোর উত্তরের মতামত একই, আমি বাহ্যিক প্যাকেজগুলির উপর নির্ভর করতে পারি না। এবং ido-completing-readকিছু সমস্যা হচ্ছে।
টু ডু

2
সম্ভবত আপনি পারবেন না, তবে অন্য কেউ পারেন। ;-) এটি যেমন সমস্যার উদ্রেক করা হয়েছে তেমন একটি সহজ সমাধান: completing-readআইসিকেলগুলি দিয়ে কেবল ব্যবহার করুন । আপনি এমনকি icicle-modeসাময়িকভাবে চালু করতে পারেন (উদাহরণস্বরূপ কল করার জন্য completing-read), ম্যাক্রো ব্যবহার করে icicle-with-icy-mode-ON
ড্রু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.