Skip to content

Releases: oxalica/nil

2022-11-15

15 Nov 10:00
2022-11-15
Compare
Choose a tag to compare

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

07 Nov 07:16
2022-11-07
Compare
Choose a tag to compare

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 like a: 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

03 Oct 23:16
2022-10-03
Compare
Choose a tag to compare

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

26 Sep 08:33
2022-09-26
Compare
Choose a tag to compare

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

19 Sep 03:45
Compare
Choose a tag to compare

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

19 Sep 03:29
Compare
Choose a tag to compare
2022-09-10

Support renaming to strings