All files / lib/context keypress-autocomplete.ts

18.18% Statements 2/11
0% Branches 0/7
0% Functions 0/3
18.18% Lines 2/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 233x     3x                                      
import _filter from "lodash/filter";
import { KeyPress, State } from "makitso-prompt";
 
export function keyPressAutoComplete(choices: string[]) {
  return {
    keyPress: async function(state: State, press: KeyPress) {
      if (state.mode === "command") {
        const matches = _filter(choices, choice =>
          choice.startsWith(state.command)
        );
 
        if (press.key && press.key.name === "tab" && matches.length === 1) {
          state.command = matches[0] + " ";
          state.cursorCols = null;
        } else {
          state.footer = matches.join(" ");
        }
      }
      return state;
    }
  };
}