Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] Key combinations such as [ "d d" ] seem to store the 2nd "d" so next time you press "d" it first the ["d d"] combination #279

Open
v-bbrady opened this issue Jun 11, 2020 · 1 comment

Comments

@v-bbrady
Copy link

Describe the bug
Hello, I have a number of required key combinations that use the same key twice.
For example, ["d d"]. The first time I click "d d". It functions as expected. However when I hit "d" a single time after that it fires the ["d d"] combination. I believe it is storing the 2nd d somewhere so when a single "d" is pressed it fires the combination. Does anyone have any ideas on how to clear this memory? Or another solution.

`import { EditorCellType } from "../types";
import { CellType } from "@nteract/commutable";
import { ICellProps } from "./ConnectedCell";

/**

  • todo
    */
    export const keyMap = {
    CHANGE_CELL_TYPE_TO_MARKDOWN: ["m"],
    CHANGE_CELL_TYPE_TO_CODE: ["y"],
    PASTE_CELL_BELOW: ["v"],
    COPY_CELL: ["c"],
    CUT_CELL: ["x"],
    INSERT_ABOVE: ["a"],
    INSERT_BELOW: ["b"],
    DELETE_CELL: ["d d"],
    INTERRUPT_KERNEL: ["i", "i"], // should be i i
    RESTART_KERNEL: ["0", "0"], // should be 0 0
    FOCUS_EDITOR: ["enter"],
    UNFOCUS_EDITOR: ["escape"],
    EXECUTE_CELL: ["control+enter"],
    FOCUS_ABOVE: ["up", "k"],
    FOCUS_BELOW: ["down", "j"],
    EXECUTE_CELL_INSERT_BELOW: ["alt+enter"],
    TOGGLE_OUTPUT: ["o"],
    TOGGLE_LINE_NUMBERS: ["l"],
    TOGGLE_OUTPUT_SCROLLING: ["shift+o"],
    SCROLL_DOWN: ["space"],
    SCROLL_UP: ["shift+space"],
    SAVE_NOTEBOOK: ["s"]
    };

/**

  • todo
    */
    export function getHandlers(props: any) {
    return {
    TOGGLE_OUTPUT_SCROLLING: () => onKeyToggleOutputScrolling(props),
    CHANGE_CELL_TYPE_TO_CODE: () => onKeyChangeCellTypeToCode(props),
    CHANGE_CELL_TYPE_TO_MARKDOWN: () => onKeyChangeCellTypeToMarkdown(props),
    COPY_CELL: () => onKeyCopyCell(props),
    PASTE_CELL_BELOW: () => onKeyPasteCellBelow(props),
    CUT_CELL: () => onKeyCutCell(props),
    INSERT_ABOVE: () => onKeyInsertCellAbove(props),
    INSERT_BELOW: () => onKeyInsertCellBelow(props),
    DELETE_CELL: () => onKeyDeleteCell(props),
    INTERRUPT_KERNEL: () => onKeyInterruptKernel(props),
    RESTART_KERNEL: () => onKeyRestartKernel(props),
    EXECUTE_CELL: () => onKeyExecuteCell(props),
    EXECUTE_CELL_INSERT_BELOW: () => onKeyExecuteCellThenInsertCellBelow(props),
    FOCUS_EDITOR: () => onKeyFocusEditor(props),
    FOCUS_ABOVE: () => onKeyFocusAbove(props),
    FOCUS_BELOW: () => onKeyFocusBelow(props),
    TOGGLE_OUTPUT: () => onKeyToggleCellOutputVisibility(props),
    SAVE_NOTEBOOK: (e: KeyboardEvent) => onKeySaveNotebook(e, props)
    };
    }

function onKeySaveNotebook(e: KeyboardEvent, props: ICellProps) {
e.preventDefault();
props.saveNotebook();
}

function onKeyToggleCellOutputVisibility(props: ICellProps) {
props.toggleCellOutputVisibility();
}

function onKeyRestartKernel(props: ICellProps) {
if (!props.settings.readOnly) {
props.restartKernel();
}
}

function onKeyDeleteCell(props: ICellProps) {
props.deleteCell();
}

function onKeyInterruptKernel(props: ICellProps) {
props.interruptKernel();
}

function onKeyChangeCellTypeToCode(props: ICellProps) {
const cellType: CellType = props.settings.cellType;
if (cellType !== EditorCellType.code) {
props.changeCellType(EditorCellType.code);
}
}

function onKeyChangeCellTypeToMarkdown(props: ICellProps) {
const cellType: CellType = props.settings.cellType;
if (cellType !== EditorCellType.markdown) {
props.changeCellType(EditorCellType.markdown);
}
}

function onKeyInsertCellBelow(props: any) {
const cellType: CellType = props.cellType;
const contentRef: string = props.contentRef;
props.insertCellBelow(contentRef, cellType);
}

function onKeyInsertCellAbove(props: any) {
const cellType: CellType = props.cellType;
const contentRef: string = props.contentRef;
props.insertCellAbove(contentRef, cellType);
}

function onKeyCopyCell(props: ICellProps) {
props.copyCell();
}

function onKeyPasteCellBelow(props: ICellProps) {
props.pasteCellBelow();
}

function onKeyCutCell(props: ICellProps) {
props.cutCell();
}

function onKeyToggleOutputScrolling(props: ICellProps) {
props.toggleOutputExpansion();
}

function onKeyFocusBelow(props: any) {
props.focusBelowCell();
}

function onKeyFocusAbove(props: any) {
props.focusAboveCell();
}

function onKeyExecuteCell(props: ICellProps) {
// tslint:disable no-console
console.log('rowboat');
props.executeCell();
}

function onKeyExecuteCellThenInsertCellBelow(props: any) {
const cellType: CellType = props.cellType;
const contentRef: string = props.contentRef;
props.executeCell();
props.insertCellBelow(contentRef, cellType);
}

function onKeyFocusEditor(props: ICellProps) {
props.focusEditor();
}
`

Expected behavior
I am expecting the key combination to only fire when "d" and then "d" is pressed even after using "d d" once.

Platform (please complete the following information):

  • 2.0.0
  • Chrome
  • Windows
@Harjot1Singh
Copy link
Contributor

Is this related to #255?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants