我正在为多种语言(Groovy、Python、Beanshell、XSLT)使用通用 Codemirror 编辑器。根据下拉菜单中选择的语言,我为编辑器设置了相应的模式。
如何为上述语言应用自动缩进?
我正在为多种语言(Groovy、Python、Beanshell、XSLT)使用通用 Codemirror 编辑器。根据下拉菜单中选择的语言,我为编辑器设置了相应的模式。
如何为上述语言应用自动缩进?
CodeMirror 模式可以为其各自的语言提供缩进,并且大多数都可以(例如python 模式)。这可以通过检查模式的源以检查是否indent(state, textAfter)
已实现来验证。从文档:
如果您希望您的模式提供智能缩进(通过
indentLine
方法和indentAuto
andnewlineAndIndent
命令,可以绑定键indent(state, textAfter)
),您必须 在模式对象上定义一个方法。
应用定义 的模式indent(state, textAfter)
,并假设smartIndent
设置为true
(这是默认值)后,应该透明地提供自动缩进,您无需付出额外的努力。
如果一个模式不支持开箱即用的智能缩进,你可以自己实现它。请参阅文档中有关编写 CodeMirror 模式的部分。