类org.eclipse.lsp4j.InsertTextFormat源码实例Demo

下面列出了怎么用org.eclipse.lsp4j.InsertTextFormat的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: lemminx   文件: AttributeCompletionItem.java
/**
 * Attribute completion item.
 * 
 * @param attrName           attribute name
 * @param canSupportSnippets true if snippets is supported to generate attribute
 *                           value and false otherwise
 * @param fullRange          the range to edit.
 * @param generateValue      true if attribute value must be generated and false
 *                           otherwise.
 * @param defaultValue       the default value of attribute.
 * @param enumerationValues  the enumeration values of attribute.
 * @param sharedSettings     the settings containing quote preferences
 */
public AttributeCompletionItem(String attrName, boolean canSupportSnippets, Range fullRange, boolean generateValue,
		String defaultValue, Collection<String> enumerationValues, SharedSettings sharedSettings) {
	super.setLabel(attrName);
	super.setKind(CompletionItemKind.Unit);
	super.setFilterText(attrName);
	StringBuilder attributeContent = new StringBuilder(attrName);
	if (generateValue) {
		// Generate attribute value content
		String attributeValue = XMLGenerator.generateAttributeValue(defaultValue, enumerationValues,
				canSupportSnippets, 1, true, sharedSettings);
		attributeContent.append(attributeValue);
	}
	super.setTextEdit(new TextEdit(fullRange, attributeContent.toString()));
	super.setInsertTextFormat(canSupportSnippets ? InsertTextFormat.Snippet : InsertTextFormat.PlainText);
}
 
@Override
public void onXMLContent(ICompletionRequest request, ICompletionResponse response) throws Exception {
	int offset = request.getOffset();
	final DOMNode node = getNodeAt(request.getNode(), offset);	
	if (node != null) {			
		XMLReferencesManager.getInstance().collect(node, n -> {
			DOMDocument doc = n.getOwnerDocument();
			Range range = XMLPositionUtility.createRange(node.getStart(), node.getEnd(), doc);
			String label = n.getNodeValue();
			CompletionItem item = new CompletionItem();
			item.setLabel(label);
			String insertText = label;
			item.setKind(CompletionItemKind.Property);
			item.setDocumentation(Either.forLeft(label));
			item.setFilterText(insertText);
			item.setTextEdit(new TextEdit(range, insertText));
			item.setInsertTextFormat(InsertTextFormat.PlainText);
			response.addCompletionItem(item);
		});
	}
}
 
private static void addCompletionItem(CMElementDeclaration elementDeclaration, DOMElement parentElement,
		String defaultPrefix, boolean forceUseOfPrefix, ICompletionRequest request, ICompletionResponse response,
		XMLGenerator generator, Set<String> tags) {
	String prefix = forceUseOfPrefix ? defaultPrefix
			: (parentElement != null ? parentElement.getPrefix(elementDeclaration.getNamespace()) : null);
	String label = elementDeclaration.getName(prefix);
	if (tags != null) {
		if (tags.contains(label)) {
			return;
		} else {
			tags.add(label);
		}
	}

	CompletionItem item = new CompletionItem(label);
	item.setFilterText(request.getFilterForStartTagName(label));
	item.setKind(CompletionItemKind.Property);
	MarkupContent documentation = XMLGenerator.createMarkupContent(elementDeclaration, request);
	item.setDocumentation(documentation);
	String xml = generator.generate(elementDeclaration, prefix,
			isGenerateEndTag(request.getNode(), request.getOffset(), label));
	item.setTextEdit(new TextEdit(request.getReplaceRange(), xml));
	item.setInsertTextFormat(InsertTextFormat.Snippet);
	response.addCompletionItem(item, true);
}
 
源代码4 项目: lemminx   文件: HTMLCompletionExtensionsTest.java
@Override
public void onTagOpen(ICompletionRequest completionRequest, ICompletionResponse completionResponse)
		throws Exception {
	Range range = completionRequest.getReplaceRange();
	HTMLTag.HTML_TAGS.forEach(t -> {
		String tag = t.getTag();
		String label = t.getLabel();
		CompletionItem item = new CompletionItem();
		item.setLabel(tag);
		item.setFilterText(completionRequest.getFilterForStartTagName(tag));
		item.setKind(CompletionItemKind.Property);
		item.setDocumentation(Either.forLeft(label));
		item.setTextEdit(new TextEdit(range, "<" + tag + "/>"));
		item.setInsertTextFormat(InsertTextFormat.PlainText);
		completionResponse.addCompletionItem(item);
	});
}
 
源代码5 项目: syndesis   文件: CompletionItemBuilder.java
public CompletionItem createSnippetItem(String label, String detail, String documentation, String insertText) {
    CompletionItem ci = new CompletionItem();
    ci.setLabel(label);
    ci.setKind(CompletionItemKind.Snippet);
    ci.setInsertTextFormat(InsertTextFormat.Snippet);
    ci.setInsertText(insertText);
    if (documentation != null) {
        ci.setDocumentation(documentation);
    } else {
        ci.setDocumentation(CompletionItemBuilder.beautifyDocument(ci.getInsertText()));
    }
    if (detail != null) {
        ci.setDetail(detail);
    }

    return ci;
}
 
