alphapapa / bufler.el

A butler for your buffers. Group buffers into workspaces with programmable rules, and easily switch to and manipulate them.
GNU General Public License v3.0
452 stars 20 forks source link

helm-bufler: "--debug-init" causes "void-function helm-make-source" backtrace #31

Open cole-brown opened 4 years ago

cole-brown commented 4 years ago

With helm-bufler package installed, I get the below error early on in initialization.

The error only happens with '--debug-init'. If I call runemacs.exe without that flag, it starts fine.

Platform: Windows 7 and Windows 10 Version: GNU Emacs 26.3 (build 1, x86_64-w64-mingw32) of 2019-08-29 Helm: 20200506.729 Bufler: 20200409.1253 Helm-Bufler: 20200409.1253

Issue appeared when helm-bufler was split off from bufler - I did not have a problem with helm-bufler when it was part of the bufler package. Circa this commit's date: https://github.com/cole-brown/.emacs.d/commit/51cf9dd3aeab0e490bdee7444fc43b7a1196a543

Debugger entered--Lisp error: (void-function helm-make-source)
  (helm-make-source "Bufler's workspace buffers" (quote helm-source-sync) :header-name (function (lambda (_name) (concat "Bufler" (if current-prefix-arg nil (concat ": " (bufler-format-path (frame-parameter nil ...))))))) :candidates (function (lambda nil (let* ((bufler-vc-state nil) (group-path (if current-prefix-arg nil (if ... ... ...)))) (bufler-buffer-alist-at group-path)))) :action (cons (cons "Switch to buffer with Bufler" (quote helm-bufler-switch-buffer)) helm-type-buffer-actions))
  (defvar helm-bufler-source (helm-make-source "Bufler's workspace buffers" (quote helm-source-sync) :header-name (function (lambda (_name) (concat "Bufler" (if current-prefix-arg nil (concat ": " (bufler-format-path ...)))))) :candidates (function (lambda nil (let* ((bufler-vc-state nil) (group-path (if current-prefix-arg nil ...))) (bufler-buffer-alist-at group-path)))) :action (cons (cons "Switch to buffer with Bufler" (quote helm-bufler-switch-buffer)) helm-type-buffer-actions)) "Helm source for `bufler'.")
  eval-buffer(#<buffer  *load*-623938> nil "c:/home/cole/.emacs.d/packages/elpa/helm-bufler-20200409.1253/helm-bufler-autoloads.el" nil t)  ; Reading at buffer position 981
  load-with-code-conversion("c:/home/cole/.emacs.d/packages/elpa/helm-bufler-20200409.1253/helm-bufler-autoloads.el" "c:/home/cole/.emacs.d/packages/elpa/helm-bufler-20200409.1253/helm-bufler-autoloads.el" nil t)
  load("c:/home/cole/.emacs.d/packages/elpa/helm-bufler-20200409.1253/helm-bufler-autoloads" nil t)
  package--activate-autoloads-and-load-path(#s(package-desc :name helm-bufler :version (20200409 1253) :summary "Helm source for Bufler" :reqs ((emacs (26 3)) (bufler (0 2 -1)) (helm (1 9 4))) :kind nil :archive nil :dir "c:/home/cole/.emacs.d/packages/elpa/helm-bufler-20200409.1253" :extras ((:url . "https://github.com/alphapapa/bufler.el") (:maintainer "Adam Porter" . "adam@alphapapa.net") (:authors ("Adam Porter" . "adam@alphapapa.net")) (:keywords "convenience") (:commit . "b2b260e4f9e8ba76bb8b4d71344c7b75e05ac44f")) :signed nil))
  package--load-files-for-activation(#s(package-desc :name helm-bufler :version (20200409 1253) :summary "Helm source for Bufler" :reqs ((emacs (26 3)) (bufler (0 2 -1)) (helm (1 9 4))) :kind nil :archive nil :dir "c:/home/cole/.emacs.d/packages/elpa/helm-bufler-20200409.1253" :extras ((:url . "https://github.com/alphapapa/bufler.el") (:maintainer "Adam Porter" . "adam@alphapapa.net") (:authors ("Adam Porter" . "adam@alphapapa.net")) (:keywords "convenience") (:commit . "b2b260e4f9e8ba76bb8b4d71344c7b75e05ac44f")) :signed nil) nil)
  package-activate-1(#s(package-desc :name helm-bufler :version (20200409 1253) :summary "Helm source for Bufler" :reqs ((emacs (26 3)) (bufler (0 2 -1)) (helm (1 9 4))) :kind nil :archive nil :dir "c:/home/cole/.emacs.d/packages/elpa/helm-bufler-20200409.1253" :extras ((:url . "https://github.com/alphapapa/bufler.el") (:maintainer "Adam Porter" . "adam@alphapapa.net") (:authors ("Adam Porter" . "adam@alphapapa.net")) (:keywords "convenience") (:commit . "b2b260e4f9e8ba76bb8b4d71344c7b75e05ac44f")) :signed nil) nil deps)
  package-activate(helm-bufler)
  package-initialize()
  eval-buffer(#<buffer  *load*-808373> nil "c:/home/cole/.emacs.d/personal/init/boot/bootstrap-package.el" nil t)  ; Reading at buffer position 4011
  load-with-code-conversion("c:/home/cole/.emacs.d/personal/init/boot/bootstrap-package.el" "c:/home/cole/.emacs.d/personal/init/boot/bootstrap-package.el" nil t)
  require(bootstrap-package nil nil)
  (prog1 (require symbol filename noerror) (if (null filename) (progn (let* ((require-name (symbol-name symbol)) (secret-name (format spydez/require/piggyback-format require-name)) (secret-symbol (intern secret-name)) (time-start-secret (current-time))) (if (locate-library secret-name) (progn (mis/init/sequence (mis/init/get-indent ... spydez/require/recursion-level) nil "(require '%s)" secret-symbol) (require secret-symbol nil (quote noerror)) (mis/init/sequence (mis/init/get-indent ... spydez/require/recursion-level) (quote left) "(require '%s)...done (%s)" secret-symbol (format "%.3f seconds" ...))))))) (mis/init/sequence (mis/init/get-indent (quote require) (1- spydez/require/recursion-level)) (quote left) "(require '%s)...done (%s)" symbol (format "%.3f seconds" (float-time (time-subtract (current-time) time-start)))))
  (let ((spydez/require/recursion-level (1+ spydez/require/recursion-level))) (prog1 (require symbol filename noerror) (if (null filename) (progn (let* ((require-name (symbol-name symbol)) (secret-name (format spydez/require/piggyback-format require-name)) (secret-symbol (intern secret-name)) (time-start-secret (current-time))) (if (locate-library secret-name) (progn (mis/init/sequence ... nil "(require '%s)" secret-symbol) (require secret-symbol nil ...) (mis/init/sequence ... ... "(require '%s)...done (%s)" secret-symbol ...)))))) (mis/init/sequence (mis/init/get-indent (quote require) (1- spydez/require/recursion-level)) (quote left) "(require '%s)...done (%s)" symbol (format "%.3f seconds" (float-time (time-subtract (current-time) time-start))))))
  (let ((time-start (current-time))) (mis/init/sequence (mis/init/get-indent (quote require) spydez/require/recursion-level) nil "(require '%s)" symbol) (let ((spydez/require/recursion-level (1+ spydez/require/recursion-level))) (prog1 (require symbol filename noerror) (if (null filename) (progn (let* ((require-name ...) (secret-name ...) (secret-symbol ...) (time-start-secret ...)) (if (locate-library secret-name) (progn ... ... ...))))) (mis/init/sequence (mis/init/get-indent (quote require) (1- spydez/require/recursion-level)) (quote left) "(require '%s)...done (%s)" symbol (format "%.3f seconds" (float-time (time-subtract (current-time) time-start)))))))
  spydez/require(bootstrap-package)
  eval-buffer(#<buffer  *load*> nil "c:/home/cole/.emacs.d/init.el" nil t)  ; Reading at buffer position 23097
  load-with-code-conversion("c:/home/cole/.emacs.d/init.el" "c:/home/cole/.emacs.d/init.el" t t)
  load("c:/home/cole/.emacs.d/init" t t)
  #f(compiled-function () #<bytecode 0x1000baab9>)()
  command-line()
  normal-top-level()
alphapapa commented 4 years ago

Thanks. I should probably remove the autoload for the source variable.

MagicRB commented 3 years ago

I'm having this issue too, for me emacs doesn't load properly even without --debug-init

dreddymon commented 3 years ago

I had the same issue. Initially I tried to wrap the autoload code in an eval-after-load construct.

+BEGIN_SRC emacs-lisp :noweb-ref helm-bufler-trial1

;;;###autoload (eval-after-load 'helm-types (quote (defvar helm-bufler-source (helm-make-source "Bufler's workspace buffers" 'helm-source-sync...

+END_SRC

The library ~helm-types~ defines ~helm-type-buffer-actions~ and requires ~helm-source~ which defines ~helm-make-source~. That left me having to manually load ~helm-types~ since ~helm~ does not load it out of the box. The initial autoload errors stopped, but the errors would return if ~bufler~ is not loaded when I called this code.

+BEGIN_SRC emacs-lisp :noweb-ref helm-bufler-trial1-test1

(helm :sources '(helm-bufler-source))

+END_SRC

Ultimately, ~helm-bufler~ loads all of the libraries it needs, so I made this the autoload for ~helm-bufler~ on my system.

+BEGIN_SRC emacs-lisp :noweb-ref helm-bufler-trial2 :tangle my-helm-bufler.el

;;;###autoload (eval-after-load 'bufler '(and (featurep 'helm) (or (featurep 'helm-bufler) (require 'helm-bufler)))) ;;;###autoload (eval-after-load 'helm '(and (featurep 'bufler) (or (featurep 'helm-bufler) (require 'helm-bufler))))

+END_SRC

This loads ~helm-bufler~ whenever I have ~helm~ and ~bufler~ loaded.