[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Execute code in use-package
From: |
Joe Riel |
Subject: |
Re: Execute code in use-package |
Date: |
Fri, 16 Dec 2016 11:50:47 -0800 |
On Fri, 16 Dec 2016 10:12:44 -0800
John Mastro <john.b.mastro@gmail.com> wrote:
> Joe Riel <joer@san.rr.com> wrote:
> > In my old .emacs file, I auto-load and run a command in
> > a package by doing
> >
> > (autoload 'mds "mds" "Restart the Maple Debugger server" t)
> > (mds) ; start the server
> >
> > Having converted to use-package, I wrote
> >
> > (use-package mds
> > :commands (mds)
> > ;; start the debugger server
> > :config (mds))
> >
> > Alas, that doesn't work. I have to manually execute the mds command
> > after launching emacs to start the server. I've read the documentation
> > for use-package, but cannot figure out how to properly do this.
>
> This should work:
>
> (use-package mds
> :config (mds))
>
> In other words, remove ":commands", which implicitly causes loading (and
> thus evaluation of the :config block) to be deferred.
>
> John
Alas, that doesn't work. The server does not start and now the mds command
is not assigned so I cannot manually start it.
What I found that does work is changing :config to :init, that is,
(use-package mds
:commands (mds)
:init (mds))
On reflection that might make sense. What confuses me is that :init runs
code before the package is loaded. However, I assume that :commands (mds)
ensures that mds is auto-loaded, so the call to (mds) then auto-loads and
runs mds.
--
Joe Riel