unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line.
@ 2010-07-29 16:29 Drew Adams
  2011-07-03 13:17 ` Lars Magne Ingebrigtsen
  2019-09-16 14:54 ` Mauro Aranda
  0 siblings, 2 replies; 27+ messages in thread
From: Drew Adams @ 2010-07-29 16:29 UTC (permalink / raw)
  To: 6755

[-- Attachment #1: Type: text/plain, Size: 1013 bytes --]

emacs -Q
 
See attached screenshots.  The first is what actually exists.  The *FIXED*
screenshot shows the kind of thing you should see instead.
 
The first line of the doc string should be on a separate line.  It
should not be on the same line as the Value Menu button.  Otherwise, the buffer
text is much too wide.

Just as for *Info* *Help* and similar buffers, Emacs should make
a reasonable effort to keep the buffer text width within 70, or
at most 80, chars.
 
We go to great trouble to ensure that doc string text width is
reasonable, but Customize currently defeats that effort by simply
appending the doc string to existing text and buttons in the buffer.

This bug has consequences for any code that tries to fit the window or frame
width to the (max) width of the buffer text.
 

In GNU Emacs 24.0.50.1 (i386-mingw-nt5.1.2600)
 of 2010-07-19 on 3249CTO
Windowing system distributor `Microsoft Corp.', version 5.1.2600
configured using `configure --with-gcc (4.4) --no-opt --cflags -Ic:/xpm/include'
 

[-- Attachment #2: bug-emacs-customize-doc-string-FIXED.png --]
[-- Type: image/png, Size: 58667 bytes --]

[-- Attachment #3: bug-emacs-customize-doc-string.png --]
[-- Type: image/png, Size: 55222 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line.
  2010-07-29 16:29 bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line Drew Adams
@ 2011-07-03 13:17 ` Lars Magne Ingebrigtsen
  2011-07-03 14:13   ` Drew Adams
  2019-09-16 14:54 ` Mauro Aranda
  1 sibling, 1 reply; 27+ messages in thread
From: Lars Magne Ingebrigtsen @ 2011-07-03 13:17 UTC (permalink / raw)
  To: Drew Adams; +Cc: 6755

"Drew Adams" <drew.adams@oracle.com> writes:

> See attached screenshots.  The first is what actually exists.  The *FIXED*
> screenshot shows the kind of thing you should see instead.
>
> The first line of the doc string should be on a separate line.  It
> should not be on the same line as the Value Menu button.  Otherwise, the buffer
> text is much too wide.

I've tried this with a few `choice' defcustoms, but they all displayed
properly.  And the one you included in the screenshots is not available
in Emacs 24, so I can't reproduce the bug.

Do you have an example that shows this behaviour for a defcustom in
Emacs 24?

-- 
(domestic pets only, the antidote for overdose, milk.)
  bloggy blog http://lars.ingebrigtsen.no/





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line.
  2011-07-03 13:17 ` Lars Magne Ingebrigtsen
@ 2011-07-03 14:13   ` Drew Adams
  2011-07-03 14:51     ` Lars Magne Ingebrigtsen
  0 siblings, 1 reply; 27+ messages in thread
From: Drew Adams @ 2011-07-03 14:13 UTC (permalink / raw)
  To: 'Lars Magne Ingebrigtsen'; +Cc: 6755

> I've tried this with a few `choice' defcustoms, but they all displayed
> properly.  And the one you included in the screenshots is not 
> available in Emacs 24, so I can't reproduce the bug.
> 
> Do you have an example that shows this behaviour for a defcustom in
> Emacs 24?

Yes, the same example.  Here is the defcustom:

(defcustom icicle-incremental-completion-flag t
  "..."
  :type 
  '(choice
    (const 
     :tag
     "Do not update `*Completions*' incrementally"                
     nil)
    (const 
     :tag
     "Update `*Completions*' incrementally if already displayed"  
     t)
    (other 
     :tag
     "Update `*Completions*' incrementally always"                
     always))
  :group 'Icicles-Completions-Display)

But _any_ defcustom with a longish :tag in the choice will do.
The :tag string here is only 57 chars wide.
We should be able to display :tag strings up to, say, 70 chars.

You do not need to "reproduce the bug" - you can see what it is.
The :tag string should be shown on a new line, at least when its
length is greater than, say, `(- 70 current-column)', modulo
perhaps some fuzz.






^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line.
  2011-07-03 14:13   ` Drew Adams
@ 2011-07-03 14:51     ` Lars Magne Ingebrigtsen
  2011-07-03 15:12       ` Drew Adams
                         ` (2 more replies)
  0 siblings, 3 replies; 27+ messages in thread
From: Lars Magne Ingebrigtsen @ 2011-07-03 14:51 UTC (permalink / raw)
  To: Drew Adams; +Cc: 6755

"Drew Adams" <drew.adams@oracle.com> writes:

> Yes, the same example.  Here is the defcustom:
>
> (defcustom icicle-incremental-completion-flag t
>   "..."
>   :type 
>   '(choice
>     (const 
>      :tag
>      "Do not update `*Completions*' incrementally"                
>      nil)
>     (const 
>      :tag
>      "Update `*Completions*' incrementally if already displayed"  
>      t)
>     (other 
>      :tag
>      "Update `*Completions*' incrementally always"                
>      always))
>   :group 'Icicles-Completions-Display)

Thanks.

> But _any_ defcustom with a longish :tag in the choice will do.
> The :tag string here is only 57 chars wide.
> We should be able to display :tag strings up to, say, 70 chars.
>
> You do not need to "reproduce the bug" - you can see what it is.

I never fix bugs "blind" if I can help it.  I need to reproduce the bug
so that I can test that I've really fixed it after I think I've fixed
it.

-- 
(domestic pets only, the antidote for overdose, milk.)
  bloggy blog http://lars.ingebrigtsen.no/





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line.
  2011-07-03 14:51     ` Lars Magne Ingebrigtsen
@ 2011-07-03 15:12       ` Drew Adams
  2011-07-03 15:19       ` Lars Magne Ingebrigtsen
  2011-07-03 15:25       ` Lars Magne Ingebrigtsen
  2 siblings, 0 replies; 27+ messages in thread
From: Drew Adams @ 2011-07-03 15:12 UTC (permalink / raw)
  To: 'Lars Magne Ingebrigtsen'; +Cc: 6755

> I never fix bugs "blind" if I can help it.  I need to 
> reproduce the bug so that I can test that I've really fixed
> it after I think I've fixed it.

You are of course 100% right in doing that.

I meant only that I thought that in this case the bug was communicated by the
screenshots and you would be able to figure out the cause and fix from that
info.






^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line.
  2011-07-03 14:51     ` Lars Magne Ingebrigtsen
  2011-07-03 15:12       ` Drew Adams
@ 2011-07-03 15:19       ` Lars Magne Ingebrigtsen
  2011-07-04  4:48         ` Drew Adams
  2011-07-03 15:25       ` Lars Magne Ingebrigtsen
  2 siblings, 1 reply; 27+ messages in thread
From: Lars Magne Ingebrigtsen @ 2011-07-03 15:19 UTC (permalink / raw)
  To: Drew Adams; +Cc: 6755

Lars Magne Ingebrigtsen <larsi@gnus.org> writes:

>> (defcustom icicle-incremental-completion-flag t
>>   "..."
>>   :type 
>>   '(choice
>>     (const 
>>      :tag
>>      "Do not update `*Completions*' incrementally"                
>>      nil)
>>     (const 
>>      :tag
>>      "Update `*Completions*' incrementally if already displayed"  
>>      t)
>>     (other 
>>      :tag
>>      "Update `*Completions*' incrementally always"                
>>      always))
>>   :group 'Icicles-Completions-Display)
>
> Thanks.

