aboutsummaryrefslogtreecommitdiff
path: root/vim/autoload/mail/header/field.vim
diff options
context:
space:
mode:
Diffstat (limited to 'vim/autoload/mail/header/field.vim')
-rw-r--r--vim/autoload/mail/header/field.vim39
1 files changed, 39 insertions, 0 deletions
diff --git a/vim/autoload/mail/header/field.vim b/vim/autoload/mail/header/field.vim
new file mode 100644
index 00000000..ab3d405a
--- /dev/null
+++ b/vim/autoload/mail/header/field.vim
@@ -0,0 +1,39 @@
+function! mail#header#field#Add(header, name, body) abort
+ let new = {
+ \ 'name': a:name,
+ \ 'body': a:body,
+ \}
+ call add(a:header['fields'], new)
+endfunction
+
+function! mail#header#field#Set(header, name, body) abort
+ let fields = []
+ let new = {
+ \ 'name': a:name,
+ \ 'body': a:body,
+ \}
+ for field in a:header['fields']
+ if field['name'] ==? a:name
+ if exists('new')
+ let field = new | unlet new
+ else
+ continue
+ endif
+ endif
+ call add(fields, field)
+ endfor
+ if exists('new')
+ call add(fields, new) | unlet new
+ endif
+ let a:header['fields'] = fields
+endfunction
+
+function! mail#header#field#Clear(header, name) abort
+ let fields = []
+ for field in a:header['fields']
+ if field['name'] !=? a:name
+ call add(fields, field)
+ endif
+ endfor
+ let a:header['fields'] = fields
+endfunction