vimamsa 0.1.15 → 0.1.16
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/vimamsa/buffer.rb +2 -2
- data/lib/vimamsa/buffer_list.rb +1 -1
- data/lib/vimamsa/buffer_manager.rb +25 -12
- data/lib/vimamsa/gui_menu.rb +2 -0
- data/lib/vimamsa/gui_sourceview.rb +21 -2
- data/lib/vimamsa/key_binding_tree.rb +2 -2
- data/lib/vimamsa/key_bindings_vimlike.rb +14 -3
- data/lib/vimamsa/util.rb +29 -0
- data/lib/vimamsa/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4603a715f3fd3b549cc38a9744d93617b3a87ba3d95268f77ed2c98c2c04643d
|
4
|
+
data.tar.gz: 26e82f3a6564a78dcd7188a69037f97bae3fb53c43be807560facfab8e70dd51
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1f05aad90407dfdd0e9c310f08f5e79274a5901f714d63e353e7291f25c7f4dba3d402163f338cebf01fef4f8fae07522f85a58d62e76086661007f24b14a0bd
|
7
|
+
data.tar.gz: f503976439de2a311778b48a427354fc21a1b42434eb6a0bcfa5e3c00144fc3508abe029a058249c2b433e9f41f983679f44927ae095b1ec4a4eb36fafdbfe93
|
data/lib/vimamsa/buffer.rb
CHANGED
@@ -93,8 +93,9 @@ class Buffer < String
|
|
93
93
|
end
|
94
94
|
|
95
95
|
#Check if this buffer is attached to any windows
|
96
|
-
def is_active
|
96
|
+
def is_active?
|
97
97
|
for k in vma.gui.windows.keys
|
98
|
+
next if vma.gui.windows[k][:sw].child.nil?
|
98
99
|
return true if vma.gui.windows[k][:sw].child.bufo == self
|
99
100
|
end
|
100
101
|
return false
|
@@ -1373,7 +1374,6 @@ class Buffer < String
|
|
1373
1374
|
|
1374
1375
|
def end_visual_mode()
|
1375
1376
|
debug "end_visual_mode, #{vma.kbd.get_mode}, #{visual_mode?}", 2
|
1376
|
-
vma.kbd.dump_state
|
1377
1377
|
return if vma.kbd.get_mode != :visual
|
1378
1378
|
if !visual_mode?
|
1379
1379
|
debug "end_visual_mode, !visual_mode?"
|
data/lib/vimamsa/buffer_list.rb
CHANGED
@@ -34,7 +34,7 @@ class BufferManager
|
|
34
34
|
def close_selected
|
35
35
|
idx = buf_of_current_line()
|
36
36
|
r = @buf.current_line_range
|
37
|
-
Gui.hilight_range(@buf,r, color:"#666666ff")
|
37
|
+
Gui.hilight_range(@buf, r, color: "#666666ff")
|
38
38
|
if idx.nil?
|
39
39
|
message("buf already closed")
|
40
40
|
return
|
@@ -68,21 +68,34 @@ class BufferManager
|
|
68
68
|
s << "\n"
|
69
69
|
i = 0
|
70
70
|
jump_to_line = 0
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
71
|
+
lastdir = nil
|
72
|
+
bh = {}
|
73
|
+
for b in vma.buffers.list
|
74
|
+
if !b.fname.nil?
|
75
|
+
bname = File.basename(b.fname)
|
76
|
+
dname = File.dirname(b.dirname)
|
77
|
+
else
|
78
|
+
bname = b.list_str
|
79
|
+
dname = "*"
|
75
80
|
end
|
76
|
-
|
77
|
-
|
78
|
-
|
81
|
+
bh[dname] ||= []
|
82
|
+
bh[dname] << {bname: bname, buf: b}
|
83
|
+
end
|
84
|
+
for k in bh.keys.sort
|
85
|
+
d = tilde_path(k)
|
86
|
+
s << "📂#{d}:\n" # Note: to close?: 📁
|
79
87
|
i += 1
|
88
|
+
for bnfo in bh[k].sort_by{|x|x[:bname]}
|
89
|
+
s << "╰─#{bnfo[:bname]}\n"
|
90
|
+
|
91
|
+
@line_to_id[i] = bnfo[:buf].id
|
92
|
+
jump_to_line = i if bnfo[:buf].id == vma.buf.id # current file
|
93
|
+
i += 1
|
94
|
+
end
|
80
95
|
end
|
81
|
-
|
82
|
-
|
83
|
-
|
96
|
+
|
84
97
|
if @buf.nil?
|
85
|
-
@buf = create_new_buffer(s,"bufmgr")
|
98
|
+
@buf = create_new_buffer(s, "bufmgr")
|
86
99
|
@buf.default_mode = :buf_mgr
|
87
100
|
@buf.module = self
|
88
101
|
@buf.active_kbd_mode = :buf_mgr
|
data/lib/vimamsa/gui_menu.rb
CHANGED
@@ -49,6 +49,8 @@ module Vimamsa
|
|
49
49
|
|
50
50
|
add_to_menu "Actions.debug.dumpkbd", { :label => "Dump kbd state", :action => :kbd_dump_state }
|
51
51
|
|
52
|
+
|
53
|
+
add_to_menu "View.BufferManager", { :label => "Show open files", :action => :start_buf_manager }
|
52
54
|
add_to_menu "View.TwoColumn", { :label => "Toggle two column mode", :action => :toggle_two_column }
|
53
55
|
|
54
56
|
|
@@ -148,7 +148,7 @@ class VSourceView < GtkSource::View
|
|
148
148
|
@cnt_drag.signal_connect "drag-end" do |gesture, offsetx, offsety|
|
149
149
|
debug "drag-end", 2
|
150
150
|
if offsetx.abs < 5 and offsety.abs < 5
|
151
|
-
debug "Not enough drag",2
|
151
|
+
debug "Not enough drag", 2
|
152
152
|
@range_start = nil
|
153
153
|
elsif !buf.visual_mode? and vma.kbd.get_scope != :editor
|
154
154
|
# Can't transition from editor wide mode to buffer specific mode
|
@@ -523,6 +523,22 @@ class VSourceView < GtkSource::View
|
|
523
523
|
end
|
524
524
|
end
|
525
525
|
|
526
|
+
def set_cursor_color(ctype)
|
527
|
+
if @ctype != ctype
|
528
|
+
bg = $confh[:mode][ctype][:cursor][:background]
|
529
|
+
if bg.class == String
|
530
|
+
if !@cursor_prov.nil?
|
531
|
+
self.style_context.remove_provider(@cursor_prov)
|
532
|
+
end
|
533
|
+
prov = Gtk::CssProvider.new
|
534
|
+
prov.load(data: ".view text selection { background-color: #{bg}; color: #ffffff; }")
|
535
|
+
self.style_context.add_provider(prov)
|
536
|
+
@cursor_prov = prov
|
537
|
+
end
|
538
|
+
@ctype == ctype
|
539
|
+
end
|
540
|
+
end
|
541
|
+
|
526
542
|
def draw_cursor
|
527
543
|
# if @tt.nil?
|
528
544
|
# @tt = buffer.create_tag("font_tag")
|
@@ -533,7 +549,8 @@ class VSourceView < GtkSource::View
|
|
533
549
|
ctype = vma.kbd.get_cursor_type
|
534
550
|
delete_cursorchar
|
535
551
|
vma.gui.remove_overlay_cursor
|
536
|
-
if
|
552
|
+
if [:command, :replace, :browse].include?(ctype)
|
553
|
+
set_cursor_color(ctype)
|
537
554
|
if @bufo[@bufo.pos] == "\n"
|
538
555
|
# If we are at end of line, it's not possible to draw the cursor by making a selection. I tried to do this by drawing an overlay, but that generates issues. If moving the cursor causes the ScrolledWindow to be scrolled, these errors randomly appear and the whole view shows blank:
|
539
556
|
# (ruby:21016): Gtk-WARNING **: 19:52:23.181: Trying to snapshot GtkSourceView 0x55a97524c8c0 without a current allocation
|
@@ -559,7 +576,9 @@ class VSourceView < GtkSource::View
|
|
559
576
|
buffer.select_range(itr, itr2)
|
560
577
|
end
|
561
578
|
# elsif @bufo.visual_mode?
|
579
|
+
|
562
580
|
elsif ctype == :visual
|
581
|
+
set_cursor_color(ctype)
|
563
582
|
# debug "VISUAL MODE"
|
564
583
|
(_start, _end) = @bufo.get_visual_mode_range2
|
565
584
|
# debug "#{_start}, #{_end}"
|
@@ -112,11 +112,11 @@ class KeyBindingTree
|
|
112
112
|
|
113
113
|
def to_previous_mode()
|
114
114
|
debug "to_previous_mode",2
|
115
|
-
|
115
|
+
debug @default_mode_stack
|
116
116
|
if @default_mode_stack.size > 1
|
117
117
|
@default_mode_stack.pop
|
118
118
|
end
|
119
|
-
|
119
|
+
debug @default_mode_stack
|
120
120
|
__set_mode(@default_mode_stack[-1])
|
121
121
|
end
|
122
122
|
|
@@ -4,13 +4,21 @@ vma.kbd.add_mode("V", :visual, :visual)
|
|
4
4
|
vma.kbd.add_mode("M", :minibuffer) #TODO: needed?
|
5
5
|
vma.kbd.add_mode("R", :readchar)
|
6
6
|
vma.kbd.add_minor_mode("audio", :audio, :command)
|
7
|
-
vma.kbd.add_mode("B", :browse, :
|
8
|
-
vma.kbd.add_mode("X", :replace, :
|
7
|
+
vma.kbd.add_mode("B", :browse, :browse, scope: :editor)
|
8
|
+
vma.kbd.add_mode("X", :replace, :replace, name: "Replace")
|
9
9
|
vma.kbd.set_default_mode(:command)
|
10
10
|
vma.kbd.__set_mode(:command) #TODO:needed?
|
11
|
+
# cnf.mode.command.cursor.background = "#fc6f03"
|
12
|
+
cnf.mode.command.cursor.background = "#05c5a0"
|
13
|
+
cnf.mode.default.cursor.background = "#03fcca"
|
14
|
+
# cnf.mode.visual.cursor.background = "#10bd8e"
|
15
|
+
# cnf.mode.visual.cursor.background = "#e95420"
|
16
|
+
# cnf.mode.visual.cursor.background = "#cb3804"
|
17
|
+
cnf.mode.visual.cursor.background = "#bc6040"
|
18
|
+
cnf.mode.replace.cursor.background = "#fc0331"
|
19
|
+
cnf.mode.browse.cursor.background = "#f803fc"
|
11
20
|
# vma.kbd.show_state_trail
|
12
21
|
|
13
|
-
|
14
22
|
bindkey ["VCB M", "B m"], :run_last_macro
|
15
23
|
|
16
24
|
bindkey "VC s", :easy_jump
|
@@ -310,6 +318,9 @@ default_keys = {
|
|
310
318
|
# "I return" => 'buf.insert_new_line()',
|
311
319
|
}
|
312
320
|
|
321
|
+
bindkey "C , i p", "generate_password_to_buf(15)"
|
322
|
+
|
323
|
+
|
313
324
|
default_keys.each { |key, value|
|
314
325
|
bindkey(key, value)
|
315
326
|
}
|
data/lib/vimamsa/util.rb
CHANGED
@@ -1,5 +1,34 @@
|
|
1
1
|
require "open3"
|
2
2
|
|
3
|
+
VOWELS = %w(a e i o u)
|
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
|
+
|
6
|
+
def tilde_path(abspath)
|
7
|
+
userhome = File.expand_path("~/")
|
8
|
+
abspath.sub(/^#{Regexp.escape(userhome)}\//, "~/")
|
9
|
+
end
|
10
|
+
|
11
|
+
def generate_password(length)
|
12
|
+
password = ""
|
13
|
+
while password.size < length
|
14
|
+
i = password.size + 1
|
15
|
+
if i.even?
|
16
|
+
char = CONSONANTS.sample
|
17
|
+
else
|
18
|
+
char = VOWELS.sample
|
19
|
+
end
|
20
|
+
char.upcase! if rand < 0.2
|
21
|
+
password << char
|
22
|
+
password << (1..10).to_a.sample.to_s if rand < 0.25
|
23
|
+
end
|
24
|
+
password
|
25
|
+
end
|
26
|
+
|
27
|
+
def generate_password_to_buf(length)
|
28
|
+
passw = generate_password(length)
|
29
|
+
vma.buf.insert_txt(passw)
|
30
|
+
end
|
31
|
+
|
3
32
|
# Get all indexes for start of matching regexp
|
4
33
|
def scan_indexes(txt, regex)
|
5
34
|
# indexes = txt.enum_for(:scan, regex).map { Regexp.last_match.begin(0) + 1 }
|
data/lib/vimamsa/version.rb
CHANGED
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.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sami Sieranoja
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-11-
|
11
|
+
date: 2023-11-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|