annotate .cms/lib/codemirror/doc/upgrade_v4.html @ 0:78edf6b517a0 draft

24.10
author Coffee CMS <info@coffee-cms.ru>
date Fri, 11 Oct 2024 22:40:23 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
1 <!doctype html>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
2
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
3 <title>CodeMirror: Version 4 upgrade guide</title>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
4 <meta charset="utf-8"/>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
5 <link rel=stylesheet href="docs.css">
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
6 <script src="activebookmark.js"></script>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
7
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
8 <div id=nav>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
9 <a href="https://codemirror.net/5"><h1>CodeMirror</h1><img id=logo src="logo.png"></a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
10
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
11 <ul>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
12 <li><a href="../index.html">Home</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
13 <li><a href="manual.html">Manual</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
14 <li><a href="https://github.com/codemirror/codemirror5">Code</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
15 </ul>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
16 <ul>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
17 <li><a class=active href="#upgrade">Upgrade guide</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
18 <li><a href="#multisel">Multiple selections</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
19 <li><a href="#beforeSelectionChange">The beforeSelectionChange event</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
20 <li><a href="#replaceSelection">replaceSelection and collapsing</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
21 <li><a href="#changeEvent">change event data</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
22 <li><a href="#showIfHidden">showIfHidden option to line widgets</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
23 <li><a href="#module">Module loaders</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
24 <li><a href="#shareddata">Mutating shared data structures</a></li>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
25 <li><a href="#deprecated">Deprecated interfaces dropped</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
26 </ul>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
27 </div>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
28
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
29 <article>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
30
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
31 <h2 id=upgrade>Upgrading to version 4</h2>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
32
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
33 <p>CodeMirror 4's interface is <em>very</em> close version 3, but it
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
34 does fix a few awkward details in a backwards-incompatible ways. At
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
35 least skim the text below before upgrading.</p>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
36
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
37 <section id=multisel><h2>Multiple selections</h2>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
38
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
39 <p>The main new feature in version 4 is multiple selections. The
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
40 single-selection variants of methods are still there, but now
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
41 typically act only on the <em>primary</em> selection (usually the last
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
42 one added).</p>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
43
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
44 <p>The exception to this
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
45 is <a href="manual.html#getSelection"><strong><code>getSelection</code></strong></a>,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
46 which will now return the content of <em>all</em> selections
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
47 (separated by newlines, or whatever <code>lineSep</code> parameter you passed
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
48 it).</p>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
49
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
50 </section>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
51
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
52 <section id=beforeSelectionChange><h2>The beforeSelectionChange event</h2>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
53
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
54 <p>This event still exists, but the object it is passed has
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
55 a <a href="manual.html#event_beforeSelectionChange">completely new
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
56 interface</a>, because such changes now concern multiple
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
57 selections.</p>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
58
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
59 </section>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
60
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
61 <section id=replaceSelection><h2>replaceSelection's collapsing behavior</h2>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
62
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
63 <p>By
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
64 default, <a href="manual.html#replaceSelection"><code>replaceSelection</code></a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
65 would leave the newly inserted text selected. This is only rarely what
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
66 you want, and also (slightly) more expensive in the new model, so the
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
67 default was changed to <code>"end"</code>, meaning the old behavior
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
68 must be explicitly specified by passing a second argument
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
69 of <code>"around"</code>.</p>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
70
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
71 </section>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
72
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
73 <section id=changeEvent><h2>change event data</h2>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
74
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
75 <p>Rather than forcing client code to follow <code>next</code>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
76 pointers from one change object to the next, the library will now
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
77 simply fire
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
78 multiple <a href="manual.html#event_change"><code>"change"</code></a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
79 events. Existing code will probably continue to work unmodified.</p>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
80
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
81 </section>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
82
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
83 <section id=showIfHidden><h2>showIfHidden option to line widgets</h2>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
84
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
85 <p>This option, which conceptually caused line widgets to be visible
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
86 even if their line was hidden, was never really well-defined, and was
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
87 buggy from the start. It would be a rather expensive feature, both in
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
88 code complexity and run-time performance, to implement properly. It
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
89 has been dropped entirely in 4.0.</p>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
90
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
91 </section>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
92
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
93 <section id=module><h2>Module loaders</h2>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
94
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
95 <p>All modules in the CodeMirror distribution are now wrapped in a
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
96 shim function to make them compatible with both AMD
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
97 (<a href="http://requirejs.org">requirejs</a>) and CommonJS (as used
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
98 by <a href="http://nodejs.org/">node</a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
99 and <a href="http://browserify.org/">browserify</a>) module loaders.
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
100 When neither of these is present, they fall back to simply using the
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
101 global <code>CodeMirror</code> variable.</p>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
102
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
103 <p>If you have a module loader present in your environment, CodeMirror
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
104 will attempt to use it, and you might need to change the way you load
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
105 CodeMirror modules.</p>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
106
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
107 </section>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
108
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
109 <section id=shareddata><h2>Mutating shared data structures</h2>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
110
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
111 <p>Data structures produced by the library should not be mutated
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
112 unless explicitly allowed, in general. This is slightly more strict in
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
113 4.0 than it was in earlier versions, which copied the position objects
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
114 returned by <a href="manual.html#getCursor"><code>getCursor</code></a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
115 for nebulous, historic reasons. In 4.0, mutating these
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
116 objects <em>will</em> corrupt your editor's selection.</p>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
117
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
118 </section>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
119
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
120 <section id=deprecated><h2>Deprecated interfaces dropped</h2>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
121
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
122 <p>A few properties and methods that have been deprecated for a while
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
123 are now gone. Most notably, the <code>onKeyEvent</code>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
124 and <code>onDragEvent</code> options (use the
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
125 corresponding <a href="manual.html#event_dom">events</a> instead).</p>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
126
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
127 <p>Two silly methods, which were mostly there to stay close to the 0.x
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
128 API, <code>setLine</code> and <code>removeLine</code> are now gone.
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
129 Use the more
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
130 flexible <a href="manual.html#replaceRange"><code>replaceRange</code></a>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
131 method instead.</p>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
132
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
133 <p>The long names for folding and completing functions
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
134 (<code>CodeMirror.braceRangeFinder</code>, <code>CodeMirror.javascriptHint</code>,
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
135 etc) are also gone
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
136 (use <code>CodeMirror.fold.brace</code>, <code>CodeMirror.hint.javascript</code>).</p>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
137
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
138 <p>The <code>className</code> property in the return value
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
139 of <a href="manual.html#getTokenAt"><code>getTokenAt</code></a>, which
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
140 has been superseded by the <code>type</code> property, is also no
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
141 longer present.</p>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
142
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
143 </section>
Coffee CMS <info@coffee-cms.ru>
parents:
diff changeset
144 </article>