2009-05-16 20 views

Trả lời

7

EMACS sử dụng chương trình bên ngoài để thực hiện nén/giải nén. Tất cả những gì cần là biết chương trình phù hợp để sử dụng.


Một số cuộc thảo luận mở rộng:

Như tôi đã nói, tôi đã không có hộp Windows, nhưng mã LISP là trong arc-mode.el khoảng dòng 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) 

Quan sát hàm executable-find. Nó tìm kiếm trong EMACS exec-path của bạn, bao gồm một số thư mục thực thi EMACS không có trong biến PATH bình thường của bạn. Trong trường hợp của tôi, đó là:

("/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") 

bao gồm hai thư mục bên trong gói EMACS. Cài đặt Windows của bạn sẽ bao gồm các thư mục tương đương ở đâu đó trong phần ruột của thiết lập EMACS. Đó là nơi để tìm kiếm các tập tin thực thi nếu chúng không nằm trong đường dẫn thông thường của bạn.

Bạn có thể tải pkunzip từ this site, cài đặt nó, và thêm đường dẫn đến việc cài đặt với (add-to-list 'exec-path "c:/path/to/pkunzip")

+0

Quan sát tốt nhưng không đúng. Trên Emacs 22 của tôi trên Windows XP, trình duyệt zip hoạt động nguyên bản ngay cả sau khi tôi nhận xét ra những dòng đã thêm thùng Cygwin của tôi vào PATH. Kiểm tra nhanh với lệnh-shell cũng cho thấy không có zip/giải nén thực thi nằm trong PATH của tôi một nơi nào đó. – polyglot

+0

Tôi đã kiểm tra đường dẫn exec của mình và không giải nén trong đó (mặc dù lưu trữ-zip-extract được đặt thành giải nén). Tôi không rõ làm thế nào nó hoạt động ... –

+0

Hãy thử một kho lưu trữ-zip-H V-zip-giải nén và xem kết quả là gì. –

2

Làm thế nào emacs xử lý các tập tin nén có thể là một chút bối rối, nhưng đây là một nỗ lực để tóm tắt tình hình. Có hai gói nén chính: arc-mode (ví dụ: chế độ zip-archive) và chế độ jka-compr (auto-compression-mode).

  1. arc-mode: sẽ hiển thị table-of-nội dung (danh sách ví dụ đơn giản của tên tập tin chứa trong các kho lưu trữ) của tài liệu lưu trữ nhiều tập tin (arc, LZH, zip, sở thú) mà không yêu cầu có liên quan của bên thứ ba công cụ tồn tại trên hệ thống của bạn. Nếu bạn thực sự muốn thực hiện bất kỳ xem/chỉnh sửa nào của các tệp thực có trong kho lưu trữ bằng chế độ vòng cung, bạn chắc chắn sẽ cần công cụ của bên thứ ba được cài đặt trên hệ thống của bạn và ở vị trí thích hợp. Ví dụ. cho các tệp zip, nó mặc định là zip/unzip trong exec-path (đó là môi trường PATH của hệ điều hành). Điều này có thể được tùy chỉnh bằng cách sử dụng archive-zip-extractarchive-zip-expunge.
  2. jka-compr (auto-compression-mode): sẽ tự động nén/giải nén lưu trữ tệp duy nhất (gz, Z, bz2, tbz, v.v.) và yêu cầu công cụ bên thứ ba có liên quan tồn tại trên hệ thống của bạn.

Vì vậy, để có được zip-archive chế độ đầy đủ làm việc trên Windows, bạn sẽ chỉ cần phải tìm một phiên bản cửa sổ của dòng lệnh zip/giải nén và đặt chúng vào một thư mục đó là trong PATH của bạn (ví dụ như nhìn thấy gói giải nén tại http://gnuwin32.sourceforge.net/) .

+0

chờ, bạn đang nói chế độ vòng cung có hoạt động hay không, yêu cầu các công cụ của bên thứ ba? Tôi không rõ? Mẫu sử dụng mong muốn của tôi là một dired, then và key (f) trên một tập tin zip để mở nó. – Cheeso

+0

arc-mode cần các công cụ của bên thứ ba để làm bất cứ điều gì hữu ích (ngoại trừ việc nó có thể hiển thị tên tập tin chứa trong một zipfile mà không có chúng). Vì vậy, bạn chỉ cần đặt một zip/giải nén của bên thứ ba trong đường dẫn của bạn để lấy mẫu sử dụng của bạn. – luapyad

Các vấn đề liên quan