vimamsa 0.1.6 → 0.1.9

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.
data/sheep.jpg ADDED
Binary file
data/styles/dark.xml CHANGED
@@ -136,6 +136,7 @@
136
136
  <style name="def:heading5" scale="1.1" bold="true" foreground="heading" />
137
137
  <style name="def:heading6" scale="1.0" bold="true" foreground="heading" />
138
138
 
139
+ <style name="def:bold" scale="1.5" bold="true" foreground="heading" />
139
140
 
140
141
  <!-- Language specific -->
141
142
  <style name="diff:added-line" foreground="butter2"/>
@@ -44,6 +44,6 @@
44
44
  <style name="def:heading4" scale="1.175" bold="true" foreground="heading" />
45
45
  <style name="def:heading5" scale="1.1" bold="true" foreground="heading" />
46
46
  <style name="def:heading6" scale="1.0" bold="true" foreground="heading" />
47
-
47
+ <style name="def:bold" bold="true" />
48
48
  </style-scheme>
49
49
 
data/vimamsa.gemspec CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ["lib","ext"]
22
22
 
23
- spec.add_development_dependency "bundler", "~> 1.16"
23
+ spec.add_development_dependency "bundler", "~> 2.2.33"
24
24
  spec.add_development_dependency "rake", "~> 13.0"
25
25
 
26
26
  spec.add_runtime_dependency 'rufo', '~> 0.5'
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.6
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sami Sieranoja
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-03-27 00:00:00.000000000 Z
11
+ date: 2022-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.16'
19
+ version: 2.2.33
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.16'
26
+ version: 2.2.33
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -181,6 +181,8 @@ files:
181
181
  - Rakefile
182
182
  - bin/console
183
183
  - bin/setup
184
+ - custom_example.rb
185
+ - demo.txt
184
186
  - exe/vimamsa
185
187
  - ext/vmaext/extconf.rb
186
188
  - ext/vmaext/vmaext.c
@@ -190,6 +192,8 @@ files:
190
192
  - lib/vimamsa/actions.rb
191
193
  - lib/vimamsa/buffer.rb
192
194
  - lib/vimamsa/buffer_list.rb
195
+ - lib/vimamsa/buffer_manager.rb
196
+ - lib/vimamsa/conf.rb
193
197
  - lib/vimamsa/constants.rb
194
198
  - lib/vimamsa/debug.rb
195
199
  - lib/vimamsa/easy_jump.rb
@@ -199,7 +203,7 @@ files:
199
203
  - lib/vimamsa/file_history.rb
200
204
  - lib/vimamsa/file_manager.rb
201
205
  - lib/vimamsa/gui.rb
202
- - lib/vimamsa/gui_gtk_sourceview.rb
206
+ - lib/vimamsa/gui_image.rb
203
207
  - lib/vimamsa/gui_menu.rb
204
208
  - lib/vimamsa/gui_select_window.rb
205
209
  - lib/vimamsa/gui_sourceview.rb
@@ -216,6 +220,7 @@ files:
216
220
  - lib/vimamsa/text_transforms.rb
217
221
  - lib/vimamsa/util.rb
218
222
  - lib/vimamsa/version.rb
223
+ - sheep.jpg
219
224
  - styles/134272-molokai.xml
220
225
  - styles/dark.xml
221
226
  - styles/molokai_edit.xml
@@ -224,7 +229,7 @@ homepage: https://github.com/SamiSieranoja/vimamsa
224
229
  licenses:
225
230
  - GPL-3.0+
226
231
  metadata: {}
227
- post_install_message:
232
+ post_install_message:
228
233
  rdoc_options: []
229
234
  require_paths:
230
235
  - lib
@@ -241,7 +246,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
241
246
  version: '0'
242
247
  requirements: []
243
248
  rubygems_version: 3.1.2
244
- signing_key:
249
+ signing_key:
245
250
  specification_version: 4
