Skip to content

Vim frontend for Himalaya CLI email client

License

Notifications You must be signed in to change notification settings

pimalaya/himalaya-vim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logo

đź“« Himalaya Vim

Vim front-end for the email client Himalaya CLI

Release Repology Matrix Mastodon

We are looking for new maintainer(s), feel free to contact us! (#28)

Table of contents

Installation

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

use "https://github.com/pimalaya/himalaya-vim"
:PackerSync
Plug 'https://github.com/pimalaya/himalaya-vim'
:PlugInstall

Configuration

It is highly recommanded to have those Vim options on:

syntax on
filetype plugin on
set hidden

g:himalaya_always_confirm

Defines whenever Himalaya Vim should always ask before moving or deleting a message. Defaults to 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>'

g:himalaya_config_path

Override the default TOML configuration file.

g:himalaya_custom_email_flags

Defines the list of additional custom flags that himalaya-vim should be aware of. They should be specified as a list of strings:

let g:himalaya_custom_email_flags = ['custom1', 'custom2']

g:himalaya_executable

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

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_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' | 'fzflua' | 'telescope'

Usage

List folders

With the native picker (default):

screenshot

With the telescope.nvim picker:

screenshot

With the fzf.vim picker:

screenshot

List, filter and sort envelopes

: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
Add the specified flag to the selected email(s) gFa
Remove the specified flag from the selected email(s) gFr
Filter and sort envelopes according to the given query g/

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)
nmap gFa  <plug>(himalaya-email-flag-add)
nmap gFr  <plug>(himalaya-email-flag-remove)
nmap g/   <plug>(himalaya-set-list-envelopes-query)

See himalaya envelopes list --help for more detailed information about the query API.

Read message

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
Open the mail in the browser go

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)
nmap go <plug>(himalaya-email-open-browser)

Write message

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

Sponsoring

nlnet

Special thanks to the NLnet foundation and the European Commission that have been financially supporting the project for years:

If you appreciate the project, feel free to donate using one of the following providers:

GitHub Ko-fi Buy Me a Coffee Liberapay thanks.dev PayPal