diff --git a/content/completion.js b/content/completion.js index 1c6db689..8cab259d 100644 --- a/content/completion.js +++ b/content/completion.js @@ -315,9 +315,9 @@ liberator.Completion = function () //{{{ mapped = files.map(function (file) { return [tail ? file.leafName : (dir + file.leafName), file.isDirectory() ? "Directory" : "File"]; }).sort(function (a, b) { - return a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0 + return a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0; }).sort(function (a, b) { - return a[1] < b[1] ? -1 : a[1] > b[1] ? 1 : 0 + return a[1] < b[1] ? -1 : a[1] > b[1] ? 1 : 0; }); } catch (e) @@ -560,6 +560,17 @@ liberator.Completion = function () //{{{ return filtered.concat(additionalCompletions); }, + userMapping: function (filter, modes) + { + // TODO: add appropriate getters to l.mappings + var mappings = []; + + for (var map in liberator.mappings.getUserIterator(modes)) + mappings.push([map.names[0], ""]); + + return [0, this.filter(mappings, filter)]; + }, + // generic helper function which checks if the given "items" array pass "filter" // items must be an array of strings match: function (items, filter, caseSensitive) diff --git a/content/mappings.js b/content/mappings.js index 1983c9a3..64166ffd 100644 --- a/content/mappings.js +++ b/content/mappings.js @@ -203,7 +203,13 @@ liberator.Mappings = function () //{{{ liberator.commands.add([ch ? ch + "m[ap]" : "map"], "Map a key sequence" + modeDescription, - function (args) { map(args, modes, false); }); + function (args) { map(args, modes, false); }, + { + completer: function (filter) + { + return liberator.completion.userMapping(filter, modes); + } + }); liberator.commands.add([ch + "no[remap]"], "Map a key sequence without remapping keys" + modeDescription, @@ -238,12 +244,7 @@ liberator.Mappings = function () //{{{ argCount: "1", completer: function (filter) { - var mappings = [] - - for (var map in liberator.mappings.getUserIterator(modes)) - mappings.push([map.names[0], ""]); - - return [0, liberator.completion.filter(mappings, filter)]; + return liberator.completion.userMapping(filter, modes); } }); }