132 lines
4.2 KiB
EmacsLisp
132 lines
4.2 KiB
EmacsLisp
;; -*- no-byte-compile: t; -*-
|
|
;;; ../core/test/test-core-ui.el
|
|
|
|
(describe "core/ui"
|
|
(describe "doom|set-mode-name"
|
|
:var (doom-major-mode-names after-change-major-mode-hook)
|
|
(before-all
|
|
(setq doom-major-mode-names
|
|
'((text-mode . "abc")
|
|
(lisp-mode . (lambda () "xyz"))
|
|
(js-mode . t))
|
|
after-change-major-mode-hook '(doom|set-mode-name)))
|
|
|
|
(it "changes `mode-name' to match a given string"
|
|
(text-mode)
|
|
(expect mode-name :to-equal "abc"))
|
|
|
|
(it "changes `mode-name' to the result of a function"
|
|
(lisp-mode)
|
|
(expect mode-name :to-equal "xyz"))
|
|
|
|
(it "should fail if given an invalid name"
|
|
(expect (js-mode) :to-throw 'error)))
|
|
|
|
|
|
(describe "doom|protect-visible-buffers"
|
|
:var (kill-buffer-query-functions wconf a b)
|
|
(before-each
|
|
(setq a (switch-to-buffer (get-buffer-create "a"))
|
|
b (get-buffer-create "b")
|
|
kill-buffer-query-functions '(doom|protect-visible-buffers)
|
|
wconf (current-window-configuration))
|
|
(delete-other-windows))
|
|
|
|
(after-each
|
|
(let (kill-buffer-query-functions kill-buffer-hook)
|
|
(kill-buffer a)
|
|
(kill-buffer b))
|
|
(set-window-configuration wconf))
|
|
|
|
(it "shouldn't kill buffers that are visible in more than one window"
|
|
(with-temp-buffer-window
|
|
(switch-to-buffer a) (split-window)
|
|
(switch-to-buffer b) (split-window)
|
|
(switch-to-buffer a)
|
|
(expect (kill-buffer) :to-be nil)
|
|
|
|
(select-window (get-buffer-window b))
|
|
(expect (kill-buffer)))))
|
|
|
|
|
|
(describe "doom|protect-fallback-buffer"
|
|
:var (kill-buffer-query-functions a b)
|
|
(before-all
|
|
(setq kill-buffer-query-functions '(doom|protect-fallback-buffer)))
|
|
|
|
(it "should kill other buffers"
|
|
(expect (kill-buffer (get-buffer-create "a"))))
|
|
|
|
(it "shouldn't kill the fallback buffer"
|
|
(expect (not (kill-buffer (doom-fallback-buffer))))))
|
|
|
|
|
|
(describe "switch hooks"
|
|
:var (before-hook after-hook a b)
|
|
(before-each
|
|
(setq a (switch-to-buffer (get-buffer-create "a"))
|
|
b (get-buffer-create "b"))
|
|
(spy-on 'before-hook)
|
|
(spy-on 'after-hook)
|
|
(doom|init-custom-hooks))
|
|
(after-each
|
|
(doom|init-custom-hooks 'disable)
|
|
(kill-buffer a)
|
|
(kill-buffer b))
|
|
|
|
|
|
(describe "switch-buffer"
|
|
:var (doom-before-switch-buffer-hook
|
|
doom-after-switch-buffer-hook)
|
|
(before-each
|
|
(setq doom-before-switch-buffer-hook '(before-hook)
|
|
doom-after-switch-buffer-hook '(after-hook)))
|
|
(after-each
|
|
(setq doom-before-switch-buffer-hook nil
|
|
doom-after-switch-buffer-hook nil))
|
|
|
|
(it "should trigger when switching buffers"
|
|
(switch-to-buffer b)
|
|
(switch-to-buffer a)
|
|
(switch-to-buffer b)
|
|
(expect 'before-hook :to-have-been-called-times 3)
|
|
(expect 'after-hook :to-have-been-called-times 3))
|
|
|
|
(it "should trigger only once on the same buffer"
|
|
(switch-to-buffer b)
|
|
(switch-to-buffer b)
|
|
(switch-to-buffer a)
|
|
(expect 'before-hook :to-have-been-called-times 2)
|
|
(expect 'after-hook :to-have-been-called-times 2)))
|
|
|
|
|
|
(describe "switch-window"
|
|
:var (doom-before-switch-window-hook
|
|
doom-after-switch-window-hook
|
|
x y)
|
|
(before-each
|
|
(delete-other-windows)
|
|
(setq x (get-buffer-window a)
|
|
y (save-selected-window (split-window)))
|
|
(with-selected-window y
|
|
(switch-to-buffer b))
|
|
(select-window x)
|
|
(spy-calls-reset 'before-hook)
|
|
(spy-calls-reset 'after-hook)
|
|
(setq doom-before-switch-window-hook '(before-hook)
|
|
doom-after-switch-window-hook '(after-hook)))
|
|
|
|
(it "should trigger when switching windows"
|
|
(select-window y)
|
|
(select-window x)
|
|
(select-window y)
|
|
(expect 'before-hook :to-have-been-called-times 3)
|
|
(expect 'after-hook :to-have-been-called-times 3))
|
|
|
|
(it "should trigger only once on the same window"
|
|
(select-window y)
|
|
(select-window y)
|
|
(select-window x)
|
|
(expect 'before-hook :to-have-been-called-times 2)
|
|
(expect 'after-hook :to-have-been-called-times 2)))))
|
|
|