vmail 2.3.5 → 2.3.6
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/vmail.vim +37 -27
- data/lib/vmail/imap_client.rb +3 -0
- data/lib/vmail/version.rb +1 -1
- metadata +84 -49
data/lib/vmail.vim
CHANGED
@@ -68,6 +68,16 @@ function! s:create_message_window()
|
|
68
68
|
close
|
69
69
|
endfunction
|
70
70
|
|
71
|
+
function! s:system_with_error_handling(command)
|
72
|
+
let res = system(a:command)
|
73
|
+
if res =~ 'VMAIL_ERROR'
|
74
|
+
echoe "ERROR" res
|
75
|
+
return ""
|
76
|
+
else
|
77
|
+
return res
|
78
|
+
end
|
79
|
+
endfunction
|
80
|
+
|
71
81
|
function! s:show_message(stay_in_message_list)
|
72
82
|
let line = getline(line("."))
|
73
83
|
if match(line, '^> Load') != -1
|
@@ -94,7 +104,7 @@ function! s:show_message(stay_in_message_list)
|
|
94
104
|
let command = s:show_message_command . s:uid
|
95
105
|
echom "Loading message ". s:uid .". Please wait..."
|
96
106
|
redrawstatus
|
97
|
-
let res =
|
107
|
+
let res = s:system_with_error_handling(command)
|
98
108
|
call s:focus_message_window()
|
99
109
|
set modifiable
|
100
110
|
1,$delete
|
@@ -166,7 +176,7 @@ function! s:show_raw()
|
|
166
176
|
echo command
|
167
177
|
setlocal modifiable
|
168
178
|
1,$delete
|
169
|
-
let res =
|
179
|
+
let res = s:system_with_error_handling(command)
|
170
180
|
put =res
|
171
181
|
1delete
|
172
182
|
normal 1G
|
@@ -215,7 +225,7 @@ endfunc
|
|
215
225
|
function! s:update()
|
216
226
|
let command = s:update_command
|
217
227
|
echo "Checking for new messages. Please wait..."
|
218
|
-
let res =
|
228
|
+
let res = s:system_with_error_handling(command)
|
219
229
|
let lines = split(res, '\n')
|
220
230
|
if len(lines) > 0
|
221
231
|
setlocal modifiable
|
@@ -249,7 +259,7 @@ function! s:toggle_star() range
|
|
249
259
|
echom "Toggling flags on " . nummsgs . " messages"
|
250
260
|
endif
|
251
261
|
" toggle * on lines
|
252
|
-
let res =
|
262
|
+
let res = s:system_with_error_handling(command)
|
253
263
|
setlocal modifiable
|
254
264
|
let lnum = a:firstline
|
255
265
|
while lnum <= a:lastline
|
@@ -284,7 +294,7 @@ func! s:delete_messages(flag) range
|
|
284
294
|
else
|
285
295
|
echom "Deleting " . nummsgs . " messages"
|
286
296
|
endif
|
287
|
-
let res =
|
297
|
+
let res = s:system_with_error_handling(command)
|
288
298
|
setlocal modifiable
|
289
299
|
exec "silent " . a:firstline . "," . a:lastline . "delete"
|
290
300
|
setlocal nomodifiable
|
@@ -298,7 +308,7 @@ func! s:archive_messages() range
|
|
298
308
|
let nummsgs = len(uid_set)
|
299
309
|
let command = s:move_to_command . shellescape(join(uid_set, ',')) . ' ' . "all"
|
300
310
|
echo "Archiving message" . (nummsgs == 1 ? '' : 's')
|
301
|
-
let res =
|
311
|
+
let res = s:system_with_error_handling(command)
|
302
312
|
setlocal modifiable
|
303
313
|
exec "silent " . a:firstline . "," . a:lastline . "delete"
|
304
314
|
setlocal nomodifiable
|
@@ -321,7 +331,7 @@ func! s:append_messages_to_file() range
|
|
321
331
|
let s:append_file = append_file
|
322
332
|
let command = s:append_to_file_command . shellescape(join(uid_set, ',')) . ' ' . s:append_file
|
323
333
|
echo "Appending " . nummsgs . " message" . (nummsgs == 1 ? '' : 's') . " to " . s:append_file . ". Please wait..."
|
324
|
-
let res =
|
334
|
+
let res = s:system_with_error_handling(command)
|
325
335
|
echo res
|
326
336
|
redraw
|
327
337
|
endfunc
|
@@ -365,7 +375,7 @@ function! s:complete_move_to_mailbox()
|
|
365
375
|
endif
|
366
376
|
redraw
|
367
377
|
echo "Moving uids ". s:uid_set . " to mailbox " . mailbox
|
368
|
-
let res =
|
378
|
+
let res = s:system_with_error_handling(command)
|
369
379
|
setlocal modifiable
|
370
380
|
if !s:copy_to_mailbox
|
371
381
|
exec "silent " . s:firstline . "," . s:lastline . "delete"
|
@@ -408,7 +418,7 @@ function! s:get_mailbox_list()
|
|
408
418
|
let command = s:list_mailboxes_command
|
409
419
|
redraw
|
410
420
|
echo command
|
411
|
-
let res =
|
421
|
+
let res = s:system_with_error_handling(command)
|
412
422
|
let s:mailboxes = split(res, "\n", '')
|
413
423
|
endfunction
|
414
424
|
|
@@ -469,16 +479,16 @@ function! s:select_mailbox()
|
|
469
479
|
let command = s:select_mailbox_command . shellescape(s:mailbox)
|
470
480
|
redraw
|
471
481
|
echom "Selecting mailbox: ". s:mailbox . ". Please wait..."
|
472
|
-
call
|
482
|
+
call s:system_with_error_handling(command)
|
473
483
|
redraw
|
474
484
|
" reset window width now
|
475
|
-
call
|
485
|
+
call s:system_with_error_handling(s:set_window_width_command . winwidth(1))
|
476
486
|
" now get latest 100 messages
|
477
487
|
call s:focus_list_window()
|
478
488
|
setlocal modifiable
|
479
489
|
let command = s:search_command . shellescape("all")
|
480
490
|
echo "Loading messages..."
|
481
|
-
let res =
|
491
|
+
let res = s:system_with_error_handling(command)
|
482
492
|
silent 1,$delete
|
483
493
|
silent! put! =res
|
484
494
|
execute "normal Gdd\<c-y>"
|
@@ -510,7 +520,7 @@ function! s:do_search()
|
|
510
520
|
call s:focus_list_window()
|
511
521
|
setlocal modifiable
|
512
522
|
echo "Running query on " . s:mailbox . ": " . s:query . ". Please wait..."
|
513
|
-
let res =
|
523
|
+
let res = s:system_with_error_handling(command)
|
514
524
|
silent! 1,$delete
|
515
525
|
silent! put! =res
|
516
526
|
execute "silent normal Gdd\<c-y>"
|
@@ -522,7 +532,7 @@ endfunction
|
|
522
532
|
function! s:more_messages()
|
523
533
|
let command = s:more_messages_command
|
524
534
|
echo "Fetching more messages. Please wait..."
|
525
|
-
let res =
|
535
|
+
let res = s:system_with_error_handling(command)
|
526
536
|
setlocal modifiable
|
527
537
|
let lines = split(res, "\n")
|
528
538
|
call append(line('$'), lines)
|
@@ -564,7 +574,7 @@ endfunction
|
|
564
574
|
func! s:open_compose_window(command)
|
565
575
|
redraw
|
566
576
|
echo a:command
|
567
|
-
let res =
|
577
|
+
let res = s:system_with_error_handling(a:command)
|
568
578
|
let previous_winnr = winnr()
|
569
579
|
only
|
570
580
|
split compose_message.txt
|
@@ -606,7 +616,7 @@ function! CompleteContact(findstart, base)
|
|
606
616
|
" '\(^ho\|<ho\)'
|
607
617
|
" let regex = shellescape('\(^' . a:base . '\|<' . a:base . '\)')
|
608
618
|
let regex = shellescape(a:base)
|
609
|
-
let matches =
|
619
|
+
let matches = s:system_with_error_handling("grep -i " . regex . " " . $VMAIL_CONTACTS_FILE)
|
610
620
|
return split(matches, "\n")
|
611
621
|
endif
|
612
622
|
endfun
|
@@ -622,7 +632,7 @@ endfunc
|
|
622
632
|
function! s:send_message()
|
623
633
|
let mail = join(getline(1,'$'), "\n")
|
624
634
|
echo "Sending message"
|
625
|
-
let res =
|
635
|
+
let res = s:system_with_error_handling(s:deliver_command, mail)
|
626
636
|
if match(res, '^Failed') == -1
|
627
637
|
write!
|
628
638
|
call s:close_and_focus_list_window()
|
@@ -637,7 +647,7 @@ endfunction
|
|
637
647
|
func! s:open_html_part()
|
638
648
|
let command = s:open_html_part_command
|
639
649
|
" the command saves the html part to a local file
|
640
|
-
let outfile =
|
650
|
+
let outfile = s:system_with_error_handling(command)
|
641
651
|
" todo: allow user to change open in browser command?
|
642
652
|
exec "!" . s:browser_command . ' ' . outfile
|
643
653
|
endfunc
|
@@ -648,7 +658,7 @@ func! s:save_attachments()
|
|
648
658
|
end
|
649
659
|
let s:savedir = input("save attachments to directory: ", s:savedir, "dir")
|
650
660
|
let command = s:save_attachments_command . s:savedir
|
651
|
-
let res =
|
661
|
+
let res = s:system_with_error_handling(command)
|
652
662
|
echo res
|
653
663
|
endfunc
|
654
664
|
|
@@ -686,7 +696,7 @@ func! s:open_href(all) range
|
|
686
696
|
let href = matchstr(getline(lnum), pattern)
|
687
697
|
if href != ""
|
688
698
|
let command = s:browser_command ." ".shellescape(href)." &"
|
689
|
-
call
|
699
|
+
call s:system_with_error_handling(command)
|
690
700
|
let n += 1
|
691
701
|
endif
|
692
702
|
let lnum += 1
|
@@ -699,7 +709,7 @@ func! s:open_href(all) range
|
|
699
709
|
while line
|
700
710
|
let href = matchstr(getline(line('.')), pattern)
|
701
711
|
let command = s:browser_command ." ".shellescape(href)." &"
|
702
|
-
call
|
712
|
+
call s:system_with_error_handling(command)
|
703
713
|
let n += 1
|
704
714
|
let line = search('https\?:', 'W')
|
705
715
|
endwhile
|
@@ -707,7 +717,7 @@ func! s:open_href(all) range
|
|
707
717
|
else
|
708
718
|
let href = matchstr(getline(line('.')), pattern)
|
709
719
|
let command = s:browser_command ." ".shellescape(href)." &"
|
710
|
-
call
|
720
|
+
call s:system_with_error_handling(command)
|
711
721
|
echom 'opened '.href
|
712
722
|
endif
|
713
723
|
endfunc
|
@@ -726,8 +736,8 @@ endfunc
|
|
726
736
|
" HELP
|
727
737
|
func! s:show_help()
|
728
738
|
let command = s:browser_command . ' ' . shellescape('http://danielchoi.com/software/vmail.html')
|
729
|
-
call
|
730
|
-
"let helpfile =
|
739
|
+
call s:system_with_error_handling(command)
|
740
|
+
"let helpfile = s:system_with_error_handling(s:show_help_command)
|
731
741
|
"exec "split " . helpfile
|
732
742
|
endfunc
|
733
743
|
|
@@ -889,12 +899,12 @@ call s:create_message_window()
|
|
889
899
|
call s:focus_list_window() " to go list window
|
890
900
|
|
891
901
|
" send window width
|
892
|
-
call
|
902
|
+
call s:system_with_error_handling(s:set_window_width_command . winwidth(1))
|
893
903
|
|
894
|
-
"autocmd VimResized <buffer> call
|
904
|
+
"autocmd VimResized <buffer> call s:system_with_error_handling(s:set_window_width_command . winwidth(1))
|
895
905
|
|
896
906
|
autocmd bufreadpost *.txt call <SID>turn_into_compose_window()
|
897
907
|
normal G
|
898
|
-
call
|
908
|
+
call s:system_with_error_handling(s:select_mailbox_command . shellescape(s:mailbox))
|
899
909
|
call s:do_search()
|
900
910
|
|
data/lib/vmail/imap_client.rb
CHANGED
@@ -52,6 +52,9 @@ module Vmail
|
|
52
52
|
@imap = Net::IMAP.new(@imap_server, @imap_port, true, nil, false)
|
53
53
|
log @imap.login(@username, @password)
|
54
54
|
list_mailboxes # prefetch mailbox list
|
55
|
+
raise
|
56
|
+
rescue
|
57
|
+
puts "VMAIL_ERROR: #{[$!.message, $!.backtrace].join("\n")}"
|
55
58
|
end
|
56
59
|
|
57
60
|
# expects a block, closes on finish
|
data/lib/vmail/version.rb
CHANGED
metadata
CHANGED
@@ -1,70 +1,94 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: vmail
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 2
|
7
|
+
- 3
|
8
|
+
- 6
|
9
|
+
version: 2.3.6
|
6
10
|
platform: ruby
|
7
|
-
authors:
|
11
|
+
authors:
|
8
12
|
- Daniel Choi
|
9
13
|
autorequire:
|
10
14
|
bindir: bin
|
11
15
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
16
|
+
|
17
|
+
date: 2011-11-18 00:00:00 -05:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
15
21
|
name: mail
|
16
|
-
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
17
24
|
none: false
|
18
|
-
requirements:
|
19
|
-
- -
|
20
|
-
- !ruby/object:Gem::Version
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
segments:
|
29
|
+
- 2
|
30
|
+
- 2
|
31
|
+
- 12
|
21
32
|
version: 2.2.12
|
22
33
|
type: :runtime
|
23
|
-
|
24
|
-
|
25
|
-
- !ruby/object:Gem::Dependency
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
26
36
|
name: highline
|
27
|
-
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
28
39
|
none: false
|
29
|
-
requirements:
|
30
|
-
- -
|
31
|
-
- !ruby/object:Gem::Version
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
segments:
|
44
|
+
- 1
|
45
|
+
- 6
|
46
|
+
- 1
|
32
47
|
version: 1.6.1
|
33
48
|
type: :runtime
|
34
|
-
|
35
|
-
|
36
|
-
- !ruby/object:Gem::Dependency
|
49
|
+
version_requirements: *id002
|
50
|
+
- !ruby/object:Gem::Dependency
|
37
51
|
name: sequel
|
38
|
-
|
52
|
+
prerelease: false
|
53
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
39
54
|
none: false
|
40
|
-
requirements:
|
41
|
-
- -
|
42
|
-
- !ruby/object:Gem::Version
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
segments:
|
59
|
+
- 3
|
60
|
+
- 24
|
61
|
+
- 1
|
43
62
|
version: 3.24.1
|
44
63
|
type: :runtime
|
45
|
-
|
46
|
-
|
47
|
-
- !ruby/object:Gem::Dependency
|
64
|
+
version_requirements: *id003
|
65
|
+
- !ruby/object:Gem::Dependency
|
48
66
|
name: sqlite3
|
49
|
-
|
67
|
+
prerelease: false
|
68
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
50
69
|
none: false
|
51
|
-
requirements:
|
52
|
-
- -
|
53
|
-
- !ruby/object:Gem::Version
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
segments:
|
74
|
+
- 1
|
75
|
+
- 3
|
76
|
+
- 3
|
54
77
|
version: 1.3.3
|
55
78
|
type: :runtime
|
56
|
-
|
57
|
-
version_requirements: *82189430
|
79
|
+
version_requirements: *id004
|
58
80
|
description: Manage your email with Vim
|
59
|
-
email:
|
81
|
+
email:
|
60
82
|
- dhchoi@gmail.com
|
61
|
-
executables:
|
83
|
+
executables:
|
62
84
|
- vmail
|
63
85
|
- vmail_client
|
64
86
|
- vmailsend
|
65
87
|
extensions: []
|
88
|
+
|
66
89
|
extra_rdoc_files: []
|
67
|
-
|
90
|
+
|
91
|
+
files:
|
68
92
|
- .gitignore
|
69
93
|
- MIT-LICENSE.txt
|
70
94
|
- NOTES
|
@@ -112,28 +136,39 @@ files:
|
|
112
136
|
- test/test_helper.rb
|
113
137
|
- test/time_format_test.rb
|
114
138
|
- vmail.gemspec
|
139
|
+
has_rdoc: true
|
115
140
|
homepage: http://danielchoi.com/software/vmail.html
|
116
141
|
licenses: []
|
142
|
+
|
117
143
|
post_install_message:
|
118
144
|
rdoc_options: []
|
119
|
-
|
145
|
+
|
146
|
+
require_paths:
|
120
147
|
- lib
|
121
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
148
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
122
149
|
none: false
|
123
|
-
requirements:
|
124
|
-
- -
|
125
|
-
- !ruby/object:Gem::Version
|
150
|
+
requirements:
|
151
|
+
- - ">="
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
segments:
|
154
|
+
- 1
|
155
|
+
- 9
|
156
|
+
- 0
|
126
157
|
version: 1.9.0
|
127
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
158
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
159
|
none: false
|
129
|
-
requirements:
|
130
|
-
- -
|
131
|
-
- !ruby/object:Gem::Version
|
132
|
-
|
160
|
+
requirements:
|
161
|
+
- - ">="
|
162
|
+
- !ruby/object:Gem::Version
|
163
|
+
segments:
|
164
|
+
- 0
|
165
|
+
version: "0"
|
133
166
|
requirements: []
|
167
|
+
|
134
168
|
rubyforge_project: vmail
|
135
|
-
rubygems_version: 1.
|
169
|
+
rubygems_version: 1.3.7
|
136
170
|
signing_key:
|
137
171
|
specification_version: 3
|
138
172
|
summary: A Vim interface to Gmail
|
139
173
|
test_files: []
|
174
|
+
|