Skip to content

aviatesk/JETLS.jl

Repository files navigation

JETLS

The goal of this project is to develop a new language server for Julia, currently called "JETLS". JETLS aims to enhance developer productivity by providing advanced static analysis and seamless integration with the Julia runtime. By leveraging tooling technologies like JET.jl, JuliaSyntax.jl and JuliaLowering.jl, JETLS aims to offer enhanced language features such as type-sensitive diagnostics, macro-aware go-to definition and such.

This repository manages JETLS.jl, a Julia package that implements a language server, and jetls-client, a sample VSCode extension that serves as a language client for testing JETLS.

Documentation

For end-user documentation including installation instructions, configuration options, and feature guides, please visit the user guide documentation.

This README focuses on development-related information such as the project roadmap, implementation status, and developer resources.

Roadmap

This is a summary of currently implemented features and features that will likely be implemented in the near future, for those who want to test this server. Please note that not only the progress of the list, but also the structure of the list itself is subject to change.

  • Analysis
    • Document synchronization
    • Incremental analysis
    • JuliaLowering integration
    • Recursive analysis for dependencies
    • Cross-server-process cache system
  • Diagnostic
    • Syntax errors
    • Lowering errors
    • Undefined bindings
    • Unused bindings
    • Potential MethodError
    • Configuration support
  • Completion
    • Global symbol completion
    • Local binding completion
    • LaTeX/Emoji completion
    • Method signature completion
    • Property completion
  • Signature Help
    • Basic implementation
    • Macro support
    • Argument type based suggestion
  • Definition
    • Method defintion
    • Global binding definition
    • Local binding definition
    • Type-aware method definition
  • Hover
    • Method documentation
    • Global binding documentation
    • Local binding location
    • Type-aware method documentation
    • Type of local binding on hover
  • Formatting
  • Document Highlight
    • Local binding
    • Global binding
    • Field name, dot-accessed bindings
  • Rename
    • Local binding
    • Global binding
    • Field name
  • TestRunner.jl integration
    • Code lens for running individual @testsets
    • Code actions for running individual @testsets
    • Code actions for running individual @test cases
    • Inline test result diagnostics
  • Configuration system
    • Type stable config object implementation
    • Support LSP configurations
    • Documentation
    • Schema support
  • Parallel/concurrent message handling
  • Work done progress support
  • Message cancellation support
  • Notebook support
  • Release
    • Publish a standalone VSCode language client extension
    • Make installable as Pkg executable app
    • Environment isolution
    • Automatic server installation/update for jetls-client
    • Integration into julia-vscode

Development notes

The following documents contain specific items that should be referenced when developing JETLS:

  • DEVELOPMENT.md: Developer notes
  • AGENTS.md: Specific coding rules (recommended reading for human developers as well)

Meta-level discussions, research, and ideas related to the development of JETLS are compiled as Obsidian notes at https://publish.obsidian.md/jetls.

License

MIT License. See LICENSE.md for details.

About

A new language server for Julia

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages