Releases: oxalica/nil
2022-11-15
Snapshot release 2022-11-15
Mostly for bug fixes, some of which are annoying.
The snapshot period will be slowing down if there are no interesting changes or big bug fixes.
New features:
-
Document links.
textDocument/documentLink
Valid relative paths, URLs and flake references now report
as links. For VSCode, it's shown as underlined text, and a
hand-shaped cursor is shown when moving over them.
Ctrl-Click would open the target file or URL. -
Store Attr source information in types.
It is not quite useful for now, and is only be used by the
"completion kind" during completion.
We'll find a way to support goto-definition for it in the future.
Fixes:
- Fixed type inference for
if
conditions. - Fixed errors from client exit monitor.
- Fixed a deadlock that occurs when changing text rapidly.
2022-11-07
Snapshot release 2022-11-07
New features:
-
Initial type system implementation with inference.
The design is a modified Hindley–Milner type system.
Polymorphism is not yet implemented, and poly-lambdas likea: a
would currently fail with the result? -> ?
.With the help of Attrset types, we can now support more completion
places. -
Type signatures are rendered in hover messages.
-
Field completions.
Completions in both reference and definition sites are supported,
when the type information is enough.let f = { foo }@bar: bar.|; # -> foo. Reference site. in f { f| # -> foo. Definition site. }
It can also self-complete in
let
or Attrsets.{ some.deep.setting = 42; some.d| # -> deep }
Fixes:
- Force exit the server when the client process died. (Linux)
- Enhance parser error recovery.
2022-10-03
Weekly release 2022-10-03
New features:
- Multi-threading.
- LSP request cancellation.
- Report duplicated lambda parameters.
- Goto-definition for non-Nix file paths.
Fixes:
- Multiple workspaces now work well.
- Mis-synchronization when creating new files is now fixed.
- Suppress unhandled notification errors with VSCode and Nix IDE.
2022-09-26
New features
-
Renaming now supports names involving
inherit
.-
Renaming identifiers inside
inherit
will change the definition, and
foo: { inherit foo/* -> new */; }
=>
foo: { new = foo; }
-
Renaming identifiers outside
inherit
will change references.
foo/* -> new */: { inherit foo; }
=>
new: { foo = new; }
-
-
Show documentations during completion for builtins.
Currently only global builtins like
map
are supported.
The documentations are generated from Nix at build-time, and some
builtins don't have upstream documentations. -
Hover.
textDocument/hover
- Show documentations for global builtins.
- Show the kind of names, like let-bindings, parameters, or etc.
-
Syntax errors are now shown by default.
-
Custom diagnostics filter.
See
docs/features.md
for more information. -
Symbol hierarchy, aka. outline.
textDocument/documentSymbol
-
File formatting via external command.
textDocument/formatting
Fixes
- Contextual keyword
or
are now semantically highlighted correctly. - Parser error recovery is improved, and error messages are tweaked to be
more helpful.
2022-09-19
New features
- Semantic highlighting
textDocument/semanticTokens/{range,full}
. - Catch panics in request handlers and show messages to LSP clients.
- Incremental change notification handling for
textDocument/didChange
.
Fixes
- Load only
.nix
files in workspace. This could speed up workspace loading. - Remove unmaintained
ansi_term
from dependency tree.
Initial tagged release
2022-09-10 Support renaming to strings