Skip to content

Commit 0ecaeb9

Browse files
Copilotarl
andcommitted
Address review feedback: refactor formatFlag to appendFlag, update README and tests
Co-authored-by: arl <476650+arl@users.noreply.github.com>
1 parent 886b2ea commit 0ecaeb9

3 files changed

Lines changed: 21 additions & 53 deletions

File tree

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,9 @@ This is the list of additional configuration `options`:
296296
| `hide_clean` | Hides the clean flag entirely | `false` |
297297
| `swap_divergence` | Swaps order of behind & ahead upstream counts | `false` |
298298
| `divergence_space` | Add a space between behind & ahead upstream counts | `false` |
299-
| `flags_without_count`| Show flags symbols without counts (empty symbols show nothing instead of counts)| `false` |
299+
| `flags_without_count`| Show flags symbols without counts* | `false` |
300+
301+
*When `flags_without_count` is true, shows only symbols (empty symbols show nothing). When false (default), shows symbols with counts (empty symbols show counts only).
300302

301303
## Troubleshooting
302304

tmux/formater.go

Lines changed: 12 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -295,34 +295,29 @@ func (f *Formater) currentRef() string {
295295
return fmt.Sprintf("%s%s%s", f.Styles.Clear, f.Styles.Branch, branch)
296296
}
297297

298-
// formatFlag formats a flag with or without count based on the flags_without_count option
299-
func (f *Formater) formatFlag(style, symbol string, count int) string {
298+
// appendFlag appends a flag to the flags slice based on configuration options
299+
func (f *Formater) appendFlag(flags []string, style, symbol string, count int) []string {
300300
if count == 0 {
301-
return ""
301+
return flags
302302
}
303303

304304
if f.Options.FlagsWithoutCount {
305305
// When flags_without_count is true, show symbol only (empty string if symbol is empty)
306306
if symbol == "" {
307-
return ""
307+
return flags
308308
}
309-
return fmt.Sprintf("%s%s", style, symbol)
309+
return append(flags, fmt.Sprintf("%s%s", style, symbol))
310310
}
311311

312312
// When flags_without_count is false, show symbol + count, or just count if symbol is empty
313-
return fmt.Sprintf("%s%s%d", style, symbol, count)
313+
return append(flags, fmt.Sprintf("%s%s%d", style, symbol, count))
314314
}
315315

316316
func (f *Formater) flags() string {
317317
var flags []string
318318
if f.st.IsClean {
319319
// For stashed in clean state, handle empty symbols properly
320-
if f.st.NumStashed != 0 {
321-
flag := f.formatFlag(f.Styles.Stashed, f.Symbols.Stashed, f.st.NumStashed)
322-
if flag != "" {
323-
flags = append(flags, flag)
324-
}
325-
}
320+
flags = f.appendFlag(flags, f.Styles.Stashed, f.Symbols.Stashed, f.st.NumStashed)
326321

327322
// Clean flag only shows if symbol is not empty and hide_clean is false
328323
if !f.Options.HideClean && f.Symbols.Clean != "" {
@@ -335,40 +330,11 @@ func (f *Formater) flags() string {
335330
}
336331

337332
// For all other flags, handle empty symbols properly
338-
if f.st.NumStaged != 0 {
339-
flag := f.formatFlag(f.Styles.Staged, f.Symbols.Staged, f.st.NumStaged)
340-
if flag != "" {
341-
flags = append(flags, flag)
342-
}
343-
}
344-
345-
if f.st.NumConflicts != 0 {
346-
flag := f.formatFlag(f.Styles.Conflict, f.Symbols.Conflict, f.st.NumConflicts)
347-
if flag != "" {
348-
flags = append(flags, flag)
349-
}
350-
}
351-
352-
if f.st.NumModified != 0 {
353-
flag := f.formatFlag(f.Styles.Modified, f.Symbols.Modified, f.st.NumModified)
354-
if flag != "" {
355-
flags = append(flags, flag)
356-
}
357-
}
358-
359-
if f.st.NumStashed != 0 {
360-
flag := f.formatFlag(f.Styles.Stashed, f.Symbols.Stashed, f.st.NumStashed)
361-
if flag != "" {
362-
flags = append(flags, flag)
363-
}
364-
}
365-
366-
if f.st.NumUntracked != 0 {
367-
flag := f.formatFlag(f.Styles.Untracked, f.Symbols.Untracked, f.st.NumUntracked)
368-
if flag != "" {
369-
flags = append(flags, flag)
370-
}
371-
}
333+
flags = f.appendFlag(flags, f.Styles.Staged, f.Symbols.Staged, f.st.NumStaged)
334+
flags = f.appendFlag(flags, f.Styles.Conflict, f.Symbols.Conflict, f.st.NumConflicts)
335+
flags = f.appendFlag(flags, f.Styles.Modified, f.Symbols.Modified, f.st.NumModified)
336+
flags = f.appendFlag(flags, f.Styles.Stashed, f.Symbols.Stashed, f.st.NumStashed)
337+
flags = f.appendFlag(flags, f.Styles.Untracked, f.Symbols.Untracked, f.st.NumUntracked)
372338

373339
if len(flags) > 0 {
374340
return f.Styles.Clear + strings.Join(flags, " ")

tmux/formater_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ func TestFlagsWithoutCountBehavior(t *testing.T) {
121121
Staged: "StyleStaged",
122122
},
123123
symbols: symbols{
124-
Staged: "S",
124+
Staged: "SymbolStaged",
125125
},
126126
options: options{
127127
FlagsWithoutCount: false,
@@ -131,7 +131,7 @@ func TestFlagsWithoutCountBehavior(t *testing.T) {
131131
NumStaged: 1,
132132
},
133133
},
134-
want: "StyleClearStyleStagedS1",
134+
want: "StyleClearStyleStagedSymbolStaged1",
135135
},
136136
// Case 1: non-empty symbol, count=1, flags_without_count=true
137137
{
@@ -141,7 +141,7 @@ func TestFlagsWithoutCountBehavior(t *testing.T) {
141141
Staged: "StyleStaged",
142142
},
143143
symbols: symbols{
144-
Staged: "S",
144+
Staged: "SymbolStaged",
145145
},
146146
options: options{
147147
FlagsWithoutCount: true,
@@ -151,7 +151,7 @@ func TestFlagsWithoutCountBehavior(t *testing.T) {
151151
NumStaged: 1,
152152
},
153153
},
154-
want: "StyleClearStyleStagedS",
154+
want: "StyleClearStyleStagedSymbolStaged",
155155
},
156156
// Case 2: empty symbol, count=1, flags_without_count=false
157157
{
@@ -201,7 +201,7 @@ func TestFlagsWithoutCountBehavior(t *testing.T) {
201201
Staged: "StyleStaged",
202202
},
203203
symbols: symbols{
204-
Staged: "S",
204+
Staged: "SymbolStaged",
205205
},
206206
options: options{
207207
FlagsWithoutCount: false,
@@ -221,7 +221,7 @@ func TestFlagsWithoutCountBehavior(t *testing.T) {
221221
Staged: "StyleStaged",
222222
},
223223
symbols: symbols{
224-
Staged: "S",
224+
Staged: "SymbolStaged",
225225
},
226226
options: options{
227227
FlagsWithoutCount: true,

0 commit comments

Comments
 (0)