zsh-workers
 help / color / mirror / code / Atom feed
From: Doron Behar <doron.behar@gmail.com>
To: zsh-workers@zsh.org
Subject: Re: [PATCH 1/1] Squashed commit of the following:
Date: Wed, 30 May 2018 15:47:11 +0300	[thread overview]
Message-ID: <20180530124707.xp6loetwnplkypk2@NUC.doronbehar.com> (raw)
In-Reply-To: <13666.1527631249@thecus>

Thank you Oliver for your guidance, The revised patch is ready I'll send
it shortly, here are some more questions / comments I had regarding your
last reply.

On Wed, May 30, 2018 at 12:00:49AM +0200, Oliver Kiddle wrote:
> Doron Behar wrote:
> >
> > I find that extremely useful when I write completions since it's super
> > comfortable with my editor (Vim). Do you have any suggestions? Perhaps
> > using EditorConfig?
> 
> I don't think editorconfig supports much beyond basic definitions of
> indent style. In the case of vim, it supports a variety of foldmethods.
> 'set foldmethod=syntax' doesn't do such a bad job and if you don't like
> it you can define custom expressions.

It's great, thanks!

> 
> > Done, used this:
> >
> > 	local option_deps_modes='--deps-mode=[specify how to handle dependencies]:mode:__luarocks_deps_modes'
> 
> That looks fine.
> 
> > Besides removing the curly brackets, what is the difference when I use
> > '(-.)' in the glob and when I don't? I tried to test this in directories
> > where I had files ending with `.rockspec` and in directories where I
> > hadn't had files like these and I couldn't tell the difference in
> > behaviour. What am I missing?
> 
> It can make a difference if you have directories ending in .rockspec.
> That perhaps isn't common but in some contexts it can matter.
> It is common to setup the file-patterns style to mix directories in with
> matched files in which case it is less apparent.
> For reference, see the old discussion around workers/19292.

Got it.

> 
> > I couldn't think of a better way of doing this other then just copying
> > manually `__git_tags` or using this hack.
> 
> Duplicating __git_tags' functionality is just as few lines of code and
> less likely to break. This looks rather fragile.

I copied `__git_tags`s content straight from `_git`s definition and
added a comment stating so.

> 
> > > In this spec, you already have already specified a message - "LICENSE"
> > > so calling _message is superfluous. "LICENSE" can be improved on as a
> > > message but I'd avoid constructs like "write a" and use something like
> > > 'license (e.g. MIT/X11 or "GNU GPL v3")'
> >
> > That's a good description, cool. I've come up with this options
> > specifications:
> >
> > 	'--license=[a license string]:license:{_message -e license "(e.g. \"MIT/X11\" or \"GNU GPL v3\")"}'
> 
> My point about calling _message being superfluous perhaps wasn't clear.
> The second part of the colon-delimited spec IS a message. So you can
> just use:
> 
>   '--license=[specify a license string]:license (e.g. "MIT/X11" or "GNU GPL v3")'
> 
> Note that I also added an initial verb in the description which was a
> suggestion I had made earlier but not repeated.
> 

Got it.

> > > Your description, looks like the message for the matches:
> > >   '--lib[specify libraries to link against C files]:libraries (comma-separated)'
> > > 
> > > Or use _sequence or _values if you generate matches.
> > > 
> >
> > I've no idea if this is possible to complete matches for this option. I
> > don't have any experience in using this option as well so I'll leave it
> > this way. Perhaps it'll be better for the specification to be this:
> >
> > 	'--lib=[C library files to link to]:'
> 
> At least include a message after the colon.

This is what I chose:

	'--lib=[comma separated list of C library files to link to]:library files'

> 
> > I'm not sure I understand yet what tags are used for generally in
> > completions (RTFD I know but forgive me I'm lazy :/) but anyway the tag
> > I chose as the 1st argument for `_call_function` is `subcmd`. Is that
> > cool? It looks like that:
> >
> > 	_call_function subcmd _luarocks_${words[1]}
> 
> The first argument to _call_function is not a tag but a variable name.
> The return status from the function is assigned to it. Normally, you'll
> see "ret".

O.K, I used `ret` instead yet currently I don't see any use in this
variable since I didn't structured the completion file with `return ret`
at the end of any of the functions as I've seen in other completion
functions I read.

> 
> Tags are used with the zstyle mechanism. zstyle gives you
> context-sensitive options where a bunch of information is stuffed into a
> context string. For completion,
>     :completion:<function>:<completer>:<command>:<arg>:<tag>
> Note that the last component is the tag for the current matches.
> This is a much more succinct and convenient way to configure things than
> if you needed lots of nested if statements.
> 
> Taking an example from one of your messages we have:
>     zstyle ':completion:*:kill:*' command 'ps -u $USER -o pid,%cpu,tty,cputime,cmd'
> 
> As it happens, for kill completion the command style is only looked up
> when completing processes but it'd be wise to put the processes tag
> into the context there. If you want the style to work for all commands
> and not just kill, that'd be essential. Otherwise, it might run ps when
> generating some other entirely different sort of matches:
> 
>     zstyle ':completion:*:processes' command 'ps -u $USER -o pid,%cpu,tty,cputime,cmd'
> 
> (To answer the question in that other post, don't try to emulate that,
> just use _pids and leave process selection to the user. ps defaulting to
> the current tty made more sense a couple of decades ago.) 
> 
> The other thing tags are often used for is for grouping completion
> matches. Groups are separate but it is common to use the tag as the
> group name which is what you get with:
>     zstyle ':completion:*' group-name ''
> 
> Finally, tags can be used with the tag-order style to allow users to
> try some matches before others.
> 
> Oliver

Jesus, using `zstyle` is complicated, I hope I'll master this skill one
day..  Where can I find in the documentation more explanations about the
relation between zstyle and completion functions?


  reply	other threads:[~2018-05-30 12:47 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-26 16:14 [PATCH 0/1] *** Add luarocks completion *** doron.behar
2018-05-26 16:14 ` [PATCH 1/1] Squashed commit of the following: doron.behar
2018-05-28 10:48   ` Oliver Kiddle
2018-05-29 15:38     ` Doron Behar
2018-05-29 22:00       ` Oliver Kiddle
2018-05-30 12:47         ` Doron Behar [this message]
2018-05-30 15:43           ` Oliver Kiddle
2018-06-01  7:18             ` Doron Behar
2018-06-01 13:30               ` Doron Behar
2018-06-01 22:45                 ` Oliver Kiddle
2018-06-03 21:46                   ` Daniel Shahaf
2018-06-05 15:41                   ` Doron Behar
2018-06-07 15:59                     ` Oliver Kiddle
2018-06-07 16:20                       ` Doron Behar

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=20180530124707.xp6loetwnplkypk2@NUC.doronbehar.com \
    --to=doron.behar@gmail.com \
    --cc=zsh-workers@zsh.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 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).