MCPcopy Create free account
hub / github.com/breck7/scroll / removeReadOnlyRanges

Function removeReadOnlyRanges

external/.scrollLibs.js:1336–1374  ·  view source on GitHub ↗
(doc, from, to)

Source from the content-addressed store, hash-verified

1334
1335 // Used to 'clip' out readOnly ranges when making a change.
1336 function removeReadOnlyRanges(doc, from, to) {
1337 var markers = null
1338 doc.iter(from.line, to.line + 1, function (line) {
1339 if (line.markedSpans) {
1340 for (var i = 0; i < line.markedSpans.length; ++i) {
1341 var mark = line.markedSpans[i].marker
1342 if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) {
1343 ;(markers || (markers = [])).push(mark)
1344 }
1345 }
1346 }
1347 })
1348 if (!markers) {
1349 return null
1350 }
1351 var parts = [{ from: from, to: to }]
1352 for (var i = 0; i < markers.length; ++i) {
1353 var mk = markers[i],
1354 m = mk.find(0)
1355 for (var j = 0; j < parts.length; ++j) {
1356 var p = parts[j]
1357 if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) {
1358 continue
1359 }
1360 var newParts = [j, 1],
1361 dfrom = cmp(p.from, m.from),
1362 dto = cmp(p.to, m.to)
1363 if (dfrom < 0 || (!mk.inclusiveLeft && !dfrom)) {
1364 newParts.push({ from: p.from, to: m.from })
1365 }
1366 if (dto > 0 || (!mk.inclusiveRight && !dto)) {
1367 newParts.push({ from: m.to, to: p.to })
1368 }
1369 parts.splice.apply(parts, newParts)
1370 j += newParts.length - 3
1371 }
1372 }
1373 return parts
1374 }
1375
1376 // Connect or disconnect spans from a line.
1377 function detachMarkedSpans(line) {

Callers 1

makeChangeFunction · 0.85

Calls 3

indexOfFunction · 0.85
cmpFunction · 0.85
findMethod · 0.45

Tested by

no test coverage detected