summaryrefslogtreecommitdiff
path: root/gitstatus
diff options
context:
space:
mode:
authorromkatv <roman.perepelitsa@gmail.com>2019-07-24 11:31:16 +0300
committerromkatv <roman.perepelitsa@gmail.com>2019-07-24 11:31:16 +0300
commit00b71dd3c303dc2ce0445eb4e76bb84b76c34085 (patch)
treefd9770fe55be437ac1fa420ba6b3669999f4452b /gitstatus
parent5ef0ec415eefbc8b4431a6e4b8e2a5e0d299176a (diff)
pull upstream changes from gitstatus
Diffstat (limited to 'gitstatus')
-rw-r--r--gitstatus/gitstatus.plugin.zsh17
1 files changed, 11 insertions, 6 deletions
diff --git a/gitstatus/gitstatus.plugin.zsh b/gitstatus/gitstatus.plugin.zsh
index e5352038..3a668e3a 100644
--- a/gitstatus/gitstatus.plugin.zsh
+++ b/gitstatus/gitstatus.plugin.zsh
@@ -347,22 +347,27 @@ function gitstatus_start() {
--dirty-max-index-size=${(q)dirty_max_index_size}
${${log_level:#INFO}:+--log-level=$log_level})
- # We use `zsh -c` instead of plain {} or () to work around bugs in zplug. It hangs on startup.
- zsh -dfxc "
+ local cmd="
+ echo \$\$
${(q)daemon} $daemon_args
if [[ \$? != (0|10) && \$? -le 128 &&
-z ${(q)GITSTATUS_DAEMON:-} &&
-f ${(q)daemon}-static ]]; then
${(q)daemon}-static $daemon_args
fi
- echo -nE $'bye\x1f0\x1e'
- " <$req_fifo >$resp_fifo 2>$log_file 3<$lock_file &!
+ echo -nE $'bye\x1f0\x1e'"
+ cmd="setopt monitor; zsh -dfxc ${(q)cmd} &!"
+ # We use `zsh -c` instead of plain {} or () to work around bugs in zplug. It hangs on startup.
+ # Double fork is to daemonize. Some macOS users had issues when gitstatusd was a child process
+ # of the interactive zsh. For example, https://github.com/romkatv/powerlevel10k/issues/123
+ # and https://github.com/romkatv/powerlevel10k/issues/97.
+ zsh -dfxc $cmd <$req_fifo >$resp_fifo 2>$log_file 3<$lock_file &!
- daemon_pid=$!
-
sysopen -w -o cloexec,sync -u req_fd $req_fifo
sysopen -r -o cloexec -u resp_fd $resp_fifo
+ read -u $resp_fd daemon_pid
+
rm -f $req_fifo $resp_fifo $lock_file
function _gitstatus_process_response_${name}() {