fix(engine): only count non-space characters

resolves #1837
This commit is contained in:
Jan De Dobbeleer 2022-02-28 18:39:23 +01:00 committed by Jan De Dobbeleer
parent 3911c0b6ee
commit 18be8a37bf
4 changed files with 11 additions and 11 deletions

View file

@ -71,7 +71,7 @@ func (b *Block) enabled() bool {
return true
}
for _, segment := range b.Segments {
if segment.active {
if segment.enabled {
return true
}
}
@ -93,7 +93,7 @@ func (b *Block) renderSegmentsText() {
func (b *Block) renderSegments() (string, int) {
defer b.writer.Reset()
for _, segment := range b.Segments {
if !segment.active {
if !segment.enabled {
continue
}
b.renderSegment(segment)
@ -174,7 +174,7 @@ func (b *Block) debug() (int, []*SegmentTiming) {
}
start := time.Now()
segment.renderText(b.env)
segmentTiming.active = segment.active
segmentTiming.active = segment.enabled
segmentTiming.text = segment.text
if segmentTiming.active {
b.renderSegment(segment)

View file

@ -14,10 +14,10 @@ func TestBlockEnabled(t *testing.T) {
Type BlockType
}{
{Case: "line break block", Expected: true, Type: LineBreak},
{Case: "prompt enabled", Expected: true, Type: Prompt, Segments: []*Segment{{active: true}}},
{Case: "prompt disabled", Expected: false, Type: Prompt, Segments: []*Segment{{active: false}}},
{Case: "prompt enabled multiple", Expected: true, Type: Prompt, Segments: []*Segment{{active: false}, {active: true}}},
{Case: "rprompt enabled multiple", Expected: true, Type: RPrompt, Segments: []*Segment{{active: false}, {active: true}}},
{Case: "prompt enabled", Expected: true, Type: Prompt, Segments: []*Segment{{enabled: true}}},
{Case: "prompt disabled", Expected: false, Type: Prompt, Segments: []*Segment{{enabled: false}}},
{Case: "prompt enabled multiple", Expected: true, Type: Prompt, Segments: []*Segment{{enabled: false}, {enabled: true}}},
{Case: "rprompt enabled multiple", Expected: true, Type: RPrompt, Segments: []*Segment{{enabled: false}, {enabled: true}}},
}
for _, tc := range cases {
block := &Block{

View file

@ -243,7 +243,7 @@ func (e *Engine) RenderTooltip(tip string) string {
return ""
}
tooltip.text = tooltip.string()
tooltip.active = true
tooltip.enabled = true
// little hack to reuse the current logic
block := &Block{
Alignment: Right,

View file

@ -29,7 +29,7 @@ type Segment struct {
writer SegmentWriter
text string
active bool
enabled bool
env environment.Environment
backgroundCache string
foregroundCache string
@ -320,7 +320,7 @@ func (segment *Segment) renderText(env environment.Environment) {
message := fmt.Sprintf("\noh-my-posh fatal error rendering %s segment:%s\n\n%s\n", segment.Type, err, debug.Stack())
fmt.Println(message)
segment.text = "error"
segment.active = true
segment.enabled = true
}()
err := segment.mapSegmentWithWriter(env)
if err != nil || !segment.shouldIncludeFolder() {
@ -328,6 +328,6 @@ func (segment *Segment) renderText(env environment.Environment) {
}
if segment.writer.Enabled() {
segment.text = segment.string()
segment.active = len(strings.TrimSpace(segment.text)) > 0
segment.enabled = len(strings.ReplaceAll(segment.text, " ", "")) > 0
}
}