Использование emacsclient вместо emacs — перевод аргументов

На данный момент я использую отдельный экземпляр для оружия, который я запускаю следующим образом:

emacs --name Mail --title Mail --no-desktop --no-splash --funcall gnus

Так как gnus хорошо реагирует, а все остальные мои программы для emacs работают как emacsclient из другого экземпляра emacs, я хотел бы попробовать запустить gnus также из emacsclient. Но я изо всех сил пытаюсь перевести параметры командной строки, которые я использую. Мне нужно установить имя и заголовок Windows, так как я использую потрясающий диспетчер окон, и окно должно быть отсортировано по имени окна. Кроме того, я хотел бы запускать gnus автоматически.

Итак, как я могу перевести приведенную выше команду, что gnus запускается как emacsclient с именем и заголовком Windows, установленными на Mail?

emacsclient ...???

person Rainer    schedule 15.04.2013    source источник


Ответы (2)


Я не уверен, что вы можете сделать это, используя только переключатели командной строки. Однако можно определить функцию elisp для настройки фрейма gnus и вызвать эту функцию из emacsclient.

Попробуйте поместить это в свой файл инициализации emacs:

(defun my/create-gnus-frame ()
  "Create a new frame running `gnus'."
  (select-frame
   (make-frame '((name . "Mail"))))
  (gnus))

и запустите gnus из командной строки следующим образом:

emacsclient -e '(my/create-gnus-frame)'

И свойства X (полученные с помощью xprop) вновь созданного фрейма кажутся правильными:

WM_CLASS(STRING) = "Mail", "Emacs"
WM_ICON_NAME(STRING) = "Mail"
WM_NAME(STRING) = "Mail"
person François Févotte    schedule 15.04.2013

Вы также можете использовать параметр -F, который устанавливает список кадров, и комбинировать его с параметром -e для выполнения того, что вам нравится, поэтому нет необходимости определять какую-либо функцию. Тогда вызов будет выглядеть так:

emacsclient -F '((name . "Mail"))' -e '(gnus)'

Для получения информации о параметрах см. (info "(elisp)Frame parameters").

person nert    schedule 25.09.2015