The widget code is really involved, but I think I've finally figured out
what's inserting the string in question:

(defun widget-create-child-value (parent type value)
  "Create widget of TYPE with value VALUE."
  (let ((widget (widget-copy type)))
    (widget-put widget :value (widget-apply widget :value-to-internal value))
    (widget-put widget :parent parent)
    (unless (widget-get widget :indent)
      (widget-put widget :indent (+ (or (widget-get parent :indent) 0)
				    (or (widget-get widget :extra-offset) 0)
				    (widget-get parent :offset))))
    (widget-apply widget :create)
    widget))

So now the question is how the text should be formatted.  Perhaps
folding it after inserting it is the right way?  Anybody know how?  :-)
(I mean, without breaking the widget machinery...)


-- 
(domestic pets only, the antidote for overdose, milk.)
  bloggy blog http://lars.ingebrigtsen.no/





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line.
  2011-07-03 14:51     ` Lars Magne Ingebrigtsen
  2011-07-03 15:12       ` Drew Adams
  2011-07-03 15:19       ` Lars Magne Ingebrigtsen
@ 2011-07-03 15:25       ` Lars Magne Ingebrigtsen
  2 siblings, 0 replies; 27+ messages in thread
From: Lars Magne Ingebrigtsen @ 2011-07-03 15:25 UTC (permalink / raw)
  To: Drew Adams; +Cc: 6755

Actually, I give up on this one.  I have no idea how the wid-* machinery
is supposed to work.

`widget-create-child-value' is called from all over the place, and calls
`(widget-apply widget :create)', and *that* function mysteriously
inserts text into the buffer.

So I have no idea how all this is supposed to fit together, so I'm
punting on this bug to somebody who understands the widget library.

-- 
(domestic pets only, the antidote for overdose, milk.)
  bloggy blog http://lars.ingebrigtsen.no/





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line.
  2011-07-03 15:19       ` Lars Magne Ingebrigtsen
@ 2011-07-04  4:48         ` Drew Adams
  2011-07-04 12:24           ` Lars Magne Ingebrigtsen
  0 siblings, 1 reply; 27+ messages in thread
From: Drew Adams @ 2011-07-04  4:48 UTC (permalink / raw)
  To: 'Lars Magne Ingebrigtsen'; +Cc: 6755

> So now the question is how the text should be formatted.  Perhaps
> folding it after inserting it is the right way?  Anybody know 
> how?  :-)
> (I mean, without breaking the widget machinery...)

Not sure if this is what you are asking, but just make sure it starts on a new
line.  That would take care of this problem and similar.  IOW, start with a
newline.






^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line.
  2011-07-04  4:48         ` Drew Adams
@ 2011-07-04 12:24           ` Lars Magne Ingebrigtsen
  2011-07-04 16:21             ` Drew Adams
  0 siblings, 1 reply; 27+ messages in thread
From: Lars Magne Ingebrigtsen @ 2011-07-04 12:24 UTC (permalink / raw)
  To: Drew Adams; +Cc: 6755

"Drew Adams" <drew.adams@oracle.com> writes:

>> So now the question is how the text should be formatted.  Perhaps
>> folding it after inserting it is the right way?  Anybody know 
>> how?  :-)
>> (I mean, without breaking the widget machinery...)
>
> Not sure if this is what you are asking, but just make sure it starts
> on a new line.  That would take care of this problem and similar.
> IOW, start with a newline.

Starting with a newline didn't look very nice.  Most of the option
values are short, and moving them away from the button made the
interface less understandable.

I think the right solution is to output the string where it is now, but
to fill it if it's too long.

