use of org.eclipse.jface.text.templates.TemplateBuffer in project eclipse.jdt.ls by eclipse.
the class SnippetCompletionProposal method evaluateGenericTemplate.
public static String evaluateGenericTemplate(ICompilationUnit cu, CompletionContext completionContext, Template template) {
JavaContextType contextType = (JavaContextType) JavaLanguageServerPlugin.getInstance().getTemplateContextRegistry().getContextType(JavaContextType.ID_STATEMENTS);
char[] completionToken = completionContext.getToken();
if (contextType == null || completionToken == null) {
return null;
}
TemplateBuffer buffer = null;
try {
IDocument document = new Document(cu.getSource());
DocumentTemplateContext javaContext = contextType.createContext(document, completionContext.getOffset(), completionToken.length, cu);
buffer = javaContext.evaluate(template);
} catch (JavaModelException | BadLocationException | TemplateException e) {
JavaLanguageServerPlugin.logException(e.getMessage(), e);
return null;
}
if (buffer == null) {
return null;
}
String content = buffer.getString();
if (Strings.containsOnlyWhitespaces(content)) {
return null;
}
return content;
}
use of org.eclipse.jface.text.templates.TemplateBuffer in project xtext-eclipse by eclipse.
the class XtextTemplateContext method evaluate.
@Override
public TemplateBuffer evaluate(Template template) throws BadLocationException, TemplateException {
if (!canEvaluate(template))
return null;
TemplateTranslator translator = createTemplateTranslator();
TemplateBuffer buffer = translator.translate(template);
getContextType().resolve(buffer, this);
return buffer;
}
use of org.eclipse.jface.text.templates.TemplateBuffer in project xtext-eclipse by eclipse.
the class XtextTemplateContextTest method assertTemplateBuffer.
protected void assertTemplateBuffer(String expectation, String document, int offset, String pattern) {
Template template = new Template("", "", "", pattern, false);
this.document.set(document);
this.position.setOffset(offset);
try {
TemplateBuffer buffer = testMe.evaluate(template);
assertEquals(expectation, buffer.getString());
} catch (BadLocationException e) {
e.printStackTrace();
fail("Unexpected bad location expection: " + e);
} catch (TemplateException e) {
e.printStackTrace();
fail("Unexpected template expection: " + e);
}
}
use of org.eclipse.jface.text.templates.TemplateBuffer in project che by eclipse.
the class TemplateProposal method getAdditionalProposalInfo.
/*
* @see ICompletionProposal#getAdditionalProposalInfo()
*/
public String getAdditionalProposalInfo() {
try {
fContext.setReadOnly(true);
TemplateBuffer templateBuffer;
try {
templateBuffer = fContext.evaluate(fTemplate);
} catch (TemplateException e) {
return null;
}
IDocument document = new Document(templateBuffer.getString());
IndentUtil.indentLines(document, new LineRange(0, document.getNumberOfLines()), null, null);
StringBuffer buffer = new StringBuffer();
HTMLPrinter.insertPageProlog(buffer, 0, JavadocFinder.getStyleSheet());
HTMLPrinter.addParagraph(buffer, document.get());
HTMLPrinter.addPageEpilog(buffer);
return buffer.toString();
} catch (BadLocationException e) {
// handleException(
// JavaPlugin.getActiveWorkbenchShell(), new CoreException(new Status(IStatus.ERROR, JavaPlugin.getPluginId(), IStatus.OK, "", e))); //$NON-NLS-1$
JavaPlugin.log(e);
return null;
}
}
use of org.eclipse.jface.text.templates.TemplateBuffer in project che by eclipse.
the class CodeTemplateContext method evaluate.
/*
* @see org.eclipse.jdt.internal.corext.template.TemplateContext#evaluate(org.eclipse.jdt.internal.corext.template.Template)
*/
@Override
public TemplateBuffer evaluate(Template template) throws BadLocationException, TemplateException {
// test that all variables are defined
Iterator<TemplateVariableResolver> iterator = getContextType().resolvers();
while (iterator.hasNext()) {
TemplateVariableResolver var = iterator.next();
if (var instanceof CodeTemplateContextType.CodeTemplateVariableResolver) {
//$NON-NLS-1$ //$NON-NLS-2$
Assert.isNotNull(getVariable(var.getType()), "Variable " + var.getType() + "not defined");
}
}
if (!canEvaluate(template))
return null;
String pattern = changeLineDelimiter(template.getPattern(), fLineDelimiter);
TemplateTranslator translator = new TemplateTranslator();
TemplateBuffer buffer = translator.translate(pattern);
getContextType().resolve(buffer, this);
return buffer;
}
Aggregations