summaryrefslogtreecommitdiffstats
path: root/.config/nvim
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim')
-rw-r--r--.config/nvim/after/ftplugin/mail.vim53
-rw-r--r--.config/nvim/after/ftplugin/rust.vim2
2 files changed, 55 insertions, 0 deletions
diff --git a/.config/nvim/after/ftplugin/mail.vim b/.config/nvim/after/ftplugin/mail.vim
new file mode 100644
index 0000000..b48389a
--- /dev/null
+++ b/.config/nvim/after/ftplugin/mail.vim
@@ -0,0 +1,53 @@
1setl spell
2setl omnifunc=mailcomplete#Complete
3
4function! s:OnExit(job_id, code, event) dict
5 if a:code == 0
6 " NeoMutt successfully sent the mail. Get rid of the terminal buffer and window.
7 " We can't use plain `bd!` because the terminal window may no longer have focus.
8 execute 'bd!' s:bufnr
9 " Quit if we succeeded in sending the email and there's only one buffer left.
10 if len(getbufinfo({'buflisted': 1})) == 1
11 quit
12 endif
13 else
14 " We didn't send the mail. Go back to the buffer with the message. FIXME: we
15 " probably shouldn't rely on a [plugin][1].
16 execute 'Bd!' s:bufnr
17 endif
18endfunction
19" [1]: https://github.com/moll/vim-bbye
20" [2]: https://github.com/neovim/neovim/issues/4291
21" [3]: https://vi.stackexchange.com/q/10292
22" [4]: https://redd.it/46g5wy
23" [5]: https://github.com/neovim/neovim/issues/5176
24
25function! s:SendMail()
26 let l:message_file = expand('%')
27 if l:message_file != ''
28 update
29 else
30 " Cope with the buffer not having an associated file. TODO: delete this file if we
31 " succeed in sending the mail?
32 let l:message_file = system('mktemp')
33 execute 'w!' l:message_file
34 endif
35 enew
36 " Tell NeoMutt to use `true` as the editor. This makes it show the compose menu
37 " directly instead of starting Vim inside of Vim. Also don't use the curses pinentry
38 " program. There seem to be some issues when using it from NeoMutt inside Vim inside
39 " screen(1).
40 call termopen('VISUAL=true PINENTRY_USER_DATA=gtk neomutt ' .
41 \ "-e 'set postpone=no sidebar_visible=no assumed_charset=utf-8' " .
42 \ "-H " . l:message_file, {'on_exit': function('s:OnExit')})
43 let s:bufnr = bufnr('%')
44 startinsert
45endfunction
46
47nnoremap <buffer> <silent> <C-H> :<C-U>call <SID>SendMail()<CR>
48
49nnoremap <buffer> <silent> <localleader>f gg/From:<CR>:nohlsearch<CR>4lC:
50nnoremap <buffer> <silent> <localleader>t gg/To:<CR>:nohlsearch<CR>2lC:
51nnoremap <buffer> <silent> <localleader>c gg/Cc:<CR>:nohlsearch<CR>2lC:
52nnoremap <buffer> <silent> <localleader>b gg/Bcc:<CR>:nohlsearch<CR>3lC:
53nnoremap <buffer> <silent> <localleader>s gg/Subject:<CR>:nohlsearch<CR>7lC:
diff --git a/.config/nvim/after/ftplugin/rust.vim b/.config/nvim/after/ftplugin/rust.vim
new file mode 100644
index 0000000..542d070
--- /dev/null
+++ b/.config/nvim/after/ftplugin/rust.vim
@@ -0,0 +1,2 @@
1let b:ale_fixers = ['rustfmt']
2let b:ale_linters = ['rls']