-- 
(domestic pets only, the antidote for overdose, milk.)
  bloggy blog http://lars.ingebrigtsen.no/





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line.
  2011-07-04 12:24           ` Lars Magne Ingebrigtsen
@ 2011-07-04 16:21             ` Drew Adams
  2011-07-05 13:36               ` Lars Magne Ingebrigtsen
  0 siblings, 1 reply; 27+ messages in thread
From: Drew Adams @ 2011-07-04 16:21 UTC (permalink / raw)
  To: 'Lars Magne Ingebrigtsen'; +Cc: 6755

> Starting with a newline didn't look very nice.  Most of the option
> values are short, and moving them away from the button made the
> interface less understandable.
> 
> I think the right solution is to output the string where it 
> is now, but to fill it if it's too long.

Why not just start it on a new line if it would wrap?

IOW, instead of just filling, if it would wrap then start it on a new line.

(You could also then fill it, after starting on a new line, but I doubt that
:tag string will be more than 70 chars.  Still, it wouldn't hurt to do that.)






^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line.
  2011-07-04 16:21             ` Drew Adams
@ 2011-07-05 13:36               ` Lars Magne Ingebrigtsen
  0 siblings, 0 replies; 27+ messages in thread
From: Lars Magne Ingebrigtsen @ 2011-07-05 13:36 UTC (permalink / raw)
  To: Drew Adams; +Cc: 6755

"Drew Adams" <drew.adams@oracle.com> writes:

>> Starting with a newline didn't look very nice.  Most of the option
>> values are short, and moving them away from the button made the
>> interface less understandable.
>> 
>> I think the right solution is to output the string where it 
>> is now, but to fill it if it's too long.
>
> Why not just start it on a new line if it would wrap?

That would work, too, but not be as nice-looking, and would be as
difficult (or easy) to implement as filling it where it is.

In either case, it's beyond me.  Somebody else who understands the
widget machinery will have to handle this.

-- 
(domestic pets only, the antidote for overdose, milk.)
  bloggy blog http://lars.ingebrigtsen.no/





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line.
  2010-07-29 16:29 bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line Drew Adams
  2011-07-03 13:17 ` Lars Magne Ingebrigtsen
@ 2019-09-16 14:54 ` Mauro Aranda
  2019-09-16 20:10   ` Lars Ingebrigtsen
  1 sibling, 1 reply; 27+ messages in thread
From: Mauro Aranda @ 2019-09-16 14:54 UTC (permalink / raw)
  To: 6755; +Cc: Lars Ingebrigtsen

[-- Attachment #1: Type: text/plain, Size: 1134 bytes --]

Lars Magne Ingebrigtsen <larsi@gnus.org> writes:

> "Drew Adams" <drew.adams@oracle.com> writes:
>
>>> So now the question is how the text should be formatted.  Perhaps
>>> folding it after inserting it is the right way?  Anybody know
>>> how?  :-)
>>> (I mean, without breaking the widget machinery...)
>>
>> Not sure if this is what you are asking, but just make sure it starts
>> on a new line.  That would take care of this problem and similar.
>> IOW, start with a newline.
>
> Starting with a newline didn't look very nice.  Most of the option
> values are short, and moving them away from the button made the
> interface less understandable.
>
> I think the right solution is to output the string where it is now, but
> to fill it if it's too long.

I have an idea on how to implement the solution proposed by Lars.
I think filling after inserting the :tag property of a widget would be
enough.

But I wanted to ask first, do we really want to make this behavior
unconditional in the widget library?  Or would it be better to provide
it as an option, for customize (and possibly other clients) to set it?

Best regards,
Mauro.

[-- Attachment #2: Type: text/html, Size: 1446 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line.
  2019-09-16 14:54 ` Mauro Aranda
@ 2019-09-16 20:10   ` Lars Ingebrigtsen
  2019-09-17 12:04     ` Mauro Aranda
  0 siblings, 1 reply; 27+ messages in thread
From: Lars Ingebrigtsen @ 2019-09-16 20:10 UTC (permalink / raw)
  To: Mauro Aranda; +Cc: 6755

Mauro Aranda <maurooaranda@gmail.com> writes:

> But I wanted to ask first, do we really want to make this behavior
> unconditional in the widget library?  Or would it be better to provide
> it as an option, for customize (and possibly other clients) to set it?

I think an option here would be nice, because I think this is something
the caller would want to control.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line.
  2019-09-16 20:10   ` Lars Ingebrigtsen
@ 2019-09-17 12:04     ` Mauro Aranda
  2019-09-18 13:26       ` Lars Ingebrigtsen
  0 siblings, 1 reply; 27+ messages in thread
From: Mauro Aranda @ 2019-09-17 12:04 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 6755


[-- Attachment #1.1: Type: text/plain, Size: 727 bytes --]

Lars Ingebrigtsen <larsi@gnus.org> writes:

> Mauro Aranda <maurooaranda@gmail.com> writes:
>
>> But I wanted to ask first, do we really want to make this behavior
>> unconditional in the widget library?  Or would it be better to provide
>> it as an option, for customize (and possibly other clients) to set it?
>
> I think an option here would be nice, because I think this is something
> the caller would want to control.

I agree with you.  I've come up with the attached patch, let me know
what you think.

For a quick way to test it, I used the option window-combination-limit:

emacs -Q
M-x customize-variable window-combination-limit

Changing the values, it can be seen when the tag string is filled and
when it's not.

[-- Attachment #1.2: Type: text/html, Size: 944 bytes --]

[-- Attachment #2: 0001-Fill-tag-strings-in-customize-buffers-Bug-6755.patch --]
[-- Type: text/x-patch, Size: 3267 bytes --]

From b0313c7cb28680060da9bc56c05bf041165b91bf Mon Sep 17 00:00:00 2001
From: Mauro Aranda <maurooaranda@gmail.com>
Date: Mon, 16 Sep 2019 18:15:46 -0300
Subject: [PATCH] Fill tag strings in customize buffers (Bug#6755)

* lisp/wid-edit.el (widget-fill-tag-string): New variable, to control
whether to fill strings specified by the %t format escape.
(widget-default-create): Use it.
* doc/misc/widget.texi (Basic Types): Document the new variable.
* lisp/cus-edit.el (custom--initialize-widget-variables): Set
widget-fill-tag-string to t, to fill tag strings.
---
 doc/misc/widget.texi |  6 +++++-
 lisp/cus-edit.el     |  1 +
 lisp/wid-edit.el     | 14 ++++++++++----
 3 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/doc/misc/widget.texi b/doc/misc/widget.texi
index 6d94768..488b44e 100644
--- a/doc/misc/widget.texi
+++ b/doc/misc/widget.texi
@@ -533,9 +533,13 @@ Basic Types
 lambda expression, it will be called with the widget's value as an
 argument, and the result will be used as the documentation text.
 
+@vindex widget-fill-tag-string
 @item %t
 Insert the string specified by @code{:tag} here, or the @code{princ}
-representation of the value if there is no tag.
+representation of the value if there is no tag.  The variable
+@code{widget-fill-tag-string} controls whether to fill the inserted
+string or not.  @xref{Filling,,, elisp, the Emacs Lisp Reference Manual},
+for details on filling.
 
 @item %%
 Insert a literal @samp{%}.
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index 8a8bad9..0c392ff 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -4833,6 +4833,7 @@ custom--initialize-widget-variables
     (setq-local widget-push-button-suffix "")
     (setq-local widget-link-prefix "")
     (setq-local widget-link-suffix ""))
+  (setq-local widget-fill-tag-string t)
   (setq show-trailing-whitespace nil))
 
 (define-derived-mode Custom-mode nil "Custom"
diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el
index 7ed7b81..69e9716 100644
--- a/lisp/wid-edit.el
+++ b/lisp/wid-edit.el
@@ -1477,6 +1477,9 @@ widget-default-completions
                 (call-interactively
                  (widget-get widget :complete-function)))))))))
 