246
251
  summary: Vimamsa
247
252
  test_files: []
@@ -1,294 +0,0 @@
1
-
2
- class VSourceView < GtkSource::View
3
- def initialize(title = nil)
4
- # super(:toplevel)
5
- super()
6
- puts "vsource init"
7
- @last_keyval = nil
8
- @last_event = [nil, nil]
9
-
10
- signal_connect "button-press-event" do |_widget, event|
11
- if event.button == Gdk::BUTTON_PRIMARY
12
- # puts "Gdk::BUTTON_PRIMARY"
13
- false
14
- elsif event.button == Gdk::BUTTON_SECONDARY
15
- # puts "Gdk::BUTTON_SECONDARY"
16
- true
17
- else
18
- true
19
- end
20
- end
21
-
22
- signal_connect("key_press_event") do |widget, event|
23
- handle_key_event(event, :key_press_event)
24
- true
25
- end
26
-
27
- signal_connect("key_release_event") do |widget, event|
28
- handle_key_event(event, :key_release_event)
29
- true
30
- end
31
-
32
- signal_connect("move-cursor") do |widget, event|
33
- $update_cursor = true
34
- false
35
- end
36
-
37
- signal_connect "button-release-event" do |widget, event|
38
- $buffer.set_pos(buffer.cursor_position)
39
- false
40
- end
41
- @curpos_mark = nil
42
- end
43
-
44
- def handle_key_event(event, sig)
45
- if $update_cursor
46
- curpos = buffer.cursor_position
47
- puts "MOVE CURSOR: #{curpos}"
48
- buf.set_pos(curpos)
49
- $update_cursor = false
50
- end
51
- puts $view.visible_rect.inspect
52
-
53
- puts "key event"
54
- puts event
55
-
56
- key_name = event.string
57
- if event.state.control_mask?
58
- key_name = Gdk::Keyval.to_name(event.keyval)
59
- # Gdk::Keyval.to_name()
60
- end
61
-
62
- keyval_trans = {}
63
- keyval_trans[Gdk::Keyval::KEY_Control_L] = "ctrl"
64
- keyval_trans[Gdk::Keyval::KEY_Control_R] = "ctrl"
65
-
66
- keyval_trans[Gdk::Keyval::KEY_Escape] = "esc"
67
-
68
- keyval_trans[Gdk::Keyval::KEY_Return] = "enter"
69
- keyval_trans[Gdk::Keyval::KEY_ISO_Enter] = "enter"
70
- keyval_trans[Gdk::Keyval::KEY_KP_Enter] = "enter"
71
- keyval_trans[Gdk::Keyval::KEY_Alt_L] = "alt"
72
- keyval_trans[Gdk::Keyval::KEY_Alt_R] = "alt"
73
-
74
- keyval_trans[Gdk::Keyval::KEY_BackSpace] = "backspace"
75
- keyval_trans[Gdk::Keyval::KEY_KP_Page_Down] = "pagedown"
76
- keyval_trans[Gdk::Keyval::KEY_KP_Page_Up] = "pageup"
77
- keyval_trans[Gdk::Keyval::KEY_Page_Down] = "pagedown"
78
- keyval_trans[Gdk::Keyval::KEY_Page_Up] = "pageup"
79
- keyval_trans[Gdk::Keyval::KEY_Left] = "left"
80
- keyval_trans[Gdk::Keyval::KEY_Right] = "right"
81
- keyval_trans[Gdk::Keyval::KEY_Down] = "down"
82
- keyval_trans[Gdk::Keyval::KEY_Up] = "up"
83
- keyval_trans[Gdk::Keyval::KEY_space] = "space"
84
-
85
- keyval_trans[Gdk::Keyval::KEY_Shift_L] = "shift"
86
- keyval_trans[Gdk::Keyval::KEY_Shift_R] = "shift"
87
- keyval_trans[Gdk::Keyval::KEY_Tab] = "tab"
88
-
89
- key_trans = {}
90
- key_trans["\e"] = "esc"
91
- tk = keyval_trans[event.keyval]
92
- key_name = tk if !tk.nil?
93
-
94
- key_str_parts = []
95
- key_str_parts << "ctrl" if event.state.control_mask? and key_name != "ctrl"
96
- key_str_parts << "alt" if event.state.mod1_mask? and key_name != "alt"
97
-
98
- key_str_parts << key_name
99
- key_str = key_str_parts.join("-")
100
- keynfo = { :key_str => key_str, :key_name => key_name, :keyval => event.keyval }
101
- puts keynfo.inspect
102
- # $kbd.match_key_conf(key_str, nil, :key_press)
103
- # puts "key_str=#{key_str} key_"
104
-
105
- if key_str != "" # or prefixed_key_str != ""
106
- if sig == :key_release_event and event.keyval == @last_keyval
107
- $kbd.match_key_conf(key_str + "!", nil, :key_release)
108
- @last_event = [event, :key_release]
109
- elsif sig == :key_press_event
110
- $kbd.match_key_conf(key_str, nil, :key_press)
111
- @last_event = [event, key_str, :key_press]
112
- end
113
- @last_keyval = event.keyval #TODO: outside if?
114
- end
115
-
116
- handle_deltas
117
-
118
- # set_focus(5)
119
- # false
120
-
121
- end
122
-
123
- def pos_to_coord(i)
124
- b = buffer
125
- iter = b.get_iter_at(:offset => i)
126
- iterxy = get_iter_location(iter)
127
- winw = parent_window.width
128
- view_width = visible_rect.width
129
- gutter_width = winw - view_width
130
-
131
- x = iterxy.x + gutter_width
132
- y = iterxy.y
133
-
134
- # buffer_to_window_coords(Gtk::TextWindowType::TEXT, iterxy.x, iterxy.y).inspect
135
- # puts buffer_to_window_coords(Gtk::TextWindowType::TEXT, x, y).inspect
136
- (x, y) = buffer_to_window_coords(Gtk::TextWindowType::TEXT, x, y)
137
- # Ripl.start :binding => binding
138
-
139
- return [x, y]
140
- end
141
-
142
- def handle_deltas()
143
- any_change = false
144
- while d = buf.deltas.shift
145
- any_change = true
146
- pos = d[0]
147
- op = d[1]
148
- num = d[2]
149
- txt = d[3]
150
- if op == DELETE
151
- startiter = buffer.get_iter_at(:offset => pos)
152
- enditer = buffer.get_iter_at(:offset => pos + num)
153
- buffer.delete(startiter, enditer)
154
- elsif op == INSERT
155
- startiter = buffer.get_iter_at(:offset => pos)
156
- buffer.insert(startiter, txt)
157
- end
158
- end
159
- if any_change
160
- gui_set_cursor_pos($buffer.id, $buffer.pos) #TODO: only when necessary
161
- end
162
-
163
- # sanity_check #TODO
164
- end
165
-
166
- def sanity_check()
167
- a = buffer.text
168
- b = buf.to_s
169
- # puts "===================="
170
- # puts a.lines[0..10].join()
171
- # puts "===================="
172
- # puts b.lines[0..10].join()
173
- # puts "===================="
174
- if a == b
175
- puts "Buffers match"
176
- else
177
- puts "ERROR: Buffer's don't match."
178
- end
179
- end
180
-
181
- def set_cursor_pos(pos)
182
- # return
183
- itr = buffer.get_iter_at(:offset => pos)
184
- itr2 = buffer.get_iter_at(:offset => pos + 1)
185
- buffer.place_cursor(itr)
186
-
187
- # $view.signal_emit("extend-selection", Gtk::MovementStep.new(:PAGES), -1, false)
188
-
189
- within_margin = 0.075 #margin as a [0.0,0.5) fraction of screen size
190
- use_align = false
191
- xalign = 0.5 #0.0=top 1.0=bottom, 0.5=center
192
- yalign = 0.5
193
-
194
- if @curpos_mark.nil?
195
- @curpos_mark = buffer.create_mark("cursor", itr, false)
196
- else
197
- buffer.move_mark(@curpos_mark, itr)
198
- end
199
- scroll_to_mark(@curpos_mark, within_margin, use_align, xalign, yalign)
200
- $idle_scroll_to_mark = true
201
- ensure_cursor_visible
202
-
203
- # scroll_to_iter(itr, within_margin, use_align, xalign, yalign)
204
-
205
- # $view.signal_emit("extend-selection", Gtk::TextExtendSelection.new, itr,itr,itr2)
206
- # Ripl.start :binding => binding
207
- draw_cursor
208
-
209
- return true
210
- end
211
-
212
- def cursor_visible_idle_func
213
- puts "cursor_visible_idle_func"
214
- # From https://picheta.me/articles/2013/08/gtk-plus--a-method-to-guarantee-scrolling.html
215
- # vr = visible_rect
216
-
217
- # b = $view.buffer
218
- # iter = buffer.get_iter_at(:offset => buffer.cursor_position)
219
- # iterxy = get_iter_location(iter)
220
-
221
- sleep(0.01)
222
- # intr = iterxy.intersect(vr)
223
- if is_cursor_visible == false
224
- # set_cursor_pos(buffer.cursor_position)
225
-
226
- itr = buffer.get_iter_at(:offset => buffer.cursor_position)
227
-
228
- within_margin = 0.075 #margin as a [0.0,0.5) fraction of screen size
229
- use_align = false
230
- xalign = 0.5 #0.0=top 1.0=bottom, 0.5=center
231
- yalign = 0.5
232
-
233
- scroll_to_iter(itr, within_margin, use_align, xalign, yalign)
234
-
235
- # return true # Call this func again
236
- else
237
- return false # Don't call this idle func again
238
- end
239
- end
240
-
241
- def is_cursor_visible
242
- vr = visible_rect
243
- iter = buffer.get_iter_at(:offset => buffer.cursor_position)
244
- iterxy = get_iter_location(iter)
245
- iterxy.width = 1 if iterxy.width == 0
246
- iterxy.height = 1 if iterxy.height == 0
247
-
248
- intr = iterxy.intersect(vr)
249
- if intr.nil?
250
- puts iterxy.inspect
251
- puts vr.inspect
252
- # Ripl.start :binding => binding
253
-
254
- # exit!
255
- return false
256
- else
257
- return true
258
- end
259
- end
260
-
261
- def ensure_cursor_visible
262
- if is_cursor_visible == false
263
- Thread.new {
264
- sleep 0.01
265
- GLib::Idle.add(proc { cursor_visible_idle_func })
266
- }
267
- end
268
- end
269
-
270
- def draw_cursor
271
- if is_command_mode
272
- itr = buffer.get_iter_at(:offset => buf.pos)
273
- itr2 = buffer.get_iter_at(:offset => buf.pos + 1)
274
- $view.buffer.select_range(itr, itr2)
275
- elsif buf.visual_mode?
276
- puts "VISUAL MODE"
277
- (_start, _end) = buf.get_visual_mode_range2
278
- puts "#{_start}, #{_end}"
279
- itr = buffer.get_iter_at(:offset => _start)
280
- itr2 = buffer.get_iter_at(:offset => _end + 1)
281
- $view.buffer.select_range(itr, itr2)
282
- else # Insert mode
283
- itr = buffer.get_iter_at(:offset => buf.pos)
284
- $view.buffer.select_range(itr, itr)
285
- puts "INSERT MODE"
286
- end
287
- end
288
-
289
- # def quit
290
- # destroy
291
- # true
292
- # end
293
- end
294
-