2015-04-06 42 views
1

任何人都可以帮助我创建新模式到codemirror?Markdown模式codemirror创建

我需要把这个部分的{>1<}![title](site)无形{>1<}(与特定类别跨度)

我怎么能这样做?

我tryed类似的东西:

CodeMirror.defineSimpleMode("imageID", { 
    start: [ 
     {regex: /(?:\{\>([^<]*)\<\})/gmi, token: "imageID"} 
    ] 
}); 

,但它不工作...任何想法,为什么?

+0

CodeMirror模式不能让文字不可见。你必须为此使用'markText'方法。 – Marijn

回答

0

解决方案:

function findNext(lastPos){ 
    var text = /^\!\[([^\]]*)\]\(([^\)]*)\)+/; 
    for (cursor = editor.getSearchCursor(text); cursor.findNext();) 
     editor.replaceRange('{>'+(i++)+'<}',cursor.from(),cursor.from()) 
     cursor = editor.getSearchCursor(text, lastPos || editor.getCursor()); 
if (!cursor.findNext()){ 
    cursor = editor.getSearchCursor(text); 
    if (!cursor.findNext()) {return;} 
} 
    lastPos = cursor.to(); 
} 

//------------------------------------ 

function findAloneIdx(lastPos){ 

    var text = /(\{\>([^<]*)\<\}\!?\[?)+/; 
    for (cursor = editor.getSearchCursor(text); cursor.findNext();) 
     if(editor.getRange(cursor.from(), cursor.to()).slice(-2) !== '![') 
      editor.replaceRange('',cursor.from(),cursor.to()) 
     else 
      editor.markText(cursor.from(), {line: cursor.to().line, ch: cursor.to().ch-2}, {className: "styled-background"}); 
      cursor = editor.getSearchCursor(text, lastPos || editor.getCursor()); 
    if (!cursor.findNext()){ 
     cursor = editor.getSearchCursor(text); 
     if (!cursor.findNext()) {return;} 
    } 
    lastPos = cursor.to(); 
}