Comment intégrer au mieux Emacs et Cygwin?

Il existe de nombreuses façons d’intégrer Cygwin avec Emacs sous Windows. EmacsWiki montre quelques idées. Voici les options que j’ai trouvées:

  1. Utilisez les Emacs fournis avec Cygwin. (Ensuite, trouvez un moyen d’accéder à cmd.exe si vous le souhaitez.)
  2. Utilisez NTEmacs et Cygwin comme un shell “parfois”. (Une commande spéciale pour lancer Cygwin)
  3. Utilisez NTEmacs et Cygwin comme shell “toujours”. (Mx shell lance cygwin)

Donner des éclaircissements sur “pourquoi”. Voici quelques exemples où j’aurais aimé avoir Cygwin avec Emacs:

  1. Mx Whois ne fonctionne pas sur NTEmacs.
  2. Les packages tels que Wanderlust incluent un Makefile qui n’est pas compatible avec Windows.
  3. Parfois, j’ai juste besoin d’un shell bash pour quelque chose.

Alors, quelle option d’Emacs / Cygwin fonctionne bien pour les autres? En outre, quelqu’un a-t-il essayé l’intégration de MSYS avec succès?

Utilisez les Emacs dans Cygwin. Pas XEmacs..Emacs. Je viens d’installer tout à partir de Cygwin et tapez ce qui suit pour exécuter Emacs:

 XWin -multiwindow
 export DISPLAY =: 0.0
 emacs &

Il peut également être utile de créer un lien vers votre lecteur C (ou tout autre lecteur) comme ceci:

ln -s /cygdrive/c /c

Je l’utilise depuis plusieurs mois et ça marche toujours bien. J’utilise constamment des fonctionnalités avancées telles que TRAMP et subversion sans aucun problème. Tous les paquets avancés comme cedet fonctionnent.

Si vous ne l’aviez pas remarqué, je suis l’affiche originale. Après toutes mes recherches et toutes mes tentatives, celle-ci a fonctionné et je suis TRÈS PLAISIR. Bon travail Cygwin!

Aussi, je recommande de ne pas utiliser shell dans Emacs. Les utilitaires comme top ne semblent pas fonctionner. Au lieu de cela, utilisez MinTTY et écran. Cygwin vous donne directement ssh dans MinTTY (vous n’avez pas besoin de mastic). La meilleure partie est que beaucoup de mes connaissances Linux fonctionnent de manière transparente dans Windows.

La meilleure solution doit être cygwin emacs-w32. Il utilise l’interface graphique native win32 et utilise le système cygswin POSIX. Cela signifie que vous avez un programme Windows natif et tout le chemin cygwin, le fonctionnement du shell.

L’installation est très simple: setup.exe -> emacs-w32. Le numéro de version est maintenant: 24.2.93.1

Tellement bon.

Un quasortingème choix consiste à exécuter emacs dans l’un des terminaux alternatifs de Cygwin: (u) rxvt, mintty, xterm. Celles-ci offrent une émulation de terminal bien meilleure que celle de la console, ce qui signifie une expérience emacs nettement améliorée.

J’ai tendance à utiliser la version native d’ Emacs sur Windows en conjonction avec les ports (aussi natifs) de gnu utils , qui sont beaucoup plus rapides, mais moins complets, que ceux de Cygwin.

Ensuite, j’utilise juste une fenêtre cygwin pour le shell bash et les éléments manquants.

J’ai installé cygwin à la racine. Il vous met explicitement en garde contre cela, mais je n’ai vu aucun effet néfaste. (J’ai trouvé ce conseil de Steve Yegge).

J’ai aussi installé cygwin-mount , ce qui aide beaucoup. De plus, je devais passer d’ispell à aspell. Enfin, un peu de peaufinage .emacs, et j’ai bien fait:

 ;;;;;;;;;;;;;;;;;;;;;; ;;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) ) 

J’aime la version de xemacs à partir du programme d’installation de Cygwin. Fonctionne immédiatement, la touche Alt correspond bien à Meta , et le tampon shell bash est disponible chaque fois que vous en avez besoin.

La troisième option J’utilise NTEmacs + EmacsW32 + Cygwin. De cette façon, j’ai une application Windows native avec les utilitaires Unix et le shell bash. Les makefiles fonctionnent, mais je n’ai jamais utilisé de Mx whois . Je ne peux penser à aucun inconvénient immédiat de cette configuration.

