textarea で動く劣化コピー xml-mode の入力まわりを整理して分離してみた。C-x i とかいうツーストローク以上のキーバインドも可能に。ただ、やっぱり文字入力をキャンセルさせる方法がわからないため、入力された文字をあとから削除する方法になってる。チラつく。
これである程度自由にキーバインドが変えられるようになった。
function xmlText_initialize() { var xml = new xmlText(document.getElementById("xmltext")); var kb = new keyBinding(document.getElementById("xmltext"), { "C-x i" : function () { xml.indentLine() }, "TAB" : function () { xml.indentLine() }, "C-q" : function () { xml.indentBuffer() }, "C-." : function () { xml.wellClose() }, "/" : function () { xml.slash() }, "=" : function () { xml.equal() }, "RET" : function () { xml.newLineAndIndent() } }); } window.addEventListener("load", xmlText_initialize, true);
劣化コピー xml-mode と一緒に使うとき、キャレット位置が若干混乱するのが微妙。なんで混乱するのかよくわからないのだけれど。
textarea のスクロール位置をセットしなおす方法が分からん。使えないって!
event.preventDefault()
を使えばキャンセルできるみたいだ。書き換えよう。
あー、しかもブラウザのキーバインド横取りできる。
スクロール問題解決?
Ctrl+記号を入力すると文字が誤認される。