vimamsa 0.1.14 → 0.1.16
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/custom_example.rb +9 -2
- data/lib/vimamsa/actions.rb +1 -2
- data/lib/vimamsa/buffer.rb +79 -31
- data/lib/vimamsa/buffer_changetext.rb +18 -1
- data/lib/vimamsa/buffer_list.rb +126 -139
- data/lib/vimamsa/buffer_manager.rb +34 -23
- data/lib/vimamsa/clipboard.rb +1 -0
- data/lib/vimamsa/conf.rb +6 -0
- data/lib/vimamsa/constants.rb +0 -10
- data/lib/vimamsa/debug.rb +5 -0
- data/lib/vimamsa/editor.rb +17 -7
- data/lib/vimamsa/file_history.rb +0 -8
- data/lib/vimamsa/file_manager.rb +6 -3
- data/lib/vimamsa/gui.rb +105 -55
- data/lib/vimamsa/gui_dialog.rb +1 -1
- data/lib/vimamsa/gui_menu.rb +7 -1
- data/lib/vimamsa/gui_sourceview.rb +58 -18
- data/lib/vimamsa/gui_sourceview_autocomplete.rb +141 -0
- data/lib/vimamsa/gui_text.rb +32 -2
- data/lib/vimamsa/hyper_plain_text.rb +11 -0
- data/lib/vimamsa/key_actions.rb +29 -10
- data/lib/vimamsa/key_binding_tree.rb +84 -14
- data/lib/vimamsa/key_bindings_vimlike.rb +44 -23
- data/lib/vimamsa/langservp.rb +23 -3
- data/lib/vimamsa/main.rb +4 -0
- data/lib/vimamsa/rbvma.rb +2 -0
- data/lib/vimamsa/search_replace.rb +35 -27
- data/lib/vimamsa/terminal.rb +12 -0
- data/lib/vimamsa/util.rb +40 -2
- data/lib/vimamsa/version.rb +1 -1
- data/vimamsa.gemspec +3 -2
- metadata +8 -7
@@ -1,9 +1,3 @@
|
|
1
|
-
class Grep
|
2
|
-
attr_accessor :history
|
3
|
-
|
4
|
-
def initialize()
|
5
|
-
end
|
6
|
-
end
|
7
1
|
|
8
2
|
class FileSelector
|
9
3
|
def initialize()
|
@@ -85,9 +79,14 @@ class Grep
|
|
85
79
|
end
|
86
80
|
vma.kbd.add_minor_mode("bmgr", :buf_mgr, :command)
|
87
81
|
reg_act(:grep_buffer, proc { Grep.new.run }, "Grep current buffer")
|
82
|
+
reg_act(:grep_refresh, proc {
|
83
|
+
if vma.buf.module.class == Grep
|
84
|
+
vma.buf.module.refresh
|
85
|
+
end
|
86
|
+
}, "Refresh current Grep buffer")
|
88
87
|
|
89
88
|
bindkey "C , g", :grep_buffer
|
90
|
-
|
89
|
+
bindkey "grep ctrl-r", :grep_refresh
|
91
90
|
end
|
92
91
|
|
93
92
|
def apply_changes()
|
@@ -114,45 +113,54 @@ class Grep
|
|
114
113
|
@line_to_id = {}
|
115
114
|
end
|
116
115
|
|
117
|
-
def
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
res_str = ""
|
116
|
+
def refresh
|
117
|
+
set_buf_contents
|
118
|
+
end
|
119
|
+
|
120
|
+
def set_buf_contents()
|
121
|
+
lines = @orig_buf.split("\n")
|
124
122
|
|
125
|
-
hlparts = []
|
126
123
|
@grep_matches = []
|
124
|
+
|
125
|
+
res_str = ""
|
127
126
|
lines.each_with_index { |l, i|
|
128
|
-
if r.match(l)
|
127
|
+
if @r.match(l)
|
129
128
|
res_str << "#{i + 1}:"
|
130
129
|
# ind = scan_indexes(l, r)
|
131
130
|
res_str << "#{l}\n"
|
132
131
|
@grep_matches << i + 1 # Lines start from index 1
|
133
132
|
end
|
134
133
|
}
|
135
|
-
|
134
|
+
|
135
|
+
@buf.set_content(res_str)
|
136
|
+
|
137
|
+
Gui.highlight_match(@buf, @search_str, color: cnf.match.highlight.color!)
|
138
|
+
end
|
139
|
+
|
140
|
+
def callback(search_str, b = nil)
|
141
|
+
debug "grep_cur_buffer(search_str)"
|
142
|
+
@r = Regexp.new(Regexp.escape(search_str), Regexp::IGNORECASE)
|
143
|
+
fpath = ""
|
144
|
+
fpath = vma.buf.pathname.expand_path.to_s + ":" if vma.buf.pathname
|
145
|
+
|
146
|
+
@search_str = search_str
|
136
147
|
@orig_buf = vma.buf
|
137
|
-
|
138
|
-
vbuf = vma.gui.view.buffer
|
148
|
+
@buf = create_new_buffer("", "grep")
|
139
149
|
|
140
|
-
|
141
|
-
|
142
|
-
b.module = self
|
150
|
+
@buf.default_mode = :grep
|
151
|
+
@buf.module = self
|
143
152
|
|
144
|
-
vma.kbd.set_mode(:grep)
|
145
|
-
|
146
|
-
b.line_action_handler = proc { |lineno|
|
153
|
+
vma.kbd.set_mode(:grep)
|
154
|
+
@buf.line_action_handler = proc { |lineno|
|
147
155
|
debug "GREP HANDLER:#{lineno}"
|
148
156
|
jumpto = @grep_matches[lineno]
|
149
157
|
if jumpto.class == Integer
|
150
|
-
# vma.buffers.set_current_buffer($grep_bufid, update_history = true)
|
151
|
-
# buf.jump_to_line(jumpto)
|
152
158
|
vma.buffers.set_current_buffer_by_id(@orig_buf.id)
|
153
159
|
@orig_buf.jump_to_line(jumpto)
|
154
160
|
end
|
155
161
|
}
|
162
|
+
|
163
|
+
set_buf_contents
|
156
164
|
end
|
157
165
|
|
158
166
|
def run()
|
data/lib/vimamsa/terminal.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
|
1
2
|
def exec_in_terminal(cmd, autoclose = false)
|
2
3
|
# debug "CMD:#{cmd}"
|
3
4
|
|
@@ -19,4 +20,15 @@ def exec_in_terminal(cmd, autoclose = false)
|
|
19
20
|
fork { exec "gnome-terminal", "--tab", "--", "bash", "-i", $initf.path, "-c", "exec bash" }
|
20
21
|
end
|
21
22
|
|
23
|
+
def command_to_buf_callback(cmd)
|
24
|
+
require "open3"
|
25
|
+
stdout, stderr, status = Open3.capture3(cmd)
|
26
|
+
b = create_new_buffer(stdout, cmd)
|
27
|
+
end
|
28
|
+
|
22
29
|
|
30
|
+
load "terminal_extra.rb" if File.exist?("terminal_extra.rb")
|
31
|
+
def command_to_buf
|
32
|
+
callback = method("command_to_buf_callback")
|
33
|
+
gui_one_input_action("Execute command in shell, output to buffer", "Command:", "Execute", callback)
|
34
|
+
end
|
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 }
|
@@ -23,8 +52,17 @@ def file_is_text_file(fpath)
|
|
23
52
|
debug "file_is_text_file(#{fpath})"
|
24
53
|
fpath = File.expand_path(fpath)
|
25
54
|
return false if !File.exist?(fpath)
|
55
|
+
return false if !File.file?(fpath)
|
56
|
+
|
57
|
+
if File.size(fpath) < 1000e3 #smaler than 1MB
|
58
|
+
str = IO.read(fpath)
|
59
|
+
str.force_encoding("UTF-8")
|
60
|
+
debug "Small file with valid utf-8"
|
61
|
+
return true if str.valid_encoding?
|
62
|
+
end
|
63
|
+
|
64
|
+
#TODO: not sure if needed
|
26
65
|
r = exec_cmd("file", fpath)
|
27
|
-
debug "DEBUG:#{r}"
|
28
66
|
return true if r.match(/UTF-8.*text/)
|
29
67
|
return true if r.match(/ASCII.*text/)
|
30
68
|
return false
|
@@ -101,7 +139,7 @@ class HSafe
|
|
101
139
|
hh = @h
|
102
140
|
while !b.empty?
|
103
141
|
x = b.pop
|
104
|
-
|
142
|
+
debug "x=#{x}"
|
105
143
|
pp b
|
106
144
|
ok = false
|
107
145
|
if hh.class == Hash or hh.class == Array
|
data/lib/vimamsa/version.rb
CHANGED
data/vimamsa.gemspec
CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.require_paths = ["lib","ext"]
|
22
22
|
|
23
23
|
spec.add_development_dependency "bundler", "~> 2.4.21"
|
24
|
-
spec.add_development_dependency "rake", "~> 13.0"
|
24
|
+
spec.add_development_dependency "rake", "~> 13.1.0"
|
25
25
|
|
26
26
|
spec.add_runtime_dependency 'rufo', '~> 0.16.2'
|
27
27
|
|
@@ -29,7 +29,8 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.add_runtime_dependency 'ripl-multi_line', '~> 0.3.1'
|
30
30
|
spec.add_runtime_dependency 'gdk4', '~> 4.2.0'
|
31
31
|
spec.add_runtime_dependency 'gtk4', '~> 4.2.0'
|
32
|
-
spec.add_runtime_dependency '
|
32
|
+
spec.add_runtime_dependency 'rambling-trie', '~> 2.3.1'
|
33
|
+
|
33
34
|
spec.add_runtime_dependency 'differ', '~> 0.1.2'
|
34
35
|
spec.add_runtime_dependency 'gtksourceview5', '~> 4.2.0'
|
35
36
|
spec.add_runtime_dependency 'parallel', '~> 1.14' #TODO: update?
|
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
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 13.1.0
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 13.1.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rufo
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -109,19 +109,19 @@ dependencies:
|
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: 4.2.0
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: rambling-trie
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
117
|
+
version: 2.3.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:
|
124
|
+
version: 2.3.1
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: differ
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -255,6 +255,7 @@ files:
|
|
255
255
|
- lib/vimamsa/gui_menu.rb
|
256
256
|
- lib/vimamsa/gui_select_window.rb
|
257
257
|
- lib/vimamsa/gui_sourceview.rb
|
258
|
+
- lib/vimamsa/gui_sourceview_autocomplete.rb
|
258
259
|
- lib/vimamsa/gui_text.rb
|
259
260
|
- lib/vimamsa/hook.rb
|
260
261
|
- lib/vimamsa/hyper_plain_text.rb
|