Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Foreign Commands Not Appearing in 'history' Array When 'sharehistory' Option is Enabled Until a Command is Entered
- X-seq: zsh-users 30089
- From: Langbart <Langbart@xxxxxxxxxxxxxx>
- To: "zsh-users@xxxxxxx" <zsh-users@xxxxxxx>
- Subject: Foreign Commands Not Appearing in 'history' Array When 'sharehistory' Option is Enabled Until a Command is Entered
- Date: Mon, 28 Oct 2024 15:06:03 +0000
- Archived-at: <https://zsh.org/users/30089>
- Feedback-id: 20607877:user:proton
- List-id: <zsh-users.zsh.org>
Guten Tag,
is it a bug that when the 'sharehistory' option is enabled, commands from other shells ('foreign') aren't included in the 'history' array until the user enters a command?
Consider the following widget and settings in my '.zshrc':
```sh
test-history() {
BUFFER=""
print
print -- "=== HISTORY TEST ==="
print -- "history array:"
zmodload -F zsh/parameter p:history || return 1
printf "%s\t%s\n" "${(kv)history[@]}" | head -5
print -- "--------------------"
print -- "fc command:"
print -r -- "$(fc -rl -5)"
zle accept-line
}
zle -N test-history
bindkey '^R' test-history
setopt SHARE_HISTORY
```
I open two terminals, type 'echo Test 1' in Terminal 1, switch to Terminal 2, and press 'Enter' without entering a command. Pressing 'Ctrl-R' shows that the 'history' array doesn't include the 'echo Test 1' entry.
```txt
=== HISTORY TEST ===
history array:
--------------------
fc command:
1* echo Test 1
```
After entering 'echo Test 2' in Terminal 2 and pressing 'Ctrl-R' again in Terminal 2, the output is:
```txt
=== HISTORY TEST ===
history array:
2 echo Test 2
1 echo Test 1
--------------------
fc command:
2 echo Test 2
1* echo Test 1
```
Prepending 'fc -RI' before accessing the 'history' array seems to resolve the issue. Is this the recommended workaround to ensure that the 'history' array lists its resuls like 'fc -rl ...' does ?
```sh
...
[[ "${options[sharehistory]}" == "on" ]] && fc -RI
zmodload -F zsh/parameter p:history || return 1
printf "%s\t%s\n" "${(kv)history[@]}" | head -5
...
```
Related:
Messages sorted by:
Reverse Date,
Date,
Thread,
Author