zsh-workers
 help / color / mirror / code / Atom feed
From: Roman Perepelitsa <roman.perepelitsa@gmail.com>
To: Marlon Richert <marlon.richert@gmail.com>
Cc: Zsh hackers list <zsh-workers@zsh.org>
Subject: Re: [PATCH] Add customizable `vcs` prompt theme (was Re: [RFC][PATCH] `newuser` prompt theme)
Date: Thu, 10 Jun 2021 19:45:07 +0200	[thread overview]
Message-ID: <CAN=4vMqqG1FvpraLMePSbXRWa-sUsBH=_WNu1Ox6qMO6QJgd+g@mail.gmail.com> (raw)
In-Reply-To: <CAHLkEDupdk6Y95_Ju68GG-t0mtjd7yXgrwE+BAZwCNtUiok=mA@mail.gmail.com>

On Thu, Jun 10, 2021 at 3:48 PM Marlon Richert <marlon.richert@gmail.com> wrote:
>
> Thanks again. New version of the patch attached.

Thanks! A few more comments/questions. Those that I'm not quoting can
be considered resolved.

> On Thu, Jun 10, 2021 at 12:30 PM Roman Perepelitsa
> <roman.perepelitsa@gmail.com> wrote:
> >
> > I think invoking prompt_vcs_setup twice in the same shell will produce
> > an error. I haven't tried it though.
>
> I just tried it and I didn't get any errors. Why do you think it would
> produce an error?

I was expecting the readonly parameter at the top to print an error.

  % readonly -gHA _prompt_vcs_ps1_default=()
  % readonly -gHA _prompt_vcs_ps1_default=()
  zsh: read-only variable: _prompt_vcs_ps1_default

It's also unclear to me whether this prompt supports clean
deinitialization and repeated initialization. Doesn't look like it.
Does it?

> > Why is prompt_vcs_precmd checking whether prompt_vcs_fd is a readable
> > fd? How can it not be?
>
> I don't know how or why, but if I don't check for that, then I get
> this error repeatedly:
>
> prompt_vcs_precmd:6: failed to close file descriptor 11: bad file descriptor

Then the check must be masking a bug. This bug can result in the
closing of another file descriptor that is not owned by prompt_vcs.

I took a quick look and perhaps the bug is due to prompt_vcs_fd-widget
not unsetting prompt_vcs_fd?

> > There is a comment in prompt_vcs_precmd that says it's going to kill a
> > process while in fact it closes the file descriptor. That may
> > *eventually* kill the process when it decides to print something
> > (assuming it hasn't blocked SIGPIPE or is checking for write errors).
>
> True. I'll change it to actually kill the process, too.

I see that the code is sending SIGKILL now and not waiting for the
process to terminate. Both of these make me nervous. The code also
*looks like* it would work without monitor but it wouldn't (it would
result in unbounded background processes and zombies). What do you
think about not killing anything and ensuring that at most one
background process runs at once? This is what I do in my zsh theme and
it works well.

> > prompt_vcs_fd-widget has a check for [[ -n $1 ]]. When is it false?
>
> When prompt_vcs_fd-widget is being called incorrectly. :)

When can it be called incorrectly?

This is not a public function, it's a callback that is passed to `zle
-F`. Do you expect the latter to violate its contract in this specific
way? If not, I would remove the check. It's increasing the complexity
of the code without material gain.

> Perhaps it should not return 1 in that case, though.

The return code of `zle -F` callbacks is ignored. Adding specific
return codes makes it appear as if they matter. This makes the code
harder to understand similarly to conditions that are always false.

The file descriptor leaks to child processes. It's better to avoid
this. This can be done by using sysopen with cloexec instead of plain
exec.

Instead of printing the pid and reading it in the parent you can use
$sysparams[procsubstpid].

Why does _prompt_vcs_info quote its output? If it didn't quote, then
there would be no need to unquote after reading.

Handling errors from `read` would be nice.

Roman.


  parent reply	other threads:[~2021-06-10 17:45 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-13 19:41 [RFC][PATCH] `newuser` prompt theme 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
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 [this message]
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='CAN=4vMqqG1FvpraLMePSbXRWa-sUsBH=_WNu1Ox6qMO6QJgd+g@mail.gmail.com' \
    --to=roman.perepelitsa@gmail.com \
    --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).