Skip to content

Conversation

@sumrdev
Copy link

@sumrdev sumrdev commented Jan 7, 2026

This adds vtsls - a typescript lsp that also works with vue.
I also added a switch if you want to install the vue grammar or not since vtsls works as a standalone ts lsp as well.

This is my first PR to any FOSS project so bear with me

  • I have updated the [changelog] as per my changes
  • I have tested, and self-reviewed my code
  • My changes fit guidelines found in [hacking nvf]
  • Style and consistency
    • I ran Alejandra to format my code (nix fmt)
    • My code conforms to the [editorconfig] configuration of the project
    • My changes are consistent with the rest of the codebase
  • If new changes are particularly complex:
    • My code includes comments in particularly complex areas
    • I have added a section in the manual
    • (For breaking changes) I have included a migration guide
  • Package(s) built:
    • .#nix (default package)
    • .#maximal
    • .#docs-html (manual, must build)
    • .#docs-linkcheck (optional, please build if adding links)
  • Tested on platform(s)
    • x86_64-linux
    • aarch64-linux
    • x86_64-darwin
    • aarch64-darwin

Add a 👍 reaction to pull requests you find important.

@github-actions
Copy link

github-actions bot commented Jan 7, 2026

🚀 Live preview deployed from 5b5548d

View it here:

Debug Information

Triggered by: horriblename

HEAD at: feat/vtsls-support

Reruns: 1854

horriblename
horriblename previously approved these changes Jan 8, 2026
Copy link
Collaborator

@horriblename horriblename left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM thanks!

auto-merge was automatically disabled January 8, 2026 19:03

Head branch was pushed to by a user without write access

@sumrdev sumrdev force-pushed the feat/vtsls-support branch from f528a7a to ea7f4ee Compare January 8, 2026 19:03
github-actions bot pushed a commit that referenced this pull request Jan 8, 2026
@horriblename horriblename enabled auto-merge (squash) January 10, 2026 01:43
@horriblename horriblename disabled auto-merge January 10, 2026 01:43
github-actions bot pushed a commit that referenced this pull request Jan 10, 2026
};
};

config = mkIf cfg.enable (mkMerge [
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there should probably be a

mkIf cfg.extraVueSupport {
  vim.languages.ts.lsp.servers = ["vtsls"];
};

_file = ./ts.nix;
options.vim.languages.ts = {
enable = mkEnableOption "Typescript/Javascript language support";
extraVueSupport = mkEnableOption "Vue support for vtsls";
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@NotAShelf should vue be in it's own language module? since astro/svelte has their own

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the main argument for having it in the typescript model is because: "Since v3.0.0, the Vue language server requires vtsls to support TypeScript." (source).

Both astro and svelte have their standalone LSPs because they deviate from regular ts / tsx so much.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants