diff options
author | Kartik Agaram <vc@akkartik.com> | 2021-06-23 13:19:20 -0700 |
---|---|---|
committer | Kartik Agaram <vc@akkartik.com> | 2021-06-23 13:19:20 -0700 |
commit | e0b8eddb5b2463a6a2890fd2a089cc3cc1a0f711 (patch) | |
tree | 33975c8b0bdde721e9bcfd4f59c85f445b3408ee /html/shell/gap-buffer.mu.html | |
parent | a25e4c1ac2f135b5b76508c6bd5cd2d4edd73c49 (diff) | |
download | mu-e0b8eddb5b2463a6a2890fd2a089cc3cc1a0f711.tar.gz |
.
Diffstat (limited to 'html/shell/gap-buffer.mu.html')
-rw-r--r-- | html/shell/gap-buffer.mu.html | 540 |
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"><-</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">"F - <a href='gap-buffer.mu.html#L1140'>test-read-from-gap-buffer</a>/right-4"</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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->=</span> -<span id="L1386" class="LineNr">1386 </span> <span class="PreProc">var</span> curr/<span class="muRegEax">eax</span>: grapheme <span class="Special"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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->=</span> -<span id="L1414" class="LineNr">1414 </span> <span class="PreProc">var</span> curr/<span class="muRegEax">eax</span>: grapheme <span class="Special"><-</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"><-</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"><-</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"> -> </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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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->=</span> +<span id="L1384" class="LineNr">1384 </span> <span class="PreProc">var</span> curr/<span class="muRegEax">eax</span>: grapheme <span class="Special"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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->=</span> +<span id="L1412" class="LineNr">1412 </span> <span class="PreProc">var</span> curr/<span class="muRegEax">eax</span>: grapheme <span class="Special"><-</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"><-</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"><-</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"> -> </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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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"><-</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> |