Перейти к содержимому

Запуск Emacs в Cygwin

6

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

Мне нравится, как в Ubuntu, когда я запускаю Emacs из терминала, он открывает графический интерфейс Emacs.

8 925 просмотров
starcorn спросил 15 лет назад
S 921

2 ответа

6
Принятый ответ

Требуется запустить X-сервер и установить x-версию emacs, Cygwin включает оба (если вы выбираете правильные пакеты во время установки).

X-сервер, вероятно, запускается командой startxпосле установки.

Нужно ли устанавливать xemacs? последняя версия xemacs - только v21, а emacs - v23. Версия emacs, которую я использую на Ubuntu, также v23, которая может открываться в отдельном окне.

starcorn · 15 лет назад · 1

@klw - Нет xemacs - это другой вариант emacs (еще одна очень похожая программа). Это не emacs с включенными X-библиотеками. Namning немного сбивает с толку.

Nifle · 15 лет назад · 1

@klw - вам нужны пакеты emacs-X11

Nifle · 15 лет назад · 0

@Nifle - я его установил, но не могу найти пакет для x-сервера. Можно ли дать мне имя для этого? Кстати, вы случайно не знаете, можно ли использовать Xming вместо X-сервера Cygwin?

starcorn · 15 лет назад · 0

@klw - Другой x-сервер отлично работает, именно этим я и пользуюсь большую часть времени, но бегло взглянем на пакеты cygwin. Думаю, вам нужен пакет X11 под названием xorg-server

Nifle · 15 лет назад · 0

@Nifle - я установил xorg сейчас, и, кажется, он работает, когда я запускаю startx в cygwin. Однако он просто открывает черное окно, в котором ничего нет. А в консоли cygwin просто печатается `_XSERVTrans.SocketUNIXAccept: accept () fail '. Когда я пытаюсь открыть emacs, он все равно не работает. Вы знаете, в чем может быть проблема?

starcorn · 15 лет назад · 0

@starcom - Понятия не имею, убедитесь, что вы установили все предварительные версии или попробуйте Xming instrad. Я не поспевал за Cygwin в последнее время, потому что я перешел на OSX для моего рабочего компьютера.

Nifle · 15 лет назад · 0

@Nifle - Я пошел на скучный курорт с переустановкой Windows. Теперь xorg работает без проблем. Я надеюсь, что это не рухнет сейчас.

starcorn · 15 лет назад · 0
Nifle ответил 15 лет назад
N 27 786
4

Решением, отличным от X, является пакет emacs-w32 под Editors в настройке cygwin. Он запускает emacs как собственное приложение Windows, но все еще является чистым Cygwin. Если вы запустите его прямо из ярлыка, вам могут понравиться эти настройки в ~ / .emacs:

Добавьте cygwin в path и exec path, если cygwin по умолчанию отсутствует в вашей переменной PATH:

(setenv "PATH" (concat "/ bin: / usr / bin: / usr / local / bin:" (getenv "PATH"))) (nconc exec-path '("/ bin" "/ usr / bin" "/ usr / local / bin")) 

Если вы компилируете java или другие вещи, которые генерируют имена файлов, такие как C: \ what, вы можете сначала отредактировать / etc / fstab и добавить монтирование из C: \ в / c, например:

C: / c двоичный файл ntfs, пользователь 1 1

И затем обрабатывать файлы, начинающиеся с C: как «магические имена файлов», которые переводятся в имена файлов в стиле Cygwin с этим в ~ / .emacs. Здесь я просто делаю две замены регулярного выражения в первом аргументе и игнорирую остальные. Кто-то, вероятно, должен создать .el для этого, сделать его более надежным и опубликовать его на http://www.emacswiki.org/emacs/ElispArea :

; В cygwin разрешите C: \ what превратиться в / c / what (defun cygwin-name-hook (операция и остальные аргументы) Msgstr "Превратить имена файлов Windows в имена файлов Cygwin." ;; Обрабатывать все операции одинаково (пусть ((сначала (автомобильные аргументы)) (Блокировка-имя-файла-обработчики (минусы "cygwin-name-hook" (и (например, операция-запрет-имя-файла-операция) ингибирующие-имя-файла-обработчики))) (операция запрета имени файла операции)) (setq first (replace-regexp-in-string "^ C:" "/ c" first t)) (setq first (replace-regexp-in-string "\\\\" "/" first t)) (применить операцию (сначала минусы (cdr args)))))  (добавить в список 'file-name-handler-alist' ("^ [Cc]:". cygwin-name-hook)) 

Затем, если вы запустите emacs -nw внутри mintty, вам может понадобиться распознать больше ключей, поместив их в ~ / .emacs:

***** Для мяты (define-key function-key-map "\ e [1; 5m" [(control? -)]) (define-key function-key-map "\ e [1; 5k" [(control? =)]) (define-key function-key-map "\ e [1; 5q" [(control? 1)]) (define-key function-key-map "\ e [1; 5s" [(control? 3)]) (define-key function-key-map "\ e [1; 5t" [(control? 4)]) (define-key function-key-map "\ e [1; 5u" [(control? 5)]) (define-key function-key-map "\ e [1; 5w" [(control? 7)]) (define-key function-key-map "\ e [1; 5x" [(control? 8)]) (define-key function-key-map "\ e [1; 5y" [(control? 9)]) (define-key function-key-map "\ e [1; 5p" [(control? 0)]) 
maxpolk ответил 13 лет назад
M 211