Skip to content

Commit 91e0466

Browse files
committed
add flags
1 parent a4ddfc5 commit 91e0466

File tree

2 files changed

+169
-8
lines changed

2 files changed

+169
-8
lines changed

cmd/gofzf/main.go

Lines changed: 164 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,62 @@ const (
1616

1717
var (
1818
version string
19+
)
1920

21+
var (
2022
flagLimit int
2123
flagNoLimit bool
24+
25+
flagPrompt string
26+
flagCursor string
27+
flagSelectedPrefix string
28+
flagUnselectedPrefix string
29+
flagInputPlaceholder string
30+
31+
flagCursorFg string
32+
flagCursorBg string
33+
flagCursorBold bool
34+
flagCursorBlink bool
35+
flagCursorItalic bool
36+
flagCursorStrikethrough bool
37+
flagCursorUnderline bool
38+
flagCursorFaint bool
39+
40+
flagCursorLineFg string
41+
flagCursorLineBg string
42+
flagCursorLineBold bool
43+
flagCursorLineBlink bool
44+
flagCursorLineItalic bool
45+
flagCursorLineStrikethrough bool
46+
flagCursorLineUnderline bool
47+
flagCursorLineFaint bool
48+
49+
flagSelectedPrefixFg string
50+
flagSelectedPrefixBg string
51+
flagSelectedPrefixBold bool
52+
flagSelectedPrefixBlink bool
53+
flagSelectedPrefixItalic bool
54+
flagSelectedPrefixStrikethrough bool
55+
flagSelectedPrefixUnderline bool
56+
flagSelectedPrefixFaint bool
57+
58+
flagUnselectedPrefixFg string
59+
flagUnselectedPrefixBg string
60+
flagUnselectedPrefixBold bool
61+
flagUnselectedPrefixBlink bool
62+
flagUnselectedPrefixItalic bool
63+
flagUnselectedPrefixStrikethrough bool
64+
flagUnselectedPrefixUnderline bool
65+
flagUnselectedPrefixFaint bool
66+
67+
flagMatchesFg string
68+
flagMatchesBg string
69+
flagMatchesBold bool
70+
flagMatchesBlink bool
71+
flagMatchesItalic bool
72+
flagMatchesStrikethrough bool
73+
flagMatchesUnderline bool
74+
flagMatchesFaint bool
2275
)
2376

2477
var rootCmd = &cobra.Command{
@@ -35,12 +88,63 @@ var rootCmd = &cobra.Command{
3588
f := fzf.New(
3689
fzf.WithNoLimit(flagNoLimit),
3790
fzf.WithLimit(flagLimit),
91+
92+
fzf.WithPrompt(flagPrompt),
93+
fzf.WithCursor(flagCursor),
94+
fzf.WithSelectedPrefix(flagSelectedPrefix),
95+
fzf.WithUnselectedPrefix(flagUnselectedPrefix),
96+
fzf.WithInputPlaceholder(flagInputPlaceholder),
3897
fzf.WithStyles(
39-
fzf.WithStyleCursor(fzf.Style{ForegroundColor: mainColor}),
40-
fzf.WithStyleCursorLine(fzf.Style{Bold: true}),
41-
fzf.WithStyleMatches(fzf.Style{ForegroundColor: mainColor}),
42-
fzf.WithStyleSelectedPrefix(fzf.Style{ForegroundColor: mainColor}),
43-
fzf.WithStyleUnselectedPrefix(fzf.Style{Faint: true}),
98+
fzf.WithStyleCursor(fzf.Style{
99+
ForegroundColor: flagCursorFg,
100+
BackgroundColor: flagCursorBg,
101+
Bold: flagCursorBold,
102+
Blink: flagCursorBlink,
103+
Italic: flagCursorItalic,
104+
Strikethrough: flagCursorStrikethrough,
105+
Underline: flagCursorUnderline,
106+
Faint: flagCursorFaint,
107+
}),
108+
fzf.WithStyleCursorLine(fzf.Style{
109+
ForegroundColor: flagCursorLineFg,
110+
BackgroundColor: flagCursorLineBg,
111+
Bold: flagCursorLineBold,
112+
Blink: flagCursorLineBlink,
113+
Italic: flagCursorLineItalic,
114+
Strikethrough: flagCursorLineStrikethrough,
115+
Underline: flagCursorLineUnderline,
116+
Faint: flagCursorLineFaint,
117+
}),
118+
fzf.WithStyleSelectedPrefix(fzf.Style{
119+
ForegroundColor: flagSelectedPrefixFg,
120+
BackgroundColor: flagSelectedPrefixBg,
121+
Bold: flagSelectedPrefixBold,
122+
Blink: flagSelectedPrefixBlink,
123+
Italic: flagSelectedPrefixItalic,
124+
Strikethrough: flagSelectedPrefixStrikethrough,
125+
Underline: flagSelectedPrefixUnderline,
126+
Faint: flagSelectedPrefixFaint,
127+
}),
128+
fzf.WithStyleUnselectedPrefix(fzf.Style{
129+
ForegroundColor: flagUnselectedPrefixFg,
130+
BackgroundColor: flagUnselectedPrefixBg,
131+
Bold: flagUnselectedPrefixBold,
132+
Blink: flagUnselectedPrefixBlink,
133+
Italic: flagUnselectedPrefixItalic,
134+
Strikethrough: flagUnselectedPrefixStrikethrough,
135+
Underline: flagUnselectedPrefixUnderline,
136+
Faint: flagUnselectedPrefixFaint,
137+
}),
138+
fzf.WithStyleMatches(fzf.Style{
139+
ForegroundColor: flagMatchesFg,
140+
BackgroundColor: flagMatchesBg,
141+
Bold: flagMatchesBold,
142+
Blink: flagMatchesBlink,
143+
Italic: flagMatchesItalic,
144+
Strikethrough: flagMatchesStrikethrough,
145+
Underline: flagMatchesUnderline,
146+
Faint: flagMatchesFaint,
147+
}),
44148
),
45149
)
46150
choices, err := f.Find(is, func(i int) string { return is[i] })
@@ -72,6 +176,60 @@ func init() {
72176
rootCmd.Version = version
73177

74178
// flags
75-
rootCmd.Flags().IntVarP(&flagLimit, "limit", "l", 1, "maximum number of items to select")
179+
rootCmd.Flags().SortFlags = false
180+
181+
rootCmd.Flags().IntVar(&flagLimit, "limit", 1, "maximum number of items to select")
76182
rootCmd.Flags().BoolVar(&flagNoLimit, "no-limit", false, "unlimited number of items to select")
183+
rootCmd.MarkFlagsMutuallyExclusive("limit", "no-limit")
184+
185+
rootCmd.Flags().StringVar(&flagPrompt, "prompt", "> ", "")
186+
rootCmd.Flags().StringVar(&flagCursor, "cursor", "> ", "")
187+
rootCmd.Flags().StringVar(&flagSelectedPrefix, "selected-prefix", "● ", "")
188+
rootCmd.Flags().StringVar(&flagUnselectedPrefix, "unselected-prefix", "◯ ", "")
189+
rootCmd.Flags().StringVar(&flagInputPlaceholder, "input-placeholder", "Filter...", "")
190+
191+
rootCmd.Flags().StringVar(&flagCursorFg, "cursor-fg", mainColor, "")
192+
rootCmd.Flags().StringVar(&flagCursorBg, "cursor-bg", "", "")
193+
rootCmd.Flags().BoolVar(&flagCursorBold, "cursor-bold", false, "")
194+
rootCmd.Flags().BoolVar(&flagCursorBlink, "cursor-blink", false, "")
195+
rootCmd.Flags().BoolVar(&flagCursorItalic, "cursor-italic", false, "")
196+
rootCmd.Flags().BoolVar(&flagCursorStrikethrough, "cursor-strike", false, "")
197+
rootCmd.Flags().BoolVar(&flagCursorUnderline, "cursor-underline", false, "")
198+
rootCmd.Flags().BoolVar(&flagCursorFaint, "cursor-faint", false, "")
199+
200+
rootCmd.Flags().StringVar(&flagCursorLineFg, "cursorline-fg", "", "")
201+
rootCmd.Flags().StringVar(&flagCursorLineBg, "cursorline-bg", "", "")
202+
rootCmd.Flags().BoolVar(&flagCursorLineBold, "cursorline-bold", true, "")
203+
rootCmd.Flags().BoolVar(&flagCursorLineBlink, "cursorline-blink", false, "")
204+
rootCmd.Flags().BoolVar(&flagCursorLineItalic, "cursorline-italic", false, "")
205+
rootCmd.Flags().BoolVar(&flagCursorLineStrikethrough, "cursorline-strke", false, "")
206+
rootCmd.Flags().BoolVar(&flagCursorLineUnderline, "cursorline-underline", false, "")
207+
rootCmd.Flags().BoolVar(&flagCursorLineFaint, "cursorline-faint", false, "")
208+
209+
rootCmd.Flags().StringVar(&flagSelectedPrefixFg, "selected-prefix-fg", mainColor, "")
210+
rootCmd.Flags().StringVar(&flagSelectedPrefixBg, "selected-prefix-bg", "", "")
211+
rootCmd.Flags().BoolVar(&flagSelectedPrefixBold, "selected-prefix-bold", false, "")
212+
rootCmd.Flags().BoolVar(&flagSelectedPrefixBlink, "selected-prefix-blink", false, "")
213+
rootCmd.Flags().BoolVar(&flagSelectedPrefixItalic, "selected-prefix-italic", false, "")
214+
rootCmd.Flags().BoolVar(&flagSelectedPrefixStrikethrough, "selected-prefix-strke", false, "")
215+
rootCmd.Flags().BoolVar(&flagSelectedPrefixUnderline, "selected-prefix-underline", false, "")
216+
rootCmd.Flags().BoolVar(&flagSelectedPrefixFaint, "selected-prefix-faint", false, "")
217+
218+
rootCmd.Flags().StringVar(&flagUnselectedPrefixFg, "unselected-prefix-fg", "", "")
219+
rootCmd.Flags().StringVar(&flagUnselectedPrefixBg, "unselected-prefix-bg", "", "")
220+
rootCmd.Flags().BoolVar(&flagUnselectedPrefixBold, "unselected-prefix-bold", false, "")
221+
rootCmd.Flags().BoolVar(&flagUnselectedPrefixBlink, "unselected-prefix-blink", false, "")
222+
rootCmd.Flags().BoolVar(&flagUnselectedPrefixItalic, "unselected-prefix-italic", false, "")
223+
rootCmd.Flags().BoolVar(&flagUnselectedPrefixStrikethrough, "unselected-prefix-strke", false, "")
224+
rootCmd.Flags().BoolVar(&flagUnselectedPrefixUnderline, "unselected-prefix-underline", false, "")
225+
rootCmd.Flags().BoolVar(&flagUnselectedPrefixFaint, "unselected-prefix-faint", true, "")
226+
227+
rootCmd.Flags().StringVar(&flagMatchesFg, "matches-fg", mainColor, "")
228+
rootCmd.Flags().StringVar(&flagMatchesBg, "matches-bg", "", "")
229+
rootCmd.Flags().BoolVar(&flagMatchesBold, "matches-bold", false, "")
230+
rootCmd.Flags().BoolVar(&flagMatchesBlink, "matches-blink", false, "")
231+
rootCmd.Flags().BoolVar(&flagMatchesItalic, "matches-italic", false, "")
232+
rootCmd.Flags().BoolVar(&flagMatchesStrikethrough, "matches-strke", false, "")
233+
rootCmd.Flags().BoolVar(&flagMatchesUnderline, "matches-underline", false, "")
234+
rootCmd.Flags().BoolVar(&flagMatchesFaint, "matches-faint", false, "")
77235
}

option.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,24 @@ import (
55
)
66

77
var defaultOption = option{
8-
limit: 1,
9-
noLimit: false,
8+
limit: 1,
9+
noLimit: false,
10+
1011
prompt: "> ",
1112
cursor: "> ",
1213
selectedPrefix: "● ",
1314
unselectedPrefix: "◯ ",
1415
inputPlaceholder: "Filter...",
1516
styles: NewStyles(),
17+
1618
keymap: &keymap{
1719
Up: key.NewBinding(key.WithKeys("up", "ctrl+p")),
1820
Down: key.NewBinding(key.WithKeys("down", "ctrl+n")),
1921
Toggle: key.NewBinding(key.WithKeys("tab")),
2022
Choose: key.NewBinding(key.WithKeys("enter")),
2123
Abort: key.NewBinding(key.WithKeys("ctrl+c", "esc")),
2224
},
25+
2326
itemPrefixFunc: nil,
2427
}
2528

0 commit comments

Comments
 (0)