Subject: bug#59963: 29.0.50; 'window-max-chars-per-line' doesn't always work on GUI without fringe

From: Akib Azmain Turja <[email-masked]>
Date: Thu, 15 Dec 2022 21:53:23 +0600

Eli Zaretskii <[email-masked]> writes:

> Akib, please see if the patch below gives good results, including in
> the real-life use case which triggered this report:
>
> diff --git a/lisp/window.el b/lisp/window.el
> index 7d8ee48..a4a8421 100644
> --- a/lisp/window.el
> +++ b/lisp/window.el
> @@ -2162,17 +2162,14 @@ window-max-chars-per-line
>      (let* ((window-width (window-body-width window t))
>  	   (font-width (window-font-width window face))
>  	   (ncols (- (/ window-width font-width)
> -                     (ceiling (line-number-display-width 'columns)))))
> +                     (ceiling (line-number-display-width 'columns))))
> +           (fringes (window-fringes window))
> +           (lfringe (car fringes))
> +           (rfringe (nth 1 fringes)))
>        (if (and (display-graphic-p)
>  	       overflow-newline-into-fringe
> -               (not
> -                (or (eq left-fringe-width 0)
> -                    (and (null left-fringe-width)
> -                         (= (frame-parameter nil 'left-fringe) 0))))
> -               (not
> -                (or (eq right-fringe-width 0)
> -                    (and (null right-fringe-width)
> -                         (= (frame-parameter nil 'right-fringe) 0)))))
> +               (not (eq lfringe 0))
> +               (not (eq rfringe 0)))
>  	  ncols
>          ;; FIXME: This should remove 1 more column when there are no
>          ;; fringes, lines are truncated, and the window is hscrolled,

Looks good at the first glance!  Let me apply it on the function
definition...  Works good!  Approved.

-- 
Akib Azmain Turja, GPG key: 70018CE5819F17A3BBA666AFE74F0EFA922AE7F5
Fediverse: [email-masked]
Codeberg: akib
emailselfdefense.fsf.org | "Nothing can be secure without encryption."