✨ Column selection
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
Research direction
No files or tests are named in the issue. Start by tracing CodeEditTextView’s existing selection, cursor, keyboard, mouse, and clipboard entry points; done means column selection works for the listed input methods and editing operations, with a crosshair cursor, clipboard support, compatibility coverage, and user-guide documentation.
Written by the indexing model from the issue text.
Description
Description
We need to implement column selection (also known as block selection or rectangular selection) in CodeEdit, allowing users to select text in a columnar fashion. This feature is particularly useful for editing structured text, such as code, where the same changes need to be applied to multiple lines simultaneously.
Triggering Column Selection:
- Users should be able to initiate column selection by either
- holding down the
⌥ Optionkey and dragging the mouse or - using the keyboard with
⇧ Shift+⌃ Control+▲ up/▼ downarrow keys
- holding down the
Visual Indication:
- There should be a clear visual indication that column selection mode is active by changing the cursor to crosshairs
Editing Behavior:
- When text is typed while in column selection mode, it should replace the selected text in all lines within the selection.
- Deleting should remove the selected block of text across all lines.
- Navigating and selection with the arrow keys should apply to each cursor as expected, including with modifier keys held
Clipboard Support:
- Copying should retain the multi-line selection.
Additional Context
This feature is common in many text editors and IDEs, such as Visual Studio Code, Sublime Text, and JetBrains IDEs, and can significantly enhance productivity, especially when working with large codebases.
Possible Challenges
- Ensuring that column selection works seamlessly with all supported languages and file types.
- Managing edge cases, such as selections that start or end in the middle of a tab character or mixed tab/space indentations.
References
Tasks
- Implement the core column selection functionality.
- Change cursor when ⌥ is held and over editor to indicate column selection mode.
- Ensure clipboard operations work with column selections.
- Test for compatibility with other editor features and languages.
- Document the feature in the CodeEdit user guide.
Screenshots
https://github.com/user-attachments/assets/55c15e53-d341-417e-81d6-9aaccbe1fc9f
- Dominant language
- Swift
- Stars
- 182
- Forks
- 57
- PR merge metrics
- No merged PRs in 30d
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from CodeEditApp/CodeEditTextView
-
Difficulty 4/5 3-5 days Newbie friendliness 48/100
CodeEditApp/CodeEditTextView#124 ·
-
bug
Difficulty 3/5 1-2 days Newbie friendliness 48/100
CodeEditApp/CodeEditTextView#121 ·
-
enhancement
Difficulty 5/5 Over a week Newbie friendliness 28/100
CodeEditApp/CodeEditTextView#119 ·
-
enhancement
Difficulty 5/5 Over a week Newbie friendliness 35/100
CodeEditApp/CodeEditTextView#106 ·
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
All issues in CodeEditApp/CodeEditTextView
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
manaflow-ai/cmux#13763 ·
-
type: feature request
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
googleapis/google-cloud-swift#1036 · 1 comment ·
-
Difficulty 1/5 Under an hour Newbie friendliness 78/100
wultra/mtoken-sdk-ios#253 ·
-
area:dictation documentation P2
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
uttrflow/uttrflow-swift#1180 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100