我在(setq split-width-threshold 100)
中设置dotspacemacs/user-config
,以便在窗口足够宽时使各种缓冲区水平分割。这适用于magit状态等。
但是,编译日志缓冲区似乎忽略了这一点,并始终在底部打开。
如何使编译缓冲区符合split-width-threshold
?或者,如何让它始终水平分割?
我对emacs和spacemacs都很陌生。
答案 0 :(得分:1)
编译不遵守您的设置的原因是因为默认情况下启用了purpose-mode
的spacemacs。如果您使用它,那么您可以根据需要修改目的布局。但是,如果您没有使用purpose-mode
,那么禁用它会为我解决问题。要试一试,你可以SPC SPC purpose-mode RET
然后(只打开一个窗口)运行编译。
答案 1 :(得分:1)
这是一种方法(SPC f e d
进入配置文件,然后可以将其放入现有的dotspacemacs-user-config
函数中)—在这里,我展示了如何同时获取grep和编译缓冲区在右侧弹出:
(require 'dash)
(defun my/popwin-on-right (alist-item)
(let ((props-alist (seq-partition (cdr alist-item) 2)))
(setf (alist-get :position props-alist) '(right))
(setf (alist-get :height props-alist) '(1.0))
(setf (alist-get :width props-alist) '(0.5))
(let ((flattened (apply #'append props-alist)))
(cons (car alist-item) flattened))))
(custom-set-variables
'(popwin:special-display-config
(--map-when (-contains? '("*compilation*" "*grep*") (car it))
(my/popwin-on-right it)
popwin:special-display-config)))
,或者您可以直接设置popwin:special-display-config
,用文字列表替换那里的--map-when
调用。只需查看变量的现有值即可,例如使用SPC SPC ielm <RET>
获得良好的格式,然后将其剪切并粘贴(您需要使用'
引用列表)。或者,当我想将可自定义的变量设置为文字值时,也可以执行以下操作:使用SPC SPC customize
,让其使用生成的代码块更新spacemacs配置文件的末尾,然后复制自定义-它会在您的dotspacemacs-user-config
中生成的集合变量,并删除customize
生成的代码块)。
答案 2 :(得分:0)
(setq split-height-threshold nil)
(setq split-width-threshold 0)
如果您希望这些设置仅影响compile
(defadvice compile (around split-horizontally activate)
(let ((split-width-threshold 0)
(split-height-threshold nil))
ad-do-it))