core/api/soft/CodeMirror/CHANGELOG.md

11 KiB

0.5.2 (2020-04-09)

Bug fixes

Fix an issue where external TypeScript builds would try to recompile the library code.

0.5.1 (2020-04-08)

Bug fixes

Include the TypeScript declaration files in the npm package.

0.5.0 (2020-04-01)

Breaking changes

EditorView.domEventHandlers is now a function, and the handlers receive their arguments in a different order.

Syntax objects no longer have a languageDataAt method (this was moved to EditorState, and changed somewhat).

Completion functions now return a plain list of results, rather than an object.

The interface to EditorState.indentation changed, taking an IndentContext object.

Facets provided by a state field are now declared in an option to StateField.define, instead of in method calls on the field object.

Isolating transactions so that they become their own undo history item is now done with the isolateHistory annotation.

The packages are no longer available as CommonJS files. To run the code on node.js, you'll need node 13 or pass --experimental-modules to node 12.

New features

View plugins now have an eventHandlers method to attach plugin-specific DOM event handlers.

The editor state now has a languageDataAt that collects values stored under a given property name in the main language data and in object attached for a given document type with the addLanguageData facet.

It is now possible to provide indentation functions with information about already-reindented lines through an IndentContext object, making it possible to reindent a region in one go without re-parsing.

Lint sources can now be asynchronous.

The EditorView.editable facet can now be used to control whether the content is editable.

The selectionFilter facet can now be used to control selection updates.

The new changeFilter facet can be used to stop or modify document changes.

Transaction.change now also accepts an array of changes to apply in one go.

The history module now exports a facet that allows you to create inverted effects from a transaction, which will be stored in the history. (This allows making non-document state un/redoable.)

Transactions can now contains state effects, which can describe state changes for extensions, and be integrated with the undo history.

Transactions now have a mapRef method to easily create a position mapping from a given intermediate document to the current document.

0.4.0 (2020-02-21)

Breaking Changes

Behavior was renamed to Facet, and works somewhat differently.

The extension package no longer exists. Extension-related concepts are now part of the state package.

The view no longer has its own extension system. It is entirely configured by state extensions.

View plugins are specified through a state facet now, and have a simpler interface.

View plugins may no longer create decorations that significantly impact the height of content, to avoid the cyclic dependency between plugin decorations and the viewport.

Themes work differently now, using static CSS classes on DOM elements so that plugins don't have to update their DOM when the editor theme changes.

Highlighting token types now support a numeric suffix, which replaces the old typeN modifiers.

The interface to syntax extensions and parse trees changed.

The way transaction annotations work was simplified a bit.

Range sets were rewritten and support a somewhat different interface now.

The way decorations are created now separates the creation of the decoration value from the creation of the range to which it should apply.

New features

State facets can provide decorations now.

Reading DOM layout information and similar things is now done with the requestMeasure method.

Facets now explicitly track which fields and other facets they depend on, so that they are recomputed only when necessary.

Any object that has an extension property that holds an extension value may now be used as an extension.

Overlong lines that are inside the viewport will now be partially hidden to speed up rendering and interaction.

The editor view now has a textDirection property telling you whether the main writing direction is left-to-right or right-to-left.

There's now a visibleRanges property that tells you which part of the viewport is actually going to be drawn, speeding up things like highlighting when there's large amounts of collapsed code in the viewport.

Bug fixes

Fix issue where mouse dragging would create selections with the the anchor and head reversed.

Make code folding behave better when the folded node doesn't start on the same line as the actual fold.

Fix a number of issues that would make parsing big files slow (or even lock up entirely).

0.3.0 (2019-11-29)

Breaking changes

Language-wide configuration is no longer stored in per-extension node props, but in a single languageData object held in a prop defined in the state package. The Syntax method languageDataAt is used to read it.

Unique extensions no longer exist. Instead, extensions are deduplicated by identity. Merging configurations for an extension should now be done in a behavior.

Bug fixes

Fix issue where starting with an empty editor would break height estimates.

Fix an issue where widgets at the end of a line could stay around after being deleted in some cases.

Fix rendering of lines that are empty except for a widget.

New features

A plugin's drawMeasured method may now return true to request another measure/draw cycle.

The editor view now has a requireMeasure method to schedule a layout check that'll allow plugins to measure and update the DOM.

The state package now re-exports the Text type.

Add an adaptor for connecting ESLint output to the CodeMirror linter package to the lang-javascript package.

The tooltip package provides a way to show tooltip over the editor.

The new autocomplete package implements an autocompletion interface.

The new lint package integrates linting with the editor by underlining issues and providing a list of problems that you can scroll through.

The lang-javascript package now exports an esLint function that can be used to wire up ESLint to the CodeMirror lint integration.

0.2.0 (2019-10-28)

Breaking changes

syntaxIndentation no longer has to be registered separately as an extension. It is now implied when registering a tree syntax.

The configuration passed to gutter no longer takes direct class names, but a style option that determines the theme fields used for the gutter.

ViewPlugin instances are now created with a static create method, instead of the constructor.

Declaring custom gutters is now done with a Gutter constructor.

Configuring whether the gutters are fixed is now done with the gutters extension, rather than per individual gutter.

There is now an additional wrapper element around the editor (EditorView.scrollDOM), which is the element that should be targeted with overflow style properties.

EditorView.cssClass no longer accepts space-separated lists of classes.

Slot from the extension package has been replaced with Annotation in the state package. Transaction metadata is now called annotations, and the method names have been updated accordingly.

Command from state was renamed to StateCommand, ViewCommand from view is now called Command.

Bug fixes

Fix a bug where a behavior's combine method wasn't called when the behavior was entirely static.

Fix issue that caused nested replaced decorations to be drawn incorrectly.

ViewUpdate.themeChanged no longer returns the inverse of what it should be returning.

Avoid crash on Firefox when focusing the editor if another form field has focus.

Fixes a bug where changes near replacing decorations would corrupt the editor's view of its height layout.

New features

The new EditorState.foldable behavior provides a way to register code folding services.

Lezer syntax can now register code folding metadata on tree nodes via foldNodeProp.

There is now a fold package with code folding commands (which need the codeFolding extension to be active to work).

EditorView.posFromDOM can now be used to find the document position of a given DOM position.

Gutters can now be themed.

ViewPlugin instances can be extended with dynamic behavior using their behavior and decorations methods.

Gutters can now be passed a handleDOMEvents option that allows client code to register event handlers on them.

You can now iterate over a RangeSet more cheaply with an (internal) iterator using the between method.

Syntax services now have a docTypeAt method that gives you the grammar node around the given point (which may be part of a nesting grammar).

The text package now has replacements for codePointAt and fromCodePoint.

Added a bracket-closing extension in the closebrackets package.

Adds a panel package that contains functionality for showing UI panels at the top or bottom of the editor.

The new search package provides search/replace-related functionality.

Themes and EditorView.cssClass can now target dot-separated more specific versions of a name.

The phrase method on the editor view can now be used to access translation provided with the EditorView.phrases behavior.

Widget toDOM methods are now passed the editor view.

Add EditorView.scrollMargins behavior, which can be used to make the view scroll past regions at the side of the editor when scrolling something into view.

The keymap package now exports a NormalizedKeymap class that can be used to build key handlers on other elements.

0.1.0 (2019-10-10)

Breaking Changes

First numbered release.