diff --git a/modules/ui/fci/config.el b/modules/ui/fci/config.el index 77da05dd8..c423d2f3c 100644 --- a/modules/ui/fci/config.el +++ b/modules/ui/fci/config.el @@ -21,6 +21,23 @@ Changes to this variable do not take effect until `fci-mode' is restarted.") ;; more important to me, so... (add-hook 'org-mode-hook #'turn-off-fci-mode) + ;; turn off fci if the window is narrow than fill column + (defun +fci-toggle-maybe (window) + (let ((fci-enabled (symbol-value 'fci-mode)) + (fci-column (or fci-rule-column fill-column))) + (with-selected-window window + (if (and (eq fci-enabled nil) + (< fci-column + (+ (window-width) (window-hscroll)))) + (turn-on-fci-mode) + (turn-off-fci-mode))))) + + (defun +fci|width-workaround (&rest _) + (walk-windows #'+fci-toggle-maybe 'no-minibuf)) + + (add-hook 'window-size-change-functions #'+fci|width-workaround) + (add-hook 'window-configuration-change-hook #'+fci|width-workaround) + (defun +fci|set-color () "Automatically change `fci-rule-color' based on `+fci-rule-color-function's return value. To disable this, either set `+fci-rule-color-function' to nil or