in src/references/model.ts [191:218]
private _move(item: FileItem | ReferenceItem, fwd: boolean): ReferenceItem | undefined {
const delta = fwd ? +1 : -1;
const _move = (item: FileItem): FileItem => {
const idx = (this.items.indexOf(item) + delta + this.items.length) % this.items.length;
return this.items[idx];
};
if (item instanceof FileItem) {
if (fwd) {
return _move(item).references[0];
} else {
return tail(_move(item).references);
}
}
if (item instanceof ReferenceItem) {
const idx = item.file.references.indexOf(item) + delta;
if (idx < 0) {
return tail(_move(item.file).references);
} else if (idx >= item.file.references.length) {
return _move(item.file).references[0];
} else {
return item.file.references[idx];
}
}
}