Skip to content

Commit 020ad31

Browse files
authored
Merge pull request #2942 from 1c-syntax/feature/filter-document-symbols
2 parents 6c493fb + 8f2685b commit 020ad31

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

src/main/java/com/github/_1c_syntax/bsl/languageserver/providers/DocumentSymbolProvider.java

+19
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,16 @@
2323

2424
import com.github._1c_syntax.bsl.languageserver.context.DocumentContext;
2525
import com.github._1c_syntax.bsl.languageserver.context.symbol.SourceDefinedSymbol;
26+
import com.github._1c_syntax.bsl.languageserver.context.symbol.Symbol;
27+
import com.github._1c_syntax.bsl.languageserver.context.symbol.VariableSymbol;
28+
import com.github._1c_syntax.bsl.languageserver.context.symbol.variable.VariableKind;
2629
import org.eclipse.lsp4j.DocumentSymbol;
30+
import org.eclipse.lsp4j.SymbolKind;
2731
import org.springframework.stereotype.Component;
2832

33+
import java.util.EnumSet;
2934
import java.util.List;
35+
import java.util.Set;
3036
import java.util.stream.Collectors;
3137

3238
@Component
@@ -37,8 +43,14 @@ public final class DocumentSymbolProvider {
3743
*/
3844
public static final String LABEL = "BSL Language Server";
3945

46+
private static final Set<VariableKind> supportedVariableKinds = EnumSet.of(
47+
VariableKind.MODULE,
48+
VariableKind.GLOBAL
49+
);
50+
4051
public List<DocumentSymbol> getDocumentSymbols(DocumentContext documentContext) {
4152
return documentContext.getSymbolTree().getChildren().stream()
53+
.filter(DocumentSymbolProvider::isSupported)
4254
.map(DocumentSymbolProvider::toDocumentSymbol)
4355
.collect(Collectors.toList());
4456
}
@@ -61,4 +73,11 @@ private static DocumentSymbol toDocumentSymbol(SourceDefinedSymbol symbol) {
6173
return documentSymbol;
6274
}
6375

76+
public static boolean isSupported(Symbol symbol) {
77+
var symbolKind = symbol.getSymbolKind();
78+
if (symbolKind == SymbolKind.Variable) {
79+
return supportedVariableKinds.contains(((VariableSymbol) symbol).getKind());
80+
}
81+
return true;
82+
}
6483
}

src/test/resources/providers/documentSymbol.bsl

+1
Original file line numberDiff line numberDiff line change
@@ -49,3 +49,4 @@
4949
КонецФункции
5050

5151
А = 0;
52+
Г = 0;

0 commit comments

Comments
 (0)