Emacs: deshabilita la finalización de Ido en modo Vagabundo
A menudo uso ido para la finalización automática y vagabundo para acceder al servidor remoto a través de ssh. Mi.emacs
incluye las siguientes líneas:
(require 'tramp)
(setq tramp-default-method "ssh")
(ido-mode 1)
(setq ido-enable-flex-matching t)
(setq ido-everywhere t)
Deseo deshabilitar la finalización de Ido cuando estoy navegando por el contenido del servidor remoto. Tenga en cuenta que la variableido-enable-tramp-completion
no tiene nada que ver con mi problema. Considere la línea/[email protected]#1234:/var/www/file.txt
. Necesito Idon para deducir la parte después de los dos puntos (ruta del archivo remoto), no me importa la parte anterior a los dos puntos. Uso ssh e Ido hace que Emacs se retrase unos segundos cada vez que ejecutoido-find-file
, y cuando finaliza el tiempo de espera de ssh, Tramp intenta volver a conectarse, me pide una contraseña y así sucesivamente. Este comportamiento es indeseable.
Emacs versión - 24.0.94.1
Edit (20.03.12): Después del contacto con el autor de Ido, intenté cambiar laido-file-name-all-completions-1
a lo siguiente:
(defun ido-file-name-all-completions-1 (dir)
(cond
((ido-nonreadable-directory-p dir) '())
;; do not check (ido-directory-too-big-p dir) here.
;; Caller must have done that if necessary.
((and ido-enable-tramp-completion
(or (fboundp 'tramp-completion-mode-p)
(require 'tramp nil t))
(string-match "\\`/[^/]+[:@]\\'" dir))
;; TRAMP RELATED CODE DELETED
nil)
(t
(file-name-all-completions "" dir))))
Sin éxito. Luego cambié regex a
"\\`/[^/]+[:@]"
y funcionó: Ido estaba deshabilitado cuando el minibúfer contenía esa coincidencia. Sin embargo, como Ido no podía ver los archivos en un servidor remoto, comenzó a llamar aido-make-merged-file-list
para buscar archivos en otros directorios cada vez que ingreso algo. Esto hizo que trabajar con Ido en servidores remotos fuera aún más difícil.
Traté de configurar variablesido-slow-ftp-hosts
yido-slow-ftp-host-regexps
a/[email protected]#1234
, no ayudó.