ট্যাব সমাপ্তির জন্য আইভি ব্যবহার করতে কীভাবে আমি সেটআপ করতে পারি?


16

আমি সম্পূর্ণরূপে খুব পছন্দ করি ivyএবং ভালবাসা যে ইমামস কিছু প্রকারের সমাপ্তি ব্যবহার করে এমন প্রায় সব জায়গাতেই (ivy-mode 1)যথেষ্ট সরল যথেষ্ট ivy(এটি completeing-readআমি বিশ্বাস করি যে ওভাররাইডিং দ্বারা সম্পন্ন হয় )। তবে এটি ট্যাব সমাপ্তির জন্য eshellব্যবহারের ivyজন্য সেটআপ করে না । আমি eshellসমাপ্ত প্রার্থীদের তালিকার মতো চাই , তবে তাদের মধ্যে ivyইউআইকে পছন্দ করতে পছন্দ করব। eshellসমাপ্তি প্রার্থী তৈরি করতে যা কিছু করে তা পুনরায় ব্যবহার করার এবং `আইভি'র হাতে দেওয়ার উপায় আছে কি ?

উত্তর:


11

এটি ভাল কাজ করা উচিত:

(define-key eshell-mode-map (kbd "<tab>") 'completion-at-point)

কেন জানি উপরেরটি ডিফল্ট নয় isn't তবে আমি কেবল shell-modeএবং term-modeযাইহোক ব্যবহার করি ।


3
আপনার সম্ভবত এটি যুক্ত করা উচিত যা এর (add-hook 'eshell-mode-hook '(lambda ()চারপাশে মোড়ানো দরকার।
টিম 18

ধন্যবাদ, আমার যা ছিল তা থেকে এটি একটু বেশি পরিষ্কার। এটি ডিফল্ট না হওয়ার কারণ সম্ভবত এটিই ছিল যে অতীতে কোনও সময় কেউ pcompleteমানসম্পন্ন সমাপ্তির UI এর চেয়ে বেশি পছন্দ করে।
ওমর

6

আমি প্রাথমিক পরীক্ষা <tab>করার পরে ঠিকঠাক কাজ করে বলে মনে করে এমন একটি জিনিস পেয়েছি: মূলত: পুনরায় প্রত্যাবর্তন করা হয় pcomplete-std-complete, তবে যেহেতু সেই ফাংশনটি কোনও কারণে ইন্টারেক্টিভ নয়, আপনাকে এটি মোড়ানো দরকার:

(define-key eshell-mode-map (kbd "<tab>")
  (lambda () (interactive) (pcomplete-std-complete)))

pcompete-std-completeচেষ্টা সম্পূর্ণকরণ জন্য লিখিত ব্যবহার করতে pcompleteমান সমাপ্তির UI 'তে, যার ivyডিফল্ট ভাবে অগ্রাহ্য করবে (খুব সাম্প্রতিক আপডেট সঙ্গে, তারা কাছাকাছি বিন্দু eshell বাফারে একটা চমৎকার আস্তরণ ডানদিকে প্রদর্শিত!)।

এর উত্স কোডের মন্তব্যে pcomplete-completions-at-point(যা pcomplete-std-completeনির্ভর করে) বেশ কয়েকটি সম্ভাব্য সমস্যার উল্লেখ করেছে:

;; FIXME: it only completes the text before point, whereas the
;; standard UI may also consider text after point.
;; FIXME: the `pcomplete' UI may be used internally during
;; pcomplete-completions and then throw to `pcompleted', thus
;; imposing the pcomplete UI over the standard UI.

আমি মনে করি যে প্রথমটি আমাকে প্রভাবিত করবে না, যেহেতু আমি মনে করি না যে <tab>ইনপুট লাইনের শেষে ছাড়া আমি কখনও চাপবো না। আমি এখন পর্যন্ত দ্বিতীয় সমস্যার পৃষ্ঠটি দেখিনি।

সম্পাদনা: যারা এ্যাসেলের কুইর্কস (এটি একটি শ্রুতিমধুরতা) এর সাথে অপরিচিত তাদের জন্য সম্ভবত আমার যুক্ত করা উচিত যে উপরের পরামর্শ অনুসারে এসেলের কীটি পুনর্নির্মাণ করার জন্য আপনার এটিকে আপনার থ্রাই ফাইলটিতে রাখা উচিত:

(add-hook 'eshell-mode-hook
  (lambda () 
    (define-key eshell-mode-map (kbd "<tab>")
      (lambda () (interactive) (pcomplete-std-complete)))))

আপনি অপচয়কারী কী-বাইন্ডিংস-ইন-হ-অ্যান্টিপ্যাটার্নের জন্য আমার দিকে চিত্কার করার আগে, আমাকে বোঝাতে দিন যে এসেক্সেল এর কীম্যাপটি ঘোষনা করে (defvar eshell-mode-map nil)এবং তারপরে (setq-local eshell-mode-map (sparse-keymap))ভিতরে করে eshell-mode! ( ;; FIXME: What the hell!?কোডটিতে একটি সহায়ক রয়েছে )) এর অর্থ আপনি eshell-modeরান না করা পর্যন্ত কীগুলি পুনর্নির্মাণ করতে পারবেন না ! অতএব হুক।


এছাড়াও, আমি এটি পরীক্ষা করে দেখিনি, তবে আমি অনুমান করব যে যদি helmইতিমধ্যে eshellট্যাব সমাপ্তির পথে এটি সীমাবদ্ধ না করে , তবে এই ফিক্সটিও প্রযোজ্য helm
ওমর

এটি বেশ ঝরঝরে :) টিপটির জন্য ধন্যবাদ
চক্রবর্তী রাঘুনন্দন

এই "সে কী করবে!" "মন্তব্যটি আমার দিনটিকে পরিণত করেছে :) এছাড়াও, আমি এটিও লক্ষ করতে চাই যে এটি হেলমের মতো অন্যান্য সমাপ্তি কাঠামোর জন্যও কাজ করা উচিত।
জারজিলি পোলোনকাই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.