• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

charmbracelet / bubbles
47%
master: 45%

Build:
Build:
LAST BUILD BRANCH: feature/misc-viewport-fixes
DEFAULT BRANCH: master
Repo Added 19 Oct 2020 04:14AM UTC
Token IjtpKoTVFkXN77AHAX9apAGfcu09KIyOR regen
Build 1869 Last
Files 23
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH bug/831/slow-textarea-performance
branch: bug/831/slow-textarea-performance
CHANGE BRANCH
x
Reset
Sync Branches
  • bug/831/slow-textarea-performance
  • 20220829-move-begin-end
  • 20220830-ta
  • 20220903-cursor
  • 20221002-key
  • 20221007-paginator
  • 20221007-textinput-bindings
  • 20230124-paste-nl
  • 20230205-textarea-fix
  • 20230422-textarea-limits
  • alt-key-bindings-up-down
  • area
  • atomic-ids
  • autocomplete
  • avoid-string-realloc
  • bracketed-paste
  • bug/table-viewport
  • bugfix/renderOffByOne
  • bump-deps
  • button
  • calendar-component
  • ci
  • ci/maintenance
  • ci/sync-dependabot-config
  • codepwners
  • color-profile
  • columnsign
  • const-wheel-delta
  • constructors
  • ctrl-h-textinput
  • cursor-data-race
  • custom-filter
  • customizable-validation
  • dateTimePicker
  • delete-word
  • dependabot
  • dependabot-time
  • dependabot-weekly
  • dependabot/github_actions/actions/checkout-3
  • dependabot/github_actions/actions/checkout-4
  • dependabot/github_actions/actions/checkout-5
  • dependabot/github_actions/actions/setup-go-3
  • dependabot/github_actions/actions/setup-go-4
  • dependabot/github_actions/actions/setup-go-5
  • dependabot/github_actions/golangci/golangci-lint-action-3
  • dependabot/github_actions/golangci/golangci-lint-action-4
  • dependabot/github_actions/golangci/golangci-lint-action-5
  • dependabot/github_actions/golangci/golangci-lint-action-6
  • dependabot/go_modules/github.com/aymanbagabas/go-udiff-0.3.1
  • dependabot/go_modules/github.com/charmbracelet/bubbletea-0.22.1
  • dependabot/go_modules/github.com/charmbracelet/bubbletea-0.23.0
  • dependabot/go_modules/github.com/charmbracelet/bubbletea-0.23.1
  • dependabot/go_modules/github.com/charmbracelet/bubbletea-0.23.2
  • dependabot/go_modules/github.com/charmbracelet/bubbletea-0.24.0
  • dependabot/go_modules/github.com/charmbracelet/bubbletea-0.24.2
  • dependabot/go_modules/github.com/charmbracelet/bubbletea-0.25.0
  • dependabot/go_modules/github.com/charmbracelet/bubbletea-0.26.0
  • dependabot/go_modules/github.com/charmbracelet/bubbletea-0.26.1
  • dependabot/go_modules/github.com/charmbracelet/bubbletea-0.26.2
  • dependabot/go_modules/github.com/charmbracelet/bubbletea-0.26.4
  • dependabot/go_modules/github.com/charmbracelet/bubbletea-0.26.5
  • dependabot/go_modules/github.com/charmbracelet/bubbletea-0.26.6
  • dependabot/go_modules/github.com/charmbracelet/bubbletea-0.27.0
  • dependabot/go_modules/github.com/charmbracelet/bubbletea-0.27.1
  • dependabot/go_modules/github.com/charmbracelet/bubbletea-1.0.0
  • dependabot/go_modules/github.com/charmbracelet/bubbletea-1.1.0
  • dependabot/go_modules/github.com/charmbracelet/bubbletea-1.1.1
  • dependabot/go_modules/github.com/charmbracelet/bubbletea-1.2.0
  • dependabot/go_modules/github.com/charmbracelet/bubbletea-1.2.1
  • dependabot/go_modules/github.com/charmbracelet/bubbletea-1.2.2
  • dependabot/go_modules/github.com/charmbracelet/bubbletea-1.2.3
  • dependabot/go_modules/github.com/charmbracelet/bubbletea-1.2.4
  • dependabot/go_modules/github.com/charmbracelet/bubbletea-1.3.4
  • dependabot/go_modules/github.com/charmbracelet/bubbletea-1.3.5
  • dependabot/go_modules/github.com/charmbracelet/bubbletea-1.3.6
  • dependabot/go_modules/github.com/charmbracelet/lipgloss-0.10.0
  • dependabot/go_modules/github.com/charmbracelet/lipgloss-0.11.1
  • dependabot/go_modules/github.com/charmbracelet/lipgloss-0.12.1
  • dependabot/go_modules/github.com/charmbracelet/lipgloss-0.13.0
  • dependabot/go_modules/github.com/charmbracelet/lipgloss-0.13.1
  • dependabot/go_modules/github.com/charmbracelet/lipgloss-0.6.0
  • dependabot/go_modules/github.com/charmbracelet/lipgloss-0.7.0
  • dependabot/go_modules/github.com/charmbracelet/lipgloss-0.7.1
  • dependabot/go_modules/github.com/charmbracelet/lipgloss-0.8.0
  • dependabot/go_modules/github.com/charmbracelet/lipgloss-0.9.0
  • dependabot/go_modules/github.com/charmbracelet/lipgloss-0.9.1
  • dependabot/go_modules/github.com/charmbracelet/lipgloss-1.0.0
  • dependabot/go_modules/github.com/charmbracelet/lipgloss-1.1.0
  • dependabot/go_modules/github.com/charmbracelet/x/ansi-0.1.2
  • dependabot/go_modules/github.com/charmbracelet/x/ansi-0.1.3
  • dependabot/go_modules/github.com/charmbracelet/x/ansi-0.1.4
  • dependabot/go_modules/github.com/charmbracelet/x/ansi-0.10.1
  • dependabot/go_modules/github.com/charmbracelet/x/ansi-0.3.0
  • dependabot/go_modules/github.com/charmbracelet/x/ansi-0.3.1
  • dependabot/go_modules/github.com/charmbracelet/x/ansi-0.3.2
  • dependabot/go_modules/github.com/charmbracelet/x/ansi-0.4.2
  • dependabot/go_modules/github.com/charmbracelet/x/ansi-0.4.5
  • dependabot/go_modules/github.com/charmbracelet/x/ansi-0.5.1
  • dependabot/go_modules/github.com/charmbracelet/x/ansi-0.5.2
  • dependabot/go_modules/github.com/charmbracelet/x/ansi-0.6.0
  • dependabot/go_modules/github.com/charmbracelet/x/ansi-0.7.0
  • dependabot/go_modules/github.com/charmbracelet/x/ansi-0.8.0
  • dependabot/go_modules/github.com/charmbracelet/x/ansi-0.9.2
  • dependabot/go_modules/github.com/charmbracelet/x/ansi-0.9.3
  • dependabot/go_modules/github.com/mattn/go-runewidth-0.0.14
  • dependabot/go_modules/github.com/mattn/go-runewidth-0.0.15
  • dependabot/go_modules/github.com/mattn/go-runewidth-0.0.16
  • dependabot/go_modules/github.com/muesli/termenv-0.14.0
  • dependabot/go_modules/github.com/muesli/termenv-0.15.0
  • dependabot/go_modules/github.com/muesli/termenv-0.15.1
  • dependabot/go_modules/github.com/muesli/termenv-0.15.2
  • dependabot/go_modules/github.com/muesli/termenv-0.16.0
  • dependabot/go_modules/github.com/rivo/uniseg-0.4.6
  • dependabot/go_modules/github.com/rivo/uniseg-0.4.7
  • dependabot/go_modules/github.com/sahilm/fuzzy-0.1.1
  • deprecate-cursor-style
  • develop
  • disable-quit
  • disabled-files
  • divisionByZero
  • dlvhdr/tree-bubble
  • docs
  • docs-validatefunc
  • docs/custom-bubbles-psa
  • dont-show-suggestions-unless-focused
  • drop-naked-returns
  • dualPaneModel
  • empty
  • enhancements
  • eob-align
  • expose_update_suggestions
  • feat-list-is-filtered
  • feat/custom-status-bar-title
  • feat/new-spinners
  • feat/selection
  • feat/table
  • feat/table/set-cursor
  • feat/text-area-multiline-placeholder
  • feature/593-improve-table-tests
  • feature/GetCursorChar
  • feature/fix-list-cursor-pos
  • feature/fix-list-cursor-pos-v2
  • feature/i236-viewport-horizontal-scroll
  • feature/misc-viewport-fixes
  • feature/navigation
  • feature/tableMouseSupport
  • feature/textarea-yoffset-scrolling
  • filepicker
  • filepicker-compact
  • filepicker-edits
  • filepicker-readme
  • filter-text
  • fix-39
  • fix-cursor-SetMode
  • fix-godocs
  • fix-height-calc-method
  • fix-help-center
  • fix-input-set-value
  • fix-key-examples
  • fix-key-unbound-is-not-enabled
  • fix-list
  • fix-negative-repeat
  • fix-out-of-bounds-err
  • fix-prealloc
  • fix-progressbar-default-spring-option
  • fix-row-styles
  • fix-stylefunc-inherit
  • fix-textinput
  • fix-textinput-currentsuggest
  • fix-textinput-setvalue-cursor
  • fix-timer-stop
  • fix/eob-without-line-numbers
  • fix/issue-502-correctly-truncate-escaped-table-cells
  • fix/list-update-bindings-on-setSize
  • fix/progress-colors
  • fix/reset-blink
  • fix/table-allocation
  • fix/table-cursor-out-of-bounds
  • fix/table-height
  • fix/table-keymap-implement-help
  • fix/table-keys
  • fix/text-area-set-width
  • fix_full_help
  • fix_padding_in_titlebar
  • focus-blur
  • focus-blur-syntax
  • fuzzy
  • github-workflow
  • github-workflows
  • go-bump-118
  • godocs-deprecate
  • goodbye-spinner-lifetimes
  • goreleaser
  • height
  • help-fix-sep
  • help-fix-sep-test
  • help-key-bubble
  • highlight
  • housekeeping
  • idomatic-stuff
  • ime
  • improve-docs
  • indeterminate_progress
  • input-cursor
  • input-real-cursor
  • input-validation
  • insert-item-fix
  • insert-key
  • internal-cursor
  • issue-template
  • key-changes-cherry-picked
  • key-matches-multiarg
  • key-unbound-is-not-enabled
  • key/generic-matches
  • layouts
  • lint
  • lint-ci
  • lint2
  • linter
  • linter-rules
  • linters
  • lipgloss
  • lipgloss-renderer
  • list
  • list-bubble
  • list-default-style
  • list-faq
  • list-lint-fixes
  • list-new-rework
  • list-reduce-allocs-in-filter-items
  • live-progress
  • master
  • misc-fixes
  • ml-base-style-width
  • ml-textarea-styling
  • multiline-textinput
  • new-spinner-with-option
  • nextprompt
  • no-items
  • no-items-found
  • nolint-mnd
  • offsetViewportFrame
  • on-first-page
  • original-filtered-index
  • paginator
  • paginator-options
  • paste
  • patch-1
  • performance-scrollfix
  • periods-of-ellipsis
  • picker-height
  • placeholder-text-render
  • progress
  • progress-anim
  • progress-anim-threshold
  • progress-is-complete
  • progress-lipgloss
  • progress-model
  • progress-readme
  • progress-update
  • quit
  • readme
  • readme-badges
  • readme-footer
  • readme-help
  • readme-images
  • readme-key-fix
  • readme-table
  • readme-update
  • refs/tags/v0.10.0
  • refs/tags/v0.10.1
  • refs/tags/v0.10.2
  • refs/tags/v0.10.3
  • refs/tags/v0.11.0
  • refs/tags/v0.12.0
  • refs/tags/v0.13.0
  • refs/tags/v0.14.0
  • refs/tags/v0.14.1
  • refs/tags/v0.15.0
  • refs/tags/v0.16.0
  • refs/tags/v0.16.1
  • refs/tags/v0.17.0
  • refs/tags/v0.17.1
  • refs/tags/v0.18.0
  • refs/tags/v0.19.0
  • refs/tags/v0.20.0
  • refs/tags/v0.21.0
  • refs/tags/v0.7.1
  • refs/tags/v0.7.2
  • refs/tags/v0.7.3
  • refs/tags/v0.7.4
  • refs/tags/v0.7.5
  • refs/tags/v0.7.6
  • refs/tags/v0.7.7
  • refs/tags/v0.7.8
  • refs/tags/v0.7.9
  • refs/tags/v0.8.0
  • refs/tags/v0.9.0
  • refs/tags/v2.0.0-alpha.1
  • refs/tags/v2.0.0-alpha.2
  • refs/tags/v2.0.0-beta.1
  • remove-stylefunc
  • responsive-images
  • return-table-columns
  • revert-239-internal-cursor
  • revert-300-patch-1
  • revert-442-truncate-textinput
  • router
  • save-key
  • scroll
  • scrolls
  • set-columns
  • set-custom-table-height
  • short-viewport-bugfix
  • softlint
  • spinner-cleanup
  • spinner-comments
  • spinner-fix-obsolete-doc
  • spinner-id
  • spinner-improvements
  • spinner-rework
  • stable-v0.12.1
  • stopwatch
  • stopwatch-id
  • streamline-spinner
  • support_autocompletion
  • table-add-stylefunc
  • table-help
  • table_performance
  • table_style_ext
  • tag-stopwatch-n-timer
  • teacup
  • term-input-loop
  • test-render-row
  • test/text-area-convert-existing
  • testindex
  • texinput-cleanup
  • textarea
  • textarea-cursor
  • textarea-details
  • textarea-matched-suggestions-out-of-range
  • textarea-newlines
  • textarea-paste
  • textarea-placeholder
  • textarea-placeholder-color
  • textarea-word
  • textarea-zero-limit
  • textarea/set-vp-content
  • textinput
  • textinput-ctrl-arrows
  • textinput-cursor
  • textinput-cursormode
  • textinput-echo
  • textinput-expose-sugs
  • textinput-fix
  • textinput-fix-render
  • textinput-keybindings
  • textinput-placeholder
  • textinput-reduce-alloc
  • textinput-regression
  • textinput-space-fix
  • textrea-buffer-fix
  • timer
  • timer-id
  • timer-updates
  • truncate-textinput
  • typo-textinput
  • uniseg-textinput
  • update-contributing
  • update-position-constant-in-join-horizontal
  • updates
  • upgrade-tea
  • use-lipgloss-table
  • use-term
  • use_atomic_for_counting
  • v2-area
  • v2-deprecated
  • v2-easier-keymatch
  • v2-exp
  • v2-exp-table-tests
  • v2-exp-update
  • v2-generics
  • v2-go-bump
  • v2-help-light-dark
  • v2-image
  • v2-key-id
  • v2-lipgloss
  • v2-mini-tidy
  • v2-nil-cursors
  • v2-progress
  • v2-real-textarea
  • v2-remove-deprecated
  • v2-set-lines-vp
  • v2-setpromptfunc
  • v2-table
  • v2-textarea-adjustment
  • v2-textarea-api
  • v2-textarea-cursor
  • v2-textarea-moveto
  • v2-tidy
  • v2-tidy-again
  • v2-virtualcursor
  • validate
  • vertical-scrollbar
  • viewport
  • viewport-bounding
  • viewport-deprecation
  • viewport-final-line-fix
  • viewport-fixes
  • viewport-panic-fix
  • viewport-scroll
  • viewport-sizing
  • viewport-wrap
  • viewport/gutter-nil
  • vim
  • vp-help
  • wcwidth

