about summary refs log tree commit diff stats
path: root/html/shell/gap-buffer.mu.html
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2021-06-23 13:19:20 -0700
committerKartik Agaram <vc@akkartik.com>2021-06-23 13:19:20 -0700
commite0b8eddb5b2463a6a2890fd2a089cc3cc1a0f711 (patch)
tree33975c8b0bdde721e9bcfd4f59c85f445b3408ee /html/shell/gap-buffer.mu.html
parenta25e4c1ac2f135b5b76508c6bd5cd2d4edd73c49 (diff)
downloadmu-e0b8eddb5b2463a6a2890fd2a089cc3cc1a0f711.tar.gz
.
Diffstat (limited to 'html/shell/gap-buffer.mu.html')
-rw-r--r--html/shell/gap-buffer.mu.html540
1 files changed, 269 insertions, 271 deletions
diff --git a/html/shell/gap-buffer.mu.html b/html/shell/gap-buffer.mu.html
index f22c381f..a45380dd 100644
--- a/html/shell/gap-buffer.mu.html
+++ b/html/shell/gap-buffer.mu.html
@@ -140,7 +140,7 @@ if ('onhashchange' in window) {
 <span id="L75" class="LineNr">  75 </span>    compare key, <span class="Constant">0</span>/null
 <span id="L76" class="LineNr">  76 </span>    <span class="PreProc">break-if-=</span>
 <span id="L77" class="LineNr">  77 </span>    <span class="PreProc">var</span> g/<span class="muRegEax">eax</span>: grapheme <span class="Special">&lt;-</span> copy key
-<span id="L78" class="LineNr">  78 </span>    <a href='gap-buffer.mu.html#L1206'>edit-gap-buffer</a> self, g
+<span id="L78" class="LineNr">  78 </span>    <a href='gap-buffer.mu.html#L1204'>edit-gap-buffer</a> self, g
 <span id="L79" class="LineNr">  79 </span>    <span class="PreProc">loop</span>
 <span id="L80" class="LineNr">  80 </span>  <span class="Delimiter">}</span>
 <span id="L81" class="LineNr">  81 </span><span class="Delimiter">}</span>
@@ -1252,7 +1252,7 @@ if ('onhashchange' in window) {
 <span id="L1187" class="LineNr">1187 </span>  <a href='../502test.mu.html#L2'>check-ints-equal</a> x, <span class="Constant">0</span>/nul, <span class="Constant">&quot;F - <a href='gap-buffer.mu.html#L1140'>test-read-from-gap-buffer</a>/right-4&quot;</span>
 <span id="L1188" class="LineNr">1188 </span><span class="Delimiter">}</span>
 <span id="L1189" class="LineNr">1189 </span>
-<span id="L1190" class="LineNr">1190 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='gap-buffer.mu.html#L1190'>skip-whitespace-from-gap-buffer</a></span> self: (addr <a href='gap-buffer.mu.html#L3'>gap-buffer</a>) <span class="Delimiter">{</span>
+<span id="L1190" class="LineNr">1190 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='gap-buffer.mu.html#L1190'>skip-spaces-from-gap-buffer</a></span> self: (addr <a href='gap-buffer.mu.html#L3'>gap-buffer</a>) <span class="Delimiter">{</span>
 <span id="L1191" class="LineNr">1191 </span>  <span class="PreProc">var</span> done?/<span class="muRegEax">eax</span>: boolean <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L1023'>gap-buffer-scan-done?</a> self
 <span id="L1192" class="LineNr">1192 </span>  compare done?, <span class="Constant">0</span>/false
 <span id="L1193" class="LineNr">1193 </span>  <span class="PreProc">break-if-!=</span>
@@ -1260,281 +1260,279 @@ if ('onhashchange' in window) {
 <span id="L1195" class="LineNr">1195 </span>  <span class="Delimiter">{</span>
 <span id="L1196" class="LineNr">1196 </span>    compare g, <span class="Constant">0x20</span>/space
 <span id="L1197" class="LineNr">1197 </span>    <span class="PreProc">break-if-=</span>
-<span id="L1198" class="LineNr">1198 </span>    compare g, <span class="Constant">0xa</span>/newline
-<span id="L1199" class="LineNr">1199 </span>    <span class="PreProc">break-if-=</span>
-<span id="L1200" class="LineNr">1200 </span>    <span class="PreProc">return</span>
-<span id="L1201" class="LineNr">1201 </span>  <span class="Delimiter">}</span>
-<span id="L1202" class="LineNr">1202 </span>  g <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L1083'>read-from-gap-buffer</a> self
-<span id="L1203" class="LineNr">1203 </span>  <span class="PreProc">loop</span>
-<span id="L1204" class="LineNr">1204 </span><span class="Delimiter">}</span>
-<span id="L1205" class="LineNr">1205 </span>
-<span id="L1206" class="LineNr">1206 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='gap-buffer.mu.html#L1206'>edit-gap-buffer</a></span> self: (addr <a href='gap-buffer.mu.html#L3'>gap-buffer</a>), key: grapheme <span class="Delimiter">{</span>
-<span id="L1207" class="LineNr">1207 </span>  <span class="PreProc">var</span> g/<span class="muRegEdx">edx</span>: grapheme <span class="Special">&lt;-</span> copy key
-<span id="L1208" class="LineNr">1208 </span>  <span class="Delimiter">{</span>
-<span id="L1209" class="LineNr">1209 </span>    compare g, <span class="Constant">8</span>/backspace
-<span id="L1210" class="LineNr">1210 </span>    <span class="PreProc">break-if-!=</span>
-<span id="L1211" class="LineNr">1211 </span>    <a href='gap-buffer.mu.html#L566'>delete-before-gap</a> self
-<span id="L1212" class="LineNr">1212 </span>    <span class="PreProc">return</span>
-<span id="L1213" class="LineNr">1213 </span>  <span class="Delimiter">}</span>
-<span id="L1214" class="LineNr">1214 </span>  <span class="Delimiter">{</span>
-<span id="L1215" class="LineNr">1215 </span>    compare g, <span class="Constant">0x80</span>/left-arrow
-<span id="L1216" class="LineNr">1216 </span>    <span class="PreProc">break-if-!=</span>
-<span id="L1217" class="LineNr">1217 </span>    <span class="PreProc">var</span> dummy/<span class="muRegEax">eax</span>: grapheme <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L496'>gap-left</a> self
-<span id="L1218" class="LineNr">1218 </span>    <span class="PreProc">return</span>
-<span id="L1219" class="LineNr">1219 </span>  <span class="Delimiter">}</span>
-<span id="L1220" class="LineNr">1220 </span>  <span class="Delimiter">{</span>
-<span id="L1221" class="LineNr">1221 </span>    compare g, <span class="Constant">0x83</span>/right-arrow
-<span id="L1222" class="LineNr">1222 </span>    <span class="PreProc">break-if-!=</span>
-<span id="L1223" class="LineNr">1223 </span>    <span class="PreProc">var</span> dummy/<span class="muRegEax">eax</span>: grapheme <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L482'>gap-right</a> self
-<span id="L1224" class="LineNr">1224 </span>    <span class="PreProc">return</span>
-<span id="L1225" class="LineNr">1225 </span>  <span class="Delimiter">}</span>
-<span id="L1226" class="LineNr">1226 </span>  <span class="Delimiter">{</span>
-<span id="L1227" class="LineNr">1227 </span>    compare g, <span class="Constant">6</span>/ctrl-f
-<span id="L1228" class="LineNr">1228 </span>    <span class="PreProc">break-if-!=</span>
-<span id="L1229" class="LineNr">1229 </span>    <a href='gap-buffer.mu.html#L1280'>gap-to-start-of-next-word</a> self
-<span id="L1230" class="LineNr">1230 </span>    <span class="PreProc">return</span>
-<span id="L1231" class="LineNr">1231 </span>  <span class="Delimiter">}</span>
-<span id="L1232" class="LineNr">1232 </span>  <span class="Delimiter">{</span>
-<span id="L1233" class="LineNr">1233 </span>    compare g, <span class="Constant">2</span>/ctrl-b
-<span id="L1234" class="LineNr">1234 </span>    <span class="PreProc">break-if-!=</span>
-<span id="L1235" class="LineNr">1235 </span>    <a href='gap-buffer.mu.html#L1307'>gap-to-end-of-previous-word</a> self
-<span id="L1236" class="LineNr">1236 </span>    <span class="PreProc">return</span>
-<span id="L1237" class="LineNr">1237 </span>  <span class="Delimiter">}</span>
-<span id="L1238" class="LineNr">1238 </span>  <span class="Delimiter">{</span>
-<span id="L1239" class="LineNr">1239 </span>    compare g, <span class="Constant">1</span>/ctrl-a
-<span id="L1240" class="LineNr">1240 </span>    <span class="PreProc">break-if-!=</span>
-<span id="L1241" class="LineNr">1241 </span>    <a href='gap-buffer.mu.html#L1334'>gap-to-previous-start-of-line</a> self
-<span id="L1242" class="LineNr">1242 </span>    <span class="PreProc">return</span>
-<span id="L1243" class="LineNr">1243 </span>  <span class="Delimiter">}</span>
-<span id="L1244" class="LineNr">1244 </span>  <span class="Delimiter">{</span>
-<span id="L1245" class="LineNr">1245 </span>    compare g, <span class="Constant">5</span>/ctrl-e
-<span id="L1246" class="LineNr">1246 </span>    <span class="PreProc">break-if-!=</span>
-<span id="L1247" class="LineNr">1247 </span>    <a href='gap-buffer.mu.html#L1355'>gap-to-next-end-of-line</a> self
-<span id="L1248" class="LineNr">1248 </span>    <span class="PreProc">return</span>
-<span id="L1249" class="LineNr">1249 </span>  <span class="Delimiter">}</span>
-<span id="L1250" class="LineNr">1250 </span>  <span class="Delimiter">{</span>
-<span id="L1251" class="LineNr">1251 </span>    compare g, <span class="Constant">0x81</span>/down-arrow
-<span id="L1252" class="LineNr">1252 </span>    <span class="PreProc">break-if-!=</span>
-<span id="L1253" class="LineNr">1253 </span>    <a href='gap-buffer.mu.html#L1403'>gap-down</a> self
-<span id="L1254" class="LineNr">1254 </span>    <span class="PreProc">return</span>
-<span id="L1255" class="LineNr">1255 </span>  <span class="Delimiter">}</span>
-<span id="L1256" class="LineNr">1256 </span>  <span class="Delimiter">{</span>
-<span id="L1257" class="LineNr">1257 </span>    compare g, <span class="Constant">0x82</span>/up-arrow
-<span id="L1258" class="LineNr">1258 </span>    <span class="PreProc">break-if-!=</span>
-<span id="L1259" class="LineNr">1259 </span>    <a href='gap-buffer.mu.html#L1376'>gap-up</a> self
-<span id="L1260" class="LineNr">1260 </span>    <span class="PreProc">return</span>
-<span id="L1261" class="LineNr">1261 </span>  <span class="Delimiter">}</span>
-<span id="L1262" class="LineNr">1262 </span>  <span class="Delimiter">{</span>
-<span id="L1263" class="LineNr">1263 </span>    compare g, <span class="Constant">0x15</span>/ctrl-u
-<span id="L1264" class="LineNr">1264 </span>    <span class="PreProc">break-if-!=</span>
-<span id="L1265" class="LineNr">1265 </span>    <a href='gap-buffer.mu.html#L19'>clear-gap-buffer</a> self
-<span id="L1266" class="LineNr">1266 </span>    <span class="PreProc">return</span>
-<span id="L1267" class="LineNr">1267 </span>  <span class="Delimiter">}</span>
-<span id="L1268" class="LineNr">1268 </span>  <span class="Delimiter">{</span>
-<span id="L1269" class="LineNr">1269 </span>    compare g, <span class="Constant">9</span>/tab
-<span id="L1270" class="LineNr">1270 </span>    <span class="PreProc">break-if-!=</span>
-<span id="L1271" class="LineNr">1271 </span>    <span class="muComment"># tab = 2 spaces</span>
-<span id="L1272" class="LineNr">1272 </span>    <a href='gap-buffer.mu.html#L447'>add-code-point-at-gap</a> self, <span class="Constant">0x20</span>/space
-<span id="L1273" class="LineNr">1273 </span>    <a href='gap-buffer.mu.html#L447'>add-code-point-at-gap</a> self, <span class="Constant">0x20</span>/space
-<span id="L1274" class="LineNr">1274 </span>    <span class="PreProc">return</span>
-<span id="L1275" class="LineNr">1275 </span>  <span class="Delimiter">}</span>
-<span id="L1276" class="LineNr">1276 </span>  <span class="muComment"># default: insert character</span>
-<span id="L1277" class="LineNr">1277 </span>  <a href='gap-buffer.mu.html#L441'>add-grapheme-at-gap</a> self, g
-<span id="L1278" class="LineNr">1278 </span><span class="Delimiter">}</span>
-<span id="L1279" class="LineNr">1279 </span>
-<span id="L1280" class="LineNr">1280 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='gap-buffer.mu.html#L1280'>gap-to-start-of-next-word</a></span> self: (addr <a href='gap-buffer.mu.html#L3'>gap-buffer</a>) <span class="Delimiter">{</span>
-<span id="L1281" class="LineNr">1281 </span>  <span class="PreProc">var</span> curr/<span class="muRegEax">eax</span>: grapheme <span class="Special">&lt;-</span> copy <span class="Constant">0</span>
-<span id="L1282" class="LineNr">1282 </span>  <span class="muComment"># skip to next space</span>
-<span id="L1283" class="LineNr">1283 </span>  <span class="Delimiter">{</span>
-<span id="L1284" class="LineNr">1284 </span>    curr <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L482'>gap-right</a> self
-<span id="L1285" class="LineNr">1285 </span>    compare curr, <span class="Constant">-1</span>
+<span id="L1198" class="LineNr">1198 </span>    <span class="PreProc">return</span>
+<span id="L1199" class="LineNr">1199 </span>  <span class="Delimiter">}</span>
+<span id="L1200" class="LineNr">1200 </span>  g <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L1083'>read-from-gap-buffer</a> self
+<span id="L1201" class="LineNr">1201 </span>  <span class="PreProc">loop</span>
+<span id="L1202" class="LineNr">1202 </span><span class="Delimiter">}</span>
+<span id="L1203" class="LineNr">1203 </span>
+<span id="L1204" class="LineNr">1204 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='gap-buffer.mu.html#L1204'>edit-gap-buffer</a></span> self: (addr <a href='gap-buffer.mu.html#L3'>gap-buffer</a>), key: grapheme <span class="Delimiter">{</span>
+<span id="L1205" class="LineNr">1205 </span>  <span class="PreProc">var</span> g/<span class="muRegEdx">edx</span>: grapheme <span class="Special">&lt;-</span> copy key
+<span id="L1206" class="LineNr">1206 </span>  <span class="Delimiter">{</span>
+<span id="L1207" class="LineNr">1207 </span>    compare g, <span class="Constant">8</span>/backspace
+<span id="L1208" class="LineNr">1208 </span>    <span class="PreProc">break-if-!=</span>
+<span id="L1209" class="LineNr">1209 </span>    <a href='gap-buffer.mu.html#L566'>delete-before-gap</a> self
+<span id="L1210" class="LineNr">1210 </span>    <span class="PreProc">return</span>
+<span id="L1211" class="LineNr">1211 </span>  <span class="Delimiter">}</span>
+<span id="L1212" class="LineNr">1212 </span>  <span class="Delimiter">{</span>
+<span id="L1213" class="LineNr">1213 </span>    compare g, <span class="Constant">0x80</span>/left-arrow
+<span id="L1214" class="LineNr">1214 </span>    <span class="PreProc">break-if-!=</span>
+<span id="L1215" class="LineNr">1215 </span>    <span class="PreProc">var</span> dummy/<span class="muRegEax">eax</span>: grapheme <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L496'>gap-left</a> self
+<span id="L1216" class="LineNr">1216 </span>    <span class="PreProc">return</span>
+<span id="L1217" class="LineNr">1217 </span>  <span class="Delimiter">}</span>
+<span id="L1218" class="LineNr">1218 </span>  <span class="Delimiter">{</span>
+<span id="L1219" class="LineNr">1219 </span>    compare g, <span class="Constant">0x83</span>/right-arrow
+<span id="L1220" class="LineNr">1220 </span>    <span class="PreProc">break-if-!=</span>
+<span id="L1221" class="LineNr">1221 </span>    <span class="PreProc">var</span> dummy/<span class="muRegEax">eax</span>: grapheme <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L482'>gap-right</a> self
+<span id="L1222" class="LineNr">1222 </span>    <span class="PreProc">return</span>
+<span id="L1223" class="LineNr">1223 </span>  <span class="Delimiter">}</span>
+<span id="L1224" class="LineNr">1224 </span>  <span class="Delimiter">{</span>
+<span id="L1225" class="LineNr">1225 </span>    compare g, <span class="Constant">6</span>/ctrl-f
+<span id="L1226" class="LineNr">1226 </span>    <span class="PreProc">break-if-!=</span>
+<span id="L1227" class="LineNr">1227 </span>    <a href='gap-buffer.mu.html#L1278'>gap-to-start-of-next-word</a> self
+<span id="L1228" class="LineNr">1228 </span>    <span class="PreProc">return</span>
+<span id="L1229" class="LineNr">1229 </span>  <span class="Delimiter">}</span>
+<span id="L1230" class="LineNr">1230 </span>  <span class="Delimiter">{</span>
+<span id="L1231" class="LineNr">1231 </span>    compare g, <span class="Constant">2</span>/ctrl-b
+<span id="L1232" class="LineNr">1232 </span>    <span class="PreProc">break-if-!=</span>
+<span id="L1233" class="LineNr">1233 </span>    <a href='gap-buffer.mu.html#L1305'>gap-to-end-of-previous-word</a> self
+<span id="L1234" class="LineNr">1234 </span>    <span class="PreProc">return</span>
+<span id="L1235" class="LineNr">1235 </span>  <span class="Delimiter">}</span>
+<span id="L1236" class="LineNr">1236 </span>  <span class="Delimiter">{</span>
+<span id="L1237" class="LineNr">1237 </span>    compare g, <span class="Constant">1</span>/ctrl-a
+<span id="L1238" class="LineNr">1238 </span>    <span class="PreProc">break-if-!=</span>
+<span id="L1239" class="LineNr">1239 </span>    <a href='gap-buffer.mu.html#L1332'>gap-to-previous-start-of-line</a> self
+<span id="L1240" class="LineNr">1240 </span>    <span class="PreProc">return</span>
+<span id="L1241" class="LineNr">1241 </span>  <span class="Delimiter">}</span>
+<span id="L1242" class="LineNr">1242 </span>  <span class="Delimiter">{</span>
+<span id="L1243" class="LineNr">1243 </span>    compare g, <span class="Constant">5</span>/ctrl-e
+<span id="L1244" class="LineNr">1244 </span>    <span class="PreProc">break-if-!=</span>
+<span id="L1245" class="LineNr">1245 </span>    <a href='gap-buffer.mu.html#L1353'>gap-to-next-end-of-line</a> self
+<span id="L1246" class="LineNr">1246 </span>    <span class="PreProc">return</span>
+<span id="L1247" class="LineNr">1247 </span>  <span class="Delimiter">}</span>
+<span id="L1248" class="LineNr">1248 </span>  <span class="Delimiter">{</span>
+<span id="L1249" class="LineNr">1249 </span>    compare g, <span class="Constant">0x81</span>/down-arrow
+<span id="L1250" class="LineNr">1250 </span>    <span class="PreProc">break-if-!=</span>
+<span id="L1251" class="LineNr">1251 </span>    <a href='gap-buffer.mu.html#L1401'>gap-down</a> self
+<span id="L1252" class="LineNr">1252 </span>    <span class="PreProc">return</span>
+<span id="L1253" class="LineNr">1253 </span>  <span class="Delimiter">}</span>
+<span id="L1254" class="LineNr">1254 </span>  <span class="Delimiter">{</span>
+<span id="L1255" class="LineNr">1255 </span>    compare g, <span class="Constant">0x82</span>/up-arrow
+<span id="L1256" class="LineNr">1256 </span>    <span class="PreProc">break-if-!=</span>
+<span id="L1257" class="LineNr">1257 </span>    <a href='gap-buffer.mu.html#L1374'>gap-up</a> self
+<span id="L1258" class="LineNr">1258 </span>    <span class="PreProc">return</span>
+<span id="L1259" class="LineNr">1259 </span>  <span class="Delimiter">}</span>
+<span id="L1260" class="LineNr">1260 </span>  <span class="Delimiter">{</span>
+<span id="L1261" class="LineNr">1261 </span>    compare g, <span class="Constant">0x15</span>/ctrl-u
+<span id="L1262" class="LineNr">1262 </span>    <span class="PreProc">break-if-!=</span>
+<span id="L1263" class="LineNr">1263 </span>    <a href='gap-buffer.mu.html#L19'>clear-gap-buffer</a> self
+<span id="L1264" class="LineNr">1264 </span>    <span class="PreProc">return</span>
+<span id="L1265" class="LineNr">1265 </span>  <span class="Delimiter">}</span>
+<span id="L1266" class="LineNr">1266 </span>  <span class="Delimiter">{</span>
+<span id="L1267" class="LineNr">1267 </span>    compare g, <span class="Constant">9</span>/tab
+<span id="L1268" class="LineNr">1268 </span>    <span class="PreProc">break-if-!=</span>
+<span id="L1269" class="LineNr">1269 </span>    <span class="muComment"># tab = 2 spaces</span>
+<span id="L1270" class="LineNr">1270 </span>    <a href='gap-buffer.mu.html#L447'>add-code-point-at-gap</a> self, <span class="Constant">0x20</span>/space
+<span id="L1271" class="LineNr">1271 </span>    <a href='gap-buffer.mu.html#L447'>add-code-point-at-gap</a> self, <span class="Constant">0x20</span>/space
+<span id="L1272" class="LineNr">1272 </span>    <span class="PreProc">return</span>
+<span id="L1273" class="LineNr">1273 </span>  <span class="Delimiter">}</span>
+<span id="L1274" class="LineNr">1274 </span>  <span class="muComment"># default: insert character</span>
+<span id="L1275" class="LineNr">1275 </span>  <a href='gap-buffer.mu.html#L441'>add-grapheme-at-gap</a> self, g
+<span id="L1276" class="LineNr">1276 </span><span class="Delimiter">}</span>
+<span id="L1277" class="LineNr">1277 </span>
+<span id="L1278" class="LineNr">1278 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='gap-buffer.mu.html#L1278'>gap-to-start-of-next-word</a></span> self: (addr <a href='gap-buffer.mu.html#L3'>gap-buffer</a>) <span class="Delimiter">{</span>
+<span id="L1279" class="LineNr">1279 </span>  <span class="PreProc">var</span> curr/<span class="muRegEax">eax</span>: grapheme <span class="Special">&lt;-</span> copy <span class="Constant">0</span>
+<span id="L1280" class="LineNr">1280 </span>  <span class="muComment"># skip to next space</span>
+<span id="L1281" class="LineNr">1281 </span>  <span class="Delimiter">{</span>
+<span id="L1282" class="LineNr">1282 </span>    curr <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L482'>gap-right</a> self
+<span id="L1283" class="LineNr">1283 </span>    compare curr, <span class="Constant">-1</span>
+<span id="L1284" class="LineNr">1284 </span>    <span class="PreProc">break-if-=</span>
+<span id="L1285" class="LineNr">1285 </span>    compare curr, <span class="Constant">0x20</span>/space
 <span id="L1286" class="LineNr">1286 </span>    <span class="PreProc">break-if-=</span>
-<span id="L1287" class="LineNr">1287 </span>    compare curr, <span class="Constant">0x20</span>/space
+<span id="L1287" class="LineNr">1287 </span>    compare curr, <span class="Constant">0xa</span>/newline
 <span id="L1288" class="LineNr">1288 </span>    <span class="PreProc">break-if-=</span>
-<span id="L1289" class="LineNr">1289 </span>    compare curr, <span class="Constant">0xa</span>/newline
-<span id="L1290" class="LineNr">1290 </span>    <span class="PreProc">break-if-=</span>
-<span id="L1291" class="LineNr">1291 </span>    <span class="PreProc">loop</span>
-<span id="L1292" class="LineNr">1292 </span>  <span class="Delimiter">}</span>
-<span id="L1293" class="LineNr">1293 </span>  <span class="muComment"># skip past spaces</span>
-<span id="L1294" class="LineNr">1294 </span>  <span class="Delimiter">{</span>
-<span id="L1295" class="LineNr">1295 </span>    curr <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L482'>gap-right</a> self
-<span id="L1296" class="LineNr">1296 </span>    compare curr, <span class="Constant">-1</span>
-<span id="L1297" class="LineNr">1297 </span>    <span class="PreProc">break-if-=</span>
-<span id="L1298" class="LineNr">1298 </span>    compare curr, <span class="Constant">0x20</span>/space
+<span id="L1289" class="LineNr">1289 </span>    <span class="PreProc">loop</span>
+<span id="L1290" class="LineNr">1290 </span>  <span class="Delimiter">}</span>
+<span id="L1291" class="LineNr">1291 </span>  <span class="muComment"># skip past spaces</span>
+<span id="L1292" class="LineNr">1292 </span>  <span class="Delimiter">{</span>
+<span id="L1293" class="LineNr">1293 </span>    curr <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L482'>gap-right</a> self
+<span id="L1294" class="LineNr">1294 </span>    compare curr, <span class="Constant">-1</span>
+<span id="L1295" class="LineNr">1295 </span>    <span class="PreProc">break-if-=</span>
+<span id="L1296" class="LineNr">1296 </span>    compare curr, <span class="Constant">0x20</span>/space
+<span id="L1297" class="LineNr">1297 </span>    <span class="PreProc">loop-if-=</span>
+<span id="L1298" class="LineNr">1298 </span>    compare curr, <span class="Constant">0xa</span>/space
 <span id="L1299" class="LineNr">1299 </span>    <span class="PreProc">loop-if-=</span>
-<span id="L1300" class="LineNr">1300 </span>    compare curr, <span class="Constant">0xa</span>/space
-<span id="L1301" class="LineNr">1301 </span>    <span class="PreProc">loop-if-=</span>
-<span id="L1302" class="LineNr">1302 </span>    curr <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L496'>gap-left</a> self
-<span id="L1303" class="LineNr">1303 </span>    <span class="PreProc">break</span>
-<span id="L1304" class="LineNr">1304 </span>  <span class="Delimiter">}</span>
-<span id="L1305" class="LineNr">1305 </span><span class="Delimiter">}</span>
-<span id="L1306" class="LineNr">1306 </span>
-<span id="L1307" class="LineNr">1307 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='gap-buffer.mu.html#L1307'>gap-to-end-of-previous-word</a></span> self: (addr <a href='gap-buffer.mu.html#L3'>gap-buffer</a>) <span class="Delimiter">{</span>
-<span id="L1308" class="LineNr">1308 </span>  <span class="PreProc">var</span> curr/<span class="muRegEax">eax</span>: grapheme <span class="Special">&lt;-</span> copy <span class="Constant">0</span>
-<span id="L1309" class="LineNr">1309 </span>  <span class="muComment"># skip to previous space</span>
-<span id="L1310" class="LineNr">1310 </span>  <span class="Delimiter">{</span>
-<span id="L1311" class="LineNr">1311 </span>    curr <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L496'>gap-left</a> self
-<span id="L1312" class="LineNr">1312 </span>    compare curr, <span class="Constant">-1</span>
+<span id="L1300" class="LineNr">1300 </span>    curr <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L496'>gap-left</a> self
+<span id="L1301" class="LineNr">1301 </span>    <span class="PreProc">break</span>
+<span id="L1302" class="LineNr">1302 </span>  <span class="Delimiter">}</span>
+<span id="L1303" class="LineNr">1303 </span><span class="Delimiter">}</span>
+<span id="L1304" class="LineNr">1304 </span>
+<span id="L1305" class="LineNr">1305 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='gap-buffer.mu.html#L1305'>gap-to-end-of-previous-word</a></span> self: (addr <a href='gap-buffer.mu.html#L3'>gap-buffer</a>) <span class="Delimiter">{</span>
+<span id="L1306" class="LineNr">1306 </span>  <span class="PreProc">var</span> curr/<span class="muRegEax">eax</span>: grapheme <span class="Special">&lt;-</span> copy <span class="Constant">0</span>
+<span id="L1307" class="LineNr">1307 </span>  <span class="muComment"># skip to previous space</span>
+<span id="L1308" class="LineNr">1308 </span>  <span class="Delimiter">{</span>
+<span id="L1309" class="LineNr">1309 </span>    curr <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L496'>gap-left</a> self
+<span id="L1310" class="LineNr">1310 </span>    compare curr, <span class="Constant">-1</span>
+<span id="L1311" class="LineNr">1311 </span>    <span class="PreProc">break-if-=</span>
+<span id="L1312" class="LineNr">1312 </span>    compare curr, <span class="Constant">0x20</span>/space
 <span id="L1313" class="LineNr">1313 </span>    <span class="PreProc">break-if-=</span>
-<span id="L1314" class="LineNr">1314 </span>    compare curr, <span class="Constant">0x20</span>/space
+<span id="L1314" class="LineNr">1314 </span>    compare curr, <span class="Constant">0xa</span>/newline
 <span id="L1315" class="LineNr">1315 </span>    <span class="PreProc">break-if-=</span>
-<span id="L1316" class="LineNr">1316 </span>    compare curr, <span class="Constant">0xa</span>/newline
-<span id="L1317" class="LineNr">1317 </span>    <span class="PreProc">break-if-=</span>
-<span id="L1318" class="LineNr">1318 </span>    <span class="PreProc">loop</span>
-<span id="L1319" class="LineNr">1319 </span>  <span class="Delimiter">}</span>
-<span id="L1320" class="LineNr">1320 </span>  <span class="muComment"># skip past all spaces but one</span>
-<span id="L1321" class="LineNr">1321 </span>  <span class="Delimiter">{</span>
-<span id="L1322" class="LineNr">1322 </span>    curr <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L496'>gap-left</a> self
-<span id="L1323" class="LineNr">1323 </span>    compare curr, <span class="Constant">-1</span>
-<span id="L1324" class="LineNr">1324 </span>    <span class="PreProc">break-if-=</span>
-<span id="L1325" class="LineNr">1325 </span>    compare curr, <span class="Constant">0x20</span>/space
+<span id="L1316" class="LineNr">1316 </span>    <span class="PreProc">loop</span>
+<span id="L1317" class="LineNr">1317 </span>  <span class="Delimiter">}</span>
+<span id="L1318" class="LineNr">1318 </span>  <span class="muComment"># skip past all spaces but one</span>
+<span id="L1319" class="LineNr">1319 </span>  <span class="Delimiter">{</span>
+<span id="L1320" class="LineNr">1320 </span>    curr <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L496'>gap-left</a> self
+<span id="L1321" class="LineNr">1321 </span>    compare curr, <span class="Constant">-1</span>
+<span id="L1322" class="LineNr">1322 </span>    <span class="PreProc">break-if-=</span>
+<span id="L1323" class="LineNr">1323 </span>    compare curr, <span class="Constant">0x20</span>/space
+<span id="L1324" class="LineNr">1324 </span>    <span class="PreProc">loop-if-=</span>
+<span id="L1325" class="LineNr">1325 </span>    compare curr, <span class="Constant">0xa</span>/space
 <span id="L1326" class="LineNr">1326 </span>    <span class="PreProc">loop-if-=</span>
-<span id="L1327" class="LineNr">1327 </span>    compare curr, <span class="Constant">0xa</span>/space
-<span id="L1328" class="LineNr">1328 </span>    <span class="PreProc">loop-if-=</span>
-<span id="L1329" class="LineNr">1329 </span>    curr <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L482'>gap-right</a> self
-<span id="L1330" class="LineNr">1330 </span>    <span class="PreProc">break</span>
-<span id="L1331" class="LineNr">1331 </span>  <span class="Delimiter">}</span>
-<span id="L1332" class="LineNr">1332 </span><span class="Delimiter">}</span>
-<span id="L1333" class="LineNr">1333 </span>
-<span id="L1334" class="LineNr">1334 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='gap-buffer.mu.html#L1334'>gap-to-previous-start-of-line</a></span> self: (addr <a href='gap-buffer.mu.html#L3'>gap-buffer</a>) <span class="Delimiter">{</span>
-<span id="L1335" class="LineNr">1335 </span>  <span class="muComment"># skip past immediate newline</span>
-<span id="L1336" class="LineNr">1336 </span>  <span class="PreProc">var</span> dummy/<span class="muRegEax">eax</span>: grapheme <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L496'>gap-left</a> self
-<span id="L1337" class="LineNr">1337 </span>  <span class="muComment"># skip to previous newline</span>
-<span id="L1338" class="LineNr">1338 </span>  <span class="Delimiter">{</span>
-<span id="L1339" class="LineNr">1339 </span>    dummy <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L496'>gap-left</a> self
-<span id="L1340" class="LineNr">1340 </span>    <span class="Delimiter">{</span>
-<span id="L1341" class="LineNr">1341 </span>      compare dummy, <span class="Constant">-1</span>
-<span id="L1342" class="LineNr">1342 </span>      <span class="PreProc">break-if-!=</span>
-<span id="L1343" class="LineNr">1343 </span>      <span class="PreProc">return</span>
-<span id="L1344" class="LineNr">1344 </span>    <span class="Delimiter">}</span>
-<span id="L1345" class="LineNr">1345 </span>    <span class="Delimiter">{</span>
-<span id="L1346" class="LineNr">1346 </span>      compare dummy, <span class="Constant">0xa</span>/newline
-<span id="L1347" class="LineNr">1347 </span>      <span class="PreProc">break-if-!=</span>
-<span id="L1348" class="LineNr">1348 </span>      dummy <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L482'>gap-right</a> self
-<span id="L1349" class="LineNr">1349 </span>      <span class="PreProc">return</span>
-<span id="L1350" class="LineNr">1350 </span>    <span class="Delimiter">}</span>
-<span id="L1351" class="LineNr">1351 </span>    <span class="PreProc">loop</span>
-<span id="L1352" class="LineNr">1352 </span>  <span class="Delimiter">}</span>
-<span id="L1353" class="LineNr">1353 </span><span class="Delimiter">}</span>
-<span id="L1354" class="LineNr">1354 </span>
-<span id="L1355" class="LineNr">1355 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='gap-buffer.mu.html#L1355'>gap-to-next-end-of-line</a></span> self: (addr <a href='gap-buffer.mu.html#L3'>gap-buffer</a>) <span class="Delimiter">{</span>
-<span id="L1356" class="LineNr">1356 </span>  <span class="muComment"># skip past immediate newline</span>
-<span id="L1357" class="LineNr">1357 </span>  <span class="PreProc">var</span> dummy/<span class="muRegEax">eax</span>: grapheme <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L482'>gap-right</a> self
-<span id="L1358" class="LineNr">1358 </span>  <span class="muComment"># skip to next newline</span>
-<span id="L1359" class="LineNr">1359 </span>  <span class="Delimiter">{</span>
-<span id="L1360" class="LineNr">1360 </span>    dummy <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L482'>gap-right</a> self
-<span id="L1361" class="LineNr">1361 </span>    <span class="Delimiter">{</span>
-<span id="L1362" class="LineNr">1362 </span>      compare dummy, <span class="Constant">-1</span>
-<span id="L1363" class="LineNr">1363 </span>      <span class="PreProc">break-if-!=</span>
-<span id="L1364" class="LineNr">1364 </span>      <span class="PreProc">return</span>
-<span id="L1365" class="LineNr">1365 </span>    <span class="Delimiter">}</span>
-<span id="L1366" class="LineNr">1366 </span>    <span class="Delimiter">{</span>
-<span id="L1367" class="LineNr">1367 </span>      compare dummy, <span class="Constant">0xa</span>/newline
-<span id="L1368" class="LineNr">1368 </span>      <span class="PreProc">break-if-!=</span>
-<span id="L1369" class="LineNr">1369 </span>      dummy <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L496'>gap-left</a> self
-<span id="L1370" class="LineNr">1370 </span>      <span class="PreProc">return</span>
-<span id="L1371" class="LineNr">1371 </span>    <span class="Delimiter">}</span>
-<span id="L1372" class="LineNr">1372 </span>    <span class="PreProc">loop</span>
-<span id="L1373" class="LineNr">1373 </span>  <span class="Delimiter">}</span>
-<span id="L1374" class="LineNr">1374 </span><span class="Delimiter">}</span>
-<span id="L1375" class="LineNr">1375 </span>
-<span id="L1376" class="LineNr">1376 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='gap-buffer.mu.html#L1376'>gap-up</a></span> self: (addr <a href='gap-buffer.mu.html#L3'>gap-buffer</a>) <span class="Delimiter">{</span>
-<span id="L1377" class="LineNr">1377 </span>  <span class="muComment"># compute column</span>
-<span id="L1378" class="LineNr">1378 </span>  <span class="PreProc">var</span> col/<span class="muRegEdx">edx</span>: int <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L1431'>count-columns-to-start-of-line</a> self
-<span id="L1379" class="LineNr">1379 </span>  <span class="muComment">#</span>
-<span id="L1380" class="LineNr">1380 </span>  <a href='gap-buffer.mu.html#L1334'>gap-to-previous-start-of-line</a> self
-<span id="L1381" class="LineNr">1381 </span>  <span class="muComment"># skip ahead by up to col on previous line</span>
-<span id="L1382" class="LineNr">1382 </span>  <span class="PreProc">var</span> i/<span class="muRegEcx">ecx</span>: int <span class="Special">&lt;-</span> copy <span class="Constant">0</span>
-<span id="L1383" class="LineNr">1383 </span>  <span class="Delimiter">{</span>
-<span id="L1384" class="LineNr">1384 </span>    compare i, col
-<span id="L1385" class="LineNr">1385 </span>    <span class="PreProc">break-if-&gt;=</span>
-<span id="L1386" class="LineNr">1386 </span>    <span class="PreProc">var</span> curr/<span class="muRegEax">eax</span>: grapheme <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L482'>gap-right</a> self
-<span id="L1387" class="LineNr">1387 </span>    <span class="Delimiter">{</span>
-<span id="L1388" class="LineNr">1388 </span>      compare curr, <span class="Constant">-1</span>
-<span id="L1389" class="LineNr">1389 </span>      <span class="PreProc">break-if-!=</span>
-<span id="L1390" class="LineNr">1390 </span>      <span class="PreProc">return</span>
-<span id="L1391" class="LineNr">1391 </span>    <span class="Delimiter">}</span>
-<span id="L1392" class="LineNr">1392 </span>    compare curr, <span class="Constant">0xa</span>/newline
-<span id="L1393" class="LineNr">1393 </span>    <span class="Delimiter">{</span>
-<span id="L1394" class="LineNr">1394 </span>      <span class="PreProc">break-if-!=</span>
-<span id="L1395" class="LineNr">1395 </span>      curr <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L496'>gap-left</a> self
-<span id="L1396" class="LineNr">1396 </span>      <span class="PreProc">return</span>
-<span id="L1397" class="LineNr">1397 </span>    <span class="Delimiter">}</span>
-<span id="L1398" class="LineNr">1398 </span>    i <span class="Special">&lt;-</span> increment
-<span id="L1399" class="LineNr">1399 </span>    <span class="PreProc">loop</span>
-<span id="L1400" class="LineNr">1400 </span>  <span class="Delimiter">}</span>
-<span id="L1401" class="LineNr">1401 </span><span class="Delimiter">}</span>
-<span id="L1402" class="LineNr">1402 </span>
-<span id="L1403" class="LineNr">1403 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='gap-buffer.mu.html#L1403'>gap-down</a></span> self: (addr <a href='gap-buffer.mu.html#L3'>gap-buffer</a>) <span class="Delimiter">{</span>
-<span id="L1404" class="LineNr">1404 </span>  <span class="muComment"># compute column</span>
-<span id="L1405" class="LineNr">1405 </span>  <span class="PreProc">var</span> col/<span class="muRegEdx">edx</span>: int <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L1431'>count-columns-to-start-of-line</a> self
-<span id="L1406" class="LineNr">1406 </span>  <span class="muComment"># skip to start of next line</span>
-<span id="L1407" class="LineNr">1407 </span>  <a href='gap-buffer.mu.html#L1454'>gap-to-end-of-line</a> self
-<span id="L1408" class="LineNr">1408 </span>  <span class="PreProc">var</span> dummy/<span class="muRegEax">eax</span>: grapheme <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L482'>gap-right</a> self
-<span id="L1409" class="LineNr">1409 </span>  <span class="muComment"># skip ahead by up to col on previous line</span>
-<span id="L1410" class="LineNr">1410 </span>  <span class="PreProc">var</span> i/<span class="muRegEcx">ecx</span>: int <span class="Special">&lt;-</span> copy <span class="Constant">0</span>
-<span id="L1411" class="LineNr">1411 </span>  <span class="Delimiter">{</span>
-<span id="L1412" class="LineNr">1412 </span>    compare i, col
-<span id="L1413" class="LineNr">1413 </span>    <span class="PreProc">break-if-&gt;=</span>
-<span id="L1414" class="LineNr">1414 </span>    <span class="PreProc">var</span> curr/<span class="muRegEax">eax</span>: grapheme <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L482'>gap-right</a> self
-<span id="L1415" class="LineNr">1415 </span>    <span class="Delimiter">{</span>
-<span id="L1416" class="LineNr">1416 </span>      compare curr, <span class="Constant">-1</span>
-<span id="L1417" class="LineNr">1417 </span>      <span class="PreProc">break-if-!=</span>
-<span id="L1418" class="LineNr">1418 </span>      <span class="PreProc">return</span>
-<span id="L1419" class="LineNr">1419 </span>    <span class="Delimiter">}</span>
-<span id="L1420" class="LineNr">1420 </span>    compare curr, <span class="Constant">0xa</span>/newline
-<span id="L1421" class="LineNr">1421 </span>    <span class="Delimiter">{</span>
-<span id="L1422" class="LineNr">1422 </span>      <span class="PreProc">break-if-!=</span>
-<span id="L1423" class="LineNr">1423 </span>      curr <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L496'>gap-left</a> self
-<span id="L1424" class="LineNr">1424 </span>      <span class="PreProc">return</span>
-<span id="L1425" class="LineNr">1425 </span>    <span class="Delimiter">}</span>
-<span id="L1426" class="LineNr">1426 </span>    i <span class="Special">&lt;-</span> increment
-<span id="L1427" class="LineNr">1427 </span>    <span class="PreProc">loop</span>
-<span id="L1428" class="LineNr">1428 </span>  <span class="Delimiter">}</span>
-<span id="L1429" class="LineNr">1429 </span><span class="Delimiter">}</span>
-<span id="L1430" class="LineNr">1430 </span>
-<span id="L1431" class="LineNr">1431 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='gap-buffer.mu.html#L1431'>count-columns-to-start-of-line</a></span> self: (addr <a href='gap-buffer.mu.html#L3'>gap-buffer</a>)<span class="PreProc"> -&gt; </span>_/<span class="muRegEdx">edx</span>: int <span class="Delimiter">{</span>
-<span id="L1432" class="LineNr">1432 </span>  <span class="PreProc">var</span> count/<span class="muRegEdx">edx</span>: int <span class="Special">&lt;-</span> copy <span class="Constant">0</span>
-<span id="L1433" class="LineNr">1433 </span>  <span class="PreProc">var</span> dummy/<span class="muRegEax">eax</span>: grapheme <span class="Special">&lt;-</span> copy <span class="Constant">0</span>
-<span id="L1434" class="LineNr">1434 </span>  <span class="muComment"># skip to previous newline</span>
-<span id="L1435" class="LineNr">1435 </span>  <span class="Delimiter">{</span>
-<span id="L1436" class="LineNr">1436 </span>    dummy <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L496'>gap-left</a> self
-<span id="L1437" class="LineNr">1437 </span>    <span class="Delimiter">{</span>
-<span id="L1438" class="LineNr">1438 </span>      compare dummy, <span class="Constant">-1</span>
-<span id="L1439" class="LineNr">1439 </span>      <span class="PreProc">break-if-!=</span>
-<span id="L1440" class="LineNr">1440 </span>      <span class="PreProc">return</span> count
-<span id="L1441" class="LineNr">1441 </span>    <span class="Delimiter">}</span>
-<span id="L1442" class="LineNr">1442 </span>    <span class="Delimiter">{</span>
-<span id="L1443" class="LineNr">1443 </span>      compare dummy, <span class="Constant">0xa</span>/newline
-<span id="L1444" class="LineNr">1444 </span>      <span class="PreProc">break-if-!=</span>
-<span id="L1445" class="LineNr">1445 </span>      dummy <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L482'>gap-right</a> self
-<span id="L1446" class="LineNr">1446 </span>      <span class="PreProc">return</span> count
-<span id="L1447" class="LineNr">1447 </span>    <span class="Delimiter">}</span>
-<span id="L1448" class="LineNr">1448 </span>    count <span class="Special">&lt;-</span> increment
-<span id="L1449" class="LineNr">1449 </span>    <span class="PreProc">loop</span>
-<span id="L1450" class="LineNr">1450 </span>  <span class="Delimiter">}</span>
-<span id="L1451" class="LineNr">1451 </span>  <span class="PreProc">return</span> count
-<span id="L1452" class="LineNr">1452 </span><span class="Delimiter">}</span>
-<span id="L1453" class="LineNr">1453 </span>
-<span id="L1454" class="LineNr">1454 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='gap-buffer.mu.html#L1454'>gap-to-end-of-line</a></span> self: (addr <a href='gap-buffer.mu.html#L3'>gap-buffer</a>) <span class="Delimiter">{</span>
-<span id="L1455" class="LineNr">1455 </span>  <span class="PreProc">var</span> dummy/<span class="muRegEax">eax</span>: grapheme <span class="Special">&lt;-</span> copy <span class="Constant">0</span>
-<span id="L1456" class="LineNr">1456 </span>  <span class="muComment"># skip to next newline</span>
-<span id="L1457" class="LineNr">1457 </span>  <span class="Delimiter">{</span>
-<span id="L1458" class="LineNr">1458 </span>    dummy <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L482'>gap-right</a> self
-<span id="L1459" class="LineNr">1459 </span>    <span class="Delimiter">{</span>
-<span id="L1460" class="LineNr">1460 </span>      compare dummy, <span class="Constant">-1</span>
-<span id="L1461" class="LineNr">1461 </span>      <span class="PreProc">break-if-!=</span>
-<span id="L1462" class="LineNr">1462 </span>      <span class="PreProc">return</span>
-<span id="L1463" class="LineNr">1463 </span>    <span class="Delimiter">}</span>
-<span id="L1464" class="LineNr">1464 </span>    <span class="Delimiter">{</span>
-<span id="L1465" class="LineNr">1465 </span>      compare dummy, <span class="Constant">0xa</span>/newline
-<span id="L1466" class="LineNr">1466 </span>      <span class="PreProc">break-if-!=</span>
-<span id="L1467" class="LineNr">1467 </span>      dummy <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L496'>gap-left</a> self
-<span id="L1468" class="LineNr">1468 </span>      <span class="PreProc">return</span>
-<span id="L1469" class="LineNr">1469 </span>    <span class="Delimiter">}</span>
-<span id="L1470" class="LineNr">1470 </span>    <span class="PreProc">loop</span>
-<span id="L1471" class="LineNr">1471 </span>  <span class="Delimiter">}</span>
-<span id="L1472" class="LineNr">1472 </span><span class="Delimiter">}</span>
+<span id="L1327" class="LineNr">1327 </span>    curr <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L482'>gap-right</a> self
+<span id="L1328" class="LineNr">1328 </span>    <span class="PreProc">break</span>
+<span id="L1329" class="LineNr">1329 </span>  <span class="Delimiter">}</span>
+<span id="L1330" class="LineNr">1330 </span><span class="Delimiter">}</span>
+<span id="L1331" class="LineNr">1331 </span>
+<span id="L1332" class="LineNr">1332 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='gap-buffer.mu.html#L1332'>gap-to-previous-start-of-line</a></span> self: (addr <a href='gap-buffer.mu.html#L3'>gap-buffer</a>) <span class="Delimiter">{</span>
+<span id="L1333" class="LineNr">1333 </span>  <span class="muComment"># skip past immediate newline</span>
+<span id="L1334" class="LineNr">1334 </span>  <span class="PreProc">var</span> dummy/<span class="muRegEax">eax</span>: grapheme <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L496'>gap-left</a> self
+<span id="L1335" class="LineNr">1335 </span>  <span class="muComment"># skip to previous newline</span>
+<span id="L1336" class="LineNr">1336 </span>  <span class="Delimiter">{</span>
+<span id="L1337" class="LineNr">1337 </span>    dummy <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L496'>gap-left</a> self
+<span id="L1338" class="LineNr">1338 </span>    <span class="Delimiter">{</span>
+<span id="L1339" class="LineNr">1339 </span>      compare dummy, <span class="Constant">-1</span>
+<span id="L1340" class="LineNr">1340 </span>      <span class="PreProc">break-if-!=</span>
+<span id="L1341" class="LineNr">1341 </span>      <span class="PreProc">return</span>
+<span id="L1342" class="LineNr">1342 </span>    <span class="Delimiter">}</span>
+<span id="L1343" class="LineNr">1343 </span>    <span class="Delimiter">{</span>
+<span id="L1344" class="LineNr">1344 </span>      compare dummy, <span class="Constant">0xa</span>/newline
+<span id="L1345" class="LineNr">1345 </span>      <span class="PreProc">break-if-!=</span>
+<span id="L1346" class="LineNr">1346 </span>      dummy <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L482'>gap-right</a> self
+<span id="L1347" class="LineNr">1347 </span>      <span class="PreProc">return</span>
+<span id="L1348" class="LineNr">1348 </span>    <span class="Delimiter">}</span>
+<span id="L1349" class="LineNr">1349 </span>    <span class="PreProc">loop</span>
+<span id="L1350" class="LineNr">1350 </span>  <span class="Delimiter">}</span>
+<span id="L1351" class="LineNr">1351 </span><span class="Delimiter">}</span>
+<span id="L1352" class="LineNr">1352 </span>
+<span id="L1353" class="LineNr">1353 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='gap-buffer.mu.html#L1353'>gap-to-next-end-of-line</a></span> self: (addr <a href='gap-buffer.mu.html#L3'>gap-buffer</a>) <span class="Delimiter">{</span>
+<span id="L1354" class="LineNr">1354 </span>  <span class="muComment"># skip past immediate newline</span>
+<span id="L1355" class="LineNr">1355 </span>  <span class="PreProc">var</span> dummy/<span class="muRegEax">eax</span>: grapheme <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L482'>gap-right</a> self
+<span id="L1356" class="LineNr">1356 </span>  <span class="muComment"># skip to next newline</span>
+<span id="L1357" class="LineNr">1357 </span>  <span class="Delimiter">{</span>
+<span id="L1358" class="LineNr">1358 </span>    dummy <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L482'>gap-right</a> self
+<span id="L1359" class="LineNr">1359 </span>    <span class="Delimiter">{</span>
+<span id="L1360" class="LineNr">1360 </span>      compare dummy, <span class="Constant">-1</span>
+<span id="L1361" class="LineNr">1361 </span>      <span class="PreProc">break-if-!=</span>
+<span id="L1362" class="LineNr">1362 </span>      <span class="PreProc">return</span>
+<span id="L1363" class="LineNr">1363 </span>    <span class="Delimiter">}</span>
+<span id="L1364" class="LineNr">1364 </span>    <span class="Delimiter">{</span>
+<span id="L1365" class="LineNr">1365 </span>      compare dummy, <span class="Constant">0xa</span>/newline
+<span id="L1366" class="LineNr">1366 </span>      <span class="PreProc">break-if-!=</span>
+<span id="L1367" class="LineNr">1367 </span>      dummy <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L496'>gap-left</a> self
+<span id="L1368" class="LineNr">1368 </span>      <span class="PreProc">return</span>
+<span id="L1369" class="LineNr">1369 </span>    <span class="Delimiter">}</span>
+<span id="L1370" class="LineNr">1370 </span>    <span class="PreProc">loop</span>
+<span id="L1371" class="LineNr">1371 </span>  <span class="Delimiter">}</span>
+<span id="L1372" class="LineNr">1372 </span><span class="Delimiter">}</span>
+<span id="L1373" class="LineNr">1373 </span>
+<span id="L1374" class="LineNr">1374 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='gap-buffer.mu.html#L1374'>gap-up</a></span> self: (addr <a href='gap-buffer.mu.html#L3'>gap-buffer</a>) <span class="Delimiter">{</span>
+<span id="L1375" class="LineNr">1375 </span>  <span class="muComment"># compute column</span>
+<span id="L1376" class="LineNr">1376 </span>  <span class="PreProc">var</span> col/<span class="muRegEdx">edx</span>: int <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L1429'>count-columns-to-start-of-line</a> self
+<span id="L1377" class="LineNr">1377 </span>  <span class="muComment">#</span>
+<span id="L1378" class="LineNr">1378 </span>  <a href='gap-buffer.mu.html#L1332'>gap-to-previous-start-of-line</a> self
+<span id="L1379" class="LineNr">1379 </span>  <span class="muComment"># skip ahead by up to col on previous line</span>
+<span id="L1380" class="LineNr">1380 </span>  <span class="PreProc">var</span> i/<span class="muRegEcx">ecx</span>: int <span class="Special">&lt;-</span> copy <span class="Constant">0</span>
+<span id="L1381" class="LineNr">1381 </span>  <span class="Delimiter">{</span>
+<span id="L1382" class="LineNr">1382 </span>    compare i, col
+<span id="L1383" class="LineNr">1383 </span>    <span class="PreProc">break-if-&gt;=</span>
+<span id="L1384" class="LineNr">1384 </span>    <span class="PreProc">var</span> curr/<span class="muRegEax">eax</span>: grapheme <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L482'>gap-right</a> self
+<span id="L1385" class="LineNr">1385 </span>    <span class="Delimiter">{</span>
+<span id="L1386" class="LineNr">1386 </span>      compare curr, <span class="Constant">-1</span>
+<span id="L1387" class="LineNr">1387 </span>      <span class="PreProc">break-if-!=</span>
+<span id="L1388" class="LineNr">1388 </span>      <span class="PreProc">return</span>
+<span id="L1389" class="LineNr">1389 </span>    <span class="Delimiter">}</span>
+<span id="L1390" class="LineNr">1390 </span>    compare curr, <span class="Constant">0xa</span>/newline
+<span id="L1391" class="LineNr">1391 </span>    <span class="Delimiter">{</span>
+<span id="L1392" class="LineNr">1392 </span>      <span class="PreProc">break-if-!=</span>
+<span id="L1393" class="LineNr">1393 </span>      curr <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L496'>gap-left</a> self
+<span id="L1394" class="LineNr">1394 </span>      <span class="PreProc">return</span>
+<span id="L1395" class="LineNr">1395 </span>    <span class="Delimiter">}</span>
+<span id="L1396" class="LineNr">1396 </span>    i <span class="Special">&lt;-</span> increment
+<span id="L1397" class="LineNr">1397 </span>    <span class="PreProc">loop</span>
+<span id="L1398" class="LineNr">1398 </span>  <span class="Delimiter">}</span>
+<span id="L1399" class="LineNr">1399 </span><span class="Delimiter">}</span>
+<span id="L1400" class="LineNr">1400 </span>
+<span id="L1401" class="LineNr">1401 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='gap-buffer.mu.html#L1401'>gap-down</a></span> self: (addr <a href='gap-buffer.mu.html#L3'>gap-buffer</a>) <span class="Delimiter">{</span>
+<span id="L1402" class="LineNr">1402 </span>  <span class="muComment"># compute column</span>
+<span id="L1403" class="LineNr">1403 </span>  <span class="PreProc">var</span> col/<span class="muRegEdx">edx</span>: int <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L1429'>count-columns-to-start-of-line</a> self
+<span id="L1404" class="LineNr">1404 </span>  <span class="muComment"># skip to start of next line</span>
+<span id="L1405" class="LineNr">1405 </span>  <a href='gap-buffer.mu.html#L1452'>gap-to-end-of-line</a> self
+<span id="L1406" class="LineNr">1406 </span>  <span class="PreProc">var</span> dummy/<span class="muRegEax">eax</span>: grapheme <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L482'>gap-right</a> self
+<span id="L1407" class="LineNr">1407 </span>  <span class="muComment"># skip ahead by up to col on previous line</span>
+<span id="L1408" class="LineNr">1408 </span>  <span class="PreProc">var</span> i/<span class="muRegEcx">ecx</span>: int <span class="Special">&lt;-</span> copy <span class="Constant">0</span>
+<span id="L1409" class="LineNr">1409 </span>  <span class="Delimiter">{</span>
+<span id="L1410" class="LineNr">1410 </span>    compare i, col
+<span id="L1411" class="LineNr">1411 </span>    <span class="PreProc">break-if-&gt;=</span>
+<span id="L1412" class="LineNr">1412 </span>    <span class="PreProc">var</span> curr/<span class="muRegEax">eax</span>: grapheme <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L482'>gap-right</a> self
+<span id="L1413" class="LineNr">1413 </span>    <span class="Delimiter">{</span>
+<span id="L1414" class="LineNr">1414 </span>      compare curr, <span class="Constant">-1</span>
+<span id="L1415" class="LineNr">1415 </span>      <span class="PreProc">break-if-!=</span>
+<span id="L1416" class="LineNr">1416 </span>      <span class="PreProc">return</span>
+<span id="L1417" class="LineNr">1417 </span>    <span class="Delimiter">}</span>
+<span id="L1418" class="LineNr">1418 </span>    compare curr, <span class="Constant">0xa</span>/newline
+<span id="L1419" class="LineNr">1419 </span>    <span class="Delimiter">{</span>
+<span id="L1420" class="LineNr">1420 </span>      <span class="PreProc">break-if-!=</span>
+<span id="L1421" class="LineNr">1421 </span>      curr <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L496'>gap-left</a> self
+<span id="L1422" class="LineNr">1422 </span>      <span class="PreProc">return</span>
+<span id="L1423" class="LineNr">1423 </span>    <span class="Delimiter">}</span>
+<span id="L1424" class="LineNr">1424 </span>    i <span class="Special">&lt;-</span> increment
+<span id="L1425" class="LineNr">1425 </span>    <span class="PreProc">loop</span>
+<span id="L1426" class="LineNr">1426 </span>  <span class="Delimiter">}</span>
+<span id="L1427" class="LineNr">1427 </span><span class="Delimiter">}</span>
+<span id="L1428" class="LineNr">1428 </span>
+<span id="L1429" class="LineNr">1429 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='gap-buffer.mu.html#L1429'>count-columns-to-start-of-line</a></span> self: (addr <a href='gap-buffer.mu.html#L3'>gap-buffer</a>)<span class="PreProc"> -&gt; </span>_/<span class="muRegEdx">edx</span>: int <span class="Delimiter">{</span>
+<span id="L1430" class="LineNr">1430 </span>  <span class="PreProc">var</span> count/<span class="muRegEdx">edx</span>: int <span class="Special">&lt;-</span> copy <span class="Constant">0</span>
+<span id="L1431" class="LineNr">1431 </span>  <span class="PreProc">var</span> dummy/<span class="muRegEax">eax</span>: grapheme <span class="Special">&lt;-</span> copy <span class="Constant">0</span>
+<span id="L1432" class="LineNr">1432 </span>  <span class="muComment"># skip to previous newline</span>
+<span id="L1433" class="LineNr">1433 </span>  <span class="Delimiter">{</span>
+<span id="L1434" class="LineNr">1434 </span>    dummy <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L496'>gap-left</a> self
+<span id="L1435" class="LineNr">1435 </span>    <span class="Delimiter">{</span>
+<span id="L1436" class="LineNr">1436 </span>      compare dummy, <span class="Constant">-1</span>
+<span id="L1437" class="LineNr">1437 </span>      <span class="PreProc">break-if-!=</span>
+<span id="L1438" class="LineNr">1438 </span>      <span class="PreProc">return</span> count
+<span id="L1439" class="LineNr">1439 </span>    <span class="Delimiter">}</span>
+<span id="L1440" class="LineNr">1440 </span>    <span class="Delimiter">{</span>
+<span id="L1441" class="LineNr">1441 </span>      compare dummy, <span class="Constant">0xa</span>/newline
+<span id="L1442" class="LineNr">1442 </span>      <span class="PreProc">break-if-!=</span>
+<span id="L1443" class="LineNr">1443 </span>      dummy <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L482'>gap-right</a> self
+<span id="L1444" class="LineNr">1444 </span>      <span class="PreProc">return</span> count
+<span id="L1445" class="LineNr">1445 </span>    <span class="Delimiter">}</span>
+<span id="L1446" class="LineNr">1446 </span>    count <span class="Special">&lt;-</span> increment
+<span id="L1447" class="LineNr">1447 </span>    <span class="PreProc">loop</span>
+<span id="L1448" class="LineNr">1448 </span>  <span class="Delimiter">}</span>
+<span id="L1449" class="LineNr">1449 </span>  <span class="PreProc">return</span> count
+<span id="L1450" class="LineNr">1450 </span><span class="Delimiter">}</span>
+<span id="L1451" class="LineNr">1451 </span>
+<span id="L1452" class="LineNr">1452 </span><span class="PreProc">fn</span> <span class="muFunction"><a href='gap-buffer.mu.html#L1452'>gap-to-end-of-line</a></span> self: (addr <a href='gap-buffer.mu.html#L3'>gap-buffer</a>) <span class="Delimiter">{</span>
+<span id="L1453" class="LineNr">1453 </span>  <span class="PreProc">var</span> dummy/<span class="muRegEax">eax</span>: grapheme <span class="Special">&lt;-</span> copy <span class="Constant">0</span>
+<span id="L1454" class="LineNr">1454 </span>  <span class="muComment"># skip to next newline</span>
+<span id="L1455" class="LineNr">1455 </span>  <span class="Delimiter">{</span>
+<span id="L1456" class="LineNr">1456 </span>    dummy <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L482'>gap-right</a> self
+<span id="L1457" class="LineNr">1457 </span>    <span class="Delimiter">{</span>
+<span id="L1458" class="LineNr">1458 </span>      compare dummy, <span class="Constant">-1</span>
+<span id="L1459" class="LineNr">1459 </span>      <span class="PreProc">break-if-!=</span>
+<span id="L1460" class="LineNr">1460 </span>      <span class="PreProc">return</span>
+<span id="L1461" class="LineNr">1461 </span>    <span class="Delimiter">}</span>
+<span id="L1462" class="LineNr">1462 </span>    <span class="Delimiter">{</span>
+<span id="L1463" class="LineNr">1463 </span>      compare dummy, <span class="Constant">0xa</span>/newline
+<span id="L1464" class="LineNr">1464 </span>      <span class="PreProc">break-if-!=</span>
+<span id="L1465" class="LineNr">1465 </span>      dummy <span class="Special">&lt;-</span> <a href='gap-buffer.mu.html#L496'>gap-left</a> self
+<span id="L1466" class="LineNr">1466 </span>      <span class="PreProc">return</span>
+<span id="L1467" class="LineNr">1467 </span>    <span class="Delimiter">}</span>
+<span id="L1468" class="LineNr">1468 </span>    <span class="PreProc">loop</span>
+<span id="L1469" class="LineNr">1469 </span>  <span class="Delimiter">}</span>
+<span id="L1470" class="LineNr">1470 </span><span class="Delimiter">}</span>
 </pre>
 </body>
 </html>