vimamsa 0.1.16 → 0.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/vimamsa/ack.rb +91 -13
- data/lib/vimamsa/actions.rb +99 -84
- data/lib/vimamsa/buffer.rb +34 -44
- data/lib/vimamsa/buffer_changetext.rb +20 -5
- data/lib/vimamsa/buffer_list.rb +7 -0
- data/lib/vimamsa/buffer_manager.rb +1 -1
- data/lib/vimamsa/conf.rb +3 -0
- data/lib/vimamsa/editor.rb +26 -13
- data/lib/vimamsa/encrypt.rb +38 -1
- data/lib/vimamsa/file_history.rb +3 -3
- data/lib/vimamsa/file_manager.rb +1 -1
- data/lib/vimamsa/gui.rb +75 -30
- data/lib/vimamsa/gui_select_window.rb +2 -0
- data/lib/vimamsa/gui_sourceview.rb +91 -57
- data/lib/vimamsa/gui_sourceview_autocomplete.rb +3 -1
- data/lib/vimamsa/hyper_plain_text.rb +4 -3
- data/lib/vimamsa/key_actions.rb +1 -1
- data/lib/vimamsa/key_binding_tree.rb +5 -6
- data/lib/vimamsa/key_bindings_vimlike.rb +55 -18
- data/lib/vimamsa/langservp.rb +3 -1
- data/lib/vimamsa/macro.rb +4 -1
- data/lib/vimamsa/rbvma.rb +2 -2
- data/lib/vimamsa/tests.rb +6 -9
- data/lib/vimamsa/util.rb +56 -14
- data/lib/vimamsa/version.rb +1 -1
- data/vimamsa.gemspec +4 -4
- metadata +27 -27
@@ -67,6 +67,7 @@ class KeyBindingTree
|
|
67
67
|
end
|
68
68
|
|
69
69
|
def set_mode(label)
|
70
|
+
return if get_mode == :label
|
70
71
|
@match_state = [@modes[label]] # used for matching input
|
71
72
|
@mode_root_state = @modes[label]
|
72
73
|
# @default_mode = label
|
@@ -290,8 +291,8 @@ class KeyBindingTree
|
|
290
291
|
else
|
291
292
|
method_desc = t.action
|
292
293
|
if t.action.class == Symbol
|
293
|
-
if
|
294
|
-
a =
|
294
|
+
if vma.actions.include?(t.action)
|
295
|
+
a = vma.actions[t.action].method_name
|
295
296
|
if !a.nil? and !a.empty?
|
296
297
|
method_desc = a
|
297
298
|
end
|
@@ -477,7 +478,7 @@ class KeyBindingTree
|
|
477
478
|
# return
|
478
479
|
# end
|
479
480
|
# $action_list << { :action => action, :key => key }
|
480
|
-
if
|
481
|
+
if !vma.actions.include?(action)
|
481
482
|
if action.class == String
|
482
483
|
reg_act(action, proc { eval(action) }, action)
|
483
484
|
end
|
@@ -566,7 +567,7 @@ class KeyBindingTree
|
|
566
567
|
end
|
567
568
|
|
568
569
|
def handle_key_bindigs_action(action, c)
|
569
|
-
$acth << action
|
570
|
+
# $acth << action #TODO:needed here?
|
570
571
|
@method_handles_repeat = false #TODO:??
|
571
572
|
n = 1
|
572
573
|
if @next_command_count and !(action.class == String and action.include?("set_next_command_count"))
|
@@ -619,8 +620,6 @@ def bindkey(key, action)
|
|
619
620
|
$kbd.bindkey(key, action)
|
620
621
|
end
|
621
622
|
|
622
|
-
$action_list = []
|
623
|
-
|
624
623
|
def exec_action(action)
|
625
624
|
$kbd.last_action = $kbd.cur_action
|
626
625
|
$kbd.cur_action = action
|
@@ -17,11 +17,32 @@ cnf.mode.default.cursor.background = "#03fcca"
|
|
17
17
|
cnf.mode.visual.cursor.background = "#bc6040"
|
18
18
|
cnf.mode.replace.cursor.background = "#fc0331"
|
19
19
|
cnf.mode.browse.cursor.background = "#f803fc"
|
20
|
-
|
20
|
+
cnf.mode.insert.cursor.background = "#ffffff"
|
21
|
+
|
22
|
+
def _insert_move(op)
|
23
|
+
if op == :pagedown
|
24
|
+
vma.gui.page_down
|
25
|
+
elsif op == :pageup
|
26
|
+
vma.gui.page_up
|
27
|
+
else
|
28
|
+
buf.move(op)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def insert_select_move(op)
|
33
|
+
buf.continue_selection
|
34
|
+
_insert_move(op)
|
35
|
+
end
|
36
|
+
|
37
|
+
def insert_move(op)
|
38
|
+
buf.end_selection
|
39
|
+
_insert_move(op)
|
40
|
+
end
|
21
41
|
|
22
42
|
bindkey ["VCB M", "B m"], :run_last_macro
|
23
43
|
|
24
44
|
bindkey "VC s", :easy_jump
|
45
|
+
bindkey "I alt-s", :easy_jump
|
25
46
|
bindkey "VC , m f", [:find_macro_gui, proc { vma.macro.find_macro_gui }, "Find named macro"]
|
26
47
|
bindkey "C , m n", [:gui_name_macro, proc { vma.macro.gui_name_macro }, "Name last macro"]
|
27
48
|
bindkey "C , j r", :jump_to_random
|
@@ -86,8 +107,8 @@ bindkey "B z", "center_on_current_line();call_action(:exit_browse_mode)"
|
|
86
107
|
bindkey "B enter || B return || B esc || B j || B ctrl!", :exit_browse_mode
|
87
108
|
bindkey "B s", :page_up
|
88
109
|
bindkey "B d", :page_down
|
89
|
-
bindkey "B r", proc { vma.gui.page_down(multip:0.25)}
|
90
|
-
bindkey "B e", proc { vma.gui.page_up(multip:0.25)}
|
110
|
+
bindkey "B r", proc { vma.gui.page_down(multip: 0.25) }
|
111
|
+
bindkey "B e", proc { vma.gui.page_up(multip: 0.25) }
|
91
112
|
|
92
113
|
bindkey "B i", :jump_to_start_of_buffer
|
93
114
|
bindkey "B o", :jump_to_end_of_buffer
|
@@ -128,24 +149,41 @@ default_keys = {
|
|
128
149
|
# "VC j" => "buf.move(FORWARD_LINE)",
|
129
150
|
# "VC k" => "buf.move(BACKWARD_LINE)",
|
130
151
|
|
131
|
-
"
|
132
|
-
"
|
152
|
+
"VCI pagedown" => :page_down,
|
153
|
+
"VCI pageup" => :page_up,
|
133
154
|
|
134
155
|
"I down(vma.buf.view.autocp_active)" => "vma.buf.view.autocp_select_next",
|
135
156
|
"I tab(vma.buf.view.autocp_active)" => "vma.buf.view.autocp_select_next",
|
136
157
|
"I up(vma.buf.view.autocp_active)" => "vma.buf.view.autocp_select_previous",
|
137
158
|
"I shift-tab(vma.buf.view.autocp_active)" => "vma.buf.view.autocp_select_previous",
|
138
159
|
"I enter(vma.buf.view.autocp_active)" => "vma.buf.view.autocp_select",
|
139
|
-
|
140
|
-
"I tab" =>
|
141
|
-
"I shift-tab" =>
|
142
|
-
|
160
|
+
|
161
|
+
"I tab" => "buf.insert_tab",
|
162
|
+
"I shift-tab" => "buf.unindent",
|
163
|
+
|
143
164
|
"I enter" => :insert_new_line,
|
144
165
|
|
145
|
-
"
|
146
|
-
"
|
147
|
-
"
|
148
|
-
"
|
166
|
+
"I shift-down" => "insert_select_move(BACKWARD_CHAR)",
|
167
|
+
"I shift-right" => "insert_select_move(FORWARD_CHAR)",
|
168
|
+
"I shift-down" => "insert_select_move(FORWARD_LINE)",
|
169
|
+
"I shift-up" => "insert_select_move(BACKWARD_LINE)",
|
170
|
+
"I shift-pagedown" => "insert_select_move(:pagedown)",
|
171
|
+
"I shift-pageup" => "insert_select_move(:pageup)",
|
172
|
+
|
173
|
+
"I left" => "insert_move(BACKWARD_CHAR)",
|
174
|
+
"I right" => "insert_move(FORWARD_CHAR)",
|
175
|
+
"I down" => "insert_move(FORWARD_LINE)",
|
176
|
+
"I up" => "insert_move(BACKWARD_LINE)",
|
177
|
+
"I pagedown" => "insert_move(:pagedown)",
|
178
|
+
"I pageup" => "insert_move(:pageup)",
|
179
|
+
|
180
|
+
#TODO:
|
181
|
+
"I @shift-click" => "insert_mode_shift_click(charpos)",
|
182
|
+
|
183
|
+
"VCX left" => "buf.move(BACKWARD_CHAR)",
|
184
|
+
"VCX right" => "buf.move(FORWARD_CHAR)",
|
185
|
+
"VCX down" => "buf.move(FORWARD_LINE)",
|
186
|
+
"VCX up" => "buf.move(BACKWARD_LINE)",
|
149
187
|
|
150
188
|
"VC w" => "buf.jump_word(FORWARD,WORD_START)",
|
151
189
|
"VC b" => "buf.jump_word(BACKWARD,WORD_START)",
|
@@ -192,7 +230,7 @@ default_keys = {
|
|
192
230
|
"C , d c" => "debug_dump_clipboard",
|
193
231
|
"C , d d" => "debug_dump_deltas",
|
194
232
|
"C , d m" => :kbd_dump_state,
|
195
|
-
|
233
|
+
|
196
234
|
"VC O" => "buf.jump(END_OF_LINE)",
|
197
235
|
"VC $" => "buf.jump(END_OF_LINE)",
|
198
236
|
|
@@ -209,7 +247,7 @@ default_keys = {
|
|
209
247
|
|
210
248
|
# Command mode only:
|
211
249
|
"C ctrl-r" => "buf.redo()", # TODO:???
|
212
|
-
"C v" => "buf.
|
250
|
+
"C v" => "buf.start_selection;vma.kbd.set_mode(:visual)",
|
213
251
|
"C P" => "buf.paste(BEFORE)", # TODO: implement as replace for visual mode
|
214
252
|
"C space <char>" => "buf.insert_txt(<char>)",
|
215
253
|
"C space space" => "buf.insert_txt(' ')",
|
@@ -269,7 +307,7 @@ default_keys = {
|
|
269
307
|
"C i" => "vma.kbd.set_mode(:insert)",
|
270
308
|
"C R" => "vma.kbd.set_mode(:replace)",
|
271
309
|
"C ctrl!" => "vma.kbd.set_mode(:insert)",
|
272
|
-
|
310
|
+
|
273
311
|
# Replace mode
|
274
312
|
"X esc || X ctrl!" => "vma.kbd.to_previous_mode",
|
275
313
|
"X <char>" => "buf.replace_with_char(<char>);buf.move(FORWARD_CHAR)",
|
@@ -295,6 +333,7 @@ default_keys = {
|
|
295
333
|
"CV , R" => "restart_application",
|
296
334
|
# "I ctrl!" => "vma.kbd.to_previous_mode",
|
297
335
|
"C shift!" => "buf.save",
|
336
|
+
"I ctrl-s" => "buf.save",
|
298
337
|
"I <char>" => "buf.insert_txt(<char>)",
|
299
338
|
"I esc || I ctrl!" => "vma.kbd.to_previous_mode",
|
300
339
|
|
@@ -312,7 +351,6 @@ default_keys = {
|
|
312
351
|
|
313
352
|
"I ctrl-h" => :show_autocomplete,
|
314
353
|
"I ctrl-j" => "vma.buf.view.hide_completions",
|
315
|
-
|
316
354
|
|
317
355
|
"I space" => 'buf.insert_txt(" ")',
|
318
356
|
# "I return" => 'buf.insert_new_line()',
|
@@ -320,7 +358,6 @@ default_keys = {
|
|
320
358
|
|
321
359
|
bindkey "C , i p", "generate_password_to_buf(15)"
|
322
360
|
|
323
|
-
|
324
361
|
default_keys.each { |key, value|
|
325
362
|
bindkey(key, value)
|
326
363
|
}
|
data/lib/vimamsa/langservp.rb
CHANGED
@@ -176,7 +176,9 @@ class LangSrv
|
|
176
176
|
def open_file(fp, fc = nil)
|
177
177
|
debug "open_file", 2
|
178
178
|
fc = IO.read(fp) if fc.nil?
|
179
|
-
|
179
|
+
|
180
|
+
encoded_filepath = URI.encode_www_form_component(fp)
|
181
|
+
fpuri = URI.parse("file://#{encoded_filepath}")
|
180
182
|
|
181
183
|
a = LSP::Interface::DidOpenTextDocumentParams.new(
|
182
184
|
text_document: LSP::Interface::TextDocumentItem.new(
|
data/lib/vimamsa/macro.rb
CHANGED
@@ -127,9 +127,12 @@ class Macro
|
|
127
127
|
ret = exec_action(a)
|
128
128
|
if ret == false
|
129
129
|
error "Error while running macro"
|
130
|
-
isok=false
|
130
|
+
isok = false
|
131
131
|
break
|
132
132
|
end
|
133
|
+
|
134
|
+
vma.buf.view.after_action
|
135
|
+
sleep cnf.macro.animation_delay!
|
133
136
|
end
|
134
137
|
end
|
135
138
|
@running_macro = false
|
data/lib/vimamsa/rbvma.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
|
2
|
+
# require "bundler/setup"
|
1
3
|
require "date"
|
2
4
|
require "fileutils"
|
3
5
|
|
@@ -18,9 +20,7 @@ require "vimamsa/util"
|
|
18
20
|
require "vimamsa/main"
|
19
21
|
require "vimamsa/terminal"
|
20
22
|
|
21
|
-
require "vimamsa/actions"
|
22
23
|
require "vimamsa/key_binding_tree"
|
23
|
-
require "vimamsa/key_actions"
|
24
24
|
|
25
25
|
require "vimamsa/clipboard"
|
26
26
|
|
data/lib/vimamsa/tests.rb
CHANGED
@@ -1,26 +1,26 @@
|
|
1
1
|
require "digest"
|
2
2
|
|
3
3
|
def run_tests()
|
4
|
-
tests = ["test_paste_0","test_delete_0"]
|
4
|
+
tests = ["test_paste_0", "test_delete_0"]
|
5
5
|
stats = []
|
6
6
|
for t in tests
|
7
7
|
r = eval(t)
|
8
8
|
if r == true
|
9
9
|
stats << "test #{t} OK"
|
10
10
|
else
|
11
|
-
stats <<
|
11
|
+
stats << "test #{t} FAILED"
|
12
12
|
end
|
13
13
|
end
|
14
|
-
debug "TEST RESULTS:",2
|
14
|
+
debug "TEST RESULTS:", 2
|
15
15
|
puts stats.join("\n")
|
16
16
|
puts "===================="
|
17
|
-
|
18
17
|
end
|
19
18
|
|
20
|
-
|
21
19
|
#
|
22
20
|
|
23
21
|
def test_paste_0(runmacro = true)
|
22
|
+
return
|
23
|
+
#TODO: update macro
|
24
24
|
b = create_new_buffer(file_contents = "\n", prefix = "buf", setcurrent = true)
|
25
25
|
|
26
26
|
b.insert_txt(JABBERWOCKY)
|
@@ -47,7 +47,7 @@ def test_paste_0(runmacro = true)
|
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
|
-
def macro_test(macro, correct_hex, runmacro=true)
|
50
|
+
def macro_test(macro, correct_hex, runmacro = true)
|
51
51
|
b = create_new_buffer(file_contents = "\n", prefix = "buf", setcurrent = true)
|
52
52
|
b.insert_txt(JABBERWOCKY)
|
53
53
|
b.insert_txt(LOREM_IPSUM)
|
@@ -117,6 +117,3 @@ O frabjous day! Callooh! Callay!”
|
|
117
117
|
All mimsy were the borogoves,
|
118
118
|
And the mome raths outgrabe.
|
119
119
|
"
|
120
|
-
|
121
|
-
|
122
|
-
|
data/lib/vimamsa/util.rb
CHANGED
@@ -3,11 +3,31 @@ require "open3"
|
|
3
3
|
VOWELS = %w(a e i o u)
|
4
4
|
CONSONANTS = %w(b c d f g h j k l m n p q r s t v w x y z)
|
5
5
|
|
6
|
+
def running_wayland?
|
7
|
+
sess = ENV["DESKTOP_SESSION"]
|
8
|
+
sess ||= ENV["XDG_SESSION_DESKTOP"]
|
9
|
+
sess ||= ENV["GDMSESSION"]
|
10
|
+
sess ||= ""
|
11
|
+
if sess.match(/wayland/)
|
12
|
+
return true
|
13
|
+
else
|
14
|
+
return false
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
6
18
|
def tilde_path(abspath)
|
7
19
|
userhome = File.expand_path("~/")
|
8
20
|
abspath.sub(/^#{Regexp.escape(userhome)}\//, "~/")
|
9
21
|
end
|
10
22
|
|
23
|
+
def to_camel_case(str)
|
24
|
+
words = str.split(/\W+/) # Split the input string into words
|
25
|
+
camel_case_words = words.map.with_index do |word, index|
|
26
|
+
index == 0 ? word.downcase : word.capitalize
|
27
|
+
end
|
28
|
+
camel_case_words.join
|
29
|
+
end
|
30
|
+
|
11
31
|
def generate_password(length)
|
12
32
|
password = ""
|
13
33
|
while password.size < length
|
@@ -38,13 +58,16 @@ end
|
|
38
58
|
|
39
59
|
def file_mime_type(fpath)
|
40
60
|
fpath = File.expand_path(fpath)
|
41
|
-
return
|
61
|
+
return nil if !File.readable?(fpath)
|
42
62
|
r = exec_cmd("file", "--mime-type", "--mime-encoding", fpath)
|
43
|
-
return
|
44
|
-
return
|
63
|
+
return nil if r.class != String
|
64
|
+
return nil if r.size < 2
|
45
65
|
m = r.match(".*:\s*(.*)")
|
46
|
-
|
47
|
-
|
66
|
+
b = m[1].match(/(.*);/)
|
67
|
+
c = m[1].match(/charset=(.*)/)
|
68
|
+
return nil if b.nil? or c.nil?
|
69
|
+
mimetype = b[1]
|
70
|
+
charset = c[1]
|
48
71
|
return [mimetype, charset]
|
49
72
|
end
|
50
73
|
|
@@ -177,6 +200,17 @@ end
|
|
177
200
|
# Used for image scaling after window resize
|
178
201
|
|
179
202
|
class DelayExecutioner
|
203
|
+
|
204
|
+
# Run 'callable.call' if 'wait' time elapsed from last exec call for this id
|
205
|
+
def self.exec(id:, wait:, callable:)
|
206
|
+
@@h ||= {}
|
207
|
+
h = @@h
|
208
|
+
if h[id].nil?
|
209
|
+
h[id] = DelayExecutioner.new(wait, callable)
|
210
|
+
end
|
211
|
+
h[id].run
|
212
|
+
end
|
213
|
+
|
180
214
|
def initialize(wait_time, _proc)
|
181
215
|
@wait_time = wait_time
|
182
216
|
@proc = _proc
|
@@ -198,7 +232,10 @@ class DelayExecutioner
|
|
198
232
|
end
|
199
233
|
|
200
234
|
def run()
|
235
|
+
# Reset @lastt to further delay execution until @wait_time from now
|
201
236
|
@lastt = Time.now
|
237
|
+
|
238
|
+
# If already executed after last call to run()
|
202
239
|
if @thread_running == false
|
203
240
|
@thread_running = true
|
204
241
|
start_thread
|
@@ -291,17 +328,22 @@ end
|
|
291
328
|
|
292
329
|
def is_image_file(fpath)
|
293
330
|
return false if !File.exist?(fpath)
|
294
|
-
return false if !fpath.match(/.(jpg|jpeg|png)$/i)
|
295
|
-
|
296
|
-
|
331
|
+
# return false if !fpath.match(/.(jpg|jpeg|png)$/i)
|
332
|
+
mime = file_mime_type(fpath)
|
333
|
+
if !mime.nil?
|
334
|
+
if mime[0].match(/image\//)
|
335
|
+
return true
|
336
|
+
end
|
337
|
+
end
|
338
|
+
return false
|
297
339
|
end
|
298
340
|
|
299
|
-
def is_text_file(fpath)
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
end
|
341
|
+
# def is_text_file(fpath)
|
342
|
+
# return false if !File.exist?(fpath)
|
343
|
+
# return false if !fpath.match(/.(txt|cpp|h|rb|c|php|java|py)$/i)
|
344
|
+
# #TODO: check contents of file
|
345
|
+
# return true
|
346
|
+
# end
|
305
347
|
|
306
348
|
def is_path(s)
|
307
349
|
m = s.match(/(~[a-z]*)?\/.*\//)
|
data/lib/vimamsa/version.rb
CHANGED
data/vimamsa.gemspec
CHANGED
@@ -27,16 +27,16 @@ Gem::Specification.new do |spec|
|
|
27
27
|
|
28
28
|
spec.add_runtime_dependency 'ripl', '~> 0.7.1'
|
29
29
|
spec.add_runtime_dependency 'ripl-multi_line', '~> 0.3.1'
|
30
|
-
spec.add_runtime_dependency 'gdk4', '~> 4.2.
|
31
|
-
spec.add_runtime_dependency 'gtk4', '~> 4.2.
|
30
|
+
spec.add_runtime_dependency 'gdk4', '~> 4.2.1'
|
31
|
+
spec.add_runtime_dependency 'gtk4', '~> 4.2.1'
|
32
|
+
spec.add_runtime_dependency 'gtksourceview5', '~> 4.2.1'
|
33
|
+
spec.add_runtime_dependency 'gstreamer', '~> 4.2.1'
|
32
34
|
spec.add_runtime_dependency 'rambling-trie', '~> 2.3.1'
|
33
35
|
|
34
36
|
spec.add_runtime_dependency 'differ', '~> 0.1.2'
|
35
|
-
spec.add_runtime_dependency 'gtksourceview5', '~> 4.2.0'
|
36
37
|
spec.add_runtime_dependency 'parallel', '~> 1.14' #TODO: update?
|
37
38
|
spec.add_runtime_dependency 'listen', '~> 3.4' #TODO: update?
|
38
39
|
spec.add_runtime_dependency 'language_server-protocol', '~> 3.17.0.3'
|
39
|
-
spec.add_runtime_dependency 'gstreamer', '~> 4.2.0'
|
40
40
|
|
41
41
|
spec.extensions = ["ext/vmaext/extconf.rb"]
|
42
42
|
spec.licenses = ['GPL-3.0+']
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vimamsa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sami Sieranoja
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-03-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -86,126 +86,126 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 4.2.
|
89
|
+
version: 4.2.1
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 4.2.
|
96
|
+
version: 4.2.1
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: gtk4
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 4.2.
|
103
|
+
version: 4.2.1
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 4.2.
|
110
|
+
version: 4.2.1
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: gtksourceview5
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 2.
|
117
|
+
version: 4.2.1
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 2.
|
124
|
+
version: 4.2.1
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
126
|
+
name: gstreamer
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
131
|
+
version: 4.2.1
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version:
|
138
|
+
version: 4.2.1
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
140
|
+
name: rambling-trie
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
143
|
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version:
|
145
|
+
version: 2.3.1
|
146
146
|
type: :runtime
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version:
|
152
|
+
version: 2.3.1
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
154
|
+
name: differ
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
157
|
- - "~>"
|
158
158
|
- !ruby/object:Gem::Version
|
159
|
-
version:
|
159
|
+
version: 0.1.2
|
160
160
|
type: :runtime
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
164
|
- - "~>"
|
165
165
|
- !ruby/object:Gem::Version
|
166
|
-
version:
|
166
|
+
version: 0.1.2
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
168
|
+
name: parallel
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
170
170
|
requirements:
|
171
171
|
- - "~>"
|
172
172
|
- !ruby/object:Gem::Version
|
173
|
-
version: '
|
173
|
+
version: '1.14'
|
174
174
|
type: :runtime
|
175
175
|
prerelease: false
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
178
|
- - "~>"
|
179
179
|
- !ruby/object:Gem::Version
|
180
|
-
version: '
|
180
|
+
version: '1.14'
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
|
-
name:
|
182
|
+
name: listen
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
184
184
|
requirements:
|
185
185
|
- - "~>"
|
186
186
|
- !ruby/object:Gem::Version
|
187
|
-
version: 3.
|
187
|
+
version: '3.4'
|
188
188
|
type: :runtime
|
189
189
|
prerelease: false
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
192
|
- - "~>"
|
193
193
|
- !ruby/object:Gem::Version
|
194
|
-
version: 3.
|
194
|
+
version: '3.4'
|
195
195
|
- !ruby/object:Gem::Dependency
|
196
|
-
name:
|
196
|
+
name: language_server-protocol
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|
198
198
|
requirements:
|
199
199
|
- - "~>"
|
200
200
|
- !ruby/object:Gem::Version
|
201
|
-
version:
|
201
|
+
version: 3.17.0.3
|
202
202
|
type: :runtime
|
203
203
|
prerelease: false
|
204
204
|
version_requirements: !ruby/object:Gem::Requirement
|
205
205
|
requirements:
|
206
206
|
- - "~>"
|
207
207
|
- !ruby/object:Gem::Version
|
208
|
-
version:
|
208
|
+
version: 3.17.0.3
|
209
209
|
description: Vi/Vim -inspired experimental GUI-oriented text editor written with Ruby
|
210
210
|
and GTK.
|
211
211
|
email:
|