Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
9b117c7
feat: add call_arg annotation attribute
Pollux12 Jun 8, 2026
92779d2
feat: collect metadata from annotations
Pollux12 Jun 8, 2026
872aa72
feat: use call_arg annotations for string contexts
Pollux12 Jun 8, 2026
d1dec21
feat: use call_arg annotations for completions
Pollux12 Jun 8, 2026
33e1661
feat: use call_arg annotations for colors and code lenses
Pollux12 Jun 8, 2026
0e87cd7
feat: use call_arg annotations for vgui
Pollux12 Jun 8, 2026
f8297d4
feat: various remaining call_arg cases and docs
Pollux12 Jun 8, 2026
fe57349
test: use actual annotations
Pollux12 Jun 8, 2026
e44692c
feat: support call_arg overloads
Pollux12 Jun 9, 2026
6fe02b8
chore: never cache std lib and remove languages
Pollux12 Jun 10, 2026
955496b
feat: add inferred defaults system
Pollux12 Jun 10, 2026
b75354c
feat: display default values in hover information
Pollux12 Jun 10, 2026
55cfead
test: add tests for inferred string defaults
Pollux12 Jun 10, 2026
f47f787
fix: tables could bind to unknown key
Pollux12 Jun 11, 2026
e4c0fba
chore: improve benchmark validation
Pollux12 Jun 11, 2026
6ccb7ff
fix: table shape collapsing to any due to guarded statement
Pollux12 Jun 11, 2026
1e7bd76
fix: codelens could be unstable after undo
Pollux12 Jun 11, 2026
9fd6600
test: add generic return definition test
Pollux12 Jun 11, 2026
bc70e63
fix: nil checks not preventing undefined global in some cases
Pollux12 Jun 11, 2026
47c45a0
fix: type guard narrowing persisting after scope
Pollux12 Jun 11, 2026
2f8f924
fix: error or nested halts wouldn't prevent nil
Pollux12 Jun 11, 2026
4f39db6
feat: require can now define unknown object using passed string as name
Pollux12 Jun 12, 2026
5c19f1e
fix: alias to class not showing original
Pollux12 Jun 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ repos:
rev: v6.0.0
hooks:
- id: trailing-whitespace
exclude: '(^crates/glua_ls/std_i18n/.*\.yaml$|^\.github/skills/.*)'
exclude: '^\.github/skills/.*'
- id: end-of-file-fixer
exclude: '(^crates/glua_ls/std_i18n/.*\.yaml$|^\.github/skills/.*)'
exclude: '^\.github/skills/.*'
- id: fix-byte-order-marker
- id: mixed-line-ending
args: [--fix=lf]
Expand Down
163 changes: 2 additions & 161 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ glua_diagnostic_macro = { path = "crates/glua_diagnostic_macro", version = "0.1.
schema_to_glua = { path = "crates/schema_to_glua", version = "0.1.5" }

# external
aho-corasick = "1.1.3"
lsp-server = "0.7.9"
tokio = { version = "1.48", features = ["full"] }
serde = { version = "1.0.228", features = ["derive"] }
Expand All @@ -30,7 +31,6 @@ lsp_types = { version = "0.1.0", package = "emmy_lsp_types" }
schemars = "1.0.4"
regex = "1"
internment = { version = "0.8.6", features = ["arc"] }
rust-i18n = "3"
log = "0.4.28"
fern = "0.7.1"
chrono = "0.4.42"
Expand Down Expand Up @@ -140,4 +140,4 @@ debug = false

[profile.debugging]
inherits = "dev"
debug = true
debug = true
37 changes: 35 additions & 2 deletions crates/glua_check/src/init.rs
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ pub async fn load_workspace(
.collect::<Vec<WorkspaceFolder>>();
let mut analysis = EmmyLuaAnalysis::new();
analysis.update_config(emmyrc.clone().into());
analysis.init_std_lib(None);
analysis.init_std_lib();

// Add GMod annotations as library workspace if provided
if let Some(annotations_path) = gmod_annotations {
Expand All @@ -115,8 +115,41 @@ pub async fn load_workspace(
}
}

// Canonicalize main workspace root for self-overlap detection.
let main_root_canon = main_path.canonicalize().ok();

for lib in &emmyrc.workspace.library {
let path = PathBuf::from(lib.get_path().clone());
let configured = lib.get_path();
let path = PathBuf::from(configured);

// Filter invalid library paths: empty, nonexistent, not a directory,
// or resolves to the same path as the main workspace root (self-overlap
// would cause a redundant full re-scan of the workspace).
if configured.trim().is_empty() {
log::warn!(
"Skipping empty library path from config entry: {:?}",
configured
);
continue;
}
if !path.exists() {
log::warn!("Skipping library path that does not exist: {:?}", path);
continue;
}
if !path.is_dir() {
log::warn!("Skipping library path that is not a directory: {:?}", path);
continue;
}
if let (Ok(lib_canon), Some(ws_canon)) = (path.canonicalize(), &main_root_canon)
&& lib_canon == *ws_canon
{
log::warn!(
"Skipping library path that resolves to the workspace root (self-overlap): {:?}",
path
);
continue;
}

analysis.add_library_workspace(path.clone());
workspace_folders.push(WorkspaceFolder::new(path.clone(), true));
}
Expand Down
Loading
Loading