如何用条件给暗镜中的文字上色

How to color words in codemirror with condition?

本文关键字:文字上 何用 条件      更新时间:2023-09-26

我在codemirror上构建了自己的语言,我有一个包含类名的数组我还有一个临时数组(当我键入类名时,我将这个类的字段加载到临时数组中)

例如,如果我有两个类:

第一个类的名字是Data,它的字段是:

fnamelname,age

第二个类的名称是info,它的字段是:

mother;father

当我输入codemirror Data时,temp数组包含(fname, lname, data)当我输入codemirror info时,temp数组包含(mother, father)

我想要的

仅当它出现在自己的类名之后时,才以特定的颜色标记字段(即当我在codemirror Data.fname上键入时,我想将fname标记为蓝色,但是当我在codemirror info.fname上键入时,我不想将fname标记为蓝色,因为(fname不包含在类"info"中))

我的尝试

CodeMirror.defineMode("mymode", function() {    
    return {
        token: function(stream,state) {
            for (var i = 0; i <ClassName.length ; i++) {
                if (stream.match(ClassName[i]) ) {
                    return "style1";
                }                   
            }
            for (var i = 0; i <temp.length ; i++) {
                if (stream.match(temp[i]) ) {
                    return "style2";
                }                   
            }                   
    };        
});

My problem in My try

数组temp的内容在codemirror上输入类名时发生了变化…所以发生的事情是:当我输入codemirror Data.fname时,单词fname颜色为蓝色,但如果我输入codemirror Data.fname info.mother(在我输入info之前)。母词fname颜色为蓝色,因为它包含在临时数组(fname, lname, data)中,但在我键入info之后。母亲 temp数组的包含被更改为(mother, father)),所以fname的颜色变为黑色

**这张图片显示的是执行**

这里的单词"fname"颜色为蓝色

这里单词"fname"的颜色变成了黑色

我知道我的问题,因为数组temp的包含变化…但是我找不到解决它的方法……有什么帮助吗?

请查看codemmirror源代码中可用的各种语言模式(如python, javascript)等。您需要了解标记化,这是任何语言模式实现的基础。还要看一下codemmirror的主题,这样你的实现就可以支持你的语言的多个主题。