zsh-workers
 help / color / mirror / code / Atom feed
From: Mikael Magnusson <mikachu@gmail.com>
To: Daniel Shahaf <d.s@daniel.shahaf.name>
Cc: Marlon <marlon.richert@gmail.com>,
	Zsh hackers list <zsh-workers@zsh.org>
Subject: Re: [RFC][PATCH] `newuser` prompt theme
Date: Thu, 15 Apr 2021 13:11:16 +0200	[thread overview]
Message-ID: <CAHYJk3SQjaTdiLMQcQFhrkp3rMcX+8gCgJpfT1f=-fPSN2-A9Q@mail.gmail.com> (raw)
In-Reply-To: <20210414140909.GG3882@tarpaulin.shahaf.local2>

[only vcs_info]
On 4/14/21, Daniel Shahaf <d.s@daniel.shahaf.name> wrote:
> Marlon wrote on Wed, Apr 14, 2021 at 16:17:02 +0300:
>> On 14 Apr 2021, at 15:05, Daniel Shahaf <d.s@daniel.shahaf.name> wrote:
>> >> +
>> >> +  if ! [[ -v vcs_info_msg_0_ ]]; then
>> >> +    zstyle ':vcs_info:*' check-for-staged-changes yes
>> >
>> > First, no other prompt theme sets styles, so I'm not sure prompt themes
>> > should be doing that.
>>
>> Please show me another way to theme the VCS part of the prompt and I will
>> use that.
>
> You seem to have checked your manners in at the door.
>
> In any case, what you've implemented is that you re-set a style on the
> first precmd after every chdir.  I don't think these semantics should be
> implemented in the first place.
>
>> > Second, even if a prompt were to set styles, doing so in a precmd and
>> > behind what _looks_ like a "first run" condition but is actually a "we
>> > just changed directory" condition isn't exactly best practice.
>>
>> What would be a better practice?
>
> Don't surprise/mislead code readers.
>
> Don't surprise/mislead users.
>
> Document your code.
>
> Make defaults overridable.
>
> Don't trample user settings (e.g., someone explicitly setting that style
> to a false value for that same context, or for the context «:vcs_info*»,
> which is less specific than the context you use and thus would be
> shadowed).
>
> These are all such ground rules that I'm surprised I have to spell them
> out.
>
>> >> +prompt_newuser_setup() {
>> >> +  prompt_opts=( cr percent sp )
>> >> +
>> >> +  zstyle -e ':vcs_info:*' formats '
>> >> +    reply=( "%u%c$( prompt_newuser_format start branch repo )" )
>> >> +  '
>> >> +  zstyle -e ':vcs_info:*' actionformats '
>> >> +    reply=( "%u%c$( prompt_newuser_format start action repo )" )
>> >> +  '
>> >> +  zstyle -e ':vcs_info:*' stagedstr '
>> >> +    reply=( "$( prompt_newuser_format start staged )" )
>> >> +  '
>> >> +  zstyle -e ':vcs_info:*' unstagedstr '
>> >> +    reply=( "$( prompt_newuser_format start unstaged )" )
>> >> +  '
>> >
>> > Your theme does _nothing_ with the 'unstaged' style other than
>> > pass it through verbatim.
>>
>> After setting it to '%B%F{red}*%b%f’, yes.
>>
>
> Hmm.  That's a good question: how _should_ a theme set an overrideable
> default for stagedstr?

It's actually very easy to do so (somewhat pseudocodified actual code):
setup() {
  zstyle ':vcs_info:*:prompt-mikachu:*' actionformats %b %a
  zstyle ':vcs_info:*:prompt-mikachu:*' formats %b
  zstyle ':vcs_info:*:prompt-mikachu:*' max-exports 2
  zstyle ':vcs_info:(hg|svn):prompt-mikachu:*' formats '%b[%s]'

  autoload -Uz vcs_info
}

precmd() {

  local vcs_info_msg_{0..1}_
  vcs_info prompt-mikachu
  psvar[3]=( "${vcs_info_msg_0_:-}" )
  psvar[4]=( "${vcs_info_msg_1_:-}" )
}

eg, the first argument to vcs_info is used as a context to look up
values of styles, so you can very easily namespace all your settings
to your theme. localing vcs_info_msg_*_ is also important so that you
don't interfere with any commandline usage of vcs_info (I didn't check
if you do this).

