vimamsa 0.1.7 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/vimamsa/actions.rb +6 -6
- data/lib/vimamsa/buffer.rb +69 -39
- data/lib/vimamsa/buffer_list.rb +24 -0
- data/lib/vimamsa/buffer_manager.rb +83 -0
- data/lib/vimamsa/conf.rb +21 -0
- data/lib/vimamsa/debug.rb +3 -2
- data/lib/vimamsa/easy_jump.rb +7 -7
- data/lib/vimamsa/editor.rb +24 -17
- data/lib/vimamsa/file_finder.rb +5 -6
- data/lib/vimamsa/file_history.rb +3 -3
- data/lib/vimamsa/file_manager.rb +9 -8
- data/lib/vimamsa/gui.rb +15 -17
- data/lib/vimamsa/gui_menu.rb +11 -1
- data/lib/vimamsa/gui_select_window.rb +13 -13
- data/lib/vimamsa/gui_sourceview.rb +23 -23
- data/lib/vimamsa/hyper_plain_text.rb +8 -10
- data/lib/vimamsa/key_actions.rb +4 -0
- data/lib/vimamsa/key_binding_tree.rb +27 -27
- data/lib/vimamsa/key_bindings_vimlike.rb +1 -1
- data/lib/vimamsa/macro.rb +5 -5
- data/lib/vimamsa/rbvma.rb +11 -10
- data/lib/vimamsa/search.rb +1 -1
- data/lib/vimamsa/search_replace.rb +3 -4
- data/lib/vimamsa/version.rb +1 -1
- metadata +4 -3
- data/lib/vimamsa/gui_gtk_sourceview.rb +0 -294
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6000318b31060bff83029148c2cf47cc6ff8c5939d2fc1d54951a54e8b49a538
|
4
|
+
data.tar.gz: 500cd81fe9bd605276a0802f182980c5a93d77ab5d2221548586673e85a85832
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8b687b1b72df46bd9bc35622b239e9525e2dc15884f1066557e82c474e99c280577a32a3a7f60a776f5b6be0866dc86c79e2b364780413821a491160ad73875f
|
7
|
+
data.tar.gz: d5e8da0e6263f74f27ee84781efdea5126411a68ace27d244da6c5b9203924196d10bbe91541319af91539089c6391dfadfde3f76cbac6f475b2002c1fbaa16c
|
data/lib/vimamsa/actions.rb
CHANGED
@@ -28,7 +28,7 @@ def reg_act(id, callfunc, name = "", opt = {})
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def missing_callfunc
|
31
|
-
|
31
|
+
debug "missing_callfunc"
|
32
32
|
end
|
33
33
|
|
34
34
|
#TODO: remove
|
@@ -74,10 +74,10 @@ def search_actions_update_callback(search_str = "")
|
|
74
74
|
item_list = item_list2
|
75
75
|
|
76
76
|
a = filter_items(item_list, 0, search_str)
|
77
|
-
|
77
|
+
debug a.inspect
|
78
78
|
|
79
79
|
r = a.collect { |x| [x[0][0], 0, x] }
|
80
|
-
|
80
|
+
debug r.inspect
|
81
81
|
$item_list = r
|
82
82
|
|
83
83
|
r = a.collect { |x| ["[#{x[0][:key]}] #{x[0][:str]}", 0, x] }
|
@@ -88,13 +88,13 @@ def search_actions_select_callback(search_str, idx)
|
|
88
88
|
item = $item_list[idx][2]
|
89
89
|
acc = item[0][:action]
|
90
90
|
|
91
|
-
|
91
|
+
debug "Selected:" + acc.to_s
|
92
92
|
gui_select_window_close(0)
|
93
93
|
|
94
94
|
if acc.class == String
|
95
95
|
eval(acc)
|
96
96
|
elsif acc.class == Symbol
|
97
|
-
|
97
|
+
debug "Symbol"
|
98
98
|
call(acc)
|
99
99
|
end
|
100
100
|
end
|
@@ -106,7 +106,7 @@ def filter_items(item_list, item_key, search_str)
|
|
106
106
|
[item, srn_dst(search_str, item[:str])]
|
107
107
|
end
|
108
108
|
scores.sort_by! { |x| -x[1] }
|
109
|
-
|
109
|
+
debug scores.inspect
|
110
110
|
scores = scores[0..30]
|
111
111
|
|
112
112
|
return scores
|
data/lib/vimamsa/buffer.rb
CHANGED
@@ -28,7 +28,7 @@ class Buffer < String
|
|
28
28
|
@id = @@num_buffers
|
29
29
|
@@num_buffers += 1
|
30
30
|
gui_create_buffer(@id)
|
31
|
-
|
31
|
+
debug "NEW BUFFER fn=#{fname} ID:#{@id}"
|
32
32
|
|
33
33
|
@module = nil
|
34
34
|
|
@@ -71,6 +71,15 @@ class Buffer < String
|
|
71
71
|
@active_kbd_mode = nil
|
72
72
|
end
|
73
73
|
|
74
|
+
def list_str()
|
75
|
+
if @fname.nil?
|
76
|
+
x = @title
|
77
|
+
else
|
78
|
+
x = @fname
|
79
|
+
end
|
80
|
+
return x
|
81
|
+
end
|
82
|
+
|
74
83
|
def set_active
|
75
84
|
if !@active_kbd_mode.nil?
|
76
85
|
$kbd.set_mode(@active_kbd_mode)
|
@@ -104,7 +113,7 @@ class Buffer < String
|
|
104
113
|
# lang.get_metadata("block-comment-end")
|
105
114
|
@lang_nfo = lang
|
106
115
|
if !lang.nil? and !lang.id.nil?
|
107
|
-
|
116
|
+
debug "Guessed LANG: #{lang.id}"
|
108
117
|
@lang = lang.id
|
109
118
|
end
|
110
119
|
|
@@ -113,10 +122,32 @@ class Buffer < String
|
|
113
122
|
end
|
114
123
|
end
|
115
124
|
|
125
|
+
def view()
|
126
|
+
# Get the VSourceView < GtkSource::View object corresponding to this buffer
|
127
|
+
return vma.gui.buffers[@id]
|
128
|
+
end
|
129
|
+
|
116
130
|
def add_image(imgpath, pos)
|
117
131
|
return if !is_legal_pos(pos)
|
118
|
-
|
119
|
-
|
132
|
+
|
133
|
+
pixbuf = GdkPixbuf::Pixbuf.new(:file => imgpath)
|
134
|
+
|
135
|
+
# puts GdkPixbuf::InterpType.constants
|
136
|
+
# GdkPixbuf::InterpType::HYPER
|
137
|
+
# https://docs.gtk.org/gdk-pixbuf/enum.InterpType.html#bilinear
|
138
|
+
# https://docs.gtk.org/gdk-pixbuf/method.Pixbuf.scale_simple.html
|
139
|
+
imglimit = view.visible_rect.width - 5
|
140
|
+
if pixbuf.width > imglimit
|
141
|
+
nwidth = imglimit
|
142
|
+
nheight = (pixbuf.height * (imglimit.to_f / pixbuf.width)).to_i
|
143
|
+
pixbuf = pixbuf.scale_simple(nwidth, nheight, GdkPixbuf::InterpType::HYPER)
|
144
|
+
end
|
145
|
+
|
146
|
+
vbuf = view.buffer
|
147
|
+
itr = vbuf.get_iter_at(:offset => pos)
|
148
|
+
itr2 = vbuf.get_iter_at(:offset => pos + 1)
|
149
|
+
vbuf.delete(itr, itr2)
|
150
|
+
vbuf.insert(itr, pixbuf)
|
120
151
|
end
|
121
152
|
|
122
153
|
def is_legal_pos(pos, op = :read)
|
@@ -197,20 +228,20 @@ class Buffer < String
|
|
197
228
|
ok = true
|
198
229
|
@bt.each_line { |r|
|
199
230
|
if lines[i] != r #or true
|
200
|
-
|
201
|
-
|
202
|
-
#
|
203
|
-
#
|
204
|
-
|
205
|
-
|
206
|
-
|
231
|
+
debug "NO MATCH FOR LINE:"
|
232
|
+
debug "i=#{i}["
|
233
|
+
# debug "[orig]pos=#{leaf.pos} |#{leaf.data}|"
|
234
|
+
# debug "spos=#{spos} nchar=#{leaf.nchar} epos=#{epos} a[]=\nr=|#{r}|"
|
235
|
+
debug "fromtree:|#{r}|"
|
236
|
+
debug "frombuf:|#{lines[i]}"
|
237
|
+
debug "]"
|
207
238
|
ok = false
|
208
239
|
end
|
209
240
|
i += 1
|
210
241
|
}
|
211
242
|
|
212
|
-
|
213
|
-
|
243
|
+
debug "BT: NO ERRORS" if ok
|
244
|
+
debug "BT: ERRORS" if !ok
|
214
245
|
end
|
215
246
|
|
216
247
|
def set_content(str)
|
@@ -429,11 +460,11 @@ class Buffer < String
|
|
429
460
|
end
|
430
461
|
|
431
462
|
def update_index(pos, changeamount)
|
432
|
-
#
|
463
|
+
# debug "pos #{pos}, changeamount #{changeamount}, @pos #{@pos}"
|
433
464
|
@edit_pos_history.collect! { |x| r = x if x <= pos; r = x + changeamount if x > pos; r }
|
434
465
|
# TODO: handle between removal case
|
435
466
|
for k in @marks.keys
|
436
|
-
#
|
467
|
+
# debug "change(?): pos=#{pos}, k=#{k}, #{@marks[k]}, #{changeamount}"
|
437
468
|
if @marks[k] > pos
|
438
469
|
@marks[k] = @marks[k] + changeamount
|
439
470
|
end
|
@@ -574,7 +605,7 @@ class Buffer < String
|
|
574
605
|
ls = nil
|
575
606
|
ls = @line_ends[a] if a != nil
|
576
607
|
# if a != nil and ls != @line_ends[a]
|
577
|
-
#
|
608
|
+
# debug "NO MATCH @line_ends[a]"
|
578
609
|
# end
|
579
610
|
|
580
611
|
if ls == nil
|
@@ -679,7 +710,7 @@ class Buffer < String
|
|
679
710
|
end
|
680
711
|
|
681
712
|
debug "Scan line_end time: #{Time.now - t1}"
|
682
|
-
#
|
713
|
+
#debug @line_ends
|
683
714
|
end
|
684
715
|
|
685
716
|
def sanity_check_line_ends()
|
@@ -696,7 +727,7 @@ class Buffer < String
|
|
696
727
|
end
|
697
728
|
|
698
729
|
def update_bufpos_on_change(positions, xpos, changeamount)
|
699
|
-
#
|
730
|
+
# debug "xpos=#{xpos} changeamount=#{changeamount}"
|
700
731
|
positions.collect { |x|
|
701
732
|
r = nil
|
702
733
|
r = x if x < xpos
|
@@ -731,7 +762,7 @@ class Buffer < String
|
|
731
762
|
i_nl = scan_indexes(changestr, /\n/)
|
732
763
|
i_nl.collect! { |x| x + pos }
|
733
764
|
end
|
734
|
-
#
|
765
|
+
# debug "change:#{changeamount}"
|
735
766
|
#TODO: this is the bottle neck in insert_txt action
|
736
767
|
@line_ends.collect! { |x|
|
737
768
|
r = nil
|
@@ -879,10 +910,10 @@ class Buffer < String
|
|
879
910
|
range = @pos..wmarks[0]
|
880
911
|
end
|
881
912
|
elsif range_id == :to_line_end
|
882
|
-
|
913
|
+
debug "TO LINE END"
|
883
914
|
range = @pos..(@line_ends[@lpos] - 1)
|
884
915
|
elsif range_id == :to_line_start
|
885
|
-
|
916
|
+
debug "TO LINE START: #{@lpos}"
|
886
917
|
|
887
918
|
if @cpos == 0
|
888
919
|
range = nil
|
@@ -918,15 +949,15 @@ class Buffer < String
|
|
918
949
|
end
|
919
950
|
|
920
951
|
def move(direction)
|
921
|
-
|
952
|
+
debug "cpos:#{@cpos} lpos:#{@lpos} @larger_cpos:#{@larger_cpos}"
|
922
953
|
if direction == :forward_page
|
923
|
-
|
954
|
+
debug "FORWARD PAGE"
|
924
955
|
visible_range = get_visible_area()
|
925
956
|
set_pos(visible_range[1])
|
926
957
|
top_where_cursor()
|
927
958
|
end
|
928
959
|
if direction == :backward_page
|
929
|
-
|
960
|
+
debug "backward PAGE"
|
930
961
|
visible_range = get_visible_area()
|
931
962
|
set_pos(visible_range[0])
|
932
963
|
bottom_where_cursor()
|
@@ -1029,7 +1060,7 @@ class Buffer < String
|
|
1029
1060
|
if wtype == :url
|
1030
1061
|
open_url(word)
|
1031
1062
|
elsif wtype == :linepointer
|
1032
|
-
|
1063
|
+
debug word.inspect
|
1033
1064
|
jump_to_file(word[0], word[1])
|
1034
1065
|
elsif wtype == :textfile
|
1035
1066
|
open_existing_file(word)
|
@@ -1096,10 +1127,10 @@ class Buffer < String
|
|
1096
1127
|
word_start = pos if word_start == nil
|
1097
1128
|
word_end = pos if word_end == nil
|
1098
1129
|
word = self[word_start..word_end]
|
1099
|
-
|
1130
|
+
debug "'WORD: #{word}'"
|
1100
1131
|
message("'#{word}'")
|
1101
1132
|
linep = get_file_line_pointer(word)
|
1102
|
-
|
1133
|
+
debug "linep'#{linep}'"
|
1103
1134
|
path = File.expand_path(word)
|
1104
1135
|
wtype = nil
|
1105
1136
|
if is_url(word)
|
@@ -1112,7 +1143,7 @@ class Buffer < String
|
|
1112
1143
|
wtype = :file
|
1113
1144
|
end
|
1114
1145
|
# elsif hpt_check_cur_word(word) #TODO: check only
|
1115
|
-
#
|
1146
|
+
# debug word
|
1116
1147
|
elsif linep != nil
|
1117
1148
|
wtype = :linepointer
|
1118
1149
|
word = linep
|
@@ -1140,14 +1171,14 @@ class Buffer < String
|
|
1140
1171
|
word_start = pos if word_start == nil
|
1141
1172
|
word_end = pos if word_end == nil
|
1142
1173
|
word = self[word_start..word_end]
|
1143
|
-
|
1174
|
+
debug "'#{word}'"
|
1144
1175
|
message("'#{word}'")
|
1145
|
-
#
|
1176
|
+
#debug wm
|
1146
1177
|
end
|
1147
1178
|
|
1148
1179
|
def jump_to_next_instance_of_word()
|
1149
1180
|
if $kbd.last_action == $kbd.cur_action and @current_word != nil
|
1150
|
-
#
|
1181
|
+
# debug "REPEATING *"
|
1151
1182
|
else
|
1152
1183
|
start_search = [@pos - 150, 0].max
|
1153
1184
|
|
@@ -1246,10 +1277,10 @@ class Buffer < String
|
|
1246
1277
|
|
1247
1278
|
if target == FIRST_NON_WHITESPACE
|
1248
1279
|
l = current_line()
|
1249
|
-
|
1280
|
+
debug l.inspect
|
1250
1281
|
@cpos = line(@lpos).size - 1
|
1251
1282
|
a = scan_indexes(l, /\S/)
|
1252
|
-
|
1283
|
+
debug a.inspect
|
1253
1284
|
if a.any?
|
1254
1285
|
@cpos = a[0]
|
1255
1286
|
else
|
@@ -1358,14 +1389,13 @@ class Buffer < String
|
|
1358
1389
|
if m
|
1359
1390
|
c = c + " " * m[1].size if m
|
1360
1391
|
end
|
1361
|
-
|
1362
1392
|
|
1363
1393
|
#if tab indent
|
1364
1394
|
m = /^(\t+)([^\t]+|$)/.match(last_line)
|
1365
1395
|
if m
|
1366
1396
|
c = c + "\t" * m[1].size if m
|
1367
1397
|
end
|
1368
|
-
|
1398
|
+
|
1369
1399
|
# debug m.inspect
|
1370
1400
|
end
|
1371
1401
|
if mode == BEFORE
|
@@ -1379,8 +1409,8 @@ class Buffer < String
|
|
1379
1409
|
|
1380
1410
|
#self.insert(insert_pos,c)
|
1381
1411
|
add_delta([insert_pos, INSERT, c.size, c], true)
|
1382
|
-
#
|
1383
|
-
#
|
1412
|
+
#debug("encoding: #{c.encoding}")
|
1413
|
+
#debug "c.size: #{c.size}"
|
1384
1414
|
#recalc_line_ends #TODO: optimize?
|
1385
1415
|
calculate_line_and_column_pos
|
1386
1416
|
#need_redraw!
|
@@ -1454,7 +1484,7 @@ class Buffer < String
|
|
1454
1484
|
text = $register[register]
|
1455
1485
|
end
|
1456
1486
|
end
|
1457
|
-
|
1487
|
+
debug "PASTE: #{text}"
|
1458
1488
|
|
1459
1489
|
return if text == ""
|
1460
1490
|
|
@@ -1511,7 +1541,7 @@ class Buffer < String
|
|
1511
1541
|
debug "COPY SELECTION"
|
1512
1542
|
s = self[get_visual_mode_range]
|
1513
1543
|
if x == :append
|
1514
|
-
|
1544
|
+
debug "APPEND"
|
1515
1545
|
s += "\n" + get_clipboard()
|
1516
1546
|
end
|
1517
1547
|
|
data/lib/vimamsa/buffer_list.rb
CHANGED
@@ -23,6 +23,7 @@ end
|
|
23
23
|
class BufferList < Array
|
24
24
|
attr_reader :current_buf
|
25
25
|
|
26
|
+
|
26
27
|
def <<(_buf)
|
27
28
|
super
|
28
29
|
$buffer = _buf
|
@@ -57,6 +58,12 @@ class BufferList < Array
|
|
57
58
|
buf_idx = self.index { |b| b.fname == fname }
|
58
59
|
return buf_idx
|
59
60
|
end
|
61
|
+
|
62
|
+
def get_buffer_by_id(id)
|
63
|
+
buf_idx = self.index { |b| b.id == id }
|
64
|
+
return buf_idx
|
65
|
+
end
|
66
|
+
|
60
67
|
|
61
68
|
def add_current_buf_to_history()
|
62
69
|
@recent_ind = 0
|
@@ -138,7 +145,24 @@ class BufferList < Array
|
|
138
145
|
$buffer_history = bh.reverse
|
139
146
|
end
|
140
147
|
|
148
|
+
|
149
|
+
# Close buffer in the background
|
150
|
+
# TODO: if open in another widget
|
151
|
+
def close_other_buffer(buffer_i)
|
152
|
+
return if self.size <= buffer_i
|
153
|
+
return if @current_buf == buffer_i
|
154
|
+
|
155
|
+
bufname = self[buffer_i].basename
|
156
|
+
message("Closed buffer #{bufname}")
|
157
|
+
|
158
|
+
self.slice!(buffer_i)
|
159
|
+
$buffer_history = $buffer_history.collect { |x| r = x; r = x - 1 if x > buffer_i; r = nil if x == buffer_i; r }.compact
|
160
|
+
|
161
|
+
end
|
162
|
+
|
163
|
+
|
141
164
|
def close_buffer(buffer_i, from_recent = false)
|
165
|
+
return if buffer_i.nil?
|
142
166
|
return if self.size <= buffer_i
|
143
167
|
|
144
168
|
bufname = self[buffer_i].basename
|
@@ -0,0 +1,83 @@
|
|
1
|
+
class BufferManager
|
2
|
+
attr_reader :buf
|
3
|
+
@@cur = nil # Current object of class
|
4
|
+
|
5
|
+
def self.cur()
|
6
|
+
return @@cur
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.init()
|
10
|
+
vma.kbd.add_minor_mode("bmgr", :buf_mgr, :command)
|
11
|
+
reg_act(:bmgr_select, proc { buf.module.select_line }, "")
|
12
|
+
reg_act(:bmgr_close, proc { buf.module.close_selected }, "")
|
13
|
+
|
14
|
+
reg_act(:start_buf_manager, proc { BufferManager.new.run; vma.kbd.set_mode(:buf_mgr) }, "Buffer manager")
|
15
|
+
|
16
|
+
bindkey "bmgr enter", :bmgr_select
|
17
|
+
bindkey "bmgr c", :bmgr_close
|
18
|
+
end
|
19
|
+
|
20
|
+
def initialize()
|
21
|
+
@buf = nil
|
22
|
+
@line_to_id = {}
|
23
|
+
end
|
24
|
+
|
25
|
+
def buf_of_current_line()
|
26
|
+
l = @buf.lpos - @header.size
|
27
|
+
return nil if l < 0
|
28
|
+
bufid = @line_to_id[l]
|
29
|
+
buf_i = vma.buffers.get_buffer_by_id(bufid)
|
30
|
+
return buf_i
|
31
|
+
end
|
32
|
+
|
33
|
+
def close_selected
|
34
|
+
buf_i = buf_of_current_line()
|
35
|
+
if buf_i.nil?
|
36
|
+
message("buf already closed")
|
37
|
+
return
|
38
|
+
end
|
39
|
+
vma.buffers.close_other_buffer(buf_i)
|
40
|
+
end
|
41
|
+
|
42
|
+
def select_line
|
43
|
+
buf_i = buf_of_current_line()
|
44
|
+
return if buf_i.nil?
|
45
|
+
|
46
|
+
vma.buffers.close_current_buffer()
|
47
|
+
vma.buffers.set_current_buffer(buf_i)
|
48
|
+
@@cur = nil
|
49
|
+
end
|
50
|
+
|
51
|
+
def run
|
52
|
+
if !@@cur.nil? #One instance open already
|
53
|
+
#Close it
|
54
|
+
buf_i = vma.buffers.get_buffer_by_id(@@cur.buf.id)
|
55
|
+
vma.buffers.close_buffer(buf_i)
|
56
|
+
end
|
57
|
+
@@cur = self
|
58
|
+
@header = []
|
59
|
+
@header << "Current buffers:"
|
60
|
+
@header << "keys: <enter> to select, <c> to close buffer"
|
61
|
+
@header << "=" * 40
|
62
|
+
|
63
|
+
s = ""
|
64
|
+
s << @header.join("\n")
|
65
|
+
s << "\n"
|
66
|
+
i = 0
|
67
|
+
for b in vma.buffers.sort_by { |x| x.list_str }
|
68
|
+
x = b.list_str
|
69
|
+
s << "#{x}\n"
|
70
|
+
@line_to_id[i] = b.id
|
71
|
+
i += 1
|
72
|
+
end
|
73
|
+
|
74
|
+
if @buf.nil?
|
75
|
+
@buf = create_new_file(nil, s)
|
76
|
+
@buf.module = self
|
77
|
+
@buf.active_kbd_mode = :buf_mgr
|
78
|
+
else
|
79
|
+
@buf.set_content(s)
|
80
|
+
end
|
81
|
+
@buf.set_line_and_column_pos(@header.size, 0)
|
82
|
+
end
|
83
|
+
end
|
data/lib/vimamsa/conf.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
$cnf = {} # TODO
|
2
|
+
|
3
|
+
def conf(id)
|
4
|
+
return $cnf[id]
|
5
|
+
end
|
6
|
+
|
7
|
+
def set_conf(id, val)
|
8
|
+
$cnf[id] = val
|
9
|
+
end
|
10
|
+
|
11
|
+
def setcnf(id, val)
|
12
|
+
set_conf(id, val)
|
13
|
+
end
|
14
|
+
|
15
|
+
setcnf :indent_based_on_last_line, true
|
16
|
+
setcnf :extensions_to_open, [".txt", ".h", ".c", ".cpp", ".hpp", ".rb", ".inc", ".php", ".sh", ".m", ".gd", ".js"]
|
17
|
+
|
18
|
+
|
19
|
+
setcnf "log.verbose", 1
|
20
|
+
setcnf :tab_width, 4
|
21
|
+
|
data/lib/vimamsa/debug.rb
CHANGED
data/lib/vimamsa/easy_jump.rb
CHANGED
@@ -41,12 +41,12 @@ class EasyJump
|
|
41
41
|
def easy_jump_input_char(c, event_type)
|
42
42
|
return true if event_type != :key_press
|
43
43
|
# vma.paint_stack = []
|
44
|
-
|
44
|
+
debug "EASY JUMP: easy_jump_input_char [#{c}]"
|
45
45
|
@easy_jump_input << c.upcase
|
46
46
|
if @jump_sequence.include?(@easy_jump_input)
|
47
47
|
jshash = Hash[@jump_sequence.map.with_index.to_a]
|
48
48
|
nthword = jshash[@easy_jump_input]
|
49
|
-
|
49
|
+
debug "nthword:#{nthword} #{[@easy_jump_wsmarks[nthword], @jump_sequence[nthword]]}"
|
50
50
|
buf.set_pos(@easy_jump_wsmarks[nthword])
|
51
51
|
# @kbd.set_mode(:command)
|
52
52
|
vma.kbd.remove_keyhandling_override
|
@@ -63,8 +63,8 @@ class EasyJump
|
|
63
63
|
end
|
64
64
|
|
65
65
|
def easy_jump_draw()
|
66
|
-
#
|
67
|
-
#
|
66
|
+
# debug @jump_sequence.inspect
|
67
|
+
# debug @easy_jump_wsmarks.inspect
|
68
68
|
vma.gui.start_overlay_draw
|
69
69
|
for i in 0..(@easy_jump_wsmarks.size - 1)
|
70
70
|
vma.gui.overlay_draw_text(@jump_sequence[i], @easy_jump_wsmarks[i])
|
@@ -73,12 +73,12 @@ class EasyJump
|
|
73
73
|
|
74
74
|
return
|
75
75
|
return if @jump_sequence.empty?
|
76
|
-
|
76
|
+
debug "EASY JUMP DRAW"
|
77
77
|
screen_cord = cpp_function_wrapper(0, [@easy_jump_wsmarks])
|
78
78
|
screen_cord = screen_cord[1..@jump_sequence.size]
|
79
79
|
screen_cord.each_with_index { |point, i|
|
80
80
|
mark_str = @jump_sequence[i]
|
81
|
-
#
|
81
|
+
#debug "draw #{point[0]}x#{point[1]}"
|
82
82
|
draw_text(mark_str, point[0] + 3, point[1])
|
83
83
|
#break if m > @cpos
|
84
84
|
}
|
@@ -159,7 +159,7 @@ class EasyJump
|
|
159
159
|
}
|
160
160
|
|
161
161
|
#printf("Size of sequence: %d\n",sequence.size)
|
162
|
-
#
|
162
|
+
#debug sequence.inspect
|
163
163
|
return sequence
|
164
164
|
end
|
165
165
|
end
|