k2nr/ViChrome — pull request #63 by u338steven (2014-03-27 16:30:56+00:00)
Title: add CaretMode

キャレットモード(モドキ)と、
キャレットヒントモードを追加しました。
**モドキの理由は補足にて後述します。**

# 機能概要
1. キャレットモード(モドキ)
キャレットを表示し、操作できるモードです。
キーバインドは、キャレットなので imap 依存にしています。

2. キャレットヒントモード
caret-hint.js のようにヒントの箇所にキャレットを移動するモードです。

# 使い方
ExtFMode から、`c` 押下でキャレットヒントモードに遷移できます。
コマンド `:GoExtFMode --caret` でも遷移可能です。
ヒント選択後に、キャレットモード(モドキ)へ遷移します。
`Escape` でキャレットモードが終了します。

コマンド `:GoCaretMode` でも一応キャレットモード(モドキ)に遷移できます。
この場合、ドキュメントの先頭にキャレットが表示されます。

# 補足
1. モドキの理由
`document.body.contentEditable` を `true` にして、ドキュメント全体を編集可能にすることで
キャレットを無理矢理表示させているためです。
**ドキュメントが編集できてしまうという問題があります。**
が、Chrome 自体にキャレットブラウズモードがないので、
こうする以外にキャレットを使う方法が見当たりません……

2. `document.body.spellcheck` を `false` にしている理由
ドキュメント全体を編集可能にした時点で、ドキュメント全体にスペルチェックが走ってしまい、
赤線が表示されてしまうためです。
それを回避するために、いったん `false` にして
キャレットモード終了時に元の状態に戻しています。