y, p, paste, and hist now try win32yank.exe after wl-copy/wl-paste and xclip, so clipboard access works under WSL2 once win32yank is installed and reachable through WSL interop. Updates the OS compatibility docs accordingly.
48 lines
1.4 KiB
Fish
48 lines
1.4 KiB
Fish
# Copyright (C) 2026 Rootiest
|
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
# CATEGORY
|
|
# 04-git-and-version-control
|
|
#
|
|
# COMPONENT
|
|
# integrations/history-logs
|
|
#
|
|
# SYNOPSIS
|
|
# hist
|
|
#
|
|
# DESCRIPTION
|
|
# Searches fish history interactively using fzf, inserts the selected command
|
|
# into the command line, and copies it to the clipboard via wl-copy (falls
|
|
# back to win32yank on WSL2).
|
|
#
|
|
# EXIT STATUS
|
|
# 0 Command selected and inserted, or fzf was cancelled
|
|
# 1 Disabled by __fish_config_op_integrations
|
|
#
|
|
# EXAMPLE
|
|
# hist
|
|
function hist --description 'Search fish history and put it in the prompt'
|
|
__fish_help_header (status current-function) $argv; and return 0
|
|
|
|
# Opinionated guard (C4): integrations disabled
|
|
if not __fish_config_op_enabled (status current-function)
|
|
__fish_palette
|
|
echo "$c_err"'hist: disabled by __fish_config_op_integrations'"$c_reset" >&2
|
|
return 1
|
|
end
|
|
|
|
set -l selected (history | fzf --reverse --height 40% --with-nth 3..)
|
|
|
|
if test -n "$selected"
|
|
# Strip the timestamp for the final output
|
|
set -l command (echo $selected | string replace -r '^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} ' '')
|
|
|
|
if type -q wl-copy
|
|
echo $command | wl-copy 2>/dev/null
|
|
else if type -q win32yank.exe
|
|
echo $command | win32yank.exe -i --crlf 2>/dev/null
|
|
end
|
|
commandline -r $command
|
|
end
|
|
end
|