All Projects → prabirshrestha → Async.vim

prabirshrestha / Async.vim

Licence: mit
normalize async job control api for vim and neovim

Projects that are alternatives of or similar to Async.vim

Vim Grepper
👾 Helps you win at grep.
Stars: ✭ 1,030 (+325.62%)
Mutual labels:  async, neovim
Fern.vim
🌿 General purpose asynchronous tree viewer written in Pure Vim script
Stars: ✭ 552 (+128.1%)
Mutual labels:  async, neovim
Iron.nvim
Interactive Repl Over Neovim
Stars: ✭ 265 (+9.5%)
Mutual labels:  async, neovim
Vim Signify
➕ Show a diff using Vim its sign column.
Stars: ✭ 2,390 (+887.6%)
Mutual labels:  async, neovim
Acid.nvim
Asynchronous Clojure Interactive Development
Stars: ✭ 147 (-39.26%)
Mutual labels:  async, neovim
Ctrlsf.vim
An ack.vim alternative mimics Ctrl-Shift-F on Sublime Text 2
Stars: ✭ 1,283 (+430.17%)
Mutual labels:  async, neovim
Gen tags.vim
Async plugin for vim and neovim to ease the use of ctags/gtags
Stars: ✭ 288 (+19.01%)
Mutual labels:  async, neovim
Neotags.nvim
Tag highlight in neovim
Stars: ✭ 124 (-48.76%)
Mutual labels:  async, neovim
Vim Lsp
async language server protocol plugin for vim and neovim
Stars: ✭ 2,230 (+821.49%)
Mutual labels:  async, neovim
Neomake
Asynchronous linting and make framework for Neovim/Vim
Stars: ✭ 2,512 (+938.02%)
Mutual labels:  async, neovim
Vim Yoink
Vim plugin that maintains a yank history to cycle between when pasting
Stars: ✭ 225 (-7.02%)
Mutual labels:  neovim
Gidgethub
An async GitHub API library for Python
Stars: ✭ 226 (-6.61%)
Mutual labels:  async
Punchclock
Make sure your asynchronous operations show up to work on time
Stars: ✭ 235 (-2.89%)
Mutual labels:  async
Network
C# Network Library
Stars: ✭ 237 (-2.07%)
Mutual labels:  async
Actor Framework
An Open Source Implementation of the Actor Model in C++
Stars: ✭ 2,637 (+989.67%)
Mutual labels:  async
Vim Lsp Cxx Highlight
Vim plugin for C/C++/ObjC semantic highlighting using cquery, ccls, or clangd
Stars: ✭ 231 (-4.55%)
Mutual labels:  neovim
Vim Tmux Clipboard
seamless integration for vim and tmux's clipboard
Stars: ✭ 225 (-7.02%)
Mutual labels:  neovim
Php Console Spinner
Colorful highly configurable spinner for php cli applications (suitable for async apps)
Stars: ✭ 225 (-7.02%)
Mutual labels:  async
Run Series
Run an array of functions in series
Stars: ✭ 223 (-7.85%)
Mutual labels:  async
Await Of
await wrapper for easier errors handling without try-catch
Stars: ✭ 240 (-0.83%)
Mutual labels:  async

async.vim

normalize async job control api for vim and neovim

sample usage

function! s:handler(job_id, data, event_type)
    echo a:job_id . ' ' . a:event_type
    echo join(a:data, "\n")
endfunction

if has('win32') || has('win64')
    let argv = ['cmd', '/c', 'dir c:\ /b']
else
    let argv = ['bash', '-c', 'ls']
endif

let jobid = async#job#start(argv, {
    \ 'on_stdout': function('s:handler'),
    \ 'on_stderr': function('s:handler'),
    \ 'on_exit': function('s:handler'),
\ })

if jobid > 0
    echom 'job started'
else
    echom 'job failed to start'
endif

" If you want to get the process id of the job
let pid = async#job#pid(jobid)

" If you want to wait the job:
call async#job#wait([jobid], 5000)  " timeout: 5 sec

" If you want to stop the job:
call async#job#stop(jobid)

APIs

APIs are based on neovim's job control APIs.

Embedding

Async.vim can be either embedded with other plugins or be used as an external plugin. If you want to embed run the following vim command.

:AsyncEmbed path=./autoload/myplugin/job.vim namespace=myplugin#job

Todos

  • Fallback to sync system() calls in vim that doesn't support job
  • job_stop and job_send is treated as noop when using system()
  • on_stderr doesn't work when using system()
  • Fallback to python/ruby threads and vimproc instead of using system() for better compatibility (PRs welcome!!!)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].