mirror of
https://github.com/renbaoshuo/S2OJ.git
synced 2024-12-27 05:31:52 +00:00
96d4a3ecf7
Due to historical reasons, the code is in subfolder "1". With SVN removal, we place the code back and remove the annoying "1" folder.
145 lines
5.3 KiB
HTML
145 lines
5.3 KiB
HTML
<!doctype html>
|
|
|
|
<title>CodeMirror: Version 4 upgrade guide</title>
|
|
<meta charset="utf-8"/>
|
|
<link rel=stylesheet href="docs.css">
|
|
<script src="activebookmark.js"></script>
|
|
|
|
<div id=nav>
|
|
<a href="http://codemirror.net"><img id=logo src="logo.png"></a>
|
|
|
|
<ul>
|
|
<li><a href="../index.html">Home</a>
|
|
<li><a href="manual.html">Manual</a>
|
|
<li><a href="https://github.com/marijnh/codemirror">Code</a>
|
|
</ul>
|
|
<ul>
|
|
<li><a class=active href="#upgrade">Upgrade guide</a>
|
|
<li><a href="#multisel">Multiple selections</a>
|
|
<li><a href="#beforeSelectionChange">The beforeSelectionChange event</a>
|
|
<li><a href="#replaceSelection">replaceSelection and collapsing</a>
|
|
<li><a href="#changeEvent">change event data</a>
|
|
<li><a href="#showIfHidden">showIfHidden option to line widgets</a>
|
|
<li><a href="#module">Module loaders</a>
|
|
<li><a href="#shareddata">Mutating shared data structures</a></li>
|
|
<li><a href="#deprecated">Deprecated interfaces dropped</a>
|
|
</ul>
|
|
</div>
|
|
|
|
<article>
|
|
|
|
<h2 id=upgrade>Upgrading to version 4</h2>
|
|
|
|
<p>CodeMirror 4's interface is <em>very</em> close version 3, but it
|
|
does fix a few awkward details in a backwards-incompatible ways. At
|
|
least skim the text below before upgrading.</p>
|
|
|
|
<section id=multisel><h2>Multiple selections</h2>
|
|
|
|
<p>The main new feature in version 4 is multiple selections. The
|
|
single-selection variants of methods are still there, but now
|
|
typically act only on the <em>primary</em> selection (usually the last
|
|
one added).</p>
|
|
|
|
<p>The exception to this
|
|
is <a href="manual.html#getSelection"><strong><code>getSelection</code></strong></a>,
|
|
which will now return the content of <em>all</em> selections
|
|
(separated by newlines, or whatever <code>lineSep</code> parameter you passed
|
|
it).</p>
|
|
|
|
</section>
|
|
|
|
<section id=beforeSelectionChange><h2>The beforeSelectionChange event</h2>
|
|
|
|
<p>This event still exists, but the object it is passed has
|
|
a <a href="manual.html#event_beforeSelectionChange">completely new
|
|
interface</a>, because such changes now concern multiple
|
|
selections.</p>
|
|
|
|
</section>
|
|
|
|
<section id=replaceSelection><h2>replaceSelection's collapsing behavior</h2>
|
|
|
|
<p>By
|
|
default, <a href="manual.html#replaceSelection"><code>replaceSelection</code></a>
|
|
would leave the newly inserted text selected. This is only rarely what
|
|
you want, and also (slightly) more expensive in the new model, so the
|
|
default was changed to <code>"end"</code>, meaning the old behavior
|
|
must be explicitly specified by passing a second argument
|
|
of <code>"around"</code>.</p>
|
|
|
|
</section>
|
|
|
|
<section id=changeEvent><h2>change event data</h2>
|
|
|
|
<p>Rather than forcing client code to follow <code>next</code>
|
|
pointers from one change object to the next, the library will now
|
|
simply fire
|
|
multiple <a href="manual.html#event_change"><code>"change"</code></a>
|
|
events. Existing code will probably continue to work unmodified.</p>
|
|
|
|
</section>
|
|
|
|
<section id=showIfHidden><h2>showIfHidden option to line widgets</h2>
|
|
|
|
<p>This option, which conceptually caused line widgets to be visible
|
|
even if their line was hidden, was never really well-defined, and was
|
|
buggy from the start. It would be a rather expensive feature, both in
|
|
code complexity and run-time performance, to implement properly. It
|
|
has been dropped entirely in 4.0.</p>
|
|
|
|
</section>
|
|
|
|
<section id=module><h2>Module loaders</h2>
|
|
|
|
<p>All modules in the CodeMirror distribution are now wrapped in a
|
|
shim function to make them compatible with both AMD
|
|
(<a href="http://requirejs.org">requirejs</a>) and CommonJS (as used
|
|
by <a href="http://nodejs.org/">node</a>
|
|
and <a href="http://browserify.org/">browserify</a>) module loaders.
|
|
When neither of these is present, they fall back to simply using the
|
|
global <code>CodeMirror</code> variable.</p>
|
|
|
|
<p>If you have a module loader present in your environment, CodeMirror
|
|
will attempt to use it, and you might need to change the way you load
|
|
CodeMirror modules.</p>
|
|
|
|
</section>
|
|
|
|
<section id=shareddata><h2>Mutating shared data structures</h2>
|
|
|
|
<p>Data structures produced by the library should not be mutated
|
|
unless explicitly allowed, in general. This is slightly more strict in
|
|
4.0 than it was in earlier versions, which copied the position objects
|
|
returned by <a href="manual.html#getCursor"><code>getCursor</code></a>
|
|
for nebulous, historic reasons. In 4.0, mutating these
|
|
objects <em>will</em> corrupt your editor's selection.</p>
|
|
|
|
</section>
|
|
|
|
<section id=deprecated><h2>Deprecated interfaces dropped</h2>
|
|
|
|
<p>A few properties and methods that have been deprecated for a while
|
|
are now gone. Most notably, the <code>onKeyEvent</code>
|
|
and <code>onDragEvent</code> options (use the
|
|
corresponding <a href="manual.html#event_dom">events</a> instead).</p>
|
|
|
|
<p>Two silly methods, which were mostly there to stay close to the 0.x
|
|
API, <code>setLine</code> and <code>removeLine</code> are now gone.
|
|
Use the more
|
|
flexible <a href="manual.html#replaceRange"><code>replaceRange</code></a>
|
|
method instead.</p>
|
|
|
|
<p>The long names for folding and completing functions
|
|
(<code>CodeMirror.braceRangeFinder</code>, <code>CodeMirror.javascriptHint</code>,
|
|
etc) are also gone
|
|
(use <code>CodeMirror.fold.brace</code>, <code>CodeMirror.hint.javascript</code>).</p>
|
|
|
|
<p>The <code>className</code> property in the return value
|
|
of <a href="manual.html#getTokenAt"><code>getTokenAt</code></a>, which
|
|
has been superseded by the <code>type</code> property, is also no
|
|
longer present.</p>
|
|
|
|
</section>
|
|
</article>
|