源代码6 项目: lemminx   文件: XMLCompletions.java
private void collectionRegionProposals(ICompletionRequest request, ICompletionResponse response) {
	// Completion for #region
	try {
		int offset = request.getOffset();
		TextDocument document = request.getXMLDocument().getTextDocument();
		Position pos = document.positionAt(offset);
		String lineText = document.lineText(pos.getLine());
		String lineUntilPos = lineText.substring(0, pos.getCharacter());
		Matcher match = regionCompletionRegExpr.matcher(lineUntilPos);
		if (match.find()) {
			InsertTextFormat insertFormat = request.getInsertTextFormat();
			Range range = new Range(new Position(pos.getLine(), pos.getCharacter() + match.regionStart()), pos);

			String text = request.isCompletionSnippetsSupported() ? "<!-- #region $1-->" : "<!-- #region -->";
			CompletionItem beginProposal = new CompletionItem("#region");
			beginProposal.setTextEdit(new TextEdit(range, text));
			beginProposal.setDocumentation("Insert Folding Region Start");
			beginProposal.setFilterText(match.group());
			beginProposal.setSortText("za");
			beginProposal.setKind(CompletionItemKind.Snippet);
			beginProposal.setInsertTextFormat(insertFormat);
			response.addCompletionAttribute(beginProposal);

			CompletionItem endProposal = new CompletionItem("#endregion");
			endProposal.setTextEdit(new TextEdit(range, "<!-- #endregion-->"));
			endProposal.setDocumentation("Insert Folding Region End");
			endProposal.setFilterText(match.group());
			endProposal.setSortText("zb");
			endProposal.setKind(CompletionItemKind.Snippet);
			endProposal.setInsertTextFormat(InsertTextFormat.PlainText);
			response.addCompletionAttribute(endProposal);
		}
	} catch (BadLocationException e) {
		LOGGER.log(Level.SEVERE, "While performing collectRegionCompletion", e);
	}
}
 
源代码7 项目: lemminx   文件: EntitiesCompletionParticipant.java
private static void fillCompletion(String name, MarkupContent documentation, Range entityRange,
		ICompletionResponse response) {
	String entityName = "&" + name + ";";
	CompletionItem item = new CompletionItem();
	item.setLabel(entityName);
	item.setKind(CompletionItemKind.Keyword);
	item.setInsertTextFormat(InsertTextFormat.PlainText);
	String insertText = entityName;
	item.setFilterText(insertText);
	item.setTextEdit(new TextEdit(entityRange, insertText));
	item.setDocumentation(documentation);
	response.addCompletionItem(item);
}
 
源代码8 项目: lemminx   文件: HTMLCompletionExtensionsTest.java
@Override
public void onAttributeName(boolean generateValue, ICompletionRequest completionRequest,
		ICompletionResponse completionResponse) {
	String tag = completionRequest.getCurrentTag();
	HTMLTag htmlTag = HTMLTag.getHTMLTag(tag);
	if (htmlTag != null) {
		String[] attributes = htmlTag.getAttributes();
		if (attributes != null) {
			Range replaceRange = completionRequest.getReplaceRange();
			for (String attribute : attributes) {
				int index = attribute.indexOf(":");
				if (index != -1) {
					attribute = attribute.substring(0, index);
				}
				if (!completionResponse.hasAttribute(attribute)) {
					CompletionItem item = new CompletionItem();
					item.setLabel(attribute);
					item.setKind(CompletionItemKind.Value);
					String value = generateValue ? "=\"$1\"" : "";
					item.setTextEdit(new TextEdit(replaceRange, attribute + value));
					item.setInsertTextFormat(InsertTextFormat.Snippet);
					completionResponse.addCompletionAttribute(item);
				}
			}
		}
	}
}
 
源代码9 项目: lemminx   文件: HTMLCompletionExtensionsTest.java
@Override
public void onAttributeValue(String valuePrefix,
		ICompletionRequest completionRequest, ICompletionResponse completionResponse) {
	String tag = completionRequest.getCurrentTag();
	String attributeName = completionRequest.getCurrentAttributeName();
	HTMLTag htmlTag = HTMLTag.getHTMLTag(tag);
	if (htmlTag != null) {
		String[] attributes = htmlTag.getAttributes();
		if (attributes != null) {
			for (String attribute : attributes) {
				String attrName = attribute;
				String attrType = null;
				int index = attribute.indexOf(":");
				if (index != -1) {
					attrName = attribute.substring(0, index);
					attrType = attribute.substring(index + 1, attribute.length());
				}
				if (attrType != null && attributeName.equals(attrName)) {
					Range fullRange = completionRequest.getReplaceRange();
					String[] values = HTMLTag.getAttributeValues(attrType);
					for (String value : values) {
						String insertText = completionRequest.getInsertAttrValue(value);
						
						CompletionItem item = new CompletionItem();
						item.setLabel(value);
						item.setFilterText(insertText);
						item.setKind(CompletionItemKind.Unit);
						item.setTextEdit(new TextEdit(fullRange, insertText));
						item.setInsertTextFormat(InsertTextFormat.PlainText);
						completionResponse.addCompletionAttribute(item);
					}
					break;
				}
			}
		}
	}
}
 
源代码10 项目: n4js   文件: XContentAssistService.java
/**
 * Convert to a completion item.
 */
protected CompletionItem toCompletionItem(ContentAssistEntry entry, int caretOffset,
		Position caretPosition, Document document) {
	CompletionItem result = new CompletionItem();
	String label = null;
	if (entry.getLabel() != null) {
		label = entry.getLabel();
	} else {
		label = entry.getProposal();
	}
	result.setLabel(label);
	result.setDetail(entry.getDescription());
	result.setDocumentation(entry.getDocumentation());
	String prefix = null;
	if (entry.getPrefix() != null) {
		prefix = entry.getPrefix();
	} else {
		prefix = "";
	}
	Position prefixPosition = document.getPosition(caretOffset - prefix.length());
	result.setTextEdit(new TextEdit(new Range(prefixPosition, caretPosition), entry.getProposal()));
	if (!entry.getTextReplacements().isEmpty()) {
		if (result.getAdditionalTextEdits() == null) {
			result.setAdditionalTextEdits(new ArrayList<>(entry.getTextReplacements().size()));
		}
		entry.getTextReplacements().forEach(it -> {
			result.getAdditionalTextEdits().add(toTextEdit(it, document));
		});
	}
	if (entry.getKind().startsWith(ContentAssistEntry.KIND_SNIPPET + ":")) {
		result.setInsertTextFormat(InsertTextFormat.Snippet);
		entry.setKind(entry.getKind().substring(ContentAssistEntry.KIND_SNIPPET.length() + 1));
	} else if (Objects.equal(entry.getKind(), ContentAssistEntry.KIND_SNIPPET)) {
		result.setInsertTextFormat(InsertTextFormat.Snippet);
	}
	result.setKind(translateKind(entry));
	return result;
}
 
源代码11 项目: n4js   文件: PatchedContentAssistService.java
@Override
protected CompletionItem toCompletionItem(ContentAssistEntry entry, int caretOffset, Position caretPosition,
		Document document) {
	CompletionItem result = super.toCompletionItem(entry, caretOffset, caretPosition, document);
	if (entry.getKind().startsWith(ContentAssistEntry.KIND_SNIPPET + ":")) {
		result.setInsertTextFormat(InsertTextFormat.Snippet);
		entry.setKind(entry.getKind().substring(ContentAssistEntry.KIND_SNIPPET.length() + 1));
	} else if (Objects.equal(entry.getKind(), ContentAssistEntry.KIND_SNIPPET)) {
		result.setInsertTextFormat(InsertTextFormat.Snippet);
	}
	result.setKind(translateKind(entry));
	return result;
}
 
源代码12 项目: syndesis   文件: TableBodyCompletionProvider.java
public CompletionItem getColumnCompletionItem(int data) {
    CompletionItem ci = new CompletionItem();
    ci.setLabel("column definition");
    ci.setInsertText("${1:column_name} ${2:datatype}");
    ci.setKind(CompletionItemKind.Snippet);
    ci.setInsertTextFormat(InsertTextFormat.Snippet);
    ci.setDocumentation(CompletionItemBuilder.beautifyDocument(ci.getInsertText()));
    ci.setData(data);
    ci.setPreselect(true);
    ci.setSortText("1100");
    return ci;
}
 
源代码13 项目: syndesis   文件: TableBodyCompletionProvider.java
public CompletionItem getPrimaryKeyCompletionItem(int data) {
    CompletionItem ci = new CompletionItem();
    ci.setLabel("PRIMARY KEY (column, ...)");
    ci.setInsertText("PRIMARY KEY (${1:column})");
    ci.setKind(CompletionItemKind.Snippet);
    ci.setInsertTextFormat(InsertTextFormat.Snippet);
    ci.setDocumentation(CompletionItemBuilder.beautifyDocument(ci.getInsertText()));
    ci.setData(data);
    ci.setPreselect(true);
    ci.setSortText("1120");
    return ci;
}
 
源代码14 项目: syndesis   文件: TableBodyCompletionProvider.java
public CompletionItem getQueryExpressionSnippet(int data) {
    CompletionItem ci = new CompletionItem();
    ci.setLabel("AS SELECT * FROM ...");
    ci.setInsertText(" AS SELECT * FROM ${4:table_name};");
    ci.setKind(CompletionItemKind.Snippet);
    ci.setInsertTextFormat(InsertTextFormat.Snippet);
    ci.setDocumentation(CompletionItemBuilder.beautifyDocument(ci.getInsertText()));
    ci.setData(data);
    ci.setPreselect(true);
    return ci;
}
 
