Language Server Features
All these examples are recorded using Visual Studio Code as a client for the language server. As everything is implemented using endpoints from the Language Server Protocol (LSP) these features are available to all editors that support the needed API.
Analyzing as you type
Diagnostics get updated on the fly as you type
Hover documentation
Hovering over variables and modules takes documentation that is written as comments into account
Hovering is also implemented for system functions and variables:
Code completion
Code completion that tells you where variables come from, what type they are, array dimensions and much more
Signature help
Get signature help for calling external modules, including the documentation of the module and the parameter with their documentation.
Go-to definition
Go-to definition for modules, variables and subroutines
Find references
Find references for variables and modules (modules being in prototype state)
Rename refactoring
Renaming of variables and subroutines
Quickfixes
Many builtin diagnostics already include quickfixes
Some of them do more than one modification:
Suggest USING
Which Natural developer never forgot to add a using when copy pasting code?
Extensive Snippets
Define snippets which depend on variables of usings which get added on the fly (if not already present)
Outline
Get a quick overview of a module with the outline
Document symbols
Quickly navigate through symbols in the current module
Workspace symbols
Quickly find modules by their referable name