textbringer 1.3.0 → 1.4.0
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/.github/workflows/macos.yml +10 -3
- data/.github/workflows/ubuntu.yml +5 -4
- data/.github/workflows/windows.yml +5 -3
- data/CHANGES.md +3 -0
- data/README.ja.md +2 -1
- data/README.md +3 -2
- data/exe/txtb +1 -0
- data/lib/textbringer/buffer.rb +44 -47
- data/lib/textbringer/commands/clipboard.rb +1 -2
- data/lib/textbringer/commands/help.rb +1 -1
- data/lib/textbringer/commands/misc.rb +3 -0
- data/lib/textbringer/input_methods/t_code_input_method.rb +5 -1
- data/lib/textbringer/keymap.rb +1 -0
- data/lib/textbringer/utils.rb +14 -1
- data/lib/textbringer/version.rb +1 -1
- data/lib/textbringer/window.rb +0 -1
- data/textbringer.gemspec +3 -1
- metadata +32 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f10c30433280a10e91f251f04f68ddd5b2cf02347de8712a9828b4488d49f7b4
|
4
|
+
data.tar.gz: fced66d8271da69b0bc8425c00f8dade0e8f4ee842bd6454d3584455a4d9cc9d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b69a7f035f1d502845d50ac578e25a02546207e0a7c3bc84ffd45c7bb1b2f8f58e833540c3b1f01e617923e1f74dc1fdd26ea4e1f7ad28d476ba198585ea05be
|
7
|
+
data.tar.gz: 98363d4a9d74c8b8ff785e244f07d982214a5fd40029c5cf634c48d6e214d084d4939bf58b5bd97008051771dd96522bc78e2bb981dcca611eeafc78d6713101
|
data/.github/workflows/macos.yml
CHANGED
@@ -3,14 +3,21 @@ name: macos
|
|
3
3
|
on: [push]
|
4
4
|
|
5
5
|
jobs:
|
6
|
-
|
6
|
+
test:
|
7
7
|
runs-on: macos-latest
|
8
|
+
strategy:
|
9
|
+
matrix:
|
10
|
+
ruby: [ head, 3.3 ]
|
8
11
|
timeout-minutes: 10
|
12
|
+
env:
|
13
|
+
RUBYOPT: --enable-frozen-string-literal --debug-frozen-string-literal
|
9
14
|
steps:
|
10
|
-
- uses: actions/checkout@
|
15
|
+
- uses: actions/checkout@v4
|
16
|
+
- uses: ruby/setup-ruby@v1
|
17
|
+
with:
|
18
|
+
ruby-version: ${{ matrix.ruby }}
|
11
19
|
- name: Install dependencies
|
12
20
|
run: |
|
13
|
-
gem install bundler --no-document
|
14
21
|
bundle install
|
15
22
|
- name: Run test
|
16
23
|
run: bundle exec rake test
|
@@ -4,20 +4,21 @@ on: [push]
|
|
4
4
|
|
5
5
|
jobs:
|
6
6
|
test:
|
7
|
+
runs-on: ubuntu-latest
|
7
8
|
strategy:
|
8
9
|
matrix:
|
9
|
-
ruby: [ head, 3.
|
10
|
-
runs-on: ubuntu-latest
|
10
|
+
ruby: [ head, 3.3, 3.2, 3.1 ]
|
11
11
|
timeout-minutes: 10
|
12
|
+
env:
|
13
|
+
RUBYOPT: --enable-frozen-string-literal --debug-frozen-string-literal
|
12
14
|
steps:
|
13
|
-
- uses: actions/checkout@
|
15
|
+
- uses: actions/checkout@v4
|
14
16
|
- uses: ruby/setup-ruby@v1
|
15
17
|
with:
|
16
18
|
ruby-version: ${{ matrix.ruby }}
|
17
19
|
- name: Install dependencies
|
18
20
|
run: |
|
19
21
|
sudo apt install libncursesw5-dev
|
20
|
-
gem install bundler --no-document
|
21
22
|
bundle install
|
22
23
|
- name: Run test
|
23
24
|
run: xvfb-run bundle exec rake test
|
@@ -3,14 +3,16 @@ name: windows
|
|
3
3
|
on: [push]
|
4
4
|
|
5
5
|
jobs:
|
6
|
-
|
6
|
+
test:
|
7
7
|
runs-on: windows-latest
|
8
8
|
strategy:
|
9
9
|
matrix:
|
10
|
-
ruby: [ 'mingw', 'mswin', '3.
|
10
|
+
ruby: [ 'mingw', 'mswin', '3.3' ]
|
11
11
|
timeout-minutes: 10
|
12
|
+
env:
|
13
|
+
RUBYOPT: --enable-frozen-string-literal --debug-frozen-string-literal
|
12
14
|
steps:
|
13
|
-
- uses: actions/checkout@
|
15
|
+
- uses: actions/checkout@v4
|
14
16
|
- name: Set up Ruby
|
15
17
|
uses: ruby/setup-ruby@v1
|
16
18
|
with:
|
data/CHANGES.md
CHANGED
data/README.ja.md
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# 
|
2
2
|
|
3
|
+
[](https://latestver.org/)
|
3
4
|
[](https://badge.fury.io/rb/textbringer)
|
4
5
|
[](https://github.com/shugo/textbringer/actions?query=workflow%3Aubuntu)
|
5
6
|
[](https://github.com/shugo/textbringer/actions?query=workflow%3Awindows)
|
@@ -92,7 +93,7 @@ xterm、 mlterm、screenにはそれぞれ独自の設定項目があります
|
|
92
93
|
|
93
94
|
## プラグイン
|
94
95
|
|
95
|
-
* [
|
96
|
+
* [Mournmail](https://github.com/shugo/mournmail): 電子メールクライアント
|
96
97
|
* [MedicineShield](https://github.com/shugo/medicine_shield): Mastodonクライアント
|
97
98
|
* [textbringer-presentation](https://github.com/shugo/textbringer-presentation): プレゼンテーションツール
|
98
99
|
* [textbringer-ghost_text](https://github.com/shugo/textbringer-ghost_text): [GhostText](https://github.com/fregante/GhostText)プラグイン
|
data/README.md
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
# 
|
2
2
|
|
3
|
+
[](https://latestver.org/)
|
3
4
|
[](https://badge.fury.io/rb/textbringer)
|
4
5
|
[](https://github.com/shugo/textbringer/actions?query=workflow%3Aubuntu)
|
5
6
|
[](https://github.com/shugo/textbringer/actions?query=workflow%3Awindows)
|
6
7
|
[](https://github.com/shugo/textbringer/actions?query=workflow%3Amacos)
|
7
8
|
|
8
|
-
* [
|
9
|
+
* [Japanese version](README.ja.md)
|
9
10
|
|
10
11
|
Textbringer is an Emacs-like text editor written in Ruby.
|
11
12
|
It is extensible by Ruby instead of Lisp.
|
@@ -97,7 +98,7 @@ Add the following line to ~/.screenrc.
|
|
97
98
|
|
98
99
|
## Plugins
|
99
100
|
|
100
|
-
* [
|
101
|
+
* [Mournmail](https://github.com/shugo/mournmail): a mail user agent
|
101
102
|
* [MedicineShield](https://github.com/shugo/medicine_shield): a Mastodon client
|
102
103
|
* [textbringer-presentation](https://github.com/shugo/textbringer-presentation): a presentation tool
|
103
104
|
* [textbringer-ghost_text](https://github.com/shugo/textbringer-ghost_text): a [GhostText](https://github.com/fregante/GhostText) plugin
|
data/exe/txtb
CHANGED
data/lib/textbringer/buffer.rb
CHANGED
@@ -44,7 +44,11 @@ module Textbringer
|
|
44
44
|
e = NKF.guess(s)
|
45
45
|
case e
|
46
46
|
when Encoding::US_ASCII
|
47
|
-
|
47
|
+
if s.ascii_only?
|
48
|
+
Encoding::UTF_8
|
49
|
+
else
|
50
|
+
Encoding::ASCII_8BIT
|
51
|
+
end
|
48
52
|
when Encoding::ASCII_8BIT
|
49
53
|
s.force_encoding(Encoding::UTF_8)
|
50
54
|
if s.valid_encoding?
|
@@ -58,7 +62,14 @@ module Textbringer
|
|
58
62
|
end
|
59
63
|
}
|
60
64
|
|
61
|
-
|
65
|
+
HAS_BYTEINDEX = String.instance_methods.include?(:byteindex)
|
66
|
+
HAS_BYTESPLICE = String.instance_methods.include?(:bytesplice)
|
67
|
+
BYTESPLICE_SUPPORTS_PARTIAL_COPY =
|
68
|
+
begin
|
69
|
+
(+"foo").bytesplice(0, 2, "bar", 1, 2) == "aro"
|
70
|
+
rescue NoMethodError, ArgumentError
|
71
|
+
false
|
72
|
+
end
|
62
73
|
|
63
74
|
if !defined?(@@detect_encoding_proc)
|
64
75
|
@@detect_encoding_proc = DEFAULT_DETECT_ENCODING
|
@@ -271,13 +282,6 @@ module Textbringer
|
|
271
282
|
def file_encoding=(enc)
|
272
283
|
@file_encoding = Encoding.find(enc)
|
273
284
|
@binary = @file_encoding == Encoding::ASCII_8BIT
|
274
|
-
if STRING_HAS_BYTE_BASED_METHODS
|
275
|
-
if @binary
|
276
|
-
@contents.force_encoding(Encoding::ASCII_8BIT)
|
277
|
-
else
|
278
|
-
@contents.force_encoding(Encoding::UTF_8)
|
279
|
-
end
|
280
|
-
end
|
281
285
|
end
|
282
286
|
|
283
287
|
def binary?
|
@@ -448,7 +452,7 @@ module Textbringer
|
|
448
452
|
def to_s
|
449
453
|
result = @contents.byteslice(0...@gap_start) +
|
450
454
|
@contents.byteslice(@gap_end..-1)
|
451
|
-
if !@binary
|
455
|
+
if !@binary
|
452
456
|
result.force_encoding(Encoding::UTF_8)
|
453
457
|
end
|
454
458
|
result
|
@@ -463,7 +467,7 @@ module Textbringer
|
|
463
467
|
@contents.byteslice(user_to_gap(s), len) +
|
464
468
|
@contents.byteslice(@gap_end, e - s - len)
|
465
469
|
end
|
466
|
-
if !@binary
|
470
|
+
if !@binary
|
467
471
|
result.force_encoding(Encoding::UTF_8)
|
468
472
|
end
|
469
473
|
result
|
@@ -525,7 +529,7 @@ module Textbringer
|
|
525
529
|
if pos == point_min
|
526
530
|
column = 1
|
527
531
|
else
|
528
|
-
if
|
532
|
+
if HAS_BYTEINDEX
|
529
533
|
begin
|
530
534
|
i = @contents.byterindex("\n", user_to_gap(get_pos(pos, -1)))
|
531
535
|
rescue RangeError
|
@@ -562,7 +566,7 @@ module Textbringer
|
|
562
566
|
pos = point_min
|
563
567
|
i = 1
|
564
568
|
while i < n && pos < @contents.bytesize
|
565
|
-
if
|
569
|
+
if HAS_BYTEINDEX
|
566
570
|
pos = @contents.byteindex("\n", pos)
|
567
571
|
else
|
568
572
|
pos = @contents.index("\n", pos)
|
@@ -586,7 +590,7 @@ module Textbringer
|
|
586
590
|
pos = @point
|
587
591
|
size = s.bytesize
|
588
592
|
adjust_gap(size)
|
589
|
-
splice_contents(@point, size,
|
593
|
+
splice_contents(@point, size, s.b)
|
590
594
|
@marks.each do |m|
|
591
595
|
if m.location > @point
|
592
596
|
m.location += size
|
@@ -995,10 +999,7 @@ module Textbringer
|
|
995
999
|
|
996
1000
|
def clear
|
997
1001
|
check_read_only_flag
|
998
|
-
@contents =
|
999
|
-
if binary? || !STRING_HAS_BYTE_BASED_METHODS
|
1000
|
-
@contents.force_encoding(Encoding::ASCII_8BIT)
|
1001
|
-
end
|
1002
|
+
@contents = String.new
|
1002
1003
|
@point = @gap_start = @gap_end = 0
|
1003
1004
|
@marks.each do |m|
|
1004
1005
|
m.location = 0
|
@@ -1158,7 +1159,7 @@ module Textbringer
|
|
1158
1159
|
byteindex(true, r, @point) == @point
|
1159
1160
|
end
|
1160
1161
|
|
1161
|
-
if
|
1162
|
+
if HAS_BYTEINDEX
|
1162
1163
|
def byteindex(forward, re, pos)
|
1163
1164
|
@match_offsets = []
|
1164
1165
|
method = forward ? :byteindex : :byterindex
|
@@ -1480,9 +1481,7 @@ module Textbringer
|
|
1480
1481
|
else
|
1481
1482
|
@contents = s.encode(Encoding::UTF_8)
|
1482
1483
|
end
|
1483
|
-
|
1484
|
-
@contents.force_encoding(Encoding::ASCII_8BIT)
|
1485
|
-
end
|
1484
|
+
@contents.force_encoding(Encoding::ASCII_8BIT)
|
1486
1485
|
self.file_encoding = enc
|
1487
1486
|
begin
|
1488
1487
|
case @contents
|
@@ -1502,7 +1501,7 @@ module Textbringer
|
|
1502
1501
|
end
|
1503
1502
|
end
|
1504
1503
|
|
1505
|
-
if
|
1504
|
+
if HAS_BYTESPLICE
|
1506
1505
|
def splice_contents(*args)
|
1507
1506
|
@contents.bytesplice(*args)
|
1508
1507
|
end
|
@@ -1515,37 +1514,37 @@ module Textbringer
|
|
1515
1514
|
def adjust_gap(min_size = 0, pos = @point)
|
1516
1515
|
if @gap_start < pos
|
1517
1516
|
len = user_to_gap(pos) - @gap_end
|
1518
|
-
s = @contents.byteslice(@gap_end, len)
|
1519
1517
|
new_gap_start = @gap_start + len
|
1520
1518
|
new_gap_end = @gap_end + len
|
1521
1519
|
nul_filling_start = new_gap_start > @gap_end ? new_gap_start : @gap_end
|
1522
|
-
|
1523
|
-
|
1524
|
-
|
1525
|
-
|
1526
|
-
|
1527
|
-
|
1520
|
+
if BYTESPLICE_SUPPORTS_PARTIAL_COPY
|
1521
|
+
@contents.bytesplice(@gap_start, len,
|
1522
|
+
@contents, @gap_end, len)
|
1523
|
+
@contents.bytesplice(nul_filling_start...new_gap_end,
|
1524
|
+
"\0" * (new_gap_end - nul_filling_start))
|
1525
|
+
else
|
1526
|
+
s = @contents.byteslice(@gap_end, len)
|
1527
|
+
splice_contents(nul_filling_start...new_gap_end,
|
1528
|
+
"\0" * (new_gap_end - nul_filling_start))
|
1529
|
+
splice_contents(@gap_start...new_gap_start, s)
|
1528
1530
|
end
|
1529
|
-
splice_contents(nul_filling_start...new_gap_end,
|
1530
|
-
"\0" * (new_gap_end - nul_filling_start))
|
1531
|
-
splice_contents(@gap_start...new_gap_start, s)
|
1532
1531
|
@gap_start = new_gap_start
|
1533
1532
|
@gap_end = new_gap_end
|
1534
1533
|
elsif @gap_start > pos
|
1535
1534
|
len = @gap_start - pos
|
1536
|
-
s = @contents.byteslice(pos, len)
|
1537
1535
|
new_gap_start = @gap_start - len
|
1538
1536
|
new_gap_end = @gap_end - len
|
1539
1537
|
nul_filling_end = new_gap_end < @gap_start ? new_gap_end : @gap_start
|
1540
|
-
|
1541
|
-
|
1542
|
-
|
1543
|
-
|
1544
|
-
|
1545
|
-
|
1538
|
+
if BYTESPLICE_SUPPORTS_PARTIAL_COPY
|
1539
|
+
@contents.bytesplice(new_gap_end, len,
|
1540
|
+
@contents, pos, len)
|
1541
|
+
@contents.bytesplice(pos...nul_filling_end,
|
1542
|
+
"\0" * (nul_filling_end - pos))
|
1543
|
+
else
|
1544
|
+
s = @contents.byteslice(pos, len)
|
1545
|
+
splice_contents(pos...nul_filling_end, "\0" * (nul_filling_end - pos))
|
1546
|
+
splice_contents(new_gap_end...@gap_end, s)
|
1546
1547
|
end
|
1547
|
-
splice_contents(pos...nul_filling_end, "\0" * (nul_filling_end - pos))
|
1548
|
-
splice_contents(new_gap_end...@gap_end, s)
|
1549
1548
|
@gap_start = new_gap_start
|
1550
1549
|
@gap_end = new_gap_end
|
1551
1550
|
end
|
@@ -1619,7 +1618,7 @@ module Textbringer
|
|
1619
1618
|
@current_column += substring(pos, new_pos).size
|
1620
1619
|
else
|
1621
1620
|
@current_line += n
|
1622
|
-
if
|
1621
|
+
if HAS_BYTEINDEX
|
1623
1622
|
begin
|
1624
1623
|
i = @contents.byterindex("\n", user_to_gap(get_pos(new_pos, -1)))
|
1625
1624
|
rescue RangeError
|
@@ -1641,7 +1640,7 @@ module Textbringer
|
|
1641
1640
|
@current_column -= substring(new_pos, pos).size
|
1642
1641
|
else
|
1643
1642
|
@current_line -= n
|
1644
|
-
if
|
1643
|
+
if HAS_BYTEINDEX
|
1645
1644
|
begin
|
1646
1645
|
i = @contents.byterindex("\n", user_to_gap(get_pos(new_pos, - 1)))
|
1647
1646
|
rescue RangeError
|
@@ -1687,9 +1686,7 @@ module Textbringer
|
|
1687
1686
|
@contents.byteslice(0...@gap_start),
|
1688
1687
|
@contents.byteslice(@gap_end..-1)
|
1689
1688
|
].each do |s|
|
1690
|
-
|
1691
|
-
s.force_encoding(Encoding::UTF_8) unless @binary
|
1692
|
-
end
|
1689
|
+
s.force_encoding(Encoding::UTF_8) unless @binary
|
1693
1690
|
case @file_format
|
1694
1691
|
when :dos
|
1695
1692
|
s.gsub!(/\n/, "\r\n")
|
@@ -7,8 +7,7 @@ require "clipboard"
|
|
7
7
|
module Textbringer
|
8
8
|
module Commands
|
9
9
|
CLIPBOARD_AVAILABLE =
|
10
|
-
Clipboard.implementation.name != "Clipboard::
|
11
|
-
(ENV["DISPLAY"] && system("which xclip > /dev/null 2>&1"))
|
10
|
+
Clipboard.implementation.name != "Clipboard::File"
|
12
11
|
|
13
12
|
if CLIPBOARD_AVAILABLE
|
14
13
|
GLOBAL_MAP.define_key("\M-w", :clipboard_copy_region)
|
@@ -41,7 +41,7 @@ module Textbringer
|
|
41
41
|
define_command(:describe_bindings,
|
42
42
|
doc: "Display the key bindings.") do
|
43
43
|
show_help do |help|
|
44
|
-
s = ""
|
44
|
+
s = +""
|
45
45
|
if Controller.current.overriding_map
|
46
46
|
s << "Overriding Bindings:\n"
|
47
47
|
s << keymap_bindings(Controller.current.overriding_map)
|
@@ -57,7 +57,11 @@ module Textbringer
|
|
57
57
|
end
|
58
58
|
if key_index.nil?
|
59
59
|
@prev_key_index = nil
|
60
|
-
|
60
|
+
if event.is_a?(String) && /\A[A-Z]\z/.match?(event)
|
61
|
+
return event.downcase
|
62
|
+
else
|
63
|
+
return event
|
64
|
+
end
|
61
65
|
end
|
62
66
|
if @prev_key_index.nil?
|
63
67
|
@prev_key_index = key_index
|
data/lib/textbringer/keymap.rb
CHANGED
@@ -153,6 +153,7 @@ module Textbringer
|
|
153
153
|
GLOBAL_MAP.define_key(?\C-_, :undo)
|
154
154
|
GLOBAL_MAP.define_key("\C-xu", :undo)
|
155
155
|
GLOBAL_MAP.define_key("\C-x\C-_", :redo_command)
|
156
|
+
GLOBAL_MAP.define_key("\M-\C-_", :redo_command)
|
156
157
|
GLOBAL_MAP.define_key("\C-t", :transpose_chars)
|
157
158
|
GLOBAL_MAP.define_key("\C-j", :newline)
|
158
159
|
GLOBAL_MAP.define_key("\C-m", :newline)
|
data/lib/textbringer/utils.rb
CHANGED
@@ -325,9 +325,22 @@ module Textbringer
|
|
325
325
|
end
|
326
326
|
end
|
327
327
|
|
328
|
+
if defined?(IRB::RegexpCompletor)
|
329
|
+
EXPRESSION_COMPLETOR = IRB::RegexpCompletor.new
|
330
|
+
EXPRESSION_COMPLETOR_OPTIONS = {
|
331
|
+
bind: TOPLEVEL_BINDING,
|
332
|
+
doc_namespace: false
|
333
|
+
}
|
334
|
+
else
|
335
|
+
EXPRESSION_COMPLETOR = IRB::InputCompletor
|
336
|
+
EXPRESSION_COMPLETOR_OPTIONS = {
|
337
|
+
bind: TOPLEVEL_BINDING
|
338
|
+
}
|
339
|
+
end
|
340
|
+
|
328
341
|
def read_expression(prompt = "Expression: ")
|
329
342
|
f = ->(s) {
|
330
|
-
|
343
|
+
EXPRESSION_COMPLETOR.retrieve_completion_data(s, **EXPRESSION_COMPLETOR_OPTIONS).compact
|
331
344
|
}
|
332
345
|
read_from_minibuffer(prompt, completion_proc: f)
|
333
346
|
end
|
data/lib/textbringer/version.rb
CHANGED
data/lib/textbringer/window.rb
CHANGED
data/textbringer.gemspec
CHANGED
@@ -19,8 +19,10 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
20
|
spec.require_paths = ["lib"]
|
21
21
|
|
22
|
-
spec.required_ruby_version = '>=
|
22
|
+
spec.required_ruby_version = '>= 3.1'
|
23
23
|
|
24
|
+
spec.add_runtime_dependency "nkf"
|
25
|
+
spec.add_runtime_dependency "drb"
|
24
26
|
spec.add_runtime_dependency "curses", ">= 1.2.7"
|
25
27
|
spec.add_runtime_dependency "unicode-display_width", ">= 1.1"
|
26
28
|
spec.add_runtime_dependency "clipboard", ">= 1.1"
|
metadata
CHANGED
@@ -1,15 +1,42 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: textbringer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shugo Maeda
|
8
|
-
autorequire:
|
9
8
|
bindir: exe
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 2024-05-24 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
12
|
+
- !ruby/object:Gem::Dependency
|
13
|
+
name: nkf
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
15
|
+
requirements:
|
16
|
+
- - ">="
|
17
|
+
- !ruby/object:Gem::Version
|
18
|
+
version: '0'
|
19
|
+
type: :runtime
|
20
|
+
prerelease: false
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
requirements:
|
23
|
+
- - ">="
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: '0'
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: drb
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
13
40
|
- !ruby/object:Gem::Dependency
|
14
41
|
name: curses
|
15
42
|
requirement: !ruby/object:Gem::Requirement
|
@@ -245,7 +272,6 @@ homepage: https://github.com/shugo/textbringer
|
|
245
272
|
licenses:
|
246
273
|
- MIT
|
247
274
|
metadata: {}
|
248
|
-
post_install_message:
|
249
275
|
rdoc_options: []
|
250
276
|
require_paths:
|
251
277
|
- lib
|
@@ -253,15 +279,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
253
279
|
requirements:
|
254
280
|
- - ">="
|
255
281
|
- !ruby/object:Gem::Version
|
256
|
-
version: '
|
282
|
+
version: '3.1'
|
257
283
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
258
284
|
requirements:
|
259
285
|
- - ">="
|
260
286
|
- !ruby/object:Gem::Version
|
261
287
|
version: '0'
|
262
288
|
requirements: []
|
263
|
-
rubygems_version: 3.
|
264
|
-
signing_key:
|
289
|
+
rubygems_version: 3.6.0.dev
|
265
290
|
specification_version: 4
|
266
291
|
summary: An Emacs-like text editor
|
267
292
|
test_files: []
|