all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Dmitry Gutov <dgutov@yandex.ru>
To: Toby Cubitt <toby-dated-1389714773.8d9ef0@dr-qubit.org>
Cc: emacs-devel@gnu.org
Subject: Re: Emacs completion matches selection UI
Date: Fri, 03 Jan 2014 00:20:38 +0400	[thread overview]
Message-ID: <52C5CA16.3060001@yandex.ru> (raw)
In-Reply-To: <20131231155235.GA9294@c3po>

On 31.12.2013 19:52, Toby Cubitt wrote:
> I really wasn't trying to promote completion-UI over Company. Indeed, I
> completely agree (as I tried to say in my previous post) that
> company-mode is much more sophisticated than completion-UI, because it
> aims to do something much more ambitious.
>
> Completion-UI was only ever intended as "plumbing": an elisp package that
> provides functions and hooks to let you display and select completion
> candidates in various UIs. Nothing more.

My impression was that you proposed it as a wrapper around Company 
and/or related packages. In that case, lowering the level of 
sophistication means lowering the amount of features, which is bad.

But if you'd like us to just use the widgets from Completion-UI (and 
maybe some code related to customizing them?), that would be okay, 
although I'd have to look into fitting any of them inside the Company's 
interaction with the command loop, or rewrite it somehow.

> Company does *much* more than this. It's practically a way of life :)

It's not hard to describe Company in the same terms: it's a framework 
designed to fetch completion candidates from the configured backends and 
allow selecting between them in the configured frontends. The "show 
documentation" and "show definition" actions are small bonus features, 
as far as complexity of implementation goes.

> I considered switching to Company for the predictive-mode UI, since I'm
> really not that interested in coding and maintaining user-interface
> code. (It's both tedious, and difficult to do well.) But Company was too
> all-encompassing: the UI elements weren't cleanly separated out from the
> rest of the mode, and I couldn't see how to make use of them without
> buying into the whole company-mode shebang.

Company front-ends are not independent widgets, indeed. They don't 
encapsulate data, instead using the same buffer-local vars Company 
operates with.

And the popup code is a relatively small part of the package, so 
"switching to Company" really means writing a backend for it, in this 
case. I wonder which part of the backend API you didn't like.

 > Maybe that's changed now.
> Though I still can't seem to see a generic UI package separate from the
> rest of company-mode.

No one's requested it, so far. There's the popular popup.el, and there's 
dropdown-list.el of unclear providence on EmacsWiki which Yasnippet uses 
optionally.

I've been thinking about splitting the Company popup code properly, but 
being able to reuse (and contribute to) the popular option which is 
popup.el would be better.

> I've got nothing at all against company-mode. Indeed, if I remember
> right, someone (you?) has added predictive-mode as a company-mode source,

Nope.

> which is great! But I didn't want to force people to use company-mode in
> order to use my predictive package.

The usual way to go about it is to have a core package (maybe using 
completion-at-point-functions) and a couple of integrations with the 
popular completion packages.

> I just wanted to provide simple UIs
> for displaying and selecting completions.

I'd wager Predictive would have a better adoption if it wasn't coupled 
to a yet-another completion package. I, for one, don't even consider 
using it for this reason. Although maybe I'm just not the target audience.

> I'd be very happy to see the UI parts of Company stripped out and made
> into a simple, generic completion UI package and added to Emacs.

Would you like to propose an API for it? Same as popup.el?

> Since completion-UI was originally written as the UI for predictive-mode
> (which is most useful in text modes), it's strong on plain text features,
> and weaker on programming-related features. For example, last time I
> looked completion-UI's auto-completion-mode was much more sophisticated
> than that in any other package (which lacked many of the features that
> are crucial to implementing predictive completion).
>
> That's why I think merging the best bits of the generic UI stuff from all
> the various frameworks would be the best way to go.

It sounds good as an abstract idea, but I'd like to see a more specific 
proposal.

>> Toby Cubitt <toby-predictive@dr-qubit.org> writes:
>>> - has completely modularised completion user-interfaces, which can be
>>>    used in any combination the user likes (within reason)
>>
>> You can have some of that in Company by setting `company-frontends' to a
>> buffer-local value. Probably. I've never tried that, though, and I'm not
>> sure if I'll ever want to, personally.
>
> Really? Some people like auto-displayed tooltips, some people hate
> them. Some people like displaying completions in the echo area, some find
> it a distraction. Makes sense to me (given that this is Emacs we're
> talking about) to let people customize it the way *they* want via
> customization options, with sensible defaults.

Sorry, I took it to mean that in Completion-UI you can configure 
user-interfaces per completion source, which is probably not the case.

The user can of course configure the used front-ends in Company, by 
customizing the global `company-frontends' value (as opposed to 
buffer-local ones I mentioned above).

> Yes. And a "completion browser" that organises all the completions into a
> hierarchical set of menus. (As with most things, this generic version can
> be overridden by particular completion sources to provide a specific
> version that's more useful. I use that e.g. in the predictive-mode LaTeX
> support when completing LaTeX commands, environments, labels, etc.)

The browser sounds useful, I'll have to look into it.

A mouse-only menu won't fit Company because it won't work for idle 
completion, as I mentioned elsewhere in this thread, and we generally 
want to provide a consistent keyboard interface. There'll also be issues 
with implementation related to that.

>>> - lets you add a new completion UI with a single call to the
>>>    `completion-ui-register-interface' macro
>>
>> Company allows you to do that with a handy macro called `defun'.
>
> Needlessly snarky.

Sorry. I was aiming for cute rather than aggressive.

 > You still need some way to tell Company about the new
> UI, so that it knows to invoke it.

Actually, no. After defining the backend function with `defun', the user 
will need to add it to `company-backends', but that's not much different 
from them having to customize `auto-completion-source' in Completion-UI.

> It's not a conversion at all. The sophisticated parts of company aren't
> about displaying menus, or popups, or tooltips, etc. I'm just saying that
> if you had a generic Emacs completion UI, you could (and should) rebase
> Company's UI on that. This is a small and boring part of
> Company. Wouldn't you be happy to see that included in Emacs, so everyone
> could benefit instead of reimplementing the wheel?

Of course I would. But a) you don't own the popup code, which we would 
like to use, b) it could be hard to augment Completion-UI widgets with 
new commands, such as, for example, which using Company you can 
currently press `f1' when the popup is active to pop up the 
documentation buffer, or `C-w' to see the function source. How hard 
would it be?

>
> That's why I went to the effort many years ago now of separating the UI
> code out of predictive-mode into something generic. Unfortunately,
> everyone then went off and invented new wheels (the UI code in Company,
> anything, auto-compelte, etc. etc.).
>
>> Also, I think `company-backends' provides a nicer API than
>> `completion-ui-register-source'.
>
> Could well be. So help design a good API for a generic Emacs completion UI.

Yes, sure. Would someone maybe submit an initial proposal?



  parent reply	other threads:[~2014-01-02 20:20 UTC|newest]

Thread overview: 258+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-18 16:13 Emacs completion matches selection UI Ted Zlatanov
2013-11-18 20:00 ` Bozhidar Batsov
2013-11-18 20:54   ` Andreas Röhler
2013-11-18 21:15   ` Ted Zlatanov
2013-11-19  0:43     ` Stefan Monnier
2013-11-19  9:52       ` Dmitry Gutov
2013-11-19 13:41         ` Stefan Monnier
2013-11-19 14:00           ` Dmitry Gutov
2013-11-19 14:58             ` Ted Zlatanov
2013-11-19 17:50               ` Stefan Monnier
2013-11-19 21:07                 ` Ted Zlatanov
2013-11-20  0:28                   ` Stefan Monnier
2013-11-20  1:30                     ` Ted Zlatanov
2013-11-20  3:22                       ` Stefan Monnier
2013-11-20 17:52                         ` Ted Zlatanov
2013-11-20 19:10                           ` Stefan Monnier
2013-11-20 20:00                             ` Ted Zlatanov
2013-11-20 15:57                     ` Josh
2013-11-21  0:52                       ` Juri Linkov
2013-11-21  3:48                         ` Eli Zaretskii
2013-11-22  0:10                           ` Juri Linkov
2013-11-22  7:36                             ` Eli Zaretskii
2013-11-22 12:33                               ` Ted Zlatanov
2013-11-25 13:28                                 ` Ted Zlatanov
2013-11-25 15:18                                   ` Stefan Monnier
2013-12-16 15:17                                     ` Ted Zlatanov
2013-12-16 18:35                                       ` Stefan Monnier
2013-12-16 22:15                                         ` Ted Zlatanov
2013-12-17  2:10                                           ` Stefan Monnier
2013-12-17 10:49                                             ` Ted Zlatanov
2013-12-17 18:29                                               ` Stefan Monnier
2013-12-17 20:59                                                 ` Ted Zlatanov
2013-12-18  1:58                                                   ` Stephen J. Turnbull
2013-12-18  3:09                                                     ` Ted Zlatanov
2013-12-18  4:47                                                       ` Stephen J. Turnbull
2013-12-18 14:43                                                         ` Ted Zlatanov
2013-12-18 15:51                                                           ` Eli Zaretskii
2013-12-18 16:38                                                             ` Ted Zlatanov
2013-12-18 17:05                                                               ` Eli Zaretskii
2013-12-18 17:18                                                                 ` Ted Zlatanov
2013-12-18 17:37                                                           ` Stephen J. Turnbull
2013-12-18 19:05                                                             ` Ted Zlatanov
2013-12-18 21:11                                                               ` chad
2013-12-19  3:40                                                                 ` Stefan Monnier
2013-12-19 15:49                                                                   ` Ted Zlatanov
2013-12-19 17:30                                                                     ` Dmitry Gutov
2013-12-19 18:44                                                                       ` Ted Zlatanov
2013-12-19 21:44                                                                         ` Dmitry Gutov
2013-12-20  1:15                                                                           ` Ted Zlatanov
2013-12-20  3:06                                                                             ` Stephen J. Turnbull
2013-12-20  3:08                                                                             ` Dmitry Gutov
2013-12-20 11:49                                                                               ` Ted Zlatanov
2013-12-20 13:18                                                                                 ` Dmitry Gutov
2013-12-20 14:59                                                                                   ` Ted Zlatanov
2013-12-22  1:45                                                                                     ` Stefan Monnier
2013-12-22  2:29                                                                                       ` Dmitry Gutov
2013-12-22 11:07                                                                                         ` Stefan Monnier
2013-12-22 16:07                                                                                           ` Dmitry Gutov
2013-12-22 22:50                                                                                             ` enabling company-capf support in cfengine.el (was: Emacs completion matches selection UI) Ted Zlatanov
2013-12-23  0:17                                                                                               ` enabling company-capf support in cfengine.el Dmitry Gutov
2013-12-23  1:11                                                                                                 ` Ted Zlatanov
2013-12-23  1:32                                                                                                   ` Dmitry Gutov
2014-01-16 13:12                                                                                                 ` Dmitry Gutov
2014-01-16 16:06                                                                                                   ` Stefan Monnier
2014-01-16 17:39                                                                                                     ` Dmitry Gutov
2014-01-17 13:04                                                                                                       ` Stefan Monnier
2014-01-18 14:13                                                                                                         ` Dmitry Gutov
2014-01-19  2:37                                                                                                           ` Stefan Monnier
2014-01-19 16:44                                                                                                             ` Dmitry Gutov
2014-01-19 20:19                                                                                                               ` Stefan Monnier
2014-01-19 20:44                                                                                                                 ` David Engster
2014-01-20  0:13                                                                                                                 ` Dmitry Gutov
2014-01-20  2:14                                                                                                                   ` Stephen J. Turnbull
2014-01-20  2:39                                                                                                                     ` John Yates
2014-01-20  3:22                                                                                                                       ` Stephen J. Turnbull
2014-01-20  7:10                                                                                                                         ` David Kastrup
2014-01-20 14:22                                                                                                                         ` John Yates
2014-01-20 14:55                                                                                                                           ` David Kastrup
2014-01-20 15:09                                                                                                                           ` clang vs free software (was: enabling company-capf support in cfengine.el) Stefan Monnier
2014-01-20 19:47                                                                                                                             ` clang vs free software David Engster
2014-01-21 14:42                                                                                                                               ` Richard Stallman
2014-01-21 15:02                                                                                                                                 ` David Kastrup
2014-01-21 15:20                                                                                                                                 ` Dmitry Gutov
2014-01-22 15:31                                                                                                                                   ` Richard Stallman
2014-01-22 17:24                                                                                                                                     ` Dmitry Gutov
2014-01-21 15:34                                                                                                                                 ` John Yates
2014-01-21 16:00                                                                                                                                   ` Rüdiger Sonderfeld
2014-01-21 16:25                                                                                                                                     ` joakim
2014-01-21 16:34                                                                                                                                       ` Rüdiger Sonderfeld
2014-01-21 16:38                                                                                                                                         ` joakim
2014-01-21 18:50                                                                                                                                           ` Rüdiger Sonderfeld
2014-01-21 18:00                                                                                                                                         ` Thien-Thi Nguyen
2014-01-21 18:44                                                                                                                                           ` Rüdiger Sonderfeld
2014-01-23 10:55                                                                                                                                   ` Richard Stallman
2014-01-23 11:01                                                                                                                                     ` David Kastrup
2014-01-23 14:26                                                                                                                                       ` Helmut Eller
2014-01-25 23:02                                                                                                                                         ` Richard Stallman
2014-01-25 23:28                                                                                                                                           ` Daniel Colascione
2014-01-26  1:35                                                                                                                                             ` Lennart Borgman
2014-01-26  6:45                                                                                                                                             ` David Kastrup
2014-01-26 12:13                                                                                                                                               ` Daniel Colascione
2014-01-26 12:35                                                                                                                                                 ` Lennart Borgman
2014-01-26 14:45                                                                                                                                                 ` David Kastrup
2014-01-26 20:06                                                                                                                                                 ` Richard Stallman
2014-01-26 20:06                                                                                                                                             ` Richard Stallman
2014-01-26 10:22                                                                                                                                           ` Helmut Eller
2014-01-26 11:12                                                                                                                                             ` David Kastrup
2014-01-26 12:36                                                                                                                                               ` Helmut Eller
2014-01-26 14:54                                                                                                                                                 ` David Kastrup
2014-01-26 20:06                                                                                                                                             ` Richard Stallman
2014-01-26 15:12                                                                                                                                           ` Stefan Monnier
2014-01-26 15:15                                                                                                                                             ` Lennart Borgman
2014-01-26 15:35                                                                                                                                               ` David Kastrup
2014-01-26 15:46                                                                                                                                                 ` Lennart Borgman
2014-01-23 16:35                                                                                                                                       ` Rüdiger Sonderfeld
2014-01-23 18:04                                                                                                                                         ` David Engster
2014-01-22  2:06                                                                                                                                 ` unic0rn
2014-01-20 15:57                                                                                                                           ` enabling company-capf support in cfengine.el Stephen J. Turnbull
2014-01-20  3:32                                                                                                                       ` Óscar Fuentes
2014-01-20 13:59                                                                                                                         ` John Yates
2014-01-20 14:30                                                                                                                           ` David Kastrup
2014-01-20 17:01                                                                                                                             ` John Yates
2014-01-20  2:17                                                                                                                   ` Stefan Monnier
2014-01-19 16:54                                                                                                             ` Dmitry Gutov
2014-01-19 20:21                                                                                                               ` Stefan Monnier
2014-01-19 23:57                                                                                                                 ` Dmitry Gutov
2014-01-20  2:20                                                                                                                   ` Stefan Monnier
2014-01-20  2:33                                                                                                                     ` Dmitry Gutov
2014-01-20 13:41                                                                                                                       ` Stefan Monnier
2013-12-23  1:36                                                                                             ` Emacs completion matches selection UI Stefan Monnier
2013-12-23  2:12                                                                                               ` Dmitry Gutov
2013-12-23 13:33                                                                                                 ` Stefan Monnier
2013-12-20  1:19                                                                         ` Stephen J. Turnbull
2013-12-20  1:17                                                                     ` Stephen J. Turnbull
2013-12-20 14:32                                                                     ` Stefan Monnier
2013-12-20 15:54                                                                       ` Ted Zlatanov
2013-12-21  3:32                                                                         ` Stephen J. Turnbull
2013-12-21  4:58                                                                           ` Ted Zlatanov
2013-12-22  2:05                                                                         ` Stefan Monnier
2013-12-22 23:15                                                                           ` Ted Zlatanov
2013-12-23  1:59                                                                             ` Stefan Monnier
2013-12-23 12:28                                                                               ` Ted Zlatanov
2013-12-23 13:42                                                                                 ` Stefan Monnier
2013-12-23 14:52                                                                                   ` Ted Zlatanov
2013-12-30 20:47                                                                                     ` Toby Cubitt
2013-12-31  0:20                                                                                       ` Leo Liu
2013-12-31  7:48                                                                                         ` joakim
2013-12-31 14:30                                                                                       ` Dmitry Gutov
2013-12-31 15:52                                                                                         ` Toby Cubitt
2013-12-31 17:45                                                                                           ` joakim
2014-01-02 18:54                                                                                             ` Dmitry Gutov
2014-01-02 18:10                                                                                           ` Stefan Monnier
2014-01-03 17:49                                                                                             ` Ted Zlatanov
2014-01-03 19:36                                                                                               ` Stefan Monnier
2014-01-04  0:48                                                                                               ` Toby Cubitt
2014-01-04  3:45                                                                                                 ` Stefan Monnier
2014-01-06  4:47                                                                                                   ` Toby Cubitt
2014-01-06 23:38                                                                                                 ` Ted Zlatanov
2014-01-07  3:57                                                                                                   ` Toby Cubitt
2014-01-04  9:21                                                                                               ` João Távora
2014-01-06 23:21                                                                                                 ` Ted Zlatanov
2014-01-02 20:20                                                                                           ` Dmitry Gutov [this message]
2014-01-02 22:58                                                                                             ` Toby Cubitt
2014-01-03  2:40                                                                                               ` Stefan Monnier
2014-01-03 14:30                                                                                                 ` Toby Cubitt
2014-01-03 16:23                                                                                                   ` Dmitry Gutov
2014-01-03 16:48                                                                                                     ` Toby Cubitt
2014-01-03 19:32                                                                                                       ` Stefan Monnier
2014-01-03 22:06                                                                                                         ` Toby Cubitt
2014-01-04  3:39                                                                                                           ` Stefan Monnier
2014-01-06  4:00                                                                                                             ` Toby Cubitt
2014-01-03 16:35                                                                                               ` Toby Cubitt
2014-01-03 17:46                                                                                                 ` Thierry Volpiatto
2014-01-04  2:39                                                                                               ` Dmitry Gutov
2014-01-04  3:54                                                                                                 ` Stefan Monnier
2014-01-05  4:08                                                                                                   ` Dmitry Gutov
2014-01-05 16:04                                                                                                     ` Stefan Monnier
2014-01-06  4:25                                                                                                       ` Dmitry Gutov
2014-01-06  5:25                                                                                                         ` Toby Cubitt
2014-01-06  2:39                                                                                                 ` Toby Cubitt
2014-01-06  4:03                                                                                                   ` Stefan Monnier
2014-01-06  5:35                                                                                                     ` Toby Cubitt
2014-01-06  5:55                                                                                                       ` Dmitry Gutov
2014-01-06 14:47                                                                                                       ` Stefan Monnier
2014-01-06 15:54                                                                                                         ` Toby Cubitt
2014-01-06 20:53                                                                                                           ` Stefan Monnier
2014-01-06 23:45                                                                                                     ` Ted Zlatanov
2014-01-06  7:36                                                                                                   ` Dmitry Gutov
2014-01-06 15:51                                                                                                     ` Toby Cubitt
2014-01-07  0:17                                                                                                       ` Dmitry Gutov
2014-01-07  3:32                                                                                                         ` Toby Cubitt
2014-01-07 23:23                                                                                                           ` Dmitry Gutov
2014-01-08  2:58                                                                                                             ` Toby Cubitt
2014-01-08  3:38                                                                                                               ` Bob Bobeck
2014-01-08  3:47                                                                                                                 ` Toby Cubitt
2014-01-08  9:27                                                                                                                 ` Richard Stallman
2014-01-08 15:37                                                                                                                 ` Ted Zlatanov
2014-01-08  4:49                                                                                                               ` Stefan Monnier
2014-01-08 15:33                                                                                                                 ` Ted Zlatanov
2014-01-08 16:11                                                                                                                   ` Toby Cubitt
2014-01-09  7:12                                                                                                               ` Dmitry Gutov
2013-12-23 13:45                                                                               ` John Yates
2013-12-23 16:02                                                                                 ` Stefan Monnier
2013-12-24  2:47                                                                                   ` John Yates
2013-12-28 14:02                                                                                     ` Stefan Monnier
2013-12-28 16:43                                                                                       ` John Yates
2013-12-30 12:55                                                                                         ` Stefan Monnier
2013-12-30 16:32                                                                                           ` João Távora
2014-01-04 23:02                                                                                             ` Stefan Monnier
2014-01-05  2:13                                                                                               ` João Távora
2014-01-05 16:11                                                                                                 ` Stefan Monnier
2014-01-06 23:48                                                                                                   ` Ted Zlatanov
2014-01-07  3:15                                                                                                     ` Stefan Monnier
2014-01-07 16:13                                                                                                       ` Ted Zlatanov
2014-01-07 17:18                                                                                                       ` João Távora
2014-01-07 18:10                                                                                                         ` Josh
2014-01-07 19:42                                                                                                           ` David Kastrup
2014-01-08  3:54                                                                                                             ` Josh
2014-01-07  3:16                                                                                                     ` Stefan Monnier
2014-01-07 16:12                                                                                                       ` Ted Zlatanov
2013-12-28 15:59                                                                                     ` João Távora
2013-12-28 17:00                                                                                       ` John Yates
2013-12-28 17:40                                                                                         ` Josh
2013-12-19  4:53                                                                 ` Stephen J. Turnbull
2013-12-19  5:45                                                                   ` chad
2013-12-19  7:03                                                                     ` Stephen J. Turnbull
2013-12-19  7:59                                                                       ` Aaron Ecay
2013-12-19 15:29                                                                         ` Stephen J. Turnbull
2013-12-19 17:41                                                                       ` Eli Zaretskii
2013-12-19 18:46                                                                         ` Ted Zlatanov
2013-12-20  0:53                                                                         ` Stephen J. Turnbull
2013-12-19  6:23                                                               ` Stephen J. Turnbull
2013-11-19 16:24             ` Eli Zaretskii
2013-11-21 10:17               ` Dmitry Gutov
2013-11-21 16:30                 ` Eli Zaretskii
2013-11-22  5:38                   ` Stephen J. Turnbull
2013-11-22 15:19                     ` Eli Zaretskii
2013-11-23 10:03                       ` Stephen J. Turnbull
2013-11-19 13:48       ` Ted Zlatanov
2013-11-19 18:03         ` Stefan Monnier
2013-11-20  0:10         ` Gregor Zattler
2013-11-20  1:25           ` Ted Zlatanov
2013-11-20 17:59             ` John Yates
2013-11-19  0:47     ` Juri Linkov
2013-11-19 11:18       ` Tom
2013-11-19 14:00         ` Stefan Monnier
2013-11-20  0:45           ` Juri Linkov
2013-11-20  7:34             ` martin rudalics
2013-11-20  7:50               ` Tom
2013-11-21  0:45               ` Juri Linkov
2013-11-21  7:41                 ` martin rudalics
2013-11-22  0:18                   ` Juri Linkov
2013-11-22 10:26                     ` martin rudalics
2013-11-19 19:44       ` Dmitry Gutov
2013-11-20  7:39         ` Eric Abrahamsen
2013-11-19 17:33 ` Sebastian Wiesner
  -- strict thread matches above, loose matches on Subject: below --
2013-12-30 20:35 Barry OReilly
2014-01-01 18:12 ` Stefan Monnier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52C5CA16.3060001@yandex.ru \
    --to=dgutov@yandex.ru \
    --cc=emacs-devel@gnu.org \
    --cc=toby-dated-1389714773.8d9ef0@dr-qubit.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.