;; -*- no-byte-compile: t; -*- ;;; ../core/test/core-ui.el (defmacro with-temp-windows!! (&rest body) (declare (indent defun)) `(cl-flet ((split-window (symbol-function #'split-window-horizontally))) (delete-other-windows) (let ((a (get-buffer-create "a")) (b (get-buffer-create "b")) (split-width-threshold 0) (window-min-width 0)) ,@body))) ;; (def-test! set-mode-name (let ((after-change-major-mode-hook '(doom|set-mode-name)) (doom-major-mode-names '((text-mode . "abc") (lisp-mode . (lambda () "xyz")) (js-mode . t)))) (text-mode) (should (equal mode-name "abc")) (lisp-mode) (should (equal mode-name "xyz")) (should-error (js-mode)))) (def-test! protect-visible-buffers (with-temp-windows!! (let ((kill-buffer-query-functions '(doom|protect-visible-buffers))) (switch-to-buffer a) (split-window) (switch-to-buffer b) (split-window) (switch-to-buffer a) (should-not (kill-buffer)) (select-window (get-buffer-window b)) (should (kill-buffer)))))