2011-08-26 18 views
13

Câu hỏi đã được hỏi how to reload a .emacs file after changing it.Tải lại .emac cho tất cả các bộ đệm hoạt động

Các giải pháp được đề xuất là sử dụng M-x load-file hoặc M-x eval-region RET trên khu vực đã thay đổi.

Cả hai giải pháp này đều không ảnh hưởng đến các bộ đệm mở khác cho tôi. Có cách nào để tải lại tệp .emacs cho tất cả các bộ đệm mở không?

Tôi cũng nên lưu ý rằng M-x load-file không có hiệu lực mong muốn vì các lý do được nêu trong các nhận xét cho that answer.

Trả lời

18

Tệp .emacs của bạn là cấu hình chung chỉ được đánh giá một lần duy nhất. Nó không được áp dụng cho từng bộ đệm riêng lẻ.

Cách bạn thực sự đạt được những gì bạn muốn thực sự sẽ phụ thuộc vào những thay đổi .emac là gì. Một số elisp sẽ chỉ có hiệu lực trong lần đầu tiên nó được đánh giá; hoặc khi một bộ đệm thay đổi các chế độ chính; hoặc khi một tệp được tải; vv, vv ...

Nếu bạn muốn tải lại một số hoặc tất cả các bộ đệm tập tin, ibuffer làm cho rằng khá dễ dàng:

  • MxibufferRET để bắt đầu ibuffer (Tôi khuyên bạn nên ràng buộc này đến CxCb).
  • /f.RET để lọc theo tên tệp regexp . để khớp với bất kỳ tên tệp nào.
  • m (trên [default]) để đánh dấu tất cả bộ đệm đã lọc.
  • V (chữ hoa) để hoàn nguyên tất cả các bộ đệm được đánh dấu.

hoặc bạn có thể thay thế bước 2 + 3 với M-xibuffer-mark-by-file-name-regexpRET.RET. Bạn có thể muốn ràng buộc lệnh đó để *f:

;; Bind `ibuffer-mark-by-file-name-regexp' to *f 
(eval-after-load "ibuffer" 
    '(define-key ibuffer-mode-map (kbd "* f") 'ibuffer-mark-by-file-name-regexp)) 

loại *c-h để xem tất cả các ibuffer-mark-* lệnh khác mà bị ràng buộc bởi mặc định.

3

này có thể tấn công bạn như brute force, nhưng

  • chắc chắn nó sẽ được tải lại tập tin init của bạn (xem xét alternatives to .emacs)
  • nó sẽ được tải lại tất cả các bộ đệm mở (với điều kiện bạn đang sử dụng desktop, mà bạn nên)
  • nó rất dễ dàng

    C-x C-c 
    emacs --debug-init & 
    
+1

Được cảnh báo rằng desktop.el sẽ khôi phục một số thứ nhất định (ví dụ: các chế độ chính và nhỏ, và các biến cục bộ) như chúng ban đầu, thay vì chúng sẽ là nếu bộ đệm được tạo ra một lần nữa. Nếu mục đích là áp dụng các cài đặt mới cho các bộ đệm đó, đây có thể là một trở ngại. – phils

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