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

Support for search engines #230337

Open
Febbe opened this issue Oct 2, 2024 · 11 comments
Open

Support for search engines #230337

Febbe opened this issue Oct 2, 2024 · 11 comments
Assignees
Labels
feature-request Request for new features or functionality

Comments

@Febbe
Copy link

Febbe commented Oct 2, 2024

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
Copy link
Contributor

We currently have proposed APIs that cover custom search engines.

See the following:
#59921
#73524

@andreamah andreamah added the *duplicate Issue identified as a duplicate of another issue(s) label Oct 2, 2024
Copy link

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!

@vs-code-engineering vs-code-engineering bot closed this as not planned Won't fix, can't repro, duplicate, stale Oct 2, 2024
@Febbe
Copy link
Author

Febbe commented Oct 3, 2024

@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 andreamah reopened this Oct 3, 2024
@andreamah
Copy link
Contributor

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

@andreamah andreamah added feature-request Request for new features or functionality and removed *duplicate Issue identified as a duplicate of another issue(s) labels Oct 3, 2024
@vs-code-engineering vs-code-engineering bot added this to the Backlog Candidates milestone Oct 3, 2024
Copy link

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
Copy link

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
Copy link
Author

Febbe commented Oct 4, 2024

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
Copy link

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
Copy link
Author

Febbe commented Oct 4, 2024

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.

@bbrewington
Copy link

This Rust-powered tree-sitter based search tool might be good to consider: https://github.com/alexpovel/srgn

I'm going to drop a feature request issue in that repo for VS Code Extension, but thought I'd leave this note as well

Copy link

This feature request has not yet received the 20 community upvotes it takes to make to our backlog. 10 days to go. To learn more about how we handle feature requests, please see our documentation.

Happy Coding!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature-request Request for new features or functionality
Projects
None yet
Development

No branches or pull requests

4 participants