Bardzo przepadam ivy
za ukończeniem i uwielbiam to, że proste (ivy-mode 1)
wystarczy, aby dostać się ivy
prawie wszędzie, gdzie Emacs używa pewnego rodzaju uzupełnienia (to completeing-read
, jak sądzę , osiąga się przez zastąpienie ). Ale nie można eshell
tego użyć ivy
do uzupełniania tabulatorów. Podoba mi się eshell
lista kandydatów do ukończenia, ale wolę wybrać ivy
interfejs użytkownika spośród nich. Czy jest jakiś sposób na ponowne wykorzystanie tego, co eshell
robi, aby wyprodukować kandydatów do ukończenia i przekazać to do `bluszczu?
16
(add-hook 'eshell-mode-hook '(lambda ()
należy go owinąć.pcomplete
standardowy interfejs użytkownika uzupełniania.Znalazłem coś, co wydaje się działać poprawnie po początkowych testach: zasadniczo powiąż
<tab>
ponowniepcomplete-std-complete
, ale ponieważ ta funkcja nie jest interaktywna z jakiegoś powodu, musisz ją zawinąć:W
pcompete-std-complete
próbuje użyć uzupełnienia napisanych dlapcomplete
ze standardowym interfejsie zakończenia, któreivy
domyślnie będą stałe (z bardzo niedawnej aktualizacji, pojawiają się one w prawej ładny nakładki w eshell bufor niedaleko punktu!).Komentarze w kodzie źródłowym
pcomplete-completions-at-point
(wpcomplete-std-complete
zależności od) wspominają kilka potencjalnych problemów:Myślę, że pierwszy nie wpłynie na mnie, ponieważ wydaje mi się, że nigdy nie naciskam,
<tab>
chyba że na końcu linii wejściowej. Do tej pory nie widziałem też drugiego problemu.EDYCJA: Dla tych, którzy nie są zaznajomieni z dziwactwami eshell (jest to eufemizm), może powinienem dodać to, aby ponownie powiązać klucz eshell, jak sugerowano powyżej, należy umieścić to w pliku init:
Zanim zaczniesz na mnie krzyczeć za marnotrawstwo antipatternu w skrótach klawiszowych, pozwól mi wyjaśnić, że eshell deklaruje swoją mapę klawiszy,
(defvar eshell-mode-map nil)
a następnie robi to w(setq-local eshell-mode-map (sparse-keymap))
środkueshell-mode
! (Kod jest pomocny;; FIXME: What the hell!?
.) Oznacza to, że nie można ponownie powiązać kluczy, dopóki nie zostanąeshell-mode
uruchomione! Stąd hak.źródło
helm
nie uda mu się już wcisnąć klawisza doeshell
uzupełnienia tabulacji, ta poprawka dotyczy równieżhelm
.