【求助】名字如*name*的buffer使用minibuffer替代

(setq vmacs-ignore-buffers
      (list
       "\\` " "\*Helm" "\*helm"
       "*Launch" "\*Warnings\*"
       "\*RE-Builder\*"
       "\*dape-repl\*" "\*dape-info"
       "\*vc-diff\*" "\*magit-" "\*vc-" "\*vc*"
       "*Backtrace*" "*Package-Lint*" "\*Completions\*" "\*Compile-Log\*"
       "\*vc-change-log\*" "\*VC-log\*"
       "\*Async Shell Command\*" "\*Shell Command Output\*"
       "\*lsp" "\*ccls" "\*gopls" "\*bingo" "\*mspyls" "\*EGLOT"
       "\*sdcv\*" "\*tramp"  "\*Gofmt Errors\*"
       "\*Ido Completions\*" "\*Flycheck " "\*Flymake"
       "magit-process" "magit-diff" "magit-stash"))

(defvar boring-window-modes
  '(help-mode compilation-mode log-view-mode log-edit-mode
              gnus-article-mode
              org-agenda-mode magit-revision-mode ibuffer-mode))


(defun vmacs-filter(buf &optional ignore-buffers)
  (cl-find-if
   (lambda (f-or-r)
     (string-match-p f-or-r buf))
   (or ignore-buffers vmacs-ignore-buffers)))



(defun bury-boring-windows(&optional bury-cur-win-if-boring)
  "close boring *Help* windows with `C-g'"
  (let ((opened-windows (window-list))
        (cur-buf-win (get-buffer-window)))
    (dolist (win opened-windows)
      (with-current-buffer (window-buffer win)
        (when (or (memq  major-mode boring-window-modes)
                  (vmacs-filter (buffer-name)))
          (when (and (>  (length (window-list)) 1)
                     (not (minibufferp))
                     (or bury-cur-win-if-boring
                         (not (equal cur-buf-win win)))
                     (delete-window win))))))))

(defun vmacs-bury-boring-windows ()
  (when (active-minibuffer-window)
    (select-window (active-minibuffer-window))
    (minibuffer-keyboard-quit))
  (when (equal last-command 'keyboard-quit)
    (bury-boring-windows)))

(advice-add 'keyboard-quit :before #'vmacs-bury-boring-windows)

我的解决办法 两次C-g