vimamsa 0.1.19 → 0.1.20
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/custom_example.rb +1 -1
- data/ext/vmaext/extconf.rb +5 -0
- data/lib/vimamsa/ack.rb +7 -16
- data/lib/vimamsa/buffer.rb +10 -5
- data/lib/vimamsa/buffer_changetext.rb +1 -1
- data/lib/vimamsa/buffer_list.rb +44 -10
- data/lib/vimamsa/conf.rb +28 -60
- data/lib/vimamsa/debug.rb +1 -1
- data/lib/vimamsa/editor.rb +21 -25
- data/lib/vimamsa/file_finder.rb +78 -10
- data/lib/vimamsa/gui.rb +115 -154
- data/lib/vimamsa/gui_dialog.rb +11 -8
- data/lib/vimamsa/gui_form_generator.rb +6 -8
- data/lib/vimamsa/gui_menu.rb +12 -10
- data/lib/vimamsa/gui_select_window.rb +3 -1
- data/lib/vimamsa/gui_sourceview.rb +41 -24
- data/lib/vimamsa/key_actions.rb +16 -13
- data/lib/vimamsa/key_binding_tree.rb +0 -2
- data/lib/vimamsa/key_bindings_vimlike.rb +1 -2
- data/lib/vimamsa/langservp.rb +1 -2
- data/lib/vimamsa/text_transforms.rb +4 -1
- data/lib/vimamsa/version.rb +1 -1
- data/lib/vimamsa.rb +3 -0
- data/vimamsa.gemspec +3 -2
- metadata +16 -3
- data/.vma_project +0 -0
@@ -119,6 +119,21 @@ class VSourceView < GtkSource::View
|
|
119
119
|
end
|
120
120
|
end
|
121
121
|
|
122
|
+
def focus_out()
|
123
|
+
set_cursor_color(:inactive)
|
124
|
+
|
125
|
+
# This does not seem to work: (TODO:why?)
|
126
|
+
# self.cursor_visible = false
|
127
|
+
end
|
128
|
+
|
129
|
+
def focus_in()
|
130
|
+
set_cursor_color(@ctype)
|
131
|
+
self.cursor_visible = false
|
132
|
+
self.cursor_visible = true
|
133
|
+
self.grab_focus
|
134
|
+
end
|
135
|
+
|
136
|
+
|
122
137
|
def register_signals()
|
123
138
|
check_controllers
|
124
139
|
|
@@ -581,34 +596,29 @@ class VSourceView < GtkSource::View
|
|
581
596
|
end
|
582
597
|
|
583
598
|
def draw_cursor
|
584
|
-
# if @tt.nil?
|
585
|
-
# @tt = buffer.create_tag("font_tag")
|
586
|
-
# @tt.font = "Arial"
|
587
|
-
# end
|
588
599
|
|
589
|
-
sv = vma.gui.sw.child
|
590
|
-
return if sv.nil?
|
600
|
+
sv = vma.gui.active_window[:sw].child
|
601
|
+
return if sv.nil?
|
602
|
+
if sv != self # if we are not the current buffer
|
603
|
+
sv.draw_cursor
|
604
|
+
return
|
605
|
+
end
|
606
|
+
|
591
607
|
mode = vma.kbd.get_mode
|
592
608
|
ctype = vma.kbd.get_cursor_type
|
593
609
|
ctype = :visual if vma.buf.selection_active?
|
594
610
|
|
595
|
-
vma.gui.remove_overlay_cursor
|
596
611
|
if [:command, :replace, :browse].include?(ctype)
|
597
612
|
set_cursor_color(ctype)
|
598
613
|
|
599
|
-
|
600
|
-
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
-
|
605
|
-
|
606
|
-
|
607
|
-
# sv.reset_cursor_blink
|
608
|
-
Gtk::Settings.default.gtk_cursor_blink = false
|
609
|
-
# Gtk::Settings.default.gtk_cursor_blink_time = 8000
|
610
|
-
# vma.gui.sw.child.toggle_cursor_visible
|
611
|
-
# vma.gui.sw.child.cursor_visible = true
|
614
|
+
if !self.overwrite?
|
615
|
+
self.overwrite = true
|
616
|
+
|
617
|
+
# (Via trial and error) This combination is needed to make cursor visible:
|
618
|
+
# TODO: determine why "self.cursor_visible = true" is not enough
|
619
|
+
self.cursor_visible = false
|
620
|
+
self.cursor_visible = true
|
621
|
+
end
|
612
622
|
elsif ctype == :visual
|
613
623
|
set_cursor_color(ctype)
|
614
624
|
# debug "VISUAL MODE"
|
@@ -620,12 +630,11 @@ class VSourceView < GtkSource::View
|
|
620
630
|
buffer.select_range(itr, itr2)
|
621
631
|
elsif ctype == :insert
|
622
632
|
set_cursor_color(ctype)
|
623
|
-
|
624
|
-
# sv.cursor_visible = false
|
625
|
-
# sv.cursor_visible = true
|
633
|
+
self.overwrite = false
|
626
634
|
debug "INSERT MODE"
|
627
635
|
else # TODO
|
628
636
|
end
|
637
|
+
|
629
638
|
if [:insert, :command, :replace, :browse].include?(ctype)
|
630
639
|
# Place cursor where it already is
|
631
640
|
# Without this hack, the cursor doesn't always get drawn
|
@@ -633,5 +642,13 @@ class VSourceView < GtkSource::View
|
|
633
642
|
itr = buffer.get_iter_at(:offset => pos)
|
634
643
|
buffer.place_cursor(itr)
|
635
644
|
end
|
636
|
-
|
645
|
+
|
646
|
+
# Sometimes we lose focus and the cursor vanishes because of that
|
647
|
+
# TODO: determine why&when
|
648
|
+
if !self.has_focus?
|
649
|
+
self.grab_focus
|
650
|
+
self.cursor_visible = false
|
651
|
+
self.cursor_visible = true
|
652
|
+
end
|
653
|
+
end #end draw_cursor
|
637
654
|
end
|
data/lib/vimamsa/key_actions.rb
CHANGED
@@ -46,8 +46,9 @@ reg_act(:create_new_file, "create_new_file", "Create new file", { :group => :fil
|
|
46
46
|
reg_act(:backup_all_buffers, proc { backup_all_buffers }, "Backup all buffers", { :group => :file })
|
47
47
|
reg_act(:e_move_forward_char, "e_move_forward_char", "", { :group => [:move, :basic] })
|
48
48
|
reg_act(:e_move_backward_char, "e_move_backward_char", "", { :group => [:move, :basic] })
|
49
|
-
reg_act(:history_switch_backwards,
|
50
|
-
reg_act(:
|
49
|
+
# reg_act(:history_switch_backwards, proc{bufs.history_switch_backwards}, "", { :group => :file })
|
50
|
+
reg_act(:history_switch_backwards, proc{bufs.history_switch(-1)}, "", { :group => :file })
|
51
|
+
reg_act(:history_switch_forwards, proc{bufs.history_switch(+1)}, "", { :group => :file })
|
51
52
|
reg_act(:center_on_current_line, "center_on_current_line", "", { :group => :view })
|
52
53
|
reg_act(:run_last_macro, proc { vma.macro.run_last_macro }, "Run last recorded or executed macro", { :group => :macro })
|
53
54
|
reg_act(:jump_to_next_edit, "jump_to_next_edit", "")
|
@@ -169,11 +170,14 @@ act_list = {
|
|
169
170
|
:search_actions => { :proc => proc { vma.actions.gui_search },
|
170
171
|
:desc => "Search actions", :group => :search },
|
171
172
|
|
173
|
+
:edit_customrb => { :proc => proc { jump_to_file("~/.config/vimamsa/custom.rb") },
|
174
|
+
:desc => "Customize (edit custom.rb)", :group => :search },
|
175
|
+
|
172
176
|
:toggle_active_window => { :proc => proc { vma.gui.toggle_active_window },
|
173
|
-
:desc => "
|
177
|
+
:desc => "Switch active column in two column mode", :group => :search },
|
174
178
|
|
175
179
|
:toggle_two_column => { :proc => proc { vma.gui.toggle_two_column },
|
176
|
-
:desc => "
|
180
|
+
:desc => "Toggle two column mode", :group => :search },
|
177
181
|
|
178
182
|
:content_search => { :proc => proc { FileContentSearch.start_gui },
|
179
183
|
:desc => "Search content of files", :group => :search },
|
@@ -188,15 +192,14 @@ act_list = {
|
|
188
192
|
:desc => "Output SHA256 hex digest of curent buffer" },
|
189
193
|
|
190
194
|
:start_autocomplete => { :proc => proc { vma.buf.view.start_autocomplete },
|
191
|
-
|
192
|
-
|
193
|
-
:show_autocomplete => { :proc => proc {
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
195
|
+
:desc => "Start autocomplete" },
|
196
|
+
|
197
|
+
:show_autocomplete => { :proc => proc {
|
198
|
+
# vma.buf.view.signal_emit("show-completion")
|
199
|
+
# vma.buf.view.show_completion
|
200
|
+
vma.buf.view.show_completions
|
201
|
+
},
|
202
|
+
:desc => "Show autocomplete" },
|
200
203
|
|
201
204
|
}
|
202
205
|
|
@@ -18,8 +18,6 @@
|
|
18
18
|
# 'I ctrl-a'=> 'vma.buf.jump(BEGINNING_OF_LINE)',
|
19
19
|
#
|
20
20
|
|
21
|
-
setcnf :indent_based_on_last_line, true
|
22
|
-
setcnf :extensions_to_open, [".txt", ".h", ".c", ".cpp", ".hpp", ".rb", ".inc", ".php", ".sh", ".m", ".gd", ".js"]
|
23
21
|
|
24
22
|
class State
|
25
23
|
attr_accessor :key_name, :eval_rule, :children, :action, :label, :major_modes, :level, :cursor_type
|
@@ -18,6 +18,7 @@ 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
|
+
cnf.mode.inactive.cursor.background = "#777777"
|
21
22
|
|
22
23
|
def _insert_move(op)
|
23
24
|
if op == :pagedown
|
@@ -100,9 +101,7 @@ bindkey "VC h", :e_move_backward_char
|
|
100
101
|
bindkey "C , , .", :backup_all_buffers
|
101
102
|
bindkey "C z ", :start_browse_mode
|
102
103
|
bindkey "B h", :history_switch_backwards
|
103
|
-
# bindkey "B h", [:browse_file_backwards, proc { vma.kbd.to_previous_mode; call_action(:history_switch_backwards); }, "Browse previous file"]
|
104
104
|
bindkey "B l", :history_switch_forwards
|
105
|
-
#bindkey 'B z', :center_on_current_line
|
106
105
|
bindkey "B z", "center_on_current_line();call_action(:exit_browse_mode)"
|
107
106
|
bindkey "B enter || B return || B esc || B j || B ctrl!", :exit_browse_mode
|
108
107
|
bindkey "B s", :page_up
|
data/lib/vimamsa/langservp.rb
CHANGED
@@ -52,7 +52,7 @@ class LangSrv
|
|
52
52
|
@id = 0
|
53
53
|
|
54
54
|
wf = []
|
55
|
-
for c in
|
55
|
+
for c in cnf.workspace_folders!
|
56
56
|
wf << LSP::Interface::WorkspaceFolder.new(uri: c[:uri], name: c[:name])
|
57
57
|
end
|
58
58
|
debug "WORKSPACE FOLDERS", 2
|
@@ -157,7 +157,6 @@ class LangSrv
|
|
157
157
|
@writer.write(id: id, params: a, method: "textDocument/definition")
|
158
158
|
r = wait_for_response(id)
|
159
159
|
return nil if r.nil?
|
160
|
-
# Ripl.start :binding => binding
|
161
160
|
pp r
|
162
161
|
line = HSafe.new(r)[:result][0][:range][:start][:line].val
|
163
162
|
uri = HSafe.new(r)[:result][0][:uri].val
|
@@ -30,5 +30,8 @@ Converter.new(lambda { |x|
|
|
30
30
|
x + "\n" + nums.join("+") + "=#{sum}"
|
31
31
|
}, :lambda, :sum_of_numbers)
|
32
32
|
|
33
|
-
|
33
|
+
Converter.new(lambda { |x| x.scan(/[\w\.]+@[\w\.]+/).join("\n") }, :lambda, :get_emails)
|
34
|
+
|
35
|
+
# Eval selection as ruby code
|
36
|
+
Converter.new(lambda { |x| b = "eval failed"; begin; b = eval(x, TOPLEVEL_BINDING); rescue; end; "#{x}\n#{b}\n" }, :lambda, :eval)
|
34
37
|
|
data/lib/vimamsa/version.rb
CHANGED
data/lib/vimamsa.rb
CHANGED
data/vimamsa.gemspec
CHANGED
@@ -16,6 +16,8 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
17
17
|
f.match(%r{^(refcode|spec|features)/})
|
18
18
|
end
|
19
|
+
# spec.files = Dir["{ext}/**/*"]
|
20
|
+
|
19
21
|
spec.bindir = "exe"
|
20
22
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
23
|
spec.require_paths = ["lib","ext"]
|
@@ -36,10 +38,9 @@ Gem::Specification.new do |spec|
|
|
36
38
|
spec.add_runtime_dependency 'differ', '~> 0.1.2'
|
37
39
|
spec.add_runtime_dependency 'parallel', '~> 1.14' #TODO: update?
|
38
40
|
spec.add_runtime_dependency 'listen', '~> 3.4' #TODO: update?
|
41
|
+
spec.add_runtime_dependency 'StrIdx', '~> 0.1.1'
|
39
42
|
spec.add_runtime_dependency 'language_server-protocol', '~> 3.17.0.3'
|
40
43
|
|
41
44
|
spec.extensions = ["ext/vmaext/extconf.rb"]
|
42
45
|
spec.licenses = ['GPL-3.0+']
|
43
|
-
# FileList["ext/**/extconf.rb"]
|
44
|
-
|
45
46
|
end
|
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.20
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sami Sieranoja
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-05-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -192,6 +192,20 @@ dependencies:
|
|
192
192
|
- - "~>"
|
193
193
|
- !ruby/object:Gem::Version
|
194
194
|
version: '3.4'
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: StrIdx
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - "~>"
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: 0.1.1
|
202
|
+
type: :runtime
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - "~>"
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: 0.1.1
|
195
209
|
- !ruby/object:Gem::Dependency
|
196
210
|
name: language_server-protocol
|
197
211
|
requirement: !ruby/object:Gem::Requirement
|
@@ -217,7 +231,6 @@ extensions:
|
|
217
231
|
extra_rdoc_files: []
|
218
232
|
files:
|
219
233
|
- ".gitignore"
|
220
|
-
- ".vma_project"
|
221
234
|
- Gemfile
|
222
235
|
- README.md
|
223
236
|
- Rakefile
|
data/.vma_project
DELETED
File without changes
|