2012-01-26 4 views
4

Я ищу создать Emacs сервер таким образом, что файлы, указанные emacsclients по сравнению с файловой системой emacsclients', а не файловой системой сервера. Например, если настроить сервер Emacs на машине «Darkstar» и подключиться к этому серверу через emacsclient на «Яркий» с помощью командыМожет ли сервер Emacs редактировать удаленные файлы, указанные клиентом Emacs?

emacsclient -nw '~/fantastic' 

Сервера Emacs попытается отредактировать файл ~/фантастический на darkstar, а не на brightstar. Идентично, как наоборот. Я открыт для всяких застенчивых предложений.

* Справка: Я хочу, чтобы процесс Emacs, который отслеживает все буфера я открыть на различных машинах, отслеживает мои настройки цвета, креплений и т.д. Я хочу, чтобы все это доступно и воспроизведен на любой произвольной машине с emacs. Кажется, что сервер emacs делает это, но без возможности редактировать локальные файлы клиента!

+0

Является ли это скорее вопросом http://serverfault.com/? –

+0

Довольно точно, что это невозможно сделать так, как вы описываете - для этого вам нужно будет как-то установить файловую систему _brightstar's_ на darkstar, изменить относительные домашние пути (т.е. '~') .. это не будет быть красивой. –

+0

@TJEllis - Я так не думаю, я думаю, что этот вопрос определенно относится к категории программных средств, обычно используемых программистами. –

ответ

1

Вы должны быть в состоянии установить, чтобы настроить функцию оболочки, которая использует бродягу, как

edit-local() { 
    emacsclient -e "(find-file (expand-file-name \"$1\" \"/ssh:[email protected]$(hostname):$PWD\"))" 
} 

Конечно, вы, возможно, придется изменить протокол бродяга к тому, что у вас есть настройки.

+0

Я собираюсь принять это ответьте, потому что я считаю, что это самое близкое решение того, что я пытаюсь выполнить. Его либо 1) Общие монтирования (уродливый :) 2) обратный вызов ssh (лучше) 3) Взломайте код lisp, чтобы открытый буфер был заполнен локальным текстом, а его запись отправляется обратно клиенту для сохранения. Конечно, не так просто, как 2) – fthinker

+0

Хех, то, что вы описали, в значительной степени идентично. Как я могу использовать tramp для подключения к удаленному сеансу Emacs? _ @ (Http://www.gnu.org/software/tramp/# Удаленные-процессы) – fthinker

1

Удаленный компьютер (тот, на котором работает Emacs) смонтировал файловую систему локального компьютера? Если да, то вы могли бы выпустить что-то вроде:

emacsclient --eval ´(my-open-file "~/fantastic" "my-local-machine")´ 

Вы могли бы написать функцию my-open-file, которая может, например, открыть файл //mounts/my-local-machine/home/YOUR-ACCOUNT/fantastic (при условии, что это точка монтирования).

Для создания командной строки emacsclient потребуется некоторый взломать esisp и взломать некоторые скрипты (используя, например, Ruby).

Смежные вопросы