Extracts _fish_clipboard_copy and _fish_clipboard_paste so the wl-copy/xclip/win32yank fallback chain lives in one place instead of four near-duplicates. hist now goes through the same chain, so it also gets the xclip (X11) fallback it was missing before, alongside win32yank on WSL2.
47 lines
1.3 KiB
Fish
47 lines
1.3 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, xclip,
|
|
# or win32yank (WSL2).
|
|
#
|
|
# DEPENDENCIES
|
|
# _fish_clipboard_copy
|
|
#
|
|
# 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} ' '')
|
|
|
|
echo $command | _fish_clipboard_copy 2>/dev/null
|
|
commandline -r $command
|
|
end
|
|
end
|