Search code examples
javascripteditorcodemirror

Programming language select droptown Codemirror


I would like to have a language selecting dropdown for codemirror. I have seen this but i cant make heads or tails of it. Could anyone clear it up for me or provide a solution? Thanks in advance!


Solution

  • You could make an object {'go':'text/x-go','javascript':'text/javascript'} and so on and index it.

    var editor = CodeMirror.fromTextArea(document.getElementById('edit'),{lineNumbers:true,mode:'text/x-go'});
    function select(x) {
    var optionText = x.options[x.selectedIndex].innerText;
    var modes = {'Golang':'text/x-go','Javascript':'text/javascript','Css':'text/css'};
    
    editor.setOption('mode', modes[optionText]);
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.38.0/codemirror.min.js"></script>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.38.0/codemirror.min.css" rel="stylesheet"/><script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.38.0/mode/javascript/javascript.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.38.0/mode/go/go.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.38.0/mode/css/css.min.js"></script>
    
    <select onchange="select(this)">
    <option>Golang</option>
    <option>Javascript</option>
    <option>Css</option>
    </select> <br> 
    <textarea id="edit">
    //Try do package main and change modes
    </textarea>