当前位置: 首页 > 面试题库 >

使用JDT以编程方式格式化源代码

蓝恩
2023-03-14
问题内容

我正在使用JDT生成一些类。之后,我想格式化整个ICompilationUnit,就像我在没有选择的打开的编辑器中按Ctrl + Shift +
F(源>格式)一样。

高度赞赏JDT中用于以编程方式格式化源代码的API的任何指针。

另外:我像这样尝试过,但是代码没有改变。我在说什么

private void formatUnitSourceCode(ICompilationUnit targetUnit, IProgressMonitor monitor) throws JavaModelException {
    CodeFormatter formatter = ToolFactory.createCodeFormatter(null);
    TextEdit formatEdit = formatter.format(CodeFormatter.K_COMPILATION_UNIT, targetUnit.getSource(), 0, targetUnit.getSource().length(), 0, null);
    targetUnit.applyTextEdit(formatEdit, monitor);
}

问题答案:

这可能是一个错误,但是使用Elcipse 4.2.2中的JDK时,有必要创建ICompilationUnit的工作副本,以便将TextEdit应用于文件。

    targetUnit.becomeWorkingCopy(new SubProgressMonitor(monitor, 1));
    ... do work on the source file ...
    formatUnitSourceCode(targetUnit, new SubProgressMonitor(monitor, 1));
    targetUnit.commitWorkingCopy(true, new SubProgressMonitor(monitor, 1));

格式化本身是这样完成的:

public static void formatUnitSourceCode(ICompilationUnit unit, IProgressMonitor monitor) throws JavaModelException {
    CodeFormatter formatter = ToolFactory.createCodeFormatter(null);
    ISourceRange range = unit.getSourceRange();
    TextEdit formatEdit = formatter.format(CodeFormatter.K_COMPILATION_UNIT, unit.getSource(), range.getOffset(), range.getLength(), 0, null);
    if (formatEdit != null && formatEdit.hasChildren()) {
        unit.applyTextEdit(formatEdit, monitor);
    } else {
        monitor.done();
    }
}


 类似资料:
  • 我正在使用org。日食jdt。果心格式化程序。代码格式化程序类。我对正确设置评论的格式有问题。谁能告诉我应该使用DefaultCodeFormatterConstants中的哪些选项来正确格式化注释块? 我有这样的情况: 我想把它格式化成 甚至如何格式化评论块,就像我的例子一样,这些评论根本没有格式化。

  • 在XML中,我用TableRow(表的标题)定义了TableLayout。每隔一行将以编程方式添加。问题:我无法使新行与XML中的行对齐 > 3个TextView数组,1个TableRow数组 循环使用TextViews和TableRows填充这些数组 全部赋予setTableRowParams方法 设置TextViews的文本 将所有行添加到TableLayout setTableRowPara

  • 问题内容: 我的目的是为Java Source File中的方法以编程方式调用Eclipse命令。重命名这样的方法还应该将更改应用于使用/引用此方法的所有实例。 我相信JDT具有Refactoring API,但无法找到相同的任何文档或教程。 有人能指出我正确的方向吗? 编辑:运行时不需要更改。 问题答案: 我认为您最有前途的方法是使用Eclipse源代码。 下载带有源代码的所需版本。特别是,您需

  • 使用 lavas init 创建的模板项目中,在以下场景下都会以编程方式使用 Lavas: server.dev.js 开发环境下的 SPA/SSR 模式。 server.prod.js 生产环境下的 SSR 模式。 可见以编程方式使用 Lavas 的主要场景就是 SSR 模式,而在 SPA 模式下仅仅是供开发服务器使用。因此,如果开发者选择了 SSR 模式,阅读下面的内容将十分有帮助: 如何选择

  • 问题内容: 我一直在研究搜索,但是找不到适合Javascript的令人满意的代码格式化程序。 我发现了一些相关的工具,例如语法突出显示工具和漂亮的打印机,但是我正在寻找一种工具,我可以理想地在Eclipse中为其创建包装器,并且只需从菜单栏中运行即可。因此,如果有任何基于Java的可用,那将是一大优势。自由和/或开源也是首选。 我正在寻找开发小组可以用来保持一致的代码样式的东西。 谢谢。 问题答案

  • 问题内容: 有什么办法以编程方式最小化JInternalFrame? 问题答案: “图标化或取消图标化此内部框架…”