bmag / emacs-purpose

Manage Windows and Buffers According to Purposes
GNU General Public License v3.0
496 stars 23 forks source link

Recursive Load error #158

Closed nixmaniack closed 4 years ago

nixmaniack commented 4 years ago

Description :octocat:

Recently, I have started getting "Recursive Load" error when using emacs-purpose in spacemacs. Do you have any idea what is going on here? How can I debug this? I've attached a backtrace and system info with this issues.

Reproduction guide :beetle:

Observed behaviour: :eyes: :broken_heart: As soon as the following error is displayed after startup, emacs becomes unusable.

eieio--full-class-object: Recursive load: "/home/nixmaniack/.emacs.d/elpa/27.0/develop/window-purpose-20190628.1827/window-purpose-configuration.el", "/home/nixmaniack/.emacs.d/elpa/27.0/develop/window-purpose-20190628.1827/window-purpose-configuration.el", "/home/nixmaniack/.emacs.d/elpa/27.0/develop/window-purpose-20190628.1827/window-purpose-configuration.el", "/home/nixmaniack/.emacs.d/elpa/27.0/develop/window-purpose-20190628.1827/window-purpose-configuration.el", "/home/nixmaniack/.emacs.d/elpa/27.0/develop/window-purpose-20190628.1827/window-purpose-configuration.el", "/home/nixmaniack/.emacs.d/elpa/27.0/develop/window-purpose-20190628.1827/window-purpose.el" [2 times]

Interestingly enough, if I delete the emacs-purpose package and restart emacs, it downloads the package and works fine in that session. But, as soon as I restart emacs again, the issue pops up again.

Excluding emacs-purpose makes emacs usable again.

Expected behaviour: :heart: :smile: No "Recursive Load" errors!

System Info :computer:

Backtrace :paw_prints:

