Skip to content

Commit 071b4d2

Browse files
committed
Simplify overloaded paredit funcs
1 parent 4f77f77 commit 071b4d2

File tree

2 files changed

+41
-105
lines changed

2 files changed

+41
-105
lines changed

src/cursor-doc/paredit.ts

Lines changed: 27 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,8 @@ export function selectForwardSexp(doc: EditableDocument) {
7777
const rangeFn =
7878
selection.active >= selection.anchor
7979
? forwardSexpRange
80-
: (doc: EditableDocument) => forwardSexpRange(doc, selection.active, true);
81-
return rangeFn(doc, selection.start);
80+
: (doc: EditableDocument) => forwardSexpRange(doc, [selection.active], true);
81+
return rangeFn(doc, [selection.start])[0];
8282
});
8383
selectRangeForward(doc, ranges);
8484
}
@@ -88,8 +88,8 @@ export function selectRight(doc: EditableDocument) {
8888
const ranges = doc.selections.map((selection) => {
8989
const rangeFn =
9090
selection.active >= selection.anchor
91-
? (doc) => forwardHybridSexpRange(doc, selection.end)
92-
: (doc: EditableDocument) => forwardHybridSexpRange(doc, selection.active, true);
91+
? (doc) => forwardHybridSexpRange(doc, [selection.end])[0]
92+
: (doc: EditableDocument) => forwardHybridSexpRange(doc, [selection.active], true)[0];
9393
return rangeFn(doc);
9494
});
9595
selectRangeForward(doc, ranges);
@@ -99,8 +99,8 @@ export function selectForwardSexpOrUp(doc: EditableDocument) {
9999
const ranges = doc.selections.map((selection) => {
100100
const rangeFn =
101101
selection.active >= selection.anchor
102-
? (doc) => forwardSexpOrUpRange(doc, selection.end)
103-
: (doc: EditableDocument) => forwardSexpOrUpRange(doc, selection.active, true);
102+
? (doc) => forwardSexpOrUpRange(doc, [selection.end])[0]
103+
: (doc: EditableDocument) => forwardSexpOrUpRange(doc, [selection.active], true)[0];
104104
return rangeFn(doc);
105105
});
106106
selectRangeForward(doc, ranges);
@@ -111,8 +111,8 @@ export function selectBackwardSexp(doc: EditableDocument) {
111111
const rangeFn =
112112
selection.active <= selection.anchor
113113
? backwardSexpRange
114-
: (doc: EditableDocument) => backwardSexpRange(doc, selection.active, false);
115-
return rangeFn(doc, selection.start);
114+
: (doc: EditableDocument) => backwardSexpRange(doc, [selection.active], false);
115+
return rangeFn(doc, [selection.start])[0];
116116
});
117117
selectRangeBackward(doc, ranges);
118118
}
@@ -157,9 +157,9 @@ export function selectBackwardSexpOrUp(doc: EditableDocument) {
157157
const ranges = doc.selections.map((selection) => {
158158
const rangeFn =
159159
selection.active <= selection.anchor
160-
? (doc: EditableDocument) => backwardSexpOrUpRange(doc, selection.active, false)
161-
: (doc: EditableDocument) => backwardSexpOrUpRange(doc, selection.active, false);
162-
return rangeFn(doc);
160+
? (doc: EditableDocument) => backwardSexpOrUpRange(doc, [selection.active], false)
161+
: (doc: EditableDocument) => backwardSexpOrUpRange(doc, [selection.active], false);
162+
return rangeFn(doc)[0];
163163
});
164164
selectRangeBackward(doc, ranges);
165165
}
@@ -285,42 +285,18 @@ function _backwardSexpRange(
285285

286286
export function forwardSexpRange(
287287
doc: EditableDocument,
288-
offsets?: number[],
289-
goPastWhitespace?: boolean
290-
): Array<[number, number]>;
291-
export function forwardSexpRange(
292-
doc: EditableDocument,
293-
offset?: number,
294-
goPastWhitespace?: boolean
295-
): [number, number];
296-
export function forwardSexpRange(
297-
doc: EditableDocument,
298-
oneOrMoreOffsets: number[] | number = doc.selections.map((s) => s.end),
288+
offsets: number[] = doc.selections.map((s) => s.end),
299289
goPastWhitespace = false
300-
): Array<[number, number]> | [number, number] {
301-
const offsets = Array.isArray(oneOrMoreOffsets) ? oneOrMoreOffsets : [oneOrMoreOffsets];
302-
const ranges = _forwardSexpRange(doc, offsets, GoUpSexpOption.Never, goPastWhitespace);
303-
return Array.isArray(oneOrMoreOffsets) ? ranges : ranges[0];
290+
): Array<[number, number]> {
291+
return _forwardSexpRange(doc, offsets, GoUpSexpOption.Never, goPastWhitespace);
304292
}
305293

306294
export function backwardSexpRange(
307295
doc: EditableDocument,
308-
offsets?: number[],
309-
goPastWhitespace?: boolean
310-
): Array<[number, number]>;
311-
export function backwardSexpRange(
312-
doc: EditableDocument,
313-
offset?: number,
314-
goPastWhitespace?: boolean
315-
): [number, number];
316-
export function backwardSexpRange(
317-
doc: EditableDocument,
318-
oneOrMoreOffsets: number[] | number = doc.selections.map((s) => s.start),
296+
offsets: number[] = doc.selections.map((s) => s.start),
319297
goPastWhitespace = false
320-
): Array<[number, number]> | [number, number] {
321-
const offsets = Array.isArray(oneOrMoreOffsets) ? oneOrMoreOffsets : [oneOrMoreOffsets];
322-
const ranges = _backwardSexpRange(doc, offsets, GoUpSexpOption.Never, goPastWhitespace);
323-
return Array.isArray(oneOrMoreOffsets) ? ranges : ranges[0];
298+
): Array<[number, number]> {
299+
return _backwardSexpRange(doc, offsets, GoUpSexpOption.Never, goPastWhitespace);
324300
}
325301

326302
export function forwardListRange(
@@ -355,29 +331,16 @@ export function backwardListRange(
355331
* @param goPastWhitespace
356332
* @returns [number, number]
357333
*/
358-
export function forwardHybridSexpRange(
359-
doc: EditableDocument,
360-
offsets?: number[],
361-
goPastWhitespace?: boolean
362-
): Array<[number, number]>;
363-
export function forwardHybridSexpRange(
364-
doc: EditableDocument,
365-
offset?: number,
366-
goPastWhitespace?: boolean
367-
): [number, number];
334+
368335
export function forwardHybridSexpRange(
369336
doc: EditableDocument,
370337
// offset = Math.max(doc.selections.anchor, doc.selections.active),
371338
// offset?: number = doc.selections[0].end,
372339
// selections: ModelEditSelection[] = doc.selections,
373-
offsets: number | number[] = doc.selections.map((s) => s.end),
340+
offsets: number[] = doc.selections.map((s) => s.end),
374341
goPastWhitespace = false
375-
): [number, number] | Array<[number, number]> {
376-
if (isNumber(offsets)) {
377-
offsets = [offsets];
378-
}
379-
380-
const ranges = offsets.map<[number, number]>((offset) => {
342+
): Array<[number, number]> {
343+
return offsets.map<[number, number]>((offset) => {
381344
// const { end: offset } = selection;
382345

383346
let cursor = doc.getTokenCursor(offset);
@@ -442,12 +405,6 @@ export function forwardHybridSexpRange(
442405
}
443406
return [offset, end];
444407
});
445-
446-
if (isNumber(offsets)) {
447-
return ranges[0];
448-
} else {
449-
return ranges;
450-
}
451408
}
452409

453410
export function rangeToForwardUpList(
@@ -470,42 +427,18 @@ export function rangeToBackwardUpList(
470427

471428
export function forwardSexpOrUpRange(
472429
doc: EditableDocument,
473-
offsets?: number[],
474-
goPastWhitespace?: boolean
475-
): Array<[number, number]>;
476-
export function forwardSexpOrUpRange(
477-
doc: EditableDocument,
478-
offset?: number,
479-
goPastWhitespace?: boolean
480-
): [number, number];
481-
export function forwardSexpOrUpRange(
482-
doc: EditableDocument,
483-
oneOrMoreOffsets: number[] | number = doc.selections.map((s) => s.end),
430+
offsets: number[] = doc.selections.map((s) => s.end),
484431
goPastWhitespace = false
485-
): Array<[number, number]> | [number, number] {
486-
const offsets = isNumber(oneOrMoreOffsets) ? [oneOrMoreOffsets] : oneOrMoreOffsets;
487-
const ranges = _forwardSexpRange(doc, offsets, GoUpSexpOption.WhenAtLimit, goPastWhitespace);
488-
return isNumber(oneOrMoreOffsets) ? ranges[0] : ranges;
432+
): Array<[number, number]> {
433+
return _forwardSexpRange(doc, offsets, GoUpSexpOption.WhenAtLimit, goPastWhitespace);
489434
}
490435

491436
export function backwardSexpOrUpRange(
492437
doc: EditableDocument,
493-
offsets?: number[],
494-
goPastWhitespace?: boolean
495-
): Array<[number, number]>;
496-
export function backwardSexpOrUpRange(
497-
doc: EditableDocument,
498-
offset?: number,
499-
goPastWhitespace?: boolean
500-
): [number, number];
501-
export function backwardSexpOrUpRange(
502-
doc: EditableDocument,
503-
oneOrMoreOffsets: number[] | number = doc.selections.map((s) => s.start),
438+
offsets: number[] = doc.selections.map((s) => s.start),
504439
goPastWhitespace = false
505-
): Array<[number, number]> | [number, number] {
506-
const offsets = isNumber(oneOrMoreOffsets) ? [oneOrMoreOffsets] : oneOrMoreOffsets;
507-
const ranges = _backwardSexpRange(doc, offsets, GoUpSexpOption.WhenAtLimit, goPastWhitespace);
508-
return isNumber(oneOrMoreOffsets) ? ranges[0] : ranges;
440+
): Array<[number, number]> {
441+
return _backwardSexpRange(doc, offsets, GoUpSexpOption.WhenAtLimit, goPastWhitespace);
509442
}
510443

511444
export function rangeToForwardDownList(

src/paredit/extension.ts

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
} from 'vscode';
1313
import * as paredit from '../cursor-doc/paredit';
1414
import * as docMirror from '../doc-mirror/index';
15-
import { EditableDocument, ModelEditResult, ModelEditSelection } from '../cursor-doc/model';
15+
import { EditableDocument, ModelEditResult } from '../cursor-doc/model';
1616
import { assertIsDefined } from '../utilities';
1717

1818
const onPareditKeyMapChangedEmitter = new EventEmitter<string>();
@@ -49,7 +49,10 @@ const pareditCommands: PareditCommand[] = [
4949
handler: (doc: EditableDocument) => {
5050
paredit.moveToRangeRight(
5151
doc,
52-
doc.selections.map((s) => paredit.forwardSexpRange(doc, s.active))
52+
paredit.forwardSexpRange(
53+
doc,
54+
doc.selections.map((s) => s.active)
55+
)
5356
);
5457
},
5558
},
@@ -58,7 +61,10 @@ const pareditCommands: PareditCommand[] = [
5861
handler: (doc: EditableDocument) => {
5962
paredit.moveToRangeLeft(
6063
doc,
61-
doc.selections.map((s) => paredit.backwardSexpRange(doc, s.active))
64+
paredit.backwardSexpRange(
65+
doc,
66+
doc.selections.map((s) => s.active)
67+
)
6268
);
6369
},
6470
},
@@ -262,14 +268,11 @@ const pareditCommands: PareditCommand[] = [
262268
{
263269
command: 'paredit.killRight',
264270
handler: (doc: EditableDocument) => {
265-
// doc.selections.forEach((s) => {
266-
// const range = paredit.forwardHybridSexpRange(doc, s.active);
267-
paredit.forwardHybridSexpRange(doc).forEach((range) => {
268-
if (shouldKillAlsoCutToClipboard()) {
269-
copyRangeToClipboard(doc, range);
270-
}
271-
paredit.killRange(doc, range);
272-
});
271+
const ranges = paredit.forwardHybridSexpRange(doc);
272+
if (shouldKillAlsoCutToClipboard()) {
273+
copyRangeToClipboard(doc, ranges);
274+
}
275+
return paredit.killRange(doc, ranges);
273276
},
274277
},
275278
{

0 commit comments

Comments
 (0)