Nun, es gibt eine Möglichkeit, eine einzeilige Editor umfassende Funktionen von Codemirror zu machen. Zuerst müssen Sie ein CodeMirror-Objekt mit vollem Funktionsumfang hinzufügen (verwenden Sie ein Textfeld).
Angenommen, Sie haben var cm = CodeMirror(...)
. (Verwenden Sie value: ""
). Dann tun
cm.setSize(200, cm.defaultTextHeight() + 2 * 4);
// 200 is the preferable width of text field in pixels,
// 4 is default CM padding (which depends on the theme you're using)
// now disallow adding newlines in the following simple way
cm.on("beforeChange", function(instance, change) {
var newtext = change.text.join("").replace(/\n/g, ""); // remove ALL \n !
change.update(change.from, change.to, [newtext]);
return true;
});
// and then hide ugly horizontal scrollbar
cm.on("change", function(instance, change) {
$(".CodeMirror-hscrollbar").css('display', 'none');
// (!) this code is using jQuery and the selector is quite imperfect if
// you're using more than one CodeMirror on your page. you're free to
// change it appealing to your page structure.
});
// the following line fixes a bug I've encountered in CodeMirror 3.1
$(".CodeMirror-scroll").css('overflow', 'hidden');
// jQuery again! be careful with selector or move this to .css file
Das ist für mich ganz gut funktioniert.
Ist CodeMirror nicht ein In-Browser-Werkzeug zur Code-Bearbeitung? Ich sehe nicht, wie Ihr Eingabefeld einen Code-Editor benötigt? Was meinst du mit "bunt"? – nimrod
@nimod: Syntax-Highlighting nehme ich an. –
Sie könnten ein Textfeld verwenden und seine Höhe auf eine Zeile setzen. Es scheint eine "ok" Annäherung an mich zu sein. Es ist sicherlich nicht schlecht und etwas selbst zu bauen ist wahrscheinlich schwieriger. Sie müssen den Sprachparser dennoch erstellen, damit die richtigen Token korrekt hervorgehoben werden. –