web-dev-qa-db-fra.com

Comment intégrer au mieux Emacs et Cygwin?

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

  1. Utilisez Emacs fourni 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". (M-x Shell lance cygwin)

Pour clarifier le "pourquoi". Voici quelques exemples où j'aurais aimé avoir Cygwin avec Emacs:

  1. M-x whois ne fonctionne pas sur les NTEmacs.
  2. Des packages comme 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 réussi l'intégration MSYS?

42
User1

Utilisez Emacs dans Cygwin. Pas XEmacs..Emacs. Je viens d'installer tout depuis Cygwin et de taper ce qui suit pour exécuter Emacs:

 XWin -multiwindow 
 Export DISPLAY =: 0,0 
 Emacs & 

Cela peut également aider à 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 cela fonctionne toujours bien. J'utilise constamment des fonctionnalités avancées comme TRAMP et Subversion sans aucun problème. Tous les packages avancés comme cedet fonctionnent.

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

Aussi, je recommande de ne pas utiliser Shell dans Emacs. Des utilitaires comme top ne semblent tout simplement pas fonctionner. Utilisez plutôt MinTTY et screen. Cygwin vous donne ssh directement dans MinTTY (vous n'avez pas besoin de PuTTY). La meilleure partie est que beaucoup de mes connaissances Linux fonctionnent parfaitement sous Windows.

19
User1

La meilleure solution doit être cygwin emacs-w32. Il utilise win32 native gui et utilise le système cygswin POSIX. Cela signifie que vous avez un programme GUI natif Windows et tout le chemin cygwin, Shell fonctionne.

L'installation est très simple: setup.exe -> emacs-w32. Maintenant, le numéro de version est: 24.2.93.1

Tellement bon.

9
Mingo

Un quatrième choix consiste à exécuter emacs dans l'un des terminaux alternatifs de Cygwin: (u) rxvt, mintty, xterm. Ces derniers offrent tous une bien meilleure émulation de terminal que la console, ce qui signifie une expérience emacs bien améliorée.

8
ak.

J'ai tendance à utiliser la version native de emacs sur windows en conjonction avec les ports (également natifs) de gnu utils , qui sont beaucoup plus rapides, bien que moins complets, que le Cygwin ceux.

Ensuite, j'utilise simplement une fenêtre cygwin pour le shell bash et les choses qui manquent.

7
justinhj

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 également installé cygwin-mount , ce qui aide un tas. De plus, j'ai dû passer d'ispell à aspell. Enfin, un peu de .emacs peaufinage, et j'étais prêt à partir:

;;;;;;;;;;;;;;;;;;;;;;
;;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)
)
4
Jonathan Arkell

J'aime la version xemacs que vous obtenez du programme d'installation de Cygwin. Fonctionne hors de la boîte, le Alt cartes clés vers Meta très bien, et le tampon bash Shell est là quand vous en avez besoin.

1
mob

Tout comme @justinhj, j'utilise la version native d'emacs sur Windows en conjonction avec les ports (également natifs) des utilitaires gnu (par exemple binutils pour les `` chaînes '', 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 à/de Linux/AIX/Solaris.

Malheureusement cependant, lorsque j'ai mis à jour mes Emacs de 21.2 à 23.2, Emacs a perdu sa capacité à reconnaître '/ cygwin/c' par défaut. Je dois rechercher ceci maintenant 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 les vérifier pour voir si cela est utile. Il semble étrange que maintenant que j'ai besoin d'un package externe pour quelque chose qui était toujours là par défaut:

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 invite avec '/ cygdrive/c', une différence quelque peu déroutante.

1
Android Eve

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

Voici des extraits intéressants de ma configuration, essentiellement 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")
1
Laurynas Biveinis

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

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

Les gens de Cygwin veulent vous guider vers leurs Emacs/XEmacs. Dans http://cygwin.com/faq/faq-nochunks.html#faq.using.ntemacs , ils écrivent "Notez que tout cela` `fonctionne juste '' si vous utilisez le port Cygwin d'Emacs ou XEmacs à partir de Cygwin Setup ".

Assurez-vous d'installer le paquet xemacs-sumo en plus de xemacs; sinon M-x Shell ne fonctionnera pas. Vous pouvez lancer xemacs sans utiliser X11 comme

DISPLAY= xemacs &

Inconvénients: 1) Boy, c'est un vieux Emacs. Je ne voulais pas vraiment continuer avec ça quand tout le monde utilise Emacs 23. 2) J'ai trouvé légèrement ennuyeux que l'installation nécessite un tas de bibliothèques 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) possède un programme d'installation en un clic, une commande M-x cygwin-Shell et le mode CUA. Mais la complétion des onglets dans le Cygwin Shell utilise des chemins Windows, ce qui m'a rendu 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échargez depuis http://ftp.gnu.org/pub/gnu/emacs/windows/ , décompressez et lancez depuis l'intérieur de Cygwin. Ensuite, il récupère le répertoire personnel, etc. Collez le mumbo-jumbo de http://cygwin.com/faq/faq-nochunks.html#faq.using.ntemacs dans ~/.emacs. Redémarrez Emacs et exécutez M-x Shell. Tout fonctionne comme prévu.

0
cayhorstmann

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

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

0
Drew

Construisez emacs à partir de la source:

- Télécharger la dernière version stable (24,5 au moment de la rédaction).

-Décompressez et cd dans le dossier emacs

-Exécutez ces étapes dans l'ordre:

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

-Copiez emacs.exe, à la main, du "dossier emacs"/src vers cygwin/bin

-Exécuter emacs:

$ emacs&

0
mihai