2012-07-16 17 views
5

Suelo utilizar dired-mode y recientemente he empezado a utilizar ido:Obtener ido en tampones dired

(ido-mode 1); enable ido-mode 
(setq ido-enable-flex-matching t); flexibly match names via fuzzy matching 
(setq ido-everywhere t); use ido-mode everywhere, in buffers and for finding files 
(setq ido-use-filename-at-point 'guess); for find-file-at-point 
(setq ido-use-url-at-point t); look for URLs at point 
(setq ffap-require-prefix t); get find-file-at-point with C-u C-x C-f 

Cuando copio un archivo (con C) en un búfer Dired, todavía tengo que utilizar el "modo estándar" de dar la nueva ubicación donde se copia el archivo. Eso significa que tengo que usar la finalización de TAB estándar, pero no hay ido -completar. Lo mismo aplica para R para mover archivos, etc. Me pregunto si es posible obtener ido actuando también en C o R en buffers dired?

Respuesta

6

Parece que tuve el mismo problema que usted está experimentando. Algunas investigaciones muestran que debemos anular la variable read-file-name-function que, por defecto, llama al read-file-name-function-default. Pero, mirando el código fuente de ido-everywhere (que es un modo menor), lo hace por nosotros.

Solución:

En lugar de hacer (setq ido-everywhere t), sustituir eso con:

(ido-everywhere t)

Esto lo fija para mí, causando ido-read-file-name para ser llamado en tampones dired cuando se utiliza C o similares .

Otra opción:

También puede considerar esta versión reforzada de ido-everywhere:

https://github.com/DarwinAwardWinner/ido-ubiquitous

;;; Commentary: 

;; You may have seen the `ido-everywhere' variable in ido.el and got 
;; excited that you could use ido completion for everything. Then you 
;; were probably disappointed when you realized that it only applied 
;; to *file names* and nothing else. Well, ido-ubiquitous is here to 
;; fulfill the original promise and let you use ido completion for 
;; (almost) any command that uses `completing-read' to offer you a 
;; choice of several alternatives. 
+0

Curiosamente, 'C' para copiar funciona, pero' R' para cambiar de nombre y mover no funciona de esta manera :-( –

+0

Usando 'debug-on-entry' Encontré una diferencia en el comportamiento de' R' y ' C'. 'R' usa' dired-mark-read-file-name', mientras que 'C' no. –

+0

Y de la documentación 'C' es un cierre, mientras que' R' es una función. –

3

encontré que (put 'dired-do-rename 'ido 'find-file) para la tecla R funciona bien, si es necesario para detenerse en un camino, simplemente presione C-j en lugar de completar un nombre de archivo.

+0

Lamentablemente, esto no cambia nada para mí. –

+0

¿Puede explicar lo que está tratando de hacer y cómo no funciona? también, ¿por qué el voto a favor? – Silex

+0

Esa publicación no era muy precisa, de hecho. Más tarde descubrí (ver más abajo) los efectos/cambios de esta "solución". El downvote fue probablemente debido a los efectos secundarios. Esta no es una solución limpia al problema, afecta muchos otros "buenos" comportamientos y, por lo tanto, no debe usarse con cuidado. Debería haberlo dicho antes en lugar de usar el botón downvote. Perdón por esto. –

Cuestiones relacionadas