Skip to content

feat: Simplex manifest discovery and client configuration - #8

Merged
gerau merged 1 commit into
masterfrom
feat/project-config
Jul 27, 2026
Merged

feat: Simplex manifest discovery and client configuration#8
gerau merged 1 commit into
masterfrom
feat/project-config

Conversation

@KyrylR

@KyrylR KyrylR commented Jul 27, 2026

Copy link
Copy Markdown
Collaborator

Import roots were previously derived from the directory containing the open file, with unstable compiler features hardcoded to UnstableFeatures::all(). Neither matched how simplex actually builds a package, and neither was configurable.

Adds a project model (src/project.rs) and a settings model (src/config.rs), and wires both into parse_program:

  • Finds the nearest Simplex.toml (or simplex.toml) in the file's ancestors, honours build.src_dir, and resolves [dependencies] recursively, including transitive path dependencies and git dependencies installed under deps/-.
  • Dependency mappings are context-scoped, so a dependency's own imports resolve against its package rather than the root one.
  • Client settings arrive via initialization_options or workspace/didChangeConfiguration, accepted both wrapped in a simplicityhl key (VS Code) and as the bare section.
  • Manual project.dependencies supplement the manifest and override it on a colliding alias/context pair.
  • experimentalFeatures.imports now drives UnstableFeature::Imports rather than enabling every unstable feature unconditionally.
  • Project errors, such as a configured manifestPath that does not exist, surface as diagnostics instead of being swallowed.
  • Configuration, workspace-folder and watched-file changes re-analyse the open documents.

Not implemented:

  • ProjectContext::dependency_aliases - only import-path completion uses it, which lands with the multi-file analysis.

@KyrylR
KyrylR requested a review from gerau July 27, 2026 11:50
@KyrylR
KyrylR force-pushed the feat/project-config branch from ff226f3 to 894d449 Compare July 27, 2026 11:59
Base automatically changed from chore/cleanup to master July 27, 2026 12:38
Comment thread src/project.rs Outdated
@KyrylR
KyrylR force-pushed the feat/project-config branch from 894d449 to ca91e0f Compare July 27, 2026 14:36
@gerau

gerau commented Jul 27, 2026

Copy link
Copy Markdown
Collaborator

ACK ca91e0f; code review, tested locally with vscode extension

@gerau
gerau merged commit 3e77a2a into master Jul 27, 2026
9 checks passed
@gerau
gerau deleted the feat/project-config branch July 27, 2026 16:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants