mirror of
https://github.com/charmbracelet/glow
synced 2024-11-10 14:14:17 +00:00
Better header messages depending on what we find
This commit is contained in:
parent
aa0c48f983
commit
abff9d47de
1 changed files with 55 additions and 29 deletions
84
ui/stash.go
84
ui/stash.go
|
@ -17,10 +17,12 @@ import (
|
|||
"github.com/charmbracelet/charm/ui/common"
|
||||
"github.com/dustin/go-humanize"
|
||||
runewidth "github.com/mattn/go-runewidth"
|
||||
"github.com/muesli/reflow/wordwrap"
|
||||
te "github.com/muesli/termenv"
|
||||
)
|
||||
|
||||
const (
|
||||
stashIndent = 1
|
||||
stashViewItemHeight = 3
|
||||
stashViewTopPadding = 5
|
||||
stashViewBottomPadding = 4
|
||||
|
@ -425,6 +427,9 @@ func stashView(m stashModel) string {
|
|||
case stashStateLoadingDocument:
|
||||
s += " " + spinner.View(m.spinner) + " Loading document..."
|
||||
case stashStateReady, stashStateSettingNote, stashStatePromptDelete:
|
||||
var (
|
||||
header string
|
||||
)
|
||||
|
||||
loadingIndicator := ""
|
||||
if !m.loaded.done() || m.loadingFromNetwork {
|
||||
|
@ -439,32 +444,6 @@ func stashView(m stashModel) string {
|
|||
blankLines = strings.Repeat("\n", numBlankLines)
|
||||
}
|
||||
|
||||
localItems := m.countMarkdowns(localMarkdown)
|
||||
stashedItems := m.countMarkdowns(stashedMarkdown)
|
||||
|
||||
var header string
|
||||
if localItems > 0 {
|
||||
var plural string
|
||||
if localItems > 1 {
|
||||
plural = "s"
|
||||
}
|
||||
header += fmt.Sprintf("%d File%s", localItems, plural)
|
||||
}
|
||||
if stashedItems > 0 {
|
||||
var divider string
|
||||
if localItems > 0 {
|
||||
divider = " • "
|
||||
}
|
||||
header += fmt.Sprintf("%s%d Stashed", divider, stashedItems)
|
||||
}
|
||||
header = common.Subtle(header)
|
||||
|
||||
// TODO: show proper help if no stashed items or local items are found
|
||||
// (even if there's news)
|
||||
if localItems == 0 && stashedItems == 0 {
|
||||
header = "Nothing stashed yet. To stash you can " + common.Code("glow stash path/to/file.md") + "."
|
||||
}
|
||||
|
||||
switch m.state {
|
||||
case stashStatePromptDelete:
|
||||
header = redFg("Delete this item? ") + faintRedFg("(y/N)")
|
||||
|
@ -472,6 +451,12 @@ func stashView(m stashModel) string {
|
|||
header = yellowFg("Set the memo for this item?")
|
||||
}
|
||||
|
||||
// Only draw the normal header if we're not using the header area for
|
||||
// something else (like a prompt)
|
||||
if header == "" {
|
||||
header = stashHeaderView(m)
|
||||
}
|
||||
|
||||
var pagination string
|
||||
if m.paginator.TotalPages > 1 {
|
||||
pagination = paginator.View(m.paginator)
|
||||
|
@ -492,7 +477,7 @@ func stashView(m stashModel) string {
|
|||
stashHelpView(m),
|
||||
)
|
||||
}
|
||||
return "\n" + indent(s, 1)
|
||||
return "\n" + indent(s, stashIndent)
|
||||
}
|
||||
|
||||
func glowLogoView(text string) string {
|
||||
|
@ -503,8 +488,49 @@ func glowLogoView(text string) string {
|
|||
String()
|
||||
}
|
||||
|
||||
func stashEmtpyView(m stashModel) string {
|
||||
return "Nothing stashed yet."
|
||||
func stashHeaderView(m stashModel) string {
|
||||
loading := !m.loaded.done()
|
||||
noMarkdowns := len(m.markdowns) == 0
|
||||
|
||||
// Still loading. We haven't found files, stashed items, or news yet.
|
||||
if loading && noMarkdowns {
|
||||
return common.Subtle("Looking for stuff...")
|
||||
}
|
||||
|
||||
// Loading's finished. We didn't find anything, the stash is empty and
|
||||
// there's no news.
|
||||
if !loading && noMarkdowns {
|
||||
s := "Nothing found. Try running " + common.Code("glow") +
|
||||
" in a directory with markdown files, or stashing a file with " +
|
||||
common.Code("glow stash") + ". For more, see " + common.Code("glow help") + "."
|
||||
return wordwrap.String(s, stashIndent)
|
||||
}
|
||||
|
||||
localItems := m.countMarkdowns(localMarkdown)
|
||||
stashedItems := m.countMarkdowns(stashedMarkdown)
|
||||
|
||||
// Loading's finished and all we have is news.
|
||||
if localItems == 0 && stashedItems == 0 {
|
||||
return common.Subtle("No local or stashed markdown files found.")
|
||||
}
|
||||
|
||||
// There are local and/or stashed files, so display counts.
|
||||
var s string
|
||||
if localItems > 0 {
|
||||
var plural string
|
||||
if localItems > 1 {
|
||||
plural = "s"
|
||||
}
|
||||
s += fmt.Sprintf("%d File%s", localItems, plural)
|
||||
}
|
||||
if stashedItems > 0 {
|
||||
var divider string
|
||||
if localItems > 0 {
|
||||
divider = " • "
|
||||
}
|
||||
s += fmt.Sprintf("%s%d Stashed", divider, stashedItems)
|
||||
}
|
||||
return common.Subtle(s)
|
||||
}
|
||||
|
||||
func stashPopulatedView(m stashModel) string {
|
||||
|
|
Loading…
Reference in a new issue