gpt4 book ai didi

java - 以编程方式添加 Java 代码模板

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:45:26 24 4
gpt4 key购买 nike

我喜欢 Eclipse 让我使用 Tab 键在方法调用的参数之间跳转。我希望我的插件提供类似的功能。准确地说,我正在向编辑器中注入(inject)一些文本,我想突出显示特定语法并让程序员使用 Tab 键跳转到下一个匹配项。

这是一个例子。假设我动态创建了以下片段:

String a = "bogus string";
int i = a.[?]

我会将其注入(inject)编辑器,我希望 [?] 突出显示并准备好进行修改(用户可能会键入 length())。此外,如果有更多 [?] 片段,我希望用户使用 Tab 移动到下一个。

经过一番研究,我发现可以使用 templates 来完成.但是,我在网上找不到任何相关示例。有人有这方面的经验吗?

更新:

我找到了两个可能有用的链接,但我仍然无法找到解决方案。

link one

link two

最佳答案

示例处理程序代码:

AbstractTextEditor activeEditor = 
(AbstractTextEditor) HandlerUtil.getActiveEditor(event);

ISourceViewer sourceViewer =
(ISourceViewer) activeEditor.getAdapter(ITextOperationTarget.class);

Point range = sourceViewer.getSelectedRange();

// You can generate template dynamically here!
Template template = new Template("sample",
"sample description",
"no-context",
"private void ${name}(){\r\n" +
"\tSystem.out.println(\"${name}\")\r\n"
+ "}\r\n", true);

IRegion region = new Region(range.x, range.y);
TemplateContextType contextType = new TemplateContextType("test");
TemplateContext ctx =
new DocumentTemplateContext(contextType,
sourceViewer.getDocument(),
range.x,
range.y);

TemplateProposal proposal
= new TemplateProposal(template, ctx, region, null);

proposal.apply(sourceViewer, (char) 0, 0, 0);

结果:

enter image description here

我建议您使用 org.eclipse.jdt.ui.javaCompletionProposalComputer 扩展。它允许您以更合法的方式贡献 Template。

在我的代码中,存在黑客攻击,因为无法合法地获取 ISourceViewer。我知道 ISourceViewerITextTargetOperation 本身,但它不是 API(非法转换)。 Template 旨在供 TemplateCompletionProcessorTemplateCompletionProposalComputer 使用。

关于java - 以编程方式添加 Java 代码模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13005003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com