unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* completion-cycle-threshold and a suggestion
@ 2010-05-21 20:43 Leo
  2010-05-22  0:57 ` Stefan Monnier
  0 siblings, 1 reply; 7+ messages in thread
From: Leo @ 2010-05-21 20:43 UTC (permalink / raw)
  To: emacs-devel

Hello Stefan,

Thank you for adding more features to completion.

I have started using this completion-cycle-threshold. Incidentally I
have written a pcompletion for git and I have this function:

;; (pcmpl-git-string-lessp "word" "word-")  ; => nil
;; (pcmpl-git-string-lessp "words" "word-") ; => t
(defun pcmpl-git-string-lessp (s1 s2)
  "Compare strings S1 and S2 but treat '-' specially."
  (let ((res (compare-strings s1 0 nil s2 0 nil))
        c1 c2)
    (if (eq res t) (setq res 0))
    (ignore-errors
      ;; the following setq could trigger errors
      (setq c1 (aref s1 (1- (abs res)))
            c2 (aref s2 (1- (abs res))))
      (if (or (= c1 ?-) (= c2 ?-)) (setq res (- res))))
    (if (> res 0) nil t)))

to address the sorting of things like:

remote
remote-ftp
remote-ftps
remote-http
remote-https

i.e. when I 'git rem<TAB>' I want to see remote first before seeing the
rest.

The current completion cycle has this issue, for example, assume there
are two possible completions 'feature' and 'feature-old', feature-old is
seen first. This is counter-intuitive to the behaviour without
completion cycle.

Best wishes,

Leo




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

* Re: completion-cycle-threshold and a suggestion
  2010-05-21 20:43 completion-cycle-threshold and a suggestion Leo
@ 2010-05-22  0:57 ` Stefan Monnier
  2010-05-22  1:34   ` Leo
  0 siblings, 1 reply; 7+ messages in thread
From: Stefan Monnier @ 2010-05-22  0:57 UTC (permalink / raw)
  To: Leo; +Cc: emacs-devel

> The current completion cycle has this issue, for example, assume there
> are two possible completions 'feature' and 'feature-old', feature-old is
> seen first. This is counter-intuitive to the behaviour without
> completion cycle.

I don't understand.  AFAIK the completion-cycle code is careful to order
the options using a heuristic based on the length of the completions
(choosing shorter ones first).

So are you saying that in your experience, the heuristic gives bad
results, or that the heuristic somehow was not applied?


        Stefan



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

* Re: completion-cycle-threshold and a suggestion
  2010-05-22  0:57 ` Stefan Monnier
@ 2010-05-22  1:34   ` Leo
  2010-05-22 12:59     ` Stefan Monnier
  2011-05-24  3:04     ` Stefan Monnier
  0 siblings, 2 replies; 7+ messages in thread
From: Leo @ 2010-05-22  1:34 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

On 2010-05-22 01:57 +0100, Stefan Monnier wrote:
>> The current completion cycle has this issue, for example, assume there
>> are two possible completions 'feature' and 'feature-old', feature-old is
>> seen first. This is counter-intuitive to the behaviour without
>> completion cycle.
>
> I don't understand.  AFAIK the completion-cycle code is careful to order
> the options using a heuristic based on the length of the completions
> (choosing shorter ones first).
>
> So are you saying that in your experience, the heuristic gives bad
> results, or that the heuristic somehow was not applied?

Seems so. But I am not sure which is at fault.

1. Grab magit.el (http://github.com/philjackson/magit) and load it into emacs
2. C-u M-x magit-status
3. Select a 'git' repo that has two branches: feature-old feature
4. type 'b' and switch to 'feature-old'
5. Now type 'b' again and feature-old is completed first.

Leo



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

* Re: completion-cycle-threshold and a suggestion
  2010-05-22  1:34   ` Leo
@ 2010-05-22 12:59     ` Stefan Monnier
  2010-05-22 20:19       ` Leo
  2011-05-24  3:04     ` Stefan Monnier
  1 sibling, 1 reply; 7+ messages in thread
From: Stefan Monnier @ 2010-05-22 12:59 UTC (permalink / raw)
  To: Leo; +Cc: emacs-devel

>> So are you saying that in your experience, the heuristic gives bad
>> results, or that the heuristic somehow was not applied?
> Seems so.

Which is it?
- the heuristic gives bad results?
- the heuristic somehow was not applied?


        Stefan



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

* Re: completion-cycle-threshold and a suggestion
  2010-05-22 12:59     ` Stefan Monnier
@ 2010-05-22 20:19       ` Leo
  2010-05-23 13:16         ` Stefan Monnier
  0 siblings, 1 reply; 7+ messages in thread
From: Leo @ 2010-05-22 20:19 UTC (permalink / raw)
  To: emacs-devel

On 2010-05-22 13:59 +0100, Stefan Monnier wrote:
>>> So are you saying that in your experience, the heuristic gives bad
>>> results, or that the heuristic somehow was not applied?
>> Seems so.
>
> Which is it?
> - the heuristic gives bad results?
> - the heuristic somehow was not applied?
>
>
>         Stefan

The completion shows 'feature-old' before 'feature', isn't this what the
heuristic tries to fix? Sorry I haven't looked at the code. Simply
observing the behaviour.

Leo




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

* Re: completion-cycle-threshold and a suggestion
  2010-05-22 20:19       ` Leo
@ 2010-05-23 13:16         ` Stefan Monnier
  0 siblings, 0 replies; 7+ messages in thread
From: Stefan Monnier @ 2010-05-23 13:16 UTC (permalink / raw)
  To: Leo; +Cc: emacs-devel

>>>> So are you saying that in your experience, the heuristic gives bad
>>>> results, or that the heuristic somehow was not applied?
>>> Seems so.
>> Which is it?
>> - the heuristic gives bad results?
>> - the heuristic somehow was not applied?
> The completion shows 'feature-old' before 'feature',

Ok, thanks.

> isn't this what the heuristic tries to fix?

Exactly, so it's apparently a bug somewhere.


        Stefan



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

* Re: completion-cycle-threshold and a suggestion
  2010-05-22  1:34   ` Leo
  2010-05-22 12:59     ` Stefan Monnier
@ 2011-05-24  3:04     ` Stefan Monnier
  1 sibling, 0 replies; 7+ messages in thread
From: Stefan Monnier @ 2011-05-24  3:04 UTC (permalink / raw)
  To: Leo; +Cc: emacs-devel

> 1. Grab magit.el (http://github.com/philjackson/magit) and load it into emacs
> 2. C-u M-x magit-status
> 3. Select a 'git' repo that has two branches: feature-old feature
> 4. type 'b' and switch to 'feature-old'
> 5. Now type 'b' again and feature-old is completed first.

That's because the code gives preference to entries that were used
recently (i.e. appear in the history).

In the above example, I guess what we'd really want is to eliminate
`feature-old' from the list since it's the current setting (like we
remove the current-buffer from the C-x b completion).


        Stefan



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

end of thread, other threads:[~2011-05-24  3:04 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-05-21 20:43 completion-cycle-threshold and a suggestion Leo
2010-05-22  0:57 ` Stefan Monnier
2010-05-22  1:34   ` Leo
2010-05-22 12:59     ` Stefan Monnier
2010-05-22 20:19       ` Leo
2010-05-23 13:16         ` Stefan Monnier
2011-05-24  3:04     ` Stefan Monnier

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).