Как можно указать пользовательский файл инициализации emacs для загрузки с emacsclient? - PullRequest
3 голосов
/ 12 апреля 2011

Вопрос

Как указать файл инициализации emacs пользователя для загрузки с emacsclient?

emacsclient не понимает '-u user', а '-a ALTERNATE-EDITOR' не позволяет мне цитировать его и предоставлять '-u user'.

Например, работает:

/usr/bin/emacsclient -n -a '/usr/bin/emacs -u <username>' ~<username>/notes.txt

1012 * возвращается *

/usr/bin/emacsclient: error executing alternate editor "/usr/bin/emacs -u <username>"

Фон

Я использую emacs версии 23.1.1 и emacsclient версии 23.1.

emacs сам поддерживает '-u user' для загрузки файла инициализации указанного пользователя.

Я использую следующую функцию bash в моем файле псевдонимов для вызова emacs

# a wrapper is needed to sandwich multiple command line arguments in bash
# 2>/dev/null hides
#   "emacsclient: can't find socket; have you started the server?"
emacs_wrapper () {
  if [ 0 -eq $# ]
  then
    /usr/bin/emacsclient -n -a /usr/bin/emacs ~<username>/notes.txt 2>/dev/null &
  else
    /usr/bin/emacsclient -n -a /usr/bin/emacs $* 2>/dev/null &
  fi
}
alias x='emacs_wrapper'

Введите x, а затем список файлов:

  • Подключается к существующему серверу Emacs, если он работает, в противном случае запускает новый
  • Выполняется как фоновый процесс
  • Открывает список файлов или файл моих заметок, если файлы не предоставлены

Это прекрасно работает, когда я вошел как сам. Тем не менее, многие производственные ящики требуют, чтобы я вошел в систему как производственный пользователь. Я разделил свои псевдонимы на скрипт bash, поэтому я могу получить свои псевдонимы и функции bash просто запустив.

. ~<username>/alias.sh

К сожалению, это не позволит мне использовать мой файл .emacs (~ /. Emacs): (

Эта проблема сводит меня с ума.

Ответы [ 2 ]

3 голосов
/ 13 апреля 2011

Если вы не можете включить аргументы командной строки в спецификации альтернативного редактора, просто напишите сценарий оболочки, который сделает это за вас, и вместо этого укажите его в качестве альтернативного аргумента редактора.

#!/bin/sh
emacs -u (username) "$@"
1 голос
/ 13 апреля 2011

Суть модели сервер / клиент состоит в том, что у вас есть существующий Emacs с его собственным набором конфигураций, а затем вы подключаетесь через одного или нескольких клиентов.

Что должен делать клиент, если сервер былуже настроен показ строки меню (глобальная настройка), а клиент говорит не показывать ее?Что, если другой клиент присоединяет высказывание, чтобы показать это?

Если вы хотите использовать другие настройки для Emacs, используйте разные сеансы emacs.

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