+(defvar widget-fill-tag-string nil
+  "If non-nil, fill the string inserted by the %t :format escape.")
+
 (defun widget-default-create (widget)
   "Create WIDGET at point in the current buffer."
   (widget-specify-insert
@@ -1509,15 +1512,18 @@ widget-default-create
 		  (insert-char ?\s (widget-get widget :indent))))
 	       ((eq escape ?t)
 		(let ((image (widget-get widget :tag-glyph))
-		      (tag (substitute-command-keys
-			    (widget-get widget :tag))))
+		      (tag (substitute-command-keys (widget-get widget :tag)))
+                      (opoint (point)))
 		  (cond (image
 			 (widget-image-insert widget (or tag "image") image))
 			(tag
 			 (insert tag))
 			(t
-			 (princ (widget-get widget :value)
-				(current-buffer))))))
+			 (princ (widget-get widget :value) (current-buffer))))
+                  (when widget-fill-tag-string
+                    (save-restriction
+                      (widen)
+                      (fill-region opoint (point) nil t)))))
 	       ((eq escape ?d)
 		(let ((doc (widget-get widget :doc)))
 		  (when doc
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 27+ messages in thread

* bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line.
  2019-09-17 12:04     ` Mauro Aranda
@ 2019-09-18 13:26       ` Lars Ingebrigtsen
  2019-09-21 10:53         ` Mauro Aranda
  0 siblings, 1 reply; 27+ messages in thread
From: Lars Ingebrigtsen @ 2019-09-18 13:26 UTC (permalink / raw)
  To: Mauro Aranda; +Cc: 6755

Mauro Aranda <maurooaranda@gmail.com> writes:

> diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
> index 8a8bad9..0c392ff 100644
> --- a/lisp/cus-edit.el
> +++ b/lisp/cus-edit.el
> @@ -4833,6 +4833,7 @@ custom--initialize-widget-variables
>      (setq-local widget-push-button-suffix "")
>      (setq-local widget-link-prefix "")
>      (setq-local widget-link-suffix ""))
> +  (setq-local widget-fill-tag-string t)
>    (setq show-trailing-whitespace nil))

Hm...  what is the interface here?  You set this variable
buffer-locally...


[...]

> +			 (princ (widget-get widget :value) (current-buffer))))
> +                  (when widget-fill-tag-string
> +                    (save-restriction
> +                      (widen)
> +                      (fill-region opoint (point) nil t)))))

And then fill all the widgets of this type in this buffer?  But doesn't
that mean that it's impossible to have two widgets, one with filling and
one without, in the same buffer?

I'm not very familiar with the widget code, so I may well be
misunderstanding here.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line.
  2019-09-18 13:26       ` Lars Ingebrigtsen
@ 2019-09-21 10:53         ` Mauro Aranda
  2019-09-21 14:44           ` Drew Adams
  2019-09-22 12:30           ` Lars Ingebrigtsen
  0 siblings, 2 replies; 27+ messages in thread
From: Mauro Aranda @ 2019-09-21 10:53 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 6755

[-- Attachment #1: Type: text/plain, Size: 1696 bytes --]

Hello Lars,

Lars Ingebrigtsen <larsi@gnus.org> writes:

> Mauro Aranda <maurooaranda@gmail.com> writes:
>
>> diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
>> index 8a8bad9..0c392ff 100644
>> --- a/lisp/cus-edit.el
>> +++ b/lisp/cus-edit.el
>> @@ -4833,6 +4833,7 @@ custom--initialize-widget-variables
>>      (setq-local widget-push-button-suffix "")
>>      (setq-local widget-link-prefix "")
>>      (setq-local widget-link-suffix ""))
>> +  (setq-local widget-fill-tag-string t)
>>    (setq show-trailing-whitespace nil))
>
> Hm...  what is the interface here?  You set this variable
> buffer-locally...
>
>
> [...]
>
>> + (princ (widget-get widget :value) (current-buffer))))
>> +                  (when widget-fill-tag-string
>> +                    (save-restriction
>> +                      (widen)
>> +                      (fill-region opoint (point) nil t)))))
>
> And then fill all the widgets of this type in this buffer?  But doesn't
> that mean that it's impossible to have two widgets, one with filling and
> one without, in the same buffer?

As it stands now, yes, all widgets in customize would get its tag
filled, unless a different :create function is provided for that
widget.

I didn't thought of the case of wanting one widget with its tag filled
and another one with its tag not filled, in a customize buffer.  I didn't
see the need in that.  When would that be a good thing?

If it makes sense, a widget could have a :fill property set to t, for
example, and in the code that calls the widget creation functions (e.g.,
widget-create), widget-fill-tag-string would be bound to t.  This goes,
of course, for all other users of the widget library.

Best regards,
Mauro.

[-- Attachment #2: Type: text/html, Size: 2188 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line.
  2019-09-21 10:53         ` Mauro Aranda
@ 2019-09-21 14:44           ` Drew Adams
  2019-09-21 17:04             ` Mauro Aranda
  2019-09-22 12:30           ` Lars Ingebrigtsen
  1 sibling, 1 reply; 27+ messages in thread
From: Drew Adams @ 2019-09-21 14:44 UTC (permalink / raw)
  To: Mauro Aranda, Lars Ingebrigtsen; +Cc: 6755

OP, here.

FWIW, this enhancement request (or bug report)
did not ask for the doc string to be filled.  It
asked for it to be moved to its own line.  Those
are not at all the same thing.

A doc string should be under the control of its
author.  It should already follow the conventions
for doc string line length.  The doc string line
length is NOT the problem.

The OP report says this:

  We go to great trouble to ensure that doc
  string text width is reasonable, but Customize
  currently defeats that effort by simply
  appending the doc string to existing text and
  buttons in the buffer.

Please respect that motivation.  Authors go to
great trouble to format doc strings.  Please do
not override that willy nilly by filling the
doc they've gone to some trouble to format.

If you want to add an _option_ to _also_ fill the
doc string, that's a different enhancement request,
not this one.

That should in any case be independent.  If a user
wants doc strings to be blindly filled systematically
that's her right, so I'm not against adding such an
option.

But that's not a fulfillment of _this_ enhancement
request (or bug fix).  What's needed for this report
is to move the doc string to its own line.  Can that
please be done, or at least considered?

And if you _also_ want to consider filling the doc
string (that should be a separate enhancement
request), please do _not_ do so systematically.  Let
users choose to do that (opt in), with a user option.





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line.
  2019-09-21 14:44           ` Drew Adams
@ 2019-09-21 17:04             ` Mauro Aranda
  2019-09-21 22:36               ` Drew Adams
  0 siblings, 1 reply; 27+ messages in thread
From: Mauro Aranda @ 2019-09-21 17:04 UTC (permalink / raw)
  To: Drew Adams; +Cc: Lars Ingebrigtsen, 6755

[-- Attachment #1: Type: text/plain, Size: 1324 bytes --]

Drew Adams <drew.adams@oracle.com> writes:

> OP, here.

Hello.

> FWIW, this enhancement request (or bug report)
> did not ask for the doc string to be filled.  It
> asked for it to be moved to its own line.  Those
> are not at all the same thing.

I see.  When I read the bug report, I thought it was just a suggestion to
fix the problem of the customize buffer getting too wide.  Perhaps I was
wrong.

> But that's not a fulfillment of _this_ enhancement
> request (or bug fix).  What's needed for this report
> is to move the doc string to its own line.  Can that
> please be done, or at least considered?

May I ask you then, what is the :format option missing for this situation?

For example, if one of the const types of the defcustom you provided
had the following format-string:
(const
 :tag
 "Update `*Completions*' incrementally if already displayed"
 :format "\n%t\n%d"
 t)

then the tag would go to its own line.  And that avoids making the
customize buffer too wide.

> And if you _also_ want to consider filling the doc
> string (that should be a separate enhancement
> request), please do _not_ do so systematically.  Let
> users choose to do that (opt in), with a user option.

I take all the points you raised about the filling option, but I think
it might be better to at least postpone that discussion.

[-- Attachment #2: Type: text/html, Size: 1596 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line.
  2019-09-21 17:04             ` Mauro Aranda
@ 2019-09-21 22:36               ` Drew Adams
  2019-09-22 14:55                 ` Eli Zaretskii
  0 siblings, 1 reply; 27+ messages in thread
From: Drew Adams @ 2019-09-21 22:36 UTC (permalink / raw)
  To: Mauro Aranda; +Cc: Lars Ingebrigtsen, 6755

>> FWIW, this enhancement request (or bug report)
>> did not ask for the doc string to be filled.  It
>> asked for it to be moved to its own line.  Those
>> are not at all the same thing.
>
> I see.  When I read the bug report, I thought it was just a suggestion to
> fix the problem of the customize buffer getting too wide.  Perhaps I was
> wrong.

The bug report just asks that the first line of a doc
string be put on its own line, and likewise for :tag
lines.

>> But that's not a fulfillment of _this_ enhancement
>> request (or bug fix).  What's needed for this report
>> is to move the doc string to its own line.  Can that
>> please be done, or at least considered?
>
> May I ask you then, what is the :format option missing for this situation?
>
> For example, if one of the const types of the defcustom you provided
> had the following format-string:
> (const 
> :tag
> "Update `*Completions*' incrementally if already displayed"
> :format "\n%t\n%d"
> t)
>
> then the tag would go to its own line.  And that avoids making the
> customize buffer too wide.

Maybe so, but defcustom writers should not need to worry
about that.  See above.

Imagine if when you do `C-h f' the *Help* buffer stuffed
a bunch of stuff in front of the first docstring line.

That's just obstruction; it just gets in the way.  And
it's not necessary.

Customize should just assume that a docstring has the
honor of being shown starting in column 1.  And the same
for a :tag line.

>> And if you _also_ want to consider filling the doc
>> string (that should be a separate enhancement
>> request), please do _not_ do so systematically.  Let
>> users choose to do that (opt in), with a user option.
>
> I take all the points you raised about the filling option, but I think
> it might be better to at least postpone that discussion.

Filling is not part of this enhancement request (bug
report).  Please don't fill docstrings or :tag lines,
at least not for this bug.  If someone wants to consider
doing that, and open a discussion about it, please file
a separate enhancement request.

When I spoke of authors carefully "formatting" doc strings
I meant that they manually adjust the text and its line
lengths, to fit the convention.  That includes, e.g.,
taking `\\[...]', `\\<...>' and `\\{...}' into account.

Whatever an author implements as the source for a doc
string should be respected.  Likewise, for a :tag line.

If an author wants to use `:format' in this context
she can do so.  She should not be forced to do that
systematically, just to get a docstring or :tag line
to start in column 1, i.e., on its own line.





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line.
  2019-09-21 10:53         ` Mauro Aranda
  2019-09-21 14:44           ` Drew Adams
@ 2019-09-22 12:30           ` Lars Ingebrigtsen
  1 sibling, 0 replies; 27+ messages in thread
From: Lars Ingebrigtsen @ 2019-09-22 12:30 UTC (permalink / raw)
  To: Mauro Aranda; +Cc: 6755

Mauro Aranda <maurooaranda@gmail.com> writes:

> As it stands now, yes, all widgets in customize would get its tag
> filled, unless a different :create function is provided for that
> widget.
>
> I didn't thought of the case of wanting one widget with its tag filled
> and another one with its tag not filled, in a customize buffer.  I didn't
> see the need in that.  When would that be a good thing?

If we're adding a way to allow controlling whether to fill or not, then
it should be flexible.

> If it makes sense, a widget could have a :fill property set to t, for
> example, and in the code that calls the widget creation functions (e.g.,
> widget-create), widget-fill-tag-string would be bound to t.  This goes,
> of course, for all other users of the widget library.

Yes, adding a :fill property sounds better to me...

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line.
  2019-09-21 22:36               ` Drew Adams
@ 2019-09-22 14:55                 ` Eli Zaretskii
  2019-09-22 17:24                   ` Mauro Aranda
  0 siblings, 1 reply; 27+ messages in thread
From: Eli Zaretskii @ 2019-09-22 14:55 UTC (permalink / raw)
  To: Drew Adams; +Cc: larsi, maurooaranda, 6755

> Date: Sat, 21 Sep 2019 22:36:23 +0000 (UTC)
> From: Drew Adams <drew.adams@oracle.com>
> Cc: Lars Ingebrigtsen <larsi@gnus.org>, 6755@debbugs.gnu.org
> 
> The bug report just asks that the first line of a doc
> string be put on its own line, and likewise for :tag
> lines.

There's some kind of serious confusion in this bug report.  The text
that is displayed to the right of the "Value Menu" button is not the
doc string, it's the textual description of the current value.
Therefore, it makes no sense at all to start that text on a new line.
I also don't see how filling of any kind can make the situation better
when the textual description is too long.

Reading the discussions, I think they were mostly based on the above
misunderstanding, so I think we should either close this bug, or maybe
start discussing it anew, after forgetting everything that was said
and suggested, because none of that makes sense to me.





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line.
       [not found]               ` <<837e60qt1f.fsf@gnu.org>
@ 2019-09-22 16:09                 ` Drew Adams
  2019-09-22 16:57                   ` Eli Zaretskii
  0 siblings, 1 reply; 27+ messages in thread
From: Drew Adams @ 2019-09-22 16:09 UTC (permalink / raw)
  To: Eli Zaretskii, Drew Adams; +Cc: larsi, maurooaranda, 6755

> > The bug report just asks that the first line of a doc
> > string be put on its own line, and likewise for :tag
> > lines.
> 
> There's some kind of serious confusion in this bug report.  The text
> that is displayed to the right of the "Value Menu" button is not the
> doc string, it's the textual description of the current value.

Correct.  I guess there is no problem with the
doc-string display - my bad for mentioning doc
strings.

It's about :tag lines.  The screenshots and the
defcustom provided make that clear, I believe.

> Therefore, it makes no sense at all to start that text on a new line.

Why do you think that follows logically?  I don't.

This bug report / enhancement request is precisely to
put that text on its own line.  At least do so when
the text would go past the conventional limit (70 chars
or whatever) when placed after Customize constructs
(boilerplate text, buttons, etc.).

> I also don't see how filling of any kind can make the situation better
> when the textual description is too long.

This bug report does not ask for text filling, at all.
Please move consideration/discussion of filling to
a new bug report, if you're interested in that.

> Reading the discussions, I think they were mostly based on the above
> misunderstanding, 

No mention of filling is in the bug report.  That
misunderstanding apparently came out of the sky,
perhaps just based on mention of the buffer content
being too wide.

> so I think we should either close this bug, or maybe
> start discussing it anew, after forgetting everything that was said
> and suggested, because none of that makes sense to me.

It should not be closed.  And there is no reason to
forget "everything that was said".

You can certainly forget about filling, and I guess
you can forget about the doc string (my apologies for
mentioning the doc string).

The problem is :tag lines.  They should be moved to
their own line - at least when combining them with
widget artifacts makes the resulting displayed content
too wide.

It's reasonable for :tag text to be up to, say, 70
chars.  It's probably even reasonable for :tag text
to contain newlines - like a doc string.

It's not reasonable/helpful for :tag text to simply
be tacked onto the end of a line where Customize has
itself inserted lots of other stuff.





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line.
  2019-09-22 16:09                 ` Drew Adams
@ 2019-09-22 16:57                   ` Eli Zaretskii
  2019-09-23 10:10                     ` Lars Ingebrigtsen
  0 siblings, 1 reply; 27+ messages in thread
From: Eli Zaretskii @ 2019-09-22 16:57 UTC (permalink / raw)
  To: Drew Adams; +Cc: larsi, maurooaranda, 6755

> Date: Sun, 22 Sep 2019 09:09:52 -0700 (PDT)
> From: Drew Adams <drew.adams@oracle.com>
> Cc: maurooaranda@gmail.com, larsi@gnus.org, 6755@debbugs.gnu.org
> 
> It's about :tag lines.  The screenshots and the
> defcustom provided make that clear, I believe.
> 
> > Therefore, it makes no sense at all to start that text on a new line.
> 
> Why do you think that follows logically?  I don't.
> 
> This bug report / enhancement request is precisely to
> put that text on its own line.

And that's exactly what makes no sense: we would be artificially
separating the value menu button from the description of the current
value.

So if you insist on doing this, I object to this proposal.

> At least do so when the text would go past the conventional limit
> (70 chars or whatever) when placed after Customize constructs
> (boilerplate text, buttons, etc.).

No.  It is up to the Lisp programmers to make sure the text is short
enough to not cause this.  Exactly like with doc strings.

> > I also don't see how filling of any kind can make the situation better
> > when the textual description is too long.
> 
> This bug report does not ask for text filling, at all.
> Please move consideration/discussion of filling to
> a new bug report, if you're interested in that.

I only mentioned filling because that was one of the proposed
solutions.  We should NOT do any filling here.

> The problem is :tag lines.  They should be moved to
> their own line - at least when combining them with
> widget artifacts makes the resulting displayed content
> too wide.

Disagree.





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line.
  2019-09-22 14:55                 ` Eli Zaretskii
@ 2019-09-22 17:24                   ` Mauro Aranda
  2019-09-22 19:11                     ` Eli Zaretskii
  0 siblings, 1 reply; 27+ messages in thread
From: Mauro Aranda @ 2019-09-22 17:24 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Lars Ingebrigtsen, 6755

[-- Attachment #1: Type: text/plain, Size: 538 bytes --]

Eli Zaretskii <eliz@gnu.org> writes:

> There's some kind of serious confusion in this bug report.  The text
> that is displayed to the right of the "Value Menu" button is not the
> doc string, it's the textual description of the current value.

Thanks for clarifying.

> Therefore, it makes no sense at all to start that text on a new line.

FWIW, I agree.

> I also don't see how filling of any kind can make the situation better
> when the textual description is too long.

OK.  FTR, I ask everyone to ignore the patch I sent, please.

[-- Attachment #2: Type: text/html, Size: 710 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line.
  2019-09-22 17:24                   ` Mauro Aranda
@ 2019-09-22 19:11                     ` Eli Zaretskii
  0 siblings, 0 replies; 27+ messages in thread
From: Eli Zaretskii @ 2019-09-22 19:11 UTC (permalink / raw)
  To: Mauro Aranda; +Cc: larsi, 6755

> From: Mauro Aranda <maurooaranda@gmail.com>
> Date: Sun, 22 Sep 2019 14:24:06 -0300
> Cc: Drew Adams <drew.adams@oracle.com>, Lars Ingebrigtsen <larsi@gnus.org>, 6755@debbugs.gnu.org
> 
> > I also don't see how filling of any kind can make the situation better
> > when the textual description is too long.
> 
> OK.  FTR, I ask everyone to ignore the patch I sent, please.

Thanks for working on this, regardless.





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line.
       [not found]                   ` <<83v9tkp8ui.fsf@gnu.org>
@ 2019-09-22 22:56                     ` Drew Adams
  0 siblings, 0 replies; 27+ messages in thread
From: Drew Adams @ 2019-09-22 22:56 UTC (permalink / raw)
  To: Eli Zaretskii, Drew Adams; +Cc: larsi, maurooaranda, 6755

> > It's about :tag lines.  The screenshots and the
> > defcustom provided make that clear, I believe.
> >
> > > Therefore, it makes no sense at all to start that text on a new line.
> >
> > Why do you think that follows logically?  I don't.
> >
> > This bug report / enhancement request is precisely to
> > put that text on its own line.
> 
> And that's exactly what makes no sense: 

I disagree that it makes no sense.  In fact I think it
makes a lot of sense.  Hence this enhancement request.

> we would be artificially separating the value menu
> button from the description of the current value.

Look at the screenshots.  I don't see why anyone would
find it odd, let alone "make no sense") to show the doc
for the current value just below button, on the next line.

But there's no accounting for tastes, as they say.
You have yours; I have mine.

To me it's artificial to show the :tag text to the right
of the button, especially when it is more than a few
chars long.

> So if you insist on doing this, I object to this proposal.

That's what this enhancement request is about.  Does
that count as "insistence"?

> > At least do so when the text would go past the conventional limit
> > (70 chars or whatever) when placed after Customize constructs
> > (boilerplate text, buttons, etc.).
> 
> No.  It is up to the Lisp programmers to make sure the text is short
> enough to not cause this.  Exactly like with doc strings.

Not the same at all.  Why? because Customize sticks
a variable amount of stuff before the :tag text.

1. You know where a doc string will be displayed,
   and it always starts in column 1.

2. But :tag text depends on the stuff that Customize
   adds to the buffer before it.

   In the case of the `Value Menu' button, that
   stuff includes the option (or face) name, which
   varies from option to option.

   That means that the longer the option name, the
   less room for the :tag string.  There should be
   no such relation between their lengths.  (Why
   would there be?)

   The :tag in the screenshot is 55 chars.  Given
   the option name of 34 chars, plus the colon,
   `Value Menu' button, and spaces Customize adds,
   there is only room for a :tag of 30 chars.

3. Imagine if we did something similar for `C-h v':
   Put, say, the first line of the doc string (or
   some other descriptive text, if you don't like
   that hypothetical) to the right of the var name.

   That wouldn't make much sense, would it?  Why?
   Because a long variable name would mean you'd
   have to use a short description.

   There's no reason to impose any relation between
   those lengths.  Doing so "makes no sense", to me.
 
> > The problem is :tag lines.  They should be moved to
> > their own line - at least when combining them with
> > widget artifacts makes the resulting displayed content
> > too wide.
> 
> Disagree.





^ permalink raw reply	[flat|nested] 27+ messages in thread

* bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line.
  2019-09-22 16:57                   ` Eli Zaretskii
@ 2019-09-23 10:10                     ` Lars Ingebrigtsen
  0 siblings, 0 replies; 27+ messages in thread
From: Lars Ingebrigtsen @ 2019-09-23 10:10 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: maurooaranda, 6755

Eli Zaretskii <eliz@gnu.org> writes:

> No.  It is up to the Lisp programmers to make sure the text is short
> enough to not cause this.  Exactly like with doc strings.

If you have very long variable names, it can be difficult to make the
tags short enough...  But I've grepped through the Emacs sources, and
after eyeballing :tag usage here, I'm estimating that approx. none of
the in-tree instances have this problem, so I agree with you.

And I'm closing this bug report.

Thanks for working on this, Mauro, anyway.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2019-09-23 10:10 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-07-29 16:29 bug#6755: 24.0.50; Customize buffer is too wide. Put doc string on separate line Drew Adams
2011-07-03 13:17 ` Lars Magne Ingebrigtsen
2011-07-03 14:13   ` Drew Adams
2011-07-03 14:51     ` Lars Magne Ingebrigtsen
2011-07-03 15:12       ` Drew Adams
2011-07-03 15:19       ` Lars Magne Ingebrigtsen
2011-07-04  4:48         ` Drew Adams
2011-07-04 12:24           ` Lars Magne Ingebrigtsen
2011-07-04 16:21             ` Drew Adams
2011-07-05 13:36               ` Lars Magne Ingebrigtsen
2011-07-03 15:25       ` Lars Magne Ingebrigtsen
2019-09-16 14:54 ` Mauro Aranda
2019-09-16 20:10   ` Lars Ingebrigtsen
2019-09-17 12:04     ` Mauro Aranda
2019-09-18 13:26       ` Lars Ingebrigtsen
2019-09-21 10:53         ` Mauro Aranda
2019-09-21 14:44           ` Drew Adams
2019-09-21 17:04             ` Mauro Aranda
2019-09-21 22:36               ` Drew Adams
2019-09-22 14:55                 ` Eli Zaretskii
2019-09-22 17:24                   ` Mauro Aranda
2019-09-22 19:11                     ` Eli Zaretskii
2019-09-22 12:30           ` Lars Ingebrigtsen
     [not found] <<CABczVwc9RpGvxYMTX8iSvhFqJ2eBZLvHvaWsZ4n2FZfYh_KZvg@mail.gmail.com>
     [not found] ` <<871rwgt32h.fsf@gnus.org>
     [not found]   ` <<CABczVwd85QoEXfyRw-kskvSh_fB4GBdOC7HrTsM=0p8m8_JRnQ@mail.gmail.com>
     [not found]     ` <<87tv99loqr.fsf@gnus.org>
     [not found]       ` <<CABczVwe3QoPxeCAzNUdGFUgwE1YLTe6rDk73j-XH-_ppWp6=OA@mail.gmail.com>
     [not found]         ` <<780890ec-8e55-4829-942f-b9daf3513908@default>
     [not found]           ` <<CABczVwfyLe4wFKKd7gU-E8jgNEg_pAup=ymdrr1yGWbTZHTzCA@mail.gmail.com>
     [not found]             ` <<db8fbc61-0816-4750-a04f-62d7a2858849@default>
     [not found]               ` <<837e60qt1f.fsf@gnu.org>
2019-09-22 16:09                 ` Drew Adams
2019-09-22 16:57                   ` Eli Zaretskii
2019-09-23 10:10                     ` Lars Ingebrigtsen
     [not found] <<<CABczVwc9RpGvxYMTX8iSvhFqJ2eBZLvHvaWsZ4n2FZfYh_KZvg@mail.gmail.com>
     [not found] ` <<<871rwgt32h.fsf@gnus.org>
     [not found]   ` <<<CABczVwd85QoEXfyRw-kskvSh_fB4GBdOC7HrTsM=0p8m8_JRnQ@mail.gmail.com>
     [not found]     ` <<<87tv99loqr.fsf@gnus.org>
     [not found]       ` <<<CABczVwe3QoPxeCAzNUdGFUgwE1YLTe6rDk73j-XH-_ppWp6=OA@mail.gmail.com>
     [not found]         ` <<<780890ec-8e55-4829-942f-b9daf3513908@default>
     [not found]           ` <<<CABczVwfyLe4wFKKd7gU-E8jgNEg_pAup=ymdrr1yGWbTZHTzCA@mail.gmail.com>
     [not found]             ` <<<db8fbc61-0816-4750-a04f-62d7a2858849@default>
     [not found]               ` <<<837e60qt1f.fsf@gnu.org>
     [not found]                 ` <<8a2c1a21-5498-4e5d-a28c-88810ad7aa10@default>
     [not found]                   ` <<83v9tkp8ui.fsf@gnu.org>
2019-09-22 22:56                     ` Drew Adams

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).