List of usage examples for org.antlr.v4.runtime CommonToken getChannel
@Override public int getChannel()
From source file:org.ballerinalang.langserver.completions.providers.contextproviders.ImportDeclarationContextProvider.java
License:Open Source License
@Override public List<CompletionItem> getCompletions(LSContext ctx) { ArrayList<CompletionItem> completionItems = new ArrayList<>(); List<BallerinaPackage> packagesList = new ArrayList<>(); Stream.of(LSPackageLoader.getSdkPackages(), LSPackageLoader.getHomeRepoPackages()) .forEach(packagesList::addAll); List<CommonToken> lhsTokens = ctx.get(CompletionKeys.LHS_TOKENS_KEY); List<CommonToken> lhsDefaultTokens = lhsTokens.stream() .filter(commonToken -> commonToken.getChannel() == Token.DEFAULT_CHANNEL) .collect(Collectors.toList()); List<Integer> lhsDefaultTokenTypes = lhsDefaultTokens.stream().map(CommonToken::getType) .collect(Collectors.toList()); int divIndex = lhsDefaultTokenTypes.indexOf(BallerinaParser.DIV); int importTokenIndex = lhsDefaultTokenTypes.indexOf(BallerinaParser.IMPORT); CommonToken lastToken = CommonUtil.getLastItem(lhsTokens); if (divIndex > -1 && (divIndex == lhsDefaultTokenTypes.size() - 1 || divIndex == lhsDefaultTokenTypes.size() - 2)) { String orgName = lhsDefaultTokens.get(lhsDefaultTokenTypes.indexOf(BallerinaParser.DIV) - 1).getText(); completionItems.addAll(this.getPackageNameCompletions(orgName, packagesList)); } else if (importTokenIndex > -1 && (importTokenIndex == lhsDefaultTokenTypes.size() - 1 || importTokenIndex == lhsDefaultTokenTypes.size() - 2)) { completionItems.addAll(this.getItemsIncludingOrgName(packagesList)); } else if (importTokenIndex > -1 && lhsDefaultTokenTypes.size() >= 2 && (lastToken.getChannel() == Token.HIDDEN_CHANNEL || lhsTokens.get(lhsTokens.size() - 2).getChannel() == Token.HIDDEN_CHANNEL)) { completionItems.add(getAsKeyword()); }/*from w w w .j a v a 2 s. c o m*/ return completionItems; }