6

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

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

2 ответа2

6

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

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

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 binary,user 1 1

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

; When in cygwin, allow C:\whatever to turn into /c/whatever
(defun cygwin-name-hook (operation &rest args)
  "Turn Windows filenames into Cygwin filenames."
  ;; Handle all operations the same
  (let ((first (car args))
        (inhibit-file-name-handlers
         (cons 'cygwin-name-hook
               (and (eq inhibit-file-name-operation operation)
                    inhibit-file-name-handlers)))
        (inhibit-file-name-operation operation))
    (setq first (replace-regexp-in-string "^C:" "/c" first t))
    (setq first (replace-regexp-in-string "\\\\" "/" first t))
    (apply operation (cons first (cdr args)))))

(add-to-list 'file-name-handler-alist '("^[Cc]:" . cygwin-name-hook))

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

;***** For mintty
(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)])

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