~soywod/himalaya-vim

Vim plugin for email management.
trace nix vim plugins revisions
fix too long json strings not being processed #98
fix action based on multiple ids #147

clone

read-only
https://git.sr.ht/~soywod/himalaya-vim
read/write
git@git.sr.ht:~soywod/himalaya-vim

You can also use your local clone with git send-email.

#📫 Himalaya

Vim plugin for email management based on the himalaya-cli.

#Installation

First you need to install and configure the himalaya CLI. Then you can install this plugin with your favorite plugin manager:

#Using packer

use "https://git.sr.ht/~soywod/himalaya-vim"
:PackerSync

#Using vim-plug

Plug 'https://git.sr.ht/~soywod/himalaya-vim'
:PlugInstall

#Configuration

It is highly recommanded to have those Vim options on:

syntax on
filetype plugin on
set hidden

#g:himalaya_executable

Defines a custom path for the himalaya binary. Defaults to himalaya.

#g:himalaya_folder_picker

Defines the provider used for selecting folders (default keybind: gm):

If no value given, the first loaded (and available) provider will be used (telescope > fzf > native).

let g:himalaya_folder_picker = 'native' | 'fzf' | 'telescope'

#g:himalaya_folder_picker_telescope_preview

Enables folder preview when picking a folder with the telescope.nvim provider.

let g:himalaya_folder_picker_telescope_preview = 1

#g:himalaya_complete_contact_cmd

Defines the command to use for contact completion. When this is set, completefunc will be set when composing emails so that contacts can be completed with <C-x><C-u>.

The command must print each possible result on its own line. Each line must contain tab-separated fields; the first must be the email address, and the second, if present, must be the name. %s in the command will be replaced with the search query.

let g:himalaya_complete_contact_cmd = '<your completion command>'

#Usage

#Folder listing

With the native picker (default):

screenshot

With the telescope.nvim picker:

screenshot

With the fzf.vim picker:

screenshot

#Emails listing

:Himalaya
Function Keybind
Change the current folder gm
Show previous page gp
Show next page gn
Read email under cursor <Enter>
Write a new email gw
Reply to the email under cursor gr
Reply all to the email under cursor gR
Forward the email under cursor gf
Download all attachments of email under cursor ga
Copy the email under cursor gC
Move the email under cursor gM
Delete email(s) under cursor or visual selection gD

Keybinds can be customized:

nmap gm   <plug>(himalaya-folder-select)
nmap gp   <plug>(himalaya-folder-select-previous-page)
nmap gn   <plug>(himalaya-folder-select-next-page)
nmap <cr> <plug>(himalaya-email-read)
nmap gw   <plug>(himalaya-email-write)
nmap gr   <plug>(himalaya-email-reply)
nmap gR   <plug>(himalaya-email-reply-all)
nmap gf   <plug>(himalaya-email-forward)
nmap ga   <plug>(himalaya-email-download-attachments)
nmap gC   <plug>(himalaya-email-copy)
nmap gM   <plug>(himalaya-email-move)
nmap gD   <plug>(himalaya-email-delete)

#Email reading

Function Keybind
Write a new email gw
Reply to the email gr
Reply all to the email gR
Forward the email gf
Download all email attachments ga
Copy the email gC
Move the email gM
Delete the email gD

Keybinds can be customized:

nmap gw <plug>(himalaya-email-write)
nmap gr <plug>(himalaya-email-reply)
nmap gR <plug>(himalaya-email-reply-all)
nmap gf <plug>(himalaya-email-forward)
nmap ga <plug>(himalaya-email-download-attachments)
nmap gC <plug>(himalaya-email-copy)
nmap gM <plug>(himalaya-email-move)
nmap gD <plug>(himalaya-email-delete)

#Email writing

Function Keybind
Add attachment ga

Keybinds can be customized:

nmap ga <plug>(himalaya-email-add-attachment)

When you exit this special buffer, you will be prompted 4 choices:

  • send: sends the email
  • draft: saves the email locally
  • quit: quits the buffer without saving
  • cancel: goes back to the email edition

#Development

The development environment is managed by Nix. Running nix-shell will spawn a shell with everything you need to get started with this plugin:

# starts a nix shell
$ nix-shell

# starts Vim and the :Himalaya command
$ vim +Himalaya

# starts Neovim and the :Himalaya command
$ nvim +Himalaya

#Contributing

If you find a bug, please send an email at ~soywod/pimalaya@todo.sr.ht.

If you have a question, please send an email at ~soywod/pimalaya@lists.sr.ht.

If you want to propose a feature or fix a bug, please send a patch at ~soywod/pimalaya@lists.sr.ht using git send-email (see this guide on how to configure it).

If you want to subscribe to the mailing list, please send an email at ~soywod/pimalaya+subscribe@lists.sr.ht.

If you want to unsubscribe to the mailing list, please send an email at ~soywod/pimalaya+unsubscribe@lists.sr.ht.

If you want to discuss about the project, feel free to join the Matrix workspace #pimalaya.himalaya or contact me directly @soywod.

#Credits

nlnet

Special thanks to the nlnet foundation that helped Himalaya to receive financial support from the NGI Assure program of the European Commission in September, 2022.

#Sponsoring

GitHub PayPal Ko-fi Buy Me a Coffee Liberapay