mirror of
https://github.com/charmbracelet/gum
synced 2024-06-26 01:00:20 +02:00
* Added initial search functionality * Added a handler for the key presses * Added a searchbar at the bottom of the screen * Made search results cycleable by pressing n * correct start pos and ignore keys while searching * fix out of bound error when pressing n * made the matching pattern relative to the current pos * added p for searching for previous match * added highlighting to search matches * dynamically replaced all matches * fixed string highlight issue * fixed truncation issue * small simplifaction in ypos logic * made prev and next behave the same atBottom * simplified logic and fixed linter errors * updated help text * style changes * added comments * fixed truncation issue * fixes infinte loop on very long lines * added simple lipgloss truncate function * updated colors for better contrast * lint fix * initial commit for soft-wrap functionality * linter corrections and added for pager with new model * added generic functions to a utility package * fix soft lint errors * made N match previous as well as p * replaced help text when search is active * ran gofmt -w * reimplemented search and next to enabled support for dynamic highlights * made the highlight move as you progress through the search * simplified highlighter * improvements to the clean up of the highlight function * semi working reverse search * reverse search without highlight * added semi working highlight for reverser search * working version of previous match * fixed issue with single letter matches in next * added support for softwrapping * respond to soft lint warnings * removed unused function * lint * simplified matchers and fixed duplicate highlights * optimisations and change in matching pattern * fixed bug in lipglosspadding and allowed matching 1 etc. * make highlight respect user settings * fixed logic error in slice * made prev match wrap around * fix: show next/prev match help when active * updated how view port line is set * avoid crashes when regex doesn't compile * fix: spelling previous --------- Co-authored-by: Maas Lalani <maas@lalani.dev>
24 lines
611 B
Go
24 lines
611 B
Go
package utils
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/charmbracelet/lipgloss"
|
|
)
|
|
|
|
// LipglossTruncate truncates a given line based on its lipgloss width.
|
|
func LipglossTruncate(s string, width int) string {
|
|
var i int
|
|
for i = 0; i < len(s) && lipgloss.Width(s[:i]) < width; i++ {
|
|
} //revive:disable-line:empty-block
|
|
return s[:i]
|
|
}
|
|
|
|
// LipglossLengthPadding calculated calculates how much padding a string is given by a style.
|
|
func LipglossPadding(style lipgloss.Style) (int, int) {
|
|
render := style.Render(" ")
|
|
before := strings.Index(render, " ")
|
|
after := len(render) - len(" ") - before
|
|
return before, after
|
|
}
|