microsoft / vscode

Visual Studio Code
https://code.visualstudio.com
MIT License
163.11k stars 28.82k forks source link

Support for search engines #230337

Open Febbe opened 2 days ago

Febbe commented 2 days ago

We want to extend clangd-vscode with an AST search engine besides regex and plain text search, unfortunately it looks like, that VSCode does not support to extend the global and lokal search. It would be very useful, if one could just add a search engine. Currently we have to add a new separate view, but that is unintentional.

Optionally it would be good to also support a pop-up dialog, with the ability to modify specific search options and a larger search field with semantic linting.

andreamah commented 2 days ago

We currently have proposed APIs that cover custom search engines.

See the following: https://github.com/microsoft/vscode/issues/59921 https://github.com/microsoft/vscode/issues/73524

vs-code-engineering[bot] commented 2 days ago

Thanks for creating this issue! We figured it's covering the same as another one we already have. Thus, we closed this one as a duplicate. You can search for similar existing issues. See also our issue reporting guidelines.

Happy Coding!

Febbe commented 1 day ago

@caleb-allen Great question!

For the most part, this API is meant to be consumed to simply search for 'text' as-is. For example, if you create a custom filesystem, this API helps with actually understanding what it takes to get search results from your project. This being said, it was not necessarily created to facilitate a special or 'intelligent' search that requires custom options. The reason why the options have things like isRegex is because the UI (aka the search view on the sidebar) will have a button for that, which will drive what info we send to the API. If we introduced more/alternative options, this would preferably match changes in the UI. We want to keep the options simple, as that is what the user expects out of the search view (for now). Also, we only allow one provider per file scheme, so regular text would lose the traditional ripgrep text results if you overwrote our default provider for text with your own.

Can you reopen this, or explain how your extension will cover this issue?

The thing is, that we don't want to change anything with the current ways of searching. We want to add a new search type "ast_search", which expects a string of the clang-ast-matcher-dsl. So we definitely need to somehow change the mode to something else than text or regex. We also would like to change some options, e.g. the Traverse Mode.

A future extension would also be, to provide a rich semantic checking UI, where only valid matchers can be concatenated.

andreamah commented 1 day ago

Okay, I can add this as a feature request candidate for adding new ways of searching to the UI.

vs-code-engineering[bot] commented 1 day ago

This feature request is now a candidate for our backlog. The community has 60 days to upvote the issue. If it receives 20 upvotes we will move it to our backlog. If not, we will close it. To learn more about how we handle feature requests, please see our documentation.

Happy Coding!

torshepherd commented 11 hours ago

I think to clarify what @Febbe is saying, we actually want to add two things

  1. Searching across workspace directory in multiple files (AST analogue of ctrl-shift-f)
  2. Finding AST matches in editor (AST analogue of ctrl-f)

@Febbe can you clarify which one hits request is for? I think we could accomplish 1. today by adding a custom TreeView in a sidebar, but there's no good way to do 2. (custom finding within the open file) currently.

If I understand correctly, this request is about a better/cleaner/more fully integrated way of performing 1. ?

Febbe commented 11 hours ago

I think to clarify what @Febbe is saying, we actually want to add two things

  1. Searching across workspace directory in multiple files (AST analogue of ctrl-shift-f)
  2. Finding AST matches in editor (AST analogue of ctrl-f)

@Febbe can you clarify which one hits request is for? I think we could accomplish 1. today by adding a custom TreeView in a sidebar, but there's no good way to do 2. (custom finding within the open file) currently.

If I understand correctly, this request is about a better/cleaner/more fully integrated way of performing 1. ?

Actually both, I believe that both search view bars are implemented similar or even with the same code. So we need in both bars a way to add our button 'AST' just next to regex (will later add some pictures and modify the base post).

Strg+F and STRG+Shift+F should move the focus into the bar and use the current selected search engine (in our case 'AST').

torshepherd commented 11 hours ago

Cool, yep that's exactly what I was hoping for as well. This will need to probably add an LSP extension as well eventually, right?

Febbe commented 11 hours ago

Cool, yep that's exactly what I was hoping for as well. This will need to probably add an LSP extension as well eventually, right?

Yes clangd will need an LSP extension, since it should also serve as a search engine provider. But technically a LS and a search engine may be completely independent. However this idea in general would be a great improvement to all Language Servers and we could propose it to Microsofts LSP specification as well.