Saya sangat suka ivy
penyelesaian dan suka bahwa sederhana (ivy-mode 1)
cukup untuk mendapatkan ivy
hampir di mana-mana bahwa Emacs menggunakan semacam penyelesaian (yang dilakukan dengan mengesampingkan completeing-read
, saya percaya). Tetapi ini tidak diatur eshell
untuk digunakan ivy
untuk melengkapi tab. Saya memang suka eshell
daftar kandidat yang selesai, tetapi akan lebih memilih ivy
UI untuk memilih di antara mereka. Apakah ada cara untuk menggunakan kembali apa pun eshell
untuk menghasilkan kandidat yang lulus dan menyerahkannya kepada `ivy '?
16
(add-hook 'eshell-mode-hook '(lambda ()
perlu dililitkan.pcomplete
lebih disukai daripada UI penyelesaian standar.Saya menemukan sesuatu yang tampaknya berfungsi dengan baik pada pengujian awal: pada dasarnya rebind
<tab>
kepcomplete-std-complete
, tetapi karena fungsi itu tidak interaktif karena beberapa alasan, Anda perlu membungkusnya:The
pcompete-std-complete
mencoba untuk menggunakan penyelesaian ditulis untukpcomplete
dengan UI selesai standar, yangivy
secara default akan menimpa (dengan update yang sangat baru-baru ini, mereka muncul di nice overlay tepat di eshell penyangga titik dekat!).Komentar dalam kode sumber
pcomplete-completions-at-point
(yangpcomplete-std-complete
tergantung pada) menyebutkan beberapa masalah potensial:Saya pikir yang pertama tidak akan mempengaruhi saya, karena saya tidak berpikir saya pernah menekan
<tab>
kecuali pada akhir baris input. Saya belum melihat permukaan masalah kedua, sejauh ini.EDIT: Bagi mereka yang tidak terbiasa dengan kebiasaan eshell (ini adalah eufemisme), mungkin saya harus menambahkan itu ke rebind kunci eshell seperti yang disarankan di atas Anda harus meletakkan ini di file init Anda:
Sebelum Anda meneriaki saya tentang antipattern keybind-bor-in-a-hook yang boros, izinkan saya menjelaskan bahwa eshell menyatakan keymap-nya dengan
(defvar eshell-mode-map nil)
dan kemudian melakukannya(setq-local eshell-mode-map (sparse-keymap))
di dalameshell-mode
! (Kode ini sangat membantu;; FIXME: What the hell!?
.) Itu berarti Anda tidak dapat memutar ulang kunci hingga setelaheshell-mode
berjalan! Oleh karena itu, kail.sumber
helm
belum menyamar sebagaieshell
penyelesaian tab, perbaikan ini juga berlaku untukhelm
.