Version 5.25.0

### Bug fixes

In contentEditable-mode, properly locate changes that repeat a character when inserted with IME.

Fix handling of selections bigger than the viewport in contentEditable mode.

Improve handling of changes that insert or delete lines in contentEditable mode.

Count Unicode control characters 0x80 to 0x9F as special (non-printing) chars.

Fix handling of shadow DOM roots when finding the active element.

Add `role=presentation` to more DOM elements to improve screen reader support.

[merge addon](http://codemirror.net/doc/manual.html#addon_merge): Make aligning of unchanged chunks more robust.

[comment addon](http://codemirror.net/doc/manual.html#addon_comment): Fix comment-toggling on a block of text that starts and ends in a (differnet) block comment.

[javascript mode](http://codemirror.net/mode/javascript/): Improve support for TypeScript syntax.

[r mode](http://codemirror.net/mode/r/): Fix indentation after semicolon-less statements.

[shell mode](http://codemirror.net/mode/shell/): Properly handle escaped parentheses in parenthesized expressions.

[markdown mode](http://codemirror.net/mode/markdown/): Fix a few bugs around leaving fenced code blocks.

[soy mode](http://codemirror.net/mode/soy/): Improve indentation.

### New features

[lint addon](http://codemirror.net/doc/manual.html#addon_lint): Support asynchronous linters that return promises.

[continuelist addon](http://codemirror.net/doc/manual.html#addon_continuelist): Support continuing task lists.

[vim bindings](http://codemirror.net/mode/demo/vim.html): Make Y behave like yy.

[sql mode](http://codemirror.net/mode/sql/): Support sqlite dialect.
-----BEGIN PGP SIGNATURE-----

iQEzBAABCAAdFiEErLY20j+/ljvJRHotcD8b7W0zrh4FAljPtgoACgkQcD8b7W0z
rh7+iwgAvKDhX8OzDHk0RKvLAuwxg54YsQkIqWEJZN0F0WgFt4oLWRhe8UyrVKHW
J4RZMDwCBqOr5JuqIaGrljl5hSvy37rJEtXuLJlo03BIkS33Wxi+qMLAqbtQd5hw
uJWrZU8Ehxn0ccKs2YPRXRd//7SfZcfxElOKOj3m5kX14YpfpK0E7JwHZ25VzaYu
cuFcZhECfJQJtnefs3a7vvjF4E9fBdYp8ILPzdogD769o7yf+CRrRr/0dW9z33eB
P0IeDC5UeIwwdfbUBe3+VflYVlDdY3bpMb0V3Rcx/zW8rsoDL/icPJxntpiEmg/C
kXhTj+5iEDK40Z5bI157XTApSlP3+Q==
=3ISa
-----END PGP SIGNATURE-----
