Merge branch 'master' into v2

This commit is contained in:
CHaBou 2017-09-17 10:48:16 +02:00
commit 7733067deb
No known key found for this signature in database
GPG key ID: EF8D073B729A0B33
4 changed files with 67 additions and 5 deletions

View file

@ -1,4 +1,5 @@
const {readFileSync} = require('fs');
const {normalize} = require('../utils/keymaps-normalize');
const {defaultPlatformKeyPath} = require('./paths');
const commands = {};
@ -7,7 +8,7 @@ const keys = {};
const _setKeysForCommands = function(keymap) {
for (const command in keymap) {
if (command) {
commands[command] = keymap[command].toLowerCase();
commands[command] = normalize(keymap[command]);
}
}
};
@ -38,8 +39,8 @@ const _extend = function(customsKeys) {
if (customsKeys) {
for (const command in customsKeys) {
if (command) {
commands[command] = customsKeys[command];
keys[customsKeys[command]] = command;
commands[command] = normalize(customsKeys[command]);
keys[normalize(customsKeys[command])] = command;
}
}
}

View file

@ -0,0 +1,27 @@
const {getKeymaps} = require('../config/keymaps');
const normalize = keybinding => {
function sortAlphabetically(a, b) {
return a.localeCompare(b);
}
return keybinding
.toLowerCase()
.split('+')
.sort(sortAlphabetically)
.join('+');
};
const findCommandByKeys = (keys, commands) => {
return commands[normalize(keys)];
};
const getCommand = keys => {
return findCommandByKeys(keys, getKeymaps().keys);
};
module.exports = {
normalize,
findCommandByKeys,
getCommand
};

View file

@ -1,6 +1,6 @@
import {remote} from 'electron';
const {getKeymaps} = remote.require('./config');
const {getCommand} = remote.require('./utils/keymaps-normalize');
export default function returnKey(e) {
let keys = [];
@ -30,5 +30,5 @@ export default function returnKey(e) {
}
keys = keys.join('+');
return getKeymaps().keys[keys.toLowerCase()];
return getCommand(keys);
}

View file

@ -0,0 +1,34 @@
import test from 'ava';
import {findCommandByKeys} from '../../app/utils/keymaps-normalize';
const expectedCommand = 'test-command';
const expectedLocalizedCommand = 'test-localized-command';
const commands = {
'alt+p+shift': expectedCommand,
'ç+cmd+ctrl': expectedLocalizedCommand
};
test(`returns a command`, t => {
t.is(findCommandByKeys('alt+shift+p', commands), expectedCommand);
t.is(findCommandByKeys('shift+p+alt', commands), expectedCommand);
t.is(findCommandByKeys('p+alt+shift', commands), expectedCommand);
t.is(findCommandByKeys('alt+shift+P', commands), expectedCommand);
t.is(findCommandByKeys('Shift+P+Alt', commands), expectedCommand);
});
test(`returns a localized command`, t => {
t.is(findCommandByKeys('cmd+ctrl+ç', commands), expectedLocalizedCommand);
t.is(findCommandByKeys('ç+cmd+ctrl', commands), expectedLocalizedCommand);
t.is(findCommandByKeys('ctrl+ç+cmd', commands), expectedLocalizedCommand);
t.is(findCommandByKeys('ctrl+Ç+cmd', commands), expectedLocalizedCommand);
t.is(findCommandByKeys('Cmd+Ctrl+Ç', commands), expectedLocalizedCommand);
});