diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2017-09-25 21:20:49 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2017-09-25 21:20:49 -0700 |
commit | c0d61295ed3575cfea7d2a22d81bae93c6009308 (patch) | |
tree | 42fc40d4ce6da540c9fa75d5e74ec75e5c313a7b /html/edit | |
parent | 409237204368205a06e2b82fcab26b0a290d7412 (diff) | |
download | mu-c0d61295ed3575cfea7d2a22d81bae93c6009308.tar.gz |
4008
Allow list `push` operation to save result in a new list rather than mutate the existing list.
Diffstat (limited to 'html/edit')
-rw-r--r-- | html/edit/001-editor.mu.html | 18 | ||||
-rw-r--r-- | html/edit/002-typing.mu.html | 40 | ||||
-rw-r--r-- | html/edit/003-shortcuts.mu.html | 128 | ||||
-rw-r--r-- | html/edit/004-programming-environment.mu.html | 14 | ||||
-rw-r--r-- | html/edit/005-sandbox.mu.html | 18 | ||||
-rw-r--r-- | html/edit/006-sandbox-copy.mu.html | 2 | ||||
-rw-r--r-- | html/edit/011-errors.mu.html | 2 | ||||
-rw-r--r-- | html/edit/012-editor-undo.mu.html | 38 |
8 files changed, 130 insertions, 130 deletions
diff --git a/html/edit/001-editor.mu.html b/html/edit/001-editor.mu.html index 8b13fc80..215debfd 100644 --- a/html/edit/001-editor.mu.html +++ b/html/edit/001-editor.mu.html @@ -177,8 +177,8 @@ if ('onhashchange' in window) { <span id="L113" class="LineNr">113 </span> right:num <span class="Special"><-</span> get *editor, <span class="Constant">right:offset</span> <span id="L114" class="LineNr">114 </span> <span class="Comment"># traversing editor</span> <span id="L115" class="LineNr">115 </span> curr:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get *editor, <span class="Constant">top-of-screen:offset</span> -<span id="L116" class="LineNr">116 </span> <a href='../065duplex_list.mu.html#L36'>prev</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> copy curr <span class="Comment"># just in case curr becomes null and we can't compute prev</span> -<span id="L117" class="LineNr">117 </span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> curr +<span id="L116" class="LineNr">116 </span> <a href='../065duplex_list.mu.html#L32'>prev</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> copy curr <span class="Comment"># just in case curr becomes null and we can't compute prev</span> +<span id="L117" class="LineNr">117 </span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> curr <span id="L118" class="LineNr">118 </span> <span class="Comment"># traversing screen</span> <span id="L119" class="LineNr">119 </span> color:num <span class="Special"><-</span> copy <span class="Constant">7/white</span> <span id="L120" class="LineNr">120 </span> row:num <span class="Special"><-</span> copy <span class="Constant">1/top</span> @@ -200,7 +200,7 @@ if ('onhashchange' in window) { <span id="L136" class="LineNr">136 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> at-cursor-row? <span id="L137" class="LineNr">137 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> at-cursor?:bool <span class="Special"><-</span> equal column, cursor-column <span id="L138" class="LineNr">138 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> at-cursor? -<span id="L139" class="LineNr">139 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> before-cursor <span class="Special"><-</span> copy <a href='../065duplex_list.mu.html#L36'>prev</a> +<span id="L139" class="LineNr">139 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> before-cursor <span class="Special"><-</span> copy <a href='../065duplex_list.mu.html#L32'>prev</a> <span id="L140" class="LineNr">140 </span> <span class="Conceal">¦</span> <span class="Delimiter">}</span> <span id="L141" class="LineNr">141 </span> <span class="Conceal">¦</span> c:char <span class="Special"><-</span> get *curr, <span class="Constant">value:offset</span> <span id="L142" class="LineNr">142 </span><span class="Constant"> </span><span class="Conceal">¦</span><span class="Constant"> <character-c-received></span> @@ -215,7 +215,7 @@ if ('onhashchange' in window) { <span id="L151" class="LineNr">151 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> left-of-cursor?:bool <span class="Special"><-</span> lesser-than column, cursor-column <span id="L152" class="LineNr">152 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> left-of-cursor? <span id="L153" class="LineNr">153 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> cursor-column <span class="Special"><-</span> copy column -<span id="L154" class="LineNr">154 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> before-cursor <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L36'>prev</a> curr +<span id="L154" class="LineNr">154 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> before-cursor <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L32'>prev</a> curr <span id="L155" class="LineNr">155 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span> <span id="L156" class="LineNr">156 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment"># clear rest of line in this window</span> <span id="L157" class="LineNr">157 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='../081print.mu.html#L553'>clear-line-until</a> <a href='../081print.mu.html#L16'>screen</a>, right @@ -223,8 +223,8 @@ if ('onhashchange' in window) { <span id="L159" class="LineNr">159 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> row <span class="Special"><-</span> add row,<span class="Constant"> 1</span> <span id="L160" class="LineNr">160 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> column <span class="Special"><-</span> copy left <span id="L161" class="LineNr">161 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='../081print.mu.html#L16'>screen</a> <span class="Special"><-</span> move-cursor <a href='../081print.mu.html#L16'>screen</a>, row, column -<span id="L162" class="LineNr">162 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> curr -<span id="L163" class="LineNr">163 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L36'>prev</a> <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> <a href='../065duplex_list.mu.html#L36'>prev</a> +<span id="L162" class="LineNr">162 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> curr +<span id="L163" class="LineNr">163 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L32'>prev</a> <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> <a href='../065duplex_list.mu.html#L32'>prev</a> <span id="L164" class="LineNr">164 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">loop</span> <span class="Constant">+next-character</span> <span id="L165" class="LineNr">165 </span> <span class="Conceal">¦</span> <span class="Delimiter">}</span> <span id="L166" class="LineNr">166 </span> <span class="Conceal">¦</span> <span class="Delimiter">{</span> @@ -242,8 +242,8 @@ if ('onhashchange' in window) { <span id="L178" class="LineNr">178 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">loop</span> <span class="Constant">+next-character</span> <span id="L179" class="LineNr">179 </span> <span class="Conceal">¦</span> <span class="Delimiter">}</span> <span id="L180" class="LineNr">180 </span> <span class="Conceal">¦</span> print <a href='../081print.mu.html#L16'>screen</a>, c, color -<span id="L181" class="LineNr">181 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> curr -<span id="L182" class="LineNr">182 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L36'>prev</a> <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> <a href='../065duplex_list.mu.html#L36'>prev</a> +<span id="L181" class="LineNr">181 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> curr +<span id="L182" class="LineNr">182 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L32'>prev</a> <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> <a href='../065duplex_list.mu.html#L32'>prev</a> <span id="L183" class="LineNr">183 </span> <span class="Conceal">¦</span> column <span class="Special"><-</span> add column,<span class="Constant"> 1</span> <span id="L184" class="LineNr">184 </span> <span class="Conceal">¦</span> <span class="muControl">loop</span> <span id="L185" class="LineNr">185 </span> <span class="Delimiter">}</span> @@ -259,7 +259,7 @@ if ('onhashchange' in window) { <span id="L195" class="LineNr">195 </span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> before-cursor? <span id="L196" class="LineNr">196 </span> <span class="Conceal">¦</span> cursor-row <span class="Special"><-</span> copy row <span id="L197" class="LineNr">197 </span> <span class="Conceal">¦</span> cursor-column <span class="Special"><-</span> copy column -<span id="L198" class="LineNr">198 </span> <span class="Conceal">¦</span> before-cursor <span class="Special"><-</span> copy <a href='../065duplex_list.mu.html#L36'>prev</a> +<span id="L198" class="LineNr">198 </span> <span class="Conceal">¦</span> before-cursor <span class="Special"><-</span> copy <a href='../065duplex_list.mu.html#L32'>prev</a> <span id="L199" class="LineNr">199 </span> <span class="Delimiter">}</span> <span id="L200" class="LineNr">200 </span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">bottom:offset</span>, row <span id="L201" class="LineNr">201 </span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">cursor-row:offset</span>, cursor-row diff --git a/html/edit/002-typing.mu.html b/html/edit/002-typing.mu.html index 20ceb7c8..eb828377 100644 --- a/html/edit/002-typing.mu.html +++ b/html/edit/002-typing.mu.html @@ -144,8 +144,8 @@ if ('onhashchange' in window) { <span id="L81" class="LineNr"> 81 </span> <a href='../081print.mu.html#L782'>screen-height</a>:num <span class="Special"><-</span> <a href='../081print.mu.html#L782'>screen-height</a> <a href='../081print.mu.html#L16'>screen</a> <span id="L82" class="LineNr"> 82 </span> <span class="Comment"># count newlines until screen row</span> <span id="L83" class="LineNr"> 83 </span> curr:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get *editor, <span class="Constant">top-of-screen:offset</span> -<span id="L84" class="LineNr"> 84 </span> <a href='../065duplex_list.mu.html#L36'>prev</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> copy curr <span class="Comment"># just in case curr becomes null and we can't compute prev</span> -<span id="L85" class="LineNr"> 85 </span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> curr +<span id="L84" class="LineNr"> 84 </span> <a href='../065duplex_list.mu.html#L32'>prev</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> copy curr <span class="Comment"># just in case curr becomes null and we can't compute prev</span> +<span id="L85" class="LineNr"> 85 </span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> curr <span id="L86" class="LineNr"> 86 </span> row:num <span class="Special"><-</span> copy <span class="Constant">1/top</span> <span id="L87" class="LineNr"> 87 </span> column:num <span class="Special"><-</span> copy left <span id="L88" class="LineNr"> 88 </span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">cursor-row:offset</span>, target-row @@ -166,7 +166,7 @@ if ('onhashchange' in window) { <span id="L103" class="LineNr"> 103 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> at-cursor-row? <span id="L104" class="LineNr"> 104 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> at-cursor?:bool <span class="Special"><-</span> equal column, cursor-column <span id="L105" class="LineNr"> 105 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> at-cursor? -<span id="L106" class="LineNr"> 106 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> before-cursor <span class="Special"><-</span> copy <a href='../065duplex_list.mu.html#L36'>prev</a> +<span id="L106" class="LineNr"> 106 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> before-cursor <span class="Special"><-</span> copy <a href='../065duplex_list.mu.html#L32'>prev</a> <span id="L107" class="LineNr"> 107 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">before-cursor:offset</span>, before-cursor <span id="L108" class="LineNr"> 108 </span> <span class="Conceal">¦</span> <span class="Delimiter">}</span> <span id="L109" class="LineNr"> 109 </span> <span class="Conceal">¦</span> c:char <span class="Special"><-</span> get *curr, <span class="Constant">value:offset</span> @@ -182,14 +182,14 @@ if ('onhashchange' in window) { <span id="L119" class="LineNr"> 119 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> left-of-cursor? <span id="L120" class="LineNr"> 120 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> cursor-column <span class="Special"><-</span> copy column <span id="L121" class="LineNr"> 121 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">cursor-column:offset</span>, cursor-column -<span id="L122" class="LineNr"> 122 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> before-cursor <span class="Special"><-</span> copy <a href='../065duplex_list.mu.html#L36'>prev</a> +<span id="L122" class="LineNr"> 122 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> before-cursor <span class="Special"><-</span> copy <a href='../065duplex_list.mu.html#L32'>prev</a> <span id="L123" class="LineNr"> 123 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">before-cursor:offset</span>, before-cursor <span id="L124" class="LineNr"> 124 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">}</span> <span id="L125" class="LineNr"> 125 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment"># skip to next line</span> <span id="L126" class="LineNr"> 126 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> row <span class="Special"><-</span> add row,<span class="Constant"> 1</span> <span id="L127" class="LineNr"> 127 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> column <span class="Special"><-</span> copy left -<span id="L128" class="LineNr"> 128 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> curr -<span id="L129" class="LineNr"> 129 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L36'>prev</a> <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> <a href='../065duplex_list.mu.html#L36'>prev</a> +<span id="L128" class="LineNr"> 128 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> curr +<span id="L129" class="LineNr"> 129 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L32'>prev</a> <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> <a href='../065duplex_list.mu.html#L32'>prev</a> <span id="L130" class="LineNr"> 130 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">loop</span> <span class="Constant">+next-character</span> <span id="L131" class="LineNr"> 131 </span> <span class="Conceal">¦</span> <span class="Delimiter">}</span> <span id="L132" class="LineNr"> 132 </span> <span class="Conceal">¦</span> <span class="Delimiter">{</span> @@ -202,8 +202,8 @@ if ('onhashchange' in window) { <span id="L139" class="LineNr"> 139 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment"># don't increment curr/prev</span> <span id="L140" class="LineNr"> 140 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">loop</span> <span class="Constant">+next-character</span> <span id="L141" class="LineNr"> 141 </span> <span class="Conceal">¦</span> <span class="Delimiter">}</span> -<span id="L142" class="LineNr"> 142 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> curr -<span id="L143" class="LineNr"> 143 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L36'>prev</a> <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> <a href='../065duplex_list.mu.html#L36'>prev</a> +<span id="L142" class="LineNr"> 142 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> curr +<span id="L143" class="LineNr"> 143 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L32'>prev</a> <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> <a href='../065duplex_list.mu.html#L32'>prev</a> <span id="L144" class="LineNr"> 144 </span> <span class="Conceal">¦</span> column <span class="Special"><-</span> add column,<span class="Constant"> 1</span> <span id="L145" class="LineNr"> 145 </span> <span class="Conceal">¦</span> <span class="muControl">loop</span> <span id="L146" class="LineNr"> 146 </span> <span class="Delimiter">}</span> @@ -219,7 +219,7 @@ if ('onhashchange' in window) { <span id="L156" class="LineNr"> 156 </span> <span class="Conceal">¦</span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">cursor-row:offset</span>, cursor-row <span id="L157" class="LineNr"> 157 </span> <span class="Conceal">¦</span> cursor-column <span class="Special"><-</span> copy column <span id="L158" class="LineNr"> 158 </span> <span class="Conceal">¦</span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">cursor-column:offset</span>, cursor-column -<span id="L159" class="LineNr"> 159 </span> <span class="Conceal">¦</span> before-cursor <span class="Special"><-</span> copy <a href='../065duplex_list.mu.html#L36'>prev</a> +<span id="L159" class="LineNr"> 159 </span> <span class="Conceal">¦</span> before-cursor <span class="Special"><-</span> copy <a href='../065duplex_list.mu.html#L32'>prev</a> <span id="L160" class="LineNr"> 160 </span> <span class="Conceal">¦</span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">before-cursor:offset</span>, before-cursor <span id="L161" class="LineNr"> 161 </span> <span class="Delimiter">}</span> <span id="L162" class="LineNr"> 162 </span>] @@ -268,7 +268,7 @@ if ('onhashchange' in window) { <span id="L205" class="LineNr"> 205 </span> <span class="Constant">load-ingredients</span> <span id="L206" class="LineNr"> 206 </span> before-cursor:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get *editor, <span class="Constant">before-cursor:offset</span> <span id="L207" class="LineNr"> 207 </span> insert c, before-cursor -<span id="L208" class="LineNr"> 208 </span> before-cursor <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> before-cursor +<span id="L208" class="LineNr"> 208 </span> before-cursor <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> before-cursor <span id="L209" class="LineNr"> 209 </span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">before-cursor:offset</span>, before-cursor <span id="L210" class="LineNr"> 210 </span> cursor-row:num <span class="Special"><-</span> get *editor, <span class="Constant">cursor-row:offset</span> <span id="L211" class="LineNr"> 211 </span> cursor-column:num <span class="Special"><-</span> get *editor, <span class="Constant">cursor-column:offset</span> @@ -283,10 +283,10 @@ if ('onhashchange' in window) { <span id="L220" class="LineNr"> 220 </span> <span class="Comment"># but mostly we'll just move the cursor right</span> <span id="L221" class="LineNr"> 221 </span> cursor-column <span class="Special"><-</span> add cursor-column,<span class="Constant"> 1</span> <span id="L222" class="LineNr"> 222 </span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">cursor-column:offset</span>, cursor-column -<span id="L223" class="LineNr"> 223 </span> <a href='../065duplex_list.mu.html#L29'>next</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> before-cursor +<span id="L223" class="LineNr"> 223 </span> <a href='../065duplex_list.mu.html#L25'>next</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> before-cursor <span id="L224" class="LineNr"> 224 </span> <span class="Delimiter">{</span> <span id="L225" class="LineNr"> 225 </span> <span class="Conceal">¦</span> <span class="Comment"># at end of all text? no need to scroll? just print the character and leave</span> -<span id="L226" class="LineNr"> 226 </span> <span class="Conceal">¦</span> at-end?:bool <span class="Special"><-</span> equal <a href='../065duplex_list.mu.html#L29'>next</a>, <span class="Constant">0/null</span> +<span id="L226" class="LineNr"> 226 </span> <span class="Conceal">¦</span> at-end?:bool <span class="Special"><-</span> equal <a href='../065duplex_list.mu.html#L25'>next</a>, <span class="Constant">0/null</span> <span id="L227" class="LineNr"> 227 </span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> at-end? <span id="L228" class="LineNr"> 228 </span> <span class="Conceal">¦</span> bottom:num <span class="Special"><-</span> subtract <a href='../081print.mu.html#L782'>screen-height</a>,<span class="Constant"> 1</span> <span id="L229" class="LineNr"> 229 </span> <span class="Conceal">¦</span> at-bottom?:bool <span class="Special"><-</span> equal save-row, bottom @@ -299,7 +299,7 @@ if ('onhashchange' in window) { <span id="L236" class="LineNr"> 236 </span> <span class="Delimiter">}</span> <span id="L237" class="LineNr"> 237 </span> <span class="Delimiter">{</span> <span id="L238" class="LineNr"> 238 </span> <span class="Conceal">¦</span> <span class="Comment"># not at right margin? print the character and rest of line</span> -<span id="L239" class="LineNr"> 239 </span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> <a href='../065duplex_list.mu.html#L29'>next</a> +<span id="L239" class="LineNr"> 239 </span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> <a href='../065duplex_list.mu.html#L25'>next</a> <span id="L240" class="LineNr"> 240 </span> <span class="Conceal">¦</span> at-right?:bool <span class="Special"><-</span> greater-or-equal cursor-column, <a href='../081print.mu.html#L768'>screen-width</a> <span id="L241" class="LineNr"> 241 </span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> at-right? <span id="L242" class="LineNr"> 242 </span> <span class="Conceal">¦</span> curr:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> copy before-cursor @@ -316,7 +316,7 @@ if ('onhashchange' in window) { <span id="L253" class="LineNr"> 253 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> at-newline? <span id="L254" class="LineNr"> 254 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> print <a href='../081print.mu.html#L16'>screen</a>, currc <span id="L255" class="LineNr"> 255 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr-column <span class="Special"><-</span> add curr-column,<span class="Constant"> 1</span> -<span id="L256" class="LineNr"> 256 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> curr +<span id="L256" class="LineNr"> 256 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> curr <span id="L257" class="LineNr"> 257 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">loop</span> <span id="L258" class="LineNr"> 258 </span> <span class="Conceal">¦</span> <span class="Delimiter">}</span> <span id="L259" class="LineNr"> 259 </span> <span class="Conceal">¦</span> <span class="muControl">return</span> <span class="Constant">0/don't-render</span> @@ -764,9 +764,9 @@ if ('onhashchange' in window) { <span id="L701" class="LineNr"> 701 </span> <span class="Conceal">¦</span> before-wrap-column:num <span class="Special"><-</span> subtract wrap-column,<span class="Constant"> 1</span> <span id="L702" class="LineNr"> 702 </span> <span class="Conceal">¦</span> at-wrap?:bool <span class="Special"><-</span> greater-or-equal cursor-column, wrap-column <span id="L703" class="LineNr"> 703 </span> <span class="Conceal">¦</span> just-before-wrap?:bool <span class="Special"><-</span> greater-or-equal cursor-column, before-wrap-column -<span id="L704" class="LineNr"> 704 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L29'>next</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> before-cursor +<span id="L704" class="LineNr"> 704 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L25'>next</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> before-cursor <span id="L705" class="LineNr"> 705 </span> <span class="Conceal">¦</span> <span class="Comment"># at end of line? next == 0 || next.value == 10/newline</span> -<span id="L706" class="LineNr"> 706 </span> <span class="Conceal">¦</span> at-end-of-line?:bool <span class="Special"><-</span> equal <a href='../065duplex_list.mu.html#L29'>next</a>,<span class="Constant"> 0</span> +<span id="L706" class="LineNr"> 706 </span> <span class="Conceal">¦</span> at-end-of-line?:bool <span class="Special"><-</span> equal <a href='../065duplex_list.mu.html#L25'>next</a>,<span class="Constant"> 0</span> <span id="L707" class="LineNr"> 707 </span> <span class="Conceal">¦</span> <span class="Delimiter">{</span> <span id="L708" class="LineNr"> 708 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> at-end-of-line? <span id="L709" class="LineNr"> 709 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> next-character:char <span class="Special"><-</span> get *next, <span class="Constant">value:offset</span> @@ -956,13 +956,13 @@ if ('onhashchange' in window) { <span id="L893" class="LineNr"> 893 </span> <span class="Delimiter">}</span> <span id="L894" class="LineNr"> 894 </span> <span class="Comment"># insert newline</span> <span id="L895" class="LineNr"> 895 </span> insert <span class="Constant">10/newline</span>, before-cursor -<span id="L896" class="LineNr"> 896 </span> before-cursor <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> before-cursor +<span id="L896" class="LineNr"> 896 </span> before-cursor <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> before-cursor <span id="L897" class="LineNr"> 897 </span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">before-cursor:offset</span>, before-cursor <span id="L898" class="LineNr"> 898 </span> <span class="Comment"># indent if necessary</span> <span id="L899" class="LineNr"> 899 </span> indent?:bool <span class="Special"><-</span> get *editor, <span class="Constant">indent?:offset</span> <span id="L900" class="LineNr"> 900 </span> <span class="muControl">return-unless</span> indent? <span id="L901" class="LineNr"> 901 </span> d:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get *editor, <span class="Constant">data:offset</span> -<span id="L902" class="LineNr"> 902 </span> end-of-previous-line:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L36'>prev</a> before-cursor +<span id="L902" class="LineNr"> 902 </span> end-of-previous-line:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L32'>prev</a> before-cursor <span id="L903" class="LineNr"> 903 </span> indent:num <span class="Special"><-</span> <a href='002-typing.mu.html#L934'>line-indent</a> end-of-previous-line, d <span id="L904" class="LineNr"> 904 </span> i:num <span class="Special"><-</span> copy<span class="Constant"> 0</span> <span id="L905" class="LineNr"> 905 </span> <span class="Delimiter">{</span> @@ -982,7 +982,7 @@ if ('onhashchange' in window) { <span id="L919" class="LineNr"> 919 </span> cursor-at-left?:bool <span class="Special"><-</span> equal cursor-column, left <span id="L920" class="LineNr"> 920 </span> <span class="muControl">return-unless</span> cursor-at-left?, <span class="Constant">0/false</span> <span id="L921" class="LineNr"> 921 </span> before-cursor:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get *editor, <span class="Constant">before-cursor:offset</span> -<span id="L922" class="LineNr"> 922 </span> before-before-cursor:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L36'>prev</a> before-cursor +<span id="L922" class="LineNr"> 922 </span> before-before-cursor:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L32'>prev</a> before-cursor <span id="L923" class="LineNr"> 923 </span> <span class="muControl">return-unless</span> before-before-cursor, <span class="Constant">0/false</span> <span class="Comment"># cursor is at start of editor</span> <span id="L924" class="LineNr"> 924 </span> char-before-cursor:char <span class="Special"><-</span> get *before-cursor, <span class="Constant">value:offset</span> <span id="L925" class="LineNr"> 925 </span> cursor-after-newline?:bool <span class="Special"><-</span> equal char-before-cursor, <span class="Constant">10/newline</span> @@ -1002,7 +1002,7 @@ if ('onhashchange' in window) { <span id="L939" class="LineNr"> 939 </span> at-start?:bool <span class="Special"><-</span> equal curr, start <span id="L940" class="LineNr"> 940 </span> <span class="muControl">return-if</span> at-start? <span id="L941" class="LineNr"> 941 </span> <span class="Delimiter">{</span> -<span id="L942" class="LineNr"> 942 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L36'>prev</a> curr +<span id="L942" class="LineNr"> 942 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L32'>prev</a> curr <span id="L943" class="LineNr"> 943 </span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> curr <span id="L944" class="LineNr"> 944 </span> <span class="Conceal">¦</span> at-start?:bool <span class="Special"><-</span> equal curr, start <span id="L945" class="LineNr"> 945 </span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> at-start? diff --git a/html/edit/003-shortcuts.mu.html b/html/edit/003-shortcuts.mu.html index 1cb4f6a3..4d24c08d 100644 --- a/html/edit/003-shortcuts.mu.html +++ b/html/edit/003-shortcuts.mu.html @@ -174,14 +174,14 @@ if ('onhashchange' in window) { <span id="L112" class="LineNr"> 112 </span> before-cursor:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get *editor, <span class="Constant">before-cursor:offset</span> <span id="L113" class="LineNr"> 113 </span> data:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get *editor, <span class="Constant">data:offset</span> <span id="L114" class="LineNr"> 114 </span> <span class="Comment"># if at start of text (before-cursor at § sentinel), return</span> -<span id="L115" class="LineNr"> 115 </span> <a href='../065duplex_list.mu.html#L36'>prev</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L36'>prev</a> before-cursor -<span id="L116" class="LineNr"> 116 </span> <span class="muControl">return-unless</span> <a href='../065duplex_list.mu.html#L36'>prev</a>, <span class="Constant">0/no-more-render</span>, <span class="Constant">0/nothing-deleted</span> +<span id="L115" class="LineNr"> 115 </span> <a href='../065duplex_list.mu.html#L32'>prev</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L32'>prev</a> before-cursor +<span id="L116" class="LineNr"> 116 </span> <span class="muControl">return-unless</span> <a href='../065duplex_list.mu.html#L32'>prev</a>, <span class="Constant">0/no-more-render</span>, <span class="Constant">0/nothing-deleted</span> <span id="L117" class="LineNr"> 117 </span> trace<span class="Constant"> 10</span>, <span class="Constant">[app]</span>, <span class="Constant">[delete-before-cursor]</span> <span id="L118" class="LineNr"> 118 </span> original-row:num <span class="Special"><-</span> get *editor, <span class="Constant">cursor-row:offset</span> <span id="L119" class="LineNr"> 119 </span> scroll?:bool <span class="Special"><-</span> <a href='003-shortcuts.mu.html#L156'>move-cursor-coordinates-left</a> editor <span id="L120" class="LineNr"> 120 </span> backspaced-cell:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> copy before-cursor <span id="L121" class="LineNr"> 121 </span> data <span class="Special"><-</span> remove before-cursor, data <span class="Comment"># will also neatly trim next/prev pointers in backspaced-cell/before-cursor</span> -<span id="L122" class="LineNr"> 122 </span> before-cursor <span class="Special"><-</span> copy <a href='../065duplex_list.mu.html#L36'>prev</a> +<span id="L122" class="LineNr"> 122 </span> before-cursor <span class="Special"><-</span> copy <a href='../065duplex_list.mu.html#L32'>prev</a> <span id="L123" class="LineNr"> 123 </span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">before-cursor:offset</span>, before-cursor <span id="L124" class="LineNr"> 124 </span> <span class="muControl">return-if</span> scroll?, <span class="Constant">1/go-render</span> <span id="L125" class="LineNr"> 125 </span> <a href='../081print.mu.html#L768'>screen-width</a>:num <span class="Special"><-</span> <a href='../081print.mu.html#L768'>screen-width</a> <a href='../081print.mu.html#L16'>screen</a> @@ -192,7 +192,7 @@ if ('onhashchange' in window) { <span id="L130" class="LineNr"> 130 </span> <span class="muControl">return-unless</span> same-row?, <span class="Constant">1/go-render</span> <span id="L131" class="LineNr"> 131 </span> left:num <span class="Special"><-</span> get *editor, <span class="Constant">left:offset</span> <span id="L132" class="LineNr"> 132 </span> right:num <span class="Special"><-</span> get *editor, <span class="Constant">right:offset</span> -<span id="L133" class="LineNr"> 133 </span> curr:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> before-cursor +<span id="L133" class="LineNr"> 133 </span> curr:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> before-cursor <span id="L134" class="LineNr"> 134 </span> <a href='../081print.mu.html#L16'>screen</a> <span class="Special"><-</span> move-cursor <a href='../081print.mu.html#L16'>screen</a>, cursor-row, cursor-column <span id="L135" class="LineNr"> 135 </span> curr-column:num <span class="Special"><-</span> copy cursor-column <span id="L136" class="LineNr"> 136 </span> <span class="Delimiter">{</span> @@ -206,7 +206,7 @@ if ('onhashchange' in window) { <span id="L144" class="LineNr"> 144 </span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> at-newline? <span id="L145" class="LineNr"> 145 </span> <span class="Conceal">¦</span> <a href='../081print.mu.html#L16'>screen</a> <span class="Special"><-</span> print <a href='../081print.mu.html#L16'>screen</a>, currc <span id="L146" class="LineNr"> 146 </span> <span class="Conceal">¦</span> curr-column <span class="Special"><-</span> add curr-column,<span class="Constant"> 1</span> -<span id="L147" class="LineNr"> 147 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> curr +<span id="L147" class="LineNr"> 147 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> curr <span id="L148" class="LineNr"> 148 </span> <span class="Conceal">¦</span> <span class="muControl">loop</span> <span id="L149" class="LineNr"> 149 </span> <span class="Delimiter">}</span> <span id="L150" class="LineNr"> 150 </span> <span class="Comment"># we're guaranteed not to be at the right margin</span> @@ -286,7 +286,7 @@ if ('onhashchange' in window) { <span id="L224" class="LineNr"> 224 </span> at-start?:bool <span class="Special"><-</span> equal curr, start <span id="L225" class="LineNr"> 225 </span> <span class="muControl">return-if</span> at-start? <span id="L226" class="LineNr"> 226 </span> <span class="Delimiter">{</span> -<span id="L227" class="LineNr"> 227 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L36'>prev</a> curr +<span id="L227" class="LineNr"> 227 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L32'>prev</a> curr <span id="L228" class="LineNr"> 228 </span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> curr <span id="L229" class="LineNr"> 229 </span> <span class="Conceal">¦</span> at-start?:bool <span class="Special"><-</span> equal curr, start <span id="L230" class="LineNr"> 230 </span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> at-start? @@ -437,14 +437,14 @@ if ('onhashchange' in window) { <span id="L375" class="LineNr"> 375 </span> <span class="Constant">load-ingredients</span> <span id="L376" class="LineNr"> 376 </span> before-cursor:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get *editor, <span class="Constant">before-cursor:offset</span> <span id="L377" class="LineNr"> 377 </span> data:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get *editor, <span class="Constant">data:offset</span> -<span id="L378" class="LineNr"> 378 </span> deleted-cell:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> before-cursor +<span id="L378" class="LineNr"> 378 </span> deleted-cell:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> before-cursor <span id="L379" class="LineNr"> 379 </span> <span class="muControl">return-unless</span> deleted-cell, <span class="Constant">0/don't-render</span> <span id="L380" class="LineNr"> 380 </span> currc:char <span class="Special"><-</span> get *deleted-cell, <span class="Constant">value:offset</span> <span id="L381" class="LineNr"> 381 </span> data <span class="Special"><-</span> remove deleted-cell, data <span id="L382" class="LineNr"> 382 </span> deleted-newline?:bool <span class="Special"><-</span> equal currc, <span class="Constant">10/newline</span> <span id="L383" class="LineNr"> 383 </span> <span class="muControl">return-if</span> deleted-newline?, <span class="Constant">1/go-render</span> <span id="L384" class="LineNr"> 384 </span> <span class="Comment"># wasn't a newline? render rest of line</span> -<span id="L385" class="LineNr"> 385 </span> curr:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> before-cursor <span class="Comment"># refresh after remove above</span> +<span id="L385" class="LineNr"> 385 </span> curr:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> before-cursor <span class="Comment"># refresh after remove above</span> <span id="L386" class="LineNr"> 386 </span> cursor-row:num <span class="Special"><-</span> get *editor, <span class="Constant">cursor-row:offset</span> <span id="L387" class="LineNr"> 387 </span> cursor-column:num <span class="Special"><-</span> get *editor, <span class="Constant">cursor-column:offset</span> <span id="L388" class="LineNr"> 388 </span> <a href='../081print.mu.html#L16'>screen</a> <span class="Special"><-</span> move-cursor <a href='../081print.mu.html#L16'>screen</a>, cursor-row, cursor-column @@ -460,7 +460,7 @@ if ('onhashchange' in window) { <span id="L398" class="LineNr"> 398 </span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> at-newline? <span id="L399" class="LineNr"> 399 </span> <span class="Conceal">¦</span> <a href='../081print.mu.html#L16'>screen</a> <span class="Special"><-</span> print <a href='../081print.mu.html#L16'>screen</a>, currc <span id="L400" class="LineNr"> 400 </span> <span class="Conceal">¦</span> curr-column <span class="Special"><-</span> add curr-column,<span class="Constant"> 1</span> -<span id="L401" class="LineNr"> 401 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> curr +<span id="L401" class="LineNr"> 401 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> curr <span id="L402" class="LineNr"> 402 </span> <span class="Conceal">¦</span> <span class="muControl">loop</span> <span id="L403" class="LineNr"> 403 </span> <span class="Delimiter">}</span> <span id="L404" class="LineNr"> 404 </span> <span class="Comment"># we're guaranteed not to be at the right margin</span> @@ -498,7 +498,7 @@ if ('onhashchange' in window) { <span id="L436" class="LineNr"> 436 </span> <span class="Conceal">¦</span> move-to-next-character?:bool <span class="Special"><-</span> equal k, <span class="Constant">65514/right-arrow</span> <span id="L437" class="LineNr"> 437 </span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> move-to-next-character? <span id="L438" class="LineNr"> 438 </span> <span class="Conceal">¦</span> <span class="Comment"># if not at end of text</span> -<span id="L439" class="LineNr"> 439 </span> <span class="Conceal">¦</span> next-cursor:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> before-cursor +<span id="L439" class="LineNr"> 439 </span> <span class="Conceal">¦</span> next-cursor:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> before-cursor <span id="L440" class="LineNr"> 440 </span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> next-cursor <span id="L441" class="LineNr"> 441 </span> <span class="Conceal">¦</span> <span class="Comment"># scan to next character</span> <span id="L442" class="LineNr"> 442 </span><span class="Constant"> </span><span class="Conceal">¦</span><span class="Constant"> <begin-move-cursor></span> @@ -543,8 +543,8 @@ if ('onhashchange' in window) { <span id="L481" class="LineNr"> 481 </span> <span class="Conceal">¦</span> at-wrap?:bool <span class="Special"><-</span> equal cursor-column, wrap-column <span id="L482" class="LineNr"> 482 </span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> at-wrap? <span id="L483" class="LineNr"> 483 </span> <span class="Conceal">¦</span> <span class="Comment"># and if next character isn't newline</span> -<span id="L484" class="LineNr"> 484 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L29'>next</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> before-cursor -<span id="L485" class="LineNr"> 485 </span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> <a href='../065duplex_list.mu.html#L29'>next</a> +<span id="L484" class="LineNr"> 484 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L25'>next</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> before-cursor +<span id="L485" class="LineNr"> 485 </span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> <a href='../065duplex_list.mu.html#L25'>next</a> <span id="L486" class="LineNr"> 486 </span> <span class="Conceal">¦</span> next-character:char <span class="Special"><-</span> get *next, <span class="Constant">value:offset</span> <span id="L487" class="LineNr"> 487 </span> <span class="Conceal">¦</span> newline?:bool <span class="Special"><-</span> equal next-character, <span class="Constant">10/newline</span> <span id="L488" class="LineNr"> 488 </span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> newline? @@ -783,11 +783,11 @@ if ('onhashchange' in window) { <span id="L721" class="LineNr"> 721 </span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> move-to-previous-character? <span id="L722" class="LineNr"> 722 </span> <span class="Conceal">¦</span> trace<span class="Constant"> 10</span>, <span class="Constant">[app]</span>, <span class="Constant">[left arrow]</span> <span id="L723" class="LineNr"> 723 </span> <span class="Conceal">¦</span> <span class="Comment"># if not at start of text (before-cursor at § sentinel)</span> -<span id="L724" class="LineNr"> 724 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L36'>prev</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L36'>prev</a> before-cursor -<span id="L725" class="LineNr"> 725 </span> <span class="Conceal">¦</span> <span class="muControl">return-unless</span> <a href='../065duplex_list.mu.html#L36'>prev</a>, <span class="Constant">0/don't-render</span> +<span id="L724" class="LineNr"> 724 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L32'>prev</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L32'>prev</a> before-cursor +<span id="L725" class="LineNr"> 725 </span> <span class="Conceal">¦</span> <span class="muControl">return-unless</span> <a href='../065duplex_list.mu.html#L32'>prev</a>, <span class="Constant">0/don't-render</span> <span id="L726" class="LineNr"> 726 </span><span class="Constant"> </span><span class="Conceal">¦</span><span class="Constant"> <begin-move-cursor></span> <span id="L727" class="LineNr"> 727 </span> <span class="Conceal">¦</span> go-render? <span class="Special"><-</span> <a href='003-shortcuts.mu.html#L156'>move-cursor-coordinates-left</a> editor -<span id="L728" class="LineNr"> 728 </span> <span class="Conceal">¦</span> before-cursor <span class="Special"><-</span> copy <a href='../065duplex_list.mu.html#L36'>prev</a> +<span id="L728" class="LineNr"> 728 </span> <span class="Conceal">¦</span> before-cursor <span class="Special"><-</span> copy <a href='../065duplex_list.mu.html#L32'>prev</a> <span id="L729" class="LineNr"> 729 </span> <span class="Conceal">¦</span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">before-cursor:offset</span>, before-cursor <span id="L730" class="LineNr"> 730 </span> <span class="Conceal">¦</span> undo-coalesce-tag:num <span class="Special"><-</span> copy <span class="Constant">1/left-arrow</span> <span id="L731" class="LineNr"> 731 </span><span class="Constant"> </span><span class="Conceal">¦</span><span class="Constant"> <end-move-cursor></span> @@ -1100,7 +1100,7 @@ if ('onhashchange' in window) { <span id="L1038" class="LineNr">1038 </span> <span class="Conceal">¦</span> <span class="Delimiter">{</span> <span id="L1039" class="LineNr">1039 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> done?:bool <span class="Special"><-</span> greater-or-equal cursor-column, target-column <span id="L1040" class="LineNr">1040 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> done? -<span id="L1041" class="LineNr">1041 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> before-cursor +<span id="L1041" class="LineNr">1041 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> before-cursor <span id="L1042" class="LineNr">1042 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> curr <span id="L1043" class="LineNr">1043 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> currc:char <span class="Special"><-</span> get *curr, <span class="Constant">value:offset</span> <span id="L1044" class="LineNr">1044 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> at-newline?:bool <span class="Special"><-</span> equal currc, <span class="Constant">10/newline</span> @@ -1435,9 +1435,9 @@ if ('onhashchange' in window) { <span id="L1373" class="LineNr">1373 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">jump</span> <span class="Constant">+try-to-scroll</span> <span id="L1374" class="LineNr">1374 </span> <span class="Conceal">¦</span> <span class="Delimiter">}</span> <span id="L1375" class="LineNr">1375 </span> <span class="Delimiter">}</span> -<span id="L1376" class="LineNr">1376 </span> <a href='../065duplex_list.mu.html#L29'>next</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> before-cursor +<span id="L1376" class="LineNr">1376 </span> <a href='../065duplex_list.mu.html#L25'>next</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> before-cursor <span id="L1377" class="LineNr">1377 </span> <span class="Delimiter">{</span> -<span id="L1378" class="LineNr">1378 </span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> <a href='../065duplex_list.mu.html#L29'>next</a> +<span id="L1378" class="LineNr">1378 </span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> <a href='../065duplex_list.mu.html#L25'>next</a> <span id="L1379" class="LineNr">1379 </span> <span class="Conceal">¦</span> <span class="Delimiter">{</span> <span id="L1380" class="LineNr">1380 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> at-bottom-of-screen? <span id="L1381" class="LineNr">1381 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">return</span> <span class="Constant">0/don't-render</span> @@ -1454,19 +1454,19 @@ if ('onhashchange' in window) { <span id="L1392" class="LineNr">1392 </span> <span class="Conceal">¦</span> target-column:num <span class="Special"><-</span> copy cursor-column <span id="L1393" class="LineNr">1393 </span> <span class="Conceal">¦</span> <span class="Comment"># scan to start of next line</span> <span id="L1394" class="LineNr">1394 </span> <span class="Conceal">¦</span> <span class="Delimiter">{</span> -<span id="L1395" class="LineNr">1395 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L29'>next</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> before-cursor -<span id="L1396" class="LineNr">1396 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> <a href='../065duplex_list.mu.html#L29'>next</a> +<span id="L1395" class="LineNr">1395 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L25'>next</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> before-cursor +<span id="L1396" class="LineNr">1396 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> <a href='../065duplex_list.mu.html#L25'>next</a> <span id="L1397" class="LineNr">1397 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> done?:bool <span class="Special"><-</span> greater-or-equal cursor-column, right <span id="L1398" class="LineNr">1398 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> done? <span id="L1399" class="LineNr">1399 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> cursor-column <span class="Special"><-</span> add cursor-column,<span class="Constant"> 1</span> -<span id="L1400" class="LineNr">1400 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> before-cursor <span class="Special"><-</span> copy <a href='../065duplex_list.mu.html#L29'>next</a> +<span id="L1400" class="LineNr">1400 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> before-cursor <span class="Special"><-</span> copy <a href='../065duplex_list.mu.html#L25'>next</a> <span id="L1401" class="LineNr">1401 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> c:char <span class="Special"><-</span> get *next, <span class="Constant">value:offset</span> <span id="L1402" class="LineNr">1402 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> at-newline?:bool <span class="Special"><-</span> equal c, <span class="Constant">10/newline</span> <span id="L1403" class="LineNr">1403 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> at-newline? <span id="L1404" class="LineNr">1404 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">loop</span> <span id="L1405" class="LineNr">1405 </span> <span class="Conceal">¦</span> <span class="Delimiter">}</span> <span id="L1406" class="LineNr">1406 </span> <span class="Conceal">¦</span> <span class="Delimiter">{</span> -<span id="L1407" class="LineNr">1407 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> <a href='../065duplex_list.mu.html#L29'>next</a> +<span id="L1407" class="LineNr">1407 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> <a href='../065duplex_list.mu.html#L25'>next</a> <span id="L1408" class="LineNr">1408 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Delimiter">{</span> <span id="L1409" class="LineNr">1409 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> at-bottom-of-screen? <span id="L1410" class="LineNr">1410 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">return</span> <span class="Constant">0/don't-render</span> @@ -1479,15 +1479,15 @@ if ('onhashchange' in window) { <span id="L1417" class="LineNr">1417 </span> <span class="Conceal">¦</span> cursor-row <span class="Special"><-</span> add cursor-row,<span class="Constant"> 1</span> <span id="L1418" class="LineNr">1418 </span> <span class="Conceal">¦</span> cursor-column <span class="Special"><-</span> copy left <span id="L1419" class="LineNr">1419 </span> <span class="Conceal">¦</span> <span class="Delimiter">{</span> -<span id="L1420" class="LineNr">1420 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L29'>next</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> before-cursor -<span id="L1421" class="LineNr">1421 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> <a href='../065duplex_list.mu.html#L29'>next</a> +<span id="L1420" class="LineNr">1420 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L25'>next</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> before-cursor +<span id="L1421" class="LineNr">1421 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> <a href='../065duplex_list.mu.html#L25'>next</a> <span id="L1422" class="LineNr">1422 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> c:char <span class="Special"><-</span> get *next, <span class="Constant">value:offset</span> <span id="L1423" class="LineNr">1423 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> at-newline?:bool <span class="Special"><-</span> equal c, <span class="Constant">10/newline</span> <span id="L1424" class="LineNr">1424 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> at-newline? <span id="L1425" class="LineNr">1425 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> done?:bool <span class="Special"><-</span> greater-or-equal cursor-column, target-column <span id="L1426" class="LineNr">1426 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> done? <span id="L1427" class="LineNr">1427 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> cursor-column <span class="Special"><-</span> add cursor-column,<span class="Constant"> 1</span> -<span id="L1428" class="LineNr">1428 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> before-cursor <span class="Special"><-</span> copy <a href='../065duplex_list.mu.html#L29'>next</a> +<span id="L1428" class="LineNr">1428 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> before-cursor <span class="Special"><-</span> copy <a href='../065duplex_list.mu.html#L25'>next</a> <span id="L1429" class="LineNr">1429 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">loop</span> <span id="L1430" class="LineNr">1430 </span> <span class="Conceal">¦</span> <span class="Delimiter">}</span> <span id="L1431" class="LineNr">1431 </span> <span class="Conceal">¦</span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">before-cursor:offset</span>, before-cursor @@ -1637,7 +1637,7 @@ if ('onhashchange' in window) { <span id="L1575" class="LineNr">1575 </span> <span class="Conceal">¦</span> done?:bool <span class="Special"><-</span> equal col, left <span id="L1576" class="LineNr">1576 </span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> done? <span id="L1577" class="LineNr">1577 </span> <span class="Conceal">¦</span> assert curr, <span class="Constant">[move-to-start-of-line tried to move before start of text]</span> -<span id="L1578" class="LineNr">1578 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L36'>prev</a> curr +<span id="L1578" class="LineNr">1578 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L32'>prev</a> curr <span id="L1579" class="LineNr">1579 </span> <span class="Conceal">¦</span> col <span class="Special"><-</span> subtract col,<span class="Constant"> 1</span> <span id="L1580" class="LineNr">1580 </span> <span class="Conceal">¦</span> <span class="muControl">loop</span> <span id="L1581" class="LineNr">1581 </span> <span class="Delimiter">}</span> @@ -1855,8 +1855,8 @@ if ('onhashchange' in window) { <span id="L1793" class="LineNr">1793 </span> right:num <span class="Special"><-</span> get *editor, <span class="Constant">right:offset</span> <span id="L1794" class="LineNr">1794 </span> <span class="Comment"># while not at end of line, move</span> <span id="L1795" class="LineNr">1795 </span> <span class="Delimiter">{</span> -<span id="L1796" class="LineNr">1796 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L29'>next</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> before-cursor -<span id="L1797" class="LineNr">1797 </span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> <a href='../065duplex_list.mu.html#L29'>next</a> <span class="Comment"># end of text</span> +<span id="L1796" class="LineNr">1796 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L25'>next</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> before-cursor +<span id="L1797" class="LineNr">1797 </span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> <a href='../065duplex_list.mu.html#L25'>next</a> <span class="Comment"># end of text</span> <span id="L1798" class="LineNr">1798 </span> <span class="Conceal">¦</span> nextc:char <span class="Special"><-</span> get *next, <span class="Constant">value:offset</span> <span id="L1799" class="LineNr">1799 </span> <span class="Conceal">¦</span> at-end-of-line?:bool <span class="Special"><-</span> equal nextc, <span class="Constant">10/newline</span> <span id="L1800" class="LineNr">1800 </span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> at-end-of-line? @@ -1864,7 +1864,7 @@ if ('onhashchange' in window) { <span id="L1802" class="LineNr">1802 </span> <span class="Conceal">¦</span> at-right?:bool <span class="Special"><-</span> equal cursor-column, right <span id="L1803" class="LineNr">1803 </span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> at-right? <span id="L1804" class="LineNr">1804 </span> <span class="Conceal">¦</span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">cursor-column:offset</span>, cursor-column -<span id="L1805" class="LineNr">1805 </span> <span class="Conceal">¦</span> before-cursor <span class="Special"><-</span> copy <a href='../065duplex_list.mu.html#L29'>next</a> +<span id="L1805" class="LineNr">1805 </span> <span class="Conceal">¦</span> before-cursor <span class="Special"><-</span> copy <a href='../065duplex_list.mu.html#L25'>next</a> <span id="L1806" class="LineNr">1806 </span> <span class="Conceal">¦</span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">before-cursor:offset</span>, before-cursor <span id="L1807" class="LineNr">1807 </span> <span class="Conceal">¦</span> <span class="muControl">loop</span> <span id="L1808" class="LineNr">1808 </span> <span class="Delimiter">}</span> @@ -2043,7 +2043,7 @@ if ('onhashchange' in window) { <span id="L1981" class="LineNr">1981 </span> <span class="Conceal">¦</span> <span class="Comment"># if we have a wrapped line, give up and render the whole screen</span> <span id="L1982" class="LineNr">1982 </span> <span class="Conceal">¦</span> wrap?:bool <span class="Special"><-</span> greater-or-equal i, right <span id="L1983" class="LineNr">1983 </span> <span class="Conceal">¦</span> <span class="muControl">return-if</span> wrap?, <span class="Constant">1/go-render</span> -<span id="L1984" class="LineNr">1984 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> curr +<span id="L1984" class="LineNr">1984 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> curr <span id="L1985" class="LineNr">1985 </span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> curr <span id="L1986" class="LineNr">1986 </span> <span class="Conceal">¦</span> c:char <span class="Special"><-</span> get *curr, <span class="Constant">value:offset</span> <span id="L1987" class="LineNr">1987 </span> <span class="Conceal">¦</span> b:bool <span class="Special"><-</span> equal c,<span class="Constant"> 10</span> @@ -2074,7 +2074,7 @@ if ('onhashchange' in window) { <span id="L2012" class="LineNr">2012 </span> update-top-of-screen?:bool <span class="Special"><-</span> copy <span class="Constant">0/false</span> <span id="L2013" class="LineNr">2013 </span> before-cursor:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get *editor, <span class="Constant">before-cursor:offset</span> <span id="L2014" class="LineNr">2014 </span> start:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> copy before-cursor -<span id="L2015" class="LineNr">2015 </span> end:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> before-cursor +<span id="L2015" class="LineNr">2015 </span> end:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> before-cursor <span id="L2016" class="LineNr">2016 </span> <span class="Delimiter">{</span> <span id="L2017" class="LineNr">2017 </span> <span class="Conceal">¦</span> at-start-of-text?:bool <span class="Special"><-</span> equal start, init <span id="L2018" class="LineNr">2018 </span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> at-start-of-text? @@ -2084,13 +2084,13 @@ if ('onhashchange' in window) { <span id="L2022" class="LineNr">2022 </span> <span class="Conceal">¦</span> <span class="Comment"># if we went past top-of-screen, make a note to update it as well</span> <span id="L2023" class="LineNr">2023 </span> <span class="Conceal">¦</span> at-top-of-screen?:bool <span class="Special"><-</span> equal start, top-of-screen <span id="L2024" class="LineNr">2024 </span> <span class="Conceal">¦</span> update-top-of-screen?:bool <span class="Special"><-</span> or update-top-of-screen?, at-top-of-screen? -<span id="L2025" class="LineNr">2025 </span> <span class="Conceal">¦</span> start <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L36'>prev</a> start +<span id="L2025" class="LineNr">2025 </span> <span class="Conceal">¦</span> start <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L32'>prev</a> start <span id="L2026" class="LineNr">2026 </span> <span class="Conceal">¦</span> assert start, <span class="Constant">[delete-to-start-of-line tried to move before start of text]</span> <span id="L2027" class="LineNr">2027 </span> <span class="Conceal">¦</span> <span class="muControl">loop</span> <span id="L2028" class="LineNr">2028 </span> <span class="Delimiter">}</span> <span id="L2029" class="LineNr">2029 </span> <span class="Comment"># snip it out</span> -<span id="L2030" class="LineNr">2030 </span> result:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> start -<span id="L2031" class="LineNr">2031 </span> <a href='../065duplex_list.mu.html#L389'>remove-between</a> start, end +<span id="L2030" class="LineNr">2030 </span> result:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> start +<span id="L2031" class="LineNr">2031 </span> <a href='../065duplex_list.mu.html#L385'>remove-between</a> start, end <span id="L2032" class="LineNr">2032 </span> <span class="Comment"># update top-of-screen if it's just been invalidated</span> <span id="L2033" class="LineNr">2033 </span> <span class="Delimiter">{</span> <span id="L2034" class="LineNr">2034 </span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> update-top-of-screen? @@ -2631,19 +2631,19 @@ if ('onhashchange' in window) { <span id="L2569" class="LineNr">2569 </span> <span class="Constant">load-ingredients</span> <span id="L2570" class="LineNr">2570 </span> <span class="Comment"># compute range to delete</span> <span id="L2571" class="LineNr">2571 </span> start:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get *editor, <span class="Constant">before-cursor:offset</span> -<span id="L2572" class="LineNr">2572 </span> end:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> start +<span id="L2572" class="LineNr">2572 </span> end:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> start <span id="L2573" class="LineNr">2573 </span> <span class="Delimiter">{</span> <span id="L2574" class="LineNr">2574 </span> <span class="Conceal">¦</span> at-end-of-text?:bool <span class="Special"><-</span> equal end, <span class="Constant">0/null</span> <span id="L2575" class="LineNr">2575 </span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> at-end-of-text? <span id="L2576" class="LineNr">2576 </span> <span class="Conceal">¦</span> curr:char <span class="Special"><-</span> get *end, <span class="Constant">value:offset</span> <span id="L2577" class="LineNr">2577 </span> <span class="Conceal">¦</span> at-end-of-line?:bool <span class="Special"><-</span> equal curr, <span class="Constant">10/newline</span> <span id="L2578" class="LineNr">2578 </span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> at-end-of-line? -<span id="L2579" class="LineNr">2579 </span> <span class="Conceal">¦</span> end <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> end +<span id="L2579" class="LineNr">2579 </span> <span class="Conceal">¦</span> end <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> end <span id="L2580" class="LineNr">2580 </span> <span class="Conceal">¦</span> <span class="muControl">loop</span> <span id="L2581" class="LineNr">2581 </span> <span class="Delimiter">}</span> <span id="L2582" class="LineNr">2582 </span> <span class="Comment"># snip it out</span> -<span id="L2583" class="LineNr">2583 </span> result <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> start -<span id="L2584" class="LineNr">2584 </span> <a href='../065duplex_list.mu.html#L389'>remove-between</a> start, end +<span id="L2583" class="LineNr">2583 </span> result <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> start +<span id="L2584" class="LineNr">2584 </span> <a href='../065duplex_list.mu.html#L385'>remove-between</a> start, end <span id="L2585" class="LineNr">2585 </span>] <span id="L2586" class="LineNr">2586 </span> <span id="L2587" class="LineNr">2587 </span><span class="muScenario">scenario</span> editor-deletes-to-end-of-line-with-ctrl-k-2 [ @@ -2873,7 +2873,7 @@ if ('onhashchange' in window) { <span id="L2811" class="LineNr">2811 </span> <span class="Conceal">¦</span> c:char <span class="Special"><-</span> get *curr, <span class="Constant">value:offset</span> <span id="L2812" class="LineNr">2812 </span> <span class="Conceal">¦</span> at-newline?:bool <span class="Special"><-</span> equal c, <span class="Constant">10/newline</span> <span id="L2813" class="LineNr">2813 </span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> at-newline? -<span id="L2814" class="LineNr">2814 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> curr +<span id="L2814" class="LineNr">2814 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> curr <span id="L2815" class="LineNr">2815 </span> <span class="Conceal">¦</span> count <span class="Special"><-</span> add count,<span class="Constant"> 1</span> <span id="L2816" class="LineNr">2816 </span> <span class="Delimiter">}</span> <span id="L2817" class="LineNr">2817 </span> <span class="Delimiter">{</span> @@ -2883,7 +2883,7 @@ if ('onhashchange' in window) { <span id="L2821" class="LineNr">2821 </span> <span class="Conceal">¦</span> c:char <span class="Special"><-</span> get *curr, <span class="Constant">value:offset</span> <span id="L2822" class="LineNr">2822 </span> <span class="Conceal">¦</span> at-newline?:bool <span class="Special"><-</span> equal c, <span class="Constant">10/newline</span> <span id="L2823" class="LineNr">2823 </span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> at-newline? -<span id="L2824" class="LineNr">2824 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> curr +<span id="L2824" class="LineNr">2824 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> curr <span id="L2825" class="LineNr">2825 </span> <span class="Conceal">¦</span> count <span class="Special"><-</span> add count,<span class="Constant"> 1</span> <span id="L2826" class="LineNr">2826 </span> <span class="Conceal">¦</span> <span class="muControl">loop</span> <span id="L2827" class="LineNr">2827 </span> <span class="Delimiter">}</span> @@ -3250,9 +3250,9 @@ if ('onhashchange' in window) { <span id="L3188" class="LineNr">3188 </span> <span class="Delimiter">{</span> <span id="L3189" class="LineNr">3189 </span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> len <span id="L3190" class="LineNr">3190 </span> <span class="Conceal">¦</span> <span class="Comment"># empty line; just skip this newline</span> -<span id="L3191" class="LineNr">3191 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L36'>prev</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L36'>prev</a> curr -<span id="L3192" class="LineNr">3192 </span> <span class="Conceal">¦</span> <span class="muControl">return-unless</span> <a href='../065duplex_list.mu.html#L36'>prev</a>, curr -<span id="L3193" class="LineNr">3193 </span> <span class="Conceal">¦</span> <span class="muControl">return</span> <a href='../065duplex_list.mu.html#L36'>prev</a> +<span id="L3191" class="LineNr">3191 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L32'>prev</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L32'>prev</a> curr +<span id="L3192" class="LineNr">3192 </span> <span class="Conceal">¦</span> <span class="muControl">return-unless</span> <a href='../065duplex_list.mu.html#L32'>prev</a>, curr +<span id="L3193" class="LineNr">3193 </span> <span class="Conceal">¦</span> <span class="muControl">return</span> <a href='../065duplex_list.mu.html#L32'>prev</a> <span id="L3194" class="LineNr">3194 </span> <span class="Delimiter">}</span> <span id="L3195" class="LineNr">3195 </span> _, max:num <span class="Special"><-</span> divide-with-remainder len, max-line-length <span id="L3196" class="LineNr">3196 </span> <span class="Comment"># remainder 0 => scan one width-worth</span> @@ -3266,9 +3266,9 @@ if ('onhashchange' in window) { <span id="L3204" class="LineNr">3204 </span> <span class="Delimiter">{</span> <span id="L3205" class="LineNr">3205 </span> <span class="Conceal">¦</span> done?:bool <span class="Special"><-</span> greater-or-equal count, max <span id="L3206" class="LineNr">3206 </span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> done? -<span id="L3207" class="LineNr">3207 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L36'>prev</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L36'>prev</a> curr -<span id="L3208" class="LineNr">3208 </span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> <a href='../065duplex_list.mu.html#L36'>prev</a> -<span id="L3209" class="LineNr">3209 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> copy <a href='../065duplex_list.mu.html#L36'>prev</a> +<span id="L3207" class="LineNr">3207 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L32'>prev</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L32'>prev</a> curr +<span id="L3208" class="LineNr">3208 </span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> <a href='../065duplex_list.mu.html#L32'>prev</a> +<span id="L3209" class="LineNr">3209 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> copy <a href='../065duplex_list.mu.html#L32'>prev</a> <span id="L3210" class="LineNr">3210 </span> <span class="Conceal">¦</span> count <span class="Special"><-</span> add count,<span class="Constant"> 1</span> <span id="L3211" class="LineNr">3211 </span> <span class="Conceal">¦</span> <span class="muControl">loop</span> <span id="L3212" class="LineNr">3212 </span> <span class="Delimiter">}</span> @@ -3664,14 +3664,14 @@ if ('onhashchange' in window) { <span id="L3602" class="LineNr">3602 </span> <span class="muControl">return-unless</span> bottom-of-screen <span id="L3603" class="LineNr">3603 </span> <span class="Comment"># if not, position cursor at final character</span> <span id="L3604" class="LineNr">3604 </span> before-cursor:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get *editor, <span class="Constant">before-cursor:offset</span> -<span id="L3605" class="LineNr">3605 </span> before-cursor:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L36'>prev</a> bottom-of-screen +<span id="L3605" class="LineNr">3605 </span> before-cursor:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L32'>prev</a> bottom-of-screen <span id="L3606" class="LineNr">3606 </span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">before-cursor:offset</span>, before-cursor <span id="L3607" class="LineNr">3607 </span> <span class="Comment"># keep one line in common with previous page</span> <span id="L3608" class="LineNr">3608 </span> <span class="Delimiter">{</span> -<span id="L3609" class="LineNr">3609 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L576'>last</a>:char <span class="Special"><-</span> get *before-cursor, <span class="Constant">value:offset</span> -<span id="L3610" class="LineNr">3610 </span> <span class="Conceal">¦</span> newline?:bool <span class="Special"><-</span> equal <a href='../065duplex_list.mu.html#L576'>last</a>, <span class="Constant">10/newline</span> +<span id="L3609" class="LineNr">3609 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L572'>last</a>:char <span class="Special"><-</span> get *before-cursor, <span class="Constant">value:offset</span> +<span id="L3610" class="LineNr">3610 </span> <span class="Conceal">¦</span> newline?:bool <span class="Special"><-</span> equal <a href='../065duplex_list.mu.html#L572'>last</a>, <span class="Constant">10/newline</span> <span id="L3611" class="LineNr">3611 </span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> newline?:bool -<span id="L3612" class="LineNr">3612 </span> <span class="Conceal">¦</span> before-cursor <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L36'>prev</a> before-cursor +<span id="L3612" class="LineNr">3612 </span> <span class="Conceal">¦</span> before-cursor <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L32'>prev</a> before-cursor <span id="L3613" class="LineNr">3613 </span> <span class="Conceal">¦</span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">before-cursor:offset</span>, before-cursor <span id="L3614" class="LineNr">3614 </span> <span class="Delimiter">}</span> <span id="L3615" class="LineNr">3615 </span> <span class="Comment"># move cursor and top-of-screen to start of that line</span> @@ -3695,10 +3695,10 @@ if ('onhashchange' in window) { <span id="L3633" class="LineNr">3633 </span> <span class="Delimiter">{</span> <span id="L3634" class="LineNr">3634 </span> <span class="Conceal">¦</span> at-start-of-text?:bool <span class="Special"><-</span> equal before-cursor, init <span id="L3635" class="LineNr">3635 </span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> at-start-of-text? -<span id="L3636" class="LineNr">3636 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L36'>prev</a>:char <span class="Special"><-</span> get *before-cursor, <span class="Constant">value:offset</span> -<span id="L3637" class="LineNr">3637 </span> <span class="Conceal">¦</span> at-start-of-line?:bool <span class="Special"><-</span> equal <a href='../065duplex_list.mu.html#L36'>prev</a>, <span class="Constant">10/newline</span> +<span id="L3636" class="LineNr">3636 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L32'>prev</a>:char <span class="Special"><-</span> get *before-cursor, <span class="Constant">value:offset</span> +<span id="L3637" class="LineNr">3637 </span> <span class="Conceal">¦</span> at-start-of-line?:bool <span class="Special"><-</span> equal <a href='../065duplex_list.mu.html#L32'>prev</a>, <span class="Constant">10/newline</span> <span id="L3638" class="LineNr">3638 </span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> at-start-of-line? -<span id="L3639" class="LineNr">3639 </span> <span class="Conceal">¦</span> before-cursor <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L36'>prev</a> before-cursor +<span id="L3639" class="LineNr">3639 </span> <span class="Conceal">¦</span> before-cursor <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L32'>prev</a> before-cursor <span id="L3640" class="LineNr">3640 </span> <span class="Conceal">¦</span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">before-cursor:offset</span>, before-cursor <span id="L3641" class="LineNr">3641 </span> <span class="Conceal">¦</span> assert before-cursor, <span class="Constant">[move-to-start-of-line tried to move before start of text]</span> <span id="L3642" class="LineNr">3642 </span> <span class="Conceal">¦</span> <span class="muControl">loop</span> @@ -3888,9 +3888,9 @@ if ('onhashchange' in window) { <span id="L3826" class="LineNr">3826 </span> <span class="Delimiter">{</span> <span id="L3827" class="LineNr">3827 </span> <span class="Conceal">¦</span> done?:bool <span class="Special"><-</span> greater-or-equal count, max <span id="L3828" class="LineNr">3828 </span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> done? -<span id="L3829" class="LineNr">3829 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L36'>prev</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='003-shortcuts.mu.html#L3175'>before-previous-screen-line</a> top-of-screen, editor -<span id="L3830" class="LineNr">3830 </span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> <a href='../065duplex_list.mu.html#L36'>prev</a> -<span id="L3831" class="LineNr">3831 </span> <span class="Conceal">¦</span> top-of-screen <span class="Special"><-</span> copy <a href='../065duplex_list.mu.html#L36'>prev</a> +<span id="L3829" class="LineNr">3829 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L32'>prev</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='003-shortcuts.mu.html#L3175'>before-previous-screen-line</a> top-of-screen, editor +<span id="L3830" class="LineNr">3830 </span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> <a href='../065duplex_list.mu.html#L32'>prev</a> +<span id="L3831" class="LineNr">3831 </span> <span class="Conceal">¦</span> top-of-screen <span class="Special"><-</span> copy <a href='../065duplex_list.mu.html#L32'>prev</a> <span id="L3832" class="LineNr">3832 </span> <span class="Conceal">¦</span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">top-of-screen:offset</span>, top-of-screen <span id="L3833" class="LineNr">3833 </span> <span class="Conceal">¦</span> count <span class="Special"><-</span> add count,<span class="Constant"> 1</span> <span id="L3834" class="LineNr">3834 </span> <span class="Conceal">¦</span> <span class="muControl">loop</span> @@ -4262,7 +4262,7 @@ if ('onhashchange' in window) { <span id="L4200" class="LineNr">4200 </span><span class="Constant"> </span><span class="Conceal">¦</span><span class="Constant"> <begin-move-cursor></span> <span id="L4201" class="LineNr">4201 </span> <span class="Conceal">¦</span> old-top:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get *editor, <span class="Constant">top-of-screen:offset</span> <span id="L4202" class="LineNr">4202 </span> <span class="Conceal">¦</span> cursor:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get *editor, <span class="Constant">before-cursor:offset</span> -<span id="L4203" class="LineNr">4203 </span> <span class="Conceal">¦</span> cursor <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> cursor +<span id="L4203" class="LineNr">4203 </span> <span class="Conceal">¦</span> cursor <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> cursor <span id="L4204" class="LineNr">4204 </span> <span class="Conceal">¦</span> new-top:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='003-shortcuts.mu.html#L3175'>before-previous-screen-line</a> cursor, editor <span id="L4205" class="LineNr">4205 </span> <span class="Conceal">¦</span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">top-of-screen:offset</span>, new-top <span id="L4206" class="LineNr">4206 </span> <span class="Conceal">¦</span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">cursor-row:offset</span>,<span class="Constant"> 1</span> @@ -4283,8 +4283,8 @@ if ('onhashchange' in window) { <span id="L4221" class="LineNr">4221 </span> <span class="Conceal">¦</span> data:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get *editor, <span class="Constant">data:offset</span> <span id="L4222" class="LineNr">4222 </span><span class="Constant"> </span><span class="Conceal">¦</span><span class="Constant"> <begin-insert-character></span> <span id="L4223" class="LineNr">4223 </span> <span class="Conceal">¦</span> before-line-start:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='003-shortcuts.mu.html#L4280'>before-start-of-screen-line</a> editor -<span id="L4224" class="LineNr">4224 </span> <span class="Conceal">¦</span> line-start:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> before-line-start -<span id="L4225" class="LineNr">4225 </span> <span class="Conceal">¦</span> commented-out?:bool <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L589'>match</a> line-start, <span class="Constant">[#? ]</span> <span class="Comment"># comment prefix</span> +<span id="L4224" class="LineNr">4224 </span> <span class="Conceal">¦</span> line-start:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> before-line-start +<span id="L4225" class="LineNr">4225 </span> <span class="Conceal">¦</span> commented-out?:bool <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L585'>match</a> line-start, <span class="Constant">[#? ]</span> <span class="Comment"># comment prefix</span> <span id="L4226" class="LineNr">4226 </span> <span class="Conceal">¦</span> <span class="Delimiter">{</span> <span id="L4227" class="LineNr">4227 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> commented-out? <span id="L4228" class="LineNr">4228 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="Comment"># uncomment</span> @@ -4313,7 +4313,7 @@ if ('onhashchange' in window) { <span id="L4251" class="LineNr">4251 </span> <span class="Constant">local-scope</span> <span id="L4252" class="LineNr">4252 </span> <span class="Constant">load-ingredients</span> <span id="L4253" class="LineNr">4253 </span> before-line-start:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='003-shortcuts.mu.html#L4280'>before-start-of-screen-line</a> editor -<span id="L4254" class="LineNr">4254 </span> line-start:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> before-line-start +<span id="L4254" class="LineNr">4254 </span> line-start:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> before-line-start <span id="L4255" class="LineNr">4255 </span> color:num <span class="Special"><-</span> copy <span class="Constant">7/white</span> <span id="L4256" class="LineNr">4256 </span> left:num <span class="Special"><-</span> get *editor, <span class="Constant">left:offset</span> <span id="L4257" class="LineNr">4257 </span> cursor-row:num <span class="Special"><-</span> get *editor, <span class="Constant">cursor-row:offset</span> @@ -4331,7 +4331,7 @@ if ('onhashchange' in window) { <span id="L4269" class="LineNr">4269 </span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> newline? <span id="L4270" class="LineNr">4270 </span> <span class="Conceal">¦</span> color <span class="Special"><-</span> <a href='001-editor.mu.html#L397'>get-color</a> color, c <span id="L4271" class="LineNr">4271 </span> <span class="Conceal">¦</span> print <a href='../081print.mu.html#L16'>screen</a>, c, color -<span id="L4272" class="LineNr">4272 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> curr +<span id="L4272" class="LineNr">4272 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> curr <span id="L4273" class="LineNr">4273 </span> <span class="Conceal">¦</span> i <span class="Special"><-</span> add i,<span class="Constant"> 1</span> <span id="L4274" class="LineNr">4274 </span> <span class="Conceal">¦</span> <span class="muControl">loop</span> <span id="L4275" class="LineNr">4275 </span> <span class="Delimiter">}</span> @@ -4344,9 +4344,9 @@ if ('onhashchange' in window) { <span id="L4282" class="LineNr">4282 </span> <span class="Constant">load-ingredients</span> <span id="L4283" class="LineNr">4283 </span> cursor:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get *editor, <span class="Constant">before-cursor:offset</span> <span id="L4284" class="LineNr">4284 </span> <span class="Delimiter">{</span> -<span id="L4285" class="LineNr">4285 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L29'>next</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> cursor -<span id="L4286" class="LineNr">4286 </span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> <a href='../065duplex_list.mu.html#L29'>next</a> -<span id="L4287" class="LineNr">4287 </span> <span class="Conceal">¦</span> cursor <span class="Special"><-</span> copy <a href='../065duplex_list.mu.html#L29'>next</a> +<span id="L4285" class="LineNr">4285 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L25'>next</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> cursor +<span id="L4286" class="LineNr">4286 </span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> <a href='../065duplex_list.mu.html#L25'>next</a> +<span id="L4287" class="LineNr">4287 </span> <span class="Conceal">¦</span> cursor <span class="Special"><-</span> copy <a href='../065duplex_list.mu.html#L25'>next</a> <span id="L4288" class="LineNr">4288 </span> <span class="Delimiter">}</span> <span id="L4289" class="LineNr">4289 </span> result <span class="Special"><-</span> <a href='003-shortcuts.mu.html#L3175'>before-previous-screen-line</a> cursor, editor <span id="L4290" class="LineNr">4290 </span>] diff --git a/html/edit/004-programming-environment.mu.html b/html/edit/004-programming-environment.mu.html index e6eac4eb..6179ca5e 100644 --- a/html/edit/004-programming-environment.mu.html +++ b/html/edit/004-programming-environment.mu.html @@ -226,8 +226,8 @@ if ('onhashchange' in window) { <span id="L163" class="LineNr">163 </span> <a href='../081print.mu.html#L782'>screen-height</a>:num <span class="Special"><-</span> <a href='../081print.mu.html#L782'>screen-height</a> <a href='../081print.mu.html#L16'>screen</a> <span id="L164" class="LineNr">164 </span> right:num <span class="Special"><-</span> get *editor, <span class="Constant">right:offset</span> <span id="L165" class="LineNr">165 </span> curr:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get *editor, <span class="Constant">top-of-screen:offset</span> -<span id="L166" class="LineNr">166 </span> <a href='../065duplex_list.mu.html#L36'>prev</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> copy curr <span class="Comment"># just in case curr becomes null and we can't compute prev</span> -<span id="L167" class="LineNr">167 </span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> curr +<span id="L166" class="LineNr">166 </span> <a href='../065duplex_list.mu.html#L32'>prev</a>:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> copy curr <span class="Comment"># just in case curr becomes null and we can't compute prev</span> +<span id="L167" class="LineNr">167 </span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> curr <span id="L168" class="LineNr">168 </span> color:num <span class="Special"><-</span> copy <span class="Constant">7/white</span> <span id="L169" class="LineNr">169 </span> row:num <span class="Special"><-</span> copy <span class="Constant">1/top</span> <span id="L170" class="LineNr">170 </span> column:num <span class="Special"><-</span> copy left @@ -249,7 +249,7 @@ if ('onhashchange' in window) { <span id="L186" class="LineNr">186 </span> <span class="Conceal">¦</span> <span class="Comment"># editor.cursor-row and editor.cursor-column based on</span> <span id="L187" class="LineNr">187 </span> <span class="Conceal">¦</span> <span class="Comment"># old-before-cursor</span> <span id="L188" class="LineNr">188 </span> <span class="Conceal">¦</span> <span class="Delimiter">{</span> -<span id="L189" class="LineNr">189 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> at-cursor?:bool <span class="Special"><-</span> equal old-before-cursor, <a href='../065duplex_list.mu.html#L36'>prev</a> +<span id="L189" class="LineNr">189 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> at-cursor?:bool <span class="Special"><-</span> equal old-before-cursor, <a href='../065duplex_list.mu.html#L32'>prev</a> <span id="L190" class="LineNr">190 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> at-cursor? <span id="L191" class="LineNr">191 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">cursor-row:offset</span>, row <span id="L192" class="LineNr">192 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">cursor-column:offset</span>, column @@ -267,8 +267,8 @@ if ('onhashchange' in window) { <span id="L204" class="LineNr">204 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> row <span class="Special"><-</span> add row,<span class="Constant"> 1</span> <span id="L205" class="LineNr">205 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> column <span class="Special"><-</span> copy left <span id="L206" class="LineNr">206 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='../081print.mu.html#L16'>screen</a> <span class="Special"><-</span> move-cursor <a href='../081print.mu.html#L16'>screen</a>, row, column -<span id="L207" class="LineNr">207 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> curr -<span id="L208" class="LineNr">208 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L36'>prev</a> <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> <a href='../065duplex_list.mu.html#L36'>prev</a> +<span id="L207" class="LineNr">207 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> curr +<span id="L208" class="LineNr">208 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L32'>prev</a> <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> <a href='../065duplex_list.mu.html#L32'>prev</a> <span id="L209" class="LineNr">209 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">loop</span> <span class="Constant">+next-character</span> <span id="L210" class="LineNr">210 </span> <span class="Conceal">¦</span> <span class="Delimiter">}</span> <span id="L211" class="LineNr">211 </span> <span class="Conceal">¦</span> <span class="Delimiter">{</span> @@ -286,8 +286,8 @@ if ('onhashchange' in window) { <span id="L223" class="LineNr">223 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">loop</span> <span class="Constant">+next-character</span> <span id="L224" class="LineNr">224 </span> <span class="Conceal">¦</span> <span class="Delimiter">}</span> <span id="L225" class="LineNr">225 </span> <span class="Conceal">¦</span> print <a href='../081print.mu.html#L16'>screen</a>, c, color -<span id="L226" class="LineNr">226 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> curr -<span id="L227" class="LineNr">227 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L36'>prev</a> <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> <a href='../065duplex_list.mu.html#L36'>prev</a> +<span id="L226" class="LineNr">226 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> curr +<span id="L227" class="LineNr">227 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L32'>prev</a> <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> <a href='../065duplex_list.mu.html#L32'>prev</a> <span id="L228" class="LineNr">228 </span> <span class="Conceal">¦</span> column <span class="Special"><-</span> add column,<span class="Constant"> 1</span> <span id="L229" class="LineNr">229 </span> <span class="Conceal">¦</span> <span class="muControl">loop</span> <span id="L230" class="LineNr">230 </span> <span class="Delimiter">}</span> diff --git a/html/edit/005-sandbox.mu.html b/html/edit/005-sandbox.mu.html index 5272c8bd..1c6ab31c 100644 --- a/html/edit/005-sandbox.mu.html +++ b/html/edit/005-sandbox.mu.html @@ -541,7 +541,7 @@ if ('onhashchange' in window) { <span id="L478" class="LineNr"> 478 </span> <span class="Comment"># read all scenarios, pushing them to end of a list of scenarios</span> <span id="L479" class="LineNr"> 479 </span> idx:num <span class="Special"><-</span> copy<span class="Constant"> 0</span> <span id="L480" class="LineNr"> 480 </span> curr:&:sandbox <span class="Special"><-</span> copy<span class="Constant"> 0</span> -<span id="L481" class="LineNr"> 481 </span> <a href='../065duplex_list.mu.html#L36'>prev</a>:&:sandbox <span class="Special"><-</span> copy<span class="Constant"> 0</span> +<span id="L481" class="LineNr"> 481 </span> <a href='../065duplex_list.mu.html#L32'>prev</a>:&:sandbox <span class="Special"><-</span> copy<span class="Constant"> 0</span> <span id="L482" class="LineNr"> 482 </span> <span class="Delimiter">{</span> <span id="L483" class="LineNr"> 483 </span> <span class="Conceal">¦</span> filename:text <span class="Special"><-</span> append <span class="Constant">[lesson/]</span>, idx <span id="L484" class="LineNr"> 484 </span> <span class="Conceal">¦</span> contents:text <span class="Special"><-</span> <a href='../088file.mu.html#L38'>slurp</a> <a href='../088file.mu.html#L11'>resources</a>, filename @@ -560,7 +560,7 @@ if ('onhashchange' in window) { <span id="L497" class="LineNr"> 497 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> *prev <span class="Special"><-</span> put *prev, <span class="Constant">next-sandbox:offset</span>, curr <span id="L498" class="LineNr"> 498 </span> <span class="Conceal">¦</span> <span class="Delimiter">}</span> <span id="L499" class="LineNr"> 499 </span> <span class="Conceal">¦</span> idx <span class="Special"><-</span> add idx,<span class="Constant"> 1</span> -<span id="L500" class="LineNr"> 500 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L36'>prev</a> <span class="Special"><-</span> copy curr +<span id="L500" class="LineNr"> 500 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L32'>prev</a> <span class="Special"><-</span> copy curr <span id="L501" class="LineNr"> 501 </span> <span class="Conceal">¦</span> <span class="muControl">loop</span> <span id="L502" class="LineNr"> 502 </span> <span class="Delimiter">}</span> <span id="L503" class="LineNr"> 503 </span> <span class="Comment"># update sandbox count</span> @@ -750,13 +750,13 @@ if ('onhashchange' in window) { <span id="L687" class="LineNr"> 687 </span> curr:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get *editor, <span class="Constant">data:offset</span> <span id="L688" class="LineNr"> 688 </span> <span class="Comment"># skip § sentinel</span> <span id="L689" class="LineNr"> 689 </span> assert curr, <span class="Constant">[editor without data is illegal; must have at least a sentinel]</span> -<span id="L690" class="LineNr"> 690 </span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> curr +<span id="L690" class="LineNr"> 690 </span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> curr <span id="L691" class="LineNr"> 691 </span> <span class="muControl">return-unless</span> curr,<span class="Constant"> 0</span> <span id="L692" class="LineNr"> 692 </span> <span class="Delimiter">{</span> <span id="L693" class="LineNr"> 693 </span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> curr <span id="L694" class="LineNr"> 694 </span> <span class="Conceal">¦</span> c:char <span class="Special"><-</span> get *curr, <span class="Constant">value:offset</span> <span id="L695" class="LineNr"> 695 </span> <span class="Conceal">¦</span> buf <span class="Special"><-</span> append buf, c -<span id="L696" class="LineNr"> 696 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> curr +<span id="L696" class="LineNr"> 696 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> curr <span id="L697" class="LineNr"> 697 </span> <span class="Conceal">¦</span> <span class="muControl">loop</span> <span id="L698" class="LineNr"> 698 </span> <span class="Delimiter">}</span> <span id="L699" class="LineNr"> 699 </span> result <span class="Special"><-</span> <a href='../061text.mu.html#L338'>buffer-to-array</a> buf @@ -1010,13 +1010,13 @@ if ('onhashchange' in window) { <span id="L947" class="LineNr"> 947 </span> <span class="Constant">load-ingredients</span> <span id="L948" class="LineNr"> 948 </span> curr:&:sandbox <span class="Special"><-</span> get *env, <span class="Constant">sandbox:offset</span> <span id="L949" class="LineNr"> 949 </span> <span class="muControl">return-unless</span> curr, <span class="Constant">0/nil</span> -<span id="L950" class="LineNr"> 950 </span> <a href='../065duplex_list.mu.html#L29'>next</a>:&:sandbox <span class="Special"><-</span> get *curr, <span class="Constant">next-sandbox:offset</span> +<span id="L950" class="LineNr"> 950 </span> <a href='../065duplex_list.mu.html#L25'>next</a>:&:sandbox <span class="Special"><-</span> get *curr, <span class="Constant">next-sandbox:offset</span> <span id="L951" class="LineNr"> 951 </span> <span class="Delimiter">{</span> -<span id="L952" class="LineNr"> 952 </span> <span class="Conceal">¦</span> <span class="muControl">return-unless</span> <a href='../065duplex_list.mu.html#L29'>next</a>, <span class="Constant">0/nil</span> -<span id="L953" class="LineNr"> 953 </span> <span class="Conceal">¦</span> found?:bool <span class="Special"><-</span> equal <a href='../065duplex_list.mu.html#L29'>next</a>, in +<span id="L952" class="LineNr"> 952 </span> <span class="Conceal">¦</span> <span class="muControl">return-unless</span> <a href='../065duplex_list.mu.html#L25'>next</a>, <span class="Constant">0/nil</span> +<span id="L953" class="LineNr"> 953 </span> <span class="Conceal">¦</span> found?:bool <span class="Special"><-</span> equal <a href='../065duplex_list.mu.html#L25'>next</a>, in <span id="L954" class="LineNr"> 954 </span> <span class="Conceal">¦</span> <span class="muControl">break-if</span> found? -<span id="L955" class="LineNr"> 955 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> copy <a href='../065duplex_list.mu.html#L29'>next</a> -<span id="L956" class="LineNr"> 956 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L29'>next</a> <span class="Special"><-</span> get *curr, <span class="Constant">next-sandbox:offset</span> +<span id="L955" class="LineNr"> 955 </span> <span class="Conceal">¦</span> curr <span class="Special"><-</span> copy <a href='../065duplex_list.mu.html#L25'>next</a> +<span id="L956" class="LineNr"> 956 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L25'>next</a> <span class="Special"><-</span> get *curr, <span class="Constant">next-sandbox:offset</span> <span id="L957" class="LineNr"> 957 </span> <span class="Conceal">¦</span> <span class="muControl">loop</span> <span id="L958" class="LineNr"> 958 </span> <span class="Delimiter">}</span> <span id="L959" class="LineNr"> 959 </span> <span class="muControl">return</span> curr diff --git a/html/edit/006-sandbox-copy.mu.html b/html/edit/006-sandbox-copy.mu.html index 6849cf9f..64332fb3 100644 --- a/html/edit/006-sandbox-copy.mu.html +++ b/html/edit/006-sandbox-copy.mu.html @@ -266,7 +266,7 @@ if ('onhashchange' in window) { <span id="L204" class="LineNr">204 </span> <span class="Constant">local-scope</span> <span id="L205" class="LineNr">205 </span> <span class="Constant">load-ingredients</span> <span id="L206" class="LineNr">206 </span> head:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get *editor, <span class="Constant">data:offset</span> -<span id="L207" class="LineNr">207 </span> first:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> head +<span id="L207" class="LineNr">207 </span> first:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> head <span id="L208" class="LineNr">208 </span> result <span class="Special"><-</span> not first <span id="L209" class="LineNr">209 </span>] <span id="L210" class="LineNr">210 </span> diff --git a/html/edit/011-errors.mu.html b/html/edit/011-errors.mu.html index 8349e70d..790ec76c 100644 --- a/html/edit/011-errors.mu.html +++ b/html/edit/011-errors.mu.html @@ -480,7 +480,7 @@ if ('onhashchange' in window) { <span id="L417" class="LineNr">417 </span> <span class="Conceal">¦</span><span class="Constant"> . x <- copy 0 ╎─────────────────────────────────────────────────.</span> <span id="L418" class="LineNr">418 </span> <span class="Conceal">¦</span><span class="Constant"> .] ╎ .</span> <span id="L419" class="LineNr">419 </span> <span class="Conceal">¦</span><span class="Constant"> .foo: missing type for 'x' in 'x <- copy 0' ╎ .</span> -<span id="L420" class="LineNr">420 </span> <span class="Conceal">¦</span><span class="Constant"> .foo: can't copy '0' to 'x'; types don't <a href='../065duplex_list.mu.html#L589'>match</a> ╎ .</span> +<span id="L420" class="LineNr">420 </span> <span class="Conceal">¦</span><span class="Constant"> .foo: can't copy '0' to 'x'; types don't <a href='../065duplex_list.mu.html#L585'>match</a> ╎ .</span> <span id="L421" class="LineNr">421 </span> <span class="Conceal">¦</span><span class="Constant"> .╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╎ .</span> <span id="L422" class="LineNr">422 </span> <span class="Conceal">¦</span><span class="Constant"> . ╎ .</span> <span id="L423" class="LineNr">423 </span> ] diff --git a/html/edit/012-editor-undo.mu.html b/html/edit/012-editor-undo.mu.html index 7774741c..dcf95a50 100644 --- a/html/edit/012-editor-undo.mu.html +++ b/html/edit/012-editor-undo.mu.html @@ -133,7 +133,7 @@ if ('onhashchange' in window) { <span id="L70" class="LineNr"> 70 </span> <span class="Conceal">¦</span> undo:&:<a href='../064list.mu.html#L6'>list</a>:&:<a href='012-editor-undo.mu.html#L5'>operation</a> <span class="Special"><-</span> get *editor, <span class="Constant">undo:offset</span> <span id="L71" class="LineNr"> 71 </span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> undo <span id="L72" class="LineNr"> 72 </span> <span class="Conceal">¦</span> op:&:<a href='012-editor-undo.mu.html#L5'>operation</a> <span class="Special"><-</span> first undo -<span id="L73" class="LineNr"> 73 </span> <span class="Conceal">¦</span> undo <span class="Special"><-</span> <a href='../064list.mu.html#L25'>rest</a> undo +<span id="L73" class="LineNr"> 73 </span> <span class="Conceal">¦</span> undo <span class="Special"><-</span> <a href='../064list.mu.html#L24'>rest</a> undo <span id="L74" class="LineNr"> 74 </span> <span class="Conceal">¦</span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">undo:offset</span>, undo <span id="L75" class="LineNr"> 75 </span> <span class="Conceal">¦</span> redo:&:<a href='../064list.mu.html#L6'>list</a>:&:<a href='012-editor-undo.mu.html#L5'>operation</a> <span class="Special"><-</span> get *editor, <span class="Constant">redo:offset</span> <span id="L76" class="LineNr"> 76 </span> <span class="Conceal">¦</span> redo <span class="Special"><-</span> push op, redo @@ -151,7 +151,7 @@ if ('onhashchange' in window) { <span id="L88" class="LineNr"> 88 </span> <span class="Conceal">¦</span> redo:&:<a href='../064list.mu.html#L6'>list</a>:&:<a href='012-editor-undo.mu.html#L5'>operation</a> <span class="Special"><-</span> get *editor, <span class="Constant">redo:offset</span> <span id="L89" class="LineNr"> 89 </span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> redo <span id="L90" class="LineNr"> 90 </span> <span class="Conceal">¦</span> op:&:<a href='012-editor-undo.mu.html#L5'>operation</a> <span class="Special"><-</span> first redo -<span id="L91" class="LineNr"> 91 </span> <span class="Conceal">¦</span> redo <span class="Special"><-</span> <a href='../064list.mu.html#L25'>rest</a> redo +<span id="L91" class="LineNr"> 91 </span> <span class="Conceal">¦</span> redo <span class="Special"><-</span> <a href='../064list.mu.html#L24'>rest</a> redo <span id="L92" class="LineNr"> 92 </span> <span class="Conceal">¦</span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">redo:offset</span>, redo <span id="L93" class="LineNr"> 93 </span> <span class="Conceal">¦</span> undo:&:<a href='../064list.mu.html#L6'>list</a>:&:<a href='012-editor-undo.mu.html#L5'>operation</a> <span class="Special"><-</span> get *editor, <span class="Constant">undo:offset</span> <span id="L94" class="LineNr"> 94 </span> <span class="Conceal">¦</span> undo <span class="Special"><-</span> push op, undo @@ -221,7 +221,7 @@ if ('onhashchange' in window) { <span id="L158" class="LineNr"> 158 </span> <span class="Conceal">¦</span> previous-coalesce-tag:num <span class="Special"><-</span> get typing, <span class="Constant">tag:offset</span> <span id="L159" class="LineNr"> 159 </span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> previous-coalesce-tag <span id="L160" class="LineNr"> 160 </span> <span class="Conceal">¦</span> before-cursor:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get *editor, <span class="Constant">before-cursor:offset</span> -<span id="L161" class="LineNr"> 161 </span> <span class="Conceal">¦</span> insert-until:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> before-cursor +<span id="L161" class="LineNr"> 161 </span> <span class="Conceal">¦</span> insert-until:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> before-cursor <span id="L162" class="LineNr"> 162 </span> <span class="Conceal">¦</span> typing <span class="Special"><-</span> put typing, <span class="Constant">insert-until:offset</span>, insert-until <span id="L163" class="LineNr"> 163 </span> <span class="Conceal">¦</span> typing <span class="Special"><-</span> put typing, <span class="Constant">after-row:offset</span>, cursor-row <span id="L164" class="LineNr"> 164 </span> <span class="Conceal">¦</span> typing <span class="Special"><-</span> put typing, <span class="Constant">after-column:offset</span>, cursor-column @@ -230,8 +230,8 @@ if ('onhashchange' in window) { <span id="L167" class="LineNr"> 167 </span> <span class="Conceal">¦</span> <span class="muControl">break</span> <span class="Constant">+done-adding-insert-operation</span> <span id="L168" class="LineNr"> 168 </span> <span class="Delimiter">}</span> <span id="L169" class="LineNr"> 169 </span> <span class="Comment"># if not, create a new operation</span> -<span id="L170" class="LineNr"> 170 </span> insert-from:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> cursor-before -<span id="L171" class="LineNr"> 171 </span> insert-to:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> insert-from +<span id="L170" class="LineNr"> 170 </span> insert-from:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> cursor-before +<span id="L171" class="LineNr"> 171 </span> insert-to:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> insert-from <span id="L172" class="LineNr"> 172 </span> op:&:<a href='012-editor-undo.mu.html#L5'>operation</a> <span class="Special"><-</span> new <span class="Constant"><a href='012-editor-undo.mu.html#L5'>operation</a>:type</span> <span id="L173" class="LineNr"> 173 </span> *op <span class="Special"><-</span> merge <span class="Constant">0/insert-operation</span>, save-row/before, save-column/before, top-before, cursor-row/after, cursor-column/after, top-after, insert-from, insert-to, <span class="Constant">1/coalesce</span> <span id="L174" class="LineNr"> 174 </span> editor <span class="Special"><-</span> <a href='012-editor-undo.mu.html#L202'>add-operation</a> editor, op @@ -250,9 +250,9 @@ if ('onhashchange' in window) { <span id="L187" class="LineNr"> 187 </span> cursor-row:num <span class="Special"><-</span> get *editor, <span class="Constant">cursor-row:offset</span> <span id="L188" class="LineNr"> 188 </span> cursor-column:num <span class="Special"><-</span> get *editor, <span class="Constant">cursor-row:offset</span> <span id="L189" class="LineNr"> 189 </span> <span class="Comment"># never coalesce</span> -<span id="L190" class="LineNr"> 190 </span> insert-from:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> cursor-before +<span id="L190" class="LineNr"> 190 </span> insert-from:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> cursor-before <span id="L191" class="LineNr"> 191 </span> before-cursor:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get *editor, <span class="Constant">before-cursor:offset</span> -<span id="L192" class="LineNr"> 192 </span> insert-to:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> before-cursor +<span id="L192" class="LineNr"> 192 </span> insert-to:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> before-cursor <span id="L193" class="LineNr"> 193 </span> op:&:<a href='012-editor-undo.mu.html#L5'>operation</a> <span class="Special"><-</span> new <span class="Constant"><a href='012-editor-undo.mu.html#L5'>operation</a>:type</span> <span id="L194" class="LineNr"> 194 </span> *op <span class="Special"><-</span> merge <span class="Constant">0/insert-operation</span>, cursor-row-before, cursor-column-before, top-before, cursor-row/after, cursor-column/after, top-after, insert-from, insert-to, <span class="Constant">0/never-coalesce</span> <span id="L195" class="LineNr"> 195 </span> editor <span class="Special"><-</span> <a href='012-editor-undo.mu.html#L202'>add-operation</a> editor, op @@ -280,9 +280,9 @@ if ('onhashchange' in window) { <span id="L217" class="LineNr"> 217 </span> <span class="Conceal">¦</span> start:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get typing, <span class="Constant">insert-from:offset</span> <span id="L218" class="LineNr"> 218 </span> <span class="Conceal">¦</span> end:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get typing, <span class="Constant">insert-until:offset</span> <span id="L219" class="LineNr"> 219 </span> <span class="Conceal">¦</span> <span class="Comment"># assert cursor-row/cursor-column/top-of-screen match after-row/after-column/after-top-of-screen</span> -<span id="L220" class="LineNr"> 220 </span> <span class="Conceal">¦</span> before-cursor:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L36'>prev</a> start +<span id="L220" class="LineNr"> 220 </span> <span class="Conceal">¦</span> before-cursor:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L32'>prev</a> start <span id="L221" class="LineNr"> 221 </span> <span class="Conceal">¦</span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">before-cursor:offset</span>, before-cursor -<span id="L222" class="LineNr"> 222 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L389'>remove-between</a> before-cursor, end +<span id="L222" class="LineNr"> 222 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L385'>remove-between</a> before-cursor, end <span id="L223" class="LineNr"> 223 </span> <span class="Conceal">¦</span> cursor-row <span class="Special"><-</span> get typing, <span class="Constant">before-row:offset</span> <span id="L224" class="LineNr"> 224 </span> <span class="Conceal">¦</span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">cursor-row:offset</span>, cursor-row <span id="L225" class="LineNr"> 225 </span> <span class="Conceal">¦</span> cursor-column <span class="Special"><-</span> get typing, <span class="Constant">before-column:offset</span> @@ -480,7 +480,7 @@ if ('onhashchange' in window) { <span id="L417" class="LineNr"> 417 </span> <span class="Conceal">¦</span> before-cursor <span class="Special"><-</span> get *editor, <span class="Constant">before-cursor:offset</span> <span id="L418" class="LineNr"> 418 </span> <span class="Conceal">¦</span> insert-from:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get typing, <span class="Constant">insert-from:offset</span> <span class="Comment"># ignore insert-to because it's already been spliced away</span> <span id="L419" class="LineNr"> 419 </span> <span class="Conceal">¦</span> <span class="Comment"># assert insert-to matches next(before-cursor)</span> -<span id="L420" class="LineNr"> 420 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L529'>splice</a> before-cursor, insert-from +<span id="L420" class="LineNr"> 420 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L525'>splice</a> before-cursor, insert-from <span id="L421" class="LineNr"> 421 </span> <span class="Conceal">¦</span> <span class="Comment"># assert cursor-row/cursor-column/top-of-screen match after-row/after-column/after-top-of-screen</span> <span id="L422" class="LineNr"> 422 </span> <span class="Conceal">¦</span> cursor-row <span class="Special"><-</span> get typing, <span class="Constant">after-row:offset</span> <span id="L423" class="LineNr"> 423 </span> <span class="Conceal">¦</span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">cursor-row:offset</span>, cursor-row @@ -1701,7 +1701,7 @@ if ('onhashchange' in window) { <span id="L1638" class="LineNr">1638 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> coalesce? <span id="L1639" class="LineNr">1639 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> deletion <span class="Special"><-</span> put deletion, <span class="Constant">delete-from:offset</span>, before-cursor <span id="L1640" class="LineNr">1640 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> backspaced-so-far:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get deletion, <span class="Constant">deleted-text:offset</span> -<span id="L1641" class="LineNr">1641 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L529'>splice</a> backspaced-cell, backspaced-so-far +<span id="L1641" class="LineNr">1641 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L525'>splice</a> backspaced-cell, backspaced-so-far <span id="L1642" class="LineNr">1642 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> deletion <span class="Special"><-</span> put deletion, <span class="Constant">deleted-text:offset</span>, backspaced-cell <span id="L1643" class="LineNr">1643 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> deletion <span class="Special"><-</span> put deletion, <span class="Constant">after-row:offset</span>, cursor-row <span id="L1644" class="LineNr">1644 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> deletion <span class="Special"><-</span> put deletion, <span class="Constant">after-column:offset</span>, cursor-column @@ -1711,7 +1711,7 @@ if ('onhashchange' in window) { <span id="L1648" class="LineNr">1648 </span> <span class="Conceal">¦</span> <span class="Delimiter">}</span> <span id="L1649" class="LineNr">1649 </span> <span class="Conceal">¦</span> <span class="Comment"># if not, create a new operation</span> <span id="L1650" class="LineNr">1650 </span> <span class="Conceal">¦</span> op:&:<a href='012-editor-undo.mu.html#L5'>operation</a> <span class="Special"><-</span> new <span class="Constant"><a href='012-editor-undo.mu.html#L5'>operation</a>:type</span> -<span id="L1651" class="LineNr">1651 </span> <span class="Conceal">¦</span> deleted-until:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> before-cursor +<span id="L1651" class="LineNr">1651 </span> <span class="Conceal">¦</span> deleted-until:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> before-cursor <span id="L1652" class="LineNr">1652 </span> <span class="Conceal">¦</span> *op <span class="Special"><-</span> merge <span class="Constant">2/delete-operation</span>, save-row/before, save-column/before, top-before, cursor-row/after, cursor-column/after, top-after, backspaced-cell/deleted, before-cursor/delete-from, deleted-until, <span class="Constant">1/coalesce-backspace</span> <span id="L1653" class="LineNr">1653 </span> <span class="Conceal">¦</span> editor <span class="Special"><-</span> <a href='012-editor-undo.mu.html#L202'>add-operation</a> editor, op <span id="L1654" class="LineNr">1654 </span><span class="Constant"> </span><span class="Conceal">¦</span><span class="Constant"> +done-adding-backspace-operation</span> @@ -1725,8 +1725,8 @@ if ('onhashchange' in window) { <span id="L1662" class="LineNr">1662 </span> <span class="Conceal">¦</span> anchor:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get deletion, <span class="Constant">delete-from:offset</span> <span id="L1663" class="LineNr">1663 </span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> anchor <span id="L1664" class="LineNr">1664 </span> <span class="Conceal">¦</span> deleted:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get deletion, <span class="Constant">deleted-text:offset</span> -<span id="L1665" class="LineNr">1665 </span> <span class="Conceal">¦</span> old-cursor:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L576'>last</a> deleted -<span id="L1666" class="LineNr">1666 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L529'>splice</a> anchor, deleted +<span id="L1665" class="LineNr">1665 </span> <span class="Conceal">¦</span> old-cursor:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L572'>last</a> deleted +<span id="L1666" class="LineNr">1666 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L525'>splice</a> anchor, deleted <span id="L1667" class="LineNr">1667 </span> <span class="Conceal">¦</span> <span class="Comment"># assert cursor-row/cursor-column/top-of-screen match after-row/after-column/after-top-of-screen</span> <span id="L1668" class="LineNr">1668 </span> <span class="Conceal">¦</span> before-cursor <span class="Special"><-</span> copy old-cursor <span id="L1669" class="LineNr">1669 </span> <span class="Conceal">¦</span> cursor-row <span class="Special"><-</span> get deletion, <span class="Constant">before-row:offset</span> @@ -1745,7 +1745,7 @@ if ('onhashchange' in window) { <span id="L1682" class="LineNr">1682 </span> <span class="Conceal">¦</span> start:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get deletion, <span class="Constant">delete-from:offset</span> <span id="L1683" class="LineNr">1683 </span> <span class="Conceal">¦</span> end:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get deletion, <span class="Constant">delete-until:offset</span> <span id="L1684" class="LineNr">1684 </span> <span class="Conceal">¦</span> data:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get *editor, <span class="Constant">data:offset</span> -<span id="L1685" class="LineNr">1685 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L389'>remove-between</a> start, end +<span id="L1685" class="LineNr">1685 </span> <span class="Conceal">¦</span> <a href='../065duplex_list.mu.html#L385'>remove-between</a> start, end <span id="L1686" class="LineNr">1686 </span> <span class="Conceal">¦</span> <span class="Comment"># assert cursor-row/cursor-column/top-of-screen match after-row/after-column/after-top-of-screen</span> <span id="L1687" class="LineNr">1687 </span> <span class="Conceal">¦</span> cursor-row <span class="Special"><-</span> get deletion, <span class="Constant">after-row:offset</span> <span id="L1688" class="LineNr">1688 </span> <span class="Conceal">¦</span> *editor <span class="Special"><-</span> put *editor, <span class="Constant">cursor-row:offset</span>, cursor-row @@ -1925,7 +1925,7 @@ if ('onhashchange' in window) { <span id="L1862" class="LineNr">1862 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> previous-coalesce-tag:num <span class="Special"><-</span> get deletion, <span class="Constant">tag:offset</span> <span id="L1863" class="LineNr">1863 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> coalesce?:bool <span class="Special"><-</span> equal previous-coalesce-tag, <span class="Constant">2/coalesce-delete</span> <span id="L1864" class="LineNr">1864 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> <span class="muControl">break-unless</span> coalesce? -<span id="L1865" class="LineNr">1865 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> delete-until:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> before-cursor +<span id="L1865" class="LineNr">1865 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> delete-until:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> before-cursor <span id="L1866" class="LineNr">1866 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> deletion <span class="Special"><-</span> put deletion, <span class="Constant">delete-until:offset</span>, delete-until <span id="L1867" class="LineNr">1867 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> deleted-so-far:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get deletion, <span class="Constant">deleted-text:offset</span> <span id="L1868" class="LineNr">1868 </span> <span class="Conceal">¦</span> <span class="Conceal">¦</span> deleted-so-far <span class="Special"><-</span> append deleted-so-far, deleted-cell @@ -1938,7 +1938,7 @@ if ('onhashchange' in window) { <span id="L1875" class="LineNr">1875 </span> <span class="Conceal">¦</span> <span class="Delimiter">}</span> <span id="L1876" class="LineNr">1876 </span> <span class="Conceal">¦</span> <span class="Comment"># if not, create a new operation</span> <span id="L1877" class="LineNr">1877 </span> <span class="Conceal">¦</span> op:&:<a href='012-editor-undo.mu.html#L5'>operation</a> <span class="Special"><-</span> new <span class="Constant"><a href='012-editor-undo.mu.html#L5'>operation</a>:type</span> -<span id="L1878" class="LineNr">1878 </span> <span class="Conceal">¦</span> deleted-until:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> before-cursor +<span id="L1878" class="LineNr">1878 </span> <span class="Conceal">¦</span> deleted-until:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> before-cursor <span id="L1879" class="LineNr">1879 </span> <span class="Conceal">¦</span> *op <span class="Special"><-</span> merge <span class="Constant">2/delete-operation</span>, save-row/before, save-column/before, top-before, cursor-row/after, cursor-column/after, top-after, deleted-cell/deleted, before-cursor/delete-from, deleted-until, <span class="Constant">2/coalesce-delete</span> <span id="L1880" class="LineNr">1880 </span> <span class="Conceal">¦</span> editor <span class="Special"><-</span> <a href='012-editor-undo.mu.html#L202'>add-operation</a> editor, op <span id="L1881" class="LineNr">1881 </span><span class="Constant"> </span><span class="Conceal">¦</span><span class="Constant"> +done-adding-delete-operation</span> @@ -2040,7 +2040,7 @@ if ('onhashchange' in window) { <span id="L1977" class="LineNr">1977 </span> <span class="Conceal">¦</span> top-after:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get *editor, <span class="Constant">top-of-screen:offset</span> <span id="L1978" class="LineNr">1978 </span> <span class="Conceal">¦</span> cursor-row:num <span class="Special"><-</span> get *editor, <span class="Constant">cursor-row:offset</span> <span id="L1979" class="LineNr">1979 </span> <span class="Conceal">¦</span> cursor-column:num <span class="Special"><-</span> get *editor, <span class="Constant">cursor-column:offset</span> -<span id="L1980" class="LineNr">1980 </span> <span class="Conceal">¦</span> deleted-until:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> before-cursor +<span id="L1980" class="LineNr">1980 </span> <span class="Conceal">¦</span> deleted-until:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> before-cursor <span id="L1981" class="LineNr">1981 </span> <span class="Conceal">¦</span> op:&:<a href='012-editor-undo.mu.html#L5'>operation</a> <span class="Special"><-</span> new <span class="Constant"><a href='012-editor-undo.mu.html#L5'>operation</a>:type</span> <span id="L1982" class="LineNr">1982 </span> <span class="Conceal">¦</span> *op <span class="Special"><-</span> merge <span class="Constant">2/delete-operation</span>, save-row/before, save-column/before, top-before, cursor-row/after, cursor-column/after, top-after, deleted-cells/deleted, before-cursor/delete-from, deleted-until, <span class="Constant">0/never-coalesce</span> <span id="L1983" class="LineNr">1983 </span> <span class="Conceal">¦</span> editor <span class="Special"><-</span> <a href='012-editor-undo.mu.html#L202'>add-operation</a> editor, op @@ -2143,7 +2143,7 @@ if ('onhashchange' in window) { <span id="L2080" class="LineNr">2080 </span> <span class="Conceal">¦</span> top-after:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get *editor, <span class="Constant">top-of-screen:offset</span> <span id="L2081" class="LineNr">2081 </span> <span class="Conceal">¦</span> op:&:<a href='012-editor-undo.mu.html#L5'>operation</a> <span class="Special"><-</span> new <span class="Constant"><a href='012-editor-undo.mu.html#L5'>operation</a>:type</span> <span id="L2082" class="LineNr">2082 </span> <span class="Conceal">¦</span> before-cursor:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> get *editor, <span class="Constant">before-cursor:offset</span> -<span id="L2083" class="LineNr">2083 </span> <span class="Conceal">¦</span> deleted-until:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L29'>next</a> before-cursor +<span id="L2083" class="LineNr">2083 </span> <span class="Conceal">¦</span> deleted-until:&:<a href='../065duplex_list.mu.html#L3'>duplex-list</a>:char <span class="Special"><-</span> <a href='../065duplex_list.mu.html#L25'>next</a> before-cursor <span id="L2084" class="LineNr">2084 </span> <span class="Conceal">¦</span> cursor-row:num <span class="Special"><-</span> get *editor, <span class="Constant">cursor-row:offset</span> <span id="L2085" class="LineNr">2085 </span> <span class="Conceal">¦</span> cursor-column:num <span class="Special"><-</span> get *editor, <span class="Constant">cursor-column:offset</span> <span id="L2086" class="LineNr">2086 </span> <span class="Conceal">¦</span> *op <span class="Special"><-</span> merge <span class="Constant">2/delete-operation</span>, save-row/before, save-column/before, top-before, cursor-row/after, cursor-column/after, top-after, deleted-cells/deleted, before-cursor/delete-from, deleted-until, <span class="Constant">0/never-coalesce</span> |