-
Notifications
You must be signed in to change notification settings - Fork 3.7k
CodeContinue: LLM powered code completion tool #9277
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
base: master
Are you sure you want to change the base?
Conversation
Package ReviewChannel DiffRemoved (none), changed (none), added CodeContinue. Review for CodeContinue 1.0.6 |
|
Thanks for clarifying the tab key conflict. That's fine, it's normal for a "completions provider" to want to use that, and if it can be changed that's even better. The CI report does have a few other important points though. I would also strongly recommend opting into python 3.8 (example). Your requirements in the readme state ST4, so put the minimum build version here as 4000. You could exclude the videos from the package using the .gitattributes file. Instead of languages and matching syntax files by the name, it's usually more robust to match on syntax scopes (using scope_name and match_selector). And "in" check also risks matching dialects that don't actually work. Also consider languages like Go, where you perhaps don't want to match "Go HTML templates". I'm not sure I've seen a package with an installer GUI before. How is the Tkinter dependency loaded (I don't see a dependencies.json for example)? If this is just about configuring the package, we don't usually recommend packages introducing new UI patterns that obscure the standard way users interact with Sublime Text and its settings. Perhaps that could even be a separate package. @FichteFoll have thoughts on this topic? How does the node project in the experiments subdirectory figure into this? |
|
Regarding the tab key binding: That is an actual problem because of the way key bindings are resolved. I see no reason to believe that this key binding would not eat all "tab" key presses and thus prevent committing completions via tab or adjusting indentation. This may not conflict with a lot of plugins (because they are also not allowed to blindly bind tab), but it will conflict with default bindings. Regarding tkinter: afaik tkinter is not included in the bundled Python runtime, so it needs to be executed in the system Python runtime. Regardless, from what I saw, the installers (GUI or not) are not supposed to be used as Python plugins and are rather some custom entry point to install the very package. This seems very roundabout, though, because:
I did not check much more of the internals of the package, so this is not a thorough review from me. |
|
Hi @braver and @FichteFoll , Thanks for your valuable feedback. I have decided to remove the keybindings (user can set up as required). The installers were for tests and easy setup of v1 endpoints. They do not interfare with ST. But yes it's better to remove them. They have been moved to a subfolder as suggested. Update Summary
Let me know if anything else requires review. |
repository/c.json
Outdated
| @@ -4,7 +4,10 @@ | |||
| { | |||
| "name": "C Improved", | |||
| "details": "https://github.com/abusalimov/SublimeCImproved", | |||
| "labels": ["language syntax", "c"], | |||
| "labels": [ | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like you formatted the entire file, please restrict that to just your package.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, sorry got carried away with Tab completions. Let me fix.
|
Alright, that's a lot easier to read at least 😄 Some small bits remaining then: While your preferred mode of configuration is via the wizard, I would still expose the user's "raw" settings via the package settings menu. That makes it easier to reference specific settings later, or make a correction, without going through the entire wizard. (example) Similarly, the keybindings file is now invisible to users. You should expose that in the package settings menu, and preferably also via the command palette. (example) Also remember that the default package settings are not writable and will not persist... I'm actually not sure if Please put a debug settings around writing to the console. Under normal conditions (ie. when nothing's wrong) packages should be mostly silent there. |
|
@braver,
Please check and let me know. |
It does. |
Interesting. The API is so extensive right now (and the docs for it so overwhelming) I don't think I've ever used more than 10% of it 😅 |
For keybindings it's usually preferable to open the user's global (ie. not package-specific) keybindings file on the right. You usually want to manage all your bindings in one place, because you've only got one keyboard and typically want to have a clear overview of what you've set to which key combo. example Also please revert the formatting of the repository file in this PR. |
|
@braver , Pushed the fix for keybinding ( tested on Windows for now -- hope it should be fine for Mac and Ubuntu ). Please check now. |
My package is codeContinue.
Disclaimer: I am aware of potential key binding conflicts, however
Tabkey rarely will be creating issue. Also it is only triggered when suggested code phantom appears while coding. We have tested it rigorously, and we beleive it should not create issues. Having said that, the instructions have been added to change it in the first run -- in case any conflicts exists. I hope the package will not be declined.There are no packages like it in Package Control.
*) If you do need a context menu, make sure the menu applies to the cursor
context, and the commands are conditional. Space in this menu is limited!
**) There aren't enough keys for all packages, so you risk overriding those
of other packages. You can put commented out suggestions in a keymap file,
and/or explain how to create bindings in your README.
***) Syntaxes should work in any color scheme the user chooses.
For bonus points also consider how the review guidelines apply to your package:
https://docs.sublimetext.io/reference/package-control/reviewing.html