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-1390185606.c5a10d@dr-qubit.org>
Cc: emacs-devel@gnu.org
Subject: Re: Emacs completion matches selection UI
Date: Mon, 06 Jan 2014 11:36:49 +0400	[thread overview]
Message-ID: <52CA5D11.2010507@yandex.ru> (raw)
In-Reply-To: <20140106023943.GA31643@c3po>

On 06.01.2014 06:39, Toby Cubitt wrote:
> I'm sure if you'd built Company on top of Completion-UI, we would have
> rapidly improved the APIs to support everything you needed as Company
> grew.

I'm just the maintainer. :) Company's author is Nikolaj Schumacher, 
though he's stepped away from its development.

> I originally thought I'd want to disable the learning algorithms once I'd
> trained Predictive on a corpus of my writing, for precisely the reason
> you describe. But in practice the order is stable enough that I never
> found it necessary.

I'll have to look into it.

> Completion-UI stores state by marking the location of the in-progress
> completion with an overlay, and storing data in overlay properties. You
> could alternatively use text properties, as you mention later. But I find
> overlays a better match for this kind of thing.

I mentioned text properties in the context of merged backends, so the 
properties would be on the candidate strings, not in the buffer. That's 
not interchangeable with using an overlay.

 > (Presumably Company does something similar.)

It does store some data, as an implementation detail, but in no way that 
data is sufficient for a front-end to handle a sequence of commands on 
its own. Like I said, the front-ends use the buffer-local vars. Multiple 
pending completions have never been a goal so far.

>> I'd still like to a natural way to extend such widgets with new
>> commands. Passing a keymap as argument, or rebinding a dynamic variable
>> that points to keymap works, I guess, but it's not very nice.
>
> Well, this is only meaningful for some of the widgets. Indeed, "widgets"
> is mislead; the completion UIs in Completion-UI aren't necessarily
> widgets at all. For example, there are no "commands" at all in the
> dynamic completion UI, nor is it a "widget" in any normal sense of the
> word.

I'd call "widgets" any UIs that encapsulate data (store it in the 
associated overlay, for example) and define interaction commands (e.g. 
have an overlay keymap).

> The UIs absolutely cannot be treated uniformly, because not all of them
> are "display a list of completions"-style UIs. E.g. the "dynamic
> completion" UI is a completely different beast.

That might be unfortunate from the API standpoint, making it more complex.

> Even amongst the "display a list of completions"-style UIs, the
> mouse-driven toolkit menus cannot be used in the terminal, nor can pop-up
> frames, nor can tooltips. That doesn't mean one should not provide these
> interfaces at all as options. It just means they probably aren't good
> default options.

The problem of "cannot be used in the terminal", at least, can be solved 
by doing a check at runtime once, and picking between a graphical and an 
overlay-based interface. As long as they provide similar interaction, 
I'd call that "treated uniformly".

>> Not really. `company-backends' corresponds directly to
>> `auto-completion-source',
>
> Not quite. `company-backends' corresponds to the
> `completion-ui-source-definitions' variable.

I'm inclined to stand by my previous assessment: nowhere in the code I 
see you iterate over `completion-ui-source-definitions' at runtime. In 
most places, it's used as a second argument to `assq', so it acts as a 
"source registry" of sorts, and we don't have a direct correspondence to 
that in Company.

The only place it's iterated over is in 
`completion-ui-customize-list-sources', which provides the list of 
possible values to customize `auto-completion-default-source' (in the 
Git version; I've been looking at the contents of the tarball previously).

>> only instead of one function we have a list of
>> them (which can also be nested one level deep, but that's an extra feature).
>
> Sure, Completion-UI also allows a list of completion sources and selects
> between them automagically. It even supports the same "extra feature" of
> nesting sources one level deep (Combined source, in Completion-UI
> terminology).

I couldn't find the word "combined" in completion-ui.el. Could you point 
at where it's used?

> But the API for this isn't auto-completion-default-source(*). That merely
> sets the default fall-back. The API for auto-selecting from a list of
> sources is provided by `auto-completion-source-regexps',
> `auto-completion-source-faces' and the `auto-completion-source-functions'
> hook. (The former two are in fact variables used by functions in the
> default `auto-completion-source-functions' definition.)

`auto-completion-source-functions' also could be thought of as similar 
to `company-backends' because both contain logic of picking a suitable 
source (the latter by the virtue of backends themselves knowing when 
they're suitable), but the list of default detection functions (based on 
text properties, overlays, faces at point) looks more limiting to me.

Granted, the first two source functions serve to support the explicit 
overriding of the used source (feature not presend in Company, but I've 
never seen a request for this so far), but the second two offer only 
choices based on regexp or face at point. Which is not terrible, but 
more limiting than Company's free-form expectation that 
(backend-function 'prefix) returns nil when it's not applicable at point 
in the current buffer.

You could say that I can add another function or several to 
`auto-completion-source-functions', but they won't be able to do 
anything smart with third-party sources, I'll have to take care about 
each source I might want to use, separately, in those functions.

> (*) I'm referring here to the git version of Completion-UI; the last
> tarball release - which is woefully outdated - used a slightly different
> API.

Thanks for mentioning this.

> Yup, Completion-UI does something very similar. Except that completion
> source (backend) selection isn't directly tied to the backend. It's
> configured independently. So if you need to, you can set up different
> conditions under which a particular backend will be used in different
> buffers, major-modes, minor-modes, or whatever.

Note that there's nothing stopping you from defining multiple conditions 
for when a particular Company backend can be used. Most do that already: 
the popular predicates are "does the major mode match this list", "is a 
particular package loaded", "is the parse state at point in-string or 
outside", "is this buffer visiting a file", "is a particular program 
present in the system", "is there a file with a given name in a parent 
directory" and "is point inside a symbol, after a symbol or outside of 
any symbols".

> Anyhow, I don't think company-mode is something that necessarily belongs
> in a generic Emacs completion UI. At most, Emacs should include the
> necessary definitions to hook the basic completion methods that come with
> Emacs into the new generic UI (dabbrev, etags, minibuffer completion,
> maybe a few others like elisp symbol completion...).

Maybe so.

> Indeed, I would have argued that we should *first* come up with a generic
> Emacs completion UI and API *without* including any mechanism for
> automatically selecting between completion sources.

In other words, a programmatic widget API. This has come up already in 
the discussion with Ted.

> Registering a source just (1) makes life more convenient: you set all the
> option values once when you define the completion source (backend), and
> then you can refer to that source and all its associated options using a
> single name (symbol). And (2) it makes the source available as an option
> in the Customization interface, as you noted.

I would think that, since Completion-UI is less user-facing and more 
about writing Elisp to wire sources and UIs, the Customize interface is 
considerably less important.

>> It makes matters a bit worse for third-party backends, but not by much,
>> I think.
>
> I agree, this is a minor difference, and Company doesn't lose much by it,
> especially since it bundles almost all the backend definitions you're
> ever likely to want.

We also document how to use `company-backends' and, for third-party 
packages, how to add a specific backend to it. But it's a simple data 
structure, so for users with some experience just knowing backend 
function names is sufficient.

> The optional macro arguments only come into play if you're doing
> something more sophisticated (like extending the default completion
> widgets, or overriding the default method of determining the text around
> point that's to be completed, etc.)

Most Company backends at least have to check that the buffer is in 
matching major mode.

>> This pattern is used in many places in Emacs core, too.
>
> In principle, this sounds like a perfectly reasonable API choice for
> simple settings.
>
> Though I don't completely get how it works here. What if a particular
> completion function can't answer some types of question?

Then we use the default setting, behavior, etc. It is somewhat limiting 
(we can't discern whether a backend does not know about a question or it 
consciously returns nil), but so far it's worked well nevertheless.

 > E.g. maybe it
> can expand prefixes, but it can't find regexp matches. What does the
> completion function do if it's then asked for a regexp match? Or does the
> backend answer "I can't answer this type of question" and Company moves
> onto the next backend in the list?

We don't have support for regexp matches, but "can't answer" + "move on" 
is a reasonable mechanism to support them in select backends.

Or, to approach it another way, it may be a backend's choice to 
interpret the prefix (or, more generally, the completion string, if it's 
allowed to span after the point) as a regexp. For example, we have this 
as a feature request now: 
https://github.com/company-mode/company-mode/issues/45#issuecomment-31564029

Aside from handling the prefix->candidate replacement more carefully, 
the only thing we'll have to worry about, I believe, is that the 
front-ends won't be so sure that candidate starts with "prefix". For 
`company-pseudo-tooltip', that means no highlighting of the "common" 
part (or using a more complex algorithm), and it could mean different 
things for `company-preview-if-just-one-frontend'. For now, I'm inclined 
to just refrain from using it if the sole candidate does not start with 
"prefix".

> However, this API is not so convenient if you want to pass more complex
> settings, such as extending the UI for a particular source. You'd either
> have to pass the same list of hook functions, keymaps etc. every time you
> call the function that invokes the completion UI for the source. Or you'd
> have to let-bind the same set of variables every time. Which would be a
> pain.

Sorry, I don't understand. Why would you extend a UI for some source? 
Sources provide data, how can they have associated keymaps?

> This pattern is used in many places in Emacs core, too: `defcustom',
> `defstruct', `defun*'... (Perhaps I should have called the macro
> `defcompletion' instead of `completion-ui-register-source' :)

Sure, Lisps have a long history of using and promoting macros, but 
there's also a general recommendation to not write a new macro unless 
you'll really really benefit from it. Maybe you do.

> Also, the "pass the type of completion as the first argument" API means
> you have a hard-coded set of "types" of completion. As usual, since it
> was intended to be a generic completion Elisp library and not a
> fully-fledged user-level completion framework, Completion-UI doesn't
> impose any such restriction, but tries to be as flexible and general as
> possible. I'm not saying this is necessarily a good thing; it could well
> be that this flexibility is overkill.

See above. We only have prefix completion for now, so the first argument 
definitely doesn't choose the type. See the list of possible values in 
the `company-backends' docstring.

> Which bodes well for coming up with a generic Emacs completion UI API and
> code. If we've converged on a broadly similar set of features and APIs
> for the UI parts of Completion-UI and Company, there's a reasonable
> chance they're the features people will want from a generic Emacs API.

Yes, probably.



  parent reply	other threads:[~2014-01-06  7:36 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
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 [this message]
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=52CA5D11.2010507@yandex.ru \
    --to=dgutov@yandex.ru \
    --cc=emacs-devel@gnu.org \
    --cc=toby-dated-1390185606.c5a10d@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.