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

项目:vscode-javac    文件:Completions.java   
/**
 * Complete constructor with minimal type information.
 *
 * <p>This is important when we're autocompleting new ? with a class that we haven't yet
 * imported. We don't yet have detailed type information or javadocs, and it's expensive to
 * retrieve them. So we autocomplete a minimal constructor, and let signature-help fill in the
 * details.
 */
private CompletionItem completeConstructor(
        String packageName, String className, boolean hasTypeParameters) {
    CompletionItem item = new CompletionItem();
    String qualifiedName = packageName.isEmpty() ? className : packageName + "." + className;
    String key = String.format("%s#<init>", className);
    String insertText = className;

    if (hasTypeParameters) insertText += "<>";

    insertText += "($0)";

    item.setKind(CompletionItemKind.Constructor);
    item.setLabel(className);
    item.setDetail(packageName);
    item.setInsertText(insertText);
    item.setInsertTextFormat(InsertTextFormat.Snippet);
    item.setCommand(TRIGGER_SIGNATURE_HELP);
    item.setFilterText(className);
    item.setAdditionalTextEdits(addImport(qualifiedName));
    item.setSortText("3/" + className);
    item.setData(key);

    return item;
}
项目:SOMns-vscode    文件:CompletionItem.java   
/**
 * The format of the insert text. The format applies to both the `insertText` property
 * and the `newText` property of a provided `textEdit`.
 */
@Pure
public InsertTextFormat getInsertTextFormat() {
  return this.insertTextFormat;
}
项目:eclipse.jdt.ls    文件:CompletionProposalReplacementProvider.java   
/**
 * Updates the replacement and any additional replacement for the given item.
 *
 * @param proposal
 * @param item
 * @param trigger
 */
public void updateReplacement(CompletionProposal proposal, CompletionItem item, char trigger) {
    // 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) {
        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);
    }
    addImports(additionalTextEdits);
    if(!additionalTextEdits.isEmpty()){
        item.setAdditionalTextEdits(additionalTextEdits);
    }
}
项目:lsp4j    文件:CompletionItem.java   
/**
 * The format of the insert text. The format applies to both the `insertText` property
 * and the `newText` property of a provided `textEdit`.
 */
@Pure
public InsertTextFormat getInsertTextFormat() {
  return this.insertTextFormat;
}
项目:che    文件:CompletionItemBasedCompletionProposal.java   
@Override
public void apply(Document document) {
  List<TextEdit> edits = new ArrayList<>();
  TextPosition cursorPosition = document.getCursorPosition();
  if (completionItem.getTextEdit() != null) {
    edits.add(adjustForOffset(completionItem.getTextEdit(), cursorPosition, offset));
  } else if (completionItem.getInsertText() == null) {
    edits.add(
        new TextEdit(
            newRange(
                cursorPosition.getLine(),
                cursorPosition.getCharacter() - currentWord.length(),
                cursorPosition.getLine(),
                cursorPosition.getCharacter()),
            completionItem.getLabel()));
  } else {
    edits.add(
        new TextEdit(
            newRange(
                cursorPosition.getLine(),
                cursorPosition.getCharacter() - offset,
                cursorPosition.getLine(),
                cursorPosition.getCharacter()),
            completionItem.getInsertText()));
  }
  if (completionItem.getAdditionalTextEdits() != null) {
    completionItem
        .getAdditionalTextEdits()
        .forEach(e -> edits.add(adjustForOffset(e, cursorPosition, offset)));
  }
  TextEdit firstEdit = edits.get(0);
  if (completionItem.getInsertTextFormat() == InsertTextFormat.Snippet) {
    Position startPos = firstEdit.getRange().getStart();
    TextPosition startTextPosition =
        new TextPosition(startPos.getLine(), startPos.getCharacter());
    int startOffset = document.getIndexFromPosition(startTextPosition);
    Pair<String, LinkedModel> resolved =
        new SnippetResolver(new DocumentVariableResolver(document, startTextPosition))
            .resolve(firstEdit.getNewText(), editor, startOffset);
    firstEdit.setNewText(resolved.first);
    ApplyWorkspaceEditAction.applyTextEdits(document, edits);
    if (resolved.second != null) {
      editor.getLinkedMode().enterLinkedMode(resolved.second);
      lastSelection = null;
    } else {
      lastSelection = computeLastSelection(document, firstEdit);
    }
  } else {
    ApplyWorkspaceEditAction.applyTextEdits(document, edits);
    lastSelection = computeLastSelection(document, firstEdit);
  }
}
项目:SOMns-vscode    文件:CompletionItem.java   
/**
 * The format of the insert text. The format applies to both the `insertText` property
 * and the `newText` property of a provided `textEdit`.
 */
public void setInsertTextFormat(final InsertTextFormat insertTextFormat) {
  this.insertTextFormat = insertTextFormat;
}
项目:lsp4j    文件:CompletionItem.java   
/**
 * The format of the insert text. The format applies to both the `insertText` property
 * and the `newText` property of a provided `textEdit`.
 */
public void setInsertTextFormat(final InsertTextFormat insertTextFormat) {
  this.insertTextFormat = insertTextFormat;
}