m/fzf
1
0
mirror of https://github.com/junegunn/fzf.git synced 2025-11-15 23:03:47 -05:00

Add --walker-path-sep=CHAR to use a different path separator

This is needed when you run a Windows binary on WSL or zsh on Windows
where forward slashes are expected.

  export FZF_DEFAULT_OPTS='--walker-path-sep /'

Close #3859
This commit is contained in:
Junegunn Choi
2024-06-29 17:11:09 +09:00
parent a06745826a
commit bf515a3d32
5 changed files with 44 additions and 6 deletions

View File

@@ -147,6 +147,7 @@ Usage: fzf [options]
--walker-root=DIR Root directory from which to start walker (default: .)
--walker-skip=DIRS Comma-separated list of directory names to skip
(default: .git,node_modules)
--walker-path-sep=CHAR Path separator to use (default: / on Unix, \ on Windows)
Shell integration
--bash Print script to set up Bash shell integration
@@ -489,6 +490,7 @@ type Options struct {
WalkerOpts walkerOpts
WalkerRoot string
WalkerSkip []string
WalkerSep byte
Version bool
Help bool
CPUProfile string
@@ -592,6 +594,7 @@ func defaultOptions() *Options {
WalkerOpts: walkerOpts{file: true, hidden: true, follow: true},
WalkerRoot: ".",
WalkerSkip: []string{".git", "node_modules"},
WalkerSep: os.PathSeparator,
Help: false,
Version: false}
}
@@ -1904,6 +1907,14 @@ func parseMarkerMultiLine(str string) (*[3]string, error) {
return &result, nil
}
func parsePathSep(str string) (byte, error) {
bytes := []byte(str)
if len(bytes) != 1 {
return os.PathSeparator, errors.New("invalid path separator (expected: single-byte character)")
}
return bytes[0], nil
}
func parseOptions(index *int, opts *Options, allArgs []string) error {
var err error
var historyMax int
@@ -2479,6 +2490,14 @@ func parseOptions(index *int, opts *Options, allArgs []string) error {
return err
}
opts.WalkerSkip = filterNonEmpty(strings.Split(str, ","))
case "--walker-path-sep":
str, err := nextString(allArgs, &i, "path separator required")
if err != nil {
return err
}
if opts.WalkerSep, err = parsePathSep(str); err != nil {
return err
}
case "--profile-cpu":
if opts.CPUProfile, err = nextString(allArgs, &i, "file path required: cpu"); err != nil {
return err
@@ -2666,6 +2685,10 @@ func parseOptions(index *int, opts *Options, allArgs []string) error {
opts.WalkerRoot = value
} else if match, value := optString(arg, "--walker-skip="); match {
opts.WalkerSkip = filterNonEmpty(strings.Split(value, ","))
} else if match, value := optString(arg, "--walker-path-sep="); match {
if opts.WalkerSep, err = parsePathSep(value); err != nil {
return err
}
} else if match, value := optString(arg, "--hscroll-off="); match {
if opts.HscrollOff, err = atoi(value); err != nil {
return err