Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Oh My Zsh
Commits
7d739082
Unverified
Commit
7d739082
authored
Oct 20, 2020
by
Marc Cornellà
Committed by
GitHub
Oct 20, 2020
Browse files
fzf: add check for OpenSUSE and OpenBSD packages (#9327)
parent
f9f45ca2
Changes
2
Hide whitespace changes
Inline
Side-by-side
plugins/fzf/README.md
View file @
7d739082
# fzf
This plugin enables
[
junegunn's fzf
](
https://github.com/junegunn/fzf
)
fuzzy auto-completion and key bindings
This plugin tries to find
[
junegunn's fzf
](
https://github.com/junegunn/fzf
)
based on where
it's been installed, and enables its fuzzy auto-completion and key bindings.
To use it, add
`fzf`
to the plugins array in your zshrc file:
```
zsh
plugins
=(
... fzf
)
```
## Settings
Add these before the
`plugins=()`
line in your zshrc file:
All these settings should go in your zshrc file, before Oh My Zsh is sourced.
### `FZF_BASE`
Set to fzf installation directory path:
```
zsh
export
FZF_BASE
=
/path/to/fzf/install/dir
```
### `FZF_DEFAULT_COMMAND`
Set default command to use when input is tty:
```
zsh
# Set fzf installation directory path
# export FZF_BASE=/path/to/fzf/install/dir
export
FZF_DEFAULT_COMMAND
=
'<your fzf default commmand>'
```
If not set, the plugin will try to set it to these, in the order in which they're found:
# Uncomment to set the FZF_DEFAULT_COMMAND
# export FZF_DEFAULT_COMMAND='<your fzf default commmand>'
-
[
`rg`
](
https://github.com/BurntSushi/ripgrep
)
-
[
`fd`
](
https://github.com/sharkdp/fd
)
-
[
`ag`
](
https://github.com/ggreer/the_silver_searcher
)
# Uncomment the following line to disable fuzzy completion
# DISABLE_FZF_AUTO_COMPLETION="true"
### `DISABLE_FZF_AUTO_COMPLETION`
# Uncomment the following line to disable key bindings (CTRL-T, CTRL-R, ALT-C)
# DISABLE_FZF_KEY_BINDINGS="true"
Set whether to load fzf auto-completion:
```
zsh
DISABLE_FZF_AUTO_COMPLETION
=
"true"
```
| Setting | Example value | Description |
|-----------------------------|----------------------------|-------------------------------------------------------------|
| FZF_BASE |
`/path/to/fzf/install/dir`
| Set fzf installation directory path (
**export**
) |
| FZF_DEFAULT_COMMAND |
`fd --type f`
| Set default command to use when input is tty (
**export**
) |
| DISABLE_FZF_AUTO_COMPLETION |
`true`
| Set whether to load fzf auto-completion |
| DISABLE_FZF_KEY_BINDINGS |
`true`
| Set whether to disable key bindings (CTRL-T, CTRL-R, ALT-C) |
### `DISABLE_FZF_KEY_BINDINGS`
Set whether to disable key bindings (CTRL-T, CTRL-R, ALT-C):
```
zsh
DISABLE_FZF_KEY_BINDINGS
=
"true"
```
plugins/fzf/fzf.plugin.zsh
View file @
7d739082
function
setup_using_base_dir
()
{
# Declare all variables local not no mess with outside env in any way
local
fzf_base
local
fzf_shell
local
fzfdirs
local dir
local
fzf_base fzf_shell fzfdirs
dir
test
-d
"
${
FZF_BASE
}
"
&&
fzf_base
=
"
${
FZF_BASE
}
"
...
...
@@ -31,38 +27,37 @@ function setup_using_base_dir() {
fi
fi
if
[[
-d
"
${
fzf_base
}
"
]]
;
then
# Fix fzf shell directory for Arch Linux, NixOS or Void Linux packages
if
[[
!
-d
"
${
fzf_base
}
/shell"
]]
;
then
fzf_shell
=
"
${
fzf_base
}
"
else
fzf_shell
=
"
${
fzf_base
}
/shell"
fi
if
[[
!
-d
"
${
fzf_base
}
"
]]
;
then
return
1
fi
# Setup fzf binary path
if
!
((
${
+commands[fzf]
}
))
&&
[[
!
"
$PATH
"
==
*
$fzf_base
/bin
*
]]
;
then
export
PATH
=
"
$PATH
:
$fzf_base
/bin"
fi
# Fix fzf shell directory for Arch Linux, NixOS or Void Linux packages
if
[[
!
-d
"
${
fzf_base
}
/shell"
]]
;
then
fzf_shell
=
"
${
fzf_base
}
"
else
fzf_shell
=
"
${
fzf_base
}
/shell"
fi
#
Auto-completion
if
[[
!
"
$DISABLE_FZF_AUTO_COMPLETION
"
=
=
"true"
]]
;
then
[[
$-
==
*
i
*
]]
&&
source
"
${
fzf_shell
}
/completion.zsh"
2> /dev/null
fi
#
Setup fzf binary path
if
((
!
${
+commands[fzf]
}
))
&&
[[
"
$PATH
"
!
=
*
$fzf_base
/bin
*
]]
;
then
export
PATH
=
"
$PATH
:
$fzf_base
/bin"
fi
# Key bindings
if
[[
!
"
$DISABLE_FZF_KEY_BINDINGS
"
==
"true"
]]
;
then
source
"
${
fzf_shell
}
/key-bindings.zsh"
fi
else
return
1
# Auto-completion
if
[[
-o
interactive
&&
"
$DISABLE_FZF_AUTO_COMPLETION
"
!=
"true"
]]
;
then
source
"
${
fzf_shell
}
/completion.zsh"
2> /dev/null
fi
# Key bindings
if
[[
"
$DISABLE_FZF_KEY_BINDINGS
"
!=
"true"
]]
;
then
source
"
${
fzf_shell
}
/key-bindings.zsh"
fi
}
function
setup_using_debian_package
()
{
((
$+
commands[dpkg]
))
&&
dpkg
-s
fzf &> /dev/null
if
((
$?
))
;
then
# Either not a debian based distro, or no fzf installed. In any case skip ahead
if
((
!
$+
commands[dpkg]
))
||
!
dpkg
-s
fzf &>/dev/null
;
then
# Either not a debian based distro, or no fzf installed
return
1
fi
...
...
@@ -76,8 +71,8 @@ function setup_using_debian_package() {
local
key_bindings
=
"/usr/share/doc/fzf/examples/key-bindings.zsh"
# Auto-completion
if
[[
$-
==
*
i
*
]]
&&
[[
!
"
$DISABLE_FZF_AUTO_COMPLETION
"
=
=
"true"
]]
;
then
source
$completions
2> /dev/null
if
[[
-o
interactive
&&
"
$DISABLE_FZF_AUTO_COMPLETION
"
!
=
"true"
]]
;
then
source
$completions
2> /dev/null
fi
# Key bindings
...
...
@@ -88,16 +83,74 @@ function setup_using_debian_package() {
return
0
}
function
setup_using_opensuse_package
()
{
# OpenSUSE installs fzf in /usr/bin/fzf
# If the command is not found, the package isn't installed
((
$+
commands[fzf]
))
||
return
1
# The fzf-zsh-completion package installs the auto-completion in
local
completions
=
"/usr/share/zsh/site-functions/_fzf"
# The fzf-zsh-completion package installs the key-bindings file in
local
key_bindings
=
"/etc/zsh_completion.d/fzf-key-bindings"
# If these are not found: (1) maybe we're not on OpenSUSE, or
# (2) maybe the fzf-zsh-completion package isn't installed.
if
[[
!
-f
"
$completions
"
||
!
-f
"
$key_bindings
"
]]
;
then
return
1
fi
# Auto-completion
if
[[
-o
interactive
&&
"
$DISABLE_FZF_AUTO_COMPLETION
"
!=
"true"
]]
;
then
source
"
$completions
"
2>/dev/null
fi
# Key bindings
if
[[
"
$DISABLE_FZF_KEY_BINDINGS
"
!=
"true"
]]
;
then
source
"
$key_bindings
"
2>/dev/null
fi
return
0
}
function
setup_using_openbsd_package
()
{
# openBSD installs fzf in /usr/local/bin/fzf
if
[[
"
$OSTYPE
"
!=
openbsd
*
]]
||
((
!
$+
commands[fzf]
))
;
then
return
1
fi
# The fzf package installs the auto-completion in
local
completions
=
"/usr/local/share/zsh/site-functions/_fzf_completion"
# The fzf package installs the key-bindings file in
local
key_bindings
=
"/usr/local/share/zsh/site-functions/_fzf_key_bindings"
# Auto-completion
if
[[
-o
interactive
&&
"
$DISABLE_FZF_AUTO_COMPLETION
"
!=
"true"
]]
;
then
source
"
$completions
"
2>/dev/null
fi
# Key bindings
if
[[
"
$DISABLE_FZF_KEY_BINDINGS
"
!=
"true"
]]
;
then
source
"
$key_bindings
"
2>/dev/null
fi
return
0
}
function
indicate_error
()
{
print
"[oh-my-zsh] fzf plugin: Cannot find fzf installation directory.
\n
"
\
"Please add
\`
export FZF_BASE=/path/to/fzf/install/dir
\`
to your .zshrc"
>
&2
cat
>
&2
<<
EOF
[oh-my-zsh] fzf plugin: Cannot find fzf installation directory.
Please add
\`
export FZF_BASE=/path/to/fzf/install/dir
\`
to your .zshrc
EOF
}
# Check for debian package first, because it easy to short cut
# Indicate to user that fzf installation not found if nothing worked
setup_using_debian_package
||
setup_using_base_dir
||
indicate_error
setup_using_openbsd_package
\
||
setup_using_debian_package
\
||
setup_using_opensuse_package
\
||
setup_using_base_dir
\
||
indicate_error
unset
-f
setup_using_debian_package setup_using_base_dir indicate_error
unset
-f
setup_using_opensuse_package
setup_using_debian_package setup_using_base_dir indicate_error
if
[[
-z
"
$FZF_DEFAULT_COMMAND
"
]]
;
then
if
((
$+
commands[rg]
))
;
then
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment