Недавно я купил свой первый Mac за десять лет и сейчас нахожусь в процессе его настройки. Я - пользователь Emacs и решил, что хочу использовать обычные Emacs, а не Aquamacs, чтобы я мог использовать свою существующую конфигурацию из других операционных систем. Я пытался следовать многим инструкциям, которые я нашел в Интернете (например, этот , этот и этот с сайта, с которого я скачал Emacs ), и пытался объединить эти фрагменты любым количеством способов, но никогда привел вещи в состояние, даже приближающееся к тому, к чему я привык / на что надеялся:
- Демон Emacs запускается либо при запуске, либо как только он мне понадобится ; либо в порядке. Любые новые фреймы Emacs поддерживаются тем же сервером.
- Когда я открываю текстовый файл из Finder, файл открывается в Emacs, если возможно, в существующей графической рамке.
- Если я запускаю Emacs.app, система повторно использует демон emacs, работающий в фоновом режиме, вместо того, чтобы запускать новый экземпляр и открывать в нем новое окно. ( шляпа подсказка )
- Когда я запускаю Emacs из терминала, терминал работает, не дожидаясь, пока я закончу с Emacs (если я не использую '-nw')
- AFAIK ни в коем случае во время операций, описанных выше, не должен Emacs оказаться в состоянии («режим редактирования сервера?»), Где он ждет, пока я наберу текст
C-x #
, хотя я не очень хорошо понимаю это. - (Я бы расценил это как бонус) Для меня есть некоторый способ вызывать Emacs из терминала, чтобы Emacs повторно использовал существующий фрейм, если это возможно.
Как я могу настроить Emacs так?
Я особенно озадачен тем, что Finder открывает вещи в Emacs именно так, как я хочу (# 2), поскольку найденные мной руководства обычно создают несколько псевдонимов, Applescripts, сценариев bash и т. Д., И я не уверен который я хочу сказать Finder использовать для открытия текстовых файлов.
Спасибо!
A. @lawlist спрашивает: «Открывается ли новый фрейм по умолчанию, когда вы открываете новый файл из терминала, даже если фрейм уже существует?» Ответ заключается в том, что если я запускаю сервер при запуске, как описано здесь , открываю фрейм, а затем открываю файл, печатая /Applications/Emacs.app/Contents/MacOS/bin/emacsclient -n <whatever>
, я могу получить файл для открытия в существующем фрейме. Если в данный момент нет открытого фрейма, я должен использовать «-nc» или когда я пытаюсь открыть файл, ничего не происходит.
Б. @lawlist спрашивает: «Вы хотите, чтобы демон работал при входе в систему или было бы достаточно загрузить Emacs вручную после входа в систему?» Запуск вручную будет в порядке.
M-x server-start
вручную запустит сервер, чтобыemacsclient
можно было с ним общаться. Я поместил(server-start)
в свойinit.el
файл вместо использования демона при входе в систему - однако, многие люди предпочитают вариант входа в систему демона. И, конечно,.emacs
файл будет подходящим местом для(server-start)
.ns-find-file
- который активируется автоматически, когда файл связан с Emacs.app. Моя функция перехвата файла в ссылках выше также изменяет,ns-find-file
если это то, что вас интересует. Конечно, вам нужен встроенный Emacs--with-ns
.Ответы:
Чтобы Emacs.app открывал файлы в существующем фрейме вместо нового фрейма, добавьте
(setq ns-pop-up-frames nil)
в файл конфигурации, например~/.emacs
.Вы можете открыть файл из терминала с помощью
open -a emacs file
илиemacsclient -n file
. Если Emacs.app не открыт, но естьEmacs --daemon
процесс, по какой-то причинеemacsclient -n file
он не работает, ноemacsclient -nc file
работает.Убедитесь, что вы используете
emacsclient
бинарный файл, включенный в версию Emacs, которую вы используете, например/Applications/Emacs.app/Contents/MacOS/bin/emacsclient
, или/usr/local/bin/emacsclient
если вы установили Emacs с Homebrew.Чтобы запустить сервер Emacs при входе в систему, например, сохраните этот список как
~/Library/LaunchAgents/my.emacsdaemon.plist
:Plist загружается автоматически при следующем входе в систему, но вы можете загрузить его немедленно, запустив
launchctl load ~/Library/LaunchAgents/my.emacsdaemon.plist
.Изменить: Я до сих пор не знаю, почему люди связывают типы файлов с приложением AppleScript, а не просто Emacs.app. Скрипт в ответе kuzzooroo также может быть написан как скрипт оболочки:
Вы можете использовать Platypus, чтобы сохранить скрипт как приложение:
Я только начал использовать Emacs, но у меня совершенно другие настройки. Я сделал свое собственное приложение Emacs, сделав копию iTerm.app, изменив CFBundleIdentifier в Info.plist, чтобы приложение использовало другой файл настроек, и установив для команды по умолчанию значение
/usr/local/bin/emacs
. Я добавил(server-start)
к~/.emacs
и я открыть пользовательское приложение Emacs при входе в систему. Я использовал Platypus для создания приложения, которое запускается,emacsclient -n "$@";open -b my.emacs
и сделал его приложением по умолчанию для текстовых файлов.источник
Решение Лаури в сочетании с предложениями из комментариев в значительной степени решило мои проблемы. Я вставил ниже некоторый Applescript, который я собрал из материалов, которые я нашел в Интернете. Скрипт помогает сгладить некоторые оставшиеся складки, например, его поведение немного лучше, если в настоящее время нет кадра Emacs.
РЕДАКТИРОВАТЬ: цель сценария состоит в том, чтобы быть связанным с файлами .txt в Finder.
источник