如何使spacemacs编译缓冲区水平分割?

时间:2017-06-26 13:43:19

标签: spacemacs

我在(setq split-width-threshold 100)中设置dotspacemacs/user-config,以便在窗口足够宽时使各种缓冲区水平分割。这适用于magit状态等。

但是,编译日志缓冲区似乎忽略了这一点,并始终在底部打开。

如何使编译缓冲区符合split-width-threshold?或者,如何让它始终水平分割?

我对emacs和spacemacs都很陌生。

3 个答案:

答案 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)

来自another answer

(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))