summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--emacs-init.org24
1 files changed, 23 insertions, 1 deletions
diff --git a/emacs-init.org b/emacs-init.org
index e256e1d..36afbf4 100644
--- a/emacs-init.org
+++ b/emacs-init.org
@@ -2892,6 +2892,9 @@ better performance.
(ibuffer-do-sort-by-alphabetic)))))
#+end_src
** Window configuration
+:PROPERTIES:
+:ID: 99f1af26-1383-43c1-8408-9a13c495925e
+:END:
=fit-window-to-buffer= automatically shrinks the current buffer based
on the amount of displayed text.
#+begin_src emacs-lisp
@@ -2912,7 +2915,8 @@ on the amount of displayed text.
:bind
(:map global-map ("C-x C-3" . split-window-left))
(:map global-map ("C-x C-2" . split-window-above))
- (:map fpi-map ("s" . fit-window-to-buffer)))
+ <<window-bindings>>
+ )
#+end_src
*** Window rules
#+begin_src emacs-lisp :noweb-ref window
@@ -5586,6 +5590,24 @@ These settings are also from the above blog post, but mainly manually set what =
(org-hide-emphasis-markers t)
(org-cycle-separator-lines 1)
#+end_src
+
+While I generally use ~fit-window-to-buffer~ (bound to =C-z s=) to fit a buffer to its content width (see [[id:99f1af26-1383-43c1-8408-9a13c495925e][Window configuration]]), buffers in =prose-mode= can reduced to ~olivetti-body-width~ if it is an integer.
+#+begin_src emacs-lisp
+(defun fpi/fit-window-to-buffer (&optional WINDOW MAX-HEIGHT MIN-HEIGHT MAX-WIDTH MIN-WIDTH PRESERVE-SIZE)
+ "Wrapper around `fit-window-to-buffer' which considers `olivetti-mode'.
+
+If `olivetti-body-width' is a number fit the window width to it instead of the actual line width."
+ (interactive)
+ (let ((max-width (when (and olivetti-mode (numberp olivetti-body-width))
+ (round (* 1.03 olivetti-body-width)))))
+ (fit-window-to-buffer (selected-window) nil nil max-width nil)
+ ))
+#+end_src
+
+#+begin_src emacs-lisp :tangle no :noweb-ref fpi-bindings
+(define-key 'fpi-map (kbd "s") 'fpi/fit-window-to-buffer)
+#+end_src
+
* Wrapping up
Some stuff that is run after everything else.