2
2
// @name BookmarksToolbar-Hint
3
3
// @description Feature the BookmarksToolbar-Hint
4
4
// @description -ja ブックマークツールバーのヒント機能を提供
5
- // @version 0.2d
5
+ // @version 0.2e
6
6
// ==/VimperatorPlugin==
7
7
//
8
8
// Usage:
@@ -43,7 +43,11 @@ liberator.plugins.bookmarkToolbarHints = (function(){
43
43
}
44
44
function updateSelector ( ) {
45
45
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
+ }
47
51
}
48
52
}
49
53
function itemOpen ( target ) {
@@ -77,7 +81,8 @@ liberator.plugins.bookmarkToolbarHints = (function(){
77
81
var toolbar ;
78
82
var current ;
79
83
var currentNum = 0 ;
80
- var useShift = false ;
84
+ var pressedNum = "" ;
85
+ var useShift = true ;
81
86
var where = liberator . CURERNT_TAB ;
82
87
var manager = {
83
88
get toolbar ( ) getToolbar ( ) ,
@@ -136,6 +141,7 @@ liberator.plugins.bookmarkToolbarHints = (function(){
136
141
currentNum = currentNum == 0 ? hints . length - 1 : currentNum - 1 ;
137
142
}
138
143
useShift = true ;
144
+ pressedNum = "" ;
139
145
updateSelector ( ) ;
140
146
return ;
141
147
case "l" :
@@ -144,8 +150,10 @@ liberator.plugins.bookmarkToolbarHints = (function(){
144
150
}
145
151
return ;
146
152
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 ;
149
157
updateSelector ( ) ;
150
158
return ;
151
159
}
@@ -162,15 +170,16 @@ liberator.plugins.bookmarkToolbarHints = (function(){
162
170
return ;
163
171
default :
164
172
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 ) ;
168
176
if ( hints . length >= num * 10 ) {
169
177
currentNum = num - 1 ;
170
178
updateSelector ( ) ;
171
179
return ;
172
180
}
173
181
if ( hints [ num - 1 ] ) {
182
+ pressedNum = "" ;
174
183
if ( toolbarOpen ( hints [ num - 1 ] ) ) return ;
175
184
}
176
185
}
@@ -180,6 +189,7 @@ liberator.plugins.bookmarkToolbarHints = (function(){
180
189
} ,
181
190
quit : function ( ) {
182
191
currentNum = 0 ;
192
+ pressedNum = "" ;
183
193
useShift = false ;
184
194
window . removeEventListener ( 'keypress' , onKeyPress , true ) ;
185
195
liberator . modules . modes . reset ( true ) ;
0 commit comments