Subject: Re: bug#36861: 27.0.50; display-fill-column-indicator-mode in log-edit-mode

From: Eli Zaretskii <[email-masked]>
Date: Fri, 02 Aug 2019 12:10:10 +0300

> From: Juri Linkov <[email-masked]>
> Cc: [email-masked]
> Date: Wed, 31 Jul 2019 23:49:53 +0300
> 
> >>   (log-edit-mode . ((log-edit-font-lock-gnu-style . t)
> >> -                   (log-edit-setup-add-author . t)))
> >> +                   (log-edit-setup-add-author . t)
> >> +                   (display-fill-column-indicator-column . 78)
> >> +                   (eval . (display-fill-column-indicator-mode))))
> >
> > This will cause an annoying message and prompt when editing Emacs
> > sources with an Emacs which doesn't yet have
> > display-fill-column-indicator-mode, right?  Can we avoid that?  I
> > routinely need to work on the latest sources with an older Emacs.
> 
> Shouldn't local-variables functions ignore undefined variables and commands?
> Probably not, since such change won't help for older versions.

Right, and we cannot summarily allow any variables a given Emacs
doesn't know about, that'd we unsafe.

> Then one way is to put such lines to the init file
> to avoid typing `y' to confirm local variables
> while using emacs-26 to commit emacs-27 changes:

Rather than requiring users of older Emacsen to change their init
files in such strange ways, which will/might be a problem when they
upgrade to Emacs 27, why not expect users who want the early detection
of long lines to turn on display-fill-column-indicator-mode in their
init files?  IOW, the solution that requires changes to one's init
files goes both ways.

> And for emacs-27 and future versions this patch is required as well:
> 
> diff --git a/lisp/cus-start.el b/lisp/cus-start.el
> index e1d0bce2ad..036674ef14 100644
> --- a/lisp/cus-start.el
> +++ b/lisp/cus-start.el
> @@ -650,7 +650,7 @@ minibuffer-prompt-properties--setter
>                                   "26.1")
>  
>               (display-fill-column-indicator display-fill-column-indicator
> -                                 boolean "27.1")
> +                                 boolean "27.1" :safe booleanp)
>               (display-fill-column-indicator-column display-fill-column-indicator
>                                   (choice
>                                    (const :tag "Use fill-column variable"
> @@ -659,9 +659,9 @@ minibuffer-prompt-properties--setter
>                                           :value 70
>                                           :format "%v")
>                                    integer)
> -                                 "27.1")
> +                                 "27.1" :safe (lambda (value) (or (booleanp value) (integerp value))))
>               (display-fill-column-indicator-character display-fill-column-indicator
> -                                 character "27.1")
> +                                 character "27.1" :safe characterp)
>  	     ;; xfaces.c
>  	     (scalable-fonts-allowed display boolean "22.1")
>  	     ;; xfns.c

This is fine with me, but I don't think we should make the change in
.dir-locals.el.

Thanks.