2017-05-28 33 views
0

我想在codemirror中以特定顏色在/* */之間着色我的評論...我搜索並找到了樣本以在「」它工作正常。如何在codemirror中以我的模式在特定顏色中對顏色進行評論

當我在代碼然後代碼不色我的意見代替「」/* */

的工作代碼爲:

CodeMirror.defineMode("strings", function() { 
    return { 
    startState: function() {return {inString: false};}, 
    token: function(stream, state) { 
     // If a string starts here 
     if (!state.inString && stream.peek() == '"') { 
     stream.next();   // Skip quote 
     state.inString = true; // Update state 
     } 

     if (state.inString) { 
     if (stream.skipTo('"')) { // Quote found on this line 
      stream.next();   // Skip quote 
      state.inString = false; // Clear flag 
     } else { 
      stream.skipToEnd(); // Rest of line is string 
     } 
     return "string";   // Token style 
     } else { 
     stream.skipTo('"') || stream.skipToEnd(); 
     return null;    // Unstyled token 
     } 
    } 
    }; 
}); 

我嘗試: 注意我只有// 但代碼不能正常工作 這個替換是我的在線試試jsbin but not work

所以我的錯?

回答

1

documentation指定,

PEEK()→串

返回流中的下一個字符,而不前進它。在行尾會返回一個空值。

stream.peek()只返回1個字符,您要匹配"/*",這是2個字符。

你想用stream.match()

匹配(模式:字符串,消耗:布爾,caseFold:布爾)→布爾
匹配(模式:正則表達式,消耗:布爾)→數組

像多字符食品一樣行爲 - 如果消費是真實的或者沒有給出 - 或者不更新流位置的前瞻 - 如果它是假的。模式可以是以^開頭的字符串或正則表達式。當它是一個字符串時,可以將caseFold設置爲true以使匹配不區分大小寫。當成功匹配正則表達式時,如果需要提取匹配的組,則返回的值將是匹配返回的數組。

這將返回true如果當前流位置相匹配"/*"和會吃2個字符:

stream.match('/*', true) 
+0

我嘗試,但怎麼樣的功能「stream.skipTo(」 * /「),」它不工作......查看鏈接中的更新:http://jsfiddle.net/TcqAf/711/並注意「/」最後不是顏色@Bertrand Marron – kernal

相關問題