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.
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.
Share Improve this question asked Oct 20, 2014 at 9:16 VinceVince 4,43912 gold badges48 silver badges83 bronze badges3 Answers
Reset to default 10Simply change tab's keymap to indentMore:
extraKeys: {
"Tab": "indentMore"
}
This solution also doesn't break selection indenting.
Fiddle
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 });
}
}
Regarding the manual:
extraKeys: {
'Tab': 'indentAuto'
}
- Extra keys: http://codemirror/doc/manual.html#option_extraKeys
indentAuto
mand: http://codemirror/doc/manual.html#mand_indentAuto