Version 5.27.0

### Bug fixes

Fix infinite loop in forced display update.

Properly disable the hidden textarea when `readOnly` is `"nocursor"`.

Calling the `Doc` constructor without `new` works again.

[sql mode](http://codemirror.net/mode/sql/): Handle nested comments.

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

[markdown mode](http://codemirror.net/mode/markdown/): Fix bug where markup was ignored on indented paragraph lines.

[vim bindings](http://codemirror.net/mode/demo/vim.html): Referencing invalid registers no longer causes an uncaught exception.

[rust mode](http://codemirror.net/mode/rust/): Add the correct MIME type.

[matchbrackets addon](http://codemirror.net/doc/manual.html#addon_matchbrackets): Document options.

### New features

Mouse button clicks can now be bound in keymaps by using names like `"LeftClick"` or `"Ctrl-Alt-MiddleTripleClick"`. When bound to a function, that function will be passed the position of the click as second argument.

The behavior of mouse selection and dragging can now be customized with the [`configureMouse`](http://codemirror.net/doc/manual.html#option_configureMouse) option.

Modes can now look ahead across line boundaries with the [`StringStream`](http://codemirror.net/doc/manual.html#StringStream)`.lookahead` method.

Introduces a `"type"` token type, makes modes that recognize types output it, and add styling for it to the themes.

New [`pasteLinesPerSelection`](http://codemirror.net/doc/manual.html#option_pasteLinesPerSelection) option to control the behavior of pasting multiple lines into multiple selections.

[searchcursor addon](http://codemirror.net/doc/manual.html#addon_searchcursor): Support multi-line regular expression matches, and normalize strings when matching.
-----BEGIN PGP SIGNATURE-----

iQEzBAABCAAdFiEErLY20j+/ljvJRHotcD8b7W0zrh4FAllLdZ0ACgkQcD8b7W0z
rh49gAf/a45BseJoZ8gcTJ1/czybtRYfRdf8p5NBS0mbQbEdBO+lCoOno1rdhBDX
76jNXva5SUPnMyHHUExj12kxvJOYIpfQzkpLjwu5P6r4x7b8EjcG4An8r9IP61H8
jEyYepnatPObWqu1ywRKMyWjwHM2iybGRh0K18qe6Ob6Zr6j8yI5F4CmO+TvPB+a
/jd0OA63IbR8VtkOcYhnL6YpTnfjrUFPfZtU+8llFX0b5giap5ZFH9W43YwnMRkz
noe7BDcrVLvDbgeMKwVz3O+BS8ly41BPWAGXMwlVv8OBkLQf8ozgPC1kjsStpDHm
lASWfoeyykZslQQe9/I6YJYd+Ld8iA==
=pXYj
-----END PGP SIGNATURE-----
