2014-05-19 5 views
9

मैं अपने नए भाषा मोड के लिए कोडमिरर को अनुकूलित करने पर काम कर रहा हूं। इस नए मोड कार्यान्वयन के हिस्से के रूप में, मैं एक नया टूल बार लिख रहा हूं जहां उपयोगकर्ता कुछ पाठ चुन सकता है और सम्मिलित कह सकता है। यह आदेश उस पाठ को सम्मिलित करना चाहिए जहां उपयोगकर्ता टूल बार पर क्लिक करने से पहले टाइप कर रहा था।दिए गए कर्सर की स्थिति पर एक नया टेक्स्ट डालने

मुझे ऐसा करने के लिए कोई एपीआई स्तर समर्थन नहीं मिला। अगर कोई अन्य तरीका है तो कोई इस पर मेरी मदद कर सकता है?

मूल रूप से वर्तमान कर्सर पॉजिटियो-लाइन नंबर और स्थिति प्राप्त करें जिस पर कर्सर वर्तमान में मौजूद है। एक स्थिति वस्तु

एक पाठ डालने के लिए एपीआई हो सकता है, insertText("Text", PositionObject)

उत्तर

9

की तरह कुछ कैसे के बारे में replaceSelection (http://codemirror.net/doc/manual.html#replaceSelection)?

+0

इस काम IE9 में ठीक से करता है में सम्मिलित करता है? मैं इसे IE9 का उपयोग कर रहा हूं लेकिन एक बार टेक्स्ट डालने के बाद, मैं कोई भी वर्ण आगे नहीं जोड़ पा रहा हूं। जब आप कोड दर्पण विकसित करते हैं तो क्या आपने इसे देखा है? – Chetan

3

आप replaceRange फ़ंक्शन का उपयोग करना चाहते हैं। भले ही नाम "प्रतिस्थापन" कहता है, यह तर्कों के आधार पर "सम्मिलित" के रूप में भी कार्य करता है। उस समय प्रलेखन से मैं इसे लिखता हूं:

दस्तावेज़ के हिस्से को स्ट्रिंग के साथ और उसके बीच में बदलें। {line, ch} ऑब्जेक्ट्स से और होना चाहिए। पर छोड़ा जा सकता है बस स्थिति से स्ट्रिंग डालें। जब मूल दिया जाता है, तो घटनाओं को "परिवर्तन" करने के लिए पारित किया जाएगा, और इसका पहला अक्षर होगा यह निर्धारित करने के लिए किया जाता है कि क्या यह परिवर्तन पिछले उत्पत्ति के लिए वर्णित तरीके से पिछले इतिहास ईवेंट के साथ विलय किया जा सकता है या नहीं।

9

अंत में नई लाइन को जोड़ने के लिए -

function updateCodeMirror(data){ 
    var cm = $('.CodeMirror')[0].CodeMirror; 
    var doc = cm.getDoc(); 
    var cursor = doc.getCursor(); // gets the line number in the cursor position 
    var line = doc.getLine(cursor.line); // get the line contents 
    var pos = { // create a new object to avoid mutation of the original selection 
     line: cursor.line, 
     ch: line.length - 1 // set the character position to the end of the line 
    } 
    doc.replaceRange('\n'+data+'\n', pos); // adds a new line 
} 

कॉल समारोह

updateCodeMirror("This is new line"); 
3

यहां बताया गया है मैंने किया: डालने के लिए

function insertTextAtCursor(editor, text) { 
    var doc = editor.getDoc(); 
    var cursor = doc.getCursor(); 
    doc.replaceRange(text, cursor); 
} 
1

अंतिम समारोह वर्तमान कर्सर positi पर पाठ एक कलाकार तरीके से। उम्मीद है कि यह मदद करता है।

function insertStringInTemplate(str) 
{ 
    var doc = editor_template.getDoc(); 
    var cursor = doc.getCursor(); 

    var pos = { 
     line: cursor.line, 
     ch: cursor.ch 
    } 

    doc.replaceRange(str, pos); 
} 
1

बेहतर समारोह है कि, अगर चयन वर्तमान, पाठ की जगह, अगर नहीं, वर्तमान कर्सर स्थिति

function insertString(editor,str){ 

     var selection = editor.getSelection(); 

     if(selection.length>0){ 
      editor.replaceSelection(str); 
     } 
     else{ 

      var doc = editor.getDoc(); 
      var cursor = doc.getCursor(); 

      var pos = { 
       line: cursor.line, 
       ch: cursor.ch 
      } 

      doc.replaceRange(str, pos); 

     } 

    } 
+0

कृपया अपने मौजूदा एक को बेहतर करते समय एक अतिरिक्त उत्तर न जोड़ें। इसके बजाय पहले एक को संपादित करें – YakovL

संबंधित मुद्दे