unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Dmitry Gutov <dgutov@yandex.ru>
To: monnier@iro.umontreal.ca
Cc: emacs-devel@gnu.org
Subject: Re: /srv/bzr/emacs/elpa r395: * company.el (company-capf): Add support for `sorted' and `post-completion'.
Date: Sun, 05 May 2013 01:59:59 +0400	[thread overview]
Message-ID: <87vc6yz9r4.fsf@yandex.ru> (raw)
In-Reply-To: <E1UW5x9-0001hw-8W@vcs.savannah.gnu.org> (Stefan Monnier's message of "Sat, 27 Apr 2013 09:48:47 -0400")

Hi Stefan,

> ------------------------------------------------------------
> revno: 395
> committer: Stefan Monnier <monnier-CRDzTM1onBSWkKpYnGOUKg@public.gmane.org>
> branch nick: elpa
> timestamp: Sat 2013-04-27 09:48:47 -0400
> message:

>  ;; (defun company-my-backend (command &optional arg &rest ignored)
> -;;   (case command
> -;;     (prefix (when (looking-back "foo\\>")
> +;;   (pcase command
> +;;     (`prefix (when (looking-back "foo\\>")
>  ;;               (match-string 0)))
> -;;     (candidates (list "foobar" "foobaz" "foobarbaz"))
> -;;     (meta (format "This value is named %s" arg))))
> +;;     (`candidates (list "foobar" "foobaz" "foobarbaz"))
> +;;     (`meta (format "This value is named %s" arg))))

Like the header in company.el says, we still try to support Emacs 22 and
23. `pcase' was only added in 23.3, I believe.

> +(defun company-capf (command &optional arg &rest _args)
...
> +    (duplicates nil) ;Don't bother.
> +    (no-cache t)     ;FIXME: Improve!
> +    (meta nil)       ;FIXME: Return one-line docstring for `arg'.
> +    (doc-buffer nil) ;FIXME: Return help buffer for `arg'.
> +    (location nil)   ;FIXME: Return (BUF . POS) or (FILE . LINENB) of
> `arg'.
> +    (init nil)      ;Don't bother: plenty of other ways to initialize
> the code.

a) There's no need to return nils explicitly, other backends don't.

b) Who are these FIXMEs for? I guess `meta' can be implemented by
calling `:annotation-function' (don't know if it's appropriate), but
`doc-buffer' and `location' don't have anything corresponding in
`completion-extra-properties'.

> +    (require-match nil)            ;This should be a property of the
> front-end!

Should it really? A smart back-end could determine if we're typing a
function call, or typing the name for a new function, and at least
override it to `never' in the latter case.

Returning `t' might indeed never be appropriate for a back-end, and some
front-ends could want to have a say in this, but I'd rather see them in
practice first.

> +(defvar company-backend)
> +

This variable is declared about ~30 lines below that. Is it appropriate
to have both declarations in the same file?

>  Example:
>  \(company-begin-with '\(\"foo\" \"foobar\" \"foobarbaz\"\)\)"
> +  ;; FIXME: Shouldn't `company-begin-with-marker' be removed and replaced
> +  ;; by a lexical variable?

It probably should, but, again, lexical-binding is not available in
Emacs < 24. ATM I'm only using it to improve some logic that uses
`boundp' in `company-elisp'.



       reply	other threads:[~2013-05-04 21:59 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <E1UW5x9-0001hw-8W@vcs.savannah.gnu.org>
2013-05-04 21:59 ` Dmitry Gutov [this message]
2013-05-05  6:32   ` /srv/bzr/emacs/elpa r395: * company.el (company-capf): Add support for `sorted' and `post-completion' Stefan Monnier
2013-05-05  8:50     ` Dmitry Gutov
2013-05-05 10:05       ` Sebastian Wiesner
2013-05-05 10:13         ` Dmitry Gutov
2013-05-06  1:18       ` Stefan Monnier
2013-05-06  2:43         ` Dmitry Gutov
2013-05-06  3:22           ` Stefan Monnier
2013-05-09 20:35             ` Dmitry Gutov

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

  List information: https://www.gnu.org/software/emacs/

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

  git send-email \
    --in-reply-to=87vc6yz9r4.fsf@yandex.ru \
    --to=dgutov@yandex.ru \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    /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 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).