From 6305ddda6dc2de88705b3e0eb0e4301372488a65 Mon Sep 17 00:00:00 2001 From: James Fraser Date: Wed, 13 Sep 2023 10:07:47 +1000 Subject: [PATCH] Use perl instead of non-GNU sed Fixes: #22 --- history-sync.plugin.zsh | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/history-sync.plugin.zsh b/history-sync.plugin.zsh index 2e105dd..4be638f 100644 --- a/history-sync.plugin.zsh +++ b/history-sync.plugin.zsh @@ -20,6 +20,7 @@ alias zhsync="history_sync_pull && history_sync_push" GIT=$(which git) GPG=$(which gpg) +SED_VERSION=$(sed --version 2>&1) ZSH_HISTORY_PROJ="${ZSH_HISTORY_PROJ:-${HOME}/.zsh_history_proj}" ZSH_HISTORY_FILE_NAME="${ZSH_HISTORY_FILE_NAME:-.zsh_history}" @@ -92,9 +93,13 @@ function _squash_multiline_commands_in_files() { && mv "${TMP_FILE_2}" "${TMP_FILE_1}" # Replace all \n with a sequence of symbols - SED ':a;N;$!ba;s/\n/'" ${NL_REPLACEMENT} "'/g' \ - "${TMP_FILE_1}" > "${TMP_FILE_2}" \ - && mv "${TMP_FILE_2}" "${TMP_FILE_1}" + if [[ $SED_VERSION == *"GNU"* ]]; then + SED ':a;N;$!ba;s/\n/'" ${NL_REPLACEMENT} "'/g' \ + "${TMP_FILE_1}" > "${TMP_FILE_2}" + else + # Assume BSD `sed` + perl -0777 -pe 's/\n/'"${NL_REPLACEMENT}"'/g' "${TMP_FILE_1}" > "${TMP_FILE_2}" + mv "${TMP_FILE_2}" "${TMP_FILE_1}" # Replace first line anchor by \n SED "s/${FIRST_LINE_ANCHOR} \(: [0-9]\{1,10\}:[0-9]\+;\)/\n\1/g" \