-- 
Mikael Magnusson


  parent reply	other threads:[~2021-04-15 11:11 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-13 19:41 Marlon
2021-04-13 20:31 ` Roman Perepelitsa
2021-04-13 20:44 ` Bart Schaefer
2021-04-14  5:09   ` Marlon Richert
2021-04-14  5:17     ` Bart Schaefer
2021-04-14  5:45       ` Marlon
2021-04-14 12:05         ` Daniel Shahaf
2021-04-14 13:17           ` Marlon
2021-04-14 14:09             ` Daniel Shahaf
2021-04-15  1:07               ` Bart Schaefer
2021-04-15  3:50               ` Marlon Richert
2021-04-15 20:27                 ` Daniel Shahaf
2021-04-15 23:42                 ` Daniel Shahaf
2021-04-15 11:11               ` Mikael Magnusson [this message]
2021-04-15 16:44                 ` vcs_info's global variables (was: Re: [RFC][PATCH] `newuser` prompt theme) Daniel Shahaf
2021-04-16 16:04                 ` [RFC][PATCH] `newuser` prompt theme Marlon
2021-04-16 17:13                   ` Daniel Shahaf
2021-04-16 19:19                     ` Marlon Richert
2021-04-16 19:30                       ` Daniel Shahaf
2021-04-19 16:46                         ` Marlon Richert
2021-05-02 17:18                           ` Lawrence Velázquez
2021-05-03  2:38                             ` Bart Schaefer
2021-05-03  4:11                               ` Lawrence Velázquez
2021-05-03 11:38                                 ` [PATCH] Add customizable `vcs` prompt theme (was Re: [RFC][PATCH] `newuser` prompt theme) Marlon Richert
2021-05-09 18:04                                   ` Lawrence Velázquez
2021-05-31  1:01                                     ` Lawrence Velázquez
2021-06-09 12:58                                       ` Marlon Richert
2021-06-09 13:22                                         ` Roman Perepelitsa
2021-06-09 18:06                                           ` Marlon Richert
2021-06-10  9:30                                             ` Roman Perepelitsa
2021-06-10 13:47                                               ` Marlon Richert
2021-06-10 14:01                                                 ` Marlon Richert
2021-06-10 17:45                                                 ` Roman Perepelitsa
2021-06-20 22:13                                                   ` Marlon Richert
2021-06-23 17:26                                                     ` Roman Perepelitsa
2022-08-08 10:12                                                       ` Marlon Richert
2022-08-08 10:17                                                         ` Roman Perepelitsa
2021-04-14 14:09             ` sysexits.h codes? (was: " Daniel Shahaf
2021-04-30 19:40               ` Marlon Richert
2021-04-30 21:16                 ` Daniel Shahaf
2021-04-30 21:34                   ` Bart Schaefer
2021-05-01 15:09                     ` Daniel Shahaf
2021-04-30 21:40                   ` Bart Schaefer
2021-05-01 13:39                   ` Marlon Richert
2021-05-01 14:43                     ` Daniel Shahaf
2021-05-03 11:36                       ` Marlon Richert
2021-05-03 16:04                         ` Daniel Shahaf
2021-05-04 11:13                           ` Marlon Richert
2021-05-21 11:38                             ` Marlon Richert
2021-04-14 15:30             ` [RFC][PATCH] `newuser` prompt theme Arseny Maslennikov
2021-04-14 18:52               ` Daniel Shahaf
2021-04-14 14:00           ` precmd hooks and $? Bart Schaefer
2021-04-14 15:18             ` docs patches for precmd hooks and $?, and vcs_info Daniel Shahaf
2021-04-15  2:35               ` Bart Schaefer
2021-04-15 16:17               ` Archives render attachments as first-class messages (was: docs patches for precmd hooks and $?, and vcs_info) Daniel Shahaf
2021-04-15 18:54           ` [RFC][PATCH] Reset ZLE hooks when changing prompt themes (was Re: [RFC][PATCH] `newuser` prompt theme) Marlon
2021-04-15 21:34             ` Daniel Shahaf
2021-04-16 22:34               ` Marlon Richert
2021-04-25 16:08                 ` Lawrence Velázquez
2021-05-02 17:03                   ` Lawrence Velázquez
2021-05-02 17:59                 ` Bart Schaefer
2021-05-05  6:10                   ` Marlon Richert
2021-05-16 15:27                     ` Lawrence Velázquez
2021-05-16 19:31                       ` Marlon Richert
2021-05-17  4:19                         ` Bart Schaefer

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='CAHYJk3SQjaTdiLMQcQFhrkp3rMcX+8gCgJpfT1f=-fPSN2-A9Q@mail.gmail.com' \
    --to=mikachu@gmail.com \
    --cc=d.s@daniel.shahaf.name \
    --cc=marlon.richert@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).