eclipse cdt 插件:如何可编程性应用 c 代码格式化程序
eclipse cdt plugin: How to programmability apply c code formatter
我正在 windows 8.1 上为 eclipse(Kepler) CDT 编写一个插件。
我的插件扩展了 eclipse 并使用户能够创建具有特定配置的项目。
我希望我所有的插件项目都具有相同的 C 代码格式。所以在我的插件代码中,在创建项目文件和配置时,我添加了以下代码以添加所需的格式:
ProjectScope scope = new ProjectScope(project);
IEclipsePreferences ref = scope.getNode("org.eclipse.cdt.core");
ref.put("org.eclipse.cdt.core.formatter.lineSplit", "100");
ref.put("org.eclipse.cdt.core.formatter.alignment_for_parameters_in_method_declaration", "18");
ref.put("org.eclipse.cdt.core.formatter.brace_position_for_block", "next_line");
ref.put("org.eclipse.cdt.core.formatter.brace_position_for_method_declaration", "next_line");
ref.put("org.eclipse.cdt.core.formatter.tabulation.char", "space");
ref.put("org.eclipse.cdt.core.formatter.alignment_for_arguments_in_method_invocation", "18");
ref.put("org.eclipse.cdt.core.formatter.alignment_for_constructor_initializer_list", "16");
ref.flush();
这段代码确实完成了它的工作并按照我的意愿配置了格式,但生成的格式仅存在于项目属性中,尚未应用。如果我想应用该格式并使文件以这种格式显示,我必须单击 apply 按钮,或按 CTRL+ SHIFT+F。
您是否知道应用格式可编程性的任何方法,尽管每个项目都将使用其已经格式化的自动生成文件生成?
您应该能够使用 Eclipse 菜单间谍 (Alt-Shift-F2) 或通过在键首选项中查找格式化程序的键绑定或通过导入 cdt.ui 来找到命令 ID插件作为源插件到您的 workbench.
有了命令 ID 后,就可以execute it programmatically 使用命令服务了。
我找到了解决问题的方法。感谢@Bananewizen 的帮助!
我发现ctrl+shift+f后面的命令id是:ICEditorActionDefinitionIds.FORMAT
我成功地 运行 命令可编程性,但我必须处理文件加载以格式化其代码。所以我实现了 IPartListener,在 partOpened 函数中,我写道:
@Override
public void partOpened(IWorkbenchPart part) {
try {
IFile file = (IFile) part.getSite().getPage().getActiveEditor().getEditorInput().getAdapter(IFile.class);
final String cmdName = ICEditorActionDefinitionIds.FORMAT;
IHandlerService handlerService = (IHandlerService) PlatformUI.getWorkbench().getService(IHandlerService.class);
try {
handlerService.executeCommand(cmdName, null);
} catch (Exception e) {}
} catch (Exception e) {}
}
现在句柄找到了,效果很好!
我正在 windows 8.1 上为 eclipse(Kepler) CDT 编写一个插件。 我的插件扩展了 eclipse 并使用户能够创建具有特定配置的项目。 我希望我所有的插件项目都具有相同的 C 代码格式。所以在我的插件代码中,在创建项目文件和配置时,我添加了以下代码以添加所需的格式:
ProjectScope scope = new ProjectScope(project);
IEclipsePreferences ref = scope.getNode("org.eclipse.cdt.core");
ref.put("org.eclipse.cdt.core.formatter.lineSplit", "100");
ref.put("org.eclipse.cdt.core.formatter.alignment_for_parameters_in_method_declaration", "18");
ref.put("org.eclipse.cdt.core.formatter.brace_position_for_block", "next_line");
ref.put("org.eclipse.cdt.core.formatter.brace_position_for_method_declaration", "next_line");
ref.put("org.eclipse.cdt.core.formatter.tabulation.char", "space");
ref.put("org.eclipse.cdt.core.formatter.alignment_for_arguments_in_method_invocation", "18");
ref.put("org.eclipse.cdt.core.formatter.alignment_for_constructor_initializer_list", "16");
ref.flush();
这段代码确实完成了它的工作并按照我的意愿配置了格式,但生成的格式仅存在于项目属性中,尚未应用。如果我想应用该格式并使文件以这种格式显示,我必须单击 apply 按钮,或按 CTRL+ SHIFT+F。
您是否知道应用格式可编程性的任何方法,尽管每个项目都将使用其已经格式化的自动生成文件生成?
您应该能够使用 Eclipse 菜单间谍 (Alt-Shift-F2) 或通过在键首选项中查找格式化程序的键绑定或通过导入 cdt.ui 来找到命令 ID插件作为源插件到您的 workbench.
有了命令 ID 后,就可以execute it programmatically 使用命令服务了。
我找到了解决问题的方法。感谢@Bananewizen 的帮助!
我发现ctrl+shift+f后面的命令id是:ICEditorActionDefinitionIds.FORMAT
我成功地 运行 命令可编程性,但我必须处理文件加载以格式化其代码。所以我实现了 IPartListener,在 partOpened 函数中,我写道:
@Override
public void partOpened(IWorkbenchPart part) {
try {
IFile file = (IFile) part.getSite().getPage().getActiveEditor().getEditorInput().getAdapter(IFile.class);
final String cmdName = ICEditorActionDefinitionIds.FORMAT;
IHandlerService handlerService = (IHandlerService) PlatformUI.getWorkbench().getService(IHandlerService.class);
try {
handlerService.executeCommand(cmdName, null);
} catch (Exception e) {}
} catch (Exception e) {}
}
现在句柄找到了,效果很好!