mirror of
https://github.com/Llewellynvdm/fzf.git
synced 2024-12-23 03:19:01 +00:00
Clean up test shell initialization
- Fix 'make docker-test' - Set fish_history to an empty string since 'fish --private' is not available prior to fish 3.0
This commit is contained in:
parent
afa2c4e0af
commit
7bf1f2cc84
@ -9,13 +9,23 @@ require 'minitest/autorun'
|
||||
require 'fileutils'
|
||||
require 'English'
|
||||
require 'shellwords'
|
||||
require 'erb'
|
||||
require 'tempfile'
|
||||
|
||||
TEMPLATE = DATA.read
|
||||
UNSETS = %w[
|
||||
FZF_DEFAULT_COMMAND FZF_DEFAULT_OPTS
|
||||
FZF_CTRL_T_COMMAND FZF_CTRL_T_OPTS
|
||||
FZF_ALT_C_COMMAND
|
||||
FZF_ALT_C_OPTS FZF_CTRL_R_OPTS
|
||||
fish_history
|
||||
].freeze
|
||||
DEFAULT_TIMEOUT = 20
|
||||
|
||||
FILE = File.expand_path(__FILE__)
|
||||
base = File.expand_path('../../', __FILE__)
|
||||
Dir.chdir base
|
||||
FZF = "FZF_DEFAULT_OPTS= FZF_DEFAULT_COMMAND= #{base}/bin/fzf"
|
||||
BASE = File.expand_path('..', __dir__)
|
||||
Dir.chdir(BASE)
|
||||
FZF = "FZF_DEFAULT_OPTS= FZF_DEFAULT_COMMAND= #{BASE}/bin/fzf"
|
||||
|
||||
class NilClass
|
||||
def include?(_str)
|
||||
@ -42,22 +52,33 @@ end
|
||||
|
||||
class Shell
|
||||
class << self
|
||||
def unsets
|
||||
'unset FZF_DEFAULT_COMMAND FZF_DEFAULT_OPTS FZF_CTRL_T_COMMAND FZF_CTRL_T_OPTS FZF_ALT_C_COMMAND FZF_ALT_C_OPTS FZF_CTRL_R_OPTS;'
|
||||
end
|
||||
|
||||
def bash
|
||||
'PS1= PROMPT_COMMAND= bash --rcfile ~/.fzf.bash'
|
||||
@bash ||=
|
||||
begin
|
||||
bashrc = '/tmp/fzf.bash'
|
||||
File.open(bashrc, 'w') do |f|
|
||||
f.puts(ERB.new(TEMPLATE).result(binding))
|
||||
end
|
||||
|
||||
"bash --rcfile #{bashrc}"
|
||||
end
|
||||
end
|
||||
|
||||
def zsh
|
||||
FileUtils.mkdir_p '/tmp/fzf-zsh'
|
||||
FileUtils.cp File.expand_path('~/.fzf.zsh'), '/tmp/fzf-zsh/.zshrc'
|
||||
'PS1= PROMPT_COMMAND= HISTSIZE=100 ZDOTDIR=/tmp/fzf-zsh zsh'
|
||||
@zsh ||=
|
||||
begin
|
||||
zdotdir = '/tmp/fzf-zsh'
|
||||
FileUtils.rm_rf(zdotdir)
|
||||
FileUtils.mkdir_p(zdotdir)
|
||||
File.open("#{zdotdir}/.zshrc", 'w') do |f|
|
||||
f.puts(ERB.new(TEMPLATE).result(binding))
|
||||
end
|
||||
"ZDOTDIR=#{zdotdir} zsh"
|
||||
end
|
||||
end
|
||||
|
||||
def fish
|
||||
'fish'
|
||||
UNSETS.map { |v| v + '= ' }.join + 'fish'
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -68,21 +89,10 @@ class Tmux
|
||||
attr_reader :win
|
||||
|
||||
def initialize(shell = :bash)
|
||||
@win =
|
||||
case shell
|
||||
when :bash
|
||||
go("new-window -d -P -F '#I' '#{Shell.unsets + Shell.bash}'").first
|
||||
when :zsh
|
||||
go("new-window -d -P -F '#I' '#{Shell.unsets + Shell.zsh}'").first
|
||||
when :fish
|
||||
go("new-window -d -P -F '#I' '#{Shell.unsets + Shell.fish}'").first
|
||||
else
|
||||
raise "Unknown shell: #{shell}"
|
||||
end
|
||||
@win = go("new-window -d -P -F '#I' '#{Shell.send(shell)}'").first
|
||||
go("set-window-option -t #{@win} pane-base-index 0")
|
||||
@lines = `tput lines`.chomp.to_i
|
||||
|
||||
return unless shell == :fish
|
||||
|
||||
send_keys('function fish_prompt; end; clear', :Enter)
|
||||
self.until(&:empty?)
|
||||
end
|
||||
@ -124,7 +134,7 @@ class Tmux
|
||||
go("capture-pane -t #{win}.#{pane} \\; save-buffer #{TEMPNAME} 2> /dev/null")
|
||||
$CHILD_STATUS.exitstatus.zero?
|
||||
end
|
||||
File.read(TEMPNAME).split($INPUT_RECORD_SEPARATOR)[0, @lines].reverse.drop_while(&:empty?).reverse
|
||||
File.read(TEMPNAME).split($INPUT_RECORD_SEPARATOR).reverse.drop_while(&:empty?).reverse
|
||||
end
|
||||
|
||||
def until(refresh = false, pane = 0)
|
||||
@ -2098,3 +2108,21 @@ class TestFish < TestBase
|
||||
@tmux = Tmux.new :fish
|
||||
end
|
||||
end
|
||||
|
||||
__END__
|
||||
# Setup fzf
|
||||
# ---------
|
||||
if [[ ! "$PATH" == *<%= BASE %>/bin* ]]; then
|
||||
export PATH="${PATH:+${PATH}:}<%= BASE %>/bin"
|
||||
fi
|
||||
|
||||
# Auto-completion
|
||||
# ---------------
|
||||
[[ $- == *i* ]] && source "<%= BASE %>/shell/completion.<%= __method__ %>" 2> /dev/null
|
||||
|
||||
# Key bindings
|
||||
# ------------
|
||||
source "<%= BASE %>/shell/key-bindings.<%= __method__ %>"
|
||||
|
||||
PS1= PROMPT_COMMAND= HISTFILE= HISTSIZE=100
|
||||
unset <%= UNSETS.join(' ') %>
|
||||
|
Loading…
Reference in New Issue
Block a user