vmail 0.0.4 → 0.0.5
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.
- data/NOTES +11 -15
- data/README.markdown +1 -1
- data/lib/vmail.vim +30 -14
- data/lib/vmail/imap_client.rb +25 -8
- data/lib/vmail/version.rb +1 -1
- metadata +2 -4
- data/bin/mvmail +0 -12
data/NOTES
CHANGED
@@ -475,33 +475,25 @@ DONE
|
|
475
475
|
- map u update from message window
|
476
476
|
- do search after loading vim or mvim and send size first
|
477
477
|
- vim resize event
|
478
|
-
|
479
|
-
|
478
|
+
- mvim - window width corrected
|
479
|
+
- delete mvmail command. just use env variable - cleaner
|
480
480
|
- sending an attachment
|
481
481
|
- can specify a directory, then all the items in the directory get
|
482
482
|
attached and sent
|
483
|
-
|
483
|
+
|
484
|
+
next:
|
485
|
+
- forwarding with attachments
|
484
486
|
- could be "attach: [uid] attachments to signal"
|
485
|
-
-
|
486
|
-
- help /readme
|
487
|
-
- help document should just be readme? or part of it.
|
487
|
+
- help doc: just return readme file, or a vim version of it (vim filetype later)
|
488
488
|
- follow mysql and use -u and -p flags on startup of server?
|
489
489
|
- omitting -p flag forces prompt
|
490
|
-
- get rid of config file
|
491
|
-
- use temp files
|
492
|
-
- tempname()
|
493
|
-
- system() allows a parameters that is written to tmp file and passed
|
494
|
-
to stdin
|
495
490
|
- print all selected messages into file (append)
|
496
|
-
- can pipe through a command line tool, so we don't need to clutter
|
497
|
-
viewer.vim with more mappings and functions
|
498
491
|
- ,s s confusion? Star vs search
|
499
492
|
- enhance contacts auto fix with more advanced vim script
|
500
493
|
- sort contacts by frequency, then take first 10 or so of any match
|
501
|
-
- mvim - window width not correct
|
502
|
-
- mvim - starred messages not syntax colored
|
503
494
|
|
504
495
|
later:
|
496
|
+
- mvim - starred messages not syntax colored
|
505
497
|
- mvim redrawstatus line bug
|
506
498
|
http://vim.1045645.n5.nabble.com/Redrawing-bug-in-MacVim-Command-T-since-commit-ba44868-td3248742.html
|
507
499
|
- allow one daemon, multiple clients (select mailbox?)
|
@@ -523,6 +515,10 @@ later:
|
|
523
515
|
- sometimes update doesn't work - bug
|
524
516
|
- show total messages from a search, showing 100
|
525
517
|
- message threads
|
518
|
+
- use temp files
|
519
|
+
- tempname()
|
520
|
+
- system() allows a parameters that is written to tmp file and passed
|
521
|
+
to stdin
|
526
522
|
|
527
523
|
|
528
524
|
|
data/README.markdown
CHANGED
@@ -22,7 +22,7 @@ The format of the yaml file is as follows:
|
|
22
22
|
Sent via vmail. http://danielchoi.com
|
23
23
|
|
24
24
|
Start the program by typing `vmail` on your command line. If you want to use the Macvim
|
25
|
-
version,
|
25
|
+
version, `export VMAIL_VIM=mvim` first.
|
26
26
|
|
27
27
|
There is no real documentation as of yet, but here are the raw vimscript mappings
|
28
28
|
|
data/lib/vmail.vim
CHANGED
@@ -97,6 +97,7 @@ function! s:show_message()
|
|
97
97
|
redraw
|
98
98
|
endfunction
|
99
99
|
|
100
|
+
" from message window
|
100
101
|
function! s:show_next_message()
|
101
102
|
call s:focus_list_window()
|
102
103
|
execute "normal j"
|
@@ -105,12 +106,26 @@ endfunction
|
|
105
106
|
|
106
107
|
function! s:show_previous_message()
|
107
108
|
call s:focus_list_window()
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
109
|
+
execute "normal k"
|
110
|
+
if line('.') != 1
|
111
|
+
execute "normal \<cr>"
|
112
|
+
endif
|
113
|
+
endfunction
|
114
|
+
|
115
|
+
" from message list window
|
116
|
+
function! s:show_next_message_in_list()
|
117
|
+
if line('.') != line('$')
|
118
|
+
call feedkeys("j\<cr>\<cr>")
|
119
|
+
endif
|
120
|
+
endfunction
|
121
|
+
|
122
|
+
function! s:show_previous_message_in_list()
|
123
|
+
if line('.') != 1
|
124
|
+
call feedkeys("k\<cr>\<cr>")
|
125
|
+
endif
|
112
126
|
endfunction
|
113
127
|
|
128
|
+
|
114
129
|
" invoked from withint message window
|
115
130
|
function! s:show_raw()
|
116
131
|
let command = s:show_message_command . s:current_uid . ' raw'
|
@@ -169,11 +184,11 @@ function! s:update()
|
|
169
184
|
redraw
|
170
185
|
call cursor(line + 1, 0)
|
171
186
|
normal z.
|
172
|
-
|
173
|
-
|
187
|
+
redraw
|
188
|
+
echo "you have " . num . " new message" . (num == 1 ? '' : 's') . "!"
|
174
189
|
else
|
175
|
-
|
176
|
-
|
190
|
+
redraw
|
191
|
+
echo "no new messages"
|
177
192
|
endif
|
178
193
|
endfunction
|
179
194
|
|
@@ -510,7 +525,7 @@ function! s:cancel_compose()
|
|
510
525
|
close!
|
511
526
|
endfunction
|
512
527
|
|
513
|
-
function! s:
|
528
|
+
function! s:send_message()
|
514
529
|
write
|
515
530
|
let mail = join(getline(1,'$'), "\n")
|
516
531
|
exec ":!" . s:deliver_command . " < ComposeMessage"
|
@@ -546,8 +561,8 @@ func! s:save_attachments()
|
|
546
561
|
end
|
547
562
|
let s:savedir = input("save attachments to directory: ", s:savedir)
|
548
563
|
let command = s:save_attachments_command . s:savedir
|
549
|
-
echo command
|
550
564
|
let res = system(command)
|
565
|
+
echo res
|
551
566
|
endfunc
|
552
567
|
" --------------------------------------------------------------------------------
|
553
568
|
|
@@ -608,15 +623,16 @@ func! s:message_list_window_mappings()
|
|
608
623
|
noremap <silent> <buffer> <Leader>c :call <SID>compose_message()<CR>
|
609
624
|
noremap <silent> <buffer> <Leader>r :call <SID>show_message()<cr>:call <SID>compose_reply(0)<CR>
|
610
625
|
noremap <silent> <buffer> <Leader>a :call <SID>show_message()<cr>:call <SID>compose_reply(1)<CR>
|
611
|
-
|
626
|
+
noremap <silent> <buffer> <c-j> :call <SID>show_next_message_in_list()<cr>
|
627
|
+
noremap <silent> <buffer> <c-k> :call <SID>show_previous_message_in_list()<cr>
|
612
628
|
nnoremap <silent> <buffer> <Space> :call <SID>toggle_fullscreen()<cr>
|
613
629
|
endfunc
|
614
630
|
|
615
631
|
func! s:compose_window_mappings()
|
616
|
-
" NOTE
|
632
|
+
" NOTE send_message is a global mapping, so user can load a saved
|
617
633
|
" message from a file and send it
|
618
|
-
nnoremap <silent> <Leader>
|
619
|
-
nnoremap <silent> <buffer> <Leader>
|
634
|
+
nnoremap <silent> <Leader>vs :call <SID>send_message()<CR>
|
635
|
+
nnoremap <silent> <buffer> <Leader>vd :call <SID>save_draft()<CR>
|
620
636
|
noremap <silent> <buffer> <leader>q :call <SID>cancel_compose()<cr>
|
621
637
|
nmap <silent> <buffer> q <leader>q
|
622
638
|
endfunc
|
data/lib/vmail/imap_client.rb
CHANGED
@@ -378,12 +378,7 @@ EOF
|
|
378
378
|
def new_mail_from_input(text)
|
379
379
|
require 'mail'
|
380
380
|
mail = Mail.new
|
381
|
-
raw_headers,
|
382
|
-
# handle attachments
|
383
|
-
if (attachments = body.split(/\n\s*\n/, 2)[0]) =~ /^attach:/
|
384
|
-
# TODO
|
385
|
-
log "attachments: #{YAML::load(attachments).inspect}"
|
386
|
-
end
|
381
|
+
raw_headers, raw_body = *text.split(/\n\s*\n/, 2)
|
387
382
|
headers = {}
|
388
383
|
raw_headers.split("\n").each do |line|
|
389
384
|
key, value = *line.split(/:\s*/, 2)
|
@@ -397,7 +392,27 @@ EOF
|
|
397
392
|
mail.bcc = headers['bcc'] #&& headers['cc'].split(/,\s+/)
|
398
393
|
mail.subject = headers['subject']
|
399
394
|
mail.from ||= @username
|
400
|
-
|
395
|
+
# attachments are added as a snippet of YAML after a blank line
|
396
|
+
# after the headers, and followed by a blank line
|
397
|
+
if (attachments = raw_body.split(/\n\s*\n/, 2)[0]) =~ /^attach(ment|ments)*:/
|
398
|
+
# TODO
|
399
|
+
files = YAML::load(attachments).values.flatten
|
400
|
+
log "attachments: #{files}"
|
401
|
+
files.each do |file|
|
402
|
+
if File.directory?(file)
|
403
|
+
Dir.glob("#{file}/*").each {|f| mail.add_file(f) if File.size?(f)}
|
404
|
+
else
|
405
|
+
mail.add_file(file) if File.size?(file)
|
406
|
+
end
|
407
|
+
end
|
408
|
+
mail.text_part do
|
409
|
+
body raw_body.split(/\n\s*\n/, 2)[1]
|
410
|
+
end
|
411
|
+
else
|
412
|
+
mail.text_part do
|
413
|
+
body raw_body
|
414
|
+
end
|
415
|
+
end
|
401
416
|
mail
|
402
417
|
end
|
403
418
|
|
@@ -409,11 +424,13 @@ EOF
|
|
409
424
|
return unless dir && @current_mail
|
410
425
|
attachments = @current_mail.attachments
|
411
426
|
`mkdir -p #{dir}`
|
412
|
-
attachments.
|
427
|
+
saved = attachments.map do |x|
|
413
428
|
path = File.join(dir, x.filename)
|
414
429
|
log "saving #{path}"
|
415
430
|
File.open(path, 'wb') {|f| f.puts x.decoded}
|
431
|
+
path
|
416
432
|
end
|
433
|
+
"saved:\n" + saved.map {|x| "- #{x}"}.join("\n")
|
417
434
|
end
|
418
435
|
|
419
436
|
def open_html_part(uid)
|
data/lib/vmail/version.rb
CHANGED
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 5
|
9
|
+
version: 0.0.5
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Daniel Choi
|
@@ -34,7 +34,6 @@ description: Manage your email with Vim
|
|
34
34
|
email:
|
35
35
|
- dhchoi@gmail.com
|
36
36
|
executables:
|
37
|
-
- mvmail
|
38
37
|
- vmail
|
39
38
|
- vmail_client
|
40
39
|
extensions: []
|
@@ -46,7 +45,6 @@ files:
|
|
46
45
|
- NOTES
|
47
46
|
- README.markdown
|
48
47
|
- Rakefile
|
49
|
-
- bin/mvmail
|
50
48
|
- bin/vmail
|
51
49
|
- bin/vmail_client
|
52
50
|
- gmail.vim
|