源代码15 项目: syndesis   文件: DdlCompletionItemLoader.java
public CompletionItem getCreateViewCompletionItem(int data, String sortValue) {
    CompletionItem ci = new CompletionItem();
    ci.setLabel("CREATE VIEW...");
    ci.setInsertText(QueryExpressionHelper.CREATE_VIEW_INSERT_TEXT);
    ci.setKind(CompletionItemKind.Snippet);
    ci.setInsertTextFormat(InsertTextFormat.Snippet);
    ci.setDetail("Simple CREATE VIEW statement");
    ci.setDocumentation(CompletionItemBuilder.beautifyDocument(ci.getInsertText()));
    ci.setData(data);
    ci.setPreselect(true);
    ci.setSortText(sortValue);
    return ci;
}
 
源代码16 项目: syndesis   文件: DdlCompletionItemLoader.java
public CompletionItem getCreateViewInnerJoinCompletionItem(int data, String sortValue) {
    CompletionItem ci = new CompletionItem();
    ci.setLabel("CREATE VIEW with INNER JOIN");
    ci.setInsertText(QueryExpressionHelper.CREATE_VIEW_INNER_JOIN_INSERT_TEXT);
    ci.setKind(CompletionItemKind.Snippet);
    ci.setInsertTextFormat(InsertTextFormat.Snippet);
    ci.setDetail(" CREATE VIEW with inner join");
    ci.setDocumentation(CompletionItemBuilder.beautifyDocument(ci.getInsertText()));
    ci.setData(data);
    ci.setPreselect(true);
    ci.setSortText(sortValue);
    return ci;
}
 
源代码17 项目: syndesis   文件: DdlCompletionItemLoader.java
public CompletionItem getCreateViewJoinCompletionItem(int data, String sortValue) {
    CompletionItem ci = new CompletionItem();
    ci.setLabel("CREATE VIEW with JOIN");
    ci.setInsertText(QueryExpressionHelper.CREATE_VIEW_LEFT_OUTER_JOIN_INSERT_TEXT);
    ci.setKind(CompletionItemKind.Snippet);
    ci.setInsertTextFormat(InsertTextFormat.Snippet);
    ci.setDetail(" CREATE VIEW with left join");
    ci.setDocumentation(CompletionItemBuilder.beautifyDocument(ci.getInsertText()));
    ci.setData(data);
    ci.setPreselect(true);
    ci.setSortText(sortValue);
    return ci;
}
 
源代码18 项目: syndesis   文件: DdlCompletionItemLoader.java
public CompletionItem getCreateViewUnionCompletionItem(int data, String sortValue) {
    CompletionItem ci = new CompletionItem();
    ci.setLabel("CREATE VIEW with UNION");
    ci.setInsertText(QueryExpressionHelper.CREATE_VIEW_UNION_INSERT_TEXT);
    ci.setKind(CompletionItemKind.Snippet);
    ci.setInsertTextFormat(InsertTextFormat.Snippet);
    ci.setDetail(" Union of two tables from single source");
    ci.setDocumentation(CompletionItemBuilder.beautifyDocument(ci.getInsertText()));
    ci.setData(data);
    ci.setPreselect(true);
    ci.setSortText(sortValue);
    return ci;
}
 
源代码19 项目: corrosion   文件: Snippet.java
public ICompletionProposal convertToCompletionProposal(int offset, LSPDocumentInfo info, String prefix,
		String lineIndentation, Range textRange) {
	CompletionItem item = new CompletionItem();
	item.setLabel(display);
	item.setKind(kind);
	item.setInsertTextFormat(InsertTextFormat.Snippet);

	IDocument document = info.getDocument();
	// if there is a text selection, take it, since snippets with $TM_SELECTED_TEXT
	// will want to wrap the selection.
	item.setTextEdit(new TextEdit(textRange, createReplacement(lineIndentation)));
	return new LSCompletionProposal(document, offset, item, getLanguageClient(info));
}
 
源代码20 项目: eclipse.jdt.ls   文件: SnippetCompletionProposal.java
private static void setFields(CompletionItem ci, ICompilationUnit cu) {
	ci.setKind(CompletionItemKind.Snippet);
	ci.setInsertTextFormat(InsertTextFormat.Snippet);
	ci.setDocumentation(SnippetUtils.beautifyDocument(ci.getInsertText()));
	Map<String, String> data = new HashMap<>(3);
	data.put(CompletionResolveHandler.DATA_FIELD_URI, JDTUtils.toURI(cu));
	data.put(CompletionResolveHandler.DATA_FIELD_REQUEST_ID, "0");
	data.put(CompletionResolveHandler.DATA_FIELD_PROPOSAL_ID, "0");
	ci.setData(data);
}
 
