Giter VIP home page Giter VIP logo

himalaya.vim's Introduction

โš ๏ธ Plugin merged into the main CLI repository https://github.com/soywod/himalaya.

๐Ÿ“ซ Himalaya.vim

Vim plugin for Himalaya CLI email client.

image

Table of contents

Motivation

Bringing emails to the terminal is a pain. The mainstream TUI, (neo)mutt, takes time to configure. The default mapping is not intuitive when coming from the Vim environment. It is even scary to use at the beginning, since you are dealing with sensitive data!

The aim of Himalaya is to extract the email logic into a simple (yet solid) CLI API that can be used either directly from the terminal or UIs. It gives users more flexibility.

This Vim plugin is a TUI implementation for Himalaya CLI.

Installation

First you need to install and configure the himalaya CLI. Then you can install this plugin with your favorite plugin manager. For eg with vim-plug add to your .vimrc:

Plug "soywod/himalaya.vim"

Then:

:PlugInstall

Usage

List messages view

:Himalaya

gif

Function Default binding
Change the current mbox gm
Show previous page gp
Show next page gn
Read focused msg <Enter>
Write a new msg gw
Reply to the focused msg gr
Reply all to the focused msg gR
Forward the focused message gf
Download all focused msg attachments ga

They can be customized:

nmap gm   <plug>(himalaya-mbox-input)
nmap gp   <plug>(himalaya-mbox-prev-page)
nmap gn   <plug>(himalaya-mbox-next-page)
nmap <cr> <plug>(himalaya-msg-read)
nmap gw   <plug>(himalaya-msg-write)
nmap gr   <plug>(himalaya-msg-reply)
nmap gR   <plug>(himalaya-msg-reply-all)
nmap gf   <plug>(himalaya-msg-forward)
nmap ga   <plug>(himalaya-msg-attachments)

Read message view

gif

Function Default binding
Write a new msg gw
Reply to the msg gr
Reply all to the msg gR
Forward the message gf
Download all msg attachments ga

They can be customized:

nmap gw <plug>(himalaya-msg-write)
nmap gr <plug>(himalaya-msg-reply)
nmap gR <plug>(himalaya-msg-reply-all)
nmap gf <plug>(himalaya-msg-forward)
nmap ga <plug>(himalaya-msg-attachments)

Write message view

gif

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

  • Send: sends the message
  • Draft: saves the message into the Drafts mailbox
  • Quit: quits the buffer without saving
  • Cancel: goes back to the message edition

Credits

himalaya.vim's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

himalaya.vim's Issues

Latency and friction

Sorry to bother you with issues, I'm finding them while trying it.

There are a couple of things that are quite annoying, even if not preventing usage:

  • every time you change view he asked to press ENTER
    • I know it's probably because you are running a shell program and I don't know how to solve it
  • every time you change view you have to wait a bit
    • I believe it's because it's downloading every time all the information, maybe it can be solved by caching a bit and update asynchronously

Of course they are just ux improvements.

Arbitrary page length for mail list

Essentially what is in the title, just adding a user configurable variable and using it here:

let msgs = s:cli("list --mailbox %s --page %d", [shellescape(mbox), page])

just adding . " --size " . g:himalaya_page_length or something like this.

A further improvement would be to have vim determine it by itself, e.g.

  • if g:himalaya_page_length is set to its default value (say 0)
  • use as value winheight(0)

or something like this.


Thank you for the project, I know it's still new but I like the idea.
I tried iris.vim but I've never managed to make it run, probably for issues with the IMAPClient, but it does not matter: I'm looking for this one now.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.