gpt4 book ai didi

java - Xtext - 带退格键的自动编辑

转载 作者:太空宇宙 更新时间:2023-11-04 12:17:18 24 4
gpt4 key购买 nike

假设以下情况:我们有一个文档,其中包含空格
(例如表示为 _ )我们在这些 (4) 个空格后面有插入符号

_ _ _ _|

我希望编辑器在用户按退格键时删除所有 4 个空格,而不是一个。

我正在扩展DefaultIndentLineAutoEditStrategy,并覆盖以下方法

public voidcustomizeDocumentCommand(IDocument d, DocumentCommand c)

我面临两个问题:

  1. 如何检测 DocumentCommand 中是否使用了退格键?如果您使用换行符,c.text 包含 "\n""\r\n",但如果您使用退格键,则它等于 ""
  2. 如何再插入 3 个退格键?将 "\b" 附加到 c.text 不起作用。

最佳答案

好的,我成功实现了。

  1. if (c.text.equals("") && c.length == 1) 条件检测到退格/删除的使用
  2. 可以按以下方式再删除 3 个字符:
    c.offset-=3;
    c.length=4;

整个实现可以如下所示:

private void handleBackspace(IDocument d, DocumentCommand c) {
if (c.offset == -1 || d.getLength() == 0)
return;
int p = (c.offset == d.getLength() ? c.offset - 1 : c.offset);
IRegion info;
try {
info = d.getLineInformationOfOffset(p);
String line = d.get(info.getOffset(), info.getLength());
int lineoffset = info.getOffset();
/*Make sure unindent is made only if user is indented and has caret in correct position */
if ((p-lineoffset+1)%4==0&&((line.startsWith(" ") && !line.startsWith(" ")) || (line.startsWith(" ") && !line.startsWith(" ")))){ //1 or 2 level fixed indent
c.offset-=3;
c.length=4;
}

}catch (org.eclipse.jface.text.BadLocationException e) {
e.printStackTrace();
}
}

关于java - Xtext - 带退格键的自动编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39249180/

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