2

I recently learned that some former MELPA libraries are now available only from the EmacsWiki.

Let aside security implications,

Is there an equivalent of M-x package-list-packages for those libraries?
Is there an equivalent of (use-package foo), which I could put in my init file?
Any best practice suggested to deal with EmacsWiki libraries?

2 Answers 2

5

Is there an equivalent of M-x package-list-packages for those libraries?

The el-get package manager supports installation from the EmacsWiki; after doing M-x el-get-emacswiki-build-local-recipes, M-x el-get-list-packages will show packages from EmacsWiki as well.

Is there an equivalent of (use-package foo), which I could put in my init file?

(el-get-bundle foo) would be approximately equivalent.

7
  • 1
    +1. Good to know. I didn't realize that el-get works with Emacs-Wiki libraries also.
    – Drew
    Commented Jun 2, 2019 at 14:22
  • I tried to add to my init (use-package el-get :config (el-get-emacswiki-build-local-recipes)) (el-get-bundle dired+). However, el-get-bundle raises an error, when generating autoloads and byte-compiling the autoload file, because dired-omit-files is void. A hack would be to (setq dired-omit-files nil), but clearly there should be a proper way.
    – antonio
    Commented Jun 3, 2019 at 7:55
  • @antonio oh, you have to load el-get before using el-get-bundle (because it's a macro), you can't start using it in the same statement that you load it. Maybe try (el-get nil 'dired+) instead. And el-get-emacswiki-build-local-recipes takes a long time, you probably don't want to run it every time you startup.
    – npostavs
    Commented Jun 3, 2019 at 11:47
  • As regards (el-get-emacswiki-build-local-recipes), use-package :config is clever enough to run it only the first time. Still (el-get nil 'dired+) gives error in process sentinel: Symbol’s value as variable is void: dired-omit-files. The mentioned variable is part part of dired (not dired+), which is not loaded by el-get. Byte-compiling dired+ works, so the problem is in the way el-get installs dired+.
    – antonio
    Commented Jun 3, 2019 at 14:03
  • @antonio oh, I misread the error in your first comment. I think it's due to dired+ misusing ;;;###autoload. You can work around it with (add-to-list 'el-get-sources '(:name dired+ :autoloads nil)) before the (el-get nil 'dired+) call, or using el-get-bundle: (el-get-bundle dired+ :autoloads nil).
    – npostavs
    Commented Jun 3, 2019 at 20:48
1
  1. No. As far as I know, there is no equivalent of package-list-packages or use-package for libraries uploaded to the Emacs Wiki Elisp Area. In general, you download the file(s) for a library to a local directory that is in your load-path, and then require the library feature name or main-file name (e.g. (require 'isearch+).

  2. Questions about things such as best practice are off-topic on emacs.SE, as they are generally primarily opinion-based or too broad. Questions here should be specific and call for specific answers.

  3. Anyone can upload code to Emacs Wiki. As a result, the code there is variable in what it does, how it does it, and perhaps how well it does it. As is true in general elsewhere, it's a good idea to take a look at code you download before using it, and preferably take a look at any associated doc there may be for it.

3
  • Please consider moving your comment to @npostavs's answer about elget. My answer only speaks about downloading libraries to a local directory that you add to your load-path, and then require-ing those libraries. Doing that, I think you will encounter no such problem.
    – Drew
    Commented Jun 3, 2019 at 3:40
  • Hey, @Drew, as you are the author of by far the largest number of useful libraries on EmacsWiki (thank you!), can you explain why you choose that as your publishing mechanism? Commented Jun 4, 2019 at 23:14
  • @PhilHudson: Laziness. See reddit.com/r/emacs/comments/7vocqa/….
    – Drew
    Commented Jun 4, 2019 at 23:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.