Как лучше всего интегрировать Emacs и Cygwin? - PullRequest
42 голосов
/ 16 января 2010

Существует множество способов интеграции Cygwin с Emacs в Windows. EmacsWiki показывает несколько идей. Вот варианты, которые я нашел:

  1. Используйте Emacs, который поставляется с Cygwin. (Затем найдите способ получить доступ к cmd.exe, если хотите.)
  2. Используйте NTEmacs и Cygwin в качестве «иногда» оболочки. (Специальная команда для запуска Cygwin)
  3. Используйте NTEmacs и Cygwin в качестве оболочки "Always". (M-x оболочка запускает Cygwin)

Чтобы дать некоторую ясность относительно "почему". Вот несколько примеров, где я хотел бы иметь Cygwin с Emacs:

  1. M-x whois не работает на NTEmacs.
  2. Пакеты типа Wanderlust включают Makefile, который не подходит для Windows.
  3. Иногда мне просто нужна командная оболочка для чего-то.

Так какой вариант Emacs / Cygwin хорошо работает для других? Также кто-нибудь успешно пробовал интеграцию с MSYS?

Ответы [ 11 ]

19 голосов
/ 24 ноября 2010

Используйте Emacs в Cygwin. Не XEmacs .. Emacs. Я просто устанавливаю все из Cygwin и набираю следующее для запуска Emacs:

XWin -multiwindow
export DISPLAY=:0.0
emacs&

Может также помочь создать ссылку на ваш диск C (или любой другой диск), например:

ln -s /cygdrive/c /c

Я пользуюсь этим уже несколько месяцев, и он всегда работает хорошо. Я постоянно использую расширенные функции, такие как TRAMP и Subversion без каких-либо проблем. Все расширенные пакеты, такие как cedet, просто работают.

Если вы не заметили, я оригинальный постер. После всех моих исследований и попыток, это сработало, и я ОЧЕНЬ РАДЫ. Хорошая работа, Сигвин!

Кроме того, я рекомендую не использовать shell в Emacs. Такие утилиты, как top просто не работают. Вместо этого используйте MinTTY и screen. Cygwin дает вам ssh напрямую в MinTTY (вам не нужна шпаклевка). Самое приятное то, что многие мои знания Linux работают в Windows без проблем.

9 голосов
/ 04 марта 2013

Лучшим решением должен быть Cygwin Emacs-W32. Он использует win32 родной графический интерфейс и систему Cygswin POSIX. Это означает, что у вас есть программа с графическим интерфейсом Windows и все пути к Cygwin, оболочка работает.

Установка очень проста: setup.exe -> emacs-w32. Теперь номер версии: 24.2.93.1

Так хорошо.

8 голосов
/ 16 января 2010

Четвертый вариант - запустить emacs в одном из альтернативных терминалов Cygwin: (u) rxvt, mintty, xterm. Все они предлагают намного лучшую эмуляцию терминала, чем консоль, что означает значительно улучшенный опыт работы с emacs.

7 голосов
/ 16 января 2010

Я склонен использовать собственную версию emacs для Windows в сочетании с (также собственными) портами gnu utils , которые намного быстрее, хотя и менее полны, чем Cygwin.

Тогда я просто использую окно cygwin для оболочки bash и вещей, которые отсутствуют.

4 голосов
/ 16 января 2010

Я установил cygwin в корень.Он явно предупреждает вас об этом, но я не видел никаких побочных эффектов.(Я нашел этот совет от Стива Йегге).

Я также установил cygwin-mount , что очень помогает.Кроме того, мне пришлось переключиться с ispell на aspell.Наконец, немного подправил .emacs, и я был в порядке:

