zsh-users
 help / color / mirror / code / Atom feed
* completion is over thinking things.
@ 2019-09-28 17:05 Ray Andrews
  2019-09-28 17:13 ` Roman Perepelitsa
  2019-09-28 17:14 ` gmail
  0 siblings, 2 replies; 13+ messages in thread
From: Ray Andrews @ 2019-09-28 17:05 UTC (permalink / raw)
  To: Zsh Users

    $ ls inst.deb
    inst.deb

    $ apt-get install inst. [TAB]
    Completing package
    libapt-inst2.0
    libmono-system-configuration-install4.0-cil
    libmono-system-runtime-durableinstancing4.0-cil

How can I get completion to stop looking and finding files God knows 
where and just expand filenames in the current directory?




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

* Re: completion is over thinking things.
  2019-09-28 17:05 completion is over thinking things Ray Andrews
@ 2019-09-28 17:13 ` Roman Perepelitsa
  2019-09-28 17:36   ` Ray Andrews
  2019-09-28 17:14 ` gmail
  1 sibling, 1 reply; 13+ messages in thread
From: Roman Perepelitsa @ 2019-09-28 17:13 UTC (permalink / raw)
  To: Ray Andrews; +Cc: Zsh Users

On Sat, Sep 28, 2019 at 7:06 PM Ray Andrews <rayandrews@eastlink.ca> wrote:
>
>     $ ls inst.deb
>     inst.deb
>
>     $ apt-get install inst. [TAB]
>     Completing package
>     libapt-inst2.0
>     libmono-system-configuration-install4.0-cil
>     libmono-system-runtime-durableinstancing4.0-cil
>
> How can I get completion to stop looking and finding files God knows
> where and just expand filenames in the current directory?

This doesn't answer your question but `apt-get install inst.deb` won't
install ./inst.deb. Instead, it'll install all packages that partially
match regex `inst.deb`. You might be looking for `dpkg -i inst.deb`,
which conveniently also completes `inst.[TAB]` as you would expect.

Roman.

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

* Re: completion is over thinking things.
  2019-09-28 17:05 completion is over thinking things Ray Andrews
  2019-09-28 17:13 ` Roman Perepelitsa
@ 2019-09-28 17:14 ` gmail
  1 sibling, 0 replies; 13+ messages in thread
From: gmail @ 2019-09-28 17:14 UTC (permalink / raw)
  To: Ray Andrews, Zsh Users

Hello.

Installing packages from local .deb files is not the task for apt-get.
You should use `dpkg -i` instead.
Try this: https://superuser.com/questions/196864/how-to-install-local-deb-packages-with-apt-get#196867


28.09.2019, 20:06, "Ray Andrews" <rayandrews@eastlink.ca>:
>     $ ls inst.deb
>     inst.deb
>
>     $ apt-get install inst. [TAB]
>     Completing package
>     libapt-inst2.0
>     libmono-system-configuration-install4.0-cil
>     libmono-system-runtime-durableinstancing4.0-cil
>
> How can I get completion to stop looking and finding files God knows
> where and just expand filenames in the current directory?

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

* Re: completion is over thinking things.
  2019-09-28 17:13 ` Roman Perepelitsa
@ 2019-09-28 17:36   ` Ray Andrews
  2019-09-29  4:47     ` dana
  2019-09-29 13:09     ` Mikael Magnusson
  0 siblings, 2 replies; 13+ messages in thread
From: Ray Andrews @ 2019-09-28 17:36 UTC (permalink / raw)
  To: zsh-users

On 2019-09-28 10:13 a.m., Roman Perepelitsa wrote:
> On Sat, Sep 28, 2019 at 7:06 PM Ray Andrews <rayandrews@eastlink.ca> wrote:
>>      $ ls inst.deb
>>      inst.deb
>>
>>      $ apt-get install inst. [TAB]
>>      Completing package
>>      libapt-inst2.0
>>      libmono-system-configuration-install4.0-cil
>>      libmono-system-runtime-durableinstancing4.0-cil
>>
>> How can I get completion to stop looking and finding files God knows
>> where and just expand filenames in the current directory?
> This doesn't answer your question but `apt-get install inst.deb` won't
> install ./inst.deb. Instead, it'll install all packages that partially
> match regex `inst.deb`.
Yeah thanks, I remembered that just after posting.  But my issue 
remains,  I almost always want completion to stop trying to be clever 
and just give me local file completions.

and:

	Installing packages from local .deb files is not the task for apt-get.
	You should use `dpkg -i` instead.

Actually I know, but I just wanted to demonstrate the issue with completion and that showed the issue.


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

* Re: completion is over thinking things.
  2019-09-28 17:36   ` Ray Andrews
