2012-07-16 19 views
5

tôi thường xuyên sử dụng dired-mode và gần đây tôi bắt đầu sử dụng ido:Nhận ido trong bộ đệm 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 

Khi tôi sao chép một tập tin (với C) trong một bộ đệm dired, tôi vẫn phải sử dụng "cách tiêu chuẩn" cho vị trí mới nơi tệp được sao chép vào. Điều đó có nghĩa là tôi phải sử dụng hoàn thành TAB chuẩn nhưng không có ido -hoàn toàn. Điều tương tự cũng áp dụng cho R cho việc di chuyển tệp vv. Do đó, tôi tự hỏi liệu có thể nhận được ido cũng hoạt động trên C hoặc R trong bộ đệm được đệm không?

Trả lời

6

Có vẻ như tôi có cùng sự cố bạn đang gặp phải. Một số điều tra cho thấy chúng ta cần ghi đè biến số read-file-name-function, theo mặc định, gọi read-file-name-function-default. Nhưng, nhìn vào mã nguồn cho ido-everywhere (đó là một chế độ nhỏ), nó thực hiện điều này cho chúng ta.

Giải pháp:

Thay vì làm (setq ido-everywhere t), thay thế mà với:

(ido-everywhere t)

này sửa chữa nó cho tôi, khiến ido-read-file-name được gọi trong bộ đệm dired khi bạn sử dụng C hoặc tương tự .

Một Lựa Chọn:

Bạn cũng có thể xem xét phiên bản này tăng cường của 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

Điều thú vị là 'C' để sao chép các công trình, nhưng' R' để đổi tên và di chuyển không hoạt động theo cách này :-( –

+0

Sử dụng 'debug-on-entry' Tôi tìm thấy sự khác biệt về hành vi của' R' và ' C'. 'R' sử dụng' dired-mark-read-file-name', trong khi, 'C' không phải là –

+0

Và từ tài liệu 'C' là một đóng trong khi' R' là một hàm. –

3

tôi thấy rằng (put 'dired-do-rename 'ido 'find-file) cho phím R hoạt động tốt, nếu bạn cần để dừng lại ở một con đường, bạn chỉ cần nhấn C-j thay vì hoàn thành tên tệp.

+0

Thật không may, điều này không thay đổi bất cứ điều gì đối với tôi. –

+0

Bạn có thể giải thích những gì bạn đang cố gắng làm và cách nó không hoạt động không? Ngoài ra, tại sao downvote? – Silex

+0

Bài đăng đó không thực sự chính xác lắm. Tôi chỉ tìm thấy sau này (xem bên dưới) về các hiệu ứng/thay đổi của "giải pháp" này. Các downvote có lẽ là do các tác dụng phụ. Đây không phải là một giải pháp sạch cho vấn đề, nó ảnh hưởng đến nhiều hành vi "tốt" khác và do đó không nên được sử dụng cẩn thận. Tôi nên thay vì chỉ nói nó thay vì sử dụng nút downvote. Xin lỗi vì điều này. –

Các vấn đề liên quan