2009-06-24 20 views
14

Khi bắt đầu Emacs, init.el (hoặc .emacs.el) được đánh giá. Tuy nhiên, khi bắt đầu emacsclient, không có mã lisp tương tự được đánh giá.Làm thế nào để tự động đánh giá mã lisp nhất định sau khi bắt đầu một emacsclient?

Làm cách nào để có thể nhận được một tệp tin lisp được đánh giá mỗi khi tôi mở một emacsclient mới?

(Điều này sẽ có ích cho các tùy chỉnh cụ thể khung.)

tôi giả sử câu trả lời là sử dụng một số móc, nhưng tôi dường như không thể tìm ra móc đúng để sử dụng.

Tôi mong được câu trả lời của bạn.

Trả lời

5

Nếu bạn thực sự muốn tùy chỉnh khung mới, có tạo-frame-móc mà mất một arg (khung mới) ...

Nếu bạn có ý nghĩa gnuclient, bạn có thể sử dụng tùy chọn dòng lệnh "-eval "để đánh giá một cái gì đó (và sau đó chỉ cần thực hiện một bí danh để luôn luôn đánh giá các tùy chỉnh của bạn).

15

Bạn có thể thêm hàm vào móc 'server-visit-hook, được chạy mỗi khi máy chủ được gọi (mỗi khi bạn gọi emacsclient).

+6

Rõ ràng móc này chỉ được gọi nếu emacsclient được chuyển qua danh sách tệp. Nếu nó được gọi mà không cần chỉ định bất kỳ tập tin nào, thì móc không chạy - điều này gây phiền toái. – FixMaker

7

Tôi sử dụng mã sau để tự động thay đổi hành vi của bộ đệm máy chủ. Tôi sử dụng nó đặc biệt với phần mở rộng Firefox It's All Text. Trong phần mở rộng đó, bộ đệm được đặt tên theo tên miền, vì vậy bạn có thể tìm ra quy tắc nào để áp dụng bằng cách sử dụng string-match để khớp với tên của tệp.

(defun server-edit-presets() 
    (cond 
    ;; When editing mail, set the goal-column to 72. 
    ((string-match "mail\\.google\\.com\\.[0-9a-z]+\\.txt" (buffer-name)) 
    (longlines-mode-off) 
    (auto-fill-mode 1) 
    (set-fill-column 72) 
    (save-excursion 
     ;; Don't know if this is necessary, but it seems to help. 
     (set-buffer (buffer-name)) 
     (goto-char (point-min)) 
     ;; Replace non-breaking strange space characters 
     (while (search-forward (char-to-string 160) nil t) 
     (replace-match " ")))))) 

(add-hook 'server-visit-hook 'server-edit-presets) 
(add-hook 'server-visit-hook '(lambda() (longlines-mode 1))) 
1

@LSW:

Hãy thử 'window-setup-hook. Điều này giải quyết các khó chịu vì nó được gọi ngay cả khi emacsclient không được thông qua một tập tin.

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