@ 2019-09-29  4:47     ` dana
  2019-09-29 15:29       ` Ray Andrews
  2019-09-29 13:09     ` Mikael Magnusson
  1 sibling, 1 reply; 13+ messages in thread
From: dana @ 2019-09-29  4:47 UTC (permalink / raw)
  To: Ray Andrews; +Cc: zsh-users

On 28 Sep 2019, at 12:36, Ray Andrews <rayandrews@eastlink.ca> wrote:
>But my issue remains,  I almost always want completion to stop trying to be
>clever and just give me local file completions.

A few people on IRC have file completion bound to a separate key sequence.
This is mentioned in the FAQ:

  http://zsh.sourceforge.net/FAQ/zshfaq04.html#l53

Alternatively, maybe you could use the fake or fake-always style to always add
files?

  zstyle -e ':completion:*' fake-always _files

That exact configuration seems like it would be irritating, though. Not sure
if there's a single style that would work 'nicely' in all cases

dana


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

* Re: completion is over thinking things.
  2019-09-28 17:36   ` Ray Andrews
  2019-09-29  4:47     ` dana
@ 2019-09-29 13:09     ` Mikael Magnusson
  2019-09-29 15:11       ` Ray Andrews
  1 sibling, 1 reply; 13+ messages in thread
From: Mikael Magnusson @ 2019-09-29 13:09 UTC (permalink / raw)
  To: Ray Andrews; +Cc: zsh-users

On 9/28/19, Ray Andrews <rayandrews@eastlink.ca> wrote:
> On 2019-09-28 10:13 a.m., Roman Perepelitsa wrote:
>> On Sat, Sep 28, 2019 at 7:06 PM Ray Andrews <rayandrews@eastlink.ca>
>> wrote:
>>>      $ ls inst.deb
>>>      inst.deb
>>>
>>>      $ apt-get install inst. [TAB]
>>>      Completing package
>>>      libapt-inst2.0
>>>      libmono-system-configuration-install4.0-cil
>>>      libmono-system-runtime-durableinstancing4.0-cil
>>>
>>> How can I get completion to stop looking and finding files God knows
>>> where and just expand filenames in the current directory?
>> This doesn't answer your question but `apt-get install inst.deb` won't
>> install ./inst.deb. Instead, it'll install all packages that partially
>> match regex `inst.deb`.
> Yeah thanks, I remembered that just after posting.  But my issue
> remains,  I almost always want completion to stop trying to be clever
> and just give me local file completions.
>
> and:
>
> 	Installing packages from local .deb files is not the task for apt-get.
> 	You should use `dpkg -i` instead.
>
> Actually I know, but I just wanted to demonstrate the issue with completion
> and that showed the issue.

Claiming that completion not completing invalid arguments for your
command is an "issue" seems pretty far fetched to me. If you always
want to complete files, don't run compinit in your startup files.

-- 
Mikael Magnusson

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

* Re: completion is over thinking things.
  2019-09-29 13:09     ` Mikael Magnusson
@ 2019-09-29 15:11       ` Ray Andrews
  2019-09-29 15:19         ` Pier Paolo Grassi
  0 siblings, 1 reply; 13+ messages in thread
From: Ray Andrews @ 2019-09-29 15:11 UTC (permalink / raw)
  To: zsh-users

