[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

How to set margins of buffer when window changes?

From: edgar
Subject: How to set margins of buffer when window changes?
Date: Wed, 08 Sep 2021 17:12:22 +0000
User-agent: Horde Application Framework 5

Hello dear Emacs users!

I am trying to have some buffers centre the text. I figured that I could do it with margins. I want this to adjust depending on the value of `fill-column' (could be any other variable) and the width of the window (if it is too small, don't centre). I have the code below, but I get the error: `Window ... too small for splitting' (replace `...' with the name of the buffer's window). I added a hook to the major mode list of hooks, but it could be something else.

The format is very similar to what they seek here: []

How can I resize the window and adjust the margins depending on `fill-column'? Thanks.

    (with-eval-after-load 'python
     (defun centre-text-with-margins (&optional window width)
"Moves the left and right margins to centre the contents of the current buffer in the current window"
        ;; (if (or (> left-margin-width 0) (> right-margin-width 0))
        ;;      (progn
              (setq left-margin-width 0)
              (setq right-margin-width 0)
              ;; (set-window-buffer nil (current-buffer))
              (set-window-margins window 0 0)
              ;; ))
          (let* ((txtwidth (cond (width) (fill-column)))
                 (space (max 0 (- (window-total-width) txtwidth)))
                 (leftside (floor (/ space 2)))
                 (rightside (- space leftside)))
            (setq left-margin-width leftside)
            (setq right-margin-width rightside)
            (set-window-buffer window (current-buffer))
(format "lm:%s rm:%s sp:%s" left-margin-width right-margin-width space)))
     (defun py-margins-hook ()
       (add-hook 'window-state-change-hook #'centre-text-with-margins t t))
     (add-hook 'python-mode-hook 'py-margins-hook))

GNU Emacs 27.2 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.27, cairo version 1.17.4) of 2021-03-26

This free account was provided by - report spam to

ONLY AT VFEmail! - Use our Metadata Mitigator to keep your email out of the 
NSA's hands!
$24.95 ONETIME Lifetime accounts with Privacy Features! 15GB disk! No bandwidth quotas! Commercial and Bulk Mail Options!

reply via email to

[Prev in Thread] Current Thread [Next in Thread]