Skip to content

Conversation

@JoeKar
Copy link
Member

@JoeKar JoeKar commented Jul 8, 2023

This helps in e.g. HTMLs and CPPs (templates), but can create some unexpected underlines in case of shift operations in e.g. C(PP)s.
Maybe a better option is to make them configurable. What do you think about?

@zyedidia
Copy link
Member

zyedidia commented Jul 8, 2023

Yes it should probably be configurable based on language. For languages where < and > are used as both comparison operators and template parameters (C++, Rust) maybe we should err on the side of not enabling it? Do you know what other editors like VS Code do in this situation?

@JoeKar
Copy link
Member Author

JoeKar commented Jul 18, 2023

Yes it should probably be configurable based on language.

I will give it a try.

For languages where < and > are used as both comparison operators and template parameters (C++, Rust) maybe we should err on the side of not enabling it?

Sounds a bit more complicated and maybe something in the future in case the configurable brace pairs are available.

Do you know what other editors like VS Code do in this situation?

Since VSCode is language driven by default it has his config available per language.

@JoeKar JoeKar force-pushed the feature/brace-pairs branch from 85cc100 to 92ad383 Compare July 18, 2023 20:26
@JoeKar JoeKar changed the title buffer: Extend brace pairs by < & > options: Add bracepairs to control the start and end character of the pairs Jul 18, 2023
"backup": true,
"backupdir": "",
"basename": false,
"bracepairs": []interface{}{"()", "{}", "[]"},
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I had a lot of trouble to get it somehow working with the default and a user-defined configuration in case it was defined as []string{"()", "{}", "[]"}, because then the whole type conversion kicks in.

}

func validateBracePairs(option string, value interface{}) error {
_, ok := value.([]interface{})
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again, value.([]string) was too tricky so far.

_, ok := value.([]interface{})

if !ok {
return errors.New("Expected slice of strings")
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

...and thus error message doesn't fit exactly, because now it expects slice of interfaces.

@dustdfg
Copy link
Contributor

dustdfg commented May 2, 2024

Do you know what other editors like VS Code do in this situation?

Since VSCode is language driven by default it has his config available per language.

Did you meant it uses LSP?

@JoeKar
Copy link
Member Author

JoeKar commented May 2, 2024

No, I was referring to the Language Configuration Guide. So VSCode or more precisely his configuration can define all that stuff per language.

@dustdfg
Copy link
Contributor

dustdfg commented May 2, 2024

No, I was referring to the Language Configuration Guide. So VSCode or more precisely his configuration can define all that stuff per language.

Looks like a good thing for micro!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants