-
-
Notifications
You must be signed in to change notification settings - Fork 85
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
Language support tables #2010
Comments
Add "example" field with some quick inline example? |
One major drawback is that if you add a new scope / facet in the process of developing a language, you then need to add a field to all existing languages. There are a couple of problems with that:
A couple possible solutions:
|
We're leaning towards implementing the simplest possible version of 3) (structured representations) as our first step. It
Then we'd have the immediate benefit of:
Some drawbacks compared to starting with 1) or 2)
I guess we could add the |
@josharian I'd love your feedback on this one when you get a minute, either in comments here or at a meet-up. It seems there is a possible short-term win here but don't want to lead ourselves to trouble in the long-term |
I can’t quite envision what the long-term trouble would be here. I would say the primary goals are to (a) get anything at all working, and (b) minimize the effort required to update the table. So any design that requires O(n) entries be added, or altered, is strictly worse than one that requires O(1). So I guess I’m partial to partials. I am really excited about this idea. I would love to have a place that I could very easily check every month or two to see what scopes Go is now missing, perhaps because something got added that I wasn’t aware of at the time. |
Oh, and I’m not too worried about needing checkboxes. I suspect that most people who are implementing languages are going to refer to this table a lot and will be excited to update it. |
I added that to discuss label because I might want to take a crack at this sooner than anticipated.
|
Started implementing a new scope handler test representation ``` [Content] const name = "Hello world"; ^^^^^^^^^^^^^ ``` Originally I was thinking of doing `^` for each character. That worked fine until @pokey asked the question about empty ranges which we actually has in a few places. So I switch to a multiline representation of `[---]` where the empty range would be `[]`. ``` [Content] function myFunk() { [------------------- } -] ``` I do wonder if we want to start multiline ranges above the source code and end it below. Makes it so the code is actually inside the range endings. ``` [Content] [------------------- function myFunk() { } -] ``` Relevant issues #1524 #2010 ## Checklist - [x] I have added [tests](https://www.cursorless.org/docs/contributing/test-case-recorder/) - [ ] I have updated the [docs](https://github.com/cursorless-dev/cursorless/tree/main/docs) and [cheatsheet](https://github.com/cursorless-dev/cursorless/tree/main/cursorless-talon/src/cheatsheet) - [-] I have not broken the cheatsheet --------- Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Co-authored-by: Pokey Rule <[email protected]>
The problem
As a contributor, it is hard to know exactly what needs to be implemented for a new language, or what is missing from an existing language. As a user, it is hard to know what our support level is for an existing language.
I really like the support tables in #1911 and #1962. We should formalize these somehow with the following goals:
The solution
There are multiple levels of this solution, in increasing levels of investment
1. Add support tables to our new language PR template
This is the lowest overhead, and has the benefit that it's easy for the contributor and core maintainers to update as a PR progresses.
The drawback is that it's not helpful for users, and doesn't help as much after the initial PR. It's also not formalized in any way
2. Manually add support tables to per-language pages (#1642)
This solution is probably the highest overhead for new language contributors, but doesn't require much investment on our part, and is helpful both for users and for contributors seeing where a language is currently
It also isn't automatically enforced in any way, so could get stale / be wrong just like 1) above
We'd also want to add a checkbox to the PR template saying we've updated this page. Probably just the new-language template but could be the general template
3. Add structured representation of language scope support
We could add types that represent different aspects of scope support. Something like the following
The strong typing would force us not to forget any scopes. The above would be the source of truth from which we could generate the following:
We could also check that test cases exist by adding an optional
supportFacet
field to our recorded test cases, and then checking in CI for a test case that mentions any support face that is marked assupported
The text was updated successfully, but these errors were encountered: