Anyway, I looked into the matter and did a little poking about to see what setup would do the trick. In the case of Firefox and Opera, it's really easy, as the xpi and oex "formats" only amount to changing the filename extension and making sure you have the right files in there -- so all you have to do is make sure that
("\\.xpi\\'" . archive-mode)
exists in your auto-mode-alist
, and ("\\.xpi\\'" . no-conversion)
in your auto-coding-alist
(there is a little snippet for your .emacs
at the end of this post), and the corresponding oex variant.In the Chrome case (which prepends a Chrome header with a format version, an RSA public key and signature from the extension author), besides the corresponding crx change for same variables, I also had to patch the
lisp/arc-mode.el
file lightly:If you try loading a crx and find it already works, someone upstream already applied the same or a better patch than mine to your installation, but otherwise, read on. To find where it is on your system, type
C-h archive-mode <return>
and follow the archive-mode is a compiled Lisp function in `arc-mode.el'.
link, apply the patch and M-x byte-compile-file
the result again.The
.emacs
snippet that makes it all kick in automagically:Note that for the Chrome extension case, you won't be able to edit and save any of the contents in place, as you can with plain zip (xpi, oex) files; the magic to remove/re-add public keys and signatures will be somebody else's late Saturday hack to complete. :) Enjoy!