Skip to content

Commit f55f2d5

Browse files
committed
Fix multi-digit hint problem.
1 parent 5e41f4d commit f55f2d5

File tree

1 file changed

+18
-8
lines changed

1 file changed

+18
-8
lines changed

bookmarktoolbar-hint.js

+18-8
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// @name BookmarksToolbar-Hint
33
// @description Feature the BookmarksToolbar-Hint
44
// @description-ja ブックマークツールバーのヒント機能を提供
5-
// @version 0.2d
5+
// @version 0.2e
66
// ==/VimperatorPlugin==
77
//
88
// Usage:
@@ -43,7 +43,11 @@ liberator.plugins.bookmarkToolbarHints = (function(){
4343
}
4444
function updateSelector(){
4545
for (let i=0; i<tooltipbox.childNodes.length; i++){
46-
tooltipbox.childNodes[i].style.color = (i+1).toString().indexOf(currentNum+1) == 0 ? "red" : "black";
46+
if (useShift) {
47+
tooltipbox.childNodes[i].style.color = (i+1) == (currentNum+1) ? "red" : "black";
48+
} else {
49+
tooltipbox.childNodes[i].style.color = (i+1).toString().indexOf(currentNum+1) == 0 ? "red" : "black";
50+
}
4751
}
4852
}
4953
function itemOpen(target){
@@ -77,7 +81,8 @@ liberator.plugins.bookmarkToolbarHints = (function(){
7781
var toolbar;
7882
var current;
7983
var currentNum = 0;
80-
var useShift = false;
84+
var pressedNum = "";
85+
var useShift = true;
8186
var where = liberator.CURERNT_TAB;
8287
var manager = {
8388
get toolbar() getToolbar(),
@@ -136,6 +141,7 @@ liberator.plugins.bookmarkToolbarHints = (function(){
136141
currentNum = currentNum == 0 ? hints.length -1 : currentNum - 1;
137142
}
138143
useShift = true;
144+
pressedNum = "";
139145
updateSelector();
140146
return;
141147
case "l":
@@ -144,8 +150,10 @@ liberator.plugins.bookmarkToolbarHints = (function(){
144150
}
145151
return;
146152
case "<BS>":
147-
if (key == "<BS>" && currentNum > 0){
148-
currentNum = Math.floor(currentNum / 10);
153+
if (key == "<BS>" && pressedNum.length > 0){
154+
pressedNum = pressedNum.substring(0,pressedNum.length - 1);
155+
currentNum = pressedNum.length > 0 ? parseInt(pressedNum,10) : 0;
156+
useShift = pressedNum.length == 0;
149157
updateSelector();
150158
return;
151159
}
@@ -162,15 +170,16 @@ liberator.plugins.bookmarkToolbarHints = (function(){
162170
return;
163171
default:
164172
if (/^[0-9]$/.test(key)){
165-
let num = parseInt(key,10);
166-
if (!useShift && currentNum) num += currentNum * 10;
167-
173+
useShift = false;
174+
pressedNum += key;
175+
let num = parseInt(pressedNum,10);
168176
if (hints.length >= num*10){
169177
currentNum = num - 1;
170178
updateSelector();
171179
return;
172180
}
173181
if (hints[num-1]){
182+
pressedNum = "";
174183
if (toolbarOpen(hints[num-1])) return;
175184
}
176185
}
@@ -180,6 +189,7 @@ liberator.plugins.bookmarkToolbarHints = (function(){
180189
},
181190
quit: function(){
182191
currentNum = 0;
192+
pressedNum = "";
183193
useShift = false;
184194
window.removeEventListener('keypress',onKeyPress,true);
185195
liberator.modules.modes.reset(true);

0 commit comments

Comments
 (0)