Eclipse JavaEditor 扩展:如何添加正确的缩进行?
需要什么?
我们正在为 Eclipse 的 JavaEditor 编写扩展。 我们需要一种方法在光标所在行的前后添加一行。
新行上的光标应该位于正确的位置(正确插入)。
示例(# 是光标):
之前 (I
):
public class Test {
public static void main#(String[] args) {
System.out.println("Test!");
}
}
想要之后 (II
):
public class Test {
#
public static void main(String[] args) {
System.out.println("Test!");
}
不想要之后(又名当前状态)(III
):
public class Test {
#
public static void main(String[] args) {
System.out.println("Test!");
}
当前状态:
从 I
到 III
的转换可以通过 IDocument.replace()
(一个 InsertEdit 或通过
IDocumentExtension4
的 rewriteSessions。
问题是如何在扩展中插入新行后调用JavaEditor的缩进函数。 或者甚至可以直接正确地缩进该行(I
到 II
)? (缩进的长度不应该总是当前行的长度,而是正确的长度。如果可能,不应使用 internal
包,否则 IndentUtil
将是解决方案。)
What is needed?
We are writing an extension to eclipse's JavaEditor. We need a way to add a line before and after the line the cursor is in.
The cursor on the new line should be on the correct position (correctly indeted).
Sample (# is the cursor):
before (I
):
public class Test {
public static void main#(String[] args) {
System.out.println("Test!");
}
}
after wanted (II
):
public class Test {
#
public static void main(String[] args) {
System.out.println("Test!");
}
after not wanted (a.k.a. the present state) (III
):
public class Test {
#
public static void main(String[] args) {
System.out.println("Test!");
}
Present state:
The transformation from I
to III
can be done via IDocument.replace()
, an InsertEdit
or via IDocumentExtension4
's rewriteSessions.
The problem is how to call JavaEditor's indent function after inserting the new line from the extension. Or is it even possible to indent the line directly correct (I
to II
)? (The length of the indent should not always be the one of the current line, but the correct one. internal
packages should not be used if possible, otherwise IndentUtil
would be the solution.)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
一种解决方案似乎是不使用
IDocument.replace()
,例如,而是使用
insert()
,例如,这可以工作,但还不是一个完整的解决方案,可以在不使用缩进函数的情况下调用缩进函数。生成对 org.eclipse.jdt 的依赖项:-(。这仍然是需要的。
One solution seems to be not to use
IDocument.replace()
, e.g.but
insert()
, e.g.That works but is not yet a complete solution to call the indent function without generating dependencies to
org.eclipse.jdt
:-(. That is still needed.