Package: emacs Version: 29.0.60 Severity: normal X-Debbugs-Cc: "Lars Ingebrigtsen" ;;; init.el (require 'multisession) (define-multisession-variable test-var nil "Test var" :package "test") (setf (multisession-value test-var) t) ;;; end of init.el emacs M-x list-multisession-values e Debugger entered--Lisp error: (wrong-type-argument symbolp (intern (cdr id))) multisession-edit-value(("test" . "test-var")) funcall-interactively(multisession-edit-value ("test" . "test-var")) command-execute(multisession-edit-value) The problem comes from this change commit bd586121ac21e046f60f75eeb0200866c38d6f9f Author: Lars Ingebrigtsen Date: 2022-01-22 11:56:13 +0100 Make the test for existing multisession variables more sensible * lisp/emacs-lisp/multisession.el (multisession-edit-value): Unconfuse the code. diff --git a/lisp/emacs-lisp/multisession.el b/lisp/emacs-lisp/multisession.el index 4a293796a8..25307594c6 100644 --- a/lisp/emacs-lisp/multisession.el +++ b/lisp/emacs-lisp/multisession.el @@ -437,8 +437,8 @@ multisession-edit-value (let* ((object (or ;; If the multisession variable already exists, use ;; it (so that we update it). - (and (boundp (intern-soft (cdr id))) - (symbol-value (intern (cdr id)))) + (and (intern-soft (cdr id)) + (bound-and-true-p (intern (cdr id)))) ;; Create a new object. (make-multisession :package (car id) because `bound-and-true-p' is a macro that requires as argument a symbol, which (intern ...) is not. ELISP> (bound-and-true-p (intern "whatever")) *** Eval error *** Wrong type argument: symbolp, (intern "whatever") so I'm afraid this change was never tested. The fix is reverting the change, doing perhaps this diff --git a/lisp/emacs-lisp/multisession.el b/lisp/emacs-lisp/multisession.el index 9d6e8c0d88..78d4137317 100644 --- a/lisp/emacs-lisp/multisession.el +++ b/lisp/emacs-lisp/multisession.el @@ -447,8 +447,9 @@ multisession-edit-value (let* ((object (or ;; If the multisession variable already exists, use ;; it (so that we update it). - (and (intern-soft (cdr id)) - (bound-and-true-p (intern (cdr id)))) + (if-let (sym (intern-soft (cdr id))) + (and (boundp sym) (symbol-value sym)) + nil) ;; Create a new object. (make-multisession :package (car id)