CodeEditApp / CodeEditApp/CodeEditSourceEditor

✨ Placeholder Support

Open
#287 4 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Swift
Stars
719
Forks
160
PR merge metrics
No merged PRs in 30d

Description

### Description

Implement support for placeholders in CodeEdit, similar to Xcode’s `<#placeholder#>` feature. This would allow developers to insert and cycle through editable placeholders in their code, improving productivity and code clarity during development.

### Use Case

This feature would be particularly useful for defining temporary or template-like code constructs, such as:
```swift
let <#name#> = <#value#>
```

Placeholders would:
1. Be highlighted visually.
2. Be navigable (e.g., via Tab key).
3. Allow inline editing to replace the placeholder text.

### Expected Behavior

- When a placeholder is inserted (e.g., `<#placeholder#>`), it should:
- Appear visually distinct (e.g., highlighted with a subtle background color or outline).
- Be editable directly in the code editor.
- Allow navigation between placeholders using keyboard shortcuts like Tab and Shift+Tab.
- Placeholders should support nested constructs (e.g., `let <#name#> = <#type#>(<#arguments#>)`).

### Technical Notes

- Integrate placeholder handling with the current text editing features.
- Consider compatibility with existing syntax highlighting and LSP integration.

### Steps to Implement

1. Define a syntax for placeholders (e.g., `<#placeholder#>`).
2. Update the text editor to recognize and render placeholders.
3. Add keyboard navigation support for placeholders.
4. Ensure placeholder edits are reflected in the editor state.

### Additional Context

This feature would align CodeEdit with Xcode’s behavior, making it a more familiar and seamless experience for developers who work on macOS. It also complements other code editing enhancements, such as autocompletion and LSP support.

### Screenshots

image

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.