テキストを強調表示する前に、rangy を使用してキャレット位置を保存しようとしています。しかし、htmlを挿入しているので、キャレットの復元に問題があると思います。コードは次のとおりです。
var saved_selection = rangy.saveSelection( );
$( "#code" ).html( code_hl.highlight( $( "#code" ).text( ),
-1,
-1 ) );
rangy.restoreSelection( saved_selection );
マーカー要素が削除されたと言い続けています。htmlを挿入しているのでうまくいきませんか?
あるいは、キャレットのインデックスを単独で使用してキャレットを設定できるかどうか疑問に思っています。私が書いた別のオブジェクト kb_input があります。これは、キャレットの位置、現在の行のオフセット、および現在の行番号を追跡します。ですので、それも参考になるかと思います。
contenteditable タグのキャレット位置と範囲の関係を誰かが理解するのを手伝ってくれれば、それで十分です。