Налаштуйте Emacs в Windows для запуску одного примірника та відкриття файлів у існуючому екземплярі


18

Мене особливо цікавить повний досвід роботи з Windows, включаючи:

  • Автоматичний запуск сервера, якщо він ще не запущений
  • Як викликати emacs, щоб він використовував сервер (наприклад, з командного рядка або сторонніх інструментів)
  • Підтримка контекстного меню (наприклад, клацніть правою кнопкою миші на файл і дозвольте йому надсилатись emacs для перегляду та редагування)

Чи є така підтримка поза коробкою десь?

Відповіді:


21

Автоматичний запуск сервера, якщо він ще не запущений

Це має бути однаковим для будь-якої збірки Emacs. Додайте цей фрагмент до свого .emacsабо .emacs.d/init.el.

(require 'server)
(unless (server-running-p)
  (server-start)) 

А потім просто запустіть emacs, запустивши runemacs.exeвиконуваний файл, що постачається з збіркою.

Як викликати emacs, щоб він використовував сервер (наприклад, з командного рядка або сторонніх інструментів)

Збірка Windows Emacs поставляється з emacsclientw.exeвиконуваним файлом у bin/каталозі. Використовуйте повний шлях до цього виконуваного файлу як свого редактора на будь-яких сторонніх інструментах, які потрібно налаштувати.

Підтримка контекстного меню (наприклад, клацніть правою кнопкою миші на файл і дозвольте йому надсилатись emacs для перегляду та редагування)

  1. Клацніть правою кнопкою миші на файл, виберіть Open With -> Select Default Program.
  2. У вікні, що з'явиться, перейдіть до emacsclientw.exeвищезгаданого виконуваного файлу та виберіть його.
  3. Якщо ви не хочете, щоб Emacs був за замовчуванням, виконайте кроки 1 і 2 ще раз, вибравши іншу програму за замовчуванням.

emacsclientw.exe тепер завжди буде опцією в контекстному меню.


Дякую - чудовий момент про сервер, я не думав.
cristobalito

Що стосується emacsclient.exe, чи не повинен це бути emacsclientw.exe? Крім того, я подумав, що вам доведеться запустити це прапором -a, щоб вказати альтернативний редактор, якщо сервер не працює.
cristobalito

Для того, щоб сервер міг правильно працювати з моєю конфігурацією, я також повинен був додати змінну середовища, EMACS_SERVER_FILEяка вказувала на мій .emacs.d\serverкаталог.
Райан

@Ryan Мені вдалося змусити це працювати без необхідності змінної середовища - просто потрібно для того, щоб сервер працював.
cristobalito

Хм, для мене оцінюючи (server-running-p)прибутки :otherв Windows (навіть після спроби встановити цей режим EMACS_SERVER_FILEenv.
Каушал Моді

5

Автоматичний запуск сервера, якщо він ще не запущений

Я настійно рекомендую встановити змінні середовища для ALTERNATE_EDITORдо runemacs.exe. Таким чином, ви завжди можете викликати emacsclient, навіть якщо немає сервера. Просто додайте (запуск сервера) у ваш файл init. Коли сервер не існує emacsclient, то він називає ALTERNATE_EDITORemacs у нашому випадку. Оскільки emace запускає сервер у файлі init, будь-які нові виклики до emacsclient будуть миттєвими.

Як викликати emacs, щоб він використовував сервер (наприклад, з командного рядка або сторонніх інструментів)

Використовуйте emacsclientw.exe -c -n "your_file"для відкриття_файлу. -cАргумент створює новий графічний фрейм і -nдозволяє закрити кадр без втрати стану сервера. Ви навіть можете зателефонувати йому без імені файлу, щоб відкрити *Scratch*буфер. Працює і з ярлика робочого столу. Використання emacsclient.exe(зверніть увагу на відсутність w) з'явиться командний рядок протягом декількох секунд кожного разу, коли ви його зателефонуєте.

Додавання до контекстного меню

Emacswiki має приємну сторінку про додавання Emacs до контекстного меню тут . Він включає редагування вузла реєстру, HKEY_CLASSES_ROOT\*щоб додати дію, яку потрібно відкрити за допомогою emacs.


5

Інші відповіли на серверну частину. Ось те , що я роблю, щоб отримати UNIX / GNU / Linux-подібних утиліт , таких як grepі diff:

  1. Встановіть Cygwin ( разова операція).
  2. Навантаження cygwin-mount.el.
  3. Навантаження setup-cygwin.el.

Однак майте на увазі, що існують різні версії Cygwin. Я використовую старішу версію (не знаю, яку - важко сказати, AFAICT). Не знаю, чи будуть у вас проблеми з останніми версіями.

Дивись також:


Примітка. Не використовуйте EMACS cygwin. Встановіть збірку GNU з ftp.gnu.org/gnu/emacs/windows
M Smith

Я не рекомендую встановлювати Cygwin, оскільки можуть виникнути небажані побічні ефекти (наприклад, зламати інші порти gnu windows, такі як emacs, gcc, ...), для того, щоб мати лише деякі інструменти gnu. Замість цього встановіть порти GnuWin32 . Ви можете встановити весь пакет або вибрані інструменти на ваш вибір.
Секі

@Seki - Так, Елі Зарецький говорить те саме, що і ти. Все, що я можу сказати, це те, що у мене не було жодних проблем (і я маю серйозні сумніви у вашій заяві про те, що він зламав Emacs ). Але (a) я використовую старий реліз Cygwin і (b) я не використовую більшість утиліт UNIX / GNU Linux, що надаються Cygwin.
Дрю

@drew: можливо, надмірно говорити про "зламати" emacs, "викликаючи дивну поведінку" було б краще. Наприклад, Cygwin Make буде гальмувати ланцюжок інструментів MinGW, якщо ви не ретельно перевіряєте, чи не враховуються ваші шляхи, щоб інструменти Cygwin не бралися до уваги або були прийняті за замовчуванням, якщо інших немає. Це не обмежується Make, багато інших інструментів не можуть змішуватися, і іноді це тонко вказує на проблему. Отже, коротко, або у вас є рідний порт Emacs, і краще мати вбудовані інструменти GNU, або ви можете використовувати весь дистрибутив Cygwin, включаючи його emacs.
Секі

@Seki: Тож здається, що ваш головний момент полягає в тому, що Cygwin і MingGW не грають добре разом. Це не дивно для мене. (FWIW, я не маю нічого проти використання MingGW замість Cygwin. Для мене було просто встановити Cygwin, і я його не використовую достатньо, щоб виникли проблеми.)
Дрю
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.