mattiascibien / dlang-vscode

Support for the D Programming Language for Visual Studio Code
MIT License
38 stars 10 forks source link

Support common IDE features #53

Open testing-in-chrome opened 6 years ago

testing-in-chrome commented 6 years ago

I think you're doing a great job, and your extension has the potential of being the standard for dlang, even better than code-d/serve-d. It's great that you release often and keep things up-to-date, and it just works without issues (at least for me).

Now it's time to add some IDE features that we desperately need. Please feel free to use this issue as a meta-issue for other IDE features sub-issues.

Please add more if you remember anything else.

To help you get started, all the above features have been implemented successfully for a very popular C++ vscode extension called cquery cquery-server / cquery-extension. Please take a look.

LaurentTreguier commented 6 years ago

I don't know what you mean by "you release often and keep things up-to-date" since the last official release was in 2016, and the last commit a year ago :sweat_smile: As I posted on another issue, I have been concentrating my work on trying to build a language server, just like cquery, since language servers can be re-used in different editors; with minimal editor extensions.

Regarding the features themselves:

However, as I stated earlier, I don't think I'll be working on this extension anymore, but rather the language server. For example, someone here has an issue with VSCode which prevents them from using it, meaning all of the effort put on this single editor extension is basically useless for that person.

testing-in-chrome commented 6 years ago

I don't know what you mean by "you release often and keep things up-to-date" since the last official release was in 2016, and the last commit a year ago

I was talking about your DLS server. Ok, maybe I should have created this issue there.

  • finding all references might be better suited to be directly a DCD functionality, which can already find the usage of a symbol within a single module

I don't know how DCD works. I believe cquery uses libclang to build a full index db of the project which it then uses for all sorts of things. I suppose you can do something similar? (I know it's a lot of work, sorry! :()

See this

  • I don't know how a call hierarchy would be implemented, this will need a lot more thinking
  • same for type hierarchy

Similarly, please look at call hierarchy, inheritance hierarchy, and member hierarchy in cquery.

However, as I stated earlier, I don't think I'll be working on this extension anymore, but rather the language server. For example, someone here has an issue with VSCode which prevents them from using it, meaning all of the effort put on this single editor extension is basically useless for that person.

We can't deny that vscode is very popular and is getting better and better constantly really quickly. So developing a really good dlang extension on it is not a wasted effort and will be greatly appreciated by many people, especially that all the current available extensions for vscode and otherwise are all below one's expectations.

LaurentTreguier commented 6 years ago

I was talking about your DLS server. Ok, maybe I should have created this issue there.

Oh, that makes more sense indeed

(I know it's a lot of work, sorry! :()

No need to be sorry :) DCD uses symbol cache as well, containing information about everything needed for autocompletion, etc. I haven't done any work in DCD myself yet, but I'll probably start getting my hands dirty soon enough.

So developing a really good dlang extension on it is not a wasted effort and will be greatly appreciated by many people

This is why I made an extension for VSCode using DLS, I didn't mean that I was leaving VSCode behind or anything (in fact it's still my go-to editor). The difference is simply that the work on DLS can benefit other editors, as well as VSCode.

testing-in-chrome commented 6 years ago

I just saw that you implemented some of the stuff here in version 0.11.0. That's awesome! Thank you very much.

I wonder if we should move this thread somewhere else where it can be more visible.