Note
This repo use a language which is a very small subset of rust
called nano rust
fn factorial(x) {
// Conditionals are supported!
if x == 0 {
1
} else {
x * factorial(x - 1)
}
}
// The main function
fn main() {
let three = 3;
let meaning_of_life = three * 14 + 1;
print("Hello, world!");
print("The meaning of life is...");
if meaning_of_life == 42 {
print(meaning_of_life);
} else {
print("...something we cannot know");
print("However, I can tell you that the factorial of 10 is...");
// Function calling
print(factorial(10));
}
}
This repo is a template for tower-lsp
, a useful github project template which makes writing new language servers easier.
pnpm i
cargo build
- Open the project in VSCode:
code .
- In VSCode, press F5 or change to the Debug panel and click Launch Client.
- In the newly launched VSCode instance, open the file
examples/test.nrs
from this project. - If the LSP is working correctly you should see syntax highlighting and the features described below should work.
Note
If encountered errors like Cannot find module '/xxx/xxx/dist/extension.js'
please try run command tsc -b
manually, you could refer #6 for more details
- Make sure all dependency are installed.
- Make sure the
nrs-language-server
is under yourPATH
pnpm run package
code --install-extension nrs-language-server-${version}.vsix
, theversion
you could inspect in file system.- Restart the
VsCode
, and write a minimalnano rust
file, then inspect the effect.
For other editor, please refer the related manual, you could skip steps above.
This repo use a language nano rust
which first introduced by chumsky . Most common language feature has been implemented, you could preview via the video below.
-
semantic token
make sure your semantic token is enabled, you could enable yoursemantic token
by adding this line to yoursettings.json
{
"editor.semanticHighlighting.enabled": true,
}
- syntactic error diagnostic
syntactic.mp4
- code completion
Peek.2022-03-06.21-47.mp4
- go to definition
definition.mp4
- find reference
reference.mp4
- rename