Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Go to Definition and Hover not working #97

Open
xrfez opened this issue Jun 7, 2022 · 8 comments
Open

Go to Definition and Hover not working #97

xrfez opened this issue Jun 7, 2022 · 8 comments

Comments

@xrfez
Copy link

xrfez commented Jun 7, 2022

Go to Definition and Hover Tips stopped working after updating nim (1.4.2 -> 1.6.6)

nim-Version: 1.6.6
vscode-Version: 1.67.2

The update initially broke functionality with the original nim extension:
https://marketplace.visualstudio.com/items?itemName=kosz78.nim

I found this extension has the same issue. And I also found this extension!

I use scoop as my package manager therefore nim/gcc/python... are inside the scoop folder and individually in PATH.

Trying all permutations of install/uninstall/re-order with vscode/Extension/Settings..nim/path and a clean install with choosenim, the workaround was identified in #75 where nim and mingw64 were installed to "C:\nim" and "C:\mingw64" respectively and the "...\bin" folders confirmed in PATH.

This is less than ideal... and after some testing it seems like my gcc version 11.2.0 is actually the issue.

The fix for me was:

Uninstall gcc with: scoop uninstall gcc
Install MSYS2 with: scoop install msys2
Open MSYS2 in: scoop\apps\msys2\current and run msys2_shell
     Update: pacman -Syuu - May need to execute more than once.
     Install: pacman -S mingw-w64-x86_64-toolchain - Install everything.
Add C:\Users\%USERPROFILE%\scoop\apps\msys2\current\mingw64\bin to PATH.

@saem
Copy link
Owner

saem commented Jun 7, 2022

I'm a little confused by the issue, I get that hover etc are not working, the part about scoop, paths, etc that was too just get things to compile, but still no joy with respect to nimsuggest. Did I understand correctly?

I don't have any windows machines and I haven't used it in forever. First thing we need to do is get you some more info as to what the extension is trying to do and what might be broken.

Here is the part of the readme that outline how to get a dev version up and running: https://github.com/saem/vscode-nim#developing-the-extension. It should be super quick, clone, npm install, open the folder in vscode, hit F5. The slowest part is likely the network downloads.

F5 will launch a debug version of the extension in a new vscode window, the vscode window that launched it will show debug output from said debug version in the debug console.

First I'd recommend opening a folder in the debug version to a hello world Nim project. Something super basic. In the debug console it'll show you paths like where it found nim, nimsuggest, etc.

Once you have the above base line, then open up your real project in the debug version. This will likely generate a ton of debug output but you can confirm the paths, see the indexing of files, etc. If there are errors encountered it'll output them there most likely.

It won't solve the issue necessarily, but I think it'll give some hints as to what to try next.

@xrfez
Copy link
Author

xrfez commented Jun 8, 2022

I should clarify. Both Go to Definition and Hover issues are resolved by moving to the mingw64 toolchain. Don't both of these depend on nimsuggest? nimsuggest.exe is now a running process where as before it wouldn't start at all with the extension or on the CL. Following #75 workaround for installing mingw64 to C:\ also resolved the issue no matter where nim was installed. Therefore mingw64 is the missing/working dependency.

I believe it was my installed version of gcc (11.2.0) causing the grief because it was not the mingw64 gcc (12.1.0). While I could compile nim files and everything seemed to be working, I could not manually start nimsuggest and experienced this bug. The pathing and scoop steps were just for reference if anyone else was looking for a solution.

I will re-create the bug and gather some more information following your detailed steps. Thank you.

@girvo
Copy link

girvo commented Jun 10, 2022

@saem From the looks of it, its something to do with msys itself not being on the PATH via choosenim, but nimsuggest is requiring it. Very very odd!

Perhaps it's a choosenim bug after all, with regards to how it sets it up? Or maybe its a nimsuggest bug?

@saem
Copy link
Owner

saem commented Jun 10, 2022

I'm guessing it's a choosenim issue, the extension really doesn't do much special here.

@movpasd
Copy link

movpasd commented Jun 12, 2022

I've done a little bit of experimenting, and it looks like nimsuggest just doesn't open properly through choosenim, even through the command line:

image

The code execution cannot proceed because libwinpthread-1.dll was not found. Reinstalling the program may fix this problem.

It would be nice if someone could check this on their Windows machine to make sure this problem isn't due to me messing up my PATH or something like that.

Checking the %errorlevel%, it's the same one as you get in the developer console in VSCode (-1073741515, or 0xC0000135).

image

The DLL in question (libwinpthread-1.dll) doesn't get copied over to the ~/.nimble/bin, but it is available in the ~/.choosenim/toolchains/mingw64/bin, so maybe that's why adding that to the PATH fixes the problem. (It also makes nimsuggest work in the command line.) Adding the nim bin folder wasn't necessary on my end.

This makes it seem likely that it's a choosenim issue with the nimsuggest shim.

@saem
Copy link
Owner

saem commented Jun 13, 2022

Great investigation.

I'm wondering do you think you could detect the issue and maybe output an error telling the user that their nimsuggest/choosenim might be busted?

@movpasd
Copy link

movpasd commented Jun 13, 2022

I'm not familiar with the VSCode API, but where nimSuggestExec.execNimSuggest(..) currently calls console.error(..), one of those red error popups should probably be created instead? (I think that's what window.showErrorMessage does in this StackOverflow post.)

I just tried a fresh install of choosenim on a different machine and got the same command line error so I might go open an issue on the choosenim repo.

@anderflash
Copy link

I have nimble (v2.0) and Archlinux nim package (v1.6). I had a syntax highlighting problem for default values on object fields (issue #129), because /usr/bin/nim (1.6 package) was being used. So I removed the Archlinux package and kept only local nimble installation. The syntax highlighting doesn't complain anymore (so I closed the issue), but I don't get no hover interaction, no goto definition. It seems that it's related to #97 (this one) and #102. If I show the developer console on vs code, I get:
nimex_error

If I run on bash:

$ nimsuggest --epc --v2 animation.nim
44233

However, the error persists.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants