This is an automated email from the ASF dual-hosted git repository.

dbalek pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git


The following commit(s) were added to refs/heads/master by this push:
     new 868f28a0d9 Filtering symbols by query prefix. (#6136)
868f28a0d9 is described below

commit 868f28a0d91e86fb4ed7786ea3cff9532ea386d2
Author: Dusan Balek <[email protected]>
AuthorDate: Wed Jun 28 16:32:34 2023 +0200

    Filtering symbols by query prefix. (#6136)
---
 .../modules/micronaut/symbol/MicronautSymbolSearcher.java  | 14 ++++++++------
 java/java.lsp.server/vscode/src/extension.ts               |  7 ++++++-
 2 files changed, 14 insertions(+), 7 deletions(-)

diff --git 
a/enterprise/micronaut/src/org/netbeans/modules/micronaut/symbol/MicronautSymbolSearcher.java
 
b/enterprise/micronaut/src/org/netbeans/modules/micronaut/symbol/MicronautSymbolSearcher.java
index 51c2337bf3..9a2fcfb18b 100644
--- 
a/enterprise/micronaut/src/org/netbeans/modules/micronaut/symbol/MicronautSymbolSearcher.java
+++ 
b/enterprise/micronaut/src/org/netbeans/modules/micronaut/symbol/MicronautSymbolSearcher.java
@@ -75,7 +75,7 @@ public class MicronautSymbolSearcher implements IndexSearcher 
{
                     while (children.hasMoreElements()) {
                         FileObject child = children.nextElement();
                         if (child.hasExt("mn")) { //NOI18N
-                            loadSymbols(child, symbols);
+                            loadSymbols(child, textForQuery, symbols);
                         }
                     }
                 }
@@ -84,7 +84,7 @@ public class MicronautSymbolSearcher implements IndexSearcher 
{
         return symbols;
     }
 
-    private static void loadSymbols(FileObject input, Set<Descriptor> symbols) 
{
+    private static void loadSymbols(FileObject input, String textForQuery, 
Set<Descriptor> symbols) {
         try (BufferedReader br = new BufferedReader(new 
InputStreamReader(input.getInputStream(), StandardCharsets.UTF_8))) {
             FileObject fo = null;
             String line;
@@ -102,10 +102,12 @@ public class MicronautSymbolSearcher implements 
IndexSearcher {
                         return;
                     }
                     String name = info.substring(0, idx).trim();
-                    String[] range = info.substring(idx + 1).split("-");
-                    int start = range.length > 0 ? Integer.parseInt(range[0]) 
: 0;
-                    int end = range.length > 1 ? Integer.parseInt(range[1]) : 
start;
-                    symbols.add(new SymbolDescriptor(name, fo, start, end));
+                    if (name.startsWith(textForQuery)) {
+                        String[] range = info.substring(idx + 1).split("-");
+                        int start = range.length > 0 ? 
Integer.parseInt(range[0]) : 0;
+                        int end = range.length > 1 ? 
Integer.parseInt(range[1]) : start;
+                        symbols.add(new SymbolDescriptor(name, fo, start, 
end));
+                    }
                 }
             }
         } catch (IOException ex) {
diff --git a/java/java.lsp.server/vscode/src/extension.ts 
b/java/java.lsp.server/vscode/src/extension.ts
index 1ed5bb07c9..e5bc7b8aef 100644
--- a/java/java.lsp.server/vscode/src/extension.ts
+++ b/java/java.lsp.server/vscode/src/extension.ts
@@ -36,7 +36,8 @@ import {
     RevealOutputChannelOn,
     DocumentSelector,
     ErrorHandlerResult,
-    CloseHandlerResult
+    CloseHandlerResult,
+    SymbolInformation
 } from 'vscode-languageclient';
 
 import * as net from 'net';
@@ -613,6 +614,10 @@ export function activate(context: ExtensionContext): 
VSNetBeansAPI {
             }
         }
     }));
+    
context.subscriptions.push(commands.registerCommand('nbls.workspace.symbols', 
async (query) => {
+        const c = await client;
+        return (await c.sendRequest<SymbolInformation[]>("workspace/symbol", { 
"query": query })) ?? [];
+    }));
     
context.subscriptions.push(commands.registerCommand('java.complete.abstract.methods',
 async () => {
         const active = vscode.window.activeTextEditor;
         if (active) {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists

Reply via email to