2009-05-16 5 views

Répondre

7

EMACS utilise un programme externe pour effectuer la compression/décompression. Tout ce dont il a besoin est de connaître le bon programme à utiliser.


Une discussion élargie:

Comme je le dis, je n'ai pas boîte de Windows, mais le code LISP est en arc-mode.el vers la ligne 230:

(defcustom archive-zip-extract 
    (if (and (not (executable-find "unzip")) 
      (executable-find "pkunzip")) 
     '("pkunzip" "-e" "-o-") 
    '("unzip" "-qq" "-c")) 
    "*Program and its options to run in order to extract a zip file member. 
Extraction should happen to standard output. Archive and member name will 
be added." 
    :type '(list (string :tag "Program") 
     (repeat :tag "Options" 
      :inline t 
      (string :format "%v"))) 
    :group 'archive-zip) 

Observez la fonction executable-find. Il recherche dans votre EMACS exec-path, qui inclut certains répertoires exécutables EMACS qui ne figurent pas dans votre variable PATH normale. Dans mon cas, c'est:

("/usr/bin" 
"/bin" 
"/usr/sbin" 
"/sbin" 
"/Applications/Emacs.app/Contents/MacOS/libexec" 
"/Applications/Emacs.app/Contents/MacOS/bin" 
"~/bin" 
"/usr/local/bin" 
"/usr/X11R6/bin") 

qui inclut les deux répertoires dans le paquet EMACS. Votre installation Windows inclura des répertoires équivalents quelque part dans les tripes de l'installation EMACS. Voilà où chercher les exécutables s'ils ne sont pas dans votre chemin habituel.

Vous pouvez télécharger à partir pkunzip this site, installer et ajouter le chemin à l'installation avec (add-to-list 'exec-path "c:/path/to/pkunzip")

+0

Hmm bonne observation mais pas vrai. Sur mon Emacs 22 sous Windows XP, la navigation par zip fonctionne de manière native même après avoir mis en commentaire les lignes qui ont ajouté ma corbeille cygwin à PATH. Une vérification rapide avec command-shell montre également qu'il n'y a pas d'exécutable zip/unzip dans mon PATH quelque part. – polyglot

+0

J'ai vérifié mon exec-path, et il n'y a pas de décompression (même si archive-zip-extract est défini sur unzip). Je ne sais pas comment cela fonctionne ... –

+0

Essayez un Ctrl-H V archive-zip-extrait et voir ce que le résultat est. –

2

Comment emacs gère les fichiers compressés peuvent être un peu déroutant, mais voici une tentative de résumer la situation. Il existe deux paquets de compression principaux: arc-mode (mode zip-archive par exemple) et le mode jka-compr (auto-compression-mode).

  1. arc-mode: affiche la table des matières (liste-à-dire simple des noms de fichiers contenus dans l'archive) des archives multi-fichiers (arc, LZH, zip, zoo) sans exiger le tiers concerné outil pour exister sur votre système. Si vous voulez réellement faire voir/éditer des fichiers réels contenus dans l'archive en utilisant le mode arc, vous aurez certainement besoin de l'outil tiers à installer sur votre système et à l'emplacement approprié. Par exemple. pour les fichiers zip, il est par défaut de zip/décompresser dans le exec-path (qui est l'environnement PATH des systèmes d'exploitation). Cela peut être personnalisé en utilisant archive-zip-extract et archive-zip-expunge.
  2. jka-compr (auto-compression-mode): compressera/décompresse automatiquement les archives de fichiers uniques (gz, Z, bz2, tbz, etc.) et nécessite l'existence de l'outil tiers correspondant sur votre système.

Donc, pour obtenir le mode zip-archive entièrement fonctionnel sous Windows, vous aurez juste besoin de trouver une version windows de zip de ligne de commande/dézipper et les mettre dans un répertoire qui est dans votre PATH (voir par exemple package Décompressez à http://gnuwin32.sourceforge.net/) .

+0

Attendez, voulez-vous dire que le mode arc nécessite ou non les outils tiers? Je ne suis pas clair? Mon modèle d'utilisation souhaité est un dired, puis et la clé (f) sur un fichier zip pour l'ouvrir. – Cheeso

+0

arc-mode a besoin des outils tiers pour faire quelque chose d'utile (sauf qu'il peut afficher les noms de fichiers contenus dans un fichier zip sans eux). Il vous suffit donc de mettre un zip/unzip tiers sur votre chemin pour obtenir votre schéma d'utilisation. – luapyad

Questions connexes