javascriptcodemirrorcodemirror-modes

codemirror : how to indent the whole line when pressing tab?


I am creating a new simple mode for codemirror.

I would like that when the user presses "tab", the whole line gets indented (as opposed to only the part of the line that is after the cursor, "splitting" the line in two).

What would be the simplest way to do this ?

note : the corresponding code does not have to be defined in the mode. Any other approach (e.g. add on or configuration) would work as well.


Solution

  • This should work. jsfiddle

        extraKeys: {
            "Tab": function(cm){
                // get cursor position
                var pos = cm.getCursor();
                // set cursor position to the begining of the line.
                cm.setCursor({ line: pos.line, ch: 0 });
                // insert a tab
                cm.replaceSelection("\t", "end");
                // set cursor position to original.
                cm.setCursor({ line: pos.line, ch: pos.ch + 1 });
            }
         }