utf8proj-lsp

Crates.ioutf8proj-lsp
lib.rsutf8proj-lsp
version0.9.1
created_at2026-01-17 15:22:56.572552+00
updated_at2026-01-17 15:22:56.572552+00
descriptionLanguage Server Protocol implementation for utf8proj
homepage
repositoryhttps://github.com/alanbld/utf8proj
max_upload_size
id2050627
size136,084
Alan Baldassarre (alanbld)

documentation

README

utf8proj-lsp

Language Server Protocol implementation for utf8proj project files.

LSP v0 Scope

This is the initial release of the utf8proj language server. It provides foundational IDE features for .proj files.

Supported Features

Feature Status Description
Diagnostics Full Real-time parse errors and semantic warnings
Hover Full Task info with schedule dates, slack, critical path
Document Symbols Full Navigate profiles, resources, tasks

Diagnostic Parity

LSP diagnostics use the same analysis engine as the CLI (utf8proj check):

  • Same diagnostic codes (E001, W001, H001, I001)
  • Same messages and notes
  • Severity mapping: Error/Warning/Hint/Info

The LSP does not support CLI policy options (--strict, --quiet) since these are CI/CD concerns, not IDE concerns.

File Format Support

Format Extension Status
Native DSL .proj Supported
TaskJuggler .tjp Not supported

TJP support may be added in a future version.

Not Yet Implemented

The following features are planned for future versions:

  • Go to Definition (for task/resource references)
  • Find References
  • Code Completion (keywords, identifiers)
  • Rename Symbol
  • Workspace-wide analysis

Usage

Neovim (with nvim-lspconfig)

local lspconfig = require('lspconfig')
local configs = require('lspconfig.configs')

if not configs.utf8proj then
  configs.utf8proj = {
    default_config = {
      cmd = { 'utf8proj-lsp' },
      filetypes = { 'proj' },
      root_dir = lspconfig.util.find_git_ancestor,
      settings = {},
    },
  }
end

lspconfig.utf8proj.setup{}

Add filetype detection in ~/.config/nvim/filetype.lua:

vim.filetype.add({
  extension = {
    proj = 'proj',
  },
})

VS Code

A VS Code extension is not yet available. Contributions welcome.

Building

cargo build --release -p utf8proj-lsp

The binary will be at target/release/utf8proj-lsp.

Protocol Details

  • Transport: stdio
  • Sync mode: Full document sync
  • Capabilities: textDocument/hover, textDocument/publishDiagnostics, textDocument/documentSymbol
Commit count: 281

cargo fmt