master bdc9348b9ed 03/12: Merge from origin/emacs-31
Eli Zaretskii <[email protected]>
| Newsgroups | gmane.emacs.diffs |
|---|---|
| Message-ID | <[email protected]> |
branch: master commit bdc9348b9ed6766099c3a3adf53832d7c244d02f Merge: 3c680886ec0 65eff4fd4f4 Author: Eli Zaretskii <[email protected]> Commit: Eli Zaretskii <[email protected]> Merge from origin/emacs-31 65eff4fd4f4 ; Properly initialize 'package-load-list' for 'package-is... effafd92e05 Load all dependencies when isolating a package 293eaf323a0 Have 'frame-deletable-p' check other frame's terminal (Bu... --- lisp/emacs-lisp/package.el | 20 +++++++++++++++++--- lisp/frame.el | 16 +++++++++------- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 26c86fe1526..70b641dda16 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -2652,8 +2652,22 @@ intended for testing Emacs and/or the packages in a clean environment." current-prefix-arg))) (let* ((name (concat "package-isolate-" (mapconcat #'package-desc-full-name packages ","))) - (dependencies (apply #'append (mapcar #'package-desc-reqs packages))) - (all-packages (package-compute-transaction packages dependencies)) + (all-packages + (delete-dups + (nconc + (mapcan + (pcase-lambda (`(,name ,vers)) + (and (not (eq name 'emacs)) + (not (cl-find name packages :key #'package-desc-name)) + (if-let* ((desc (package-get-descriptor + name t + (lambda (desc) + (version-list-<= vers (package-desc-version desc)))))) + (list desc) + (error "Failed to find package: (%s %S)" name vers)))) + (package--dependencies packages)) + packages))) + (all-packages (seq-remove #'package-built-in-p all-packages)) (package-alist (copy-tree package-alist t)) (temp-install-dir nil) initial-scratch-message load-list) (when-let* ((missing (seq-remove #'package-installed-p all-packages)) @@ -2694,7 +2708,7 @@ intended for testing Emacs and/or the packages in a clean environment." (append (list package-user-dir) temp-install-dir package-directory-list)) - (setq package-load-list ',package-load-list) + (setq package-load-list ',load-list) (package--activate-all))))))) diff --git a/lisp/frame.el b/lisp/frame.el index 36c14304ec7..d6cd3dea359 100644 --- a/lisp/frame.el +++ b/lisp/frame.el @@ -198,7 +198,7 @@ FRAME must be a live frame and defaults to the selected frame. FRAME cannot be safely deleted in the following cases: -- FRAME is the only visible or iconified frame. +- There is no other visible or iconified frame on FRAME's terminal. - FRAME hosts the active minibuffer window that does not follow the selected frame. @@ -216,6 +216,7 @@ will be better to wrap the `delete-frame' call in a `condition-case' form." (setq frame (window-normalize-frame frame)) (let ((active-minibuffer-window (active-minibuffer-window)) + (terminal (frame-terminal frame)) deletable) (catch 'deletable (when (and active-minibuffer-window @@ -228,12 +229,13 @@ form." (let ((frames (delq frame (frame-list)))) (dolist (other frames) - ;; A suitable "other" frame must be either visible or - ;; iconified. Child frames and frames with a non-nil - ;; 'delete-before' parameter do not qualify as other frame - - ;; either of these will depend on a "suitable" frame found in - ;; this loop. - (unless (or (frame-parent other) + ;; A suitable "other" frame must be on the same terminal as + ;; FRAME and must be either visible or iconified. Child + ;; frames and frames with a non-nil 'delete-before' parameter + ;; do not qualify as other frame - either of these will depend + ;; on a "suitable" frame found in this loop. + (unless (or (not (eq (frame-terminal other) terminal)) + (frame-parent other) (frame-parameter other 'delete-before) (not (frame-visible-p other))) (setq deletable t))