Debugger entered--Lisp error: (error "Recursive load" "/home/nixmaniack/.emacs.d/elpa/27.0/develop/window-pur..." "/home/nixmaniack/.emacs.d/elpa/27.0/develop/window-pur..." "/home/nixmaniack/.emacs.d/elpa/27.0/develop/window-pur..." "/home/nixmaniack/.emacs.d/elpa/27.0/develop/window-pur..." "/home/nixmaniack/.emacs.d/elpa/27.0/develop/window-pur..." "/home/nixmaniack/.emacs.d/elpa/27.0/develop/window-pur...")
  autoload-do-load((autoload "window-purpose-configuration" nil nil nil))
  eieio--full-class-object(#s(eieio--class :name purpose-conf :docstring nil :parents nil :slots [#s(cl-slot-descriptor :name mode-purposes :initform 'nil :type purpose-mode-alist :props nil) #s(cl-slot-descriptor :name name-purposes :initform 'nil :type purpose-name-alist :props nil) #s(cl-slot-descriptor :name regexp-purposes :initform 'nil :type purpose-regexp-alist :props nil)] :index-table #<hash-table eq 3/65 0x2f03469> :children nil :initarg-tuples ((:mode-purposes . mode-purposes) (:name-purposes . name-purposes) (:regexp-purposes . regexp-purposes)) :class-slots [] :class-allocation-values [] :default-object-cache nil :options (:custom-groups nil)))
  child-of-class-p(#s(eieio--class :name purpose-conf :docstring nil :parents nil :slots [#s(cl-slot-descriptor :name mode-purposes :initform 'nil :type purpose-mode-alist :props nil) #s(cl-slot-descriptor :name name-purposes :initform 'nil :type purpose-name-alist :props nil) #s(cl-slot-descriptor :name regexp-purposes :initform 'nil :type purpose-regexp-alist :props nil)] :index-table #<hash-table eq 3/65 0x2f03469> :children nil :initarg-tuples ((:mode-purposes . mode-purposes) (:name-purposes . name-purposes) (:regexp-purposes . regexp-purposes)) :class-slots [] :class-allocation-values [] :default-object-cache nil :options (:custom-groups nil)) closql-object)
  object-of-class-p(
  closql-object--eieio-childp(
  (if (closql-object--eieio-childp obj) (closql-oset obj slot value) (funcall fn obj slot value))
  eieio-oset--closql-oset(#f(compiled-function (obj slot value) "Do the work for the macro `oset'.\nFills in OBJ's SLOT with VALUE." #<bytecode 0x780ea9>) 
  apply(eieio-oset--closql-oset #f(compiled-function (obj slot value) "Do the work for the macro `oset'.\nFills in OBJ's SLOT with VALUE." #<bytecode 0x780ea9>) (
  eieio-oset(
  eieio-set-defaults(
  #f(compiled-function (cname superclasses slots options) "Define CNAME as a new subclass of SUPERCLASSES.\nSLOTS are the slots residing in that class definition, and OPTIONS\nholds the class options.\nSee `defclass' for more information." #<bytecode 0x7805d1>)(purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil)
  apply(#f(compiled-function (cname superclasses slots options) "Define CNAME as a new subclass of SUPERCLASSES.\nSLOTS are the slots residing in that class definition, and OPTIONS\nholds the class options.\nSee `defclass' for more information." #<bytecode 0x7805d1>) (purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil))
  eieio-defclass-internal(purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil)
  byte-code("\300\301!\210\300\302!\210\300\303!\210\304\305\306\307!\"\210\304\310\311\307!\"\210\304\312\310\"\210\313\312\314\315#\210\316\307\317\310#\320\307\321\322\321$\207" [require cl-lib eieio window-purpose-utils defalias purpose-conf-p eieio-make-class-predicate purpose-conf purpose-conf--eieio-childp eieio-make-child-predicate purpose-conf-child-p make-obsolete "use (cl-typep ... \\='purpose-conf) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist))] 6)
  autoload-do-load((autoload "window-purpose-configuration" nil nil nil))
  eieio--full-class-object(#s(eieio--class :name purpose-conf :docstring nil :parents nil :slots [#s(cl-slot-descriptor :name mode-purposes :initform 'nil :type purpose-mode-alist :props nil) #s(cl-slot-descriptor :name name-purposes :initform 'nil :type purpose-name-alist :props nil) #s(cl-slot-descriptor :name regexp-purposes :initform 'nil :type purpose-regexp-alist :props nil)] :index-table #<hash-table eq 3/65 0x2f03469> :children nil :initarg-tuples ((:mode-purposes . mode-purposes) (:name-purposes . name-purposes) (:regexp-purposes . regexp-purposes)) :class-slots [] :class-allocation-values [] :default-object-cache nil :options (:custom-groups nil)))
  child-of-class-p(#s(eieio--class :name purpose-conf :docstring nil :parents nil :slots [#s(cl-slot-descriptor :name mode-purposes :initform 'nil :type purpose-mode-alist :props nil) #s(cl-slot-descriptor :name name-purposes :initform 'nil :type purpose-name-alist :props nil) #s(cl-slot-descriptor :name regexp-purposes :initform 'nil :type purpose-regexp-alist :props nil)] :index-table #<hash-table eq 3/65 0x2f03469> :children nil :initarg-tuples ((:mode-purposes . mode-purposes) (:name-purposes . name-purposes) (:regexp-purposes . regexp-purposes)) :class-slots [] :class-allocation-values [] :default-object-cache nil :options (:custom-groups nil)) closql-object)
  object-of-class-p(
  closql-object--eieio-childp(
  (if (closql-object--eieio-childp obj) (closql-oset obj slot value) (funcall fn obj slot value))
  eieio-oset--closql-oset(#f(compiled-function (obj slot value) "Do the work for the macro `oset'.\nFills in OBJ's SLOT with VALUE." #<bytecode 0x780ea9>) 
  apply(eieio-oset--closql-oset #f(compiled-function (obj slot value) "Do the work for the macro `oset'.\nFills in OBJ's SLOT with VALUE." #<bytecode 0x780ea9>) (
  eieio-oset(
  eieio-set-defaults(
  #f(compiled-function (cname superclasses slots options) "Define CNAME as a new subclass of SUPERCLASSES.\nSLOTS are the slots residing in that class definition, and OPTIONS\nholds the class options.\nSee `defclass' for more information." #<bytecode 0x7805d1>)(purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil)
  apply(#f(compiled-function (cname superclasses slots options) "Define CNAME as a new subclass of SUPERCLASSES.\nSLOTS are the slots residing in that class definition, and OPTIONS\nholds the class options.\nSee `defclass' for more information." #<bytecode 0x7805d1>) (purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil))
  eieio-defclass-internal(purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil)
  byte-code("\300\301!\210\300\302!\210\300\303!\210\304\305\306\307!\"\210\304\310\311\307!\"\210\304\312\310\"\210\313\312\314\315#\210\316\307\317\310#\320\307\321\322\321$\207" [require cl-lib eieio window-purpose-utils defalias purpose-conf-p eieio-make-class-predicate purpose-conf purpose-conf--eieio-childp eieio-make-child-predicate purpose-conf-child-p make-obsolete "use (cl-typep ... \\='purpose-conf) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist))] 6)
  autoload-do-load((autoload "window-purpose-configuration" nil nil nil))
  eieio--full-class-object(#s(eieio--class :name purpose-conf :docstring nil :parents nil :slots [#s(cl-slot-descriptor :name mode-purposes :initform 'nil :type purpose-mode-alist :props nil) #s(cl-slot-descriptor :name name-purposes :initform 'nil :type purpose-name-alist :props nil) #s(cl-slot-descriptor :name regexp-purposes :initform 'nil :type purpose-regexp-alist :props nil)] :index-table #<hash-table eq 3/65 0x2f03469> :children nil :initarg-tuples ((:mode-purposes . mode-purposes) (:name-purposes . name-purposes) (:regexp-purposes . regexp-purposes)) :class-slots [] :class-allocation-values [] :default-object-cache nil :options (:custom-groups nil)))
  child-of-class-p(#s(eieio--class :name purpose-conf :docstring nil :parents nil :slots [#s(cl-slot-descriptor :name mode-purposes :initform 'nil :type purpose-mode-alist :props nil) #s(cl-slot-descriptor :name name-purposes :initform 'nil :type purpose-name-alist :props nil) #s(cl-slot-descriptor :name regexp-purposes :initform 'nil :type purpose-regexp-alist :props nil)] :index-table #<hash-table eq 3/65 0x2f03469> :children nil :initarg-tuples ((:mode-purposes . mode-purposes) (:name-purposes . name-purposes) (:regexp-purposes . regexp-purposes)) :class-slots [] :class-allocation-values [] :default-object-cache nil :options (:custom-groups nil)) closql-object)
  object-of-class-p(
  closql-object--eieio-childp(
  (if (closql-object--eieio-childp obj) (closql-oset obj slot value) (funcall fn obj slot value))
  eieio-oset--closql-oset(#f(compiled-function (obj slot value) "Do the work for the macro `oset'.\nFills in OBJ's SLOT with VALUE." #<bytecode 0x780ea9>) 
  apply(eieio-oset--closql-oset #f(compiled-function (obj slot value) "Do the work for the macro `oset'.\nFills in OBJ's SLOT with VALUE." #<bytecode 0x780ea9>) (
  eieio-oset(
  eieio-set-defaults(
  #f(compiled-function (cname superclasses slots options) "Define CNAME as a new subclass of SUPERCLASSES.\nSLOTS are the slots residing in that class definition, and OPTIONS\nholds the class options.\nSee `defclass' for more information." #<bytecode 0x7805d1>)(purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil)
  apply(#f(compiled-function (cname superclasses slots options) "Define CNAME as a new subclass of SUPERCLASSES.\nSLOTS are the slots residing in that class definition, and OPTIONS\nholds the class options.\nSee `defclass' for more information." #<bytecode 0x7805d1>) (purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil))
  eieio-defclass-internal(purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil)
  byte-code("\300\301!\210\300\302!\210\300\303!\210\304\305\306\307!\"\210\304\310\311\307!\"\210\304\312\310\"\210\313\312\314\315#\210\316\307\317\310#\320\307\321\322\321$\207" [require cl-lib eieio window-purpose-utils defalias purpose-conf-p eieio-make-class-predicate purpose-conf purpose-conf--eieio-childp eieio-make-child-predicate purpose-conf-child-p make-obsolete "use (cl-typep ... \\='purpose-conf) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist))] 6)
  autoload-do-load((autoload "window-purpose-configuration" nil nil nil))
  eieio--full-class-object(#s(eieio--class :name purpose-conf :docstring nil :parents nil :slots [#s(cl-slot-descriptor :name mode-purposes :initform 'nil :type purpose-mode-alist :props nil) #s(cl-slot-descriptor :name name-purposes :initform 'nil :type purpose-name-alist :props nil) #s(cl-slot-descriptor :name regexp-purposes :initform 'nil :type purpose-regexp-alist :props nil)] :index-table #<hash-table eq 3/65 0x2f03469> :children nil :initarg-tuples ((:mode-purposes . mode-purposes) (:name-purposes . name-purposes) (:regexp-purposes . regexp-purposes)) :class-slots [] :class-allocation-values [] :default-object-cache nil :options (:custom-groups nil)))
  child-of-class-p(#s(eieio--class :name purpose-conf :docstring nil :parents nil :slots [#s(cl-slot-descriptor :name mode-purposes :initform 'nil :type purpose-mode-alist :props nil) #s(cl-slot-descriptor :name name-purposes :initform 'nil :type purpose-name-alist :props nil) #s(cl-slot-descriptor :name regexp-purposes :initform 'nil :type purpose-regexp-alist :props nil)] :index-table #<hash-table eq 3/65 0x2f03469> :children nil :initarg-tuples ((:mode-purposes . mode-purposes) (:name-purposes . name-purposes) (:regexp-purposes . regexp-purposes)) :class-slots [] :class-allocation-values [] :default-object-cache nil :options (:custom-groups nil)) closql-object)
  object-of-class-p(
  closql-object--eieio-childp(
  (if (closql-object--eieio-childp obj) (closql-oset obj slot value) (funcall fn obj slot value))
  eieio-oset--closql-oset(#f(compiled-function (obj slot value) "Do the work for the macro `oset'.\nFills in OBJ's SLOT with VALUE." #<bytecode 0x780ea9>) 
  apply(eieio-oset--closql-oset #f(compiled-function (obj slot value) "Do the work for the macro `oset'.\nFills in OBJ's SLOT with VALUE." #<bytecode 0x780ea9>) (
  eieio-oset(
  eieio-set-defaults(
  #f(compiled-function (cname superclasses slots options) "Define CNAME as a new subclass of SUPERCLASSES.\nSLOTS are the slots residing in that class definition, and OPTIONS\nholds the class options.\nSee `defclass' for more information." #<bytecode 0x7805d1>)(purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil)
  apply(#f(compiled-function (cname superclasses slots options) "Define CNAME as a new subclass of SUPERCLASSES.\nSLOTS are the slots residing in that class definition, and OPTIONS\nholds the class options.\nSee `defclass' for more information." #<bytecode 0x7805d1>) (purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil))
  eieio-defclass-internal(purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil)
  byte-code("\300\301!\210\300\302!\210\300\303!\210\304\305\306\307!\"\210\304\310\311\307!\"\210\304\312\310\"\210\313\312\314\315#\210\316\307\317\310#\320\307\321\322\321$\207" [require cl-lib eieio window-purpose-utils defalias purpose-conf-p eieio-make-class-predicate purpose-conf purpose-conf--eieio-childp eieio-make-child-predicate purpose-conf-child-p make-obsolete "use (cl-typep ... \\='purpose-conf) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist))] 6)
  #<subr require>(window-purpose-configuration)
  apply(#<subr require> window-purpose-configuration)
  require(window-purpose-configuration)
  byte-code("\300\301!\210\300\302!\210\300\303!\210\300\304!\210\300\305!\210\300\306!\210\300\307!\210\300\310!\207" [require easymenu window-purpose-utils window-purpose-configuration window-purpose-core window-purpose-layout window-purpose-switch window-purpose-prefix-overload window-purpose-fixes] 2)
  #<subr require>(window-purpose)
  apply(#<subr require> window-purpose)
  require(window-purpose)
  (lambda nil (require 'window-purpose))()
  funcall((lambda nil (require 'window-purpose)))
  lazy-load-window-purpose()
  spacemacs//transient-hook-lazy-load-window-purpose()
  redisplay_internal\ \(C\ function\)()
  read-from-minibuffer("M-x " "^" (keymap (keymap (67108908 . counsel--info-lookup-symbol) (67108910 . counsel-find-symbol)) keymap (escape . minibuffer-keyboard-quit) (12) (8) (11 . ivy-kill-line) (36 . ivy-magic-read-file-env) (3 keymap (19 . ivy-rotate-sort) (1 . ivy-toggle-ignore) (15 . ivy-occur)) (67108903 . ivy-avy) (33554464 . ivy-restrict-to-matches) (15 . spacemacs/ivy-transient-state/body) (22 . ivy-scroll-up-command) (prior . ivy-scroll-down-command) (next . ivy-scroll-up-command) (7 . minibuffer-keyboard-quit) (right . ivy-forward-char) (32 . self-insert-command) (18 . ivy-reverse-i-search) (19 . ivy-next-line-or-history) (remap keymap (describe-mode . ivy-help) (kill-ring-save . ivy-kill-ring-save) (kill-whole-line . ivy-kill-whole-line) (kill-line . ivy-kill-line) (scroll-down-command . ivy-scroll-down-command) (scroll-up-command . ivy-scroll-up-command) (end-of-buffer . ivy-end-of-buffer) (beginning-of-buffer . ivy-beginning-of-buffer) (kill-word . ivy-kill-word) (forward-char . ivy-forward-char) (delete-char . ivy-delete-char) (backward-kill-word . ivy-backward-kill-word) (backward-delete-char-untabify . ivy-backward-delete-char) (delete-backward-char . ivy-backward-delete-char) (previous-line . ivy-previous-line) (next-line . ivy-next-line)) (9 . ivy-partial-or-done) (10 . ivy-alt-done) (27 keymap (8388640 . spacemacs/ivy-transient-state/body) (32 . hydra-ivy/body) (1 . ivy-read-action) (15 . ivy-dispatching-call) (111 . ivy-dispatching-done) (25 . ivy-insert-current-full) (105 . ivy-insert-current) (106 . ivy-yank-word) (114 . ivy-toggle-regexp-quote) (16 . ivy-previous-line-and-call) (14 . ivy-next-line-and-call) (118 . ivy-scroll-down-command) (112 . ivy-previous-history-element) (110 . ivy-next-history-element) (10 . ivy-immediate-done) (13 . ivy-call)) (mouse-3 . ivy-mouse-dispatching-done) (mouse-1 . ivy-mouse-done) (down-mouse-1 . ignore) (13 . ivy-done)) nil counsel-M-x-history)
  ivy-read("M-x " ("toggle-debug-on-error" "pdf-tools-install" "org-gcal-fetch" "org-gcal-sync" "spacemacs/toggle-debug-on-error" "ansi-term" "vterm" "global-emojify-mode" "emojify-mode" "spacemacs/recompile-elpa" "emacs-version" "find-library" "ms/insert-inactive-date" "woman" "man" "conf-mode" "time-stamp" "getenv" "forge-pull" "server-start" "server-force-delete" "counsel-imenu" "imenu-list" "imenu" "protobuf-mode" "eww" "org-refile-goto-last-stored" "lisp-interaction-mode" "view-lossage" "org-insert-structure-template" "ediff-files" "whitespace-mode" "make-capture-frame" "menu-bar-mode" "menu-set-font" "counsel-colors-emacs" "visible-mode" "bh/view-next-project" "scratch" "nginx-mode" "artist-mode" "set-frame-font" "package-install" "slack-register-team" "flush-lines" "org-version" "org-mode-restart" "delete-trailing-whitespace" "markdown-live-preview-mode" "org-agenda-filter-by-top-headline" ...) :predicate #f(compiled-function (x) #<bytecode 0x1934601>) :require-match t :history counsel-M-x-history :action counsel-M-x-action :keymap (keymap (67108908 . counsel--info-lookup-symbol) (67108910 . counsel-find-symbol)) :initial-input nil :caller counsel-M-x)
  counsel-M-x()
  funcall-interactively(counsel-M-x)
  call-interactively(counsel-M-x nil nil)
  command-execute(counsel-M-x)
bmag commented 4 years ago

Afraid I don't know what's going on there. it just looks like autoload-do-load is in an infinite loop. Since you're using the devel version of Emacs (27.0.50), I'd guess a bug related to EIEIO and loading byte-compiled files, that may be resolved in the near future. Have updated Emacs recently?

autoload-do-load is having trouble because of this part of window-purpose-configuration.el:

;;;###autoload
(defclass purpose-conf ()
  ((mode-purposes :initarg :mode-purposes
                  :initform '()
                  :type purpose-mode-alist)
   (name-purposes :initarg :name-purposes
                  :initform '()
                  :type purpose-name-alist)
   (regexp-purposes :initarg :regexp-purposes
                    :initform '()
                    :type purpose-regexp-alist)))

What you could try as work-around is one of these:

  1. add (require 'window-purpose) to dotspacemacs file, so it is called before lazy-load-window-purpose in the startup process. I think putting it in dotspacemacs/user-config is early enough.
  2. delete the byte-compiled files of window-purpose (all the *.elc files in elpa/.../window-purpose-*/
  3. delete the ;;;###autoload line above from window-purpose-configuration.el and recompile the file (or delete window-purpose-configuraion.elc)
korayal commented 4 years ago

I hope this helps somehow, but I have been using Spacemacs on emacs-snapshot at Ubuntu's PPA for a while now. The latest working snapshot has this one as the latest commit: https://github.com/emacs-mirror/emacs/commit/9d829b8be5b86668d5165b9d0c0cdc392b558dd3 and the first one that failed has this one: https://github.com/emacs-mirror/emacs/commit/604a985a1a1066679895d2ec80c7b351ecbf8ff4

The error I was getting looked like it's related to this commit below: https://github.com/emacs-mirror/emacs/commit/47cf2a37e7f7d2df3cc05b657b1b4ad8307c7c64

@bmag in the meantime, your suggestions above worked on my setup to fix this specific error. But I started getting Recursive load errors at other places.

nixmaniack commented 4 years ago

Have updated Emacs recently?

Yes. I generally use emacs-snapshot from Ubuntu PPA and recently also compiled from latest source. Both failed. Looks like what @korayal mentioned seems to be the root cause.

Although, none of the workarounds you mentioned worked for me :disappointed:. I'll try again with clean install and workarounds mentioned.

nixmaniack commented 4 years ago

If I add require to dotspacemacs/user-config, I'm still getting following error.

Spacemacs is ready.
(Spacemacs) Error in dotspacemacs/user-config: Recursive load: "/home/nixmaniack/.emacs.d/elpa/27.0/develop/window-purpose-20190628.1827/window-purpose-configuration.el", "/home/nixmaniack/.emacs.d/elpa/27.0/develop/window-purpose-20190628.1827/window-purpose-configuration.el", "/home/nixmaniack/.emacs.d/elpa/27.0/develop/window-purpose-20190628.1827/window-purpose-configuration.el", "/home/nixmaniack/.emacs.d/elpa/27.0/develop/window-purpose-20190628.1827/window-purpose-configuration.el", "/home/nixmaniack/.emacs.d/elpa/27.0/develop/window-purpose-20190628.1827/window-purpose-configuration.el", "/home/nixmaniack/.emacs.d/elpa/27.0/develop/window-purpose-20190628.1827/window-purpose.el"

Skipping check for new version (reason: dotfile)
eieio--full-class-object: Recursive load: "/home/nixmaniack/.emacs.d/elpa/27.0/develop/window-purpose-20190628.1827/window-purpose-configuration.el", "/home/nixmaniack/.emacs.d/elpa/27.0/develop/window-purpose-20190628.1827/window-purpose-configuration.el", "/home/nixmaniack/.emacs.d/elpa/27.0/develop/window-purpose-20190628.1827/window-purpose-configuration.el", "/home/nixmaniack/.emacs.d/elpa/27.0/develop/window-purpose-20190628.1827/window-purpose-configuration.el", "/home/nixmaniack/.emacs.d/elpa/27.0/develop/window-purpose-20190628.1827/window-purpose-configuration.el", "/home/nixmaniack/.emacs.d/elpa/27.0/develop/window-purpose-20190628.1827/window-purpose.el" [2 times]
Quit

I've tried on following version of emacs.

$ dpkg -l | grep emacs-snap
ii  emacs-snapshot                             20191017:98923-f75f90a~ubuntu19.04.1     amd64        GNU Emacs editor (with GTK+ user interface)

The last working version that I tried is emacs-snapshot_98673-bbfa999~ubuntu19.10.1. I don't see any errors on this version.

korayal commented 4 years ago

@nixmaniack did you also comment out/delete the line for autoload as mentioned in step 3 in @bmag 's comment? (https://github.com/bmag/emacs-purpose/issues/158#issuecomment-543156473)

nixmaniack commented 4 years ago

@korayal Yes, I did try all of them individually and all together.

korayal commented 4 years ago

I just started getting the same error on a Ubuntu 19.04 machine (emacs-snaphot 20191017:98938-2d13a3f~ubuntu19.04.1)

SKoschnicke commented 4 years ago

Adding (require 'window-purpose) in user-config of .spacemacs works for me:

(defun dotspacemacs/user-config ()
  "Configuration function for user code.
This function is called at the very end of Spacemacs initialization after
layers configuration.
This is the place where most of your configurations should be done. Unless it is
explicitly specified that a variable should be set before a package is loaded,
you should place you code here."
  (require 'window-purpose) ; workaround until https://github.com/bmag/emacs-purpose/issues/158 is fixed

(...)

I'm running emacs 27.0.50

robbyoconnor commented 4 years ago

Bit by this as well...also on the latest snapshot from the Ubuntu PPA

brandonwillard commented 4 years ago

I believe I had this problem when running Emacs master branch a little while back. The issues had to do with changes in eieio object creation interacting poorly with closql's overrides and not general autoloading and/or window-purpose.

In Spacemacs, closql was being loaded by forge, which was—in turn—loaded by the github layer. Disabling the github layer prevented the issues.

robbyoconnor commented 4 years ago

That is a horrible solution.

On 11/12/19 12:51 PM, Brandon T. Willard wrote:

I believe I had this problem when running Emacs master branch a little while back. The issues had to do with changes in |eieio| object creation interacting poorly with |closql|'s overrides and not general |autoload|ing and/or |window-purpose|.

In Spacemacs, |closql| was being loaded by |forge|, which was—in turn—loaded by the |github| layer. Disabling the |github| layer prevented the issues.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/bmag/emacs-purpose/issues/158?email_source=notifications&email_token=AAAFUMF4WCCNPUGUTK3JW3LQTLULPA5CNFSM4JBPF46KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOED3EP7Q#issuecomment-553011198, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAAFUMBUBB2XVZD6RZEB4TDQTLULPANCNFSM4JBPF46A.

brandonwillard commented 4 years ago

It's not a solution; it's a statement about the actual source of the problem and how it was (indirectly) verified.

robbyoconnor commented 4 years ago

I misunderstood, sorry!

On 11/12/19 9:07 PM, Brandon T. Willard wrote:

It's not a solution; it's a statement about the actual source of the problem and how it was (indirectly) verified.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/bmag/emacs-purpose/issues/158?email_source=notifications&email_token=AAAFUMHCBGH7JNXAC4ISMF3QTNONLA5CNFSM4JBPF46KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOED4TULY#issuecomment-553204271, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAAFUMGANDDEMJGCDJDZGFDQTNONLANCNFSM4JBPF46A.

wyuenho commented 4 years ago

Has anyone reported this issue to emacs-devel yet?

tarsius commented 4 years ago

I think that the issue is that window-purpose has internal circular dependencies.

Somehow calling a CLASS--eieio-childp triggers autoloaded libraries to be loaded, which causes that circular dependency to kick in. It could be any such function. They are created by defclass. Closql happens to advice important functions to call closql-object--eieio-childp so that is what triggers the bug. If it was not this, then something else could trigger it.

I wasn't actually able to reproduce the issue but I might not have tried hard enough. However when I compiled the window-purpose I was confronted with a wall of warnings. I recommend you address all of these warnings. Pay close attention to those about undefined things from internal libraries and don't just silence them. In the end there should no longer be circular (but unspecified) dependencies and then loading some library out of order due to autoload cookies also will no longer matter.

wyuenho commented 4 years ago

I'm curious. Why does purpose-conf have to be autoloaded? It's not a command, what's the point of autoloading it?

tarsius commented 4 years ago

Turns out that was my mistake after all: https://github.com/emacscollective/closql/commit/c1a9b816eced2abbcba0dd645830c72d93767b72.

The autoloads is what triggered it.

wyuenho commented 4 years ago

@tarsius I still see the same backtrace using the latest closql tho.

tarsius commented 4 years ago

After restarting and everything?

wyuenho commented 4 years ago

@tarsius Yep. First install works. Then the loop starts again after restart.

wyuenho commented 4 years ago

Exact same backtrace

Debugger entered--Lisp error: (error "Recursive load" "/Users/wyuenho/.emacs.d/elpa/window-purpose-201906..." "/Users/wyuenho/.emacs.d/elpa/window-purpose-201906..." "/Users/wyuenho/.emacs.d/elpa/window-purpose-201906..." "/Users/wyuenho/.emacs.d/elpa/window-purpose-201906..." "/Users/wyuenho/.emacs.d/elpa/window-purpose-201906..." "/Users/wyuenho/.emacs.d/elpa/window-purpose-201906..." "/Users/wyuenho/.emacs")
  #<subr autoload-do-load>((autoload "window-purpose-configuration" nil nil nil))
  apply(#<subr autoload-do-load> (autoload "window-purpose-configuration" nil nil nil))
  autoload-do-load((autoload "window-purpose-configuration" nil nil nil))
  eieio--full-class-object(#s(eieio--class :name purpose-conf :docstring nil :parents nil :slots [#s(cl-slot-descriptor :name mode-purposes :initform 'nil :type purpose-mode-alist :props nil) #s(cl-slot-descriptor :name name-purposes :initform 'nil :type purpose-name-alist :props nil) #s(cl-slot-descriptor :name regexp-purposes :initform 'nil :type purpose-regexp-alist :props nil)] :index-table #<hash-table eq 3/65 0x44a17dfd> :children nil :initarg-tuples ((:mode-purposes . mode-purposes) (:name-purposes . name-purposes) (:regexp-purposes . regexp-purposes)) :class-slots [] :class-allocation-values [] :default-object-cache nil :options (:custom-groups nil)))
  child-of-class-p(#s(eieio--class :name purpose-conf :docstring nil :parents nil :slots [#s(cl-slot-descriptor :name mode-purposes :initform 'nil :type purpose-mode-alist :props nil) #s(cl-slot-descriptor :name name-purposes :initform 'nil :type purpose-name-alist :props nil) #s(cl-slot-descriptor :name regexp-purposes :initform 'nil :type purpose-regexp-alist :props nil)] :index-table #<hash-table eq 3/65 0x44a17dfd> :children nil :initarg-tuples ((:mode-purposes . mode-purposes) (:name-purposes . name-purposes) (:regexp-purposes . regexp-purposes)) :class-slots [] :class-allocation-values [] :default-object-cache nil :options (:custom-groups nil)) closql-object)
  object-of-class-p(
  closql-object--eieio-childp(
  eieio-oset--closql-oset(#f(compiled-function (obj slot value) "Do the work for the macro `oset'.\nFills in OBJ's SLOT with VALUE." #<bytecode 0x41c139b9>) 
  apply(eieio-oset--closql-oset #f(compiled-function (obj slot value) "Do the work for the macro `oset'.\nFills in OBJ's SLOT with VALUE." #<bytecode 0x41c139b9>) (
  eieio-oset(
  eieio-set-defaults(
  #f(compiled-function (cname superclasses slots options) "Define CNAME as a new subclass of SUPERCLASSES.\nSLOTS are the slots residing in that class definition, and OPTIONS\nholds the class options.\nSee `defclass' for more information." #<bytecode 0x41c2ba9d>)(purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil)
  apply(#f(compiled-function (cname superclasses slots options) "Define CNAME as a new subclass of SUPERCLASSES.\nSLOTS are the slots residing in that class definition, and OPTIONS\nholds the class options.\nSee `defclass' for more information." #<bytecode 0x41c2ba9d>) (purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil))
  eieio-defclass-internal(purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil)
  byte-code("\300\301!\210\300\302!\210\300\303!\210\304\305\306\307!\"\210\304\310\311\307!\"\210\304\312\310\"\210\313\312\314\315#\210\316\307\317\310#\320\307\321\322\321$\207" [require cl-lib eieio window-purpose-utils defalias purpose-conf-p eieio-make-class-predicate purpose-conf purpose-conf--eieio-childp eieio-make-child-predicate purpose-conf-child-p make-obsolete "use (cl-typep ... \\='purpose-conf) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist))] 6)
  #<subr autoload-do-load>((autoload "window-purpose-configuration" nil nil nil))
  apply(#<subr autoload-do-load> (autoload "window-purpose-configuration" nil nil nil))
  autoload-do-load((autoload "window-purpose-configuration" nil nil nil))
  eieio--full-class-object(#s(eieio--class :name purpose-conf :docstring nil :parents nil :slots [#s(cl-slot-descriptor :name mode-purposes :initform 'nil :type purpose-mode-alist :props nil) #s(cl-slot-descriptor :name name-purposes :initform 'nil :type purpose-name-alist :props nil) #s(cl-slot-descriptor :name regexp-purposes :initform 'nil :type purpose-regexp-alist :props nil)] :index-table #<hash-table eq 3/65 0x44a17dfd> :children nil :initarg-tuples ((:mode-purposes . mode-purposes) (:name-purposes . name-purposes) (:regexp-purposes . regexp-purposes)) :class-slots [] :class-allocation-values [] :default-object-cache nil :options (:custom-groups nil)))
  child-of-class-p(#s(eieio--class :name purpose-conf :docstring nil :parents nil :slots [#s(cl-slot-descriptor :name mode-purposes :initform 'nil :type purpose-mode-alist :props nil) #s(cl-slot-descriptor :name name-purposes :initform 'nil :type purpose-name-alist :props nil) #s(cl-slot-descriptor :name regexp-purposes :initform 'nil :type purpose-regexp-alist :props nil)] :index-table #<hash-table eq 3/65 0x44a17dfd> :children nil :initarg-tuples ((:mode-purposes . mode-purposes) (:name-purposes . name-purposes) (:regexp-purposes . regexp-purposes)) :class-slots [] :class-allocation-values [] :default-object-cache nil :options (:custom-groups nil)) closql-object)
  object-of-class-p(
  closql-object--eieio-childp(
  eieio-oset--closql-oset(#f(compiled-function (obj slot value) "Do the work for the macro `oset'.\nFills in OBJ's SLOT with VALUE." #<bytecode 0x41c139b9>) 
  apply(eieio-oset--closql-oset #f(compiled-function (obj slot value) "Do the work for the macro `oset'.\nFills in OBJ's SLOT with VALUE." #<bytecode 0x41c139b9>) (
  eieio-oset(
  eieio-set-defaults(
  #f(compiled-function (cname superclasses slots options) "Define CNAME as a new subclass of SUPERCLASSES.\nSLOTS are the slots residing in that class definition, and OPTIONS\nholds the class options.\nSee `defclass' for more information." #<bytecode 0x41c2ba9d>)(purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil)
  apply(#f(compiled-function (cname superclasses slots options) "Define CNAME as a new subclass of SUPERCLASSES.\nSLOTS are the slots residing in that class definition, and OPTIONS\nholds the class options.\nSee `defclass' for more information." #<bytecode 0x41c2ba9d>) (purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil))
  eieio-defclass-internal(purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil)
  byte-code("\300\301!\210\300\302!\210\300\303!\210\304\305\306\307!\"\210\304\310\311\307!\"\210\304\312\310\"\210\313\312\314\315#\210\316\307\317\310#\320\307\321\322\321$\207" [require cl-lib eieio window-purpose-utils defalias purpose-conf-p eieio-make-class-predicate purpose-conf purpose-conf--eieio-childp eieio-make-child-predicate purpose-conf-child-p make-obsolete "use (cl-typep ... \\='purpose-conf) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist))] 6)
  #<subr autoload-do-load>((autoload "window-purpose-configuration" nil nil nil))
  apply(#<subr autoload-do-load> (autoload "window-purpose-configuration" nil nil nil))
  autoload-do-load((autoload "window-purpose-configuration" nil nil nil))
  eieio--full-class-object(#s(eieio--class :name purpose-conf :docstring nil :parents nil :slots [#s(cl-slot-descriptor :name mode-purposes :initform 'nil :type purpose-mode-alist :props nil) #s(cl-slot-descriptor :name name-purposes :initform 'nil :type purpose-name-alist :props nil) #s(cl-slot-descriptor :name regexp-purposes :initform 'nil :type purpose-regexp-alist :props nil)] :index-table #<hash-table eq 3/65 0x44a17dfd> :children nil :initarg-tuples ((:mode-purposes . mode-purposes) (:name-purposes . name-purposes) (:regexp-purposes . regexp-purposes)) :class-slots [] :class-allocation-values [] :default-object-cache nil :options (:custom-groups nil)))
  child-of-class-p(#s(eieio--class :name purpose-conf :docstring nil :parents nil :slots [#s(cl-slot-descriptor :name mode-purposes :initform 'nil :type purpose-mode-alist :props nil) #s(cl-slot-descriptor :name name-purposes :initform 'nil :type purpose-name-alist :props nil) #s(cl-slot-descriptor :name regexp-purposes :initform 'nil :type purpose-regexp-alist :props nil)] :index-table #<hash-table eq 3/65 0x44a17dfd> :children nil :initarg-tuples ((:mode-purposes . mode-purposes) (:name-purposes . name-purposes) (:regexp-purposes . regexp-purposes)) :class-slots [] :class-allocation-values [] :default-object-cache nil :options (:custom-groups nil)) closql-object)
  object-of-class-p(
  closql-object--eieio-childp(
  eieio-oset--closql-oset(#f(compiled-function (obj slot value) "Do the work for the macro `oset'.\nFills in OBJ's SLOT with VALUE." #<bytecode 0x41c139b9>) 
  apply(eieio-oset--closql-oset #f(compiled-function (obj slot value) "Do the work for the macro `oset'.\nFills in OBJ's SLOT with VALUE." #<bytecode 0x41c139b9>) (
  eieio-oset(
tarsius commented 4 years ago

I don't see how that can happen with the new code. Maybe the old code somehow survived in the autoload file or byte-code.

Remove all involved packages. Restart Emacs. Reinstall packages.

wyuenho commented 4 years ago

That's exactly what I did. The copyright date on closql is 2020, having the same eieio-oref--closql-oref

tarsius commented 4 years ago

Does it contain this?:

(defun eieio-oref--closql-oref (fn obj slot)
  (if (cl-letf (((symbol-function #'eieio--full-class-object)
                 #'eieio--class-object))
        (closql-object--eieio-childp obj))
      (closql-oref obj slot)
    (funcall fn obj slot)))

That should prevent anything called by closql-object--eieio-childp from calling eieio--full-class-object. According to the above backtrace that is still happening though.

wyuenho commented 4 years ago

Yes that's the exact same code. All I have in my .emacs is this:

(toggle-debug-on-error)
(require 'forge)
(require 'window-purpose)
tarsius commented 4 years ago

I don't see how that is possible. Let's wait for other people to report on whether updating closql fixes the issue for them or not.

wyuenho commented 4 years ago

@tarsius Are you able to reproduce this on your own?

tarsius commented 4 years ago

No.

wyuenho commented 4 years ago

On emacs-27?

tarsius commented 4 years ago

On emacs-28.

I don't use package.el and my setup for testing with package.el anyway is currently quite broken. I will have to fix that first before I can reproduce issues as if I was actually using package.el myself. That will take some time.

That's why I would like to wait for others to report how this fix is working out for them.

nixmaniack commented 4 years ago

I tried after updating the all packages(including latest closql), removed all byte-compiled files and using emacs-28, I still see the same error.

agzam commented 4 years ago

@nixmaniack try removing some autoloads files. That worked for me with gh.el

nixmaniack commented 4 years ago

try removing some autoloads files.

@agzam I could if I know which ones! 😄Do you have any suggestions which one? I'd probably avoid random removal.

agzam commented 4 years ago

@nixmaniack check the stacktrace and try. Removing gh-autoloads.el helped me with the similar problem with gists.el on emacs-28.

robbyoconnor commented 4 years ago

In my experience, I have to just restart Emacs after all package updates install and don't see an issue.

On 6/1/20 5:09 PM, Ag Ibragimov wrote:

@nixmaniack https://github.com/nixmaniack check the stacktrace and try. Removing gh-autoloads.el helped me with the similar problem with gists.el on emacs-28.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/bmag/emacs-purpose/issues/158#issuecomment-637103144, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAAFUMEUVBZAWXHOJSFW7D3RUQKIVANCNFSM4JBPF46A.

agzam commented 4 years ago

@robbyoconnor it's a specific issue that appears only on --HEAD of emacs.

robbyoconnor commented 4 years ago

@robbyoconnor it's a specific issue that appears only on --HEAD of emacs.

Aware. I too run that.

agzam commented 4 years ago

Hmm.. interesting. @robbyoconnor could you please try one thing (I'm curious). You still use Spacemacs and have github layer installed, right? Can you try M-x gist-list? Does that still work for you?

nixmaniack commented 4 years ago

So I tried @agzam's recommendation of removing autoload. Based on stacktrace, I could only pinpoint window-purpose autoloads. Removing which does get rid off the recursive load error but emacs throws following error:

Error loading autoloads: (file-missing Cannot open load file No such file or directory /Users/someuser/.emacs.d/elpa/28.0/develop/window-purpose-20190628.1827/window-purpose-autoloads)

And, it breaks window-purpose functionality. I don't think removing the autoloads is the right way. For now, excluding closql is the only solution for me.

Even @robbyoconnor's restart after updating packages doesn't work for me. It consistently throws the same error.

Backtrace:

Debugger entered--Lisp error: (error "Recursive load" "/Users/someuser/.emacs.d/elpa/28.0/develop/wi..." "/Users/someuser/.emacs.d/elpa/28.0/develop/wi..." "/Users/someuser/.emacs.d/elpa/28.0/develop/wi..." "/Users/someuser/.emacs.d/elpa/28.0/develop/wi..." "/Users/someuser/.emacs.d/elpa/28.0/develop/wi..." "/Users/someuser/.emacs.d/elpa/28.0/develop/wi...")
  autoload-do-load((autoload "window-purpose-configuration" nil nil nil))
  eieio--full-class-object(#s(eieio--class :name purpose-conf :docstring nil :parents nil :slots [#s(cl-slot-descriptor :name mode-purposes :initform 'nil :type purpose-mode-alist :props nil) #s(cl-slot-descriptor :name name-purposes :initform 'nil :type purpose-name-alist :props nil) #s(cl-slot-descriptor :name regexp-purposes :initform 'nil :type purpose-regexp-alist :props nil)] :index-table #<hash-table eq 3/65 0x1fe4f91d0295> :children nil :initarg-tuples ((:mode-purposes . mode-purposes) (:name-purposes . name-purposes) (:regexp-purposes . regexp-purposes)) :class-slots [] :class-allocation-values [] :default-object-cache nil :options (:custom-groups nil)))
  child-of-class-p(#s(eieio--class :name purpose-conf :docstring nil :parents nil :slots [#s(cl-slot-descriptor :name mode-purposes :initform 'nil :type purpose-mode-alist :props nil) #s(cl-slot-descriptor :name name-purposes :initform 'nil :type purpose-name-alist :props nil) #s(cl-slot-descriptor :name regexp-purposes :initform 'nil :type purpose-regexp-alist :props nil)] :index-table #<hash-table eq 3/65 0x1fe4f91d0295> :children nil :initarg-tuples ((:mode-purposes . mode-purposes) (:name-purposes . name-purposes) (:regexp-purposes . regexp-purposes)) :class-slots [] :class-allocation-values [] :default-object-cache nil :options (:custom-groups nil)) closql-object)
  object-of-class-p(
  closql-object--eieio-childp(
  (if (closql-object--eieio-childp obj) (closql-oset obj slot value) (funcall fn obj slot value))
  eieio-oset--closql-oset(#f(compiled-function (obj slot value) "Do the work for the macro `oset'.\nFills in OBJ's SLOT with VALUE." #<bytecode 0x1dbd77ca5a3090ab>)
  apply(eieio-oset--closql-oset #f(compiled-function (obj slot value) "Do the work for the macro `oset'.\nFills in OBJ's SLOT with VALUE." #<bytecode 0x1dbd77ca5a3090ab>) (
  eieio-oset(
  eieio-set-defaults(
  #f(compiled-function (cname superclasses slots options) "Define CNAME as a new subclass of SUPERCLASSES.\nSLOTS are the slots residing in that class definition, and OPTIONS\nholds the class options.\nSee `defclass' for more information." #<bytecode -0x160a51f5d0dec9cd>)(purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil)
  apply(#f(compiled-function (cname superclasses slots options) "Define CNAME as a new subclass of SUPERCLASSES.\nSLOTS are the slots residing in that class definition, and OPTIONS\nholds the class options.\nSee `defclass' for more information." #<bytecode -0x160a51f5d0dec9cd>) (purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil))
  eieio-defclass-internal(purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil)
  eval-buffer(#<buffer  *load*-815791> nil "/Users/someuser/.emacs.d/elpa/28.0/develop/wi..." nil t)  ; Reading at buffer position 2784
  load-with-code-conversion("/Users/someuser/.emacs.d/elpa/28.0/develop/wi..." "/Users/someuser/.emacs.d/elpa/28.0/develop/wi..." nil t)
  autoload-do-load((autoload "window-purpose-configuration" nil nil nil))
  eieio--full-class-object(#s(eieio--class :name purpose-conf :docstring nil :parents nil :slots [#s(cl-slot-descriptor :name mode-purposes :initform 'nil :type purpose-mode-alist :props nil) #s(cl-slot-descriptor :name name-purposes :initform 'nil :type purpose-name-alist :props nil) #s(cl-slot-descriptor :name regexp-purposes :initform 'nil :type purpose-regexp-alist :props nil)] :index-table #<hash-table eq 3/65 0x1fe4f91d0295> :children nil :initarg-tuples ((:mode-purposes . mode-purposes) (:name-purposes . name-purposes) (:regexp-purposes . regexp-purposes)) :class-slots [] :class-allocation-values [] :default-object-cache nil :options (:custom-groups nil)))
  child-of-class-p(#s(eieio--class :name purpose-conf :docstring nil :parents nil :slots [#s(cl-slot-descriptor :name mode-purposes :initform 'nil :type purpose-mode-alist :props nil) #s(cl-slot-descriptor :name name-purposes :initform 'nil :type purpose-name-alist :props nil) #s(cl-slot-descriptor :name regexp-purposes :initform 'nil :type purpose-regexp-alist :props nil)] :index-table #<hash-table eq 3/65 0x1fe4f91d0295> :children nil :initarg-tuples ((:mode-purposes . mode-purposes) (:name-purposes . name-purposes) (:regexp-purposes . regexp-purposes)) :class-slots [] :class-allocation-values [] :default-object-cache nil :options (:custom-groups nil)) closql-object)
  object-of-class-p(
  closql-object--eieio-childp(
  (if (closql-object--eieio-childp obj) (closql-oset obj slot value) (funcall fn obj slot value))
  eieio-oset--closql-oset(#f(compiled-function (obj slot value) "Do the work for the macro `oset'.\nFills in OBJ's SLOT with VALUE." #<bytecode 0x1dbd77ca5a3090ab>)
  apply(eieio-oset--closql-oset #f(compiled-function (obj slot value) "Do the work for the macro `oset'.\nFills in OBJ's SLOT with VALUE." #<bytecode 0x1dbd77ca5a3090ab>) (
  eieio-oset(
  eieio-set-defaults(
  #f(compiled-function (cname superclasses slots options) "Define CNAME as a new subclass of SUPERCLASSES.\nSLOTS are the slots residing in that class definition, and OPTIONS\nholds the class options.\nSee `defclass' for more information." #<bytecode -0x160a51f5d0dec9cd>)(purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil)
  apply(#f(compiled-function (cname superclasses slots options) "Define CNAME as a new subclass of SUPERCLASSES.\nSLOTS are the slots residing in that class definition, and OPTIONS\nholds the class options.\nSee `defclass' for more information." #<bytecode -0x160a51f5d0dec9cd>) (purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil))
  eieio-defclass-internal(purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil)
  eval-buffer(#<buffer  *load*-445760> nil "/Users/someuser/.emacs.d/elpa/28.0/develop/wi..." nil t)  ; Reading at buffer position 2784
  load-with-code-conversion("/Users/someuser/.emacs.d/elpa/28.0/develop/wi..." "/Users/someuser/.emacs.d/elpa/28.0/develop/wi..." nil t)
  autoload-do-load((autoload "window-purpose-configuration" nil nil nil))
  eieio--full-class-object(#s(eieio--class :name purpose-conf :docstring nil :parents nil :slots [#s(cl-slot-descriptor :name mode-purposes :initform 'nil :type purpose-mode-alist :props nil) #s(cl-slot-descriptor :name name-purposes :initform 'nil :type purpose-name-alist :props nil) #s(cl-slot-descriptor :name regexp-purposes :initform 'nil :type purpose-regexp-alist :props nil)] :index-table #<hash-table eq 3/65 0x1fe4f91d0295> :children nil :initarg-tuples ((:mode-purposes . mode-purposes) (:name-purposes . name-purposes) (:regexp-purposes . regexp-purposes)) :class-slots [] :class-allocation-values [] :default-object-cache nil :options (:custom-groups nil)))
  child-of-class-p(#s(eieio--class :name purpose-conf :docstring nil :parents nil :slots [#s(cl-slot-descriptor :name mode-purposes :initform 'nil :type purpose-mode-alist :props nil) #s(cl-slot-descriptor :name name-purposes :initform 'nil :type purpose-name-alist :props nil) #s(cl-slot-descriptor :name regexp-purposes :initform 'nil :type purpose-regexp-alist :props nil)] :index-table #<hash-table eq 3/65 0x1fe4f91d0295> :children nil :initarg-tuples ((:mode-purposes . mode-purposes) (:name-purposes . name-purposes) (:regexp-purposes . regexp-purposes)) :class-slots [] :class-allocation-values [] :default-object-cache nil :options (:custom-groups nil)) closql-object)
  object-of-class-p(
  closql-object--eieio-childp(
  (if (closql-object--eieio-childp obj) (closql-oset obj slot value) (funcall fn obj slot value))
  eieio-oset--closql-oset(#f(compiled-function (obj slot value) "Do the work for the macro `oset'.\nFills in OBJ's SLOT with VALUE." #<bytecode 0x1dbd77ca5a3090ab>)
  apply(eieio-oset--closql-oset #f(compiled-function (obj slot value) "Do the work for the macro `oset'.\nFills in OBJ's SLOT with VALUE." #<bytecode 0x1dbd77ca5a3090ab>) (
  eieio-oset(
  eieio-set-defaults(
  #f(compiled-function (cname superclasses slots options) "Define CNAME as a new subclass of SUPERCLASSES.\nSLOTS are the slots residing in that class definition, and OPTIONS\nholds the class options.\nSee `defclass' for more information." #<bytecode -0x160a51f5d0dec9cd>)(purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil)
  apply(#f(compiled-function (cname superclasses slots options) "Define CNAME as a new subclass of SUPERCLASSES.\nSLOTS are the slots residing in that class definition, and OPTIONS\nholds the class options.\nSee `defclass' for more information." #<bytecode -0x160a51f5d0dec9cd>) (purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil))
  eieio-defclass-internal(purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil)
  eval-buffer(#<buffer  *load*-271036> nil "/Users/someuser/.emacs.d/elpa/28.0/develop/wi..." nil t)  ; Reading at buffer position 2784
  load-with-code-conversion("/Users/someuser/.emacs.d/elpa/28.0/develop/wi..." "/Users/someuser/.emacs.d/elpa/28.0/develop/wi..." nil t)
  autoload-do-load((autoload "window-purpose-configuration" nil nil nil))
  eieio--full-class-object(#s(eieio--class :name purpose-conf :docstring nil :parents nil :slots [#s(cl-slot-descriptor :name mode-purposes :initform 'nil :type purpose-mode-alist :props nil) #s(cl-slot-descriptor :name name-purposes :initform 'nil :type purpose-name-alist :props nil) #s(cl-slot-descriptor :name regexp-purposes :initform 'nil :type purpose-regexp-alist :props nil)] :index-table #<hash-table eq 3/65 0x1fe4f91d0295> :children nil :initarg-tuples ((:mode-purposes . mode-purposes) (:name-purposes . name-purposes) (:regexp-purposes . regexp-purposes)) :class-slots [] :class-allocation-values [] :default-object-cache nil :options (:custom-groups nil)))
  child-of-class-p(#s(eieio--class :name purpose-conf :docstring nil :parents nil :slots [#s(cl-slot-descriptor :name mode-purposes :initform 'nil :type purpose-mode-alist :props nil) #s(cl-slot-descriptor :name name-purposes :initform 'nil :type purpose-name-alist :props nil) #s(cl-slot-descriptor :name regexp-purposes :initform 'nil :type purpose-regexp-alist :props nil)] :index-table #<hash-table eq 3/65 0x1fe4f91d0295> :children nil :initarg-tuples ((:mode-purposes . mode-purposes) (:name-purposes . name-purposes) (:regexp-purposes . regexp-purposes)) :class-slots [] :class-allocation-values [] :default-object-cache nil :options (:custom-groups nil)) closql-object)
  object-of-class-p(
  closql-object--eieio-childp(
  (if (closql-object--eieio-childp obj) (closql-oset obj slot value) (funcall fn obj slot value))
  eieio-oset--closql-oset(#f(compiled-function (obj slot value) "Do the work for the macro `oset'.\nFills in OBJ's SLOT with VALUE." #<bytecode 0x1dbd77ca5a3090ab>)
  apply(eieio-oset--closql-oset #f(compiled-function (obj slot value) "Do the work for the macro `oset'.\nFills in OBJ's SLOT with VALUE." #<bytecode 0x1dbd77ca5a3090ab>) (
  eieio-oset(
  eieio-set-defaults(
  #f(compiled-function (cname superclasses slots options) "Define CNAME as a new subclass of SUPERCLASSES.\nSLOTS are the slots residing in that class definition, and OPTIONS\nholds the class options.\nSee `defclass' for more information." #<bytecode -0x160a51f5d0dec9cd>)(purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil)
  apply(#f(compiled-function (cname superclasses slots options) "Define CNAME as a new subclass of SUPERCLASSES.\nSLOTS are the slots residing in that class definition, and OPTIONS\nholds the class options.\nSee `defclass' for more information." #<bytecode -0x160a51f5d0dec9cd>) (purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil))
  eieio-defclass-internal(purpose-conf nil ((mode-purposes :initarg :mode-purposes :initform 'nil :type purpose-mode-alist) (name-purposes :initarg :name-purposes :initform 'nil :type purpose-name-alist) (regexp-purposes :initarg :regexp-purposes :initform 'nil :type purpose-regexp-alist)) nil)
  eval-buffer(#<buffer  *load*-619191> nil "/Users/someuser/.emacs.d/elpa/28.0/develop/wi..." nil t)  ; Reading at buffer position 2784
  load-with-code-conversion("/Users/someuser/.emacs.d/elpa/28.0/develop/wi..." "/Users/someuser/.emacs.d/elpa/28.0/develop/wi..." nil t)
  #<subr require>(window-purpose-configuration)
  apply(#<subr require> window-purpose-configuration)
  require(window-purpose-configuration)
  eval-buffer(#<buffer  *load*> nil "/Users/someuser/.emacs.d/elpa/28.0/develop/wi..." nil t)  ; Reading at buffer position 2664
  load-with-code-conversion("/Users/someuser/.emacs.d/elpa/28.0/develop/wi..." "/Users/someuser/.emacs.d/elpa/28.0/develop/wi..." nil t)
  #<subr require>(window-purpose)
  apply(#<subr require> window-purpose)
  require(window-purpose)
  (lambda nil (require 'window-purpose))()
  funcall((lambda nil (require 'window-purpose)))
  lazy-load-window-purpose()
  spacemacs//transient-hook-lazy-load-window-purpose()
  redisplay_internal\ \(C\ function\)()
tarsius commented 4 years ago

https://github.com/emacscollective/closql/commit/079e09f337c87dcc72cd63fc539602a61de436eb should do it.

robbyoconnor commented 4 years ago

Broken. Recursive load issue.

On 6/1/20 7:57 PM, Ag Ibragimov wrote:

Hmm.. interesting. @robbyoconnor https://github.com/robbyoconnor could you please try one thing (I'm curious). You still use Spacemacs and have github layer installed, right? Can you try |M-x gist-list|? Does that still work for you?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/bmag/emacs-purpose/issues/158#issuecomment-637187269, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAAFUMHLVZQPSX2KM6NBODTRUQ56TANCNFSM4JBPF46A.

tarsius commented 4 years ago

Newer commit. May fix issue.

nixmaniack commented 4 years ago

Still the same issue with the new patch as well. Didn't help. Same backtrace. Let me know if you need any more information from the environment when the issue occurs.

tarsius commented 4 years ago

Please try the both branch. It uses both fix attempts.

nixmaniack commented 4 years ago

I didn't see "Recursive Load Error" when using both branch but it makes other packages break.

Error (use-package): org-dashboard/:catch: Wrong type argument: eieio--class, #s(#s(eieio--class closql-database nil (#s(eieio--class emacsql-sqlite-connection nil (#s(eieio--class emacsql-connection nil nil [#s(cl-slot-descriptor process unbound process nil) #s(cl-slot-descriptor log-buffer nil (or null buffer) ((:documentation . "Output log (debug)."))) #s(cl-slot-descriptor finalizer unbound t ((:documentation . "Object returned from `make-finalizer'.")))] #s(hash-table size 65 test eq rehash-size 1.5 rehash-threshold 0.8125 data (process 0 log-buffer 1 finalizer 2)) (emacsql-sqlite-connection) ((:process . process) (:log-buffer . log-buffer)) [#s(cl-slot-descriptor types nil t ((:documentation . "Maps EmacSQL types to SQL types.")))] [nil] #s(#5 unbound nil unbound) (:custom-groups nil (:documentation "A connection to a SQL database.") :abstract t)) #s(eieio--class emacsql-protocol-mixin nil nil [] #s(hash-table size 65 test eq rehash-size 1.5 rehash-threshold 0.8125 data ()) (emacsql-sqlite-connection) nil [] [] #s(#5) (:custom-groups nil (:documentation "A mixin for back-ends following the EmacSQL protocol.
The back-end prompt must be a single \"]\" character. This prompt
value was chosen because it is unreadable. Output must have
exactly one row per line, fields separated by whitespace. NULL
must display as \"nil\".") :abstract t))) [#s(cl-slot-descriptor process unbound process nil) #s(cl-slot-descriptor log-buffer nil (or null buffer) ((:documentation . "Output log (debug)."))) #s(cl-slot-descriptor finalizer unbound t ((:documentation . "Object returned from `make-finalizer'."))) #s(cl-slot-descriptor file unbound (or null string) ((:documentation . "Database file name.")))] #s(hash-table size 65 test eq rehash-size 1.5 rehash-threshold 0.8125 data (process 0 log-buffer 1 finalizer 2 file 3)) (closql-database) ((:process . process) (:log-buffer . log-buffer) (:file . file)) [#s(cl-slot-descriptor types '((integer "INTEGER") (float "REAL") (object "TEXT") (nil nil)) t ((:documentation . "Maps EmacSQL types to SQL types.")))] [((integer "INTEGER") (float "REAL") (object "TEXT") (nil nil))] #s(#3 unbound nil unbound unbound) (:custom-groups nil (:documentation "A connection to a SQLite database.")))) [#s(cl-slot-descriptor process unbound process nil) #s(cl-slot-descriptor log-buffer nil (or null buffer) ((:documentation . "Output log (debug)."))) #s(cl-slot-descriptor finalizer unbound t ((:documentation . "Object returned from `make-finalizer'."))) #s(cl-slot-descriptor file unbound (or null string) ((:documentation . "Database file name.")))] #s(hash-table size 65 test eq rehash-size 1.5 rehash-threshold 0.8125 data (process 0 log-buffer 1 finalizer 2 file 3)) nil ((:process . process) (:log-buffer . log-buffer) (:file . file)) [#s(cl-slot-descriptor object-class unbound t nil) #s(cl-slot-descriptor types '((integer "INTEGER") (float "REAL") (object "TEXT") (nil nil)) t ((:documentation . "Maps EmacSQL types to SQL types.")))] [unbound ((integer "INTEGER") (float "REAL") (object "TEXT") (nil nil))] nil (:custom-groups nil)) nil nil nil nil), child
Error (use-package): org-noter/:catch: Wrong type argument: eieio--class, #s(#s(eieio--class closql-database nil (#s(eieio--class emacsql-sqlite-connection nil (#s(eieio--class emacsql-connection nil nil [#s(cl-slot-descriptor process unbound process nil) #s(cl-slot-descriptor log-buffer nil (or null buffer) ((:documentation . "Output log (debug)."))) #s(cl-slot-descriptor finalizer unbound t ((:documentation . "Object returned from `make-finalizer'.")))] #s(hash-table size 65 test eq rehash-size 1.5 rehash-threshold 0.8125 data (process 0 log-buffer 1 finalizer 2)) (emacsql-sqlite-connection) ((:process . process) (:log-buffer . log-buffer)) [#s(cl-slot-descriptor types nil t ((:documentation . "Maps EmacSQL types to SQL types.")))] [nil] #s(#5 unbound nil unbound) (:custom-groups nil (:documentation "A connection to a SQL database.") :abstract t)) #s(eieio--class emacsql-protocol-mixin nil nil [] #s(hash-table size 65 test eq rehash-size 1.5 rehash-threshold 0.8125 data ()) (emacsql-sqlite-connection) nil [] [] #s(#5) (:custom-groups nil (:documentation "A mixin for back-ends following the EmacSQL protocol.
The back-end prompt must be a single \"]\" character. This prompt
value was chosen because it is unreadable. Output must have
exactly one row per line, fields separated by whitespace. NULL
must display as \"nil\".") :abstract t))) [#s(cl-slot-descriptor process unbound process nil) #s(cl-slot-descriptor log-buffer nil (or null buffer) ((:documentation . "Output log (debug)."))) #s(cl-slot-descriptor finalizer unbound t ((:documentation . "Object returned from `make-finalizer'."))) #s(cl-slot-descriptor file unbound (or null string) ((:documentation . "Database file name.")))] #s(hash-table size 65 test eq rehash-size 1.5 rehash-threshold 0.8125 data (process 0 log-buffer 1 finalizer 2 file 3)) (closql-database) ((:process . process) (:log-buffer . log-buffer) (:file . file)) [#s(cl-slot-descriptor types '((integer "INTEGER") (float "REAL") (object "TEXT") (nil nil)) t ((:documentation . "Maps EmacSQL types to SQL types.")))] [((integer "INTEGER") (float "REAL") (object "TEXT") (nil nil))] #s(#3 unbound nil unbound unbound) (:custom-groups nil (:documentation "A connection to a SQLite database.")))) [#s(cl-slot-descriptor process unbound process nil) #s(cl-slot-descriptor log-buffer nil (or null buffer) ((:documentation . "Output log (debug)."))) #s(cl-slot-descriptor finalizer unbound t ((:documentation . "Object returned from `make-finalizer'."))) #s(cl-slot-descriptor file unbound (or null string) ((:documentation . "Database file name.")))] #s(hash-table size 65 test eq rehash-size 1.5 rehash-threshold 0.8125 data (process 0 log-buffer 1 finalizer 2 file 3)) nil ((:process . process) (:log-buffer . log-buffer) (:file . file)) [#s(cl-slot-descriptor object-class unbound t nil) #s(cl-slot-descriptor types '((integer "INTEGER") (float "REAL") (object "TEXT") (nil nil)) t ((:documentation . "Maps EmacSQL types to SQL types.")))] [unbound ((integer "INTEGER") (float "REAL") (object "TEXT") (nil nil))] nil (:custom-groups nil)) nil nil nil nil), child
tarsius commented 4 years ago

I am unable to reproduce this with Emacs 26.3, 27.0.92 or master. Is anyone beside @nixmaniack still experiencing this? I don't know what else to do at this point. If you are affected, then please try to provide easy step to reproduce this issue, starting from a pristine .emacs.d with no installed packages or configuration (except of course the things necessary to reproduce the issue). Also state what Emacs version you are using.

robbyoconnor commented 4 years ago

@nixmaniack did you require window-purpose in your user-config?

robbyoconnor commented 4 years ago

I am unable to reproduce this with Emacs 26.3, 27.0.92 or master. Is anyone beside @nixmaniack still experiencing this? I don't know what else to do at this point. If you are affected, then please try to provide easy step to reproduce this issue, starting from a pristine .emacs.d with no installed packages or configuration (except of course the things necessary to reproduce the issue). Also state what Emacs version you are using.

Recursive load issues seem gone for now

nixmaniack commented 4 years ago

@tarsius @robbyoconnor The "Recursive Load" error is not there after the patch.

did you require window-purpose in your user-config?

This was not necessary (and shouldn't be if we're fixing the issue!).

I'm running emacs master.

I was trying to point out the errors(no recursive load) thrown by other two packages because of this change.

Error (use-package): org-noter/:catch: Wrong type argument: eieio--class, #s(#s(eieio--class closql-database nil (#s(eieio--class emacsql-sqlite-connection nil (#s(eieio--class emacsql-connection nil nil [#s(cl-slot-descriptor process unbound process nil) #s(cl-slot-descriptor log-buffer nil (or null buffer) ((:documentation . "Output log (debug)."))) #s(cl-slot-descriptor finalizer unbound t ((:documentation . "Object returned from `make-finalizer'.")))] #s(hash-table size 65 test eq rehash-size 1.5 rehash-threshold 0.8125 data (process 0 log-buffer 1 finalizer 2)) (emacsql-sqlite-connection) ((:process . process) (:log-buffer . log-buffer)) [#s(cl-slot-descriptor types nil t ((:documentation . "Maps EmacSQL types to SQL types.")))] [nil] #s(#5 unbound nil unbound) (:custom-groups nil (:documentation "A connection to a SQL database.") :abstract t)) #s(eieio--class emacsql-protocol-mixin nil nil [] #s(hash-table size 65 test eq rehash-size 1.5 rehash-threshold 0.8125 data ()) (emacsql-sqlite-connection) nil [] [] #s(#5) (:custom-groups nil (:documentation "A mixin for back-ends following the EmacSQL protocol.
The back-end prompt must be a single \"]\" character. This prompt
value was chosen because it is unreadable. Output must have
exactly one row per line, fields separated by whitespace. NULL
must display as \"nil\".") :abstract t))) [#s(cl-slot-descriptor process unbound process nil) #s(cl-slot-descriptor log-buffer nil (or null buffer) ((:documentation . "Output log (debug)."))) #s(cl-slot-descriptor finalizer unbound t ((:documentation . "Object returned from `make-finalizer'."))) #s(cl-slot-descriptor file unbound (or null string) ((:documentation . "Database file name.")))] #s(hash-table size 65 test eq rehash-size 1.5 rehash-threshold 0.8125 data (process 0 log-buffer 1 finalizer 2 file 3)) (closql-database) ((:process . process) (:log-buffer . log-buffer) (:file . file)) [#s(cl-slot-descriptor types '((integer "INTEGER") (float "REAL") (object "TEXT") (nil nil)) t ((:documentation . "Maps EmacSQL types to SQL types.")))] [((integer "INTEGER") (float "REAL") (object "TEXT") (nil nil))] #s(#3 unbound nil unbound unbound) (:custom-groups nil (:documentation "A connection to a SQLite database.")))) [#s(cl-slot-descriptor process unbound process nil) #s(cl-slot-descriptor log-buffer nil (or null buffer) ((:documentation . "Output log (debug)."))) #s(cl-slot-descriptor finalizer unbound t ((:documentation . "Object returned from `make-finalizer'."))) #s(cl-slot-descriptor file unbound (or null string) ((:documentation . "Database file name.")))] #s(hash-table size 65 test eq rehash-size 1.5 rehash-threshold 0.8125 data (process 0 log-buffer 1 finalizer 2 file 3)) nil ((:process . process) (:log-buffer . log-buffer) (:file . file)) [#s(cl-slot-descriptor object-class unbound t nil) #s(cl-slot-descriptor types '((integer "INTEGER") (float "REAL") (object "TEXT") (nil nil)) t ((:documentation . "Maps EmacSQL types to SQL types.")))] [unbound ((integer "INTEGER") (float "REAL") (object "TEXT") (nil nil))] nil (:custom-groups nil)) nil nil nil nil), child
wyuenho commented 4 years ago

I can confirm this recursive load problem is fixed after emacscollective/closql@079e09f. I suggest @nixmaniack open a new bug on emacscollective/closql to continue the conversation there.