CodeMirrorでカーソル位置が常に中央になるアドオンを書いた
azu/codemirror-typewriter-scrolling
azu/codemirror-typewriter-scrolling という CodeMirrorのアドオンを書きました。
typewriter-scrolling?
Typewriter Scrolling というのはタイトルのように入力行が中央になる機能の事らしいです。
FoldingTextに同じ名前の機能があります(これでこの名前を知った)
FoldingText 入力位置が中央になる機能がちゃんとある。
TypeWriter Scrollingというのか
http://t.co/zAjrlVzrpc
— azu (@azu_re) August 16, 2014
また、JetBrains IDEにはShow virtual space at file bottomという名前で同じような機能があります。
要は、入力行がエディタの一番下になると見にくくて不便だねというのを解消する機能です。
Installation
floating-memo.appで使いたくて書いたのでnpmにおいてあります。
公式のAddonsを真似てUMDっぽいパターンで書かれているので、CommonJSやAMD、普通にスクリプトロードしても使えると思います。
npm install codemirror-typewriter-scrolling
Usage
typewriterScrolling
option
typewriterScrolling
というオプションをつければ自動的にchanges
イベントを監視してやってくれます。
var editor = CodeMirror.fromTextArea(document.getElementById("editor"), {
lineNumbers: true,
mode: "markdown",
typewriterScrolling: true // setOption
});
// empty line
editor.setValue((new Array(100)).join("\n"));
現在、末尾に空でもいいので改行がないと正しく動かない感じです。 上手い解消方法あったら教えて下さい。
scrollSelectionToCenter
command
scrollSelectionToCenter
というコマンドも生えてるので、
手動で実行したい場合はこのコマンドをCodeMirrorのインスタンスから実行する事で行えます。
editor.execCommand("scrollSelectionToCenter");
Contributing
azu/codemirror-typewriter-scrolling からpull-request歓迎しています。
License
ライセンスはMITライセンスです。
お知らせ欄
JavaScript Primerの書籍版がAmazonで購入できます。
JavaScriptに関する最新情報は週一でJSer.infoを更新しています。
GitHub Sponsorsでの支援を募集しています。