Package ro.redeul.google.go.lang.completion.insertHandler

Source Code of ro.redeul.google.go.lang.completion.insertHandler.ReturnInsertHandler

package ro.redeul.google.go.lang.completion.insertHandler;

import com.intellij.codeInsight.completion.InsertHandler;
import com.intellij.codeInsight.completion.InsertionContext;
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.template.TemplateManager;
import com.intellij.codeInsight.template.impl.TemplateImpl;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement;
import ro.redeul.google.go.lang.psi.toplevel.GoFunctionDeclaration;

import static ro.redeul.google.go.editor.TemplateUtil.createTemplate;
import static ro.redeul.google.go.editor.TemplateUtil.getTemplateVariableExpression;
import static ro.redeul.google.go.inspection.InspectionUtil.getFunctionResultCount;
import static ro.redeul.google.go.lang.psi.utils.GoPsiUtils.findParentOfType;

public class ReturnInsertHandler implements InsertHandler<LookupElement> {
    @Override
    public void handleInsert(InsertionContext context, LookupElement item) {
        int offset = context.getTailOffset();
        PsiElement element = context.getFile().findElementAt(offset);
        GoFunctionDeclaration function = findParentOfType(element, GoFunctionDeclaration.class);
        if (function == null) {
            return;
        }

        int count = getFunctionResultCount(function);
        if (count == 0) {
            return;
        }

        TemplateImpl template = createTemplate(" " + getTemplateVariableExpression(count, ", "));
        for (int i = 0; i < count; i++) {
            String defaultValue = String.format("\"v%d\"", i);
            template.addVariable("v" + i, defaultValue, defaultValue, true);
        }

        Editor editor = context.getEditor();
        Project project = context.getProject();
        TemplateManager.getInstance(project).startTemplate(editor, "", template);
    }
}
TOP

Related Classes of ro.redeul.google.go.lang.completion.insertHandler.ReturnInsertHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.