Flycheck buffers splitting up vertically since emacs 28 update reddit / emacs ---------------------------------------------------------------------- bananafingerz · 2022-07-20 17:50 back in v27, flycheck-error-list and flycheck-verify-setup used to appear in a small buffer on the bottom of the frame. They are now hijacking the sides of my frame which is annoying, since i cant event read the error. why is that? flycheck docs advises this, but it doesnt work: [https://www.flycheck.org/en/latest/user/error- list.html](https://www.flycheck.org/en/latest/user/error-list.html) (add-to-list 'display-buffer-alist `(,(rx bos "*Flycheck errors*" eos) (display-buffer-reuse-window display-buffer-in-side-window) (side . bottom) (reusable-frames . visible) (window-height . 0.33))) ​ ---------------------------------------------------------------------- PhantomSeahorse · 2022-07-20 18:38 Do you mean horizontally? ---------------------------------------------------------------------- bananafingerz · 2022-07-20 19:42 they end up being two vertical buffers, side by side, and I want then to be two horizontal buffers one on top of another. ---------------------------------------------------------------------- PhantomSeahorse · 2022-07-20 20:00 Yeah having two windows side of side is called splitting horizontally since you are increasing the number of windows along the x-axis ---------------------------------------------------------------------- bananafingerz · 2022-07-20 23:16 right. do you know to force it to split vertically likr it used to happen in 27 ? ---------------------------------------------------------------------- PhantomSeahorse · 2022-07-21 00:11 Interesting. I’m on emacs 28 and I don’t have this problem. Can you post some screenshot? You can also try putting emacs to full screen. Sometimes the frame size changes window behavior ---------------------------------------------------------------------- Lucius_Martius · 2022-07-21 13:13 I have found that using a predicate function and checking for modes is a lot more reliable and flexible than pattern matching buffer names. Here's what I do for flycheck: (add-to-list 'display-buffer-alist '(my-window-bottom-left-side-window-p (display-buffer-in-side-window) (window-height . 0.30) (window-width . 0.55) (dedicated . t) (side . bottom) (slot . 0) (window-parameters . ((no-other-window . t) (no-delete-other-windows . t) (mode-line-format . 'none))))) (defvar my-window-bottom-left-modes '()) (defun my-window-bottom-left-side-window-p (buf act) (with-current-buffer buf (member major-mode my-window-bottom- left-modes))) ;; Then down in the flycheck configuration (add-to-list 'my-window-bottom-left-modes 'flycheck-error-list- mode) I have the bottom region split into two halves (thus `window-width` and `slot`), one for flycheck (actually now flymake, but it worked a couple weeks ago), search and other info windows on the left, one for shells on the right. But it should work for a single bottom side- window as well. The `dedicated . t` and `window-parameters` are not necessary, but help making the side windows not targetable by other functions and save some space by omitting the mode-line. Also note that display-buffer-alist working as expected often hinges on other calls to display-buffer not doing weird things either (which they tend to). I find it works best if you route any and all calls to display-buffer through display-buffer-alist by ending the list with a catch-all predicate and a custom `my-display-buffer-main-windows-only` function that only selects non-side-windows. Otherwise you will always have stray buffers popping up on top of or splitting your carefully arranged side-windows. ---------------------------------------------------------------------- bananafingerz · 2022-07-21 14:18 [https://webmshare.com/ZovRG](https://webmshare.com/ZovRG) here you go ---------------------------------------------------------------------- bananafingerz · 2022-07-21 14:22 woah thank you my dude. Is it true then, that flymake is doing better than flycheck rn? ---------------------------------------------------------------------- Lucius_Martius · 2022-07-21 14:46 >Is it true then, that flymake is doing better than flycheck rn? To be honest, I slightly prefer flycheck, but eglot only works with flymake by default and I prefer eglot over lsp-mode. Also flymake has the benefit of being built-in, and since I don't use any of the additional checkers flycheck supports I don't really care enough to bother with getting flycheck to work with eglot. ---------------------------------------------------------------------- bananafingerz · 2022-07-21 17:42 >(add-to-list 'display-buffer-alist'(my-window-bottom-left-side- window-p(display-buffer-in-side-window)(window-height . 0.30)(window- width . 0.55)(dedicated . t)(side . bottom)(slot . 0)(window- parameters . ((no-other-window . t)(no-delete-other-windows . t)(mode- line-format . 'none)))))(defvar my-window-bottom-left-modes '())(defun my-window-bottom-left-side-window-p (buf act)(with-current-buffer buf (member major-mode my-window-bottom-left-modes)));; Then down in the flycheck configuration(add-to-list 'my-window-bottom-left-modes 'flycheck-error-list-mode) it still opens to the side :( the other options are applied though (not targetable and no mode-line) can you give me directions to configure flymake? Does it work nicely with typescript and react? I\`m using spacemacs ---------------------------------------------------------------------- Lucius_Martius · 2022-07-21 21:29 >it still opens to the side On vanilla emacs this is not really possible. [display-buffer-alist comes very high up in the priority](https://www.gnu.org/software/emacs /manual/html_node/elisp/Choosing-Window.html) and the `display-buffer- in-side-window` function does not leave much for interpretation if it is in fact called, which it must be, if the window-parameters are applied. Can you check using `describe-function` to see if any advices (i.e. modifications to the function) are listed at the bottom for `display-buffer-in-side-window`? Are you also sure that you don't enable some fancy window management thing, like golden-ratio.el, shackle or something? PS: Please also check that the variable `display-buffer-overriding- action` is nil. >can you give me directions to configure flymake? Does it work nicely with typescript and react? Sadly, I can't tell you much. You need to add your checker to `flymake-diagnostic-functions`. Both eglot and lsp-mode do this automatically when they are loaded (lsp-mode only as a fallback if flycheck is not installed). There is a [typescript language server](https://github.com/typescript-language-server/typescript- language-server) here you can use with either eglot or lsp-mode. Other than those general pointers you are on your own. I'm a C/C++ dev and use vanilla instead of spacemacs so I can't help you much on the specifics.