2009-04-22 38 views
11

Tôi muốn hiển thị đầu ra của (getenv "HOSTNAME") ở đâu đó trong dòng chế độ của tôi. Chế độ hiển thị thời gian của tôi được đặt thành 't', vì vậy tôi đã hiển thị thời gian, mức tải và cờ thư trong dòng chế độ. Có cách nào dễ dàng để có được tên máy chủ trong đó không?Emacs: thêm tên máy chủ vào chế độ dòng?

Tôi muốn có điều này bởi vì tôi đang ssh'd thành 3 máy từ xa, tất cả chạy emacs từ một tập phổ biến của các tập tin init, và tôi muốn một số cách dễ dàng unobtrusive nhanh để biết máy tôi ' m làm việc trên.

Trả lời

7

Tôi đã thử các câu trả lời trên và không phải là đặc biệt thành công (Tôi đang chạy emacs 23). Sau nhiều cuộc điều tra, tôi đã kết thúc chỉ cần đặt system-name vào mode-line-format của tôi như sau:

;; Set the modeline to tell me the filename, hostname, etc.. 
(setq-default mode-line-format 
    (list " " 
     ; */% indicators if the file has been modified 
     'mode-line-modified 
     "--" 
     ; the name of the buffer (i.e. filename) 
     ; note this gets automatically highlighted 
     'mode-line-buffer-identification 
     "--" 
     ; major and minor modes in effect 
     'mode-line-modes 
     ; if which-func-mode is in effect, display which 
     ; function we are currently in. 
     '(which-func-mode ("" which-func-format "--")) 
     ; line, column, file % 
     'mode-line-position 
     "--" 
     ; if vc-mode is in effect, display version control 
     ; info here 
     `(vc-mode vc-mode) 
     "--" 
     ; hostname 
     'system-name 
     ; dashes sufficient to fill rest of modeline. 
     "-%-" 
     ) 
) 

Tôi đã trình bày chi tiết này và những thứ khác tôi phát hiện ra về modeline emacs trong một posting on my website.

9

Để xây dựng trên Sean Bright của answer, đặc biệt là bạn có thể làm điều này:

(let ((pos (memq 'mode-line-modes mode-line-format))) 
    (setcdr pos (cons (getenv "HOSTNAME") (cdr pos)))) 

này giả định rằng 'mode-line-modes là một phần của 'mode-line-format của bạn, mà nó là theo mặc định. Bởi vì bạn đang sửa đổi danh sách được trỏ đến bởi biến số 'mode-line-format, bạn không phải đặt giá trị mặc định. Nếu bạn đã thiết lập các biến riêng của mình, bạn sẽ phải làm một cái gì đó như:

(setq-default mode-line-format (build-list-that-contains-(getenv "HOSTNAME"))) 
1

Bạn cũng có thể thêm rác vào biến global-mode-string:

(defvar my-hostname (concat " " (system-name))) 
(setq global-mode-string (append global-mode-string '(my-hostname))) 

Hai dòng có lẽ là đủ cho một cái gì đó tĩnh như tên máy của bạn.

Nếu bạn có thứ gì đó năng động hơn, bạn có thể thiết lập bộ hẹn giờ với run-at-time để cập nhật chuỗi (my-hostname trong ví dụ này). Hãy xem định nghĩa của display-time-mode để có một ví dụ nhỏ đẹp.

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