cloudcmd/client/key/vim/find.js
2018-03-02 11:53:23 +02:00

53 lines
1.1 KiB
JavaScript

'use strict';
/* global DOM */
const fullstore = require('fullstore/legacy');
const limier = require('limier/legacy');
const Info = DOM.CurrentInfo;
const searchStore = fullstore([]);
const searchIndex = fullstore(0);
module.exports.find = (value) => {
const names = Info.files.map(DOM.getCurrentName);
const result = limier(value, names);
searchStore(result);
searchIndex(0);
DOM.setCurrentByName(result[0]);
};
module.exports.findNext = () => {
const names = searchStore();
const index = next(searchIndex(), names.length);
searchIndex(index);
DOM.setCurrentByName(names[searchIndex()]);
};
module.exports.findPrevious = () => {
const names = searchStore();
const index = previous(searchIndex(), names.length);
searchIndex(index);
DOM.setCurrentByName(names[index]);
};
module.exports._next = next;
module.exports._previous = previous;
function next(index, length) {
if (index === length - 1)
return 0;
return ++index;
}
function previous(index, length) {
if (!index)
return length - 1;
return --index;
}