diff options
author | Ivan Yonchovski <yyoncho@users.noreply.github.com> | 2022-06-13 12:33:44 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-13 11:33:44 +0200 |
commit | b41226001ce596fe520fd326a302c6f4e91c2504 (patch) | |
tree | 4c912e5700d255f2e9e85572a01c1ff325a3d45f /drnim | |
parent | a4fdaa88ccfa03bf30113ffc194284fcb45d3054 (diff) | |
download | Nim-b41226001ce596fe520fd326a302c6f4e91c2504.tar.gz |
Initial implementation of nimsuggest v3 (#19826)
* Initial implementation of nimsuggest v3 Rework `nimsuggest` to use caching to make usage of ide commands more efficient. Previously, all commands no matter what the state of the process is were causing clean build. In the context of Language Server Protocol(LSP) and lsp clients this was causing perf issues and overall instability. Overall, the goal of v3 is to fit to LSP Server needs - added two new commands: - `recompile` to do clean compilation - `changed` which can be used by the IDEs to notify that a particular file has been changed. The later can be utilized when using LSP file watches. - `globalSymbols` - searching global references - added `segfaults` dependency to allow fallback to clean build when incremental fails. I wish the error to be propagated to the client so we can work on fixing the incremental build failures (typically hitting pointer) - more efficient rebuild flow. ATM incremental rebuild is triggered when the command needs that(i. e. it is global) while the commands that work on the current source rebuild only it Things missing in this PR: - Documentation - Extensive unit testing. Although functional I still see this more as a POC that this approach can work. Next steps: - Implement `sug` request. - Rework/extend the protocol to allow better client/server communication. Ideally we will need push events, diagnostics should be restructored to allow per file notifications, etc. - implement v3 test suite. - better logging * Add tests for v3 and implement ideSug * Remove typeInstCache/procInstCache cleanup * Add ideChkFile command * Avoid contains call when adding symbol info * Remove log * Remove segfaults
Diffstat (limited to 'drnim')
0 files changed, 0 insertions, 0 deletions