# HG changeset patch # User Chong Yidong # Date 1192589423 0 # Node ID f215fc483ae3e79d256d0e405f36bc88c8e29cb7 # Parent a8bd5dee7a3ff66e49e8dcc9b40ba1aae3efcf59 (longlines-wrap-follows-window-size): Integer value specifies wrapping margin. (longlines-mode, longlines-window-change-function): Set window-specific wrapping margin based on the above. diff -r a8bd5dee7a3f -r f215fc483ae3 lisp/longlines.el --- a/lisp/longlines.el Wed Oct 17 02:50:12 2007 +0000 +++ b/lisp/longlines.el Wed Oct 17 02:50:23 2007 +0000 @@ -55,7 +55,11 @@ "Non-nil means wrapping and filling happen at the edge of the window. Otherwise, `fill-column' is used, regardless of the window size. This does not work well when the buffer is displayed in multiple windows -with differing widths." +with differing widths. + +If the value is an integer, that specifies the distance from the +right edge of the window at which wrapping occurs. For any other +non-nil value, wrapping occurs 2 characters from the right edge." :group 'longlines :type 'boolean) @@ -117,8 +121,14 @@ 'longlines-search-function) (add-to-list 'buffer-substring-filters 'longlines-encode-string) (when longlines-wrap-follows-window-size - (set (make-local-variable 'fill-column) - (- (window-width) window-min-width)) + (let ((dw (if (and (integerp longlines-wrap-follows-window-size) + (>= longlines-wrap-follows-window-size 0) + (< longlines-wrap-follows-window-size + (window-width))) + longlines-wrap-follows-window-size + 2))) + (set (make-local-variable 'fill-column) + (- (window-width) dw))) (add-hook 'window-configuration-change-hook 'longlines-window-change-function nil t)) (let ((buffer-undo-list t) @@ -415,9 +425,14 @@ (defun longlines-window-change-function () "Re-wrap the buffer if the window width has changed. This is called by `window-configuration-change-hook'." - (when (/= fill-column (- (window-width) window-min-width)) - (setq fill-column (- (window-width) window-min-width)) - (longlines-wrap-region (point-min) (point-max)))) + (let ((dw (if (and (integerp longlines-wrap-follows-window-size) + (>= longlines-wrap-follows-window-size 0) + (< longlines-wrap-follows-window-size (window-width))) + longlines-wrap-follows-window-size + 2))) + (when (/= fill-column (- (window-width) dw)) + (setq fill-column (- (window-width) dw)) + (longlines-wrap-region (point-min) (point-max))))) ;; Isearch