[emacs-berlin] Open a new window splitting the frame horizontally

Abby Henríquez Tejera paradoja at gmail.com
Mon Nov 18 18:00:07 UTC 2024


Just noticed, the ~push~ has the arguments reversed, if you used it
(with the ~display-buffer-alist~ last).

El lun, 18 nov 2024 a las 17:48, Abby Henríquez Tejera
(<paradoja at gmail.com>) escribió:
>
> Hi,
>
> I'm certainly no expert on this. I tried to replicate your error, but
> interestingly it didn't (but the behaviour was the one you wanted).
>
>
> Reading the description for ~display-buffer-alist, it's "an alist of
> elements (CONDITION . ACTION)".
>
> The condition part you already have, the "\\*rg\\*", the action part,
> is itself another alist (FUNCTIONS . ALIST) "where FUNCTIONS is an
>   action function or a list of action functions". This would make me
> think that the correct snippet would be:
>
> (setopt
>  display-buffer-alist
>  '(("\\*rg\*"
>     (display-buffer-below-selected)
>     (display-buffer-at-bottom)
>     )))
>
> or
> (setopt
>  display-buffer-alist
>  '(("\\*rg\*"
>     (display-buffer-below-selected)
>     )))
> (with just one of the possible functions, as both seem to do different things)
>
> I haven't been able to try it, but maybe trying
>
> Another thing, not one that you have complained about, that I notice
> is that you set the variable completely, as in, if it already has a
> value it removes it. For variables like this I prefer to add to the
> list, instead of setting it completely. Given that I don't usually use
> the custom.el functionality, I just use something like
>
> (add-to-list 'display-buffer-alist
>              '("\\*rg\\*"
>                (display-buffer-below-selected)))
>
> But if you prefer to use set-opt maybe something like:
>
> (setopt display-buffer-alist
>         (push display-buffer-alist
>              '("\\*rg\\*"
>                (display-buffer-below-selected))))
>
>
> Which would "preserve" any value it already had, instead of overwriting it.
>
> I don't know if this is helpful, but I hope you fix your problem!
>
>
> El lun, 18 nov 2024 a las 16:12, jman (<emacs-berlin at city17.xyz>) escribió:
> >
> >
> > Hi, I'm trying to modify the `rg.el` package (an interface to ripgrep[0]) when it opens the buffer
> > with the search results. I'm vaguely familiar with concepts like "frame", "window" and "buffer" and
> > IIUC by default Emacs opens a window horizontally or vertically based on space available (using
> > `split-window-sensibly`).
> >
> > I want to modify this behaviour so that the search results window containing the *rg* buffer always
> > splits the frame horizontally.
> >
> > I've tried asking the rg.el maintainer but I don't understand their suggestion:
> > https://github.com/dajva/rg.el/issues/181
> >
> > I've looked at the Emacs documentation[1]. I think I can accomplish this with the following snippet:
> >
> > (setopt
> >  display-buffer-alist
> >  '(("\\*rg\*"
> >     (display-buffer-below-selected display-buffer-at-bottom)
> >     )))
> >
> > somehow it works because the frame is split horizontally but I get this error: "error in process
> > sentinel: Symbol’s function definition is void: nil". The toggle-debug-on-error is not very helpful:
> >
> > Debugger entered--Lisp error: (void-function nil)
> >   nil(#<buffer *rg*> "finished\n")
> >   compilation-handle-exit(exit 0 "finished\n")
> >   compilation-sentinel(#<process rg> "finished\n")
> >
> > Any comment on my approach? Any suggestion?
> >
> > Thanks!
> >
> > [0]: https://github.com/dajva/rg.el
> > [1]: https://www.gnu.org/software/emacs/manual/html_node/elisp/Displaying-Buffers.html
> > _______________________________________________
> > emacs-berlin mailing list
> > emacs-berlin at emacs-berlin.org
> > https://mailb.org/mailman/listinfo/emacs-berlin


More information about the emacs-berlin mailing list