源代码21 项目: eclipse.jdt.ls   文件: CompletionHandlerTest.java
@Test
public void testCompletion_javadocComment() throws JavaModelException {
	ICompilationUnit unit = getWorkingCopy(
	//@formatter:off
	"src/java/Foo.java",
	"public class Foo {\n"+
	"	/** */ \n"+
	"	void foo(int i, String s) {\n"+
	"	}\n"+
	"}\n");
	//@formatter:on
	int[] loc = findCompletionLocation(unit, "/**");
	CompletionList list = server.completion(JsonMessageHelper.getParams(createCompletionRequest(unit, loc[0], loc[1]))).join().getRight();
	assertNotNull(list);
	assertEquals(1, list.getItems().size());
	CompletionItem item = list.getItems().get(0);
	assertNull(item.getInsertText());
	assertEquals(JavadocCompletionProposal.JAVA_DOC_COMMENT, item.getLabel());
	assertEquals(CompletionItemKind.Snippet, item.getKind());
	assertEquals("999999999", item.getSortText());
	assertEquals(item.getInsertTextFormat(), InsertTextFormat.Snippet);
	assertNotNull(item.getTextEdit());
	assertEquals("\n * ${0}\n * @param i\n * @param s\n", item.getTextEdit().getNewText());
	Range range = item.getTextEdit().getRange();
	assertEquals(1, range.getStart().getLine());
	assertEquals(4, range.getStart().getCharacter());
	assertEquals(1, range.getEnd().getLine());
	assertEquals(" * @param i\n * @param s\n", item.getDocumentation().getLeft());
}
 
源代码22 项目: eclipse.jdt.ls   文件: CompletionHandlerTest.java
@Test
public void testCompletion_javadocCommentNoSnippet() throws JavaModelException {
	ClientPreferences mockCapabilies = Mockito.mock(ClientPreferences.class);
	Mockito.when(preferenceManager.getClientPreferences()).thenReturn(mockCapabilies);
	Mockito.when(mockCapabilies.isCompletionSnippetsSupported()).thenReturn(false);
	ICompilationUnit unit = getWorkingCopy(
	//@formatter:off
	"src/java/Foo.java",
	"public class Foo {\n"+
	"	/** */ \n"+
	"	void foo(int i, String s) {\n"+
	"	}\n"+
	"}\n");
	//@formatter:on
	int[] loc = findCompletionLocation(unit, "/**");
	CompletionList list = server.completion(JsonMessageHelper.getParams(createCompletionRequest(unit, loc[0], loc[1]))).join().getRight();
	assertNotNull(list);
	assertEquals(1, list.getItems().size());
	CompletionItem item = list.getItems().get(0);
	assertNull(item.getInsertText());
	assertEquals(JavadocCompletionProposal.JAVA_DOC_COMMENT, item.getLabel());
	assertEquals(CompletionItemKind.Snippet, item.getKind());
	assertEquals("999999999", item.getSortText());
	assertEquals(item.getInsertTextFormat(), InsertTextFormat.PlainText);
	assertNotNull(item.getTextEdit());
	assertEquals("\n * @param i\n * @param s\n", item.getTextEdit().getNewText());
	Range range = item.getTextEdit().getRange();
	assertEquals(1, range.getStart().getLine());
	assertEquals(4, range.getStart().getCharacter());
	assertEquals(1, range.getEnd().getLine());
	assertEquals(" * @param i\n * @param s\n", item.getDocumentation().getLeft());
}
 
源代码23 项目: vscode-as3mxml   文件: CompletionItemUtils.java
public static CompletionItem createPackageBlockItem(String packageName, boolean asSnippet)
{
	StringBuilder labelBuilder = new StringBuilder();
       labelBuilder.append(IASKeywordConstants.PACKAGE);
       if (packageName.length() > 0)
       {
           labelBuilder.append(" ");
           labelBuilder.append(packageName);
       }
       labelBuilder.append(" {}");

       StringBuilder insertTextBuilder = new StringBuilder();
       insertTextBuilder.append(IASKeywordConstants.PACKAGE);
       if (packageName.length() > 0)
       {
           insertTextBuilder.append(" ");
           insertTextBuilder.append(packageName);
       }
       insertTextBuilder.append("\n");
       insertTextBuilder.append("{");
       insertTextBuilder.append("\n");
       insertTextBuilder.append("\t");
       if (asSnippet)
       {
           insertTextBuilder.append("$0");
       }
       insertTextBuilder.append("\n");
       insertTextBuilder.append("}");

       CompletionItem packageItem = new CompletionItem();
       packageItem.setKind(CompletionItemKind.Module);
       packageItem.setLabel(labelBuilder.toString());
       packageItem.setInsertText(insertTextBuilder.toString());
       if (asSnippet)
       {
           packageItem.setInsertTextFormat(InsertTextFormat.Snippet);
	}
	return packageItem;
}
 
源代码24 项目: vscode-as3mxml   文件: CompletionProvider.java
private void addMXMLLanguageTagToAutoComplete(String tagName, String prefix, boolean includeOpenTagBracket, boolean includeOpenTagPrefix, CompletionList result)
{
    List<CompletionItem> items = result.getItems();
    CompletionItem item = new CompletionItem();
    item.setKind(CompletionItemKind.Keyword);
    item.setLabel("fx:" + tagName);
    if (completionSupportsSnippets)
    {
        item.setInsertTextFormat(InsertTextFormat.Snippet);
    }
    item.setFilterText(tagName);
    item.setSortText(tagName);
    StringBuilder builder = new StringBuilder();
    if (includeOpenTagBracket)
    {
        builder.append("<");
    }
    if (includeOpenTagPrefix)
    {
        builder.append(prefix);
        builder.append(IMXMLCoreConstants.colon);
    }
    builder.append(tagName);
    builder.append(">");
    builder.append("\n");
    builder.append("\t");
    if (completionSupportsSnippets)
    {
        builder.append("$0");
    }
    builder.append("\n");
    builder.append("<");
    builder.append(IMXMLCoreConstants.slash);
    builder.append(prefix);
    builder.append(IMXMLCoreConstants.colon);
    builder.append(tagName);
    builder.append(">");
    item.setInsertText(builder.toString());
    items.add(item);
}
 
源代码25 项目: xtext-core   文件: ContentAssistService.java
protected CompletionItem toCompletionItem(ContentAssistEntry entry, int caretOffset, Position caretPosition,
		Document document) {
	CompletionItem completionItem = new CompletionItem();
	String label = entry.getLabel();
	if (label == null) {
		label = entry.getProposal();
	}
	completionItem.setLabel(label);
	completionItem.setDetail(entry.getDescription());
	completionItem.setDocumentation(entry.getDocumentation());
	String prefix = entry.getPrefix();
	if (prefix == null) {
		prefix = "";
	}
	int prefixOffset = caretOffset - prefix.length();
	Position prefixPosition = document.getPosition(prefixOffset);
	completionItem.setTextEdit(new TextEdit(new Range(prefixPosition, caretPosition), entry.getProposal()));
	completionItem.setKind(translateKind(entry));
	if (!entry.getTextReplacements().isEmpty()) {
		if (completionItem.getAdditionalTextEdits() == null) {
			completionItem.setAdditionalTextEdits(new ArrayList<>(entry.getTextReplacements().size()));
		}
		entry.getTextReplacements().forEach(
				(ReplaceRegion it) -> completionItem.getAdditionalTextEdits().add(toTextEdit(it, document)));
	}
	if (ContentAssistEntry.KIND_SNIPPET.equals(entry.getKind())) {
		completionItem.setInsertTextFormat(InsertTextFormat.Snippet);
	}
	return completionItem;
}
 
源代码26 项目: lsp4intellij   文件: EditorEventManager.java
/**
 * Creates a LookupElement given a CompletionItem
 *
 * @param item The CompletionItem
 * @return The corresponding LookupElement
 */
@SuppressWarnings("WeakerAccess")
public LookupElement createLookupItem(CompletionItem item) {
    Command command = item.getCommand();
    String detail = item.getDetail();
    String insertText = item.getInsertText();
    CompletionItemKind kind = item.getKind();
    String label = item.getLabel();
    TextEdit textEdit = item.getTextEdit();
    List<TextEdit> addTextEdits = item.getAdditionalTextEdits();
    String presentableText = StringUtils.isNotEmpty(label) ? label : (insertText != null) ? insertText : "";
    String tailText = (detail != null) ? detail : "";
    LSPIconProvider iconProvider = GUIUtils.getIconProviderFor(wrapper.getServerDefinition());
    Icon icon = iconProvider.getCompletionIcon(kind);
    LookupElementBuilder lookupElementBuilder;

    String lookupString = null;
    if (textEdit != null) {
        lookupString = textEdit.getNewText();
    } else if (StringUtils.isNotEmpty(insertText)) {
        lookupString = insertText;
    } else if (StringUtils.isNotEmpty(label)) {
        lookupString = label;
    }
    if (StringUtils.isEmpty(lookupString)) {
        return null;
    }
    // Fixes IDEA internal assertion failure in windows.
    lookupString = lookupString.replace(DocumentUtils.WIN_SEPARATOR, DocumentUtils.LINUX_SEPARATOR);
    if (item.getInsertTextFormat() == InsertTextFormat.Snippet) {
        lookupElementBuilder = LookupElementBuilder.create(convertPlaceHolders(lookupString));
    } else {
        lookupElementBuilder = LookupElementBuilder.create(lookupString);
    }

    lookupElementBuilder = addCompletionInsertHandlers(item, lookupElementBuilder, lookupString);

    if (kind == CompletionItemKind.Keyword) {
        lookupElementBuilder = lookupElementBuilder.withBoldness(true);
    }

    return lookupElementBuilder.withPresentableText(presentableText).withTypeText(tailText, true).withIcon(icon)
            .withAutoCompletionPolicy(AutoCompletionPolicy.SETTINGS_DEPENDENT);
}
 
源代码27 项目: lemminx   文件: CompletionRequest.java
@Override
public InsertTextFormat getInsertTextFormat() {
	return isCompletionSnippetsSupported() ? InsertTextFormat.Snippet : InsertTextFormat.PlainText;
}
 
源代码28 项目: syndesis   文件: DdlCompletionItemLoader.java
@SuppressWarnings("unchecked")
    private List<CompletionItem> loadItemsFromFile(String fileName) {
        List<CompletionItem> items = new ArrayList<CompletionItem>();

        try (InputStream stream = this.getClass().getResourceAsStream(fileName)) {
            JSONParser parser = new JSONParser(stream);

            // A JSON object. Key value pairs are unordered. JSONObject supports
            // java.util.Map interface.
            LinkedHashMap<String, Object> jsonObject = parser.object();

            // A JSON array. JSONObject supports java.util.List interface.
            ArrayList<?> completionItemArray = (ArrayList<?>) jsonObject.get("items");

            if (completionItemArray != null) {
                for (Object item : completionItemArray) {
                    LinkedHashMap<String, Object> itemInfo = (LinkedHashMap<String, Object>) item;
                    CompletionItem newItem = new CompletionItem();
                    newItem.setLabel((String) itemInfo.get("label"));
                    newItem.setKind(STRING_TO_KIND_MAP.get(((String) itemInfo.get("kind")).toUpperCase(Locale.US)));

                    String detail = (String) itemInfo.get("detail");
                    if (detail != null) {
                        newItem.setDetail(detail);
                    }

                    String documentation = (String) itemInfo.get("documentation");
                    if (documentation != null) {
                        newItem.setDocumentation(documentation);
                    }

                    newItem.setDeprecated(Boolean.parseBoolean((String) itemInfo.get("deprecated")));
                    newItem.setPreselect(Boolean.parseBoolean((String) itemInfo.get("preselect")));

                    String sortText = (String) itemInfo.get("sortText");
                    if (sortText != null) {
                        newItem.setSortText(sortText);
                    }

                    String insertText = (String) itemInfo.get("insertText");
                    if (insertText != null) {
                        insertText = insertText.replaceAll("\\n", "\n");
                        insertText = insertText.replaceAll("\\t", "\t");
                        newItem.setInsertText(insertText);
                    }

                    String insertTextFormat = (String) itemInfo.get("insertTextFormat");
                    if (insertTextFormat != null) {
                        if (newItem.getKind().equals(CompletionItemKind.Snippet)) {
                            newItem.setInsertTextFormat(InsertTextFormat.Snippet);
                        } else {
                            newItem.setInsertTextFormat(InsertTextFormat.PlainText);
                        }
                    }
                    // TODO: Implement quick fixes
//                  newItem.setTextEdit((TextEdit)itemInfo.get("textEdit"));
//                  newItem.setAdditionalTextEdits((List<TextEdit>)itemInfo.get("additionalTextEdits"));
//                  newItem.setCommitCharacters((List<String>)itemInfo.get("commitCharacters"));

                    String category = (String) itemInfo.get("category");
                    if (category != null && !category.isEmpty()) {
                        addItemByCategory(category, newItem);
                    } else {
                        items.add(newItem);
                    }
                }
            }

        } catch (IOException | ParseException e) {
            throw new IllegalArgumentException("Unable to parse given file: " + fileName, e);
        }

        return items;
    }
 
源代码29 项目: eclipse.jdt.ls   文件: JavadocCompletionProposal.java
public List<CompletionItem> getProposals(ICompilationUnit cu, int offset, CompletionProposalRequestor collector, IProgressMonitor monitor) throws JavaModelException {
	if (cu == null) {
		throw new IllegalArgumentException("Compilation unit must not be null"); //$NON-NLS-1$
	}
	List<CompletionItem> result = new ArrayList<>();
	IDocument d = JsonRpcHelpers.toDocument(cu.getBuffer());
	if (offset < 0 || d.getLength() == 0) {
		return result;
	}
	try {
		int p = (offset == d.getLength() ? offset - 1 : offset);
		IRegion line = d.getLineInformationOfOffset(p);
		String lineStr = d.get(line.getOffset(), line.getLength()).trim();
		if (!lineStr.startsWith("/**")) {
			return result;
		}
		if (!hasEndJavadoc(d, offset)) {
			return result;
		}
		String text = collector.getContext().getToken() == null ? "" : new String(collector.getContext().getToken());
		StringBuilder buf = new StringBuilder(text);
		IRegion prefix = findPrefixRange(d, line);
		String indentation = d.get(prefix.getOffset(), prefix.getLength());
		int lengthToAdd = Math.min(offset - prefix.getOffset(), prefix.getLength());
		buf.append(indentation.substring(0, lengthToAdd));
		String lineDelimiter = TextUtilities.getDefaultLineDelimiter(d);
		ICompilationUnit unit = cu;
		try {
			unit.reconcile(ICompilationUnit.NO_AST, false, null, null);
			String string = createJavaDocTags(d, offset, indentation, lineDelimiter, unit);
			if (string != null && !string.trim().equals(ASTERISK)) {
				buf.append(string);
			} else {
				return result;
			}
			int nextNonWS = findEndOfWhiteSpace(d, offset, d.getLength());
			if (!Character.isWhitespace(d.getChar(nextNonWS))) {
				buf.append(lineDelimiter);
			}
		} catch (CoreException e) {
			// ignore
		}
		final CompletionItem ci = new CompletionItem();
		Range range = JDTUtils.toRange(unit, offset, 0);
		boolean isSnippetSupported = JavaLanguageServerPlugin.getPreferencesManager().getClientPreferences().isCompletionSnippetsSupported();
		String replacement = prepareTemplate(buf.toString(), lineDelimiter, isSnippetSupported);
		ci.setTextEdit(new TextEdit(range, replacement));
		ci.setFilterText(JAVA_DOC_COMMENT);
		ci.setLabel(JAVA_DOC_COMMENT);
		ci.setSortText(SortTextHelper.convertRelevance(0));
		ci.setKind(CompletionItemKind.Snippet);
		ci.setInsertTextFormat(isSnippetSupported ? InsertTextFormat.Snippet : InsertTextFormat.PlainText);
		String documentation = prepareTemplate(buf.toString(), lineDelimiter, false);
		if (documentation.indexOf(lineDelimiter) == 0) {
			documentation = documentation.replaceFirst(lineDelimiter, "");
		}
		ci.setDocumentation(documentation);
		Map<String, String> data = new HashMap<>(3);
		data.put(CompletionResolveHandler.DATA_FIELD_URI, JDTUtils.toURI(cu));
		data.put(CompletionResolveHandler.DATA_FIELD_REQUEST_ID, "0");
		data.put(CompletionResolveHandler.DATA_FIELD_PROPOSAL_ID, "0");
		ci.setData(data);
		result.add(ci);
	} catch (BadLocationException excp) {
		// stop work
	}
	return result;
}
 
private void updateReplacement(CompletionProposal proposal, CompletionItem item, char trigger, boolean isResolving) {
	// reset importRewrite
	this.importRewrite = TypeProposalUtils.createImportRewrite(compilationUnit);

	List<org.eclipse.lsp4j.TextEdit> additionalTextEdits = new ArrayList<>();

	StringBuilder completionBuffer = new StringBuilder();
	Range range = null;
	if (isSupportingRequiredProposals(proposal)) {
		CompletionProposal[] requiredProposals = proposal.getRequiredProposals();
		if (requiredProposals != null) {
			for (CompletionProposal requiredProposal : requiredProposals) {
				switch (requiredProposal.getKind()) {
				case CompletionProposal.TYPE_IMPORT:
				case CompletionProposal.METHOD_IMPORT:
				case CompletionProposal.FIELD_IMPORT:
					appendImportProposal(completionBuffer, requiredProposal, proposal.getKind());
					break;
				case CompletionProposal.TYPE_REF:
					org.eclipse.lsp4j.TextEdit edit = toRequiredTypeEdit(requiredProposal, trigger, proposal.canUseDiamond(context));
					if (proposal.getKind() == CompletionProposal.CONSTRUCTOR_INVOCATION
						|| proposal.getKind() == CompletionProposal.ANONYMOUS_CLASS_CONSTRUCTOR_INVOCATION
						|| proposal.getKind() == CompletionProposal.ANONYMOUS_CLASS_DECLARATION) {
							completionBuffer.append(edit.getNewText());
							range = edit.getRange();
					} else {
						additionalTextEdits.add(edit);
					}
					break;
				default:
					/*
					 * In 3.3 we only support the above required proposals, see
					 * CompletionProposal#getRequiredProposals()
					 */
					Assert.isTrue(false);
				}
			}
		}
	}

	if (range == null) {
		boolean completionOverwrite = preferences.isCompletionOverwrite();
		if (!completionOverwrite && (proposal.getKind() == CompletionProposal.METHOD_REF || proposal.getKind() == CompletionProposal.LOCAL_VARIABLE_REF || proposal.getKind() == CompletionProposal.FIELD_REF)) {
			// See https://github.com/redhat-developer/vscode-java/issues/462
			int end = proposal.getReplaceEnd();
			if (end > offset) {
				proposal.setReplaceRange(proposal.getReplaceStart(), offset);
			}
		}
		range = toReplacementRange(proposal);
	}
	if (proposal.getKind() == CompletionProposal.METHOD_DECLARATION) {
		appendMethodOverrideReplacement(completionBuffer, proposal);
	} else if (proposal.getKind() == CompletionProposal.POTENTIAL_METHOD_DECLARATION && proposal instanceof GetterSetterCompletionProposal) {
		appendMethodPotentialReplacement(completionBuffer, (GetterSetterCompletionProposal) proposal);
	} else if (proposal.getKind() == CompletionProposal.ANONYMOUS_CLASS_CONSTRUCTOR_INVOCATION || proposal.getKind() == CompletionProposal.ANONYMOUS_CLASS_DECLARATION) {
		appendAnonymousClass(completionBuffer, proposal, range);
	} else {
		appendReplacementString(completionBuffer, proposal);
	}
	//select insertTextFormat.
	if (client.isCompletionSnippetsSupported()) {
		item.setInsertTextFormat(InsertTextFormat.Snippet);
	} else {
		item.setInsertTextFormat(InsertTextFormat.PlainText);
	}
	String text = completionBuffer.toString();
	if (range != null) {
		item.setTextEdit(new org.eclipse.lsp4j.TextEdit(range, text));
	} else {
		// fallback
		item.setInsertText(text);
	}

	if (!client.isResolveAdditionalTextEditsSupport() || isResolving) {
		addImports(additionalTextEdits);
		if(!additionalTextEdits.isEmpty()){
			item.setAdditionalTextEdits(additionalTextEdits);
		}
	}
}
 
 类所在包
 类方法
 同包方法