在webpy服务器(python)中将关键字导入ace编辑器高亮显示

2024-09-29 07:34:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Javascript Ace文本编辑器,需要将关键字加载到(DynHighlightRules)中,以突出显示导入的关键字。我有从静态关键字工作的亮点

editor.getSession().setMode("ace/mode/highlightRules")

,但我需要在编辑器呈现后导入新规则。我找到了一个很好的解决方案,它可以在Apache服务器上完美地工作,但在网页.pypython服务器。我认为这是由于模板页面不在服务器的根级别。有人在Webpy中部署了Ace编辑器并解决了这个问题吗?在


Tags: 亮点服务器mode静态关键字javascript编辑器editor
1条回答
网友
1楼 · 发布于 2024-09-29 07:34:52

好吧,我找到了解决问题的办法。这是一个变通办法,而不是我最初解决问题的方式。我的第一次尝试是在ace.定义“函数,但它无法正确处理它,部件将丢失,从而导致错误。然后我尝试动态导入关键字,但在python环境中无法实现。最后,我想把整个过程都包装在ajax调用的成功中,现在它完全正确地工作了。我想当嵌入到ace函数中时,ajax事件和定义的其他部分之间的时间不同步。在

因此,简而言之,答案是将整个定义包装在ajax成功回调中。在

$.ajax({
            url: "/readUserCreatedKeywords",
            type: "POST",
            success: function(response){
                var keywordsString = "";
                var tmpArr = response.split(",");
                var tmpArrLen = tmpArr.length;
                var s = 0;
                var halfNum = 0;
                while (s < tmpArrLen) { // Clean array and save keywords and args into respective arrays
                    halfNum = parseInt(s/2);
                    tmpArr[s] = tmpArr[s].replace("u'", "").replace("[", "").replace("'", "").replace("(u", "").replace(")", "").replace("]", "").replace("(", "").replace(" ", "");

                    if (s % 2 == 0){ //Store even values in keywords
                       keywordsString += tmpArr[s] + "|";
                       //console.log("tmpArr[" + s + "]" + tmpArr[s]);
                    }
                    s++;
                }

                ace.define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) {
                ...............................................lots of code..........................................

                exports.Mode = Mode;
                });

}

})

相关问题 更多 >