Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

✨ Matching Tag/Bracket Highlighting #67

Closed
austincondiff opened this issue Oct 1, 2022 · 2 comments · Fixed by #186
Closed

✨ Matching Tag/Bracket Highlighting #67

austincondiff opened this issue Oct 1, 2022 · 2 comments · Fixed by #186
Labels
enhancement New feature or request

Comments

@austincondiff
Copy link
Collaborator

austincondiff commented Oct 1, 2022

When the cursor moves to a bracket, the matching bracket temporarily highlights to show the user the opposite bracket.

Screen.Recording.2022-10-03.at.2.34.17.AM.mov
@austincondiff austincondiff changed the title Matching Tag/Bracket Highlighting ✨ Matching Tag/Bracket Highlighting Oct 1, 2022
@austincondiff austincondiff added enhancement New feature or request hacktoberfest labels Oct 1, 2022
@thecoolwinter
Copy link
Collaborator

thecoolwinter commented Oct 2, 2022

Duplicate of #39, adding the hacktoberfest tag there.

Edit: Misunderstood the title, this would be awesome! Assuming something like the curse brackets in this screenshot.

Screen Shot 2022-10-01 at 8 53 34 PM

@austincondiff
Copy link
Collaborator Author

austincondiff commented Oct 2, 2022

Description updated.

thecoolwinter added a commit that referenced this issue May 8, 2023
### Description

Implements bracket/pair highlighting as described in #67. Adds a few
functions to `STTextViewController`:
- `highlightSelectionPairs()`
- Highlights selection pairs from the current selection. This is called
whenever the selection is updated and handles determining whether or not
the selection highlight should be applied. It makes use of
`findClosingPair(_ close: String, _ open: String, from: Int, limit: Int,
reverse: Bool) -> Int?` to determine the indices of the opening and
closing pairs.
- `highlightRange(_ range: NSTextRange, scrollToRange: Bool = false)`
- Applies a highlight to the given range, determined by the
`bracketPairHighlight` property. Also handles removing animated layers
if needed (as in the case of the `flash` highlight type).

There are two highlight types:
- Flash: Flashes a yellow rectangle below the given range with an
animation. The highlight disappears after 0.75s. This is modeled closely
to the Xcode version.
- Bordered: Adds a border around both the opening and closing bracket
pair. These borders only disappear when the selection changes.
- Underline: Adds an underline to both the opening and closing bracket
pair. These borders only disappear when the selection changes.
All highlight types are documented in the `BracketPairHighlight` enum.

Highlighted pairs are the same set of pairs used for the pair
autocomplete filter:
- `{` `}`
- `[` `]`
- `<` `>`
- `(` `)`

This feature can also be disabled by setting the `bracketPairHighlight`
property on `CodeEditTextView` to `nil`.

### Related Issues

* closes #67

### Checklist

<!--- Add things that are not yet implemented above -->

- [x] I read and understood the [contributing
guide](https://github.com/CodeEditApp/CodeEdit/blob/main/CONTRIBUTING.md)
as well as the [code of
conduct](https://github.com/CodeEditApp/CodeEdit/blob/main/CODE_OF_CONDUCT.md)
- [x] The issues this PR addresses are related to each other
- [x] My changes generate no new warnings
- [x] My code builds and runs on my machine
- [x] My changes are all related to the related issue above
- [x] I documented my code

### Screenshots

Box highlight:
<img width="210" alt="Screenshot 2023-05-07 at 8 07 11 PM"
src="https://user-images.githubusercontent.com/35942988/236713451-d74edbbe-b41c-45c4-98e2-bfcef9e84fd6.png">

Flash highlight:


https://user-images.githubusercontent.com/35942988/236056573-ce5f8e61-5ed5-4799-a054-0591cfc7653b.mov

Underline highlight with red color:

<img width="250" alt="Screenshot 2023-05-08 at 2 15 27 PM"
src="https://user-images.githubusercontent.com/35942988/236912499-68665a38-34d2-44fd-b62d-c7ef2f130c7e.png">
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Status: 🏁 Complete
Development

Successfully merging a pull request may close this issue.

2 participants