jwiegley / use-package

A use-package declaration for simplifying your .emacs
https://jwiegley.github.io/use-package
GNU General Public License v3.0
4.42k stars 261 forks source link

Emacs29: `use-package` does not recognize `pacakge-vc-install` declarations #1058

Closed zenny closed 1 year ago

zenny commented 1 year ago

Hi @jwiegley:

The vc-package-install has reportedly been merged (https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=2ce279680bf9c1964e98e2aa48a03d6675c386fe) to the Emacs 29 use-package post 20230516 (read https://github.com/slotThe/vc-use-package#installation, yet use-package does not recognize the package-vc-install related declarations.

To make things clear, when I set:

(use-package pdf-drop-mode
  :vc (:url "https://github.com/rougier/pdf-drop-mode"
            :rev :newest)
  :defer 1
  :config
  (pdf-drop-mode)

I get an output:

Debugger entered--Lisp error: (error "use-package: Unrecognized keyword: :vc")
  error("use-package: %s" "Unrecognized keyword: :vc")
  use-package-normalize-plist(pdf-drop-mode (:vc (:url "https://github.com/rougier/pdf-drop-mode" :rev :newest) :defer 1 :config (pdf-drop-mode) (setq pdf-drop-search-hook #'my/pdf-process)) nil use-package-merge-keys)
  use-package-normalize-keywords(pdf-drop-mode (:vc (:url "https://github.com/rougier/pdf-drop-mode" :rev :newest) :defer 1 :config (pdf-drop-mode) (setq pdf-drop-search-hook #'my/pdf-process)))
  #f(compiled-function (name &rest args) "Declare an Emacs package by specifying a group of configuration options.\n\nFor the full documentation, see Info node `(use-package) top'.\nUsage:\n\n  (use-package package-name\n     [:keyword [option]]...)\n\n:init            Code to run before PACKAGE-NAME has been loaded.\n:config          Code to run after PACKAGE-NAME has been loaded.  Note that\n                 if loading is deferred for any reason, this code does not\n                 execute until the lazy load has occurred.\n:preface         Code to be run before everything except `:disabled'; this\n                 can be used to define functions for use in `:if', or that\n                 should be seen by the byte-compiler.\n\n:mode            Form to be added to `auto-mode-alist'.\n:magic           Form to be added to `magic-mode-alist'.\n:magic-fallback  Form to be added to `magic-fallback-mode-alist'.\n:interpreter     Form to be added to `interpreter-mode-alist'.\n\n:commands        Define autoloads for commands that will be defined by the\n                 package.  This is useful if the package is being lazily\n                 loaded, and you wish to conditionally call functions in your\n                 `:init' block that are defined in the package.\n:autoload        Similar to :commands, but it for no-interactive one.\n:hook            Specify hook(s) to attach this package to.\n\n:bind            Bind keys, and define autoloads for the bound commands.\n:bind*           Bind keys, and define autoloads for the bound commands,\n                 *overriding all minor mode bindings*.\n:bind-keymap     Bind a key prefix to an auto-loaded keymap defined in the\n                 package.  This is like `:bind', but for keymaps.\n:bind-keymap*    Like `:bind-keymap', but overrides all minor mode bindings\n\n:defer           Defer loading of a package -- this is implied when using\n                 `:commands', `:bind', `:bind*', `:mode', `:magic', `:hook',\n                 `:magic-fallback', or `:interpreter'.  This can be an integer,\n                 to force loading after N seconds of idle time, if the package\n                 has not already been loaded.\n:demand          Prevent the automatic deferred loading introduced by constructs\n                 such as `:bind' (see `:defer' for the complete list).\n\n:after           Delay the effect of the use-package declaration\n                 until after the named libraries have loaded.\n                 Before they have been loaded, no other keyword\n                 has any effect at all, and once they have been\n                 loaded it is as if `:after' was not specified.\n\n:if EXPR         Initialize and load only if EXPR evaluates to a non-nil value.\n:disabled        The package is ignored completely if this keyword is present.\n:defines         Declare certain variables to silence the byte-compiler.\n:functions       Declare certain functions to silence the byte-compiler.\n:load-path       Add to the `load-path' before attempting to load the package.\n:diminish        Support for diminish.el (if installed).\n:delight         Support for delight.el (if installed).\n:custom          Call `Custom-set' or `set-default' with each variable\n                 definition without modifying the Emacs `custom-file'.\n                 (compare with `custom-set-variables').\n:custom-face     Call `custom-set-faces' with each face definition.\n:ensure          Loads the package using package.el if necessary.\n:pin             Pin the package to an archive." #<bytecode -0x11f420b90f391949>)(pdf-drop-mode :vc (:url "https://github.com/rougier/pdf-drop-mode" :rev :newest) :defer 1 :config (pdf-drop-mode) (setq pdf-drop-search-hook #'my/pdf-process))
  macroexpand((use-package pdf-drop-mode :vc (:url "https://github.com/rougier/pdf-drop-mode" :rev :newest) :defer 1 :config (pdf-drop-mode) (setq pdf-drop-search-hook #'my/pdf-process)))
  internal-macroexpand-for-load((use-package pdf-drop-mode :vc (:url "https://github.com/rougier/pdf-drop-mode" :rev :newest) :defer 1 :config (pdf-drop-mode) (setq pdf-drop-search-hook #'my/pdf-process)) nil)
  load-with-code-conversion("/home/zenny/.emacs.d/init.el" "/home/zenny/.emacs.d/init.el" t t)
  load("/home/zenny/.emacs.d/init" noerror nomessage)
  startup--load-user-init-file(#f(compiled-function () #<bytecode 0x1e2f66ca19426228>) #f(compiled-function () #<bytecode 0x11f57951606c6c69>) t)
  command-line()
  normal-top-level()

To make it work, I used the :fetcher and :repo declaration:

(use-package pdf-drop-mode
  :vc (:fetcher "github" :repo "rougier/pdf-drop-mode"
            :rev :newest)

which failed either with macro-expansion skipped due to cycle message:

internal-macroexpand-for-load: Eager macro-expansion skipped due to cycle:
  (load "init.el") => (macroexpand-all (use-package pdf-drop-mode …)) => (macroexpand (use-package …))
Mark set

Any clue to overcome the situation?

Cheers,

zenny commented 1 year ago

Oh, emacs IRC came to rescue. the vc-package-install was merged only to Emacs master (currently at 30.0.5), Thanks and Cheers,