On 2019-09-29 6:09 a.m., Mikael Magnusson wrote:
>
> Claiming that completion not completing invalid arguments for your
> command is an "issue" seems pretty far fetched to me. If you always
> want to complete files, don't run compinit in your startup files.
>
I appreciate the sophistication of that, but there are times when I 
really do want to complete on a filename even if it might seem like an 
invalid argument superficially.  I thought that compinit was the entire 
completion system!  Commenting it out and restarting, just as you say, I 
get 'dumb' file completions just as wanted.  Can we have it both ways?  
That is, tweak compinit so that perhaps on a final press of the TAB key 
it  will fall back to dumb file completion even if a kosher match has 
not been found?  Or some sort of temporary fallback to dumb completion?  
Most of the time it seems that file completion is all that's happening 
and anyway this sort of issue is very rare here, but short of restarting 
it would be nice to have dumb completion 'override' when wanted.  
Perhaps if a final press of TAB was used then instead of this:

Completing package

... we'd see:

Fallback to completing file

... or something like that.

I looked at zcompdump and there's nothing in there that looks 
promising.  I know that completion is the most inscrutable part of zsh, 
so I won't even attempt to understand it, and any tweak will be taken 
without question and on authority.  Or is there an approachable 
document?  Or some workaround?




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

* Re: completion is over thinking things.
  2019-09-29 15:11       ` Ray Andrews
@ 2019-09-29 15:19         ` Pier Paolo Grassi
  0 siblings, 0 replies; 13+ messages in thread
From: Pier Paolo Grassi @ 2019-09-29 15:19 UTC (permalink / raw)
  To: Ray Andrews; +Cc: zsh-users

[-- Attachment #1: Type: text/plain, Size: 1988 bytes --]

would it be enough a widget that does always filesystem completion
regardless of the command line so far, to be binded to a different-than-tab
shortcut?
that’s been my approach to the same problem, I also have special
only-directories and only-regular-files widgets too

Il giorno dom 29 set 2019 alle 17:12 Ray Andrews <rayandrews@eastlink.ca>
ha scritto:

> On 2019-09-29 6:09 a.m., Mikael Magnusson wrote:
> >
> > Claiming that completion not completing invalid arguments for your
> > command is an "issue" seems pretty far fetched to me. If you always
> > want to complete files, don't run compinit in your startup files.
> >
> I appreciate the sophistication of that, but there are times when I
> really do want to complete on a filename even if it might seem like an
> invalid argument superficially.  I thought that compinit was the entire
> completion system!  Commenting it out and restarting, just as you say, I
> get 'dumb' file completions just as wanted.  Can we have it both ways?
> That is, tweak compinit so that perhaps on a final press of the TAB key
> it  will fall back to dumb file completion even if a kosher match has
> not been found?  Or some sort of temporary fallback to dumb completion?
> Most of the time it seems that file completion is all that's happening
> and anyway this sort of issue is very rare here, but short of restarting
> it would be nice to have dumb completion 'override' when wanted.
> Perhaps if a final press of TAB was used then instead of this:
>
> Completing package
>
> ... we'd see:
>
> Fallback to completing file
>
> ... or something like that.
>
> I looked at zcompdump and there's nothing in there that looks
> promising.  I know that completion is the most inscrutable part of zsh,
> so I won't even attempt to understand it, and any tweak will be taken
> without question and on authority.  Or is there an approachable
> document?  Or some workaround?
>
>
>
> --
Pier Paolo Grassi

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

* Re: completion is over thinking things.
  2019-09-29  4:47     ` dana
@ 2019-09-29 15:29       ` Ray Andrews
  2019-09-29 16:44         ` Bart Schaefer
  0 siblings, 1 reply; 13+ messages in thread
From: Ray Andrews @ 2019-09-29 15:29 UTC (permalink / raw)
  To: zsh-users

On 2019-09-28 9:47 p.m., dana wrote:
>
>    http://zsh.sourceforge.net/FAQ/zshfaq04.html#l53
>
    [quote]

    If you simply want to try filename completion as a default when
    other completions fail, add it to the `|completer|' style for normal
    completion, for example:

         zstyle ':completion:*' completer _complete _ignored _files
       

    This adds filename completion to the end of the default types of
    completion. Your actual completer style may include other actions,
    such as expansion or approximate completion.

----------------------------------------

Thanks Dana, that's exactly what I'm thinking.  However I dare not cast 
such spells without some hand-holding.  Here's what I have now, and I 
have no idea how any of it works:

====================================
# allow approximate
# Original: zstyle ':completion:*' completer _complete _match _approximate
zstyle ':completion:*' completer _expand _complete
#Tab completion should be case-insensitive.
# Original: zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}' 
'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=* l:|=*'
zstyle ':completion:*' auto-description 'specify: %d'
zstyle ':completion:*' format 'Completing %d'
zstyle ':completion:*' group-name ''
zstyle ':completion:*' list-colors ''
zstyle ':completion:*' list-prompt %SAt %p: Hit TAB 'for more', or the 
char to insert%s
###zstyle ':completion:*' menu select=2
### zstyle ':completion:*' menu select=long
zstyle ':completion:*' select-prompt %SScrolling active: current 
selection at %p%s
zstyle ':completion:*' use-compctl false
zstyle ':completion:*' verbose true

zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
zstyle ':completion:*:match:*' original only
zstyle ':completion:*:approximate:*' max-errors 1 numeric
zstyle ':completion:*:expand:*' tag-order all-expansions
# cd not select parent dir:
zstyle ':completion:*:cd:*' ignore-parents parent pwd

#Better completion for killall. Original:
zstyle ':completion:*:killall:*' command 'ps -u $USER -o cmd'
# tab completion for PID :D
zstyle ':completion:*:kill:*' force-list always
zstyle ':completion:*:kill:*' command 'ps -u $USER -o 
pid,%cpu,tty,cputime,cmd'
zstyle ':completion:*:*:kill:*' menu yes select
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) 
#([0-9]#)*=0=01;31'
=========================================

