将Javascript添加到自定义语言 - ACE编辑器 [英] Add Javascript into Custom Language - ACE Editor
问题描述
我正在使用ACE编辑器来使用JSON作为基础的自定义元语言。但我想在用户输入类似
I am using ACE editor for a custom metalanguage using JSON as base. But I want to add Javascript when the user types something like
custom的内容时添加Javascript:function(param){.... javascript code .....}
"custom" : function(param){ .... javascript code ..... }
我们的想法是使用已经用于JS的样式突出显示javascript代码。
The idea is to highlight the javascript code using the styling already used for JS.
我不是用JSON highligther,只是使用我自己的。
I am not usng the JSON highligther, just use my own.
我在文档中看到嵌入不同的荧光笔( https://github.com/ajaxorg/ace/wiki/Creating-or-Extending-an-Edit-Mode )
I saw in the documentation something "Embedding a different highlighter" (https://github.com/ajaxorg/ace/wiki/Creating-or-Extending-an-Edit-Mode)
但它不起作用。这是我的代码:
But it doesnt works. Here is my code:
谢谢!
推荐答案
这是一个有点困难,因为你需要计算大括号来检测javascript模式何时结束。以下代码似乎运行良好
This is a bit hard to do since you need to count braces to detect when javascript mode ends. The following code seems to work well
define(function(require, exports, module) {
"use strict";
var oop = require("../lib/oop");
var JsonHighlightRules = require("./json_highlight_rules").JsonHighlightRules;
var JavaScriptHighlightRules = require("./javascript_highlight_rules")
.JavaScriptHighlightRules;
var JsonPlusHighlightRules = function() {
JsonHighlightRules.call(this);
this.$rules.start.unshift({
regex: "function",
next: "js-start",
token: "keyword"
});
this.embedRules(JavaScriptHighlightRules, "js-", [{
regex: "[{}]", onMatch: function(val, state, stack) {
this.next = "";
console.log(stack, this.next, val);
if (val == "{") {
stack.unshift("js-start", state);
return "paren";
}
if (val == "}" && stack.length) {
stack.shift();
this.next = stack.shift();
if (this.next.indexOf("quasi") != -1)
return "paren.string";
}
if (val == "}" && !stack.length) {
this.next = "start";
}
return "paren";
}
}], ["no_regex"]);
};
oop.inherits(JsonPlusHighlightRules, JsonHighlightRules);
exports.JsonPlusHighlightRules = JsonPlusHighlightRules;
});
这篇关于将Javascript添加到自定义语言 - ACE编辑器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!