Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 4fe7e51

Browse files
committed
docs: luau-lsp example
1 parent 67c5a5d commit 4fe7e51

File tree

2 files changed

+88
-1
lines changed

2 files changed

+88
-1
lines changed

‎docs/src/Examples/luau-lsp.md

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
## Running Luau
2+
3+
Luau can be interesting for its typing system.
4+
However, for it to be useful, it needs to be integrated both in the bevy lua runtime and also a language server much like luau-lsp.
5+
6+
This example will provide snippets to integrate `luau-lsp` and `bevy_mod_scripting` within VSCode
7+
8+
### Luau package import
9+
10+
The first step for packages to load each other is to enable the `unsafe_lua_modules` in `cargo.toml`, example:
11+
```toml
12+
[dependencies]
13+
bevy_mod_scripting = { version = "0.13.0", features = ["luau","unsafe_lua_modules"] }
14+
```
15+
16+
The second step to make luau`require("./source/to/package")` work within bevy, the `LUA_PATH` needs to be exported as an environment variable. This also probably needs to be initialized at runtime as the location of the bevy executable may change.
17+
Here is an example snippet that updates the path at runtime.
18+
19+
```rust
20+
fn main() {
21+
// Set the LUA_PATH env variable
22+
let mut assets_path = std::env::current_dir().expect("Failed to get current dir");
23+
assets_path.push("assets");
24+
25+
let assets_str = assets_path
26+
.to_str()
27+
.expect("Failed to convert path to str")
28+
.replace("\\", "/");
29+
30+
let luau_package_path = format!("{}{}", assets_str, "/?.luau");
31+
32+
unsafe{
33+
env::set_var("LUA_PATH", luau_package_path);
34+
}
35+
36+
let mut app = App::new();
37+
app.add_plugins(BMSPlugin);
38+
39+
// More code adding luau scripts, callbacks and else.
40+
41+
app.run();
42+
}
43+
44+
```
45+
46+
Assuming a folder structure that is the following,
47+
- assets
48+
- scenarios
49+
- scenario.luau
50+
- scripts
51+
- Template.luau
52+
53+
`scenario.luau` should be able to import Template.luau using the following lines:
54+
55+
```lua
56+
local Template = require("./../scripts/Template")
57+
```
58+
59+
60+
### Luau-lsp
61+
62+
To have luau autocomplete and type check within VSCode install the Luau Language Server plugin.
63+
64+
To avoid excessive underlines within the luau-lsp, a `.luaurc` file needs to be added in the root of the project.
65+
66+
`.luaurc`
67+
```json
68+
{
69+
"languageMode": "strict",
70+
"lint": { "*": true, "LocalUnused": false, "FunctionUnused": false },
71+
"lintErrors": true,
72+
"globals": ["world" , "construct", "types", "package"]
73+
}
74+
```
75+
76+
Additionally, because luau-lsp is focused towards Roblox plugins, additional VSCode config should be inserted to avoid incorrect autocomplete.
77+
78+
`.vscode/settings.json`
79+
```json
80+
{
81+
"luau-lsp.platform.type": "standard",
82+
"luau-lsp.types.robloxSecurityLevel": "None",
83+
"luau-lsp.sourcemap.enabled": false,
84+
"luau-lsp.sourcemap.autogenerate": false
85+
}
86+
```

‎docs/src/SUMMARY.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Summary
1+
****# Summary
22

33
[Installation](./Summary/installation.md)
44

@@ -12,6 +12,7 @@
1212
- [Script ID Mapping](./Summary/script-id-mapping.md)
1313
- [Script Systems](./ScriptSystems/introduction.md)
1414
- [Examples](./Examples/introduction.md)
15+
- [Luau-lsp integration](./Examples/luau-lsp.md)
1516

1617
# Scripting Reference
1718

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /