2017-04-27 36 views
12

Trong một thư mục tôi có các liên kết tượng trưng vào một thư mục được quản lý bởi git (tất cả trong Linux). Mỗi lần tôi muốn e -dit liên kết như vậy tôi nhận được một câu hỏi thoại:Theo một liên kết vào một git-repo mà không có hộp thoại dài

Symbolic link to Git-controlled source file; follow link? (yes or no)

Và tôi phải gõ yes& # x23ce ; để truy cập tệp. Có cách nào đơn giản hơn không?

Lý tưởng nhất, một cái gì đó giống như tuyên bố rằng một thư mục không cần hộp thoại.

Trả lời

7

Đặt vc-follow-symlinks. Bạn có thể muốn nó là nil (liên kết mở), nhưng hãy chắc chắn đọc tài liệu vì t (mục tiêu mở) cũng hợp lý.

(setq vc-follow-symlinks nil) 

Bạn có thể đặt biến này thành biến cục bộ nếu bạn không muốn nó được đặt trên toàn cầu.

1

Một câu hỏi thú vị. Tôi lưu trữ tất cả các dấu chấm của tôi trong kho lưu trữ và có một loạt các liên kết tượng trưng nằm rải rác trên toàn bộ hệ thống tệp, vì vậy đây là một vấn đề đã biết đối với tôi.

Đầu tiên, một nửa giải pháp:

(defalias 'yes-or-no-p 'y-or-n-p) 

Bây giờ thay vì gõ đầy đủ yes + Nhập bạn có thể chỉ loại một đơn y hay n thư trong mọi tình huống nơi yes-or-no được yêu cầu trong Emacs.

Bây giờ, một giải pháp thực tế:

(defun vc-mode-hook() 
    (message buffer-file-name) 
    (when 
     (and 
     (file-exists-p (buffer-file-name)) 
     (stringp buffer-file-name) 
     (or (string-equal "/home/ja/.fluxbox/keys" buffer-file-name) 
     (string-equal "<PATH_TO_ANOTHER_FILE>" buffer-file-name)) 
     (setq-local vc-follow-symlinks t) 
     ))) 

(add-hook 'find-file-hook 'vc-mode-hook) 

Ở đây chúng ta tạo ra một cái móc mới được gọi mỗi khi find-file là gọi, ví dụ với C - x C - f hoặc e trong Dired. Đầu tiên nó kiểm tra nếu tệp được truy cập thực sự tồn tại trên hệ thống tệp bằng cách sử dụng file-exists-p vì không có ý nghĩa khi chạy tệp trên các tệp mà chưa được tạo. Tiếp theo, nó sẽ kiểm tra xem tên tệp có được biết đến bằng cách sử dụng stringp - nó sẽ trả lại t khi một tệp thông thường được mở nhưng nil trong bộ đệm Dired chẳng hạn. Và cuối cùng nó sẽ kiểm tra xem tên tệp có bằng một trong các chuỗi được cung cấp sử dụng string-equal hay không. Nếu số điện thoại là, địa phương đặt vc-follow-symlinks thành t. Bạn có thể thêm bao nhiêu dòng string-equal như bạn muốn.Trong ví dụ trên tôi đã thêm /home/ja/.fluxbox/keys và trình giữ chỗ cho tên tệp khác trong dòng tiếp theo.

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