My frame geometry is two vertical windows. I set cmake-build-never-split to nil thinking that it will give me M-x compile behaviour. But what happens instead in cmake-build--compile is that split does not happen but the defun assumes the existence of the compilation window, which was never created. Then (let ((w (get-buffer-window buffer-name t)) results in w set to nil, which is invalid arg value for with-selected-window, throwing a Lisp error somewhere in it.
For me the easiest workaround to get fully-M-x-compile-like behaviour and never split windows appears to run (run-compile) without any window/buffer manipulation at all. Obviously this would need hiding behind some customisation:
;; compile saves buffers; rely on this now
(let* ((compilation-buffer-name-function #'cmake-build--build-buffer-name))
(cl-flet ((run-compile () (compile (concat "time " command) t)))
(run-compile))
My frame geometry is two vertical windows. I set
cmake-build-never-split
tonil
thinking that it will give meM-x compile
behaviour. But what happens instead incmake-build--compile
is that split does not happen but the defun assumes the existence of the compilation window, which was never created. Then(let ((w (get-buffer-window buffer-name t))
results inw
set tonil
, which is invalid arg value forwith-selected-window
, throwing a Lisp error somewhere in it.For me the easiest workaround to get fully-
M-x-compile
-like behaviour and never split windows appears to run(run-compile)
without any window/buffer manipulation at all. Obviously this would need hiding behind some customisation: