Emacs: добавить имя хоста в строку режима? - PullRequest
11 голосов
/ 22 апреля 2009

Я бы хотел отобразить вывод (getenv "HOSTNAME") где-нибудь в строке моего режима. Мой режим отображения времени установлен на 't', поэтому я уже отображаю время, уровень загрузки и почтовый флаг в строке режима. Есть ли простой способ получить имя хоста?

Я хотел бы иметь это, потому что я ssh'd на 3 удаленных компьютерах, на всех запущен emacs из общего набора файлов инициализации, и я хотел бы получить быстрый и легкий способ узнать, на каком компьютере я работает над.

Ответы [ 3 ]

9 голосов
/ 22 апреля 2009

Чтобы построить на ответе Шона Брайта , в частности, вы можете сделать это:

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

Предполагается, что 'mode-line-modes является частью вашего 'mode-line-format, что по умолчанию. Поскольку вы изменяете список, на который указывает переменная 'mode-line-format, вам не нужно устанавливать значение по умолчанию. Если бы вы устанавливали саму переменную, вам нужно было бы сделать что-то вроде:

(setq-default mode-line-format (build-list-that-contains-(getenv "HOSTNAME")))
7 голосов
/ 12 мая 2011

Я попробовал вышеуказанные ответы и не был особенно успешным (я использую emacs 23). После долгих расследований я просто положил system-name в свой mode-line-format следующим образом:

;; 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.
        "-%-"
        )
)

Я подробно описал эту и другие вещи, которые я обнаружил в отношении моделя emacs в публикации на моем веб-сайте .

2 голосов
/ 28 января 2016

Вы также можете добавить мусор в переменную global-mode-string:

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

Этих двух строк, вероятно, достаточно для чего-то статического, например, вашего имени хоста.

Если у вас есть что-то более динамичное, вы можете установить таймер с помощью run-at-time для обновления строки (my-hostname в этом примере). Посмотрите на определение display-time-mode для хорошего небольшого примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...