Как заставить emacs Режим архивирования zip работать над Windows

Я расширяю свой комментарий.

Юникод не является кодировкой. Нет смысла иметь размер для кодовой точки Unicode. Unicode - это отображение между кодовой точкой и семантическим именем (например, «LATIN CAPITAL LETTER A»). Вы можете выбрать свою собственную кодировку.

Изначально Unicode хотел быть универсальным кодированием, которое бы вписывалось в 16-битный формат (то есть Unification Японский / Китайский) Как видите, это не удалось на этой цели. И второй момент (очень важный) - возможность конвертировать в Unicode и обратно без потери данных (это упрощает конвертацию в Unicode: по одному инструменту за раз, на любом слое).

Итак, возникла проблема с тем, как расширить Unicode для поддержки более чем 16-разрядных, но в то же время, чтобы не сломать все программы Unicode. Идея заключалась в том, чтобы использовать суррогаты, чтобы программы, которые просто знают о 16-битном Unicode (UCS-2), все еще могли работать (и BTW python2, а Javascript знают только UCS-2, и они все еще работают хорошо. Язык не должен знать что кодовые точки Unicode могут иметь более 16 битов.

Суррогаты дают верхний предел фактического Unicode (поэтому не равны степени 2).

Позже он был разработан UTF-8. характеристика (по конструкции): совместимость с ASCII (для 7-битных символов), кодирование всех кодовых точек (также> 16-битных) и возможность перехода в случайную позицию и быстрой синхронизации в месте начала символа. некоторого адресного пространства, поэтому текст не такой плотный, как может быть, но он гораздо более практичен (и быстро "прокручивает" файлы). Эти дополнительные данные (для синхронизации) сделали невозможным кодирование всех новых кодовых точек Unicode в 3 байтов, с UTF-8.

Вы можете использовать UTF-24 (см. комментарий), но вы потеряете преимущество UFT-8, чтобы быть совместимым с ASCII, но также и с UTF-16 у вас часто есть всего 2 байта (а не 4).

Помните: кодовая точка Unicode выше 16 бит более редкая: древние языки, лучшее представление (семантическая) существующих символов или новые эмоджи (который, мы надеемся, не заполняет весь длинный текст только смайликами). Таким образом, утилита из 3 байтов (пока) не нужна. Возможно, если инопланетяне придут на Землю, и нам следует писать с их новыми языковыми символами, мы будем использовать в основном кодовую точку Unicode выше 16 бит. Думаю, не скоро это случится.

6
задан Cheeso 16 May 2009 в 14:15
поделиться

2 ответа

EMACS uses an external program to do the compression/uncompression. All it needs is to know the right program to use.


Some extended discussion:

As I say, i've got no Windows box, but the LISP code is in arc-mode.el at about line 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)

Observe the function executable-find. It searches in your EMACS exec-path, which includes some EMACS executable directories that aren't in your normal PATH variable. In my case, it's:

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

which includes the two directories inside the EMACS package. Your Windows installation will include equivalent directories somewhere down in the guts of the EMACS setup. That's where to look for the executables if they're not in your regular path.

You can download pkunzip from this site, install it, and add the path to the installation with (add-to-list 'exec-path "c:/path/to/pkunzip")

7
ответ дан 10 December 2019 в 00:44
поделиться

How emacs handles compressed files can be a little confusing, but here is an attempt to summarise the situation. There are two main compression packages: arc-mode (e.g. zip-archive mode) and jka-compr mode (auto-compression-mode).

  1. arc-mode: will display the table-of-contents (i.e. simple list of filenames contained within the archive) of multi-file archives (arc, lzh, zip, zoo) without requiring the relevant third-party tool to exist on your system. If you actually want to do any viewing/editing of the actual files contained within the archive using arc-mode you will definitely need the third-party tool to be installed on your system and in the appropriate location. E.g. for zip files it defaults to zip/unzip in the exec-path (which is the operating systems PATH environment). This can be customised using archive-zip-extract and archive-zip-expunge.
  2. jka-compr (auto-compression-mode): will automatically compress/uncompress single file archives (gz, Z, bz2, tbz, etc) and requires the relevant third-party tool to exist on your system.

So to get zip-archive mode fully working on Windows you will just need to find a windows version of command-line zip/unzip and put them into a directory that is in your PATH (e.g. see unzip package at http://gnuwin32.sourceforge.net/).

2
ответ дан 10 December 2019 в 00:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: