【问题标题】:Eclipse Plugin How programmatically format Java code?Eclipse Plugin 如何以编程方式格式化 Java 代码?
【发布时间】:2023-01-20 18:09:53
【问题描述】:

我正在构建一个 Eclipse 插件,当用户按下命令时,它会替换选定的文本,但文本将插入而不是格式化的。用户必须运行格式代码快捷方式。替换文本时我必须如何自动设置格式?

private void replaceSelectedTextWithCode(String codeToInsert) {
            IEditorPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
                final ITextEditor editor = (ITextEditor) part;
                IDocumentProvider prov = editor.getDocumentProvider();
                IDocument doc = prov.getDocument(editor.getEditorInput());
                ISelection sel = editor.getSelectionProvider().getSelection();
                final TextSelection textSel = (TextSelection) sel;
                doc.replace(textSel.getOffset(), textSel.getLength(), codeToInsert);
            }
        }
    }

【问题讨论】:

    标签: java eclipse format eclipse-plugin


    【解决方案1】:

    您可以使用 Eclipse 内部格式化代码在替换文本时自动格式化文本。例如,对于提供的代码,您可以使用以下代码:

    final IFormattingContext context = new FormattingContext(); context.setProperty(FormattingContextProperties.CONTEXT_DOCUMENT, true);

    最终 MultiTextEdit edit = new MultiTextEdit(); edit.addChild(new ReplaceEdit(textSel.getOffset(), textSel.getLength(), codeToInsert));

    final TextEditOperation 操作 = new TextEditOperation(new TextEdit[] {edit});

    最后 IFormattingStrategy formattingStrategy = new DefaultFormattingStrategy(); formattingStrategy.format(文档,操作,上下文);

    这将根据工作区中指定的 Eclipse 格式化首选项来格式化代码。格式将应用于插入的代码,确保它在显示时格式正确。

    【讨论】:

      猜你喜欢
      • 2012-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-09
      • 2010-11-23
      • 1970-01-01
      • 2014-11-29
      • 1970-01-01
      相关资源
      最近更新 更多