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

Fix regression in --no-color / NO_COLOR theme

Fix #4561
This commit is contained in:
Junegunn Choi
2025-10-21 19:49:43 +09:00
parent b852dc8a56
commit aa259fdc19
3 changed files with 17 additions and 8 deletions

View File

@@ -1,6 +1,12 @@
CHANGELOG CHANGELOG
========= =========
0.66.1
------
- Bug fixes
- Fixed a bug preventing 'ctrl-h' from being bound to an action (#4556)
- Fixed `--no-color` / `NO_COLOR` theme
0.66.0 0.66.0
------ ------
@@ -35,10 +41,10 @@ This version introduces many new features centered around the new "raw" mode.
This version introduces a new "raw" mode (named so because it shows the list This version introduces a new "raw" mode (named so because it shows the list
"unfiltered"). In raw mode, non-matching items stay in their original positions, "unfiltered"). In raw mode, non-matching items stay in their original positions,
but appear dimmed. This allows you see surrounding items of a match and better but appear dimmed. This allows you to see the surrounding items of a match and
understand the context of it. You can enable raw mode by default with `--raw`, better understand the context of it. You can enable raw mode by default with
but it's often more useful when toggled dynamically with the `toggle-raw` `--raw`, but it's often more useful when toggled dynamically with the
action. `toggle-raw` action.
```sh ```sh
tree | fzf --reverse --bind alt-r:toggle-raw tree | fzf --reverse --bind alt-r:toggle-raw

View File

@@ -673,9 +673,10 @@ func defaultPreviewOpts(command string) previewOpts {
} }
func defaultOptions() *Options { func defaultOptions() *Options {
var theme *tui.ColorTheme var theme, baseTheme *tui.ColorTheme
if os.Getenv("NO_COLOR") != "" { if os.Getenv("NO_COLOR") != "" {
theme = tui.NoColorTheme theme = tui.NoColorTheme
baseTheme = tui.NoColorTheme
} else { } else {
theme = tui.EmptyTheme theme = tui.EmptyTheme
} }
@@ -703,6 +704,7 @@ func defaultOptions() *Options {
Ansi: false, Ansi: false,
Mouse: true, Mouse: true,
Theme: theme, Theme: theme,
BaseTheme: baseTheme,
Black: false, Black: false,
Bold: true, Bold: true,
MinHeight: -10, MinHeight: -10,

View File

@@ -295,8 +295,9 @@ func (a ColorAttr) IsColorDefined() bool {
} }
func (a ColorAttr) IsAttrDefined() bool { func (a ColorAttr) IsAttrDefined() bool {
return a.Attr != AttrUndefined return a.Attr&^BoldForce != AttrUndefined
} }
func (a ColorAttr) IsUndefined() bool { func (a ColorAttr) IsUndefined() bool {
return !a.IsColorDefined() && !a.IsAttrDefined() return !a.IsColorDefined() && !a.IsAttrDefined()
} }
@@ -1156,12 +1157,12 @@ func InitTheme(theme *ColorTheme, baseTheme *ColorTheme, boldify bool, forceBlac
// e.g. fzf --delimiter / --nth -1 --color fg:dim,nth:regular // e.g. fzf --delimiter / --nth -1 --color fg:dim,nth:regular
current := theme.Current current := theme.Current
if !baseTheme.Colored && current.IsUndefined() { if !baseTheme.Colored && current.IsUndefined() {
current.Attr = Reverse current.Attr |= Reverse
} }
theme.Current = theme.Fg.Merge(o(baseTheme.Current, current)) theme.Current = theme.Fg.Merge(o(baseTheme.Current, current))
currentMatch := theme.CurrentMatch currentMatch := theme.CurrentMatch
if !baseTheme.Colored && currentMatch.IsUndefined() { if !baseTheme.Colored && currentMatch.IsUndefined() {
currentMatch.Attr = Reverse | Underline currentMatch.Attr |= Reverse | Underline
} }
theme.CurrentMatch = o(baseTheme.CurrentMatch, currentMatch) theme.CurrentMatch = o(baseTheme.CurrentMatch, currentMatch)
theme.Spinner = o(baseTheme.Spinner, theme.Spinner) theme.Spinner = o(baseTheme.Spinner, theme.Spinner)