;;;;;;;;;;;;;;;;;;;;;;
;;CygForTheWin
;;*cygwin
(when (equal system-type 'windows-nt) 
(message "Setting up Cygwin...")
(let* ((cygwin-root "c:")
       (cygwin-bin (concat cygwin-root "/bin"))
       (gambit-bin "/usr/local/Gambit-C/4.0b22/bin/")
       (snow-bin "/usr/local/snow/current/bin")
       (mysql-bin "/wamp/bin/mysql/mysql5.0.51a/bin/"))
   (setenv "PATH" (concat cygwin-bin ";" ;
                          snow-bin ";" 
                          gambit-bin ";"
                          mysql-bin ";"
                          "c:/usr/local/jdk1.60_03/bin/"
                          ".;")  
           (getenv "PATH"))
   (setq exec-path (cons cygwin-bin exec-path)))

(require 'cygwin-mount)
(cygwin-mount-activate)

(setq shell-file-name "bash")
(setq explicit-shell-file-name "bash")

(defun jonnay-cygwin-shell ()
  "Wrapper around cygwin-shell so that it doesn't throw an error"
  (interactive)
  (condition-case e
   (cygwin-shell)
   (message "There was an error trying to launch the shell: %s" e)))

(message "Setting up Cygwin...Done")


;; found from the manual, check, use and make go?
 (defun my-shell-setup ()
   "For Cygwin bash under Emacs 20"
   (setq comint-scroll-show-maximum-output 'this)
   (setq comint-completion-addsuffix t)
   (setq comint-eol-on-send t)
   (setq w32-quote-process-args ?\")
   (make-variable-buffer-local 'comint-completion-addsuffix))

(setq shell-mode-hook 'my-shell-setup)
(add-hook 'emacs-startup-hook 'jonnay-cygwin-shell)
)
1 голос
/ 18 августа 2010

Так же, как @justinhj, я использую собственную версию emacs для windows вместе с (также собственными) портами утилит gnu (например, binutils для «строк» ​​и т. Д.).

И я всегда использую Cygwin в качестве оболочки, внутри Emacs или независимо от Emacs. Таким образом, я сохраняю внешний вид своей рабочей среды при переключении с Windows на Linux / AIX / Solaris и обратно.

К сожалению, однако, когда я обновил свой Emacs с 21.2 до 23.2, Emacs по умолчанию потерял способность распознавать '/ cygwin / c'. Я должен исследовать это сейчас, чтобы понять, почему он больше не работает и что я могу сделать, чтобы это исправить. Я только что нашел следующую информацию и проверю, насколько это полезно. Кажется странным, что теперь мне нужен внешний пакет для чего-то, что всегда было по умолчанию:

Я предпочитаю, однако, минимизировать использование дополнительных пакетов. Итак, я только что проверил поведение моего «нового» Emacs + Cygwin, и кажется, что я могу получить доступ к диску C: просто набрав '/'.

Это круто - только один символ (косая черта) вместо / cygdrive / c. Однако оболочка в Emacs запрашивает '/ cygdrive / c', что несколько запутывает разницу.

1 голос
/ 16 января 2010

Третий вариант. Я использую NTEmacs + EmacsW32 + Cygwin. Таким образом, у меня есть родное приложение Windows с утилитами Unix и оболочкой bash. Makefiles работают, я никогда не использовал M-x whois, хотя. Я не могу думать о каких-либо непосредственных недостатках этой установки.

Вот интересные фрагменты моей настройки, в основном очень похожие на http://www.emacswiki.org/emacs/NTEmacsWithCygwin:

(setq cygwin-root "c:/cygwin/")
(setq private-bin (concat home-dir "/usr/bin"))
(setq exec-path (cons private-bin exec-path))
(setenv "PATH" (concat private-bin ";" (getenv "PATH")))
; Add Cygwin Emacs stuff
(add-to-load-path "/usr/share/emacs/site-lisp")
; Add Cygwin Info pages
(add-to-list 'Info-default-directory-list
             (concat cygwin-root "usr/share/info/"))

(setq shell-file-name "bash")
(setenv "SHELL" shell-file-name)
(setq explicit-shell-file-name shell-file-name)

(setq w32shell-cygwin-bin "c:\\cygwin\\bin")
(require 'w32shell)
(w32shell-add-emacs)
(w32shell-set-shell "cygwin")
1 голос
/ 16 января 2010

Мне нравится версия xemacs, которую вы получаете из программы установки Cygwin. Работает из коробки, ключ Alt очень хорошо отображается на Meta , и буфер оболочки bash всегда рядом, когда вам это нужно.

0 голосов
/ 26 августа 2016

Сборка Emacs из источника:

- Загрузка последней стабильной версии (на момент написания статьи 24,5).

- Разархивируйте и перейдите в папку emacs

- Выполните эти шаги по порядку:

$ ./autogen.sh
$ ./configure --with-w32
$ make
$ make install

-Copy emacs.exe, вручную, из «папки emacs» / src в cygwin / bin

-Run Emacs:

$ emacs&

0 голосов
/ 22 августа 2011

FWIW, я использую обычные выпуски GNU Emacs для Windows и Cygwin. У меня никогда не было проблем, но я мало что делаю с Cygwin вне Emacs. О, и я использую старую версию Cygwin (со всеми версиями Emacs).

Для настройки я загружаю эти два файла в следующем порядке:

...