feat(textarea): Add comprehensive text selection support #825
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR implements comprehensive text selection functionality for the textarea component, including mouse and keyboard interaction, visual highlighting, and clipboard operations.
Background
Text selection is a fundamental feature users expect in text input areas. While issue #700 was closed citing terminal compatibility concerns, this implementation successfully provides native selection support that works across modern terminal emulators with Bubble Tea v2's enhanced mouse and rendering capabilities.
Implementation Details
Core Features
Mouse Selection
Keyboard Selection
Clipboard Integration
Visual Feedback
Technical Approach
Added selection state to Model struct without breaking existing API. New Position type for row/col coordinates. Public methods for selection management.
Testing
Extensively tested with various terminal emulators, different text content, edge cases, and integration with existing features.
Breaking Changes
None. All existing functionality remains unchanged. Selection features are opt-in.
Example Usage
See examples/textarea-selection/main.go for a complete working example.
References
Notes for Reviewers
While the maintainers previously expressed concerns about terminal compatibility, this implementation leverages Bubble Tea v2's improved mouse handling and works reliably in modern terminals.