nixd icon indicating copy to clipboard operation
nixd copied to clipboard

nixpkgs completion and goto only work in lists

Open ibrokemypie opened this issue 1 year ago • 3 comments

If I write the following, nixd will autosuggest package names, include docs about them and allow me to jump to their definitions:

{pkgs}:
{
  asdf = with pkgs; [asdf];
}

However, if I write something like below, none of these features work anymore

{pkgs}:
{
  asdf = pkgs.asdf;
}

No idea why this is happening, it feels like a bug but it could be a misconfiguration, I do not know.

ibrokemypie avatar Apr 28 '24 04:04 ibrokemypie

https://github.com/nix-community/nixd/blob/b3515c91a56b9a1008a375116da46e9f8c8eb261/nixd/lib/Controller/AST.cpp#L104

This is not a bug nor misconfiguration, but an un-implemented feature.

For a long time C++ part in this project has only one developer, so there is no complex 'idiom' matching stuff implemented. Thus nixd currently only provides package information, by stupid with pkgs; arrays, it even not check whether pkgs is actually nixpkgs or not.

inclyc avatar Apr 28 '24 05:04 inclyc

Note: previously (version 1.x) nixd will perform precise eval, allowing end-users do any kind of 'goto-def', but requires some configuration stuff.

Then people complained:

"I don't want to configure nixd each project"

"other lsps work out of box!"

So let's do less configuration, but 'eval' will not be very precise. That's somehow a trade-off result.

inclyc avatar Apr 28 '24 05:04 inclyc

In conclusion I do think 'ExprSelect' like (pkgs.) should be implemented, but this is hard with incremental eval, and not yet landed.

inclyc avatar Apr 28 '24 05:04 inclyc

Fixed in #544

inclyc avatar Jul 17 '24 00:07 inclyc