sup 0.12.1 → 0.13.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of sup might be problematic. Click here for more details.
- data.tar.gz.sig +1 -0
- data/CONTRIBUTORS +25 -12
- data/History.txt +6 -1
- data/README.md +70 -0
- data/ReleaseNotes +5 -0
- data/bin/sup +22 -15
- data/bin/sup-add +3 -3
- data/bin/sup-config +3 -4
- data/bin/sup-import-dump +1 -1
- data/bin/sup-sync +1 -1
- data/bin/sup-sync-back +2 -2
- data/bin/sup-tweak-labels +1 -1
- data/lib/sup.rb +39 -23
- data/lib/sup/account.rb +4 -0
- data/lib/sup/buffer.rb +4 -7
- data/lib/sup/colormap.rb +10 -2
- data/lib/sup/contact.rb +11 -5
- data/lib/sup/crypto.rb +278 -101
- data/lib/sup/draft.rb +3 -2
- data/lib/sup/horizontal-selector.rb +5 -2
- data/lib/sup/index.rb +47 -42
- data/lib/sup/label.rb +1 -1
- data/lib/sup/message-chunks.rb +4 -2
- data/lib/sup/message.rb +14 -3
- data/lib/sup/modes/buffer-list-mode.rb +1 -1
- data/lib/sup/modes/compose-mode.rb +1 -1
- data/lib/sup/modes/contact-list-mode.rb +2 -2
- data/lib/sup/modes/edit-message-async-mode.rb +109 -0
- data/lib/sup/modes/edit-message-mode.rb +148 -16
- data/lib/sup/modes/file-browser-mode.rb +2 -2
- data/lib/sup/modes/forward-mode.rb +4 -4
- data/lib/sup/modes/line-cursor-mode.rb +2 -2
- data/lib/sup/modes/reply-mode.rb +34 -30
- data/lib/sup/modes/resume-mode.rb +4 -1
- data/lib/sup/modes/scroll-mode.rb +8 -6
- data/lib/sup/modes/text-mode.rb +1 -1
- data/lib/sup/modes/thread-index-mode.rb +44 -25
- data/lib/sup/modes/thread-view-mode.rb +26 -24
- data/lib/sup/person.rb +18 -7
- data/lib/sup/poll.rb +1 -1
- data/lib/sup/rfc2047.rb +1 -1
- data/lib/sup/sent.rb +2 -2
- data/lib/sup/source.rb +1 -1
- data/lib/sup/textfield.rb +38 -1
- data/lib/sup/thread.rb +1 -1
- data/lib/sup/time.rb +83 -0
- data/lib/sup/util.rb +38 -74
- data/lib/sup/version.rb +3 -0
- metadata +333 -168
- metadata.gz.sig +0 -0
- data/README.txt +0 -128
- data/bin/sup-cmd +0 -138
- data/bin/sup-server +0 -44
- data/lib/sup/client.rb +0 -92
- data/lib/sup/protocol.rb +0 -161
- data/lib/sup/server.rb +0 -116
data/lib/sup/poll.rb
CHANGED
@@ -54,7 +54,7 @@ EOS
|
|
54
54
|
if @running_totals[:num] > 0
|
55
55
|
BufferManager.flash "Loaded #{@running_totals[:num].pluralize 'new message'}, #{@running_totals[:numi]} to inbox. Labels: #{@running_totals[:loaded_labels].map{|l| l.to_s}.join(', ')}"
|
56
56
|
else
|
57
|
-
BufferManager.flash "No new messages."
|
57
|
+
BufferManager.flash "No new messages."
|
58
58
|
end
|
59
59
|
|
60
60
|
HookManager.run "after-poll", :num => num, :num_inbox => numi, :from_and_subj => from_and_subj, :from_and_subj_inbox => from_and_subj_inbox, :num_inbox_total_unread => lambda { Index.num_results_for :labels => [:inbox, :unread] }
|
data/lib/sup/rfc2047.rb
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
#
|
6
6
|
# An implementation of RFC 2047 decoding.
|
7
7
|
#
|
8
|
-
# This module depends on the iconv library by Nobuyoshi Nakada, which I've
|
8
|
+
# This module depends on the iconv library by Nobuyoshi Nakada, which I've
|
9
9
|
# heard may be distributed as a standard part of Ruby 1.8. Many thanks to him
|
10
10
|
# for helping with building and using iconv.
|
11
11
|
#
|
data/lib/sup/sent.rb
CHANGED
@@ -14,7 +14,7 @@ class SentManager
|
|
14
14
|
|
15
15
|
def source= s
|
16
16
|
raise FatalSourceError.new("Configured sent_source [#{s.uri}] can't store mail. Correct your configuration.") unless s.respond_to? :store_message
|
17
|
-
@
|
17
|
+
@source_uri = s.uri
|
18
18
|
@source = s
|
19
19
|
end
|
20
20
|
|
@@ -36,7 +36,7 @@ class SentLoader < MBox
|
|
36
36
|
def initialize
|
37
37
|
@filename = Redwood::SENT_FN
|
38
38
|
File.open(@filename, "w") { } unless File.exists? @filename
|
39
|
-
super "mbox://" + @filename, true,
|
39
|
+
super "mbox://" + @filename, true, $config[:archive_sent]
|
40
40
|
end
|
41
41
|
|
42
42
|
def file_path; @filename end
|
data/lib/sup/source.rb
CHANGED
data/lib/sup/textfield.rb
CHANGED
@@ -2,7 +2,7 @@ module Redwood
|
|
2
2
|
|
3
3
|
## a fully-functional text field supporting completions, expansions,
|
4
4
|
## history--everything!
|
5
|
-
##
|
5
|
+
##
|
6
6
|
## writing this fucking sucked. if you thought ncurses was some 1970s
|
7
7
|
## before-people-knew-how-to-program bullshit, wait till you see
|
8
8
|
## ncurses forms.
|
@@ -120,6 +120,9 @@ class TextField
|
|
120
120
|
nop
|
121
121
|
Ncurses::Form::REQ_BEG_FIELD
|
122
122
|
when ?\C-w.ord
|
123
|
+
while action = remove_extra_space
|
124
|
+
Ncurses::Form.form_driver @form, action
|
125
|
+
end
|
123
126
|
Ncurses::Form.form_driver @form, Ncurses::Form::REQ_PREV_CHAR
|
124
127
|
Ncurses::Form.form_driver @form, Ncurses::Form::REQ_DEL_WORD
|
125
128
|
when Ncurses::KEY_UP, Ncurses::KEY_DOWN
|
@@ -167,6 +170,40 @@ private
|
|
167
170
|
end
|
168
171
|
end
|
169
172
|
|
173
|
+
def remove_extra_space
|
174
|
+
return nil unless @field
|
175
|
+
|
176
|
+
Ncurses::Form.form_driver @form, Ncurses::Form::REQ_VALIDATION
|
177
|
+
x = Ncurses.curx
|
178
|
+
v = @field.field_buffer(0).gsub(/^\s+|\s+$/, "")
|
179
|
+
v_index = x - @question.length
|
180
|
+
|
181
|
+
# at start of line
|
182
|
+
if v_index < 1
|
183
|
+
nil
|
184
|
+
## cursor <= end of text
|
185
|
+
elsif v_index < v.length
|
186
|
+
# is the character before the cursor a space?
|
187
|
+
if v[v_index-1] == ?\s
|
188
|
+
# if there is a non-space char under cursor then go back
|
189
|
+
if v[v_index] != ?\s
|
190
|
+
Ncurses::Form::REQ_PREV_CHAR
|
191
|
+
# otherwise delete the space
|
192
|
+
else
|
193
|
+
Ncurses::Form::REQ_DEL_PREV
|
194
|
+
end
|
195
|
+
else
|
196
|
+
nil
|
197
|
+
end
|
198
|
+
elsif v_index == v.length
|
199
|
+
# at end of string, with non-space before us
|
200
|
+
nil
|
201
|
+
else
|
202
|
+
# trailing spaces
|
203
|
+
Ncurses::Form::REQ_PREV_CHAR
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
170
207
|
def set_cursed_value v
|
171
208
|
@field.set_field_buffer 0, v
|
172
209
|
end
|
data/lib/sup/thread.rb
CHANGED
@@ -79,7 +79,7 @@ class Thread
|
|
79
79
|
## special case here: if we're an empty root that's already
|
80
80
|
## been joined by a fake root, don't emit
|
81
81
|
yield c.message, d + adj, (par ? par.message : nil) unless
|
82
|
-
fake_root && c.message.nil? && root.nil? && c == fud
|
82
|
+
fake_root && c.message.nil? && root.nil? && c == fud
|
83
83
|
end
|
84
84
|
end
|
85
85
|
end
|
data/lib/sup/time.rb
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
class Time
|
2
|
+
|
3
|
+
Redwood::HookManager.register "time-to-nice-string", <<EOS
|
4
|
+
Formats time nicely as string.
|
5
|
+
Variables:
|
6
|
+
time: The Time instance to be formatted.
|
7
|
+
from: The Time instance providing the reference point (considered "now").
|
8
|
+
EOS
|
9
|
+
|
10
|
+
def to_indexable_s
|
11
|
+
sprintf "%012d", self
|
12
|
+
end
|
13
|
+
|
14
|
+
def nearest_hour
|
15
|
+
if min < 30
|
16
|
+
self
|
17
|
+
else
|
18
|
+
self + (60 - min) * 60
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def midnight # within a second
|
23
|
+
self - (hour * 60 * 60) - (min * 60) - sec
|
24
|
+
end
|
25
|
+
|
26
|
+
def is_the_same_day? other
|
27
|
+
(midnight - other.midnight).abs < 1
|
28
|
+
end
|
29
|
+
|
30
|
+
def is_the_day_before? other
|
31
|
+
other.midnight - midnight <= 24 * 60 * 60 + 1
|
32
|
+
end
|
33
|
+
|
34
|
+
def to_nice_distance_s from=Time.now
|
35
|
+
later_than = (self < from)
|
36
|
+
diff = (self.to_i - from.to_i).abs.to_f
|
37
|
+
text =
|
38
|
+
[ ["second", 60],
|
39
|
+
["minute", 60],
|
40
|
+
["hour", 24],
|
41
|
+
["day", 7],
|
42
|
+
["week", 4.345], # heh heh
|
43
|
+
["month", 12],
|
44
|
+
["year", nil],
|
45
|
+
].argfind do |unit, size|
|
46
|
+
if diff.round <= 1
|
47
|
+
"one #{unit}"
|
48
|
+
elsif size.nil? || diff.round < size
|
49
|
+
"#{diff.round} #{unit}s"
|
50
|
+
else
|
51
|
+
diff /= size.to_f
|
52
|
+
false
|
53
|
+
end
|
54
|
+
end
|
55
|
+
if later_than
|
56
|
+
text + " ago"
|
57
|
+
else
|
58
|
+
"in " + text
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
TO_NICE_S_MAX_LEN = 9 # e.g. "Yest.10am"
|
63
|
+
def to_nice_s from=Time.now
|
64
|
+
Redwood::HookManager.run("time-to-nice-string", :time => self, :from => from) || default_to_nice_s(from)
|
65
|
+
end
|
66
|
+
|
67
|
+
def default_to_nice_s from=Time.now
|
68
|
+
if year != from.year
|
69
|
+
strftime "%b %Y"
|
70
|
+
elsif month != from.month
|
71
|
+
strftime "%b %e"
|
72
|
+
else
|
73
|
+
if is_the_same_day? from
|
74
|
+
strftime("%l:%M%p").downcase # emulate %P (missing on ruby 1.8 darwin)
|
75
|
+
elsif is_the_day_before? from
|
76
|
+
"Yest." + nearest_hour.strftime("%l%p").downcase # emulate %P
|
77
|
+
else
|
78
|
+
strftime "%b %e"
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
data/lib/sup/util.rb
CHANGED
@@ -5,6 +5,7 @@ require 'pathname'
|
|
5
5
|
require 'set'
|
6
6
|
require 'enumerator'
|
7
7
|
require 'benchmark'
|
8
|
+
require 'iconv'
|
8
9
|
|
9
10
|
## time for some monkeypatching!
|
10
11
|
class Symbol
|
@@ -111,6 +112,31 @@ module RMail
|
|
111
112
|
# end
|
112
113
|
end
|
113
114
|
end
|
115
|
+
|
116
|
+
class Header
|
117
|
+
## Be more cautious about invalid content-type headers
|
118
|
+
## the original RMail code calls
|
119
|
+
## value.strip.split(/\s*;\s*/)[0].downcase
|
120
|
+
## without checking if split returned an element
|
121
|
+
|
122
|
+
# This returns the full content type of this message converted to
|
123
|
+
# lower case.
|
124
|
+
#
|
125
|
+
# If there is no content type header, returns the passed block is
|
126
|
+
# executed and its return value is returned. If no block is passed,
|
127
|
+
# the value of the +default+ argument is returned.
|
128
|
+
def content_type(default = nil)
|
129
|
+
if value = self['content-type'] and ct = value.strip.split(/\s*;\s*/)[0]
|
130
|
+
return ct.downcase
|
131
|
+
else
|
132
|
+
if block_given?
|
133
|
+
yield
|
134
|
+
else
|
135
|
+
default
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
114
140
|
end
|
115
141
|
|
116
142
|
class Range
|
@@ -212,7 +238,8 @@ class String
|
|
212
238
|
## the utf8 regex and count those. otherwise, use the byte length.
|
213
239
|
def display_length
|
214
240
|
if RUBY_VERSION < '1.9.1' && ($encoding == "UTF-8" || $encoding == "utf8")
|
215
|
-
scan
|
241
|
+
# scan hack is somewhat slow, worth trying to cache
|
242
|
+
@display_length ||= scan(/./u).size
|
216
243
|
else
|
217
244
|
size
|
218
245
|
end
|
@@ -446,7 +473,7 @@ module Enumerable
|
|
446
473
|
end
|
447
474
|
|
448
475
|
def sum; inject(0) { |x, y| x + y }; end
|
449
|
-
|
476
|
+
|
450
477
|
def map_to_hash
|
451
478
|
ret = {}
|
452
479
|
each { |x| ret[x] = yield(x) }
|
@@ -514,77 +541,6 @@ class Array
|
|
514
541
|
def nonempty?; !empty? end
|
515
542
|
end
|
516
543
|
|
517
|
-
class Time
|
518
|
-
def to_indexable_s
|
519
|
-
sprintf "%012d", self
|
520
|
-
end
|
521
|
-
|
522
|
-
def nearest_hour
|
523
|
-
if min < 30
|
524
|
-
self
|
525
|
-
else
|
526
|
-
self + (60 - min) * 60
|
527
|
-
end
|
528
|
-
end
|
529
|
-
|
530
|
-
def midnight # within a second
|
531
|
-
self - (hour * 60 * 60) - (min * 60) - sec
|
532
|
-
end
|
533
|
-
|
534
|
-
def is_the_same_day? other
|
535
|
-
(midnight - other.midnight).abs < 1
|
536
|
-
end
|
537
|
-
|
538
|
-
def is_the_day_before? other
|
539
|
-
other.midnight - midnight <= 24 * 60 * 60 + 1
|
540
|
-
end
|
541
|
-
|
542
|
-
def to_nice_distance_s from=Time.now
|
543
|
-
later_than = (self < from)
|
544
|
-
diff = (self.to_i - from.to_i).abs.to_f
|
545
|
-
text =
|
546
|
-
[ ["second", 60],
|
547
|
-
["minute", 60],
|
548
|
-
["hour", 24],
|
549
|
-
["day", 7],
|
550
|
-
["week", 4.345], # heh heh
|
551
|
-
["month", 12],
|
552
|
-
["year", nil],
|
553
|
-
].argfind do |unit, size|
|
554
|
-
if diff.round <= 1
|
555
|
-
"one #{unit}"
|
556
|
-
elsif size.nil? || diff.round < size
|
557
|
-
"#{diff.round} #{unit}s"
|
558
|
-
else
|
559
|
-
diff /= size.to_f
|
560
|
-
false
|
561
|
-
end
|
562
|
-
end
|
563
|
-
if later_than
|
564
|
-
text + " ago"
|
565
|
-
else
|
566
|
-
"in " + text
|
567
|
-
end
|
568
|
-
end
|
569
|
-
|
570
|
-
TO_NICE_S_MAX_LEN = 9 # e.g. "Yest.10am"
|
571
|
-
def to_nice_s from=Time.now
|
572
|
-
if year != from.year
|
573
|
-
strftime "%b %Y"
|
574
|
-
elsif month != from.month
|
575
|
-
strftime "%b %e"
|
576
|
-
else
|
577
|
-
if is_the_same_day? from
|
578
|
-
strftime("%l:%M%p").downcase # emulate %P (missing on ruby 1.8 darwin)
|
579
|
-
elsif is_the_day_before? from
|
580
|
-
"Yest." + nearest_hour.strftime("%l%p").downcase # emulate %P
|
581
|
-
else
|
582
|
-
strftime "%b %e"
|
583
|
-
end
|
584
|
-
end
|
585
|
-
end
|
586
|
-
end
|
587
|
-
|
588
544
|
## simple singleton module. far less complete and insane than the ruby standard
|
589
545
|
## library one, but it automatically forwards methods calls and allows for
|
590
546
|
## constructors that take arguments.
|
@@ -606,6 +562,14 @@ module Singleton
|
|
606
562
|
## special-case every call to a Singleton object
|
607
563
|
return nil if @instance.nil?
|
608
564
|
|
565
|
+
# Speed up further calls by defining a shortcut around method_missing
|
566
|
+
if meth.to_s[-1,1] == '='
|
567
|
+
# Argh! Inconsistency! Setters do not work like all the other methods.
|
568
|
+
class_eval "def self.#{meth}(a); @instance.send :#{meth}, a; end"
|
569
|
+
else
|
570
|
+
class_eval "def self.#{meth}(*a, &b); @instance.send :#{meth}, *a, &b; end"
|
571
|
+
end
|
572
|
+
|
609
573
|
@instance.send meth, *a, &b
|
610
574
|
end
|
611
575
|
def init *args
|
@@ -629,7 +593,7 @@ end
|
|
629
593
|
## attr_accessor :val
|
630
594
|
## def initialize; @val = 0 end
|
631
595
|
## end
|
632
|
-
##
|
596
|
+
##
|
633
597
|
## h = Hash.new { C.new }
|
634
598
|
## h[:a].val # => 0
|
635
599
|
## h[:a].val = 1
|
data/lib/sup/version.rb
ADDED
metadata
CHANGED
@@ -1,256 +1,421 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: sup
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.13.0
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 13
|
6
9
|
- 0
|
7
|
-
-
|
8
|
-
- 1
|
9
|
-
version: 0.12.1
|
10
|
+
hash: -4492560732051236832
|
10
11
|
platform: ruby
|
11
|
-
authors:
|
12
|
+
authors:
|
12
13
|
- William Morgan
|
14
|
+
- Gaute Hope
|
15
|
+
- Hamish Downer
|
16
|
+
- Matthieu Rakotojaona
|
13
17
|
autorequire:
|
14
18
|
bindir: bin
|
15
|
-
cert_chain:
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
cert_chain:
|
20
|
+
- !binary |-
|
21
|
+
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURWRENDQWp5Z0F3SUJB
|
22
|
+
Z0lCQURBTkJna3Foa2lHOXcwQkFRVUZBREJRTVFzd0NRWURWUVFEREFKbFp6
|
23
|
+
RVYKTUJNR0NnbVNKb21UOGl4a0FSa1dCV2RoZFhSbE1SVXdFd1lLQ1pJbWla
|
24
|
+
UHlMR1FCR1JZRmRtVjBjMm94RXpBUgpCZ29Ka2lhSmsvSXNaQUVaRmdOamIy
|
25
|
+
MHdIaGNOTVRNd05UQTRNVEF6T0RRM1doY05NVFF3TlRBNE1UQXpPRFEzCldq
|
26
|
+
QlFNUXN3Q1FZRFZRUUREQUpsWnpFVk1CTUdDZ21TSm9tVDhpeGtBUmtXQldk
|
27
|
+
aGRYUmxNUlV3RXdZS0NaSW0KaVpQeUxHUUJHUllGZG1WMGMyb3hFekFSQmdv
|
28
|
+
SmtpYUprL0lzWkFFWkZnTmpiMjB3Z2dFaU1BMEdDU3FHU0liMwpEUUVCQVFV
|
29
|
+
QUE0SUJEd0F3Z2dFS0FvSUJBUUM3c05jNXpZNE1yWUI3ZXl3RS9hSzJJb0Rx
|
30
|
+
cE05bHE0WkZsSHp0ClBtcTFMRzZhaDJsdS9IZmpxeGlQb3F3WTdRa2RTT0dE
|
31
|
+
TFNrN0c4WUJxREEvdE9EaGtQUFNUcXhCRHpZeUNPNDYKaGFXVHRvTjV0Smt4
|
32
|
+
SURKS3AxblZYSGkwTWxiNEdKVktkOVAwcTk1QmVCWUJmczh2eVBOK3k0YjRH
|
33
|
+
ZWJneDlVMwpLcU1EYmU1aDlNQVBaR210aVJGTWIzdWdtaXVqRG03djhmQUNh
|
34
|
+
NUV0U3ZLL2x4TWtSRGdsZWNUL2tuRTk5TllJCmwzNVNPL0J1bmUxYnhZbWt3
|
35
|
+
VzY0bVE0d1JsR1ZlQW5YKzE5bXNBTGZTOXJkSkwyNmRmVzJMZ3FXaTVRb1ZU
|
36
|
+
QkgKS05LVGwvaTNmeEswbXpndG5vUkNXZE1KUUZOTm9uRlRuUFVVYXdpMWM5
|
37
|
+
S2g0QWRQQWdNQkFBR2pPVEEzTUFrRwpBMVVkRXdRQ01BQXdIUVlEVlIwT0JC
|
38
|
+
WUVGSk5DT3hMMFNXY2JXMk0rRElFVXpBTXoxYlpzTUFzR0ExVWREd1FFCkF3
|
39
|
+
SUVzREFOQmdrcWhraUc5dzBCQVFVRkFBT0NBUUVBcjNRVWF5ZDBnZUJERXhP
|
40
|
+
K1d3emFFUEF1VVozeldRWUcKRzl2cnBsQ2ttSnRqUy9YL3dWQWVmN0puL1Y1
|
41
|
+
TU5rWEtYc2lPZ1hKWGtpK243SHVsTlpVZjFyenI3VW45NmdWSgoxaHEvWlR1
|
42
|
+
YXBuUHBzdEJxcWR2NjBSQjhITkd5ZEhRZUV6NnVzNXozbmorS2NoUHFKNjU3
|
43
|
+
RHo4b1gvTm02LzI0CjdRU1FwQ2g4eEJZZFNXRXBvSUUwelVTWTc3THRWVFJW
|
44
|
+
d0lyOXVEcFdUVHI5a0NWQklOQnNPUU5qV0tydUVXalYKK0pNdURzK2lXZWZw
|
45
|
+
RjRSM0J5U29PYzFRNFdvRVMzK29jMHFvMzdNc0FaeWZuUUlQVFpreUxaQ014
|
46
|
+
ZUw2TWhhNApoRmMyeUFOQmo4dm9hWTVDNzRDZzJWcUV4dGNuU2F4VXRXOXdD
|
47
|
+
NHc1aE9sZzBBVmZiMUpXemc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t
|
48
|
+
Cg==
|
49
|
+
date: 2013-05-15 00:00:00.000000000 Z
|
50
|
+
dependencies:
|
51
|
+
- !ruby/object:Gem::Dependency
|
52
|
+
name: xapian-full-alaveteli
|
53
|
+
requirement: !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - ~>
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: '1.2'
|
59
|
+
segments:
|
60
|
+
- 1
|
61
|
+
- 2
|
62
|
+
hash: -3470814721440028832
|
63
|
+
type: :runtime
|
22
64
|
prerelease: false
|
23
|
-
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
66
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
67
|
+
requirements:
|
68
|
+
- - ~>
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '1.2'
|
71
|
+
segments:
|
29
72
|
- 1
|
73
|
+
- 2
|
74
|
+
hash: -3470814721440028832
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: ncursesw-sup
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
none: false
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.3'
|
83
|
+
segments:
|
30
84
|
- 1
|
31
85
|
- 3
|
86
|
+
hash: -3847811635784656183
|
87
|
+
- - ! '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 1.3.1
|
90
|
+
segments:
|
32
91
|
- 1
|
33
|
-
|
92
|
+
- 3
|
93
|
+
- 1
|
94
|
+
hash: -3904231600277470242
|
34
95
|
type: :runtime
|
35
|
-
version_requirements: *id001
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: ncursesw
|
38
96
|
prerelease: false
|
39
|
-
|
97
|
+
version_requirements: !ruby/object:Gem::Requirement
|
98
|
+
none: false
|
99
|
+
requirements:
|
100
|
+
- - ~>
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '1.3'
|
103
|
+
segments:
|
104
|
+
- 1
|
105
|
+
- 3
|
106
|
+
hash: -3847811635784656183
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 1.3.1
|
110
|
+
segments:
|
111
|
+
- 1
|
112
|
+
- 3
|
113
|
+
- 1
|
114
|
+
hash: -3904231600277470242
|
115
|
+
- !ruby/object:Gem::Dependency
|
116
|
+
name: rmail
|
117
|
+
requirement: !ruby/object:Gem::Requirement
|
40
118
|
none: false
|
41
|
-
requirements:
|
42
|
-
- -
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
|
119
|
+
requirements:
|
120
|
+
- - ! '>='
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: '0.17'
|
123
|
+
segments:
|
45
124
|
- 0
|
46
|
-
|
125
|
+
- 17
|
126
|
+
hash: -718457563752098801
|
47
127
|
type: :runtime
|
48
|
-
version_requirements: *id002
|
49
|
-
- !ruby/object:Gem::Dependency
|
50
|
-
name: rmail
|
51
128
|
prerelease: false
|
52
|
-
|
129
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
130
|
none: false
|
54
|
-
requirements:
|
55
|
-
- -
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
|
131
|
+
requirements:
|
132
|
+
- - ! '>='
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: '0.17'
|
135
|
+
segments:
|
58
136
|
- 0
|
59
137
|
- 17
|
60
|
-
|
61
|
-
|
62
|
-
version_requirements: *id003
|
63
|
-
- !ruby/object:Gem::Dependency
|
138
|
+
hash: -718457563752098801
|
139
|
+
- !ruby/object:Gem::Dependency
|
64
140
|
name: highline
|
65
|
-
|
66
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
67
142
|
none: false
|
68
|
-
requirements:
|
69
|
-
- -
|
70
|
-
- !ruby/object:Gem::Version
|
71
|
-
|
143
|
+
requirements:
|
144
|
+
- - ! '>='
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: '0'
|
147
|
+
segments:
|
72
148
|
- 0
|
73
|
-
|
149
|
+
hash: 3761451823671182045
|
74
150
|
type: :runtime
|
75
|
-
version_requirements: *id004
|
76
|
-
- !ruby/object:Gem::Dependency
|
77
|
-
name: trollop
|
78
151
|
prerelease: false
|
79
|
-
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
153
|
none: false
|
81
|
-
requirements:
|
82
|
-
- -
|
83
|
-
- !ruby/object:Gem::Version
|
84
|
-
|
154
|
+
requirements:
|
155
|
+
- - ! '>='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
158
|
+
segments:
|
159
|
+
- 0
|
160
|
+
hash: 3761451823671182045
|
161
|
+
- !ruby/object:Gem::Dependency
|
162
|
+
name: trollop
|
163
|
+
requirement: !ruby/object:Gem::Requirement
|
164
|
+
none: false
|
165
|
+
requirements:
|
166
|
+
- - ! '>='
|
167
|
+
- !ruby/object:Gem::Version
|
168
|
+
version: '1.12'
|
169
|
+
segments:
|
85
170
|
- 1
|
86
171
|
- 12
|
87
|
-
|
172
|
+
hash: -4287820016106514407
|
88
173
|
type: :runtime
|
89
|
-
version_requirements: *id005
|
90
|
-
- !ruby/object:Gem::Dependency
|
91
|
-
name: lockfile
|
92
174
|
prerelease: false
|
93
|
-
|
175
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
176
|
none: false
|
95
|
-
requirements:
|
96
|
-
- -
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
|
177
|
+
requirements:
|
178
|
+
- - ! '>='
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '1.12'
|
181
|
+
segments:
|
182
|
+
- 1
|
183
|
+
- 12
|
184
|
+
hash: -4287820016106514407
|
185
|
+
- !ruby/object:Gem::Dependency
|
186
|
+
name: lockfile
|
187
|
+
requirement: !ruby/object:Gem::Requirement
|
188
|
+
none: false
|
189
|
+
requirements:
|
190
|
+
- - ! '>='
|
191
|
+
- !ruby/object:Gem::Version
|
192
|
+
version: '0'
|
193
|
+
segments:
|
99
194
|
- 0
|
100
|
-
|
195
|
+
hash: 3761451823671182045
|
101
196
|
type: :runtime
|
102
|
-
version_requirements: *id006
|
103
|
-
- !ruby/object:Gem::Dependency
|
104
|
-
name: mime-types
|
105
197
|
prerelease: false
|
106
|
-
|
198
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
199
|
none: false
|
108
|
-
requirements:
|
200
|
+
requirements:
|
201
|
+
- - ! '>='
|
202
|
+
- !ruby/object:Gem::Version
|
203
|
+
version: '0'
|
204
|
+
segments:
|
205
|
+
- 0
|
206
|
+
hash: 3761451823671182045
|
207
|
+
- !ruby/object:Gem::Dependency
|
208
|
+
name: mime-types
|
209
|
+
requirement: !ruby/object:Gem::Requirement
|
210
|
+
none: false
|
211
|
+
requirements:
|
109
212
|
- - ~>
|
110
|
-
- !ruby/object:Gem::Version
|
111
|
-
|
213
|
+
- !ruby/object:Gem::Version
|
214
|
+
version: '1'
|
215
|
+
segments:
|
112
216
|
- 1
|
113
|
-
|
217
|
+
hash: -1625349299735885178
|
114
218
|
type: :runtime
|
115
|
-
version_requirements: *id007
|
116
|
-
- !ruby/object:Gem::Dependency
|
117
|
-
name: gettext
|
118
219
|
prerelease: false
|
119
|
-
|
220
|
+
version_requirements: !ruby/object:Gem::Requirement
|
221
|
+
none: false
|
222
|
+
requirements:
|
223
|
+
- - ~>
|
224
|
+
- !ruby/object:Gem::Version
|
225
|
+
version: '1'
|
226
|
+
segments:
|
227
|
+
- 1
|
228
|
+
hash: -1625349299735885178
|
229
|
+
- !ruby/object:Gem::Dependency
|
230
|
+
name: gettext
|
231
|
+
requirement: !ruby/object:Gem::Requirement
|
120
232
|
none: false
|
121
|
-
requirements:
|
122
|
-
- -
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
|
233
|
+
requirements:
|
234
|
+
- - ! '>='
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: '0'
|
237
|
+
segments:
|
125
238
|
- 0
|
126
|
-
|
239
|
+
hash: 3761451823671182045
|
127
240
|
type: :runtime
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
241
|
+
prerelease: false
|
242
|
+
version_requirements: !ruby/object:Gem::Requirement
|
243
|
+
none: false
|
244
|
+
requirements:
|
245
|
+
- - ! '>='
|
246
|
+
- !ruby/object:Gem::Version
|
247
|
+
version: '0'
|
248
|
+
segments:
|
249
|
+
- 0
|
250
|
+
hash: 3761451823671182045
|
251
|
+
- !ruby/object:Gem::Dependency
|
252
|
+
name: bundler
|
253
|
+
requirement: !ruby/object:Gem::Requirement
|
254
|
+
none: false
|
255
|
+
requirements:
|
256
|
+
- - ~>
|
257
|
+
- !ruby/object:Gem::Version
|
258
|
+
version: '1.3'
|
259
|
+
segments:
|
260
|
+
- 1
|
261
|
+
- 3
|
262
|
+
hash: -3847811635784656183
|
263
|
+
type: :development
|
264
|
+
prerelease: false
|
265
|
+
version_requirements: !ruby/object:Gem::Requirement
|
266
|
+
none: false
|
267
|
+
requirements:
|
268
|
+
- - ~>
|
269
|
+
- !ruby/object:Gem::Version
|
270
|
+
version: '1.3'
|
271
|
+
segments:
|
272
|
+
- 1
|
273
|
+
- 3
|
274
|
+
hash: -3847811635784656183
|
275
|
+
- !ruby/object:Gem::Dependency
|
276
|
+
name: rake
|
277
|
+
requirement: !ruby/object:Gem::Requirement
|
278
|
+
none: false
|
279
|
+
requirements:
|
280
|
+
- - ! '>='
|
281
|
+
- !ruby/object:Gem::Version
|
282
|
+
version: '0'
|
283
|
+
segments:
|
284
|
+
- 0
|
285
|
+
hash: 3761451823671182045
|
286
|
+
type: :development
|
287
|
+
prerelease: false
|
288
|
+
version_requirements: !ruby/object:Gem::Requirement
|
289
|
+
none: false
|
290
|
+
requirements:
|
291
|
+
- - ! '>='
|
292
|
+
- !ruby/object:Gem::Version
|
293
|
+
version: '0'
|
294
|
+
segments:
|
295
|
+
- 0
|
296
|
+
hash: 3761451823671182045
|
297
|
+
description: ! " Sup is a console-based email client for people with a lot of
|
298
|
+
email.\n\n * GMail-like thread-centered archiving, tagging and muting\n *
|
299
|
+
Handling mail from multiple mbox and Maildir sources\n * Blazing fast full-text
|
300
|
+
search with a rich query language\n * Multiple accounts - pick the right one
|
301
|
+
when sending mail\n * Ruby-programmable hooks\n * Automatically tracking
|
302
|
+
recent contacts\n"
|
303
|
+
email: sup-talk@rubyforge.org
|
304
|
+
executables:
|
132
305
|
- sup
|
133
306
|
- sup-add
|
134
|
-
- sup-cmd
|
135
307
|
- sup-config
|
136
308
|
- sup-dump
|
137
309
|
- sup-import-dump
|
138
310
|
- sup-recover-sources
|
139
|
-
- sup-server
|
140
311
|
- sup-sync
|
141
312
|
- sup-sync-back
|
142
313
|
- sup-tweak-labels
|
143
314
|
extensions: []
|
144
|
-
|
145
315
|
extra_rdoc_files: []
|
146
|
-
|
147
|
-
files:
|
316
|
+
files:
|
148
317
|
- CONTRIBUTORS
|
149
|
-
- README.
|
318
|
+
- README.md
|
150
319
|
- LICENSE
|
151
320
|
- History.txt
|
152
321
|
- ReleaseNotes
|
153
322
|
- bin/sup
|
154
323
|
- bin/sup-add
|
155
|
-
- bin/sup-cmd
|
156
324
|
- bin/sup-config
|
157
325
|
- bin/sup-dump
|
158
326
|
- bin/sup-import-dump
|
159
327
|
- bin/sup-recover-sources
|
160
|
-
- bin/sup-server
|
161
328
|
- bin/sup-sync
|
162
329
|
- bin/sup-sync-back
|
163
330
|
- bin/sup-tweak-labels
|
164
|
-
- lib/sup.rb
|
165
|
-
- lib/sup/colormap.rb
|
166
|
-
- lib/sup/draft.rb
|
167
|
-
- lib/sup/source.rb
|
168
|
-
- lib/sup/message-chunks.rb
|
169
|
-
- lib/sup/person.rb
|
170
|
-
- lib/sup/logger.rb
|
171
|
-
- lib/sup/index.rb
|
172
|
-
- lib/sup/message.rb
|
173
|
-
- lib/sup/search.rb
|
174
|
-
- lib/sup/idle.rb
|
175
|
-
- lib/sup/mode.rb
|
176
|
-
- lib/sup/client.rb
|
177
|
-
- lib/sup/contact.rb
|
178
|
-
- lib/sup/poll.rb
|
179
|
-
- lib/sup/update.rb
|
180
|
-
- lib/sup/keymap.rb
|
181
|
-
- lib/sup/server.rb
|
182
|
-
- lib/sup/undo.rb
|
183
|
-
- lib/sup/protocol.rb
|
184
331
|
- lib/sup/hook.rb
|
185
|
-
- lib/sup/label.rb
|
186
|
-
- lib/sup/sent.rb
|
187
|
-
- lib/sup/tagger.rb
|
188
|
-
- lib/sup/maildir.rb
|
189
|
-
- lib/sup/horizontal-selector.rb
|
190
|
-
- lib/sup/util.rb
|
191
|
-
- lib/sup/crypto.rb
|
192
|
-
- lib/sup/mbox.rb
|
193
|
-
- lib/sup/textfield.rb
|
194
|
-
- lib/sup/account.rb
|
195
|
-
- lib/sup/rfc2047.rb
|
196
|
-
- lib/sup/thread.rb
|
197
|
-
- lib/sup/buffer.rb
|
198
|
-
- lib/sup/interactive-lock.rb
|
199
|
-
- lib/sup/modes/compose-mode.rb
|
200
|
-
- lib/sup/modes/reply-mode.rb
|
201
332
|
- lib/sup/modes/forward-mode.rb
|
333
|
+
- lib/sup/modes/person-search-results-mode.rb
|
334
|
+
- lib/sup/modes/edit-message-mode.rb
|
202
335
|
- lib/sup/modes/line-cursor-mode.rb
|
336
|
+
- lib/sup/modes/log-mode.rb
|
337
|
+
- lib/sup/modes/contact-list-mode.rb
|
338
|
+
- lib/sup/modes/search-list-mode.rb
|
339
|
+
- lib/sup/modes/reply-mode.rb
|
203
340
|
- lib/sup/modes/label-list-mode.rb
|
341
|
+
- lib/sup/modes/label-search-results-mode.rb
|
204
342
|
- lib/sup/modes/file-browser-mode.rb
|
205
|
-
- lib/sup/modes/
|
343
|
+
- lib/sup/modes/help-mode.rb
|
344
|
+
- lib/sup/modes/resume-mode.rb
|
206
345
|
- lib/sup/modes/thread-view-mode.rb
|
207
|
-
- lib/sup/modes/
|
208
|
-
- lib/sup/modes/
|
209
|
-
- lib/sup/modes/search-list-mode.rb
|
210
|
-
- lib/sup/modes/poll-mode.rb
|
346
|
+
- lib/sup/modes/compose-mode.rb
|
347
|
+
- lib/sup/modes/text-mode.rb
|
211
348
|
- lib/sup/modes/thread-index-mode.rb
|
212
|
-
- lib/sup/modes/
|
213
|
-
- lib/sup/modes/completion-mode.rb
|
349
|
+
- lib/sup/modes/console-mode.rb
|
214
350
|
- lib/sup/modes/search-results-mode.rb
|
215
|
-
- lib/sup/modes/
|
216
|
-
- lib/sup/modes/
|
217
|
-
- lib/sup/modes/
|
218
|
-
- lib/sup/modes/
|
351
|
+
- lib/sup/modes/inbox-mode.rb
|
352
|
+
- lib/sup/modes/edit-message-async-mode.rb
|
353
|
+
- lib/sup/modes/completion-mode.rb
|
354
|
+
- lib/sup/modes/scroll-mode.rb
|
355
|
+
- lib/sup/modes/poll-mode.rb
|
219
356
|
- lib/sup/modes/buffer-list-mode.rb
|
220
|
-
- lib/sup/
|
221
|
-
- lib/sup/
|
222
|
-
- lib/sup/
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
357
|
+
- lib/sup/mbox.rb
|
358
|
+
- lib/sup/undo.rb
|
359
|
+
- lib/sup/message-chunks.rb
|
360
|
+
- lib/sup/tagger.rb
|
361
|
+
- lib/sup/message.rb
|
362
|
+
- lib/sup/account.rb
|
363
|
+
- lib/sup/time.rb
|
364
|
+
- lib/sup/util.rb
|
365
|
+
- lib/sup/thread.rb
|
366
|
+
- lib/sup/source.rb
|
367
|
+
- lib/sup/keymap.rb
|
368
|
+
- lib/sup/person.rb
|
369
|
+
- lib/sup/colormap.rb
|
370
|
+
- lib/sup/maildir.rb
|
371
|
+
- lib/sup/crypto.rb
|
372
|
+
- lib/sup/search.rb
|
373
|
+
- lib/sup/idle.rb
|
374
|
+
- lib/sup/version.rb
|
375
|
+
- lib/sup/buffer.rb
|
376
|
+
- lib/sup/sent.rb
|
377
|
+
- lib/sup/logger.rb
|
378
|
+
- lib/sup/interactive-lock.rb
|
379
|
+
- lib/sup/horizontal-selector.rb
|
380
|
+
- lib/sup/draft.rb
|
381
|
+
- lib/sup/contact.rb
|
382
|
+
- lib/sup/update.rb
|
383
|
+
- lib/sup/mode.rb
|
384
|
+
- lib/sup/label.rb
|
385
|
+
- lib/sup/index.rb
|
386
|
+
- lib/sup/poll.rb
|
387
|
+
- lib/sup/rfc2047.rb
|
388
|
+
- lib/sup/textfield.rb
|
389
|
+
- lib/sup.rb
|
390
|
+
homepage: https://github.com/sup-heliotrope/sup/wiki
|
391
|
+
licenses:
|
392
|
+
- GPL-2
|
227
393
|
post_install_message:
|
228
394
|
rdoc_options: []
|
229
|
-
|
230
|
-
require_paths:
|
395
|
+
require_paths:
|
231
396
|
- lib
|
232
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
397
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
233
398
|
none: false
|
234
|
-
requirements:
|
235
|
-
- -
|
236
|
-
- !ruby/object:Gem::Version
|
237
|
-
|
399
|
+
requirements:
|
400
|
+
- - ! '>='
|
401
|
+
- !ruby/object:Gem::Version
|
402
|
+
version: '0'
|
403
|
+
segments:
|
238
404
|
- 0
|
239
|
-
|
240
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
405
|
+
hash: 3761451823671182045
|
406
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
241
407
|
none: false
|
242
|
-
requirements:
|
243
|
-
- -
|
244
|
-
- !ruby/object:Gem::Version
|
245
|
-
|
408
|
+
requirements:
|
409
|
+
- - ! '>='
|
410
|
+
- !ruby/object:Gem::Version
|
411
|
+
version: '0'
|
412
|
+
segments:
|
246
413
|
- 0
|
247
|
-
|
414
|
+
hash: 3761451823671182045
|
248
415
|
requirements: []
|
249
|
-
|
250
416
|
rubyforge_project:
|
251
|
-
rubygems_version: 1.
|
417
|
+
rubygems_version: 1.8.25
|
252
418
|
signing_key:
|
253
419
|
specification_version: 3
|
254
|
-
summary: A console-based email client with the best features of GMail, mutt
|
420
|
+
summary: A console-based email client with the best features of GMail, mutt and Emacs
|
255
421
|
test_files: []
|
256
|
-
|