求问
1 个赞
主题看不出来,居中应该是用的 olivetti
olivetti-mode 可以做到。另外安利一个自己的 hack,自动在 org-mode buffer 开启或关闭开启 olivetti-mode。当窗口只有一个 buffer,或者窗口布局是上下形式的时候,开启 olivetti-mode,如果存在左右布局,就关闭。用了一段时间,感觉很舒服。
(use-package olivetti
:diminish
:bind ("<f8>" . olivetti-mode)
:init
(setq olivetti-body-width 0.618)
(defun xs-toggle-olivetti-for-org ()
"if current buffer is org and only one visible buffer
enable olivetti mode"
(if (and (eq (buffer-local-value 'major-mode (current-buffer)) 'org-mode)
(or (eq (length (window-list nil nil nil)) 1)
(window-at-side-p (frame-first-window) 'right))) ;; frame-first-window 的 mode 是 org-mode 并且没有右边 window
(olivetti-mode 1)
(olivetti-mode 0)
(when (eq (buffer-local-value 'major-mode (current-buffer)) 'org-mode)
(visual-line-mode 1))))
(add-hook 'org-mode-hook #'xs-toggle-olivetti-for-org)
(add-hook 'window-configuration-change-hook #'xs-toggle-olivetti-for-org))
6 个赞
writeroom 配置参考,窗口宽度设置为 absolute width 如果左右分割小于这个宽度那么就自动不启用了,因此也不需要啥 Hack
(use-package writeroom-mode
:straight t
:hook (after-init . global-writeroom-mode)
:config
(setq split-width-threshold 120
writeroom-width 128
writeroom-bottom-divider-width 0
writeroom-fringes-outside-margins t
writeroom-fullscreen-effect nil
writeroom-major-modes '(text-mode prog-mode conf-mode special-mode Info-mode dired-mode)
writeroom-major-modes-exceptions '(process-menu-mode proced-mode)
writeroom-maximize-window nil
writeroom-mode-line t
writeroom-mode-line-toggle-position 'mode-line-format))
4 个赞
谢谢,我试一试,这个方案更灵活
更应该关注内容吧!
1 个赞