From ecadc5cb5e1ef5f222d06d62daaea6feb285fda8 Mon Sep 17 00:00:00 2001 From: anekos Date: Sat, 27 Nov 2010 18:52:48 +0900 Subject: jump コマンド追加 --- epub-reader.js | 40 +++++++++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) (limited to 'epub-reader.js') diff --git a/epub-reader.js b/epub-reader.js index 0646e10..5eff3c2 100644 --- a/epub-reader.js +++ b/epub-reader.js @@ -35,7 +35,7 @@ THE POSSIBILITY OF SUCH DAMAGE. // INFO {{{ let INFO = <> -

- a')); + let api = __context__.API = { bookmark: makePress('toolbarbutton#save'), @@ -150,6 +160,19 @@ let INFO = makePress('toolbarbutton#library'), save: makePress('toolbarbutton#bookmark'), + jump: + withCompleter( + function (index) { + buffer.followLink(getIndexLinks()[index]); + }, + function (context, args) { + context.compare = void 0; + context.completions = [ + [i + ': ' + link.textContent, link.href.replace(/.*\//g, '').replace(/\.[^.]+$/, '')] + for ([i, link] in Iterator(getIndexLinks())) + ]; + } + ) }; for (let keyValue in Iterator(MapKeys)) { @@ -183,13 +206,20 @@ let INFO = let [cmd, num] = args; let func = api[MapKeys[cmd]]; if (!func) - return liberator.echoerr('Unknown command: ' + fname); + return liberator.echoerr('Unknown command: ' + cmd); func(parseInt(num, 10)); }, { + literal: 1, completer: function (context, args) { - if (args.length > 1) + if (args.length > 1) { + let [cmd] = args; + let func = api[MapKeys[cmd]]; + if (!func.completer) + return; + func.completer(context, args); return; + } context.completions = [ -- cgit v1.2.3