它们实际上都是zip文件。我可以直接从 dired 预览 jar 文件,但不能预览 jmod 文件。
从 dired 打开 jar 文件后,我可以像这样查看 jar 文件。
我尝试将
jmod
添加到 dired-compress-file-suffixes
,但不起作用。
(add-to-list 'dired-compress-file-suffixes '("\\.jmod\\'" "" "unzip -o -d %o %i"))
顺便说一句,
jar
也不在dired-compress-file-suffixes
中。
编辑:经过更多讨论(参见评论),我们确定:
*.jmod
文件是与 *.jar
文件(略有)不同的文件格式,因为开头的魔术字符是 JM
与 jar 文件(以及更常见的 zip 文件)中使用的 PK
。
如果不是这样,下面建议的配置更改实际上是不必要的,因为
magic-fallback-mode-alist
中的 zip 文件检测会处理它们。
事实上,不仅需要告诉 Emacs 这些是存档,还需要修改
archive-find-type
函数来识别它们是什么 kind 的存档,因为该函数目前仅识别基于 PK
的存档zip 文件格式。
原答案如下...
默认的
auto-mode-alist
包含以下 archive-mode
条目,以及与 .jar
文件匹配的正则表达式:
("\\.\\(arc\\|zip\\|lzh\\|lha\\|zoo\\|[jew]ar\\|xpi\\|rar\\|cbr\\|7z\\|squashfs\\|ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\|RAR\\|CBR\\|7Z\\|SQUASHFS\\)\\'" . archive-mode)
该默认值的代码注释还说:
;; The list of archive file extensions should be in sync with
;; `auto-coding-alist' with `no-conversion' coding system.
因此这应该可以解决问题:
(add-to-list 'auto-mode-alist '("\\.jmod\\'" . archive-mode))
(add-to-list 'auto-coding-alist '("\\.jmod\\'" . no-conversion))