Soy muy aficionado ivya la finalización y me encanta que un simple (ivy-mode 1)sea suficiente para llegar a ivycasi todas partes donde Emacs usa algún tipo de finalización (creo que se logra anulando completeing-read). Pero esto no está configurado eshellpara usarse ivypara completar la pestaña. Me gusta eshellla lista de candidatos de finalización, pero preferiría que la ivyUI escogiera entre ellos. ¿Hay alguna manera de reutilizar lo eshellque sea que se haga para producir candidatos para completar y pasar eso a 'hiedra'?
16

(add-hook 'eshell-mode-hook '(lambda ()es necesario envolverlo.pcompletela 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-completeintentos de utilizar las terminaciones escritas parapcompletela interfaz de usuario de terminación estándar, queivypor 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-completedepende 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-modeejecuciones! De ahí el anzuelo.fuente
helmaún no se insinúa en laeshellfinalización de la pestaña, esta corrección también se aplicahelm.