ОС: OS X 10.9.5, Маверикс
GNU Emacs 24.3.1 (x86_64-apple-darwin13.1.0, Carbon версии 1.6.0 AppKit 1265.19) от 2014-04-03 на Rainers-MacBook-Pro-3.local
Я установил emacs через homebrew от Railwaycat, и он работает хорошо - нареканий нет. Я не использую Emacs в Termoinal, и я обычно запускаю его через Приложение.
Как я уже сказал - я счастлив до сих пор.
У меня есть только одна вещь, которую мне не удалось получить (которая раньше работала в Linux), а именно:
- получить демон emacs начиная с логина
- используя emacsclient, чтобы открыть
- закройте emacsdaemon и сохраните все файлы при выходе
Какие-нибудь рабочие рецепты, которые могли бы помочь мне настроить это?
Добавлена информация
Чтобы запустить демон emacs при входе в систему
Я создал приложение Automator, выполнив команду bash
/usr/local/bin/emacs --daemon
и добавил его к элементам входа в систему, который работает хорошо.
Использование демона из терминала
Я могу использовать демон Emacs, используя
emacsclient .bashrc
который открывает .bashrc в терминальной сессии emacs.
Использование из GUI
Теперь остается вопрос: как я могу использовать его из графического интерфейса?
Как я понимаю emacsclient, я не могу открыть emacsclient, пока я не укажу файл для открытия.
Я хотел бы открыть графический интерфейс emacsclient и открыть все файлы, которые были ранее открыты ? Это возможно?
Я узнал, что я могу использовать
emacsclient -c
в терминале делать то, что я хочу - но могу ли я сделать то же самое для графического интерфейса?
источник
emacsclient
не является приложением в том, что касается OS X, а толькоEmacs
(и только если оно установлено таким образом). Почему бы вам просто не использовать привязки системных клавиш для выбора открытого приложения / окна? (Не будет работать, если Emacs был запущен в режиме демона и пока нет фрейма ("окна")).Ответы:
Я действительно не против того, чтобы Emacs.app всегда работал, но тот факт, что я не мог закрыть окно без случайного убийства сервера Emacs, раздражал. И даже если вы действительно изо всех сил пытаетесь убить последний кадр, он все равно не дает вам: «Попытаться удалить единственный видимый или иконизированный кадр». ... Так что мы обманываем.
Это решение просто скрывает Emacs (например, Command+ h), когда вы пытаетесь закрыть последнее окно, нажав кнопку закрытия.
Добавьте куда-нибудь следующее в ваш Emacs init:
Добавьте Emacs в «Пользователи и группы> Элементы входа» и установите флажок «Скрыть».
Ваш Emacs init также должен
(start-server)
где-то позвонить .Я использую эту
emacsclient
оболочку для вывода Emacs на первый план:Вопросы:
Нажатие на иконку Emacs в Dock иногда приводит к случайному созданию нового окна. Но не всегда.Это основано офф @ noaham в ответ предлагая минимизировать Emacs, и этот ответ , объясняющий , как крючок пытается закрыть последнее окно.
РЕДАКТИРОВАТЬ:
Просматривая источник, я нашел «привязку клавиш», для
mac-apple-event-map
которой звонилmac-ae-reopen-application
.mac-ae-reopen-application
кажется, проверяет видимые и иконизированные кадры и должен как-то пропустить наш скрытый. Это возможно ошибка.Легкое решение - просто отключить привязку ключей в вашей инициализации:
Это приводит к появлению новой незначительной ошибки: нажатие на значок док-станции, когда все окна свернуты, автоматически не увеличивает одно из них. Правильным решением было бы переписать
mac-ae-reopen-application
, но я едва знаю emacs и elisp.источник
Порт emacs Yamamoto Mitsuharu, к сожалению, не поддерживает multi-tty (см. Эту проблему ). Это означает, что вы не можете запустить демон emacs из терминала и запустить окно графического интерфейса с помощью emacsclient.
Вот что я делаю: В моем init.el у меня есть,
(server-start)
и я запускаю Emacs.app при входе в систему. Раздражение здесь в том, что это вызывает окно, которое я должен вручную свернуть.Затем я вызываю скрипт bash
emacsc
со следующимЗатем я создаю приложение с AppleScript, которое содержит следующее
Важно передать
-n
флаг emacsclient, иначе вы сможете использовать приложение emacsc только для того, чтобы открывать по одному клиенту за раз. Установка переменной пути гарантирует, что OS X может найти правильную версию emacsclient.Указание Emacs «активировать» гарантирует, что окно вашего клиента будет запущено на переднем плане.
Как я уже сказал, досадно то, что вы должны вручную свернуть окно emacs при входе в систему, а затем сесть в док. Один из способов избежать этого - автоматически «спрятать» Emacs после входа в систему, но затем активировать его, чтобы он отображался.
источник
Я не уверен, чем железнодорожная кошка Emacs отличается от обычной формулы домашнего приготовления, но с последним, что вы бы сделали
ln -sfv /usr/local/opt/emacs/*.plist ~/Library/LaunchAgents
, который будет работатьemacs --daemon
при входе в систему.Плист включен в форму ЗДЕСЬ в формуле . Все, что вам нужно, это изменить путь к вашему приложению emacs в строке
<string>#{opt_bin}/emacs</string>
.Кстати, вы также можете получить Emacs как приложение OS X с Homebrew Emacs, если вы установите его с этой
--cocoa
опцией. (Вам также нужно будет запуститьbrew linkapps
потом, связать его/Applications
или создать ссылку самостоятельно.источник
На mac-демонах 90% времени управляются с помощью launchd . Он может запускать их по многим триггерам, включая вход / выход пользователя из системы. Существует красивое Mac-приложение под названием Lingon для просмотра и редактирования различных вещей, которыми управляет launchd. В вики emacs есть некоторые упоминания об этом, в том числе и пример файла конфигурации . Но похоже, что это не решает вашу проблему, например, как отключить демон при выходе из системы.
источник
Создайте приложение AppleScript, как это:
Возможно, вам придется скорректировать путь, или вы можете полностью пропустить путь. Вы также можете использовать что-то более необычное для запуска демона, если он еще не запущен.
источник