load keymaps from storage
This commit is contained in:
parent
8ba490ea11
commit
e97ffafea3
7 changed files with 85 additions and 51 deletions
|
@ -6,6 +6,7 @@ import * as consoleActions from '../actions/console';
|
|||
import * as tabActions from '../actions/tab';
|
||||
import reducers from '../reducers';
|
||||
import messages from '../messages';
|
||||
import DefaultSettings from '../settings/default-settings';
|
||||
import * as store from '../store';
|
||||
|
||||
let prevInput = [];
|
||||
|
@ -41,7 +42,7 @@ backgroundStore.subscribe((sender) => {
|
|||
|
||||
const keyQueueChanged = (state, sender) => {
|
||||
let prefix = keys.asKeymapChars(state.input.keys);
|
||||
let matched = Object.keys(keys.defaultKeymap).filter((keyStr) => {
|
||||
let matched = Object.keys(state.input.keymaps).filter((keyStr) => {
|
||||
return keyStr.startsWith(prefix);
|
||||
});
|
||||
if (matched.length === 0) {
|
||||
|
@ -51,7 +52,7 @@ const keyQueueChanged = (state, sender) => {
|
|||
matched.length === 1 && prefix !== matched[0]) {
|
||||
return Promise.resolve();
|
||||
}
|
||||
let action = keys.defaultKeymap[matched];
|
||||
let action = state.input.keymaps[matched];
|
||||
backgroundStore.dispatch(operationActions.exec(action, sender.tab), sender);
|
||||
backgroundStore.dispatch(inputActions.clearKeys(), sender);
|
||||
};
|
||||
|
@ -87,3 +88,18 @@ browser.runtime.onMessage.addListener((message, sender) => {
|
|||
backgroundStore.dispatch(consoleActions.showError(e.message), sender);
|
||||
}
|
||||
});
|
||||
|
||||
const initializeSettings = () => {
|
||||
browser.storage.local.get('settings').then((value) => {
|
||||
let settings = {};
|
||||
if (value.settings.json) {
|
||||
settings = JSON.parse(value.settings.json);
|
||||
} else {
|
||||
settings = DefaultSettings;
|
||||
}
|
||||
let action = inputActions.setKeymaps(settings.keymaps);
|
||||
backgroundStore.dispatch(action);
|
||||
}, console.error);
|
||||
};
|
||||
|
||||
initializeSettings();
|
||||
|
|
|
@ -1,43 +1,3 @@
|
|||
import operations from '../operations';
|
||||
|
||||
const defaultKeymap = {
|
||||
':': { type: operations.COMMAND_SHOW },
|
||||
'o': { type: operations.COMMAND_SHOW_OPEN, alter: false },
|
||||
'O': { type: operations.COMMAND_SHOW_OPEN, alter: true },
|
||||
't': { type: operations.COMMAND_SHOW_TABOPEN, alter: false },
|
||||
'T': { type: operations.COMMAND_SHOW_TABOPEN, alter: true },
|
||||
'b': { type: operations.COMMAND_SHOW_BUFFER },
|
||||
'k': { type: operations.SCROLL_LINES, count: -1 },
|
||||
'j': { type: operations.SCROLL_LINES, count: 1 },
|
||||
'<C-E>': { type: operations.SCROLL_LINES, count: -1 },
|
||||
'<C-Y>': { type: operations.SCROLL_LINES, count: 1 },
|
||||
'<C-U>': { type: operations.SCROLL_PAGES, count: -0.5 },
|
||||
'<C-D>': { type: operations.SCROLL_PAGES, count: 0.5 },
|
||||
'<C-B>': { type: operations.SCROLL_PAGES, count: -1 },
|
||||
'<C-F>': { type: operations.SCROLL_PAGES, count: 1 },
|
||||
'gg': { type: operations.SCROLL_TOP },
|
||||
'G': { type: operations.SCROLL_BOTTOM },
|
||||
'0': { type: operations.SCROLL_HOME },
|
||||
'$': { type: operations.SCROLL_END },
|
||||
'd': { type: operations.TAB_CLOSE },
|
||||
'u': { type: operations.TAB_REOPEN },
|
||||
'h': { type: operations.TAB_PREV, count: 1 },
|
||||
'l': { type: operations.TAB_NEXT, count: 1 },
|
||||
'r': { type: operations.TAB_RELOAD, cache: false },
|
||||
'R': { type: operations.TAB_RELOAD, cache: true },
|
||||
'zi': { type: operations.ZOOM_IN },
|
||||
'zo': { type: operations.ZOOM_OUT },
|
||||
'zz': { type: operations.ZOOM_NEUTRAL },
|
||||
'f': { type: operations.FOLLOW_START, newTab: false },
|
||||
'F': { type: operations.FOLLOW_START, newTab: true },
|
||||
'H': { type: operations.NAVIGATE_HISTORY_PREV },
|
||||
'L': { type: operations.NAVIGATE_HISTORY_NEXT },
|
||||
'[[': { type: operations.NAVIGATE_LINK_PREV },
|
||||
']]': { type: operations.NAVIGATE_LINK_NEXT },
|
||||
'gu': { type: operations.NAVIGATE_PARENT },
|
||||
'gU': { type: operations.NAVIGATE_ROOT },
|
||||
};
|
||||
|
||||
const asKeymapChars = (keys) => {
|
||||
return keys.map((k) => {
|
||||
let c = String.fromCharCode(k.code);
|
||||
|
@ -58,4 +18,4 @@ const asCaretChars = (keys) => {
|
|||
}).join('');
|
||||
};
|
||||
|
||||
export { defaultKeymap, asKeymapChars, asCaretChars };
|
||||
export { asKeymapChars, asCaretChars };
|
||||
|
|
Reference in a new issue