I'm trying to emulate some behavior of the darkroom-mode Emacs mode -- specifically the margins setup.

I've figured out one piece of the puzzle -- specifically, to change window margins, I can eval (set-window-margins nil <left margin> <right margin>).

Which is fine, but I'm noticing that the changes only occur in the current window, and will actually go back to the default margin if I switch to a different buffer using C-x left or right arrow key.

I'd like to figure out how to do the following:

  • Set it so that all buffers get the same window-margin settings.
  • Set it so that the margin settings persist after changing windows.

I know that it might involve using hooks, but I'm not exactly sure which hooks to use.

  • 1
    To whom might be tempted to close-vote: Emacs falls into the "software tools commonly used by programmers" so according to the FAQ it's on topic. Commented Jul 7, 2011 at 7:44
  • @cosmin-prund Also, the solution would probably involve programming, specifically coding in Elisp. Had it not I'd have gone to Super User.
    – tariqk
    Commented Jul 7, 2011 at 10:44

1 Answer 1


Do this in your init file (~/.emacs) -- use whatever values you want in place of 10 and 8:

 (setq-default left-margin-width 10 right-margin-width 8) ; Define new widths.
 (set-window-buffer nil (current-buffer)) ; Use them now.
  • How would I modify this to make the maximum width of a window 120 characters, so that if I have two windows open side by side, the margin is not added to them if the width of the frame is 240 characters or less?
    – nisetama
    Commented Jan 23, 2022 at 11:53
  • For whatever reason I had to re-start Emacs for these settings to take effect. Commented Aug 31, 2022 at 8:15

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .