2012-07-16 9 views
5

ja często wykorzystują dired-mode i ja niedawno zaczął używać ido:Get ido w dired buforów

(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 

Kiedy skopiować plik (z C) w dired bufora, nadal mam do korzystania z "standardowy sposób" podania nowej lokalizacji, do której plik jest kopiowany. Oznacza to, że muszę użyć standardowego uzupełnienia TAB, ale nie ma żadnego kompletnego. To samo dotyczy przenoszenia plików itp. Zastanawiam się więc, czy możliwe jest uzyskanie ido działającego również na C lub R w buforach diredowych?

Odpowiedz

6

Wygląda na to, że mam ten sam problem, którego doświadczasz. Niektóre badania pokazują, że musimy nadpisać zmienną read-file-name-function, która domyślnie wywołuje read-file-name-function-default. Ale patrząc na kod źródłowy dla ido-everywhere (który jest trybem pomocniczym), robi to za nas.

Rozwiązanie:

Zamiast robić (setq ido-everywhere t), wymień że z:

(ido-everywhere t)

To rozwiązuje to dla mnie, powodując ido-read-file-name się nazywać w dired buforów podczas korzystania C lub podobny .

Inna opcja:

Można również rozważyć tę podrasowanym wersja 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

Co ciekawe, 'C' dla kopiowania działa, ale' R' dla zmiany nazwy i przenoszenia nie działa w następujący sposób :-( –

+0

Używając 'debug-on-entry' znalazłem różnicę w zachowaniu' R' i ' C'. 'R' używa' dired-mark-read-file-name', podczas gdy 'C' does not. –

+0

A z dokumentacji 'C' jest zamknięciem, podczas gdy' R' jest funkcją –

3

stwierdziliśmy, że (put 'dired-do-rename 'ido 'find-file) klucza R działa dobrze, jeśli trzeba aby zatrzymać się na ścieżce, po prostu naciskając C-j zamiast wypełniać nazwę pliku.

+0

Niestety, to nic nie zmienia dla mnie. –

+0

Czy możesz wyjaśnić, co próbujesz zrobić i jak to działa? także, dlaczego spadł? – Silex

+0

Ten wpis nie był zbyt precyzyjny. Dopiero później odkryłem (patrz poniżej) o efektach/zmianach tego "rozwiązania". Spadek był prawdopodobnie spowodowany efektami ubocznymi. To nie jest czyste rozwiązanie problemu, wpływa na wiele innych "dobrych" zachowań i dlatego nie powinno być używane z ostrożnością. Powinienem raczej po prostu to powiedzieć, zamiast używać przycisku Downvote. Przepraszam za to. –

Powiązane problemy