@NotNull @Override public LookupElement[] calculateLookupItems(ExpressionContext context) { int offset = context.getStartOffset(); Project project = context.getProject(); PsiDocumentManager.getInstance(project).commitAllDocuments(); assert context.getEditor() != null; PsiFile file = PsiDocumentManager.getInstance(project).getPsiFile(context.getEditor().getDocument()); assert file != null; PsiElement elementAt = file.findElementAt(offset); Set<String> parameterNames = ContainerUtil.newHashSet(); GoParameters parameters = PsiTreeUtil.getParentOfType(elementAt, GoParameters.class); if (parameters != null) { GoParamDefinition parameter = PsiTreeUtil.getParentOfType(elementAt, GoParamDefinition.class); for (GoParameterDeclaration paramDecl : parameters.getParameterDeclarationList()) { for (GoParamDefinition paramDef : paramDecl.getParamDefinitionList()) { if (parameter != paramDef) { parameterNames.add(paramDef.getName()); } } } } Set<LookupElement> set = ContainerUtil.newLinkedHashSet(); for (String name : myNames) { set.add(LookupElementBuilder.create(UniqueNameGenerator.generateUniqueName(name, parameterNames))); } return set.toArray(new LookupElement[set.size()]); } }
@Nullable @Override public Result calculateQuickResult(@NotNull Expression[] params, ExpressionContext context) { return getResultByTokenType(context.getProject(), TemplateToolkitPsiUtil.getLastOpenMarker(context.getEditor())); }
@Nullable @Override public Result calculateResult(ExpressionContext context) { TemplateState state = TemplateManagerImpl.getTemplateState(context.getEditor()); assert state != null; TextResult text = ObjectUtils.assertNotNull(state.getVariableValue("TokenText")); String curText = GrammarUtil.unquote(text.getText()); if (ParserGeneratorUtil.isRegexpToken(curText)) { return state.getVariableValue("TokenName"); } else { return new TextResult("'" + curText + "'"); } }