[emacs-berlin] Mastering Emacs

Diez B. Roggisch deets at web.de
Fri Sep 29 09:53:39 UTC 2023


Hi Andreas,

I'm not really in the know what could be done there. I'm on emacs 28.1
if that helps.

Cheers,

Diez

On 28.09.23 08:01, Andreas Röhler wrote:
> Hi Diez,
>
> tried it after doing some compilation.
>
> Got an error:
>
>
> Debugger entered--Lisp error: (error "No side windows state found")
>    signal(error ("No side windows state found"))
>    error("No side windows state found")
>    window-toggle-side-windows()
>    (cond ((null arg) (window-toggle-side-windows)) ((listp arg)
> (deets/side-window-resize t)) ((symbolp arg) (deets/side-window-resize
> nil)))
>    deets/side-window-toggle(nil)
>    funcall-interactively(deets/side-window-toggle nil)
>    call-interactively(deets/side-window-toggle nil nil)
>    (prog1 (call-interactively cmd record-flag keys) (let* ((info (and t
> (and (symbolp cmd) (not (get cmd ...)) (get cmd 'byte-obsolete-info)))))
> (if info (progn (put cmd 'command-execute-obsolete-warned t) (message
> "%s" (macroexp--obsolete-warning cmd info "command"
> (help--key-description-fontified (where-is-internal ... nil t))))) nil)))
>    (cond ((arrayp final) (if record-flag (progn (add-to-history
> 'command-history (list 'execute-kbd-macro final prefixarg) nil t)))
> (execute-kbd-macro final prefixarg)) (t (prog1 (call-interactively cmd
> record-flag keys) (let* ((info (and t (and ... ... ...)))) (if info
> (progn (put cmd 'command-execute-obsolete-warned t) (message "%s"
> (macroexp--obsolete-warning cmd info "command" ...))) nil)))))
>    (let ((final cmd)) (while (progn (setq final (indirect-function
> final)) (if (autoloadp final) (setq final (autoload-do-load final
> cmd))))) (cond ((arrayp final) (if record-flag (progn (add-to-history
> 'command-history (list 'execute-kbd-macro final prefixarg) nil t)))
> (execute-kbd-macro final prefixarg)) (t (prog1 (call-interactively cmd
> record-flag keys) (let* ((info (and t ...))) (if info (progn (put cmd
> ... t) (message "%s" ...)) nil))))))
>    (if (and (symbolp cmd) (get cmd 'disabled) (or (and (setq query (and
> (consp (get cmd ...)) (eq (car ...) 'query))) (not
> (command-execute--query cmd))) (and (not query)
> disabled-command-function))) (if (not query) (progn (run-hooks
> 'disabled-command-function))) (let ((final cmd)) (while (progn (setq
> final (indirect-function final)) (if (autoloadp final) (setq final
> (autoload-do-load final cmd))))) (cond ((arrayp final) (if record-flag
> (progn (add-to-history 'command-history (list ... final prefixarg) nil
> t))) (execute-kbd-macro final prefixarg)) (t (prog1 (call-interactively
> cmd record-flag keys) (let* ((info ...)) (if info (progn ... ...)
> nil)))))))
>    (let ((prefixarg (if special nil (prog1 prefix-arg (setq
> current-prefix-arg prefix-arg) (setq prefix-arg nil) (if
> current-prefix-arg (progn (prefix-command-update)))))) query) (if (and
> (symbolp cmd) (get cmd 'disabled) (or (and (setq query (and (consp ...)
> (eq ... ...))) (not (command-execute--query cmd))) (and (not query)
> disabled-command-function))) (if (not query) (progn (run-hooks
> 'disabled-command-function))) (let ((final cmd)) (while (progn (setq
> final (indirect-function final)) (if (autoloadp final) (setq final
> (autoload-do-load final cmd))))) (cond ((arrayp final) (if record-flag
> (progn (add-to-history ... ... nil t))) (execute-kbd-macro final
> prefixarg)) (t (prog1 (call-interactively cmd record-flag keys) (let*
> (...) (if info ... nil))))))))
>    command-execute(deets/side-window-toggle)
>
> Whereas install seems to work:
>
> display-buffer-alist is a variable defined in ‘window.el’.
>
> Its value is
> (("\\*deadgrep.*\\|\\*Compilation\\*" (display-buffer-in-side-window)
>    (side . bottom) (slot . 0)
>    (window-parameters (no-delete-other-windows . t))))
> Original value was nil
>
> Grüße,
>
> Andreas
>
> Am 20.05.23 um 10:20 schrieb Diez B. Roggisch:
>> I improved my code a bit, it looks like this now:
>>
>>
>>   (setq switch-to-buffer-obey-display-actions t)
>>   ;; Introduce a bottom side window that catches
>>   ;; compilations, deadgreps etc.
>>   (add-to-list 'display-buffer-alist
>>    '("\\*deadgrep.*\\|\\*Compilation\\*"
>>      (display-buffer-in-side-window)
>>      (side . bottom)
>>      (slot . 0)
>>      (window-parameters
>>       (no-delete-other-windows . t))))
>>
>>   (defun deets/side-window-resize (enlarge)
>>     (let ((bottom-windows (window-at-side-list (window-normalize-frame
>> nil) 'bottom)))
>>       (dolist (window bottom-windows)
>>         (when (symbolp (window-parameter window 'window-side))
>>           (if enlarge
>>               (window-resize window (window-height window))
>>             (window-resize window (- (/ (window-height window) 2))))))))
>>
>>   (defun deets/side-window-toggle (arg)
>>     (interactive "P")
>>     (cond ((null arg) (window-toggle-side-windows))
>>           ((listp arg) (deets/side-window-resize t))
>>           ((symbolp arg) (deets/side-window-resize nil))))
>>
>>   ;; Remove our side-windows
>>   (global-set-key (read-kbd-macro "C-x w") 'deets/side-window-toggle)
>>
>>
>> Now using prefix-arguments (C-u C-x w) and (C-u - C-x w) the bottom side
>> window is doubled or halved in size. Very useful for me. I'm already
>> thinking about putting documentation/info/etc to the right side.
>>
>> Diez
>>
>> On 19.05.23 12:34, Andreas Röhler wrote:
>>> Danke!
>>>
>>> Am 19.05.23 um 11:56 schrieb Diez B. Roggisch:
>>>> Hey fellow Emacsians,
>>>>
>>>> I've just bought a copy of "Mastering Emacs", first and foremost to
>>>> appreciate the author for this article:
>>>>
>>>>
>>>>  https://www.masteringemacs.org/article/demystifying-emacs-window-manager
>>>>
>>>>
>>>>
>>>> This has since just a few hours already changed my emacs life. I've
>>>> always been annoyed by process buffers (compilation, ripgrep/deadgrep,
>>>> etc) getting their own window, destroying my C-x 0, 1, 2, 3 - based
>>>> window arrangement. Since this morning I'm using the following tiny
>>>> snippet to manage (for now just a bottom) side windows:
>>>>
>>>>   (setq switch-to-buffer-obey-display-actions t)
>>>>   ;; Introduce a bottom side window that catches
>>>>   ;; compilations, deadgreps etc.
>>>>   (add-to-list 'display-buffer-alist
>>>>    '("\\*deadgrep.*\\|\\*Compilation\\*"
>>>>      (display-buffer-in-side-window)
>>>>      (side . bottom)
>>>>      (slot . 0)
>>>>      (window-parameters
>>>>       (no-delete-other-windows . t))))
>>>>   ;; Remove our side-windows
>>>>   (global-set-key (read-kbd-macro "C-x w") 'window-toggle-side-windows)
>>>>
>>>> Life-changing for me. The rex was created with buffer list view and
>>>> re-builder, the latter I also learned from the author of the book. I'm
>>>> sure there's plenty of more stuff to discover once I dive deeper into
>>>> the e-book! Which I read with 'nov-mode' now courtesy to his
>>>> suggestion ;)
>>>>
>>>> Just wanted to make you aware of the website, the Emacs functionality,
>>>> and the book so you can share my enjoyment.
>>>>
>>>> Happy hacking,
>>>>
>>>> Diez
>>>>
>>>> _______________________________________________
>>>> emacs-berlin mailing list
>>>> emacs-berlin at emacs-berlin.org
>>>> https://mailb.org/mailman/listinfo/emacs-berlin
>>> _______________________________________________
>>> emacs-berlin mailing list
>>> emacs-berlin at emacs-berlin.org
>>> https://mailb.org/mailman/listinfo/emacs-berlin
>> _______________________________________________
>> emacs-berlin mailing list
>> emacs-berlin at emacs-berlin.org
>> https://mailb.org/mailman/listinfo/emacs-berlin
> _______________________________________________
> 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