В настоящее время я работаю с ruby и rspec. Мне очень нравится идея иметь отдельный кадр в другом мониторе, показывающий мне буфер компиляции. Моя текущая настройка использует фрейм 'code' (в котором я выполняю реальную работу) и фрейм 'test-result' (в котором я вижу результаты rspec)
Проблема в том, что когда я пытаюсь открыть какую-то ошибку или файл компиляции во фрейме 'test-result', окно разбивается на этот фрейм. Что я действительно хотел бы сделать, так это открыть его в моем «кодовом» фрейме.
Я уже использую эту опцию display-buffer-reuse-frames
. Я также пытался установить окно результатов компиляции dedicated
, но всякий раз, когда emacs пытается открыть новое окно, создается новый фрейм (что особенно ужасно, если вы используете Helm.)
Есть ли простой способ добиться этого?
popwin.el
из MELPA всплывающие окна компиляции и помощи, которые сохраняются доC-g
нажатия. Если они нужны мне полный рабочий день, я просто переключаюсь на них в другом окне. Я не думал о закреплении окон, потому что Emacs делаетsplit-windows-sensibly
.Ответы:
Вам необходимо настроить 600-фунтовую гориллу,
display-buffer-alist
которая определяет, какdisplay-buffer
выбрать место для отображения буфера. Это делаетdisplay-buffer-reuse-frames
устаревшим в более новом Emacsen. Вот конфиг, который должен вам помочь (по крайней мере в emacs 24.3).Как видите, я использую регулярное выражение для сопоставления с буфером журнала компиляции. Документация
display-buffer
должна дать вам представление о том, что происходит. Только на голову, что это не самая приятная часть документации, которую вы когда-либо читали. Я добавил их последовательно, чтобы регулярное выражение компилируемого журнала совпадало с общим регулярным выражением. Приспособьте регулярное выражение к вашим потребностям.РЕДАКТИРОВАТЬ Чтобы сделать любой кадр нерасщепляемым, вы можете оценить
M-: (set-frame-parameter nil 'unsplittable t)
в этом конкретном кадре. Замените ноль на обязательный,FRAME
если делаете это из elisp. Между этими двумя настройками он должен сделать фрейм компиляции эксклюзивным, если вы не найдете файл в этом фрейме.источник