From d02fa6c2796b81e2069ad7951733750a1d400998 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Sun, 8 Sep 2019 10:57:24 +0200 Subject: Use olivetti-mode. --- init.org | 29 ++++++----------------------- 1 file changed, 6 insertions(+), 23 deletions(-) (limited to 'init.org') diff --git a/init.org b/init.org index 6f41c50..70a7092 100644 --- a/init.org +++ b/init.org @@ -62,6 +62,7 @@ To install all packages via GNU Guix I can either use a manifest file or use the emacs-markdown-mode \ emacs-mmm-mode \ emacs-multiple-cursors \ + emacs-olivetti \ emacs-org \ emacs-org-bullets \ emacs-org-trello \ @@ -881,32 +882,13 @@ I don’t want to have any margins by default. (setq-default left-margin-width 0 right-margin-width 0) #+END_SRC -When writing Org-mode documents or when browsing the web with Eww I prefer to see shorter lines. The following procedure takes the current window width and adjust the buffer margins dynamically such that the buffer contents are restricted in width. I find this much more readable when editing Org documents or browsing with Eww. +When writing Org-mode documents or when browsing the web with Eww I prefer to see shorter lines. =olivetti-mode= adjusts the buffer margins such that the buffer contents are restricted in width and centered. I find this much more readable when editing Org documents or browsing with Eww. #+BEGIN_SRC elisp -(defun my/dynamic-margin-window (window) - "Get current window width and adjust margins such that the buffer contents are centered and no more than 80 characters wide." - (with-current-buffer (window-buffer window) - (when (or (eq major-mode 'org-mode) - (eq major-mode 'eww-mode)) - (let* ((textwidth 80) - (margin (max (- (window-size window t) textwidth) 0))) - (setq left-margin-width 0 right-margin-width margin) - (set-window-buffer window (current-buffer)))))) - -(defun my/dynamic-margin (frame) - "Dynamically adjust margin for all windows of the frame." - (walk-windows 'my/dynamic-margin-window 'no-minibuf frame)) +(require 'olivetti) +(add-hook 'org-mode-hook #'olivetti-mode) #+END_SRC -The procedure is added to the list of functions that are to be evaluated whenever the window size changes. As a result the content width is adjusted dynamically. - -#+BEGIN_SRC elisp -(add-to-list 'window-size-change-functions 'my/dynamic-margin) -#+END_SRC - -TODO: This doesn’t work so well with org tables or genuinely wide content in eww buffers, so I need a way to quickly disable this. Maybe this really should be a minor mode. - * Window management :PROPERTIES: :header-args: :noweb-ref exwm :noweb yes @@ -1695,7 +1677,8 @@ This is even more stuff to be done after initialising packages. I still need to ;; enable variable-pitch-mode in eww (add-hook 'eww-mode-hook (lambda () - (variable-pitch-mode 1))) + (variable-pitch-mode 1) + (olivetti-mode 1))) ;; pretty quotes! (add-hook 'erc-mode-hook -- cgit v1.2.3