Voici des parties intéressantes de ma configuration, très similaires à 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") 

Tout comme @justinhj, j’utilise la version native d’emacs sous windows en conjonction avec les ports (aussi natifs) de gnu utils (ex: binutils pour ‘ssortingngs’, etc.).

Et j’utilise toujours cygwin comme shell, dans Emacs ou indépendamment d’Emacs. De cette façon, je conserve l’apparence de mon environnement de travail lorsque je passe de Windows à / depuis Linux / AIX / Solaris.

Malheureusement, lorsque j’ai mis à niveau mes Emacs de 21.2 à 23.2, Emacs a perdu sa capacité à reconnaître ‘/ cygwin / c’ par défaut. Je dois rechercher ceci pour voir pourquoi cela ne fonctionne plus et ce que je peux faire pour y remédier. Je viens de trouver les informations suivantes et je vais vérifier si cela est utile. Il semble étrange que maintenant que j’ai besoin d’un paquet externe pour quelque chose qui était toujours présent par défaut:

  • Re: / cygdrive / c vs c:
  • cygwin-mount.el

Je préfère cependant minimiser l’utilisation de packages supplémentaires. Donc, je viens de vérifier le comportement de mon “nouveau” Emacs + Cygwin et il semble que je puisse accéder au lecteur C: en tapant simplement “/”.

C’est cool – un seul caractère (barre oblique) au lieu de / cygdrive / c. Cependant, le shell dans Emacs affiche “/ cygdrive / c”, une différence quelque peu déroutante.

J’ai étudié trois options, toutes avec des versions fenêtrées (mais pas X11) d’Emacs. (Le terminal est trop hardcore pour moi.) Voilà:

  1. Les XEmacs fournis avec Cygwin
  2. EmacsW32
  3. Emacs standard pour Windows

Les gens de Cygwin veulent vous diriger vers leurs Emacs / XEmacs. Dans http://cygwin.com/faq/faq-nochunks.html#faq.using.ntemacs , ils écrivent “Notez que tout cela” fonctionne “si vous utilisez le port Cygwin d’Emacs ou XEmacs de Cygwin Setup “.

Veillez à installer le package xemacs-sumo en plus de xemacs; sinon, le shell Mx ne fonctionnera pas. Vous pouvez lancer xemacs sans utiliser X11 comme

 DISPLAY= xemacs & 

Inconvénients: 1) Garçon, c’est un vieux Emacs. Je n’avais pas vraiment envie de continuer avec ça quand tout le monde utilise Emacs 23. 2) J’ai trouvé légèrement ennuyeux que l’installation nécessite tout un tas de librairies X11 même si vous n’exécutez pas X11. 3) Pas de mode cua hors de la boîte.

EmacsW32 (http://ourcomments.org/Emacs/EmacsW32.html) dispose d’un programme d’installation en un clic, d’une commande Mx cygwin-shell et du mode CUA. Mais la complétion de tabulation dans le shell Cygwin utilise des chemins Windows, ce qui me rend fou. Le port W32 ne semble pas avoir été activement amélioré depuis 2008, mais ils fournissent aux installateurs des versions plus récentes d’Emacs.

Le standard Emacs pour Windows semble être le meilleur pari. Télécharger à partir de http://ftp.gnu.org/pub/gnu/emacs/windows/ , décompresser et lancer depuis Cygwin . Ensuite, il reprend le répertoire de base, etc. Collez le mumbo-jumbo de http://cygwin.com/faq/faq-nochunks.html#faq.using.ntemacs dans ~ / .emacs. Redémarrez Emacs et lancez le shell Mx. Tout fonctionne comme prévu.

FWIW, j’utilise les versions normales de GNU Emacs Windows et j’utilise Cygwin. Je n’ai jamais eu de problèmes, mais je ne fais pas grand chose avec Cygwin en dehors d’Emacs. Oh, et j’utilise une ancienne version de Cygwin (avec toutes les versions d’Emacs).

Pour l’installation, je charge ces deux fichiers, dans l’ordre:

Construisez emacs depuis la source:

– Télécharger la dernière version stable (24.5 à ce jour).

-Unzip et cd dans le dossier emacs

-Exécuter ces étapes dans l’ordre:

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

-Copy emacs.exe, à la main, à partir du “dossier emacs” / src à cygwin / bin

-Run emacs:

$ emacs&