1

我正在尝试为 CodeMirror 编写 Prolog 模式,而我主要是 JavaScript 和 CodeMirror 新手。我现在正在研究一些特定的布局任务。if-then-else 的 Prolog 布局样式之一是

head(Arg) :-
    (   if
    ->  then
    ;   else
    ).

我使用的编辑器(SWI-Prolog 的 PceEmacs)通过制作 (、> 和 ; 活动字符并查看我们是否在 if-then-else 中来实现这一点。键入“(”将插入“(”,键入 > 前面带有“ -”将对齐并插入“->”和类似的“;”。我能看到的最接近的是使用electricChars ">;",这让我可以缩进,但不允许我在标点符号后添加空格。如何完成了吗?

4

1 回答 1

2

例如,将一个键绑定到"'('",并在您的处理程序函数中,查看您的上下文是否适用,如果适用,则调用.replaceSelection("( ", "end"),如果没有,则返回CodeMirror.Pass以让默认行为发生。

于 2013-06-28T06:20:45.633 回答