emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Feedback on fido-mode


From: Adam Porter
Subject: Feedback on fido-mode
Date: Sat, 07 Mar 2020 09:16:11 -0600
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux)

Hi,

Seeing João's recent message about Fido reminded me of it, and since I'm
testing Emacs 27+ for the first time lately, I gave it a try.  It was
not quite as useful or easy-to-use as I expected, so I thought maybe I
should send some feedback.  Of course, I'm not much of an ido nor
icomplete user, so maybe I'm missing something basic.

I've been testing Bufler [0] with Andrea's native-comp branch.  With
bufler-mode enabled, I enabled fido-mode, and here's how it went:

1.  M-x bufler-switch-buffers.  This presents the following completions
list, as expected (I hope these lines don't wrap):

  Possible completions are:
  *Help/Info* » *Help*  
  *Special* » **Special** » *Warnings*  
  *Special* » **Special** » *scratch*   
  *Special* » **Special** » *Messages*  
  *Special* » completion-list-mode » *Completions*
  *Special* » Custom-mode » *Customize Group: Icomplete*
  *Special* » Custom-mode » *Customize Apropos*                           
  *Special* » apropos-mode » *Apropos*                                    
  *Special* » bufler-list-mode » *Bufler*                                 
  Dir: ~/.emacs.d/ » Dir: /home/test/.emacs.d/ » emacs-lisp-mode » init.el

2.  I want to switch to the init.el buffer (the last candidate), so I
type "init", expecting it to become the selected (i.e. first) candidate.
Instead, the completions list shows the following choices, and init.el
is not the first one, even though it's the only candidate that matches
the input as a substring:

  Possible completions are:
  *Special* » completion-list-mode » *Completions*
  Dir: ~/.emacs.d/ » Dir: /home/test/.emacs.d/ » emacs-lisp-mode » init.el

I see the letters that spell "init" highlighted in the first candidate,
even though none of them are sequential in it.

3.  I want to select the last completion candidate, so I try the
following:

  - "C-n".  Minibuffer shows: "[End of buffer]"
  - "M-n".  Minibuffer shows: "*Help/Info* » *Help* (No matches)"
  - "TAB".  Result: expanded completion list, selected candidate
                    unchanged.
  - "C-h m", hoping to find out what the Fido keybindings are so I can
    select the candidate.  Result: A *Help* buffer showing minor-mode
    information, but nothing about Fido or any keybindings in the
    minibuffer.

At this point I'm not sure what Fido provides over Ido or Icomplete
(though, again, I am not an expert on either of those, since I mostly
use Helm and sometimes Ivy).  I'm sure it does something useful, of
course, but from the perspective of a user new to it, I don't understand
it yet.

4.  I happen to notice that if I type a ".", that causes the init.el
candidate to become the sole candidate.  Deleting the "." returns the
"*Completions*" candidate and causes it to be the selected one again.

5.  Having recently rediscovered the completion-styles option (remember,
I mostly use Helm ;), I wonder if adding the "substring" style will
help.  So I add it to the end of the completion-styles list and try
again.  It makes no difference: with input "init", the init.el candidate
is still at the end of the list and not selected.  I try putting
"substring" at the front of completion-styles, but that also changes
nothing.

6.  I see there's a new "flex" completion style, so I try that at the
front of completion-styles.  Again, it makes no difference: with input
"init", the init.el candidate is not selected, while the "*Special* »
completion-list-mode » *Completions*" candidate is.

At this point, I feel like I must be missing something or doing
something wrong.  When I type "init", and only one of the candidates
matches that substring, it seems like that should be the selected
candidate.  And it seems like it should be easier to discover the
keybinding to choose the next candidate.

7.  I disable fido-mode and enable ivy-mode.  I run "M-x
bufler-switch-buffer" again and type "init".  The init.el candidate is
the only candidate presented for that input, so I can hit RET to select
it.

So, whether all this indicates a PEBKAC, or a suboptimal default
completion experience, I'm not sure.  Maybe a little of both.  I think
that, generally, it would be helpful if Emacs's default completion
experience were closer to what Ivy provides (though not exactly with
Ivy's default settings, as I find its TAB binding a bit confounding, but
that's beside the point).

I hope this feedback is helpful.  Thanks to João and others for your
work on Emacs and Fido.

0: https://github.com/alphapapa/bufler.el




reply via email to

[Prev in Thread] Current Thread [Next in Thread]