... probably half of that stuff is redundant or useless or harmful or 
whatever and I don't even know where it came from.  I'll take your edit 
on faith if you would be so kind.  Is there any way a mortal can get any 
sort of handle on any of that?  Genius borders on insanity.


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

* Re: completion is over thinking things.
  2019-09-29 15:29       ` Ray Andrews
@ 2019-09-29 16:44         ` Bart Schaefer
  2019-09-29 18:41           ` Ray Andrews
  0 siblings, 1 reply; 13+ messages in thread
From: Bart Schaefer @ 2019-09-29 16:44 UTC (permalink / raw)
  To: Ray Andrews; +Cc: Zsh Users

On Sun, Sep 29, 2019 at 8:30 AM Ray Andrews <rayandrews@eastlink.ca> wrote:
>
> ... probably half of that stuff is redundant or useless or harmful or
> whatever and I don't even know where it came from.

"I don't know half of you half as well as I should like, and I like
less than half of you half as well as you deserve."

Really though, there's nothing bad or alarming in there.  This is the
one you want to change:

> # Original: zstyle ':completion:*' completer _complete _match _approximate
> zstyle ':completion:*' completer _expand _complete

zstyle ':completion:*' completer _expand _complete _files

Note that this only makes completion fall back to _files when nothing
else matches; if _expand or _complete finds something, you won't get
file names.  If you want file names all the time, mixed in with other
results, you'll have to write a custom function.  The simplest such
function might look like:

_complete+files() {
  _alternative 'normal::_complete' 'files::_files'
}
zstyle ':completion:*' completer _expand _complete+files

I would not recommend doing this unless you also keep using the
display configuration below (specifically the group-name style),
otherwise the way things get mixed together will be too confusing.  As
written, this also has the drawback that even if _complete already
returns file names, _files will add them a second time anyway.

> # allow approximate
> #Tab completion should be case-insensitive.
> # Original: zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'
> zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}'  'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=* l:|=*'

That's doing what the comment says, it makes completion
case-insensitive.  It also allows dots, underscores, and hyphens to
fill themselves in.

> zstyle ':completion:*' auto-description 'specify: %d'
> zstyle ':completion:*' format 'Completing %d'
> zstyle ':completion:*' group-name ''
> zstyle ':completion:*' list-colors ''
> zstyle ':completion:*' list-prompt %SAt %p: Hit TAB 'for more', or the char to insert%s
> zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s

Those are all about what the display looks like.

> zstyle ':completion:*' use-compctl false

That says not to fall back on the old built-in completions if the
compsys functions fail.

The rest of what you had is reasonably obvious, I think.  The
kill-specific styles are from a zsh-users post a few years ago.

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

* Re: completion is over thinking things.
  2019-09-29 16:44         ` Bart Schaefer
@ 2019-09-29 18:41           ` Ray Andrews
  2019-09-29 19:06             ` Bart Schaefer
  0 siblings, 1 reply; 13+ messages in thread
From: Ray Andrews @ 2019-09-29 18:41 UTC (permalink / raw)
  To: zsh-users

On 2019-09-29 9:44 a.m., Bart Schaefer wrote:
> On Sun, Sep 29, 2019 at 8:30 AM Ray Andrews <rayandrews@eastlink.ca> wrote:
>> "I don't know half of you half as well as I should like, and I like
>> less than half of you half as well as you deserve."
Bilbo.
>> zstyle ':completion:*' completer _expand _complete _files
>>
>> Note that this only makes completion fall back to _files when nothing
>> else matches; if _expand or _complete finds something, you won't get
>> file names.  If you want file names all the time, mixed in with other
>> results, you'll have to write a custom function.  The simplest such
>> function might look like:
Not to tempt the Gods, but if I changed the order:

zstyle ':completion:*' completer _files _expand _complete

... would I get files offered first?  I get the impression that that line is most of the meat of completion.

I would not recommend doing this

... Where angels fear to tread.  Praise, I'd not think of it. Normally I break things deliberately just to see how they work, and if it's out of bounds I'm going in ... but not here!

Thanks Bart and Dana.



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

* Re: completion is over thinking things.
  2019-09-29 18:41           ` Ray Andrews
@ 2019-09-29 19:06             ` Bart Schaefer
  2019-09-29 19:35               ` Ray Andrews
  0 siblings, 1 reply; 13+ messages in thread
From: Bart Schaefer @ 2019-09-29 19:06 UTC (permalink / raw)
  To: Ray Andrews; +Cc: Zsh Users

On Sun, Sep 29, 2019 at 11:42 AM Ray Andrews <rayandrews@eastlink.ca> wrote:
>
> Not to tempt the Gods, but if I changed the order:
>
> zstyle ':completion:*' completer _files _expand _complete
>
> ... would I get files offered first?

Yes, but in that case you'd rarely get the defined completions for the context.

Also you probably would want to keep _expand as the first function,
even if you swap the other two.

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

* Re: completion is over thinking things.
  2019-09-29 19:06             ` Bart Schaefer
@ 2019-09-29 19:35               ` Ray Andrews
  0 siblings, 0 replies; 13+ messages in thread
From: Ray Andrews @ 2019-09-29 19:35 UTC (permalink / raw)
  To: zsh-users

On 2019-09-29 12:06 p.m., Bart Schaefer wrote:
>
> Also you probably would want to keep _expand as the first function,
> even if you swap the other two.
>
Ok, I'll not mess with it.  What we've done really gives me exactly what 
I want: I can complete a long filename even when the context would 
suggest that it's not appropriate.


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

end of thread, other threads:[~2019-09-29 19:35 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-28 17:05 completion is over thinking things Ray Andrews
2019-09-28 17:13 ` Roman Perepelitsa
2019-09-28 17:36   ` Ray Andrews
2019-09-29  4:47     ` dana
2019-09-29 15:29       ` Ray Andrews
2019-09-29 16:44         ` Bart Schaefer
2019-09-29 18:41           ` Ray Andrews
2019-09-29 19:06             ` Bart Schaefer
2019-09-29 19:35               ` Ray Andrews
2019-09-29 13:09     ` Mikael Magnusson
2019-09-29 15:11       ` Ray Andrews
2019-09-29 15:19         ` Pier Paolo Grassi
2019-09-28 17:14 ` gmail

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

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 NNTP newsgroup(s).