22 Jan 2024 05:04PM UTC coverage: 47.09% (+1.4%) from 45.641%
7614727746

Pull #427

github

maaslalani
perf: switch to `uniseg.StringWidth`
Pull Request #427: Implement Memoization to Speed Up Textarea Rendering

1230 of 2612 relevant lines covered (47.09%)

80.91 hits per line

Relevant lines Covered
Build:
Build:
2612 RELEVANT LINES 1230 COVERED LINES
80.91 HITS PER LINE
Source Files on bug/831/slow-textarea-performance
  • Tree
  • List 11
  • Changed 1
  • Source Changed 0
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
7614727746 bug/831/slow-textarea-performance perf: switch to `uniseg.StringWidth` Pull #427 22 Jan 2024 05:05PM UTC maaslalani github
47.09
7614612558 bug/831/slow-textarea-performance fix: soft-wrapped hidden line numbers Pull #427 22 Jan 2024 04:56PM UTC maaslalani github
47.09
7614486111 bug/831/slow-textarea-performance fix: minor changes to memoization Pull #427 22 Jan 2024 04:45PM UTC maaslalani github
47.11
See All Builds (1699)

Badge your Repo: bubbles

We detected this repo isn’t badged! Grab the embed code to the right, add it to your repo to show off your code coverage, and when the badge is live hit the refresh button to remove this message.

Could not find badge in README.

Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

Refresh
  • Settings
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc