Soy muy aficionado ivy
a la finalización y me encanta que un simple (ivy-mode 1)
sea suficiente para llegar a ivy
casi todas partes donde Emacs usa algún tipo de finalización (creo que se logra anulando completeing-read
). Pero esto no está configurado eshell
para usarse ivy
para completar la pestaña. Me gusta eshell
la lista de candidatos de finalización, pero preferiría que la ivy
UI escogiera entre ellos. ¿Hay alguna manera de reutilizar lo eshell
que sea que se haga para producir candidatos para completar y pasar eso a 'hiedra'?
16
(add-hook 'eshell-mode-hook '(lambda ()
es necesario envolverlo.pcomplete
la IU de finalización estándar.Encontré algo que parece funcionar bien en la prueba inicial: esencialmente volver
<tab>
a vincularpcomplete-std-complete
, pero dado que esa función no es interactiva por alguna razón, debe envolverla:Los
pcompete-std-complete
intentos de utilizar las terminaciones escritas parapcomplete
la interfaz de usuario de terminación estándar, queivy
por defecto anulará (con la muy reciente actualización, que aparecen en un derecho de superposición agradable en el punto cercano ESHELL amortiguar!).Los comentarios en el código fuente de
pcomplete-completions-at-point
(quepcomplete-std-complete
depende de) mencionan un par de posibles problemas:Creo que el primero no me afectará, ya que no creo que presione nunca
<tab>
excepto al final de la línea de entrada. Tampoco he visto la superficie del segundo problema, hasta ahora.EDITAR: Para aquellos que no están familiarizados con las peculiaridades de eshell (esto es un eufemismo), tal vez debería agregar eso para volver a vincular la clave de eshell como se sugirió anteriormente, debe poner esto en su archivo de inicio:
Antes de que me grites por el antipatrón derrochador de ataduras de teclas, déjame explicarte que eshell declara su mapa de teclas
(defvar eshell-mode-map nil)
y luego lo hace(setq-local eshell-mode-map (sparse-keymap))
dentroeshell-mode
. (El código es útil;; FIXME: What the hell!?
.) ¡Eso significa que no puede volver a vincular las claves hasta después de laseshell-mode
ejecuciones! De ahí el anzuelo.fuente
helm
aún no se insinúa en laeshell
finalización de la pestaña, esta corrección también se aplicahelm
.