3

Как открыть файл из командной строки и показать его в одном из существующих окон в существующем фрейме, иначе в новом окне в новом фрейме? Поведение по умолчанию - это открытие в новом кадре. я использую

GNU Emacs 23.4.1 (x86_64-apple-darwin10.8.0) от 2012-01-29 на beta.macosforge.org

Редактировать 1

Я не уделял достаточного внимания определению псевдонимов. я использую

alias emacs=open -a /Applications/Macports/Emacs.app

в моем .bashrc . С этим параметром, если существует существующий фрейм Emacs, который я открыл ранее, когда новый emacs запускается из командной строки ($ emacs foobar.txt), он открывает новый фрейм и даже загружает .emacs для него, а затем отображает файл в одном из окон нового кадра. (Моя настройка .emacs автоматически разделяет рамку на два окна.)

2 ответа2

3

Я использую это:

emacs() {
/Applications/MacPorts/Emacs.app/Contents/MacOS/bin/emacsclient --alternate-editor=/Applications/MacPorts/Emacs.app/Contents/MacOS/Emacs $1 &
}

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

В .emacs, сделать

(server-start) 

так что запуск emacs также запускает сервер.

2

Вы не указываете, как именно вы открываете файл из командной строки, но поведение emacsclient по умолчанию на самом деле противоположное: он повторно использует фрейм. Из документации emacsclient в gnu.org, опция -c используется , чтобы получить поведение , вы , кажется, есть по умолчанию.

-c Создать новый графический фрейм вместо использования существующего фрейма Emacs. Emacs 23 может создавать графический фрейм, даже если он был запущен в текстовом терминале, при условии, что он может подключаться к графическому дисплею. Если графическое отображение недоступно, Emacs создает новый текстовый терминал (см. Фреймы). Если вы опустите аргумент имени файла при предоставлении опции '-c', новый фрейм отобразит буфер ' нуля ' (см. Буферы).

Я могу подтвердить, что это работает в моей системе, которая на несколько оборотов позади: GNU Emacs 23.2.1 (x86_64-apple-darwin, NS apple-appkit-1038.29) of 2010-05-08 on black.local"

Я бы удостоверился, что вы используете emacsclient который поставляется с вашими emacs, и что вы случайно не отправляете -c .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .