• Stars
    star
    275
  • Rank 149,249 (Top 3 %)
  • Language
    Vim Script
  • License
    MIT License
  • Created over 8 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

normalize async job control api for vim and neovim

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'),
    \ 'normalize': 'array'
\ })

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.

Normalizing data

By default stdout and stderr data is an array. This is a noop for neovim but requiring using split in vim. This can tend to be costly if you are want a string since you are joining the splited string. To avoid this unncessary conversion you can normalize it to string so it is a noop in vim but a join for neovim. If you prefer to disable normalization pass normalization as raw.

normalize: 'array' " Valid values are 'array', 'string' or 'raw'

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!!!)

More Repositories

1

vim-lsp

async language server protocol plugin for vim and neovim
Vim Script
3,098
star
2

asyncomplete.vim

async completion in pure vim script for vim8 and neovim
Vim Script
893
star
3

dwm-win32

dwm port of tiling manager to Window
C
439
star
4

asyncomplete-lsp.vim

Vim Script
122
star
5

hn-react

Hacker News Client built using ReactJS
JavaScript
119
star
6

quickpick.vim

experimental quick picker for vim
Vim Script
79
star
7

FluentHttp

a light weight library aimed to ease the development for your rest client
C#
48
star
8

dotfiles

There is no place like ~
Lua
48
star
9

asyncomplete-buffer.vim

provides buffer autocomplete for asyncomplete.vim
Vim Script
43
star
10

reactive-cocoa-playground

Objective-C
40
star
11

asyncomplete-file.vim

provides file autocomplete for asyncomplete.vim
Vim Script
39
star
12

rblog

super fast blog engine written in rust. live demo @ https://blog.prabir.me
Rust
36
star
13

asyncomplete-ultisnips.vim

provides ultisnips autocomplete for asyncomplete.vim
Vim Script
33
star
14

FacebookSharp

Facebook Graph API for .Net
C#
30
star
15

callbag.vim

Vim Script
27
star
16

typescript-language-server

Language Server Protocol implementation for Typescript via tsserver
TypeScript
25
star
17

asyncomplete-tags.vim

provides tag auto completion for asyncomplete.vim via vim tagfiles
Vim Script
23
star
18

simple-ubuntu-installer

simple encrypted zfs ubuntu installer
Shell
22
star
19

simple-arch-installer

Shell
19
star
20

synology-nomad

Shell
19
star
21

FB-CSharp-SDK-First-FB-Application

Facebook C# SDK - Writing your first facebook application
C#
19
star
22

asyncomplete-gocode.vim

provides go autocomplete for asyncomplete.vim via gocode
Vim Script
18
star
23

nji

NodeJs (Package) Installer
C#
17
star
24

async-vfs

async vfs for rust
Rust
13
star
25

asyncomplete-flow.vim

provides javascript autocomplete for asyncomplete.vim via flow
Vim Script
13
star
26

asyncomplete-necovim.vim

provides syntax autocomplete for asyncomplete.vim via neco-vim
Vim Script
13
star
27

writing-an-os-from-scratch

This is a tutorial that teaches you how to write a bootloader/os from scratch
Assembly
12
star
28

simple-owin

simple owin implementation examples
C#
12
star
29

mq

Rust
11
star
30

asyncomplete-emoji.vim

provides emoji autocomplete for asyncomplete.vim
Vim Script
10
star
31

njake

node.js jakefile helper tasks for .net developers
JavaScript
10
star
32

asyncomplete-neosnippet.vim

provides neosnippet autocomplete for asyncomplete.vim
Vim Script
10
star
33

quickpick-colorschemes.vim

Colorscheme picker for quickpick.vim
Vim Script
10
star
34

asyncomplete-tscompletejob.vim

provides typescript autocomplete for asyncomplete.vim via tscompletejob
Vim Script
9
star
35

lua-callbag

Lua
8
star
36

surrealdb-migrator

Rust
8
star
37

nuget-button

javascript helper for generating nuget button
JavaScript
8
star
38

lua-eventbus

Lua
8
star
39

writing-vim-plugins-in-lua

7
star
40

asyncomplete-emmet.vim

Vim Script
6
star
41

asyncomplete-necosyntax.vim

provides syntax autocomplete for asyncomplete.vim via necosyntax
Vim Script
6
star
42

win32-c-boilerplate

boilerplate code for win32 c binaries
Makefile
6
star
43

universal-typescript-boilerplate

TypeScript
5
star
44

Facebook.Extensions.Task

C# v5 async extensions for Facebook C# SDK
C#
5
star
45

gitignore

common gitignore files for .net development
5
star
46

opengraph.net

C# Facebook OpenGraph.NET library fork from http://opengraph.codeplex.com
C#
5
star
47

rax

middleware for .net (trying to make owin better)
C#
4
star
48

quickpick-lsp.vim

Vim Script
4
star
49

sprockets-dotnet

Sprockets style dependency resolver for .NET
JavaScript
4
star
50

dark-themes

Dark themes for various text editors - Visual Studio, Notepad++, Vim, Eclipse
Vim Script
4
star
51

Facebook.Moq

Moq helpers for Facebook C# SDK
C#
4
star
52

linqtofacebook

Linq Provider for Facebook Graph API
C#
4
star
53

typescript-webpack-umd-boilerplate

JavaScript
4
star
54

NancyFacebookSample

NancyFx + Facebook C# SDK
C#
4
star
55

winzsh

Fork of https://sourceforge.net/projects/zsh-nt/
C
4
star
56

azure-sdk-for-net-tasks

TPL extensions for Azure SDK for .NET
C#
4
star
57

quickpick-npm.vim

Vim Script
3
star
58

dwm-win32-6

C
3
star
59

ProfilesAndSettings

Stores my profile and settings for PowerShell, gitconfig, hgrc, irbc
Vim Script
3
star
60

hn-react-mobx

HackerNews + MobX + React
JavaScript
3
star
61

socket-io-net

socket.io server implemented in .net and owin
JavaScript
3
star
62

github

github api wrapper for .net
C#
3
star
63

backbone-js-on-nancy

Sample demonstrating Single Page App using Backbone JS and NancyFX
JavaScript
3
star
64

SimpleFx

SimpleFX is a list of .NET libraries that match the Simple ethos and does its job well.
3
star
65

vs-erc

C#
3
star
66

synology-package-template

Shell
3
star
67

ctrlp-env

ctrlp extension to view environment variables
Vim Script
2
star
68

Unity.Wcf

unity di for wcf
C#
2
star
69

js-namespace

Javscript Namespace Library
JavaScript
2
star
70

wilo

Rust
2
star
71

zcloud

Shell
2
star
72

moonrepo-rust-vite-template

CSS
2
star
73

vim-fz-extras

Vim Script
2
star
74

go-coreutils

coreutils written in go
Go
2
star
75

tsearch

Rust
2
star
76

quickpick-filetypes.vim

filetype picker for quickpick.vim
Vim Script
2
star
77

my-sublimetext-settings

My Sublime Text 2 settings for Mac and Windows
2
star
78

vsnip-snippets

My snippets for https://github.com/hrsh7th/vim-vsnip
2
star
79

reactjs-typescript-boilerplate

JavaScript
2
star
80

trillium-send-file

Rust
1
star
81

expressjs-boilerplate

expressjs/backbone boilerplate
JavaScript
1
star
82

dwmjs

C
1
star
83

cowsay.rs

Rust
1
star
84

hapijs-sample

JavaScript
1
star
85

my-node-playground

JavaScript
1
star
86

TaskExtensions

Helper Extensions methods for Task Parallel Library
C#
1
star
87

Prabir.CocoR

Coco/R plugin for Visual Studio
C#
1
star
88

NuGetPowerShellScripts

helpers powershell scripts for nuget
1
star
89

salvo-template

Rust
1
star
90

ELMAH.MySql

MySql provider for ELMAH
1
star
91

docker-static-site

HTML
1
star
92

vfs-s3

Amazon S3 backend for @c9/vfs
JavaScript
1
star
93

StyleCopCmd

Fork of StyleCopCmd from http://nichesoftware.co.nz/page/373/stylecop-cmd-version-history
Ruby
1
star
94

Nancy.Facebook.RealtimeSubscription

C#
1
star
95

objstor

object store
Rust
1
star
96

reactjs-boilerplate

ReactJS boilerplate code with WebPack
JavaScript
1
star
97

dotnet-in-python

C#
1
star
98

SimpleBlog

Simple .NET Blog written in OWIN
C#
1
star
99

python-sdk

This SDK is deprecated. It does not support the new cookie format that we rolled out as part of the OAuth Migration. In short, it doesn't work. We currently have no plans to update it. Feel free to clone this repository and modify.
Python
1
star