我正在RichTextFX代码区(我认为这是一种TextArea)中构建一个YAML编辑器。我想在按Enter键时保持当前的缩进级别。例如:
- item1: foo
item1A:
subElement: A
<there should be 4 spaces here after I hit enter>
或者,如果有人已经在RichTextFX或JavaFX中构建了yaml编辑器,我希望有一个指向它的链接。
当我在这之后按回车键时,要添加子元素unde
这里有一个我编写的小助手类,如果当前行以给定后缀结尾,它将保持缩进,甚至将缩进增加一级。它使用RichTextFX的InputMap API。
import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.fxmisc.richtext.GenericStyledArea;
import org.fxmisc.wellbehaved.event.EventPattern;
import org.fxmisc.wellbehaved.event.InputMap;
import org.fxmisc.wellbehaved.event.Nodes;
import javafx.scene.input.KeyCode;
public class RichTextFXAutoIndenter {
private static final Pattern LEADING_WHITESPACE = Pattern.compile( "^\\s+" );
public static void install(GenericStyledArea<?, String, ?> genericStyledArea, String ... indentSuffixes) {
Nodes.addInputMap(genericStyledArea, InputMap.consume(EventPattern.keyPressed(KeyCode.ENTER), event -> enterPressed(genericStyledArea, indentSuffixes)));
}
private static void enterPressed(GenericStyledArea<?, String, ?> genericStyledArea, String[] indentSuffixes) {
genericStyledArea.replaceSelection("\n" + getIndentation(genericStyledArea, indentSuffixes));
}
private static String getIndentation(GenericStyledArea<?, String, ?> genericStyledArea, String[] indentSuffixes) {
String currentLine = genericStyledArea.getParagraph(genericStyledArea.getCurrentParagraph()).getSegments().get(0);
Matcher m = LEADING_WHITESPACE.matcher(currentLine);
String indent = "";
if (m.find()) {
indent = m.group();
}
if (Arrays.stream(indentSuffixes).anyMatch(suffix -> currentLine.trim().endsWith(suffix))) {
indent += "\t";
}
return indent;
}
}
您可以尝试以下操作:
Pattern whiteSpace = Pattern.compile( "^\\s+" );
codeArea.addEventFilter( KeyEvent.KEY_PRESSED, KE ->
{
if ( KE.getCode() == KeyCode.ENTER )
{
Matcher m = whiteSpace.matcher( codeArea.getParagraph( codeArea.getCurrentParagraph() ).getSegments().get( 0 ) );
if ( m.find() ) Platform.runLater( () -> codeArea.insertText( codeArea.getCaretPosition(), m.group() ) );
}
});
我使用的是RichTextFX,我很惊讶代码区没有默认启用滚动条。我怎样才能让它出现?
我正在使用RichTextFx(CodeArea)突出显示我的代码。我想更改一些关键字的文本背景颜色并在下面使用css:
SVN 使用唯一的中央仓库作为开发者之间沟通的桥梁,在开发者的工作拷贝和中央仓库之间传递变更集合(changeset),协作得以发生。这和Git的协作模型有所不同,Git 给予每个开发者一份自己的仓库拷贝,拥有自己完整的本地历史和分支结构。用户通常共享一系列的提交而不是单个变更集合。Git 允许你在仓库间共享整个分支,而不是从工作副本提交一个差异集合到中央仓库。 下面的命令让你管理仓库之间的连接,
我是Emacs的长期用户。我一直在试用VS Code,目前为止很喜欢。 我喜欢Emacs的一件事是,当我按tab时,它总是正确缩进代码。我已经看过了,但我似乎无法在VS代码中得到这种行为。我尝试过查看设置并搜索扩展程序,但没有运气。 有人能帮我吗?有没有我可以/必须安装的扩展程序来让它做我想做的事情? 我主要用PHP、HTML、CSS和Javascript编写代码。 先谢谢你。
2.5. 代码缩进 Python 函数没有明显的 begin 和 end, 没有花括号, 用于标函数的开始和结束。 唯一的分隔符是一个冒号 (:), 接着代码本身是缩进的。 例 2.5. 缩进 buildConnectionString 函数 def buildConnectionString(params): """Build a connection string from a di
我想缩进VisualStudio代码中的特定代码段。 我读了如何在Visual Studio Code中格式化代码?这提供了缩进整个代码的快捷方式,但在选择特定代码部分时不起作用。 在我的代码中选择了一些行后,我尝试了CtrlShiftF,但是整个文件是缩进的。我在Windows上使用Visual Studio Code Insider 1.8.0。我怎么能做到呢?