3.2 KiB
asyncomplete-muttgoobook.vim
A vim plugin for mail files to select email addresses from the mutt aliases file, and Google Contacts (using goobook).
Prerequisites
- This has been tested with the vim-plug minimalist Vim plugin manager. Other plugin managers may work.
- This is designed to work with the asyncomplete code completion subsystem, which is writtin in pure Vim (v8) script.
- goobook for interacting with your Google Contacts from the command line. This has been tested with Goobook 3.5.2, but 1.x may work if your distribution still uses Python 2.7+.
- This is designed to work in mutt, but is not mutt-specific (except for reading ${HOME}/.mutt/aliases). Using vim to edit the file type
mail
should be enough to get it working.
As of this writing (2023-04-30), this has only been tested in Vim v9, but is also writtin in Vim v8 script so should work in older versions.
Installation
-
Clone this repository into your Vim plugin directory. For vim-plug in Vim on Linux, this is usually ${HOME}/.vim/plugged, but vim-plug will place it here automatically if you merely configure $MYVIMRC properly. Place the following line between
call plug#begin(..)
andcall plug#end()
:call plug#begin('...') " ... Plug 'https://git.eldon.me/trey/asyncomplete-muttgoobook.vim' " ... call plug#end()
Then, inside Vim, run
:PlugInstall
. You can check that the muttgoobook plugin is installed successfully with:PlugStatus
. -
Configure Vim in $MYVIMRC to load the
muttgoobook
source using the following:autocmd User asyncomplete_setup call asyncomplete#register_source({ \ 'name': 'muttgoobook', \ 'allowlist': ['mail'], \ 'completor': function('asyncomplete#sources#muttgoobook#completor'), \ })
If you have other file types to use this plugin, you may add them to the
allowlist
above. -
By default, this plugin tries to determine if the cursor is in an email address field ('From:', 'To:', 'Cc:', 'Bcc:', in English). The matching is case-insensitive. If you use another language, that names these fields differently, you can modify this in $MYVIMRC by adding the
g:muttgoobook_address_fields
global variable. This is designed to be a Vim regular expression, replace['from', 'to', 'b\?cc']
accordingly:let g:muttgoobook_address_fields = '^\s*\(from\|to\|b\?cc\):\s*'
The above pattern is the default if this variable isn't specified.
-
Also, if your mutt aliases file is in a different path than ${HOME}/.mutt/aliases, you can override it in $MYVIMRC with the global variable
g:mutt_aliases
:let g:mutt_aliases = '~/.mutt/aliases'
Again, what appears above is the default if not set explicitly to something else. Any double-quotes (
"
) and backslashes (\
) in the mutt aliases file will be removed.
TODO
- possibly set up some kind of trigger to post an email address from the mutt aliases file or Google Contacts, within the body of the message.
- Perform more testing!