2008-12-09 26 views
15

Theo the Emacs docs, mỗi lần bạn mở tệp, Emacs thay đổi default-directory thành thư mục chứa tệp đó.Ngăn chặn thay đổi tự động của thư mục mặc định

Sau đó, nếu con trỏ nằm trong bộ đệm đó và bạn (ví dụ) bắt đầu SLIME, nó sử dụng default-directory làm thư mục làm việc hiện tại cho SLIME. Nếu bạn cố gắng mở tệp mới, tệp sẽ mở tệp với default-directory làm điểm bắt đầu của bạn.

Tôi muốn có thể M-x cd hoặc cách khác cd vào một thư mục, và sau đó không bao giờ có Emacs thay đổi thư mục làm việc hiện tại của tôi thành bất kỳ thứ gì trừ thư mục đó cho đến khi tôi nói. Tôi muốn điều này là toàn cầu trên tất cả các bộ đệm, vì vậy bất cứ lúc nào tôi làm một cái gì đó liên quan đến thư mục làm việc hiện tại, tôi biết những gì nó được thiết lập để bất kể nơi con trỏ của tôi là vào lúc này. Có cách nào để làm việc này không?

Trả lời

11

Bạn có thể thử sử dụng một cái gì đó như thế này:

(add-hook 'find-file-hook 
      (lambda() 
      (setq default-directory command-line-default-directory))) 
4

biến thể khác là để ràng buộc mặc định thư mục vào thư mục cần thiết trong các biến thư mục địa phương, ví dụ trong file .dir-locals.el trong một trong các thư mục mẹ của bạn để một cái gì đó như:

((nil . ((default-directory . "~/.emacs.d/")))) 
1

Đây là tốt nhất mà tôi đã đưa ra cho đến nay, thật đáng buồn:

(defun find-file-save-directory() 
    (interactive) 
    (setq saved-default-directory default-directory) 
    (ido-find-file) 
    (setq default-directory saved-default-directory)) 
(global-set-key "\C-x\C-f" 'find-file-save-directory) 

tác phẩm này miễn là default-directory được đặt chính xác trước khi tôi C-x C-f. Tôi sẽ chấp nhận câu trả lời của Jurta để chỉ cho tôi một hướng hữu ích.

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