Skip to content

Instantly share code, notes, and snippets.

@osyo-manga
Last active January 4, 2016 07:19
Show Gist options
  • Select an option

  • Save osyo-manga/8587838 to your computer and use it in GitHub Desktop.

Select an option

Save osyo-manga/8587838 to your computer and use it in GitHub Desktop.
ProcessManager Performance
command! -bar TimerStart let start_time = reltime()
command! -bar TimerEnd echo reltimestr(reltime(start_time)) | unlet start_time
command! -nargs=1 Timer
\ TimerStart
\| call eval(chained#script_function_to_function_symbol(<q-args>, chained#SNR()))
\| TimerEnd
let s:P = vital#of("vital").import("ProcessManager")
function! s:if_python()
return pyeval("pm_test.test()")
endfunction
function! s:process_manager()
call s:P.writeln("test", 'pm_test.test()')
return s:P.read_wait("test", 10, ['>>>'])
endfunction
function! s:main()
python import pm_test
TimerStart
let result1 = s:if_python()
TimerEnd
call s:P.touch("test", "python -i")
call s:P.read_wait("test", 3, ['>>>'])
call s:P.writeln("test", 'import pm_test')
echo s:P.read_wait("test", 3, ['>>>'])
TimerStart
let result2 = s:process_manager()
TimerEnd
call s:P.kill("test")
echo len(result1) == len(result2[0])
endfunction
call s:main()
import sys
def test():
result = ""
for line in open("test.txt", "r"):
result += line
return result
<!DOCTYPE html>
<html>
<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# githubog: http://ogp.me/ns/fb/githubog#">
<meta charset='utf-8'>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>vital.vim/autoload/vital/__latest__/ProcessManager.vim at master · vim-jp/vital.vim</title>
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub" />
<link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub" />
<link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-114.png" />
<link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114.png" />
<link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-144.png" />
<link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144.png" />
<link rel="logo" type="image/svg" href="https://github-media-downloads.s3.amazonaws.com/github-logo.svg" />
<meta property="og:image" content="https://github.global.ssl.fastly.net/images/modules/logos_page/Octocat.png">
<meta name="hostname" content="github-fe122-cp1-prd.iad.github.net">
<meta name="ruby" content="ruby 2.1.0p0-github-tcmalloc (60139581e1) [x86_64-linux]">
<link rel="assets" href="https://github.global.ssl.fastly.net/">
<link rel="conduit-xhr" href="https://ghconduit.com:25035/">
<link rel="xhr-socket" href="/_sockets" />
<meta name="msapplication-TileImage" content="/windows-tile.png" />
<meta name="msapplication-TileColor" content="#ffffff" />
<meta name="selected-link" value="repo_source" data-pjax-transient />
<meta content="collector.githubapp.com" name="octolytics-host" /><meta content="collector-cdn.github.com" name="octolytics-script-host" /><meta content="github" name="octolytics-app-id" /><meta content="B6F95C6A:6644:E50EC4:52E18AFE" name="octolytics-dimension-request_id" /><meta content="214488" name="octolytics-actor-id" /><meta content="osyo-manga" name="octolytics-actor-login" /><meta content="e5012931f92cc8195a7f530c4e37bcc88d86a6df4ea3fd06d12d9d5795f6d0e8" name="octolytics-actor-hash" />
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
<meta content="authenticity_token" name="csrf-param" />
<meta content="QJ+IADlDg9SxDImNEnlVQuqnrERp2WaGGsoyvKtaTk4=" name="csrf-token" />
<link href="https://github.global.ssl.fastly.net/assets/github-43087292f81aebbe92f90a36344865c4ad8170a0.css" media="all" rel="stylesheet" type="text/css" />
<link href="https://github.global.ssl.fastly.net/assets/github2-d23a1b1c4a1bc509a0ca67face2fb37ef257f599.css" media="all" rel="stylesheet" type="text/css" />
<script src="https://github.global.ssl.fastly.net/assets/frameworks-bf5987648bb83690ac0a5e955f74bbaf6ba44c4a.js" type="text/javascript"></script>
<script async="async" defer="defer" src="https://github.global.ssl.fastly.net/assets/github-eab207422bd65ea8c46ef3d26d6fbcc74bba89ce.js" type="text/javascript"></script>
<meta http-equiv="x-pjax-version" content="1ceda3c4fa0194817b46f4df6a3f2c23">
<link data-pjax-transient rel='permalink' href='/vim-jp/vital.vim/blob/3e229e28b002d42b9ca0d15bddddf0872fa2eed0/autoload/vital/__latest__/ProcessManager.vim'>
<meta property="og:title" content="vital.vim"/>
<meta property="og:type" content="githubog:gitrepository"/>
<meta property="og:url" content="https://github.com/vim-jp/vital.vim"/>
<meta property="og:image" content="https://github.global.ssl.fastly.net/images/gravatars/gravatar-user-420.png"/>
<meta property="og:site_name" content="GitHub"/>
<meta property="og:description" content="vital.vim - A comprehensive Vim utility functions for Vim plugins"/>
<meta name="description" content="vital.vim - A comprehensive Vim utility functions for Vim plugins" />
<meta content="1051958" name="octolytics-dimension-user_id" /><meta content="vim-jp" name="octolytics-dimension-user_login" /><meta content="1308435" name="octolytics-dimension-repository_id" /><meta content="vim-jp/vital.vim" name="octolytics-dimension-repository_nwo" /><meta content="true" name="octolytics-dimension-repository_public" /><meta content="false" name="octolytics-dimension-repository_is_fork" /><meta content="1308435" name="octolytics-dimension-repository_network_root_id" /><meta content="vim-jp/vital.vim" name="octolytics-dimension-repository_network_root_nwo" />
<link href="https://github.com/vim-jp/vital.vim/commits/master.atom" rel="alternate" title="Recent Commits to vital.vim:master" type="application/atom+xml" />
</head>
<body class="logged_in env-production windows vis-public page-blob">
<div class="wrapper">
<div class="header header-logged-in true">
<div class="container clearfix">
<a class="header-logo-invertocat" href="https://github.com/">
<span class="mega-octicon octicon-mark-github"></span>
</a>
<a href="/vim-jp/vital.vim/notifications" class="notification-indicator tooltipped downwards contextually-unread" data-gotokey="n" title="You have unread notifications in this repository">
<span class="mail-status unread"></span>
</a>
<div class="command-bar js-command-bar in-repository">
<form accept-charset="UTF-8" action="/search" class="command-bar-form" id="top_search_form" method="get">
<input type="text" data-hotkey="/ s" name="q" id="js-command-bar-field" placeholder="Search or type a command" tabindex="1" autocapitalize="off"
data-username="osyo-manga"
data-repo="vim-jp/vital.vim"
data-branch="master"
data-sha="e9e83ed3a8ffeefb55aeb10af4b80747448aeda6"
>
<input type="hidden" name="nwo" value="vim-jp/vital.vim" />
<div class="select-menu js-menu-container js-select-menu search-context-select-menu">
<span class="minibutton select-menu-button js-menu-target">
<span class="js-select-button">This repository</span>
</span>
<div class="select-menu-modal-holder js-menu-content js-navigation-container">
<div class="select-menu-modal">
<div class="select-menu-item js-navigation-item js-this-repository-navigation-item selected">
<span class="select-menu-item-icon octicon octicon-check"></span>
<input type="radio" class="js-search-this-repository" name="search_target" value="repository" checked="checked" />
<div class="select-menu-item-text js-select-button-text">This repository</div>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item js-all-repositories-navigation-item">
<span class="select-menu-item-icon octicon octicon-check"></span>
<input type="radio" name="search_target" value="global" />
<div class="select-menu-item-text js-select-button-text">All repositories</div>
</div> <!-- /.select-menu-item -->
</div>
</div>
</div>
<span class="octicon help tooltipped downwards" title="Show command bar help">
<span class="octicon octicon-question"></span>
</span>
<input type="hidden" name="ref" value="cmdform">
</form>
<ul class="top-nav">
<li class="explore"><a href="/explore">Explore</a></li>
<li><a href="https://gist.github.com">Gist</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="https://help.github.com">Help</a></li>
</ul>
</div>
<ul id="user-links">
<li>
<a href="/osyo-manga" class="name">
<img height="20" src="https://1.gravatar.com/avatar/3931098ae486b6df619050c63e24f6cc?d=https%3A%2F%2Fidenticons.github.com%2Fc192b911f32678010c36ee637415e182.png&amp;r=x&amp;s=140" width="20" /> osyo-manga
</a>
</li>
<li class="new-menu dropdown-toggle js-menu-container">
<a href="#" class="js-menu-target tooltipped downwards" title="Create new…">
<span class="octicon octicon-plus"></span>
<span class="dropdown-arrow"></span>
</a>
<div class="js-menu-content">
</div>
</li>
<li>
<a href="/settings/profile" id="account_settings"
class="tooltipped downwards"
aria-label="Account settings "
title="Account settings ">
<span class="octicon octicon-tools"></span>
</a>
</li>
<li>
<a class="tooltipped downwards" href="/logout" data-method="post" id="logout" title="Sign out" aria-label="Sign out">
<span class="octicon octicon-log-out"></span>
</a>
</li>
</ul>
<div class="js-new-dropdown-contents hidden">
<ul class="dropdown-menu">
<li>
<a href="/new"><span class="octicon octicon-repo-create"></span> New repository</a>
</li>
<li>
<a href="/organizations/new"><span class="octicon octicon-organization"></span> New organization</a>
</li>
<li class="section-title">
<span title="vim-jp/vital.vim">This repository</span>
</li>
<li>
<a href="/vim-jp/vital.vim/issues/new"><span class="octicon octicon-issue-opened"></span> New issue</a>
</li>
</ul>
</div>
</div>
</div>
<div class="site" itemscope itemtype="http://schema.org/WebPage">
<div class="pagehead repohead instapaper_ignore readability-menu">
<div class="container">
<ul class="pagehead-actions">
<li class="subscription">
<form accept-charset="UTF-8" action="/notifications/subscribe" class="js-social-container" data-autosubmit="true" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="QJ+IADlDg9SxDImNEnlVQuqnrERp2WaGGsoyvKtaTk4=" /></div> <input id="repository_id" name="repository_id" type="hidden" value="1308435" />
<div class="select-menu js-menu-container js-select-menu">
<a class="social-count js-social-count" href="/vim-jp/vital.vim/watchers">
22
</a>
<span class="minibutton select-menu-button with-count js-menu-target" role="button" tabindex="0">
<span class="js-select-button">
<span class="octicon octicon-eye-unwatch"></span>
Unwatch
</span>
</span>
<div class="select-menu-modal-holder">
<div class="select-menu-modal subscription-menu-modal js-menu-content">
<div class="select-menu-header">
<span class="select-menu-title">Notification status</span>
<span class="octicon octicon-remove-close js-menu-close"></span>
</div> <!-- /.select-menu-header -->
<div class="select-menu-list js-navigation-container" role="menu">
<div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0">
<span class="select-menu-item-icon octicon octicon-check"></span>
<div class="select-menu-item-text">
<input id="do_included" name="do" type="radio" value="included" />
<h4>Not watching</h4>
<span class="description">You only receive notifications for conversations in which you participate or are @mentioned.</span>
<span class="js-select-button-text hidden-select-button-text">
<span class="octicon octicon-eye-watch"></span>
Watch
</span>
</div>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item selected" role="menuitem" tabindex="0">
<span class="select-menu-item-icon octicon octicon octicon-check"></span>
<div class="select-menu-item-text">
<input checked="checked" id="do_subscribed" name="do" type="radio" value="subscribed" />
<h4>Watching</h4>
<span class="description">You receive notifications for all conversations in this repository.</span>
<span class="js-select-button-text hidden-select-button-text">
<span class="octicon octicon-eye-unwatch"></span>
Unwatch
</span>
</div>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0">
<span class="select-menu-item-icon octicon octicon-check"></span>
<div class="select-menu-item-text">
<input id="do_ignore" name="do" type="radio" value="ignore" />
<h4>Ignoring</h4>
<span class="description">You do not receive any notifications for conversations in this repository.</span>
<span class="js-select-button-text hidden-select-button-text">
<span class="octicon octicon-mute"></span>
Stop ignoring
</span>
</div>
</div> <!-- /.select-menu-item -->
</div> <!-- /.select-menu-list -->
</div> <!-- /.select-menu-modal -->
</div> <!-- /.select-menu-modal-holder -->
</div> <!-- /.select-menu -->
</form>
</li>
<li>
<div class="js-toggler-container js-social-container starring-container ">
<a href="/vim-jp/vital.vim/unstar"
class="minibutton with-count js-toggler-target star-button starred upwards"
title="Unstar this repository" data-remote="true" data-method="post" rel="nofollow">
<span class="octicon octicon-star-delete"></span><span class="text">Unstar</span>
</a>
<a href="/vim-jp/vital.vim/star"
class="minibutton with-count js-toggler-target star-button unstarred upwards"
title="Star this repository" data-remote="true" data-method="post" rel="nofollow">
<span class="octicon octicon-star"></span><span class="text">Star</span>
</a>
<a class="social-count js-social-count" href="/vim-jp/vital.vim/stargazers">
79
</a>
</div>
</li>
<li>
<a href="/vim-jp/vital.vim/fork" class="minibutton with-count js-toggler-target fork-button lighter upwards" title="Fork this repo" rel="facebox nofollow">
<span class="octicon octicon-git-branch-create"></span><span class="text">Fork</span>
</a>
<a href="/vim-jp/vital.vim/network" class="social-count">26</a>
</li>
</ul>
<h1 itemscope itemtype="http://data-vocabulary.org/Breadcrumb" class="entry-title public">
<span class="repo-label"><span>public</span></span>
<span class="mega-octicon octicon-repo"></span>
<span class="author">
<a href="/vim-jp" class="url fn" itemprop="url" rel="author"><span itemprop="title">vim-jp</span></a>
</span>
<span class="repohead-name-divider">/</span>
<strong><a href="/vim-jp/vital.vim" class="js-current-repository js-repo-home-link">vital.vim</a></strong>
<span class="page-context-loader">
<img alt="Octocat-spinner-32" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</span>
</h1>
</div><!-- /.container -->
</div><!-- /.repohead -->
<div class="container">
<div class="repository-with-sidebar repo-container ">
<div class="repository-sidebar">
<div class="sunken-menu vertical-right repo-nav js-repo-nav js-repository-container-pjax js-octicon-loaders">
<div class="sunken-menu-contents">
<ul class="sunken-menu-group">
<li class="tooltipped leftwards" title="Code">
<a href="/vim-jp/vital.vim" aria-label="Code" class="selected js-selected-navigation-item sunken-menu-item" data-gotokey="c" data-pjax="true" data-selected-links="repo_source repo_downloads repo_commits repo_tags repo_branches /vim-jp/vital.vim">
<span class="octicon octicon-code"></span> <span class="full-word">Code</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Issues">
<a href="/vim-jp/vital.vim/issues" aria-label="Issues" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-gotokey="i" data-selected-links="repo_issues /vim-jp/vital.vim/issues">
<span class="octicon octicon-issue-opened"></span> <span class="full-word">Issues</span>
<span class='counter'>28</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Pull Requests">
<a href="/vim-jp/vital.vim/pulls" aria-label="Pull Requests" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-gotokey="p" data-selected-links="repo_pulls /vim-jp/vital.vim/pulls">
<span class="octicon octicon-git-pull-request"></span> <span class="full-word">Pull Requests</span>
<span class='counter'>4</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Wiki">
<a href="/vim-jp/vital.vim/wiki" aria-label="Wiki" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="repo_wiki /vim-jp/vital.vim/wiki">
<span class="octicon octicon-book"></span> <span class="full-word">Wiki</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
</ul>
<div class="sunken-menu-separator"></div>
<ul class="sunken-menu-group">
<li class="tooltipped leftwards" title="Pulse">
<a href="/vim-jp/vital.vim/pulse" aria-label="Pulse" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="pulse /vim-jp/vital.vim/pulse">
<span class="octicon octicon-pulse"></span> <span class="full-word">Pulse</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Graphs">
<a href="/vim-jp/vital.vim/graphs" aria-label="Graphs" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="repo_graphs repo_contributors /vim-jp/vital.vim/graphs">
<span class="octicon octicon-graph"></span> <span class="full-word">Graphs</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Network">
<a href="/vim-jp/vital.vim/network" aria-label="Network" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-selected-links="repo_network /vim-jp/vital.vim/network">
<span class="octicon octicon-git-branch"></span> <span class="full-word">Network</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
</ul>
</div>
</div>
<div class="only-with-full-nav">
<div class="clone-url "
data-protocol-type="http"
data-url="/users/set_protocol?protocol_selector=http&amp;protocol_type=push">
<h3><strong>HTTPS</strong> clone URL</h3>
<div class="clone-url-box">
<input type="text" class="clone js-url-field"
value="https://github.com/vim-jp/vital.vim.git" readonly="readonly">
<span class="js-zeroclipboard url-box-clippy minibutton zeroclipboard-button" data-clipboard-text="https://github.com/vim-jp/vital.vim.git" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
</div>
</div>
<div class="clone-url open"
data-protocol-type="ssh"
data-url="/users/set_protocol?protocol_selector=ssh&amp;protocol_type=push">
<h3><strong>SSH</strong> clone URL</h3>
<div class="clone-url-box">
<input type="text" class="clone js-url-field"
value="git@github.com:vim-jp/vital.vim.git" readonly="readonly">
<span class="js-zeroclipboard url-box-clippy minibutton zeroclipboard-button" data-clipboard-text="git@github.com:vim-jp/vital.vim.git" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
</div>
</div>
<div class="clone-url "
data-protocol-type="subversion"
data-url="/users/set_protocol?protocol_selector=subversion&amp;protocol_type=push">
<h3><strong>Subversion</strong> checkout URL</h3>
<div class="clone-url-box">
<input type="text" class="clone js-url-field"
value="https://github.com/vim-jp/vital.vim" readonly="readonly">
<span class="js-zeroclipboard url-box-clippy minibutton zeroclipboard-button" data-clipboard-text="https://github.com/vim-jp/vital.vim" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
</div>
</div>
<p class="clone-options">You can clone with
<a href="#" class="js-clone-selector" data-protocol="http">HTTPS</a>,
<a href="#" class="js-clone-selector" data-protocol="ssh">SSH</a>,
or <a href="#" class="js-clone-selector" data-protocol="subversion">Subversion</a>.
<span class="octicon help tooltipped upwards" title="Get help on which URL is right for you.">
<a href="https://help.github.com/articles/which-remote-url-should-i-use">
<span class="octicon octicon-question"></span>
</a>
</span>
</p>
<a href="http://windows.github.com" class="minibutton sidebar-button">
<span class="octicon octicon-device-desktop"></span>
Clone in Desktop
</a>
<a href="/vim-jp/vital.vim/archive/master.zip"
class="minibutton sidebar-button"
title="Download this repository as a zip file"
rel="nofollow">
<span class="octicon octicon-cloud-download"></span>
Download ZIP
</a>
</div>
</div><!-- /.repository-sidebar -->
<div id="js-repo-pjax-container" class="repository-content context-loader-container" data-pjax-container>
<!-- blob contrib key: blob_contributors:v21:8865196e6c233067ca43f509eaa36ae4 -->
<p title="This is a placeholder element" class="js-history-link-replace hidden"></p>
<a href="/vim-jp/vital.vim/find/master" data-pjax data-hotkey="t" class="js-show-file-finder" style="display:none">Show File Finder</a>
<div class="file-navigation">
<div class="select-menu js-menu-container js-select-menu" >
<span class="minibutton select-menu-button js-menu-target" data-hotkey="w"
data-master-branch="master"
data-ref="master"
role="button" aria-label="Switch branches or tags" tabindex="0">
<span class="octicon octicon-git-branch"></span>
<i>branch:</i>
<span class="js-select-button">master</span>
</span>
<div class="select-menu-modal-holder js-menu-content js-navigation-container" data-pjax>
<div class="select-menu-modal">
<div class="select-menu-header">
<span class="select-menu-title">Switch branches/tags</span>
<span class="octicon octicon-remove-close js-menu-close"></span>
</div> <!-- /.select-menu-header -->
<div class="select-menu-filters">
<div class="select-menu-text-filter">
<input type="text" aria-label="Find or create a branch…" id="context-commitish-filter-field" class="js-filterable-field js-navigation-enable" placeholder="Find or create a branch…">
</div>
<div class="select-menu-tabs">
<ul>
<li class="select-menu-tab">
<a href="#" data-tab-filter="branches" class="js-select-menu-tab">Branches</a>
</li>
<li class="select-menu-tab">
<a href="#" data-tab-filter="tags" class="js-select-menu-tab">Tags</a>
</li>
</ul>
</div><!-- /.select-menu-tabs -->
</div><!-- /.select-menu-filters -->
<div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="branches">
<div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/Data.Closure/autoload/vital/__latest__/ProcessManager.vim"
data-name="Data.Closure"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="Data.Closure">Data.Closure</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/git_submodule/autoload/vital/__latest__/ProcessManager.vim"
data-name="git_submodule"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="git_submodule">git_submodule</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/logger/autoload/vital/__latest__/ProcessManager.vim"
data-name="logger"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="logger">logger</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item selected">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/master/autoload/vital/__latest__/ProcessManager.vim"
data-name="master"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="master">master</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/optional-prelude/autoload/vital/__latest__/ProcessManager.vim"
data-name="optional-prelude"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="optional-prelude">optional-prelude</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/sqlite-processmanager-wip/autoload/vital/__latest__/ProcessManager.vim"
data-name="sqlite-processmanager-wip"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="sqlite-processmanager-wip">sqlite-processmanager-wip</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/sys.file/autoload/vital/__latest__/ProcessManager.vim"
data-name="sys.file"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="sys.file">sys.file</a>
</div> <!-- /.select-menu-item -->
</div>
<form accept-charset="UTF-8" action="/vim-jp/vital.vim/branches" class="js-create-branch select-menu-item select-menu-new-item-form js-navigation-item js-new-item-form" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="QJ+IADlDg9SxDImNEnlVQuqnrERp2WaGGsoyvKtaTk4=" /></div>
<span class="octicon octicon-git-branch-create select-menu-item-icon"></span>
<div class="select-menu-item-text">
<h4>Create branch: <span class="js-new-item-name"></span></h4>
<span class="description">from ‘master’</span>
</div>
<input type="hidden" name="name" id="name" class="js-new-item-value">
<input type="hidden" name="branch" id="branch" value="master" />
<input type="hidden" name="path" id="path" value="autoload/vital/__latest__/ProcessManager.vim" />
</form> <!-- /.select-menu-item -->
</div> <!-- /.select-menu-list -->
<div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="tags">
<div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
</div>
<div class="select-menu-no-results">Nothing to show</div>
</div> <!-- /.select-menu-list -->
</div> <!-- /.select-menu-modal -->
</div> <!-- /.select-menu-modal-holder -->
</div> <!-- /.select-menu -->
<div class="breadcrumb">
<span class='repo-root js-repo-root'><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/vim-jp/vital.vim" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">vital.vim</span></a></span></span><span class="separator"> / </span><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/vim-jp/vital.vim/tree/master/autoload" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">autoload</span></a></span><span class="separator"> / </span><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/vim-jp/vital.vim/tree/master/autoload/vital" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">vital</span></a></span><span class="separator"> / </span><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/vim-jp/vital.vim/tree/master/autoload/vital/__latest__" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">__latest__</span></a></span><span class="separator"> / </span><strong class="final-path">ProcessManager.vim</strong> <span class="js-zeroclipboard minibutton zeroclipboard-button" data-clipboard-text="autoload/vital/__latest__/ProcessManager.vim" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
</div>
</div>
<div class="commit file-history-tease">
<img class="main-avatar" height="24" src="https://1.gravatar.com/avatar/d9d0ceb387e3b6de5c4562af78e8a910?d=https%3A%2F%2Fidenticons.github.com%2F0fc780bb04e74ce5ed154d2e49cfe2fd.png&amp;r=x&amp;s=140" width="24" />
<span class="author"><a href="/ujihisa" rel="author">ujihisa</a></span>
<time class="js-relative-date" datetime="2013-12-21T20:30:11-08:00" title="2013-12-21 20:30:11">December 21, 2013</time>
<div class="commit-title">
<a href="/vim-jp/vital.vim/commit/240d2c93ff042c7afd291cdb301c0c1004136a73" class="message" data-pjax="true" title="ProcessManager: cosmetic change">ProcessManager: cosmetic change</a>
</div>
<div class="participation">
<p class="quickstat"><a href="#blob_contributors_box" rel="facebox"><strong>4</strong> contributors</a></p>
<a class="avatar tooltipped downwards" title="ujihisa" href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim?author=ujihisa"><img height="20" src="https://1.gravatar.com/avatar/d9d0ceb387e3b6de5c4562af78e8a910?d=https%3A%2F%2Fidenticons.github.com%2F0fc780bb04e74ce5ed154d2e49cfe2fd.png&amp;r=x&amp;s=140" width="20" /></a>
<a class="avatar tooltipped downwards" title="mattn" href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim?author=mattn"><img height="20" src="https://2.gravatar.com/avatar/1ba93fd9e39ebf48777f217c38e768fd?d=https%3A%2F%2Fidenticons.github.com%2F70bb83c9272e6c4bc6e83e0a55c7c9c3.png&amp;r=x&amp;s=140" width="20" /></a>
<a class="avatar tooltipped downwards" title="ichizok" href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim?author=ichizok"><img height="20" src="https://2.gravatar.com/avatar/9b780db659a9a657e775b07521be3efc?d=https%3A%2F%2Fidenticons.github.com%2Fa8a23399cfd9dee3779fad0970ec23dc.png&amp;r=x&amp;s=140" width="20" /></a>
<a class="avatar tooltipped downwards" title="alpaca-tc" href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim?author=alpaca-tc"><img height="20" src="https://1.gravatar.com/avatar/c2fe23111675890bf8bc59afb312990e?d=https%3A%2F%2Fidenticons.github.com%2F8e3d7e94dcb83a1fda7307b9f75b186c.png&amp;r=x&amp;s=140" width="20" /></a>
</div>
<div id="blob_contributors_box" style="display:none">
<h2 class="facebox-header">Users who have contributed to this file</h2>
<ul class="facebox-user-list">
<li class="facebox-user-list-item">
<img height="24" src="https://1.gravatar.com/avatar/d9d0ceb387e3b6de5c4562af78e8a910?d=https%3A%2F%2Fidenticons.github.com%2F0fc780bb04e74ce5ed154d2e49cfe2fd.png&amp;r=x&amp;s=140" width="24" />
<a href="/ujihisa">ujihisa</a>
</li>
<li class="facebox-user-list-item">
<img height="24" src="https://2.gravatar.com/avatar/1ba93fd9e39ebf48777f217c38e768fd?d=https%3A%2F%2Fidenticons.github.com%2F70bb83c9272e6c4bc6e83e0a55c7c9c3.png&amp;r=x&amp;s=140" width="24" />
<a href="/mattn">mattn</a>
</li>
<li class="facebox-user-list-item">
<img height="24" src="https://2.gravatar.com/avatar/9b780db659a9a657e775b07521be3efc?d=https%3A%2F%2Fidenticons.github.com%2Fa8a23399cfd9dee3779fad0970ec23dc.png&amp;r=x&amp;s=140" width="24" />
<a href="/ichizok">ichizok</a>
</li>
<li class="facebox-user-list-item">
<img height="24" src="https://1.gravatar.com/avatar/c2fe23111675890bf8bc59afb312990e?d=https%3A%2F%2Fidenticons.github.com%2F8e3d7e94dcb83a1fda7307b9f75b186c.png&amp;r=x&amp;s=140" width="24" />
<a href="/alpaca-tc">alpaca-tc</a>
</li>
</ul>
</div>
</div>
<div id="files" class="bubble">
<div class="file">
<div class="meta">
<div class="info">
<span class="icon"><b class="octicon octicon-file-text"></b></span>
<span class="mode" title="File Mode">file</span>
<span>125 lines (103 sloc)</span>
<span>2.881 kb</span>
</div>
<div class="actions">
<div class="button-group">
<a class="minibutton tooltipped leftwards"
href="http://windows.github.com" title="Open this file in GitHub for Windows">
<span class="octicon octicon-device-desktop"></span> Open
</a>
<a class="minibutton"
href="/vim-jp/vital.vim/edit/master/autoload/vital/__latest__/ProcessManager.vim"
data-method="post" rel="nofollow" data-hotkey="e">Edit</a>
<a href="/vim-jp/vital.vim/raw/master/autoload/vital/__latest__/ProcessManager.vim" class="button minibutton " id="raw-url">Raw</a>
<a href="/vim-jp/vital.vim/blame/master/autoload/vital/__latest__/ProcessManager.vim" class="button minibutton ">Blame</a>
<a href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim" class="button minibutton " rel="nofollow">History</a>
</div><!-- /.button-group -->
<a class="minibutton danger empty-icon tooltipped downwards"
href="/vim-jp/vital.vim/delete/master/autoload/vital/__latest__/ProcessManager.vim"
title=""
data-method="post" data-test-id="delete-blob-file" rel="nofollow">
Delete
</a>
</div><!-- /.actions -->
</div>
<div class="blob-wrapper data type-viml js-blob-data">
<table class="file-code file-diff">
<tr class="file-code-line">
<td class="blob-line-nums">
<span id="L1" rel="#L1">1</span>
<span id="L2" rel="#L2">2</span>
<span id="L3" rel="#L3">3</span>
<span id="L4" rel="#L4">4</span>
<span id="L5" rel="#L5">5</span>
<span id="L6" rel="#L6">6</span>
<span id="L7" rel="#L7">7</span>
<span id="L8" rel="#L8">8</span>
<span id="L9" rel="#L9">9</span>
<span id="L10" rel="#L10">10</span>
<span id="L11" rel="#L11">11</span>
<span id="L12" rel="#L12">12</span>
<span id="L13" rel="#L13">13</span>
<span id="L14" rel="#L14">14</span>
<span id="L15" rel="#L15">15</span>
<span id="L16" rel="#L16">16</span>
<span id="L17" rel="#L17">17</span>
<span id="L18" rel="#L18">18</span>
<span id="L19" rel="#L19">19</span>
<span id="L20" rel="#L20">20</span>
<span id="L21" rel="#L21">21</span>
<span id="L22" rel="#L22">22</span>
<span id="L23" rel="#L23">23</span>
<span id="L24" rel="#L24">24</span>
<span id="L25" rel="#L25">25</span>
<span id="L26" rel="#L26">26</span>
<span id="L27" rel="#L27">27</span>
<span id="L28" rel="#L28">28</span>
<span id="L29" rel="#L29">29</span>
<span id="L30" rel="#L30">30</span>
<span id="L31" rel="#L31">31</span>
<span id="L32" rel="#L32">32</span>
<span id="L33" rel="#L33">33</span>
<span id="L34" rel="#L34">34</span>
<span id="L35" rel="#L35">35</span>
<span id="L36" rel="#L36">36</span>
<span id="L37" rel="#L37">37</span>
<span id="L38" rel="#L38">38</span>
<span id="L39" rel="#L39">39</span>
<span id="L40" rel="#L40">40</span>
<span id="L41" rel="#L41">41</span>
<span id="L42" rel="#L42">42</span>
<span id="L43" rel="#L43">43</span>
<span id="L44" rel="#L44">44</span>
<span id="L45" rel="#L45">45</span>
<span id="L46" rel="#L46">46</span>
<span id="L47" rel="#L47">47</span>
<span id="L48" rel="#L48">48</span>
<span id="L49" rel="#L49">49</span>
<span id="L50" rel="#L50">50</span>
<span id="L51" rel="#L51">51</span>
<span id="L52" rel="#L52">52</span>
<span id="L53" rel="#L53">53</span>
<span id="L54" rel="#L54">54</span>
<span id="L55" rel="#L55">55</span>
<span id="L56" rel="#L56">56</span>
<span id="L57" rel="#L57">57</span>
<span id="L58" rel="#L58">58</span>
<span id="L59" rel="#L59">59</span>
<span id="L60" rel="#L60">60</span>
<span id="L61" rel="#L61">61</span>
<span id="L62" rel="#L62">62</span>
<span id="L63" rel="#L63">63</span>
<span id="L64" rel="#L64">64</span>
<span id="L65" rel="#L65">65</span>
<span id="L66" rel="#L66">66</span>
<span id="L67" rel="#L67">67</span>
<span id="L68" rel="#L68">68</span>
<span id="L69" rel="#L69">69</span>
<span id="L70" rel="#L70">70</span>
<span id="L71" rel="#L71">71</span>
<span id="L72" rel="#L72">72</span>
<span id="L73" rel="#L73">73</span>
<span id="L74" rel="#L74">74</span>
<span id="L75" rel="#L75">75</span>
<span id="L76" rel="#L76">76</span>
<span id="L77" rel="#L77">77</span>
<span id="L78" rel="#L78">78</span>
<span id="L79" rel="#L79">79</span>
<span id="L80" rel="#L80">80</span>
<span id="L81" rel="#L81">81</span>
<span id="L82" rel="#L82">82</span>
<span id="L83" rel="#L83">83</span>
<span id="L84" rel="#L84">84</span>
<span id="L85" rel="#L85">85</span>
<span id="L86" rel="#L86">86</span>
<span id="L87" rel="#L87">87</span>
<span id="L88" rel="#L88">88</span>
<span id="L89" rel="#L89">89</span>
<span id="L90" rel="#L90">90</span>
<span id="L91" rel="#L91">91</span>
<span id="L92" rel="#L92">92</span>
<span id="L93" rel="#L93">93</span>
<span id="L94" rel="#L94">94</span>
<span id="L95" rel="#L95">95</span>
<span id="L96" rel="#L96">96</span>
<span id="L97" rel="#L97">97</span>
<span id="L98" rel="#L98">98</span>
<span id="L99" rel="#L99">99</span>
<span id="L100" rel="#L100">100</span>
<span id="L101" rel="#L101">101</span>
<span id="L102" rel="#L102">102</span>
<span id="L103" rel="#L103">103</span>
<span id="L104" rel="#L104">104</span>
<span id="L105" rel="#L105">105</span>
<span id="L106" rel="#L106">106</span>
<span id="L107" rel="#L107">107</span>
<span id="L108" rel="#L108">108</span>
<span id="L109" rel="#L109">109</span>
<span id="L110" rel="#L110">110</span>
<span id="L111" rel="#L111">111</span>
<span id="L112" rel="#L112">112</span>
<span id="L113" rel="#L113">113</span>
<span id="L114" rel="#L114">114</span>
<span id="L115" rel="#L115">115</span>
<span id="L116" rel="#L116">116</span>
<span id="L117" rel="#L117">117</span>
<span id="L118" rel="#L118">118</span>
<span id="L119" rel="#L119">119</span>
<span id="L120" rel="#L120">120</span>
<span id="L121" rel="#L121">121</span>
<span id="L122" rel="#L122">122</span>
<span id="L123" rel="#L123">123</span>
<span id="L124" rel="#L124">124</span>
</td>
<td class="blob-line-code">
<div class="code-body highlight"><pre><div class='line' id='LC1'><span class="k">let</span> <span class="k">s</span>:save_cpo <span class="p">=</span> &amp;<span class="nb">cpo</span></div><div class='line' id='LC2'><span class="k">set</span> <span class="nb">cpo</span>&amp;<span class="k">vim</span></div><div class='line' id='LC3'><br/></div><div class='line' id='LC4'><span class="k">let</span> <span class="k">s</span>:_processes <span class="p">=</span> {}</div><div class='line' id='LC5'><br/></div><div class='line' id='LC6'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:_vital_loaded<span class="p">(</span>V<span class="p">)</span></div><div class='line' id='LC7'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">s</span>:V <span class="p">=</span> <span class="k">a</span>:V</div><div class='line' id='LC8'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">s</span>:S <span class="p">=</span> <span class="k">s</span>:V.import<span class="p">(</span><span class="s1">&#39;Data.String&#39;</span><span class="p">)</span></div><div class='line' id='LC9'><span class="k">endfunction</span></div><div class='line' id='LC10'><br/></div><div class='line' id='LC11'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:_vital_depends<span class="p">()</span></div><div class='line' id='LC12'>&nbsp;&nbsp;<span class="k">return</span> [<span class="s1">&#39;Data.String&#39;</span>]</div><div class='line' id='LC13'><span class="k">endfunction</span></div><div class='line' id='LC14'><br/></div><div class='line' id='LC15'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:is_available<span class="p">()</span></div><div class='line' id='LC16'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:V.has_vimproc<span class="p">()</span></div><div class='line' id='LC17'><span class="k">endfunction</span></div><div class='line' id='LC18'><br/></div><div class='line' id='LC19'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:touch<span class="p">(</span>name<span class="p">,</span> cmd<span class="p">)</span></div><div class='line' id='LC20'>&nbsp;&nbsp;<span class="k">if</span> has_key<span class="p">(</span><span class="k">s</span>:_processes<span class="p">,</span> <span class="k">a</span>:name<span class="p">)</span></div><div class='line' id='LC21'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="s1">&#39;existing&#39;</span></div><div class='line' id='LC22'>&nbsp;&nbsp;<span class="k">else</span></div><div class='line' id='LC23'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> vimproc#popen3<span class="p">(</span><span class="k">a</span>:cmd<span class="p">)</span></div><div class='line' id='LC24'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> <span class="k">s</span>:_processes[<span class="k">a</span>:name] <span class="p">=</span> <span class="k">p</span></div><div class='line' id='LC25'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="s1">&#39;new&#39;</span></div><div class='line' id='LC26'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC27'><span class="k">endfunction</span></div><div class='line' id='LC28'><br/></div><div class='line' id='LC29'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:stop<span class="p">(</span><span class="k">i</span><span class="p">)</span></div><div class='line' id='LC30'>&nbsp;&nbsp;<span class="k">echomsg</span> <span class="s2">&quot;Vital.ProcessManager.stop() is deprecated! Please use kill() or term() instead.&quot;</span></div><div class='line' id='LC31'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:kill<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC32'><span class="k">endfunction</span></div><div class='line' id='LC33'><br/></div><div class='line' id='LC34'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:_stop<span class="p">(</span><span class="k">i</span><span class="p">,</span> ...<span class="p">)</span></div><div class='line' id='LC35'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC36'>&nbsp;&nbsp;<span class="k">call</span> <span class="k">p</span>.kill<span class="p">(</span><span class="k">get</span><span class="p">(</span><span class="k">a</span>:<span class="m">000</span><span class="p">,</span> <span class="m">0</span><span class="p">,</span> <span class="m">0</span><span class="p">)</span> ? <span class="k">g</span>:vimproc#SIGKILL : <span class="k">g</span>:vimproc#SIGTERM<span class="p">)</span></div><div class='line' id='LC37'><span class="c"> &quot; call p.waitpid()</span></div><div class='line' id='LC38'>&nbsp;&nbsp;unlet <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC39'><span class="k">endfunction</span></div><div class='line' id='LC40'><br/></div><div class='line' id='LC41'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:<span class="nb">term</span><span class="p">(</span><span class="k">i</span><span class="p">)</span></div><div class='line' id='LC42'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:_stop<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">,</span> <span class="m">0</span><span class="p">)</span></div><div class='line' id='LC43'><span class="k">endfunction</span></div><div class='line' id='LC44'><br/></div><div class='line' id='LC45'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:kill<span class="p">(</span><span class="k">i</span><span class="p">)</span></div><div class='line' id='LC46'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:_stop<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">,</span> <span class="m">1</span><span class="p">)</span></div><div class='line' id='LC47'><span class="k">endfunction</span></div><div class='line' id='LC48'><br/></div><div class='line' id='LC49'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:read<span class="p">(</span><span class="k">i</span><span class="p">,</span> endpatterns<span class="p">)</span></div><div class='line' id='LC50'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:read_wait<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">,</span> <span class="m">0</span>.<span class="m">05</span><span class="p">,</span> <span class="k">a</span>:endpatterns<span class="p">)</span></div><div class='line' id='LC51'><span class="k">endfunction</span></div><div class='line' id='LC52'><br/></div><div class='line' id='LC53'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:read_wait<span class="p">(</span><span class="k">i</span><span class="p">,</span> wait<span class="p">,</span> endpatterns<span class="p">)</span></div><div class='line' id='LC54'>&nbsp;&nbsp;<span class="k">if</span> <span class="p">!</span>has_key<span class="p">(</span><span class="k">s</span>:_processes<span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC55'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">throw</span> printf<span class="p">(</span><span class="s2">&quot;ProcessManager doesn&#39;t know about %s&quot;</span><span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC56'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC57'><br/></div><div class='line' id='LC58'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC59'><br/></div><div class='line' id='LC60'>&nbsp;&nbsp;<span class="k">if</span> <span class="k">s</span>:status<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">)</span> <span class="p">==</span># <span class="s1">&#39;inactive&#39;</span></div><div class='line' id='LC61'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> [<span class="k">p</span>.stdout.read<span class="p">(),</span> <span class="k">p</span>.stderr.read<span class="p">(),</span> <span class="s1">&#39;inactive&#39;</span>]</div><div class='line' id='LC62'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC63'><br/></div><div class='line' id='LC64'>&nbsp;&nbsp;<span class="k">let</span> out_memo <span class="p">=</span> <span class="s1">&#39;&#39;</span></div><div class='line' id='LC65'>&nbsp;&nbsp;<span class="k">let</span> err_memo <span class="p">=</span> <span class="s1">&#39;&#39;</span></div><div class='line' id='LC66'>&nbsp;&nbsp;<span class="k">let</span> lastchanged <span class="p">=</span> reltime<span class="p">()</span></div><div class='line' id='LC67'>&nbsp;&nbsp;<span class="k">while</span> <span class="m">1</span></div><div class='line' id='LC68'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> [<span class="k">x</span><span class="p">,</span> <span class="k">y</span>] <span class="p">=</span> [<span class="k">p</span>.stdout.read<span class="p">(),</span> <span class="k">p</span>.stderr.read<span class="p">()</span>]</div><div class='line' id='LC69'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="k">x</span> <span class="p">==</span># <span class="s1">&#39;&#39;</span> &amp;&amp; <span class="k">y</span> <span class="p">==</span># <span class="s1">&#39;&#39;</span></div><div class='line' id='LC70'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> str2float<span class="p">(</span>reltimestr<span class="p">(</span>reltime<span class="p">(</span>lastchanged<span class="p">)))</span> <span class="p">&gt;</span> <span class="k">a</span>:wait</div><div class='line' id='LC71'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> [out_memo<span class="p">,</span> err_memo<span class="p">,</span> <span class="s1">&#39;timedout&#39;</span>]</div><div class='line' id='LC72'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC73'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">else</span></div><div class='line' id='LC74'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> lastchanged <span class="p">=</span> reltime<span class="p">()</span></div><div class='line' id='LC75'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> out_memo .<span class="p">=</span> <span class="k">x</span></div><div class='line' id='LC76'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> err_memo .<span class="p">=</span> <span class="k">y</span></div><div class='line' id='LC77'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">for</span> pattern <span class="k">in</span> <span class="k">a</span>:endpatterns</div><div class='line' id='LC78'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> out_memo <span class="p">=~</span> <span class="p">(</span><span class="s2">&quot;\\(^\\|\n\\)&quot;</span> . pattern<span class="p">)</span></div><div class='line' id='LC79'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> [<span class="k">s</span>:S.substitute_last<span class="p">(</span>out_memo<span class="p">,</span> pattern<span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">),</span> err_memo<span class="p">,</span> <span class="s1">&#39;matched&#39;</span>]</div><div class='line' id='LC80'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC81'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">endfor</span></div><div class='line' id='LC82'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC83'>&nbsp;&nbsp;<span class="k">endwhile</span></div><div class='line' id='LC84'><span class="k">endfunction</span></div><div class='line' id='LC85'><br/></div><div class='line' id='LC86'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:<span class="nb">write</span><span class="p">(</span><span class="k">i</span><span class="p">,</span> str<span class="p">)</span></div><div class='line' id='LC87'>&nbsp;&nbsp;<span class="k">if</span> <span class="p">!</span>has_key<span class="p">(</span><span class="k">s</span>:_processes<span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC88'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">throw</span> printf<span class="p">(</span><span class="s2">&quot;ProcessManager doesn&#39;t know about %s&quot;</span><span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC89'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC90'>&nbsp;&nbsp;<span class="k">if</span> <span class="k">s</span>:status<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">)</span> <span class="p">==</span># <span class="s1">&#39;inactive&#39;</span></div><div class='line' id='LC91'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="s1">&#39;inactive&#39;</span></div><div class='line' id='LC92'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC93'><br/></div><div class='line' id='LC94'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC95'>&nbsp;&nbsp;<span class="k">call</span> <span class="k">p</span>.stdin.<span class="nb">write</span><span class="p">(</span><span class="k">a</span>:str<span class="p">)</span></div><div class='line' id='LC96'><br/></div><div class='line' id='LC97'>&nbsp;&nbsp;<span class="k">return</span> <span class="s1">&#39;active&#39;</span></div><div class='line' id='LC98'><span class="k">endfunction</span></div><div class='line' id='LC99'><br/></div><div class='line' id='LC100'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:writeln<span class="p">(</span><span class="k">i</span><span class="p">,</span> str<span class="p">)</span></div><div class='line' id='LC101'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:<span class="nb">write</span><span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">,</span> <span class="k">a</span>:str . <span class="s2">&quot;\n&quot;</span><span class="p">)</span></div><div class='line' id='LC102'><span class="k">endfunction</span></div><div class='line' id='LC103'><br/></div><div class='line' id='LC104'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:status<span class="p">(</span><span class="k">i</span><span class="p">)</span></div><div class='line' id='LC105'>&nbsp;&nbsp;<span class="k">if</span> <span class="p">!</span>has_key<span class="p">(</span><span class="k">s</span>:_processes<span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC106'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">throw</span> printf<span class="p">(</span><span class="s2">&quot;ProcessManager doesn&#39;t know about %s&quot;</span><span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC107'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC108'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC109'><span class="c"> &quot; vimproc.kill isn&#39;t to stop but to ask for the current state.</span></div><div class='line' id='LC110'><span class="c"> &quot; return p.kill(0) ? &#39;inactive&#39; : &#39;active&#39;</span></div><div class='line' id='LC111'><span class="c"> &quot; ... checkpid() checks if the process is running AND does waitpid() in C,</span></div><div class='line' id='LC112'><span class="c"> &quot; so it solves zombie processes.</span></div><div class='line' id='LC113'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">get</span><span class="p">(</span><span class="k">p</span>.checkpid<span class="p">(),</span> <span class="m">0</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="p">==</span># <span class="s1">&#39;run&#39;</span></div><div class='line' id='LC114'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\ ? <span class="s1">&#39;active&#39;</span></div><div class='line' id='LC115'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\ : <span class="s1">&#39;inactive&#39;</span></div><div class='line' id='LC116'><span class="k">endfunction</span></div><div class='line' id='LC117'><br/></div><div class='line' id='LC118'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:debug_processes<span class="p">()</span></div><div class='line' id='LC119'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:_processes</div><div class='line' id='LC120'><span class="k">endfunction</span></div><div class='line' id='LC121'><br/></div><div class='line' id='LC122'><span class="k">let</span> &amp;<span class="nb">cpo</span> <span class="p">=</span> <span class="k">s</span>:save_cpo</div><div class='line' id='LC123'>unlet <span class="k">s</span>:save_cpo</div><div class='line' id='LC124'><span class="c">&quot; vim:set et ts=2 sts=2 sw=2 tw=0:</span></div></pre></div>
</td>
</tr>
</table>
</div>
</div>
</div>
<a href="#jump-to-line" rel="facebox[.linejump]" data-hotkey="l" class="js-jump-to-line" style="display:none">Jump to Line</a>
<div id="jump-to-line" style="display:none">
<form accept-charset="UTF-8" class="js-jump-to-line-form">
<input class="linejump-input js-jump-to-line-field" type="text" placeholder="Jump to line&hellip;" autofocus>
<button type="submit" class="button">Go</button>
</form>
</div>
</div>
</div><!-- /.repo-container -->
<div class="modal-backdrop"></div>
</div><!-- /.container -->
</div><!-- /.site -->
</div><!-- /.wrapper -->
<div class="container">
<div class="site-footer">
<ul class="site-footer-links right">
<li><a href="https://status.github.com/">Status</a></li>
<li><a href="http://developer.github.com">API</a></li>
<li><a href="http://training.github.com">Training</a></li>
<li><a href="http://shop.github.com">Shop</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/about">About</a></li>
</ul>
<a href="/">
<span class="mega-octicon octicon-mark-github" title="GitHub"></span>
</a>
<ul class="site-footer-links">
<li>&copy; 2014 <span title="0.03660s from github-fe122-cp1-prd.iad.github.net">GitHub</span>, Inc.</li>
<li><a href="/site/terms">Terms</a></li>
<li><a href="/site/privacy">Privacy</a></li>
<li><a href="/security">Security</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
</div><!-- /.site-footer -->
</div><!-- /.container -->
<div class="fullscreen-overlay js-fullscreen-overlay" id="fullscreen_overlay">
<div class="fullscreen-container js-fullscreen-container">
<div class="textarea-wrap">
<textarea name="fullscreen-contents" id="fullscreen-contents" class="js-fullscreen-contents" placeholder="" data-suggester="fullscreen_suggester"></textarea>
<div class="suggester-container">
<div class="suggester fullscreen-suggester js-navigation-container" id="fullscreen_suggester"
data-url="/vim-jp/vital.vim/suggestions/commit">
</div>
</div>
</div>
</div>
<div class="fullscreen-sidebar">
<a href="#" class="exit-fullscreen js-exit-fullscreen tooltipped leftwards" title="Exit Zen Mode">
<span class="mega-octicon octicon-screen-normal"></span>
</a>
<a href="#" class="theme-switcher js-theme-switcher tooltipped leftwards"
title="Switch themes">
<span class="octicon octicon-color-mode"></span>
</a>
</div>
</div>
<div id="ajax-error-message" class="flash flash-error">
<span class="octicon octicon-alert"></span>
<a href="#" class="octicon octicon-remove-close close js-ajax-error-dismiss"></a>
Something went wrong with that request. Please try again.
</div>
</body>
</html>
<!DOCTYPE html>
<html>
<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# githubog: http://ogp.me/ns/fb/githubog#">
<meta charset='utf-8'>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>vital.vim/autoload/vital/__latest__/ProcessManager.vim at master · vim-jp/vital.vim</title>
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub" />
<link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub" />
<link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-114.png" />
<link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114.png" />
<link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-144.png" />
<link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144.png" />
<link rel="logo" type="image/svg" href="https://github-media-downloads.s3.amazonaws.com/github-logo.svg" />
<meta property="og:image" content="https://github.global.ssl.fastly.net/images/modules/logos_page/Octocat.png">
<meta name="hostname" content="github-fe122-cp1-prd.iad.github.net">
<meta name="ruby" content="ruby 2.1.0p0-github-tcmalloc (60139581e1) [x86_64-linux]">
<link rel="assets" href="https://github.global.ssl.fastly.net/">
<link rel="conduit-xhr" href="https://ghconduit.com:25035/">
<link rel="xhr-socket" href="/_sockets" />
<meta name="msapplication-TileImage" content="/windows-tile.png" />
<meta name="msapplication-TileColor" content="#ffffff" />
<meta name="selected-link" value="repo_source" data-pjax-transient />
<meta content="collector.githubapp.com" name="octolytics-host" /><meta content="collector-cdn.github.com" name="octolytics-script-host" /><meta content="github" name="octolytics-app-id" /><meta content="B6F95C6A:6644:E50EC4:52E18AFE" name="octolytics-dimension-request_id" /><meta content="214488" name="octolytics-actor-id" /><meta content="osyo-manga" name="octolytics-actor-login" /><meta content="e5012931f92cc8195a7f530c4e37bcc88d86a6df4ea3fd06d12d9d5795f6d0e8" name="octolytics-actor-hash" />
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
<meta content="authenticity_token" name="csrf-param" />
<meta content="QJ+IADlDg9SxDImNEnlVQuqnrERp2WaGGsoyvKtaTk4=" name="csrf-token" />
<link href="https://github.global.ssl.fastly.net/assets/github-43087292f81aebbe92f90a36344865c4ad8170a0.css" media="all" rel="stylesheet" type="text/css" />
<link href="https://github.global.ssl.fastly.net/assets/github2-d23a1b1c4a1bc509a0ca67face2fb37ef257f599.css" media="all" rel="stylesheet" type="text/css" />
<script src="https://github.global.ssl.fastly.net/assets/frameworks-bf5987648bb83690ac0a5e955f74bbaf6ba44c4a.js" type="text/javascript"></script>
<script async="async" defer="defer" src="https://github.global.ssl.fastly.net/assets/github-eab207422bd65ea8c46ef3d26d6fbcc74bba89ce.js" type="text/javascript"></script>
<meta http-equiv="x-pjax-version" content="1ceda3c4fa0194817b46f4df6a3f2c23">
<link data-pjax-transient rel='permalink' href='/vim-jp/vital.vim/blob/3e229e28b002d42b9ca0d15bddddf0872fa2eed0/autoload/vital/__latest__/ProcessManager.vim'>
<meta property="og:title" content="vital.vim"/>
<meta property="og:type" content="githubog:gitrepository"/>
<meta property="og:url" content="https://github.com/vim-jp/vital.vim"/>
<meta property="og:image" content="https://github.global.ssl.fastly.net/images/gravatars/gravatar-user-420.png"/>
<meta property="og:site_name" content="GitHub"/>
<meta property="og:description" content="vital.vim - A comprehensive Vim utility functions for Vim plugins"/>
<meta name="description" content="vital.vim - A comprehensive Vim utility functions for Vim plugins" />
<meta content="1051958" name="octolytics-dimension-user_id" /><meta content="vim-jp" name="octolytics-dimension-user_login" /><meta content="1308435" name="octolytics-dimension-repository_id" /><meta content="vim-jp/vital.vim" name="octolytics-dimension-repository_nwo" /><meta content="true" name="octolytics-dimension-repository_public" /><meta content="false" name="octolytics-dimension-repository_is_fork" /><meta content="1308435" name="octolytics-dimension-repository_network_root_id" /><meta content="vim-jp/vital.vim" name="octolytics-dimension-repository_network_root_nwo" />
<link href="https://github.com/vim-jp/vital.vim/commits/master.atom" rel="alternate" title="Recent Commits to vital.vim:master" type="application/atom+xml" />
</head>
<body class="logged_in env-production windows vis-public page-blob">
<div class="wrapper">
<div class="header header-logged-in true">
<div class="container clearfix">
<a class="header-logo-invertocat" href="https://github.com/">
<span class="mega-octicon octicon-mark-github"></span>
</a>
<a href="/vim-jp/vital.vim/notifications" class="notification-indicator tooltipped downwards contextually-unread" data-gotokey="n" title="You have unread notifications in this repository">
<span class="mail-status unread"></span>
</a>
<div class="command-bar js-command-bar in-repository">
<form accept-charset="UTF-8" action="/search" class="command-bar-form" id="top_search_form" method="get">
<input type="text" data-hotkey="/ s" name="q" id="js-command-bar-field" placeholder="Search or type a command" tabindex="1" autocapitalize="off"
data-username="osyo-manga"
data-repo="vim-jp/vital.vim"
data-branch="master"
data-sha="e9e83ed3a8ffeefb55aeb10af4b80747448aeda6"
>
<input type="hidden" name="nwo" value="vim-jp/vital.vim" />
<div class="select-menu js-menu-container js-select-menu search-context-select-menu">
<span class="minibutton select-menu-button js-menu-target">
<span class="js-select-button">This repository</span>
</span>
<div class="select-menu-modal-holder js-menu-content js-navigation-container">
<div class="select-menu-modal">
<div class="select-menu-item js-navigation-item js-this-repository-navigation-item selected">
<span class="select-menu-item-icon octicon octicon-check"></span>
<input type="radio" class="js-search-this-repository" name="search_target" value="repository" checked="checked" />
<div class="select-menu-item-text js-select-button-text">This repository</div>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item js-all-repositories-navigation-item">
<span class="select-menu-item-icon octicon octicon-check"></span>
<input type="radio" name="search_target" value="global" />
<div class="select-menu-item-text js-select-button-text">All repositories</div>
</div> <!-- /.select-menu-item -->
</div>
</div>
</div>
<span class="octicon help tooltipped downwards" title="Show command bar help">
<span class="octicon octicon-question"></span>
</span>
<input type="hidden" name="ref" value="cmdform">
</form>
<ul class="top-nav">
<li class="explore"><a href="/explore">Explore</a></li>
<li><a href="https://gist.github.com">Gist</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="https://help.github.com">Help</a></li>
</ul>
</div>
<ul id="user-links">
<li>
<a href="/osyo-manga" class="name">
<img height="20" src="https://1.gravatar.com/avatar/3931098ae486b6df619050c63e24f6cc?d=https%3A%2F%2Fidenticons.github.com%2Fc192b911f32678010c36ee637415e182.png&amp;r=x&amp;s=140" width="20" /> osyo-manga
</a>
</li>
<li class="new-menu dropdown-toggle js-menu-container">
<a href="#" class="js-menu-target tooltipped downwards" title="Create new…">
<span class="octicon octicon-plus"></span>
<span class="dropdown-arrow"></span>
</a>
<div class="js-menu-content">
</div>
</li>
<li>
<a href="/settings/profile" id="account_settings"
class="tooltipped downwards"
aria-label="Account settings "
title="Account settings ">
<span class="octicon octicon-tools"></span>
</a>
</li>
<li>
<a class="tooltipped downwards" href="/logout" data-method="post" id="logout" title="Sign out" aria-label="Sign out">
<span class="octicon octicon-log-out"></span>
</a>
</li>
</ul>
<div class="js-new-dropdown-contents hidden">
<ul class="dropdown-menu">
<li>
<a href="/new"><span class="octicon octicon-repo-create"></span> New repository</a>
</li>
<li>
<a href="/organizations/new"><span class="octicon octicon-organization"></span> New organization</a>
</li>
<li class="section-title">
<span title="vim-jp/vital.vim">This repository</span>
</li>
<li>
<a href="/vim-jp/vital.vim/issues/new"><span class="octicon octicon-issue-opened"></span> New issue</a>
</li>
</ul>
</div>
</div>
</div>
<div class="site" itemscope itemtype="http://schema.org/WebPage">
<div class="pagehead repohead instapaper_ignore readability-menu">
<div class="container">
<ul class="pagehead-actions">
<li class="subscription">
<form accept-charset="UTF-8" action="/notifications/subscribe" class="js-social-container" data-autosubmit="true" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="QJ+IADlDg9SxDImNEnlVQuqnrERp2WaGGsoyvKtaTk4=" /></div> <input id="repository_id" name="repository_id" type="hidden" value="1308435" />
<div class="select-menu js-menu-container js-select-menu">
<a class="social-count js-social-count" href="/vim-jp/vital.vim/watchers">
22
</a>
<span class="minibutton select-menu-button with-count js-menu-target" role="button" tabindex="0">
<span class="js-select-button">
<span class="octicon octicon-eye-unwatch"></span>
Unwatch
</span>
</span>
<div class="select-menu-modal-holder">
<div class="select-menu-modal subscription-menu-modal js-menu-content">
<div class="select-menu-header">
<span class="select-menu-title">Notification status</span>
<span class="octicon octicon-remove-close js-menu-close"></span>
</div> <!-- /.select-menu-header -->
<div class="select-menu-list js-navigation-container" role="menu">
<div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0">
<span class="select-menu-item-icon octicon octicon-check"></span>
<div class="select-menu-item-text">
<input id="do_included" name="do" type="radio" value="included" />
<h4>Not watching</h4>
<span class="description">You only receive notifications for conversations in which you participate or are @mentioned.</span>
<span class="js-select-button-text hidden-select-button-text">
<span class="octicon octicon-eye-watch"></span>
Watch
</span>
</div>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item selected" role="menuitem" tabindex="0">
<span class="select-menu-item-icon octicon octicon octicon-check"></span>
<div class="select-menu-item-text">
<input checked="checked" id="do_subscribed" name="do" type="radio" value="subscribed" />
<h4>Watching</h4>
<span class="description">You receive notifications for all conversations in this repository.</span>
<span class="js-select-button-text hidden-select-button-text">
<span class="octicon octicon-eye-unwatch"></span>
Unwatch
</span>
</div>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0">
<span class="select-menu-item-icon octicon octicon-check"></span>
<div class="select-menu-item-text">
<input id="do_ignore" name="do" type="radio" value="ignore" />
<h4>Ignoring</h4>
<span class="description">You do not receive any notifications for conversations in this repository.</span>
<span class="js-select-button-text hidden-select-button-text">
<span class="octicon octicon-mute"></span>
Stop ignoring
</span>
</div>
</div> <!-- /.select-menu-item -->
</div> <!-- /.select-menu-list -->
</div> <!-- /.select-menu-modal -->
</div> <!-- /.select-menu-modal-holder -->
</div> <!-- /.select-menu -->
</form>
</li>
<li>
<div class="js-toggler-container js-social-container starring-container ">
<a href="/vim-jp/vital.vim/unstar"
class="minibutton with-count js-toggler-target star-button starred upwards"
title="Unstar this repository" data-remote="true" data-method="post" rel="nofollow">
<span class="octicon octicon-star-delete"></span><span class="text">Unstar</span>
</a>
<a href="/vim-jp/vital.vim/star"
class="minibutton with-count js-toggler-target star-button unstarred upwards"
title="Star this repository" data-remote="true" data-method="post" rel="nofollow">
<span class="octicon octicon-star"></span><span class="text">Star</span>
</a>
<a class="social-count js-social-count" href="/vim-jp/vital.vim/stargazers">
79
</a>
</div>
</li>
<li>
<a href="/vim-jp/vital.vim/fork" class="minibutton with-count js-toggler-target fork-button lighter upwards" title="Fork this repo" rel="facebox nofollow">
<span class="octicon octicon-git-branch-create"></span><span class="text">Fork</span>
</a>
<a href="/vim-jp/vital.vim/network" class="social-count">26</a>
</li>
</ul>
<h1 itemscope itemtype="http://data-vocabulary.org/Breadcrumb" class="entry-title public">
<span class="repo-label"><span>public</span></span>
<span class="mega-octicon octicon-repo"></span>
<span class="author">
<a href="/vim-jp" class="url fn" itemprop="url" rel="author"><span itemprop="title">vim-jp</span></a>
</span>
<span class="repohead-name-divider">/</span>
<strong><a href="/vim-jp/vital.vim" class="js-current-repository js-repo-home-link">vital.vim</a></strong>
<span class="page-context-loader">
<img alt="Octocat-spinner-32" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</span>
</h1>
</div><!-- /.container -->
</div><!-- /.repohead -->
<div class="container">
<div class="repository-with-sidebar repo-container ">
<div class="repository-sidebar">
<div class="sunken-menu vertical-right repo-nav js-repo-nav js-repository-container-pjax js-octicon-loaders">
<div class="sunken-menu-contents">
<ul class="sunken-menu-group">
<li class="tooltipped leftwards" title="Code">
<a href="/vim-jp/vital.vim" aria-label="Code" class="selected js-selected-navigation-item sunken-menu-item" data-gotokey="c" data-pjax="true" data-selected-links="repo_source repo_downloads repo_commits repo_tags repo_branches /vim-jp/vital.vim">
<span class="octicon octicon-code"></span> <span class="full-word">Code</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Issues">
<a href="/vim-jp/vital.vim/issues" aria-label="Issues" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-gotokey="i" data-selected-links="repo_issues /vim-jp/vital.vim/issues">
<span class="octicon octicon-issue-opened"></span> <span class="full-word">Issues</span>
<span class='counter'>28</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Pull Requests">
<a href="/vim-jp/vital.vim/pulls" aria-label="Pull Requests" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-gotokey="p" data-selected-links="repo_pulls /vim-jp/vital.vim/pulls">
<span class="octicon octicon-git-pull-request"></span> <span class="full-word">Pull Requests</span>
<span class='counter'>4</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Wiki">
<a href="/vim-jp/vital.vim/wiki" aria-label="Wiki" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="repo_wiki /vim-jp/vital.vim/wiki">
<span class="octicon octicon-book"></span> <span class="full-word">Wiki</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
</ul>
<div class="sunken-menu-separator"></div>
<ul class="sunken-menu-group">
<li class="tooltipped leftwards" title="Pulse">
<a href="/vim-jp/vital.vim/pulse" aria-label="Pulse" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="pulse /vim-jp/vital.vim/pulse">
<span class="octicon octicon-pulse"></span> <span class="full-word">Pulse</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Graphs">
<a href="/vim-jp/vital.vim/graphs" aria-label="Graphs" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="repo_graphs repo_contributors /vim-jp/vital.vim/graphs">
<span class="octicon octicon-graph"></span> <span class="full-word">Graphs</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Network">
<a href="/vim-jp/vital.vim/network" aria-label="Network" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-selected-links="repo_network /vim-jp/vital.vim/network">
<span class="octicon octicon-git-branch"></span> <span class="full-word">Network</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
</ul>
</div>
</div>
<div class="only-with-full-nav">
<div class="clone-url "
data-protocol-type="http"
data-url="/users/set_protocol?protocol_selector=http&amp;protocol_type=push">
<h3><strong>HTTPS</strong> clone URL</h3>
<div class="clone-url-box">
<input type="text" class="clone js-url-field"
value="https://github.com/vim-jp/vital.vim.git" readonly="readonly">
<span class="js-zeroclipboard url-box-clippy minibutton zeroclipboard-button" data-clipboard-text="https://github.com/vim-jp/vital.vim.git" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
</div>
</div>
<div class="clone-url open"
data-protocol-type="ssh"
data-url="/users/set_protocol?protocol_selector=ssh&amp;protocol_type=push">
<h3><strong>SSH</strong> clone URL</h3>
<div class="clone-url-box">
<input type="text" class="clone js-url-field"
value="git@github.com:vim-jp/vital.vim.git" readonly="readonly">
<span class="js-zeroclipboard url-box-clippy minibutton zeroclipboard-button" data-clipboard-text="git@github.com:vim-jp/vital.vim.git" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
</div>
</div>
<div class="clone-url "
data-protocol-type="subversion"
data-url="/users/set_protocol?protocol_selector=subversion&amp;protocol_type=push">
<h3><strong>Subversion</strong> checkout URL</h3>
<div class="clone-url-box">
<input type="text" class="clone js-url-field"
value="https://github.com/vim-jp/vital.vim" readonly="readonly">
<span class="js-zeroclipboard url-box-clippy minibutton zeroclipboard-button" data-clipboard-text="https://github.com/vim-jp/vital.vim" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
</div>
</div>
<p class="clone-options">You can clone with
<a href="#" class="js-clone-selector" data-protocol="http">HTTPS</a>,
<a href="#" class="js-clone-selector" data-protocol="ssh">SSH</a>,
or <a href="#" class="js-clone-selector" data-protocol="subversion">Subversion</a>.
<span class="octicon help tooltipped upwards" title="Get help on which URL is right for you.">
<a href="https://help.github.com/articles/which-remote-url-should-i-use">
<span class="octicon octicon-question"></span>
</a>
</span>
</p>
<a href="http://windows.github.com" class="minibutton sidebar-button">
<span class="octicon octicon-device-desktop"></span>
Clone in Desktop
</a>
<a href="/vim-jp/vital.vim/archive/master.zip"
class="minibutton sidebar-button"
title="Download this repository as a zip file"
rel="nofollow">
<span class="octicon octicon-cloud-download"></span>
Download ZIP
</a>
</div>
</div><!-- /.repository-sidebar -->
<div id="js-repo-pjax-container" class="repository-content context-loader-container" data-pjax-container>
<!-- blob contrib key: blob_contributors:v21:8865196e6c233067ca43f509eaa36ae4 -->
<p title="This is a placeholder element" class="js-history-link-replace hidden"></p>
<a href="/vim-jp/vital.vim/find/master" data-pjax data-hotkey="t" class="js-show-file-finder" style="display:none">Show File Finder</a>
<div class="file-navigation">
<div class="select-menu js-menu-container js-select-menu" >
<span class="minibutton select-menu-button js-menu-target" data-hotkey="w"
data-master-branch="master"
data-ref="master"
role="button" aria-label="Switch branches or tags" tabindex="0">
<span class="octicon octicon-git-branch"></span>
<i>branch:</i>
<span class="js-select-button">master</span>
</span>
<div class="select-menu-modal-holder js-menu-content js-navigation-container" data-pjax>
<div class="select-menu-modal">
<div class="select-menu-header">
<span class="select-menu-title">Switch branches/tags</span>
<span class="octicon octicon-remove-close js-menu-close"></span>
</div> <!-- /.select-menu-header -->
<div class="select-menu-filters">
<div class="select-menu-text-filter">
<input type="text" aria-label="Find or create a branch…" id="context-commitish-filter-field" class="js-filterable-field js-navigation-enable" placeholder="Find or create a branch…">
</div>
<div class="select-menu-tabs">
<ul>
<li class="select-menu-tab">
<a href="#" data-tab-filter="branches" class="js-select-menu-tab">Branches</a>
</li>
<li class="select-menu-tab">
<a href="#" data-tab-filter="tags" class="js-select-menu-tab">Tags</a>
</li>
</ul>
</div><!-- /.select-menu-tabs -->
</div><!-- /.select-menu-filters -->
<div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="branches">
<div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/Data.Closure/autoload/vital/__latest__/ProcessManager.vim"
data-name="Data.Closure"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="Data.Closure">Data.Closure</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/git_submodule/autoload/vital/__latest__/ProcessManager.vim"
data-name="git_submodule"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="git_submodule">git_submodule</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/logger/autoload/vital/__latest__/ProcessManager.vim"
data-name="logger"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="logger">logger</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item selected">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/master/autoload/vital/__latest__/ProcessManager.vim"
data-name="master"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="master">master</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/optional-prelude/autoload/vital/__latest__/ProcessManager.vim"
data-name="optional-prelude"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="optional-prelude">optional-prelude</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/sqlite-processmanager-wip/autoload/vital/__latest__/ProcessManager.vim"
data-name="sqlite-processmanager-wip"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="sqlite-processmanager-wip">sqlite-processmanager-wip</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/sys.file/autoload/vital/__latest__/ProcessManager.vim"
data-name="sys.file"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="sys.file">sys.file</a>
</div> <!-- /.select-menu-item -->
</div>
<form accept-charset="UTF-8" action="/vim-jp/vital.vim/branches" class="js-create-branch select-menu-item select-menu-new-item-form js-navigation-item js-new-item-form" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="QJ+IADlDg9SxDImNEnlVQuqnrERp2WaGGsoyvKtaTk4=" /></div>
<span class="octicon octicon-git-branch-create select-menu-item-icon"></span>
<div class="select-menu-item-text">
<h4>Create branch: <span class="js-new-item-name"></span></h4>
<span class="description">from ‘master’</span>
</div>
<input type="hidden" name="name" id="name" class="js-new-item-value">
<input type="hidden" name="branch" id="branch" value="master" />
<input type="hidden" name="path" id="path" value="autoload/vital/__latest__/ProcessManager.vim" />
</form> <!-- /.select-menu-item -->
</div> <!-- /.select-menu-list -->
<div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="tags">
<div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
</div>
<div class="select-menu-no-results">Nothing to show</div>
</div> <!-- /.select-menu-list -->
</div> <!-- /.select-menu-modal -->
</div> <!-- /.select-menu-modal-holder -->
</div> <!-- /.select-menu -->
<div class="breadcrumb">
<span class='repo-root js-repo-root'><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/vim-jp/vital.vim" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">vital.vim</span></a></span></span><span class="separator"> / </span><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/vim-jp/vital.vim/tree/master/autoload" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">autoload</span></a></span><span class="separator"> / </span><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/vim-jp/vital.vim/tree/master/autoload/vital" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">vital</span></a></span><span class="separator"> / </span><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/vim-jp/vital.vim/tree/master/autoload/vital/__latest__" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">__latest__</span></a></span><span class="separator"> / </span><strong class="final-path">ProcessManager.vim</strong> <span class="js-zeroclipboard minibutton zeroclipboard-button" data-clipboard-text="autoload/vital/__latest__/ProcessManager.vim" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
</div>
</div>
<div class="commit file-history-tease">
<img class="main-avatar" height="24" src="https://1.gravatar.com/avatar/d9d0ceb387e3b6de5c4562af78e8a910?d=https%3A%2F%2Fidenticons.github.com%2F0fc780bb04e74ce5ed154d2e49cfe2fd.png&amp;r=x&amp;s=140" width="24" />
<span class="author"><a href="/ujihisa" rel="author">ujihisa</a></span>
<time class="js-relative-date" datetime="2013-12-21T20:30:11-08:00" title="2013-12-21 20:30:11">December 21, 2013</time>
<div class="commit-title">
<a href="/vim-jp/vital.vim/commit/240d2c93ff042c7afd291cdb301c0c1004136a73" class="message" data-pjax="true" title="ProcessManager: cosmetic change">ProcessManager: cosmetic change</a>
</div>
<div class="participation">
<p class="quickstat"><a href="#blob_contributors_box" rel="facebox"><strong>4</strong> contributors</a></p>
<a class="avatar tooltipped downwards" title="ujihisa" href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim?author=ujihisa"><img height="20" src="https://1.gravatar.com/avatar/d9d0ceb387e3b6de5c4562af78e8a910?d=https%3A%2F%2Fidenticons.github.com%2F0fc780bb04e74ce5ed154d2e49cfe2fd.png&amp;r=x&amp;s=140" width="20" /></a>
<a class="avatar tooltipped downwards" title="mattn" href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim?author=mattn"><img height="20" src="https://2.gravatar.com/avatar/1ba93fd9e39ebf48777f217c38e768fd?d=https%3A%2F%2Fidenticons.github.com%2F70bb83c9272e6c4bc6e83e0a55c7c9c3.png&amp;r=x&amp;s=140" width="20" /></a>
<a class="avatar tooltipped downwards" title="ichizok" href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim?author=ichizok"><img height="20" src="https://2.gravatar.com/avatar/9b780db659a9a657e775b07521be3efc?d=https%3A%2F%2Fidenticons.github.com%2Fa8a23399cfd9dee3779fad0970ec23dc.png&amp;r=x&amp;s=140" width="20" /></a>
<a class="avatar tooltipped downwards" title="alpaca-tc" href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim?author=alpaca-tc"><img height="20" src="https://1.gravatar.com/avatar/c2fe23111675890bf8bc59afb312990e?d=https%3A%2F%2Fidenticons.github.com%2F8e3d7e94dcb83a1fda7307b9f75b186c.png&amp;r=x&amp;s=140" width="20" /></a>
</div>
<div id="blob_contributors_box" style="display:none">
<h2 class="facebox-header">Users who have contributed to this file</h2>
<ul class="facebox-user-list">
<li class="facebox-user-list-item">
<img height="24" src="https://1.gravatar.com/avatar/d9d0ceb387e3b6de5c4562af78e8a910?d=https%3A%2F%2Fidenticons.github.com%2F0fc780bb04e74ce5ed154d2e49cfe2fd.png&amp;r=x&amp;s=140" width="24" />
<a href="/ujihisa">ujihisa</a>
</li>
<li class="facebox-user-list-item">
<img height="24" src="https://2.gravatar.com/avatar/1ba93fd9e39ebf48777f217c38e768fd?d=https%3A%2F%2Fidenticons.github.com%2F70bb83c9272e6c4bc6e83e0a55c7c9c3.png&amp;r=x&amp;s=140" width="24" />
<a href="/mattn">mattn</a>
</li>
<li class="facebox-user-list-item">
<img height="24" src="https://2.gravatar.com/avatar/9b780db659a9a657e775b07521be3efc?d=https%3A%2F%2Fidenticons.github.com%2Fa8a23399cfd9dee3779fad0970ec23dc.png&amp;r=x&amp;s=140" width="24" />
<a href="/ichizok">ichizok</a>
</li>
<li class="facebox-user-list-item">
<img height="24" src="https://1.gravatar.com/avatar/c2fe23111675890bf8bc59afb312990e?d=https%3A%2F%2Fidenticons.github.com%2F8e3d7e94dcb83a1fda7307b9f75b186c.png&amp;r=x&amp;s=140" width="24" />
<a href="/alpaca-tc">alpaca-tc</a>
</li>
</ul>
</div>
</div>
<div id="files" class="bubble">
<div class="file">
<div class="meta">
<div class="info">
<span class="icon"><b class="octicon octicon-file-text"></b></span>
<span class="mode" title="File Mode">file</span>
<span>125 lines (103 sloc)</span>
<span>2.881 kb</span>
</div>
<div class="actions">
<div class="button-group">
<a class="minibutton tooltipped leftwards"
href="http://windows.github.com" title="Open this file in GitHub for Windows">
<span class="octicon octicon-device-desktop"></span> Open
</a>
<a class="minibutton"
href="/vim-jp/vital.vim/edit/master/autoload/vital/__latest__/ProcessManager.vim"
data-method="post" rel="nofollow" data-hotkey="e">Edit</a>
<a href="/vim-jp/vital.vim/raw/master/autoload/vital/__latest__/ProcessManager.vim" class="button minibutton " id="raw-url">Raw</a>
<a href="/vim-jp/vital.vim/blame/master/autoload/vital/__latest__/ProcessManager.vim" class="button minibutton ">Blame</a>
<a href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim" class="button minibutton " rel="nofollow">History</a>
</div><!-- /.button-group -->
<a class="minibutton danger empty-icon tooltipped downwards"
href="/vim-jp/vital.vim/delete/master/autoload/vital/__latest__/ProcessManager.vim"
title=""
data-method="post" data-test-id="delete-blob-file" rel="nofollow">
Delete
</a>
</div><!-- /.actions -->
</div>
<div class="blob-wrapper data type-viml js-blob-data">
<table class="file-code file-diff">
<tr class="file-code-line">
<td class="blob-line-nums">
<span id="L1" rel="#L1">1</span>
<span id="L2" rel="#L2">2</span>
<span id="L3" rel="#L3">3</span>
<span id="L4" rel="#L4">4</span>
<span id="L5" rel="#L5">5</span>
<span id="L6" rel="#L6">6</span>
<span id="L7" rel="#L7">7</span>
<span id="L8" rel="#L8">8</span>
<span id="L9" rel="#L9">9</span>
<span id="L10" rel="#L10">10</span>
<span id="L11" rel="#L11">11</span>
<span id="L12" rel="#L12">12</span>
<span id="L13" rel="#L13">13</span>
<span id="L14" rel="#L14">14</span>
<span id="L15" rel="#L15">15</span>
<span id="L16" rel="#L16">16</span>
<span id="L17" rel="#L17">17</span>
<span id="L18" rel="#L18">18</span>
<span id="L19" rel="#L19">19</span>
<span id="L20" rel="#L20">20</span>
<span id="L21" rel="#L21">21</span>
<span id="L22" rel="#L22">22</span>
<span id="L23" rel="#L23">23</span>
<span id="L24" rel="#L24">24</span>
<span id="L25" rel="#L25">25</span>
<span id="L26" rel="#L26">26</span>
<span id="L27" rel="#L27">27</span>
<span id="L28" rel="#L28">28</span>
<span id="L29" rel="#L29">29</span>
<span id="L30" rel="#L30">30</span>
<span id="L31" rel="#L31">31</span>
<span id="L32" rel="#L32">32</span>
<span id="L33" rel="#L33">33</span>
<span id="L34" rel="#L34">34</span>
<span id="L35" rel="#L35">35</span>
<span id="L36" rel="#L36">36</span>
<span id="L37" rel="#L37">37</span>
<span id="L38" rel="#L38">38</span>
<span id="L39" rel="#L39">39</span>
<span id="L40" rel="#L40">40</span>
<span id="L41" rel="#L41">41</span>
<span id="L42" rel="#L42">42</span>
<span id="L43" rel="#L43">43</span>
<span id="L44" rel="#L44">44</span>
<span id="L45" rel="#L45">45</span>
<span id="L46" rel="#L46">46</span>
<span id="L47" rel="#L47">47</span>
<span id="L48" rel="#L48">48</span>
<span id="L49" rel="#L49">49</span>
<span id="L50" rel="#L50">50</span>
<span id="L51" rel="#L51">51</span>
<span id="L52" rel="#L52">52</span>
<span id="L53" rel="#L53">53</span>
<span id="L54" rel="#L54">54</span>
<span id="L55" rel="#L55">55</span>
<span id="L56" rel="#L56">56</span>
<span id="L57" rel="#L57">57</span>
<span id="L58" rel="#L58">58</span>
<span id="L59" rel="#L59">59</span>
<span id="L60" rel="#L60">60</span>
<span id="L61" rel="#L61">61</span>
<span id="L62" rel="#L62">62</span>
<span id="L63" rel="#L63">63</span>
<span id="L64" rel="#L64">64</span>
<span id="L65" rel="#L65">65</span>
<span id="L66" rel="#L66">66</span>
<span id="L67" rel="#L67">67</span>
<span id="L68" rel="#L68">68</span>
<span id="L69" rel="#L69">69</span>
<span id="L70" rel="#L70">70</span>
<span id="L71" rel="#L71">71</span>
<span id="L72" rel="#L72">72</span>
<span id="L73" rel="#L73">73</span>
<span id="L74" rel="#L74">74</span>
<span id="L75" rel="#L75">75</span>
<span id="L76" rel="#L76">76</span>
<span id="L77" rel="#L77">77</span>
<span id="L78" rel="#L78">78</span>
<span id="L79" rel="#L79">79</span>
<span id="L80" rel="#L80">80</span>
<span id="L81" rel="#L81">81</span>
<span id="L82" rel="#L82">82</span>
<span id="L83" rel="#L83">83</span>
<span id="L84" rel="#L84">84</span>
<span id="L85" rel="#L85">85</span>
<span id="L86" rel="#L86">86</span>
<span id="L87" rel="#L87">87</span>
<span id="L88" rel="#L88">88</span>
<span id="L89" rel="#L89">89</span>
<span id="L90" rel="#L90">90</span>
<span id="L91" rel="#L91">91</span>
<span id="L92" rel="#L92">92</span>
<span id="L93" rel="#L93">93</span>
<span id="L94" rel="#L94">94</span>
<span id="L95" rel="#L95">95</span>
<span id="L96" rel="#L96">96</span>
<span id="L97" rel="#L97">97</span>
<span id="L98" rel="#L98">98</span>
<span id="L99" rel="#L99">99</span>
<span id="L100" rel="#L100">100</span>
<span id="L101" rel="#L101">101</span>
<span id="L102" rel="#L102">102</span>
<span id="L103" rel="#L103">103</span>
<span id="L104" rel="#L104">104</span>
<span id="L105" rel="#L105">105</span>
<span id="L106" rel="#L106">106</span>
<span id="L107" rel="#L107">107</span>
<span id="L108" rel="#L108">108</span>
<span id="L109" rel="#L109">109</span>
<span id="L110" rel="#L110">110</span>
<span id="L111" rel="#L111">111</span>
<span id="L112" rel="#L112">112</span>
<span id="L113" rel="#L113">113</span>
<span id="L114" rel="#L114">114</span>
<span id="L115" rel="#L115">115</span>
<span id="L116" rel="#L116">116</span>
<span id="L117" rel="#L117">117</span>
<span id="L118" rel="#L118">118</span>
<span id="L119" rel="#L119">119</span>
<span id="L120" rel="#L120">120</span>
<span id="L121" rel="#L121">121</span>
<span id="L122" rel="#L122">122</span>
<span id="L123" rel="#L123">123</span>
<span id="L124" rel="#L124">124</span>
</td>
<td class="blob-line-code">
<div class="code-body highlight"><pre><div class='line' id='LC1'><span class="k">let</span> <span class="k">s</span>:save_cpo <span class="p">=</span> &amp;<span class="nb">cpo</span></div><div class='line' id='LC2'><span class="k">set</span> <span class="nb">cpo</span>&amp;<span class="k">vim</span></div><div class='line' id='LC3'><br/></div><div class='line' id='LC4'><span class="k">let</span> <span class="k">s</span>:_processes <span class="p">=</span> {}</div><div class='line' id='LC5'><br/></div><div class='line' id='LC6'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:_vital_loaded<span class="p">(</span>V<span class="p">)</span></div><div class='line' id='LC7'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">s</span>:V <span class="p">=</span> <span class="k">a</span>:V</div><div class='line' id='LC8'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">s</span>:S <span class="p">=</span> <span class="k">s</span>:V.import<span class="p">(</span><span class="s1">&#39;Data.String&#39;</span><span class="p">)</span></div><div class='line' id='LC9'><span class="k">endfunction</span></div><div class='line' id='LC10'><br/></div><div class='line' id='LC11'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:_vital_depends<span class="p">()</span></div><div class='line' id='LC12'>&nbsp;&nbsp;<span class="k">return</span> [<span class="s1">&#39;Data.String&#39;</span>]</div><div class='line' id='LC13'><span class="k">endfunction</span></div><div class='line' id='LC14'><br/></div><div class='line' id='LC15'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:is_available<span class="p">()</span></div><div class='line' id='LC16'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:V.has_vimproc<span class="p">()</span></div><div class='line' id='LC17'><span class="k">endfunction</span></div><div class='line' id='LC18'><br/></div><div class='line' id='LC19'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:touch<span class="p">(</span>name<span class="p">,</span> cmd<span class="p">)</span></div><div class='line' id='LC20'>&nbsp;&nbsp;<span class="k">if</span> has_key<span class="p">(</span><span class="k">s</span>:_processes<span class="p">,</span> <span class="k">a</span>:name<span class="p">)</span></div><div class='line' id='LC21'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="s1">&#39;existing&#39;</span></div><div class='line' id='LC22'>&nbsp;&nbsp;<span class="k">else</span></div><div class='line' id='LC23'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> vimproc#popen3<span class="p">(</span><span class="k">a</span>:cmd<span class="p">)</span></div><div class='line' id='LC24'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> <span class="k">s</span>:_processes[<span class="k">a</span>:name] <span class="p">=</span> <span class="k">p</span></div><div class='line' id='LC25'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="s1">&#39;new&#39;</span></div><div class='line' id='LC26'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC27'><span class="k">endfunction</span></div><div class='line' id='LC28'><br/></div><div class='line' id='LC29'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:stop<span class="p">(</span><span class="k">i</span><span class="p">)</span></div><div class='line' id='LC30'>&nbsp;&nbsp;<span class="k">echomsg</span> <span class="s2">&quot;Vital.ProcessManager.stop() is deprecated! Please use kill() or term() instead.&quot;</span></div><div class='line' id='LC31'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:kill<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC32'><span class="k">endfunction</span></div><div class='line' id='LC33'><br/></div><div class='line' id='LC34'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:_stop<span class="p">(</span><span class="k">i</span><span class="p">,</span> ...<span class="p">)</span></div><div class='line' id='LC35'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC36'>&nbsp;&nbsp;<span class="k">call</span> <span class="k">p</span>.kill<span class="p">(</span><span class="k">get</span><span class="p">(</span><span class="k">a</span>:<span class="m">000</span><span class="p">,</span> <span class="m">0</span><span class="p">,</span> <span class="m">0</span><span class="p">)</span> ? <span class="k">g</span>:vimproc#SIGKILL : <span class="k">g</span>:vimproc#SIGTERM<span class="p">)</span></div><div class='line' id='LC37'><span class="c"> &quot; call p.waitpid()</span></div><div class='line' id='LC38'>&nbsp;&nbsp;unlet <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC39'><span class="k">endfunction</span></div><div class='line' id='LC40'><br/></div><div class='line' id='LC41'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:<span class="nb">term</span><span class="p">(</span><span class="k">i</span><span class="p">)</span></div><div class='line' id='LC42'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:_stop<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">,</span> <span class="m">0</span><span class="p">)</span></div><div class='line' id='LC43'><span class="k">endfunction</span></div><div class='line' id='LC44'><br/></div><div class='line' id='LC45'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:kill<span class="p">(</span><span class="k">i</span><span class="p">)</span></div><div class='line' id='LC46'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:_stop<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">,</span> <span class="m">1</span><span class="p">)</span></div><div class='line' id='LC47'><span class="k">endfunction</span></div><div class='line' id='LC48'><br/></div><div class='line' id='LC49'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:read<span class="p">(</span><span class="k">i</span><span class="p">,</span> endpatterns<span class="p">)</span></div><div class='line' id='LC50'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:read_wait<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">,</span> <span class="m">0</span>.<span class="m">05</span><span class="p">,</span> <span class="k">a</span>:endpatterns<span class="p">)</span></div><div class='line' id='LC51'><span class="k">endfunction</span></div><div class='line' id='LC52'><br/></div><div class='line' id='LC53'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:read_wait<span class="p">(</span><span class="k">i</span><span class="p">,</span> wait<span class="p">,</span> endpatterns<span class="p">)</span></div><div class='line' id='LC54'>&nbsp;&nbsp;<span class="k">if</span> <span class="p">!</span>has_key<span class="p">(</span><span class="k">s</span>:_processes<span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC55'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">throw</span> printf<span class="p">(</span><span class="s2">&quot;ProcessManager doesn&#39;t know about %s&quot;</span><span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC56'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC57'><br/></div><div class='line' id='LC58'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC59'><br/></div><div class='line' id='LC60'>&nbsp;&nbsp;<span class="k">if</span> <span class="k">s</span>:status<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">)</span> <span class="p">==</span># <span class="s1">&#39;inactive&#39;</span></div><div class='line' id='LC61'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> [<span class="k">p</span>.stdout.read<span class="p">(),</span> <span class="k">p</span>.stderr.read<span class="p">(),</span> <span class="s1">&#39;inactive&#39;</span>]</div><div class='line' id='LC62'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC63'><br/></div><div class='line' id='LC64'>&nbsp;&nbsp;<span class="k">let</span> out_memo <span class="p">=</span> <span class="s1">&#39;&#39;</span></div><div class='line' id='LC65'>&nbsp;&nbsp;<span class="k">let</span> err_memo <span class="p">=</span> <span class="s1">&#39;&#39;</span></div><div class='line' id='LC66'>&nbsp;&nbsp;<span class="k">let</span> lastchanged <span class="p">=</span> reltime<span class="p">()</span></div><div class='line' id='LC67'>&nbsp;&nbsp;<span class="k">while</span> <span class="m">1</span></div><div class='line' id='LC68'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> [<span class="k">x</span><span class="p">,</span> <span class="k">y</span>] <span class="p">=</span> [<span class="k">p</span>.stdout.read<span class="p">(),</span> <span class="k">p</span>.stderr.read<span class="p">()</span>]</div><div class='line' id='LC69'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="k">x</span> <span class="p">==</span># <span class="s1">&#39;&#39;</span> &amp;&amp; <span class="k">y</span> <span class="p">==</span># <span class="s1">&#39;&#39;</span></div><div class='line' id='LC70'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> str2float<span class="p">(</span>reltimestr<span class="p">(</span>reltime<span class="p">(</span>lastchanged<span class="p">)))</span> <span class="p">&gt;</span> <span class="k">a</span>:wait</div><div class='line' id='LC71'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> [out_memo<span class="p">,</span> err_memo<span class="p">,</span> <span class="s1">&#39;timedout&#39;</span>]</div><div class='line' id='LC72'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC73'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">else</span></div><div class='line' id='LC74'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> lastchanged <span class="p">=</span> reltime<span class="p">()</span></div><div class='line' id='LC75'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> out_memo .<span class="p">=</span> <span class="k">x</span></div><div class='line' id='LC76'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> err_memo .<span class="p">=</span> <span class="k">y</span></div><div class='line' id='LC77'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">for</span> pattern <span class="k">in</span> <span class="k">a</span>:endpatterns</div><div class='line' id='LC78'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> out_memo <span class="p">=~</span> <span class="p">(</span><span class="s2">&quot;\\(^\\|\n\\)&quot;</span> . pattern<span class="p">)</span></div><div class='line' id='LC79'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> [<span class="k">s</span>:S.substitute_last<span class="p">(</span>out_memo<span class="p">,</span> pattern<span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">),</span> err_memo<span class="p">,</span> <span class="s1">&#39;matched&#39;</span>]</div><div class='line' id='LC80'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC81'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">endfor</span></div><div class='line' id='LC82'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC83'>&nbsp;&nbsp;<span class="k">endwhile</span></div><div class='line' id='LC84'><span class="k">endfunction</span></div><div class='line' id='LC85'><br/></div><div class='line' id='LC86'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:<span class="nb">write</span><span class="p">(</span><span class="k">i</span><span class="p">,</span> str<span class="p">)</span></div><div class='line' id='LC87'>&nbsp;&nbsp;<span class="k">if</span> <span class="p">!</span>has_key<span class="p">(</span><span class="k">s</span>:_processes<span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC88'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">throw</span> printf<span class="p">(</span><span class="s2">&quot;ProcessManager doesn&#39;t know about %s&quot;</span><span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC89'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC90'>&nbsp;&nbsp;<span class="k">if</span> <span class="k">s</span>:status<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">)</span> <span class="p">==</span># <span class="s1">&#39;inactive&#39;</span></div><div class='line' id='LC91'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="s1">&#39;inactive&#39;</span></div><div class='line' id='LC92'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC93'><br/></div><div class='line' id='LC94'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC95'>&nbsp;&nbsp;<span class="k">call</span> <span class="k">p</span>.stdin.<span class="nb">write</span><span class="p">(</span><span class="k">a</span>:str<span class="p">)</span></div><div class='line' id='LC96'><br/></div><div class='line' id='LC97'>&nbsp;&nbsp;<span class="k">return</span> <span class="s1">&#39;active&#39;</span></div><div class='line' id='LC98'><span class="k">endfunction</span></div><div class='line' id='LC99'><br/></div><div class='line' id='LC100'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:writeln<span class="p">(</span><span class="k">i</span><span class="p">,</span> str<span class="p">)</span></div><div class='line' id='LC101'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:<span class="nb">write</span><span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">,</span> <span class="k">a</span>:str . <span class="s2">&quot;\n&quot;</span><span class="p">)</span></div><div class='line' id='LC102'><span class="k">endfunction</span></div><div class='line' id='LC103'><br/></div><div class='line' id='LC104'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:status<span class="p">(</span><span class="k">i</span><span class="p">)</span></div><div class='line' id='LC105'>&nbsp;&nbsp;<span class="k">if</span> <span class="p">!</span>has_key<span class="p">(</span><span class="k">s</span>:_processes<span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC106'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">throw</span> printf<span class="p">(</span><span class="s2">&quot;ProcessManager doesn&#39;t know about %s&quot;</span><span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC107'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC108'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC109'><span class="c"> &quot; vimproc.kill isn&#39;t to stop but to ask for the current state.</span></div><div class='line' id='LC110'><span class="c"> &quot; return p.kill(0) ? &#39;inactive&#39; : &#39;active&#39;</span></div><div class='line' id='LC111'><span class="c"> &quot; ... checkpid() checks if the process is running AND does waitpid() in C,</span></div><div class='line' id='LC112'><span class="c"> &quot; so it solves zombie processes.</span></div><div class='line' id='LC113'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">get</span><span class="p">(</span><span class="k">p</span>.checkpid<span class="p">(),</span> <span class="m">0</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="p">==</span># <span class="s1">&#39;run&#39;</span></div><div class='line' id='LC114'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\ ? <span class="s1">&#39;active&#39;</span></div><div class='line' id='LC115'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\ : <span class="s1">&#39;inactive&#39;</span></div><div class='line' id='LC116'><span class="k">endfunction</span></div><div class='line' id='LC117'><br/></div><div class='line' id='LC118'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:debug_processes<span class="p">()</span></div><div class='line' id='LC119'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:_processes</div><div class='line' id='LC120'><span class="k">endfunction</span></div><div class='line' id='LC121'><br/></div><div class='line' id='LC122'><span class="k">let</span> &amp;<span class="nb">cpo</span> <span class="p">=</span> <span class="k">s</span>:save_cpo</div><div class='line' id='LC123'>unlet <span class="k">s</span>:save_cpo</div><div class='line' id='LC124'><span class="c">&quot; vim:set et ts=2 sts=2 sw=2 tw=0:</span></div></pre></div>
</td>
</tr>
</table>
</div>
</div>
</div>
<a href="#jump-to-line" rel="facebox[.linejump]" data-hotkey="l" class="js-jump-to-line" style="display:none">Jump to Line</a>
<div id="jump-to-line" style="display:none">
<form accept-charset="UTF-8" class="js-jump-to-line-form">
<input class="linejump-input js-jump-to-line-field" type="text" placeholder="Jump to line&hellip;" autofocus>
<button type="submit" class="button">Go</button>
</form>
</div>
</div>
</div><!-- /.repo-container -->
<div class="modal-backdrop"></div>
</div><!-- /.container -->
</div><!-- /.site -->
</div><!-- /.wrapper -->
<div class="container">
<div class="site-footer">
<ul class="site-footer-links right">
<li><a href="https://status.github.com/">Status</a></li>
<li><a href="http://developer.github.com">API</a></li>
<li><a href="http://training.github.com">Training</a></li>
<li><a href="http://shop.github.com">Shop</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/about">About</a></li>
</ul>
<a href="/">
<span class="mega-octicon octicon-mark-github" title="GitHub"></span>
</a>
<ul class="site-footer-links">
<li>&copy; 2014 <span title="0.03660s from github-fe122-cp1-prd.iad.github.net">GitHub</span>, Inc.</li>
<li><a href="/site/terms">Terms</a></li>
<li><a href="/site/privacy">Privacy</a></li>
<li><a href="/security">Security</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
</div><!-- /.site-footer -->
</div><!-- /.container -->
<div class="fullscreen-overlay js-fullscreen-overlay" id="fullscreen_overlay">
<div class="fullscreen-container js-fullscreen-container">
<div class="textarea-wrap">
<textarea name="fullscreen-contents" id="fullscreen-contents" class="js-fullscreen-contents" placeholder="" data-suggester="fullscreen_suggester"></textarea>
<div class="suggester-container">
<div class="suggester fullscreen-suggester js-navigation-container" id="fullscreen_suggester"
data-url="/vim-jp/vital.vim/suggestions/commit">
</div>
</div>
</div>
</div>
<div class="fullscreen-sidebar">
<a href="#" class="exit-fullscreen js-exit-fullscreen tooltipped leftwards" title="Exit Zen Mode">
<span class="mega-octicon octicon-screen-normal"></span>
</a>
<a href="#" class="theme-switcher js-theme-switcher tooltipped leftwards"
title="Switch themes">
<span class="octicon octicon-color-mode"></span>
</a>
</div>
</div>
<div id="ajax-error-message" class="flash flash-error">
<span class="octicon octicon-alert"></span>
<a href="#" class="octicon octicon-remove-close close js-ajax-error-dismiss"></a>
Something went wrong with that request. Please try again.
</div>
</body>
</html>
<!DOCTYPE html>
<html>
<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# githubog: http://ogp.me/ns/fb/githubog#">
<meta charset='utf-8'>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>vital.vim/autoload/vital/__latest__/ProcessManager.vim at master · vim-jp/vital.vim</title>
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub" />
<link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub" />
<link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-114.png" />
<link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114.png" />
<link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-144.png" />
<link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144.png" />
<link rel="logo" type="image/svg" href="https://github-media-downloads.s3.amazonaws.com/github-logo.svg" />
<meta property="og:image" content="https://github.global.ssl.fastly.net/images/modules/logos_page/Octocat.png">
<meta name="hostname" content="github-fe122-cp1-prd.iad.github.net">
<meta name="ruby" content="ruby 2.1.0p0-github-tcmalloc (60139581e1) [x86_64-linux]">
<link rel="assets" href="https://github.global.ssl.fastly.net/">
<link rel="conduit-xhr" href="https://ghconduit.com:25035/">
<link rel="xhr-socket" href="/_sockets" />
<meta name="msapplication-TileImage" content="/windows-tile.png" />
<meta name="msapplication-TileColor" content="#ffffff" />
<meta name="selected-link" value="repo_source" data-pjax-transient />
<meta content="collector.githubapp.com" name="octolytics-host" /><meta content="collector-cdn.github.com" name="octolytics-script-host" /><meta content="github" name="octolytics-app-id" /><meta content="B6F95C6A:6644:E50EC4:52E18AFE" name="octolytics-dimension-request_id" /><meta content="214488" name="octolytics-actor-id" /><meta content="osyo-manga" name="octolytics-actor-login" /><meta content="e5012931f92cc8195a7f530c4e37bcc88d86a6df4ea3fd06d12d9d5795f6d0e8" name="octolytics-actor-hash" />
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
<meta content="authenticity_token" name="csrf-param" />
<meta content="QJ+IADlDg9SxDImNEnlVQuqnrERp2WaGGsoyvKtaTk4=" name="csrf-token" />
<link href="https://github.global.ssl.fastly.net/assets/github-43087292f81aebbe92f90a36344865c4ad8170a0.css" media="all" rel="stylesheet" type="text/css" />
<link href="https://github.global.ssl.fastly.net/assets/github2-d23a1b1c4a1bc509a0ca67face2fb37ef257f599.css" media="all" rel="stylesheet" type="text/css" />
<script src="https://github.global.ssl.fastly.net/assets/frameworks-bf5987648bb83690ac0a5e955f74bbaf6ba44c4a.js" type="text/javascript"></script>
<script async="async" defer="defer" src="https://github.global.ssl.fastly.net/assets/github-eab207422bd65ea8c46ef3d26d6fbcc74bba89ce.js" type="text/javascript"></script>
<meta http-equiv="x-pjax-version" content="1ceda3c4fa0194817b46f4df6a3f2c23">
<link data-pjax-transient rel='permalink' href='/vim-jp/vital.vim/blob/3e229e28b002d42b9ca0d15bddddf0872fa2eed0/autoload/vital/__latest__/ProcessManager.vim'>
<meta property="og:title" content="vital.vim"/>
<meta property="og:type" content="githubog:gitrepository"/>
<meta property="og:url" content="https://github.com/vim-jp/vital.vim"/>
<meta property="og:image" content="https://github.global.ssl.fastly.net/images/gravatars/gravatar-user-420.png"/>
<meta property="og:site_name" content="GitHub"/>
<meta property="og:description" content="vital.vim - A comprehensive Vim utility functions for Vim plugins"/>
<meta name="description" content="vital.vim - A comprehensive Vim utility functions for Vim plugins" />
<meta content="1051958" name="octolytics-dimension-user_id" /><meta content="vim-jp" name="octolytics-dimension-user_login" /><meta content="1308435" name="octolytics-dimension-repository_id" /><meta content="vim-jp/vital.vim" name="octolytics-dimension-repository_nwo" /><meta content="true" name="octolytics-dimension-repository_public" /><meta content="false" name="octolytics-dimension-repository_is_fork" /><meta content="1308435" name="octolytics-dimension-repository_network_root_id" /><meta content="vim-jp/vital.vim" name="octolytics-dimension-repository_network_root_nwo" />
<link href="https://github.com/vim-jp/vital.vim/commits/master.atom" rel="alternate" title="Recent Commits to vital.vim:master" type="application/atom+xml" />
</head>
<body class="logged_in env-production windows vis-public page-blob">
<div class="wrapper">
<div class="header header-logged-in true">
<div class="container clearfix">
<a class="header-logo-invertocat" href="https://github.com/">
<span class="mega-octicon octicon-mark-github"></span>
</a>
<a href="/vim-jp/vital.vim/notifications" class="notification-indicator tooltipped downwards contextually-unread" data-gotokey="n" title="You have unread notifications in this repository">
<span class="mail-status unread"></span>
</a>
<div class="command-bar js-command-bar in-repository">
<form accept-charset="UTF-8" action="/search" class="command-bar-form" id="top_search_form" method="get">
<input type="text" data-hotkey="/ s" name="q" id="js-command-bar-field" placeholder="Search or type a command" tabindex="1" autocapitalize="off"
data-username="osyo-manga"
data-repo="vim-jp/vital.vim"
data-branch="master"
data-sha="e9e83ed3a8ffeefb55aeb10af4b80747448aeda6"
>
<input type="hidden" name="nwo" value="vim-jp/vital.vim" />
<div class="select-menu js-menu-container js-select-menu search-context-select-menu">
<span class="minibutton select-menu-button js-menu-target">
<span class="js-select-button">This repository</span>
</span>
<div class="select-menu-modal-holder js-menu-content js-navigation-container">
<div class="select-menu-modal">
<div class="select-menu-item js-navigation-item js-this-repository-navigation-item selected">
<span class="select-menu-item-icon octicon octicon-check"></span>
<input type="radio" class="js-search-this-repository" name="search_target" value="repository" checked="checked" />
<div class="select-menu-item-text js-select-button-text">This repository</div>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item js-all-repositories-navigation-item">
<span class="select-menu-item-icon octicon octicon-check"></span>
<input type="radio" name="search_target" value="global" />
<div class="select-menu-item-text js-select-button-text">All repositories</div>
</div> <!-- /.select-menu-item -->
</div>
</div>
</div>
<span class="octicon help tooltipped downwards" title="Show command bar help">
<span class="octicon octicon-question"></span>
</span>
<input type="hidden" name="ref" value="cmdform">
</form>
<ul class="top-nav">
<li class="explore"><a href="/explore">Explore</a></li>
<li><a href="https://gist.github.com">Gist</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="https://help.github.com">Help</a></li>
</ul>
</div>
<ul id="user-links">
<li>
<a href="/osyo-manga" class="name">
<img height="20" src="https://1.gravatar.com/avatar/3931098ae486b6df619050c63e24f6cc?d=https%3A%2F%2Fidenticons.github.com%2Fc192b911f32678010c36ee637415e182.png&amp;r=x&amp;s=140" width="20" /> osyo-manga
</a>
</li>
<li class="new-menu dropdown-toggle js-menu-container">
<a href="#" class="js-menu-target tooltipped downwards" title="Create new…">
<span class="octicon octicon-plus"></span>
<span class="dropdown-arrow"></span>
</a>
<div class="js-menu-content">
</div>
</li>
<li>
<a href="/settings/profile" id="account_settings"
class="tooltipped downwards"
aria-label="Account settings "
title="Account settings ">
<span class="octicon octicon-tools"></span>
</a>
</li>
<li>
<a class="tooltipped downwards" href="/logout" data-method="post" id="logout" title="Sign out" aria-label="Sign out">
<span class="octicon octicon-log-out"></span>
</a>
</li>
</ul>
<div class="js-new-dropdown-contents hidden">
<ul class="dropdown-menu">
<li>
<a href="/new"><span class="octicon octicon-repo-create"></span> New repository</a>
</li>
<li>
<a href="/organizations/new"><span class="octicon octicon-organization"></span> New organization</a>
</li>
<li class="section-title">
<span title="vim-jp/vital.vim">This repository</span>
</li>
<li>
<a href="/vim-jp/vital.vim/issues/new"><span class="octicon octicon-issue-opened"></span> New issue</a>
</li>
</ul>
</div>
</div>
</div>
<div class="site" itemscope itemtype="http://schema.org/WebPage">
<div class="pagehead repohead instapaper_ignore readability-menu">
<div class="container">
<ul class="pagehead-actions">
<li class="subscription">
<form accept-charset="UTF-8" action="/notifications/subscribe" class="js-social-container" data-autosubmit="true" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="QJ+IADlDg9SxDImNEnlVQuqnrERp2WaGGsoyvKtaTk4=" /></div> <input id="repository_id" name="repository_id" type="hidden" value="1308435" />
<div class="select-menu js-menu-container js-select-menu">
<a class="social-count js-social-count" href="/vim-jp/vital.vim/watchers">
22
</a>
<span class="minibutton select-menu-button with-count js-menu-target" role="button" tabindex="0">
<span class="js-select-button">
<span class="octicon octicon-eye-unwatch"></span>
Unwatch
</span>
</span>
<div class="select-menu-modal-holder">
<div class="select-menu-modal subscription-menu-modal js-menu-content">
<div class="select-menu-header">
<span class="select-menu-title">Notification status</span>
<span class="octicon octicon-remove-close js-menu-close"></span>
</div> <!-- /.select-menu-header -->
<div class="select-menu-list js-navigation-container" role="menu">
<div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0">
<span class="select-menu-item-icon octicon octicon-check"></span>
<div class="select-menu-item-text">
<input id="do_included" name="do" type="radio" value="included" />
<h4>Not watching</h4>
<span class="description">You only receive notifications for conversations in which you participate or are @mentioned.</span>
<span class="js-select-button-text hidden-select-button-text">
<span class="octicon octicon-eye-watch"></span>
Watch
</span>
</div>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item selected" role="menuitem" tabindex="0">
<span class="select-menu-item-icon octicon octicon octicon-check"></span>
<div class="select-menu-item-text">
<input checked="checked" id="do_subscribed" name="do" type="radio" value="subscribed" />
<h4>Watching</h4>
<span class="description">You receive notifications for all conversations in this repository.</span>
<span class="js-select-button-text hidden-select-button-text">
<span class="octicon octicon-eye-unwatch"></span>
Unwatch
</span>
</div>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0">
<span class="select-menu-item-icon octicon octicon-check"></span>
<div class="select-menu-item-text">
<input id="do_ignore" name="do" type="radio" value="ignore" />
<h4>Ignoring</h4>
<span class="description">You do not receive any notifications for conversations in this repository.</span>
<span class="js-select-button-text hidden-select-button-text">
<span class="octicon octicon-mute"></span>
Stop ignoring
</span>
</div>
</div> <!-- /.select-menu-item -->
</div> <!-- /.select-menu-list -->
</div> <!-- /.select-menu-modal -->
</div> <!-- /.select-menu-modal-holder -->
</div> <!-- /.select-menu -->
</form>
</li>
<li>
<div class="js-toggler-container js-social-container starring-container ">
<a href="/vim-jp/vital.vim/unstar"
class="minibutton with-count js-toggler-target star-button starred upwards"
title="Unstar this repository" data-remote="true" data-method="post" rel="nofollow">
<span class="octicon octicon-star-delete"></span><span class="text">Unstar</span>
</a>
<a href="/vim-jp/vital.vim/star"
class="minibutton with-count js-toggler-target star-button unstarred upwards"
title="Star this repository" data-remote="true" data-method="post" rel="nofollow">
<span class="octicon octicon-star"></span><span class="text">Star</span>
</a>
<a class="social-count js-social-count" href="/vim-jp/vital.vim/stargazers">
79
</a>
</div>
</li>
<li>
<a href="/vim-jp/vital.vim/fork" class="minibutton with-count js-toggler-target fork-button lighter upwards" title="Fork this repo" rel="facebox nofollow">
<span class="octicon octicon-git-branch-create"></span><span class="text">Fork</span>
</a>
<a href="/vim-jp/vital.vim/network" class="social-count">26</a>
</li>
</ul>
<h1 itemscope itemtype="http://data-vocabulary.org/Breadcrumb" class="entry-title public">
<span class="repo-label"><span>public</span></span>
<span class="mega-octicon octicon-repo"></span>
<span class="author">
<a href="/vim-jp" class="url fn" itemprop="url" rel="author"><span itemprop="title">vim-jp</span></a>
</span>
<span class="repohead-name-divider">/</span>
<strong><a href="/vim-jp/vital.vim" class="js-current-repository js-repo-home-link">vital.vim</a></strong>
<span class="page-context-loader">
<img alt="Octocat-spinner-32" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</span>
</h1>
</div><!-- /.container -->
</div><!-- /.repohead -->
<div class="container">
<div class="repository-with-sidebar repo-container ">
<div class="repository-sidebar">
<div class="sunken-menu vertical-right repo-nav js-repo-nav js-repository-container-pjax js-octicon-loaders">
<div class="sunken-menu-contents">
<ul class="sunken-menu-group">
<li class="tooltipped leftwards" title="Code">
<a href="/vim-jp/vital.vim" aria-label="Code" class="selected js-selected-navigation-item sunken-menu-item" data-gotokey="c" data-pjax="true" data-selected-links="repo_source repo_downloads repo_commits repo_tags repo_branches /vim-jp/vital.vim">
<span class="octicon octicon-code"></span> <span class="full-word">Code</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Issues">
<a href="/vim-jp/vital.vim/issues" aria-label="Issues" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-gotokey="i" data-selected-links="repo_issues /vim-jp/vital.vim/issues">
<span class="octicon octicon-issue-opened"></span> <span class="full-word">Issues</span>
<span class='counter'>28</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Pull Requests">
<a href="/vim-jp/vital.vim/pulls" aria-label="Pull Requests" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-gotokey="p" data-selected-links="repo_pulls /vim-jp/vital.vim/pulls">
<span class="octicon octicon-git-pull-request"></span> <span class="full-word">Pull Requests</span>
<span class='counter'>4</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Wiki">
<a href="/vim-jp/vital.vim/wiki" aria-label="Wiki" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="repo_wiki /vim-jp/vital.vim/wiki">
<span class="octicon octicon-book"></span> <span class="full-word">Wiki</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
</ul>
<div class="sunken-menu-separator"></div>
<ul class="sunken-menu-group">
<li class="tooltipped leftwards" title="Pulse">
<a href="/vim-jp/vital.vim/pulse" aria-label="Pulse" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="pulse /vim-jp/vital.vim/pulse">
<span class="octicon octicon-pulse"></span> <span class="full-word">Pulse</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Graphs">
<a href="/vim-jp/vital.vim/graphs" aria-label="Graphs" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="repo_graphs repo_contributors /vim-jp/vital.vim/graphs">
<span class="octicon octicon-graph"></span> <span class="full-word">Graphs</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Network">
<a href="/vim-jp/vital.vim/network" aria-label="Network" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-selected-links="repo_network /vim-jp/vital.vim/network">
<span class="octicon octicon-git-branch"></span> <span class="full-word">Network</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
</ul>
</div>
</div>
<div class="only-with-full-nav">
<div class="clone-url "
data-protocol-type="http"
data-url="/users/set_protocol?protocol_selector=http&amp;protocol_type=push">
<h3><strong>HTTPS</strong> clone URL</h3>
<div class="clone-url-box">
<input type="text" class="clone js-url-field"
value="https://github.com/vim-jp/vital.vim.git" readonly="readonly">
<span class="js-zeroclipboard url-box-clippy minibutton zeroclipboard-button" data-clipboard-text="https://github.com/vim-jp/vital.vim.git" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
</div>
</div>
<div class="clone-url open"
data-protocol-type="ssh"
data-url="/users/set_protocol?protocol_selector=ssh&amp;protocol_type=push">
<h3><strong>SSH</strong> clone URL</h3>
<div class="clone-url-box">
<input type="text" class="clone js-url-field"
value="git@github.com:vim-jp/vital.vim.git" readonly="readonly">
<span class="js-zeroclipboard url-box-clippy minibutton zeroclipboard-button" data-clipboard-text="git@github.com:vim-jp/vital.vim.git" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
</div>
</div>
<div class="clone-url "
data-protocol-type="subversion"
data-url="/users/set_protocol?protocol_selector=subversion&amp;protocol_type=push">
<h3><strong>Subversion</strong> checkout URL</h3>
<div class="clone-url-box">
<input type="text" class="clone js-url-field"
value="https://github.com/vim-jp/vital.vim" readonly="readonly">
<span class="js-zeroclipboard url-box-clippy minibutton zeroclipboard-button" data-clipboard-text="https://github.com/vim-jp/vital.vim" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
</div>
</div>
<p class="clone-options">You can clone with
<a href="#" class="js-clone-selector" data-protocol="http">HTTPS</a>,
<a href="#" class="js-clone-selector" data-protocol="ssh">SSH</a>,
or <a href="#" class="js-clone-selector" data-protocol="subversion">Subversion</a>.
<span class="octicon help tooltipped upwards" title="Get help on which URL is right for you.">
<a href="https://help.github.com/articles/which-remote-url-should-i-use">
<span class="octicon octicon-question"></span>
</a>
</span>
</p>
<a href="http://windows.github.com" class="minibutton sidebar-button">
<span class="octicon octicon-device-desktop"></span>
Clone in Desktop
</a>
<a href="/vim-jp/vital.vim/archive/master.zip"
class="minibutton sidebar-button"
title="Download this repository as a zip file"
rel="nofollow">
<span class="octicon octicon-cloud-download"></span>
Download ZIP
</a>
</div>
</div><!-- /.repository-sidebar -->
<div id="js-repo-pjax-container" class="repository-content context-loader-container" data-pjax-container>
<!-- blob contrib key: blob_contributors:v21:8865196e6c233067ca43f509eaa36ae4 -->
<p title="This is a placeholder element" class="js-history-link-replace hidden"></p>
<a href="/vim-jp/vital.vim/find/master" data-pjax data-hotkey="t" class="js-show-file-finder" style="display:none">Show File Finder</a>
<div class="file-navigation">
<div class="select-menu js-menu-container js-select-menu" >
<span class="minibutton select-menu-button js-menu-target" data-hotkey="w"
data-master-branch="master"
data-ref="master"
role="button" aria-label="Switch branches or tags" tabindex="0">
<span class="octicon octicon-git-branch"></span>
<i>branch:</i>
<span class="js-select-button">master</span>
</span>
<div class="select-menu-modal-holder js-menu-content js-navigation-container" data-pjax>
<div class="select-menu-modal">
<div class="select-menu-header">
<span class="select-menu-title">Switch branches/tags</span>
<span class="octicon octicon-remove-close js-menu-close"></span>
</div> <!-- /.select-menu-header -->
<div class="select-menu-filters">
<div class="select-menu-text-filter">
<input type="text" aria-label="Find or create a branch…" id="context-commitish-filter-field" class="js-filterable-field js-navigation-enable" placeholder="Find or create a branch…">
</div>
<div class="select-menu-tabs">
<ul>
<li class="select-menu-tab">
<a href="#" data-tab-filter="branches" class="js-select-menu-tab">Branches</a>
</li>
<li class="select-menu-tab">
<a href="#" data-tab-filter="tags" class="js-select-menu-tab">Tags</a>
</li>
</ul>
</div><!-- /.select-menu-tabs -->
</div><!-- /.select-menu-filters -->
<div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="branches">
<div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/Data.Closure/autoload/vital/__latest__/ProcessManager.vim"
data-name="Data.Closure"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="Data.Closure">Data.Closure</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/git_submodule/autoload/vital/__latest__/ProcessManager.vim"
data-name="git_submodule"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="git_submodule">git_submodule</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/logger/autoload/vital/__latest__/ProcessManager.vim"
data-name="logger"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="logger">logger</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item selected">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/master/autoload/vital/__latest__/ProcessManager.vim"
data-name="master"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="master">master</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/optional-prelude/autoload/vital/__latest__/ProcessManager.vim"
data-name="optional-prelude"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="optional-prelude">optional-prelude</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/sqlite-processmanager-wip/autoload/vital/__latest__/ProcessManager.vim"
data-name="sqlite-processmanager-wip"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="sqlite-processmanager-wip">sqlite-processmanager-wip</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/sys.file/autoload/vital/__latest__/ProcessManager.vim"
data-name="sys.file"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="sys.file">sys.file</a>
</div> <!-- /.select-menu-item -->
</div>
<form accept-charset="UTF-8" action="/vim-jp/vital.vim/branches" class="js-create-branch select-menu-item select-menu-new-item-form js-navigation-item js-new-item-form" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="QJ+IADlDg9SxDImNEnlVQuqnrERp2WaGGsoyvKtaTk4=" /></div>
<span class="octicon octicon-git-branch-create select-menu-item-icon"></span>
<div class="select-menu-item-text">
<h4>Create branch: <span class="js-new-item-name"></span></h4>
<span class="description">from ‘master’</span>
</div>
<input type="hidden" name="name" id="name" class="js-new-item-value">
<input type="hidden" name="branch" id="branch" value="master" />
<input type="hidden" name="path" id="path" value="autoload/vital/__latest__/ProcessManager.vim" />
</form> <!-- /.select-menu-item -->
</div> <!-- /.select-menu-list -->
<div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="tags">
<div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
</div>
<div class="select-menu-no-results">Nothing to show</div>
</div> <!-- /.select-menu-list -->
</div> <!-- /.select-menu-modal -->
</div> <!-- /.select-menu-modal-holder -->
</div> <!-- /.select-menu -->
<div class="breadcrumb">
<span class='repo-root js-repo-root'><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/vim-jp/vital.vim" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">vital.vim</span></a></span></span><span class="separator"> / </span><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/vim-jp/vital.vim/tree/master/autoload" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">autoload</span></a></span><span class="separator"> / </span><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/vim-jp/vital.vim/tree/master/autoload/vital" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">vital</span></a></span><span class="separator"> / </span><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/vim-jp/vital.vim/tree/master/autoload/vital/__latest__" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">__latest__</span></a></span><span class="separator"> / </span><strong class="final-path">ProcessManager.vim</strong> <span class="js-zeroclipboard minibutton zeroclipboard-button" data-clipboard-text="autoload/vital/__latest__/ProcessManager.vim" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
</div>
</div>
<div class="commit file-history-tease">
<img class="main-avatar" height="24" src="https://1.gravatar.com/avatar/d9d0ceb387e3b6de5c4562af78e8a910?d=https%3A%2F%2Fidenticons.github.com%2F0fc780bb04e74ce5ed154d2e49cfe2fd.png&amp;r=x&amp;s=140" width="24" />
<span class="author"><a href="/ujihisa" rel="author">ujihisa</a></span>
<time class="js-relative-date" datetime="2013-12-21T20:30:11-08:00" title="2013-12-21 20:30:11">December 21, 2013</time>
<div class="commit-title">
<a href="/vim-jp/vital.vim/commit/240d2c93ff042c7afd291cdb301c0c1004136a73" class="message" data-pjax="true" title="ProcessManager: cosmetic change">ProcessManager: cosmetic change</a>
</div>
<div class="participation">
<p class="quickstat"><a href="#blob_contributors_box" rel="facebox"><strong>4</strong> contributors</a></p>
<a class="avatar tooltipped downwards" title="ujihisa" href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim?author=ujihisa"><img height="20" src="https://1.gravatar.com/avatar/d9d0ceb387e3b6de5c4562af78e8a910?d=https%3A%2F%2Fidenticons.github.com%2F0fc780bb04e74ce5ed154d2e49cfe2fd.png&amp;r=x&amp;s=140" width="20" /></a>
<a class="avatar tooltipped downwards" title="mattn" href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim?author=mattn"><img height="20" src="https://2.gravatar.com/avatar/1ba93fd9e39ebf48777f217c38e768fd?d=https%3A%2F%2Fidenticons.github.com%2F70bb83c9272e6c4bc6e83e0a55c7c9c3.png&amp;r=x&amp;s=140" width="20" /></a>
<a class="avatar tooltipped downwards" title="ichizok" href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim?author=ichizok"><img height="20" src="https://2.gravatar.com/avatar/9b780db659a9a657e775b07521be3efc?d=https%3A%2F%2Fidenticons.github.com%2Fa8a23399cfd9dee3779fad0970ec23dc.png&amp;r=x&amp;s=140" width="20" /></a>
<a class="avatar tooltipped downwards" title="alpaca-tc" href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim?author=alpaca-tc"><img height="20" src="https://1.gravatar.com/avatar/c2fe23111675890bf8bc59afb312990e?d=https%3A%2F%2Fidenticons.github.com%2F8e3d7e94dcb83a1fda7307b9f75b186c.png&amp;r=x&amp;s=140" width="20" /></a>
</div>
<div id="blob_contributors_box" style="display:none">
<h2 class="facebox-header">Users who have contributed to this file</h2>
<ul class="facebox-user-list">
<li class="facebox-user-list-item">
<img height="24" src="https://1.gravatar.com/avatar/d9d0ceb387e3b6de5c4562af78e8a910?d=https%3A%2F%2Fidenticons.github.com%2F0fc780bb04e74ce5ed154d2e49cfe2fd.png&amp;r=x&amp;s=140" width="24" />
<a href="/ujihisa">ujihisa</a>
</li>
<li class="facebox-user-list-item">
<img height="24" src="https://2.gravatar.com/avatar/1ba93fd9e39ebf48777f217c38e768fd?d=https%3A%2F%2Fidenticons.github.com%2F70bb83c9272e6c4bc6e83e0a55c7c9c3.png&amp;r=x&amp;s=140" width="24" />
<a href="/mattn">mattn</a>
</li>
<li class="facebox-user-list-item">
<img height="24" src="https://2.gravatar.com/avatar/9b780db659a9a657e775b07521be3efc?d=https%3A%2F%2Fidenticons.github.com%2Fa8a23399cfd9dee3779fad0970ec23dc.png&amp;r=x&amp;s=140" width="24" />
<a href="/ichizok">ichizok</a>
</li>
<li class="facebox-user-list-item">
<img height="24" src="https://1.gravatar.com/avatar/c2fe23111675890bf8bc59afb312990e?d=https%3A%2F%2Fidenticons.github.com%2F8e3d7e94dcb83a1fda7307b9f75b186c.png&amp;r=x&amp;s=140" width="24" />
<a href="/alpaca-tc">alpaca-tc</a>
</li>
</ul>
</div>
</div>
<div id="files" class="bubble">
<div class="file">
<div class="meta">
<div class="info">
<span class="icon"><b class="octicon octicon-file-text"></b></span>
<span class="mode" title="File Mode">file</span>
<span>125 lines (103 sloc)</span>
<span>2.881 kb</span>
</div>
<div class="actions">
<div class="button-group">
<a class="minibutton tooltipped leftwards"
href="http://windows.github.com" title="Open this file in GitHub for Windows">
<span class="octicon octicon-device-desktop"></span> Open
</a>
<a class="minibutton"
href="/vim-jp/vital.vim/edit/master/autoload/vital/__latest__/ProcessManager.vim"
data-method="post" rel="nofollow" data-hotkey="e">Edit</a>
<a href="/vim-jp/vital.vim/raw/master/autoload/vital/__latest__/ProcessManager.vim" class="button minibutton " id="raw-url">Raw</a>
<a href="/vim-jp/vital.vim/blame/master/autoload/vital/__latest__/ProcessManager.vim" class="button minibutton ">Blame</a>
<a href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim" class="button minibutton " rel="nofollow">History</a>
</div><!-- /.button-group -->
<a class="minibutton danger empty-icon tooltipped downwards"
href="/vim-jp/vital.vim/delete/master/autoload/vital/__latest__/ProcessManager.vim"
title=""
data-method="post" data-test-id="delete-blob-file" rel="nofollow">
Delete
</a>
</div><!-- /.actions -->
</div>
<div class="blob-wrapper data type-viml js-blob-data">
<table class="file-code file-diff">
<tr class="file-code-line">
<td class="blob-line-nums">
<span id="L1" rel="#L1">1</span>
<span id="L2" rel="#L2">2</span>
<span id="L3" rel="#L3">3</span>
<span id="L4" rel="#L4">4</span>
<span id="L5" rel="#L5">5</span>
<span id="L6" rel="#L6">6</span>
<span id="L7" rel="#L7">7</span>
<span id="L8" rel="#L8">8</span>
<span id="L9" rel="#L9">9</span>
<span id="L10" rel="#L10">10</span>
<span id="L11" rel="#L11">11</span>
<span id="L12" rel="#L12">12</span>
<span id="L13" rel="#L13">13</span>
<span id="L14" rel="#L14">14</span>
<span id="L15" rel="#L15">15</span>
<span id="L16" rel="#L16">16</span>
<span id="L17" rel="#L17">17</span>
<span id="L18" rel="#L18">18</span>
<span id="L19" rel="#L19">19</span>
<span id="L20" rel="#L20">20</span>
<span id="L21" rel="#L21">21</span>
<span id="L22" rel="#L22">22</span>
<span id="L23" rel="#L23">23</span>
<span id="L24" rel="#L24">24</span>
<span id="L25" rel="#L25">25</span>
<span id="L26" rel="#L26">26</span>
<span id="L27" rel="#L27">27</span>
<span id="L28" rel="#L28">28</span>
<span id="L29" rel="#L29">29</span>
<span id="L30" rel="#L30">30</span>
<span id="L31" rel="#L31">31</span>
<span id="L32" rel="#L32">32</span>
<span id="L33" rel="#L33">33</span>
<span id="L34" rel="#L34">34</span>
<span id="L35" rel="#L35">35</span>
<span id="L36" rel="#L36">36</span>
<span id="L37" rel="#L37">37</span>
<span id="L38" rel="#L38">38</span>
<span id="L39" rel="#L39">39</span>
<span id="L40" rel="#L40">40</span>
<span id="L41" rel="#L41">41</span>
<span id="L42" rel="#L42">42</span>
<span id="L43" rel="#L43">43</span>
<span id="L44" rel="#L44">44</span>
<span id="L45" rel="#L45">45</span>
<span id="L46" rel="#L46">46</span>
<span id="L47" rel="#L47">47</span>
<span id="L48" rel="#L48">48</span>
<span id="L49" rel="#L49">49</span>
<span id="L50" rel="#L50">50</span>
<span id="L51" rel="#L51">51</span>
<span id="L52" rel="#L52">52</span>
<span id="L53" rel="#L53">53</span>
<span id="L54" rel="#L54">54</span>
<span id="L55" rel="#L55">55</span>
<span id="L56" rel="#L56">56</span>
<span id="L57" rel="#L57">57</span>
<span id="L58" rel="#L58">58</span>
<span id="L59" rel="#L59">59</span>
<span id="L60" rel="#L60">60</span>
<span id="L61" rel="#L61">61</span>
<span id="L62" rel="#L62">62</span>
<span id="L63" rel="#L63">63</span>
<span id="L64" rel="#L64">64</span>
<span id="L65" rel="#L65">65</span>
<span id="L66" rel="#L66">66</span>
<span id="L67" rel="#L67">67</span>
<span id="L68" rel="#L68">68</span>
<span id="L69" rel="#L69">69</span>
<span id="L70" rel="#L70">70</span>
<span id="L71" rel="#L71">71</span>
<span id="L72" rel="#L72">72</span>
<span id="L73" rel="#L73">73</span>
<span id="L74" rel="#L74">74</span>
<span id="L75" rel="#L75">75</span>
<span id="L76" rel="#L76">76</span>
<span id="L77" rel="#L77">77</span>
<span id="L78" rel="#L78">78</span>
<span id="L79" rel="#L79">79</span>
<span id="L80" rel="#L80">80</span>
<span id="L81" rel="#L81">81</span>
<span id="L82" rel="#L82">82</span>
<span id="L83" rel="#L83">83</span>
<span id="L84" rel="#L84">84</span>
<span id="L85" rel="#L85">85</span>
<span id="L86" rel="#L86">86</span>
<span id="L87" rel="#L87">87</span>
<span id="L88" rel="#L88">88</span>
<span id="L89" rel="#L89">89</span>
<span id="L90" rel="#L90">90</span>
<span id="L91" rel="#L91">91</span>
<span id="L92" rel="#L92">92</span>
<span id="L93" rel="#L93">93</span>
<span id="L94" rel="#L94">94</span>
<span id="L95" rel="#L95">95</span>
<span id="L96" rel="#L96">96</span>
<span id="L97" rel="#L97">97</span>
<span id="L98" rel="#L98">98</span>
<span id="L99" rel="#L99">99</span>
<span id="L100" rel="#L100">100</span>
<span id="L101" rel="#L101">101</span>
<span id="L102" rel="#L102">102</span>
<span id="L103" rel="#L103">103</span>
<span id="L104" rel="#L104">104</span>
<span id="L105" rel="#L105">105</span>
<span id="L106" rel="#L106">106</span>
<span id="L107" rel="#L107">107</span>
<span id="L108" rel="#L108">108</span>
<span id="L109" rel="#L109">109</span>
<span id="L110" rel="#L110">110</span>
<span id="L111" rel="#L111">111</span>
<span id="L112" rel="#L112">112</span>
<span id="L113" rel="#L113">113</span>
<span id="L114" rel="#L114">114</span>
<span id="L115" rel="#L115">115</span>
<span id="L116" rel="#L116">116</span>
<span id="L117" rel="#L117">117</span>
<span id="L118" rel="#L118">118</span>
<span id="L119" rel="#L119">119</span>
<span id="L120" rel="#L120">120</span>
<span id="L121" rel="#L121">121</span>
<span id="L122" rel="#L122">122</span>
<span id="L123" rel="#L123">123</span>
<span id="L124" rel="#L124">124</span>
</td>
<td class="blob-line-code">
<div class="code-body highlight"><pre><div class='line' id='LC1'><span class="k">let</span> <span class="k">s</span>:save_cpo <span class="p">=</span> &amp;<span class="nb">cpo</span></div><div class='line' id='LC2'><span class="k">set</span> <span class="nb">cpo</span>&amp;<span class="k">vim</span></div><div class='line' id='LC3'><br/></div><div class='line' id='LC4'><span class="k">let</span> <span class="k">s</span>:_processes <span class="p">=</span> {}</div><div class='line' id='LC5'><br/></div><div class='line' id='LC6'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:_vital_loaded<span class="p">(</span>V<span class="p">)</span></div><div class='line' id='LC7'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">s</span>:V <span class="p">=</span> <span class="k">a</span>:V</div><div class='line' id='LC8'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">s</span>:S <span class="p">=</span> <span class="k">s</span>:V.import<span class="p">(</span><span class="s1">&#39;Data.String&#39;</span><span class="p">)</span></div><div class='line' id='LC9'><span class="k">endfunction</span></div><div class='line' id='LC10'><br/></div><div class='line' id='LC11'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:_vital_depends<span class="p">()</span></div><div class='line' id='LC12'>&nbsp;&nbsp;<span class="k">return</span> [<span class="s1">&#39;Data.String&#39;</span>]</div><div class='line' id='LC13'><span class="k">endfunction</span></div><div class='line' id='LC14'><br/></div><div class='line' id='LC15'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:is_available<span class="p">()</span></div><div class='line' id='LC16'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:V.has_vimproc<span class="p">()</span></div><div class='line' id='LC17'><span class="k">endfunction</span></div><div class='line' id='LC18'><br/></div><div class='line' id='LC19'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:touch<span class="p">(</span>name<span class="p">,</span> cmd<span class="p">)</span></div><div class='line' id='LC20'>&nbsp;&nbsp;<span class="k">if</span> has_key<span class="p">(</span><span class="k">s</span>:_processes<span class="p">,</span> <span class="k">a</span>:name<span class="p">)</span></div><div class='line' id='LC21'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="s1">&#39;existing&#39;</span></div><div class='line' id='LC22'>&nbsp;&nbsp;<span class="k">else</span></div><div class='line' id='LC23'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> vimproc#popen3<span class="p">(</span><span class="k">a</span>:cmd<span class="p">)</span></div><div class='line' id='LC24'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> <span class="k">s</span>:_processes[<span class="k">a</span>:name] <span class="p">=</span> <span class="k">p</span></div><div class='line' id='LC25'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="s1">&#39;new&#39;</span></div><div class='line' id='LC26'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC27'><span class="k">endfunction</span></div><div class='line' id='LC28'><br/></div><div class='line' id='LC29'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:stop<span class="p">(</span><span class="k">i</span><span class="p">)</span></div><div class='line' id='LC30'>&nbsp;&nbsp;<span class="k">echomsg</span> <span class="s2">&quot;Vital.ProcessManager.stop() is deprecated! Please use kill() or term() instead.&quot;</span></div><div class='line' id='LC31'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:kill<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC32'><span class="k">endfunction</span></div><div class='line' id='LC33'><br/></div><div class='line' id='LC34'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:_stop<span class="p">(</span><span class="k">i</span><span class="p">,</span> ...<span class="p">)</span></div><div class='line' id='LC35'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC36'>&nbsp;&nbsp;<span class="k">call</span> <span class="k">p</span>.kill<span class="p">(</span><span class="k">get</span><span class="p">(</span><span class="k">a</span>:<span class="m">000</span><span class="p">,</span> <span class="m">0</span><span class="p">,</span> <span class="m">0</span><span class="p">)</span> ? <span class="k">g</span>:vimproc#SIGKILL : <span class="k">g</span>:vimproc#SIGTERM<span class="p">)</span></div><div class='line' id='LC37'><span class="c"> &quot; call p.waitpid()</span></div><div class='line' id='LC38'>&nbsp;&nbsp;unlet <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC39'><span class="k">endfunction</span></div><div class='line' id='LC40'><br/></div><div class='line' id='LC41'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:<span class="nb">term</span><span class="p">(</span><span class="k">i</span><span class="p">)</span></div><div class='line' id='LC42'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:_stop<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">,</span> <span class="m">0</span><span class="p">)</span></div><div class='line' id='LC43'><span class="k">endfunction</span></div><div class='line' id='LC44'><br/></div><div class='line' id='LC45'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:kill<span class="p">(</span><span class="k">i</span><span class="p">)</span></div><div class='line' id='LC46'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:_stop<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">,</span> <span class="m">1</span><span class="p">)</span></div><div class='line' id='LC47'><span class="k">endfunction</span></div><div class='line' id='LC48'><br/></div><div class='line' id='LC49'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:read<span class="p">(</span><span class="k">i</span><span class="p">,</span> endpatterns<span class="p">)</span></div><div class='line' id='LC50'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:read_wait<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">,</span> <span class="m">0</span>.<span class="m">05</span><span class="p">,</span> <span class="k">a</span>:endpatterns<span class="p">)</span></div><div class='line' id='LC51'><span class="k">endfunction</span></div><div class='line' id='LC52'><br/></div><div class='line' id='LC53'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:read_wait<span class="p">(</span><span class="k">i</span><span class="p">,</span> wait<span class="p">,</span> endpatterns<span class="p">)</span></div><div class='line' id='LC54'>&nbsp;&nbsp;<span class="k">if</span> <span class="p">!</span>has_key<span class="p">(</span><span class="k">s</span>:_processes<span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC55'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">throw</span> printf<span class="p">(</span><span class="s2">&quot;ProcessManager doesn&#39;t know about %s&quot;</span><span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC56'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC57'><br/></div><div class='line' id='LC58'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC59'><br/></div><div class='line' id='LC60'>&nbsp;&nbsp;<span class="k">if</span> <span class="k">s</span>:status<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">)</span> <span class="p">==</span># <span class="s1">&#39;inactive&#39;</span></div><div class='line' id='LC61'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> [<span class="k">p</span>.stdout.read<span class="p">(),</span> <span class="k">p</span>.stderr.read<span class="p">(),</span> <span class="s1">&#39;inactive&#39;</span>]</div><div class='line' id='LC62'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC63'><br/></div><div class='line' id='LC64'>&nbsp;&nbsp;<span class="k">let</span> out_memo <span class="p">=</span> <span class="s1">&#39;&#39;</span></div><div class='line' id='LC65'>&nbsp;&nbsp;<span class="k">let</span> err_memo <span class="p">=</span> <span class="s1">&#39;&#39;</span></div><div class='line' id='LC66'>&nbsp;&nbsp;<span class="k">let</span> lastchanged <span class="p">=</span> reltime<span class="p">()</span></div><div class='line' id='LC67'>&nbsp;&nbsp;<span class="k">while</span> <span class="m">1</span></div><div class='line' id='LC68'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> [<span class="k">x</span><span class="p">,</span> <span class="k">y</span>] <span class="p">=</span> [<span class="k">p</span>.stdout.read<span class="p">(),</span> <span class="k">p</span>.stderr.read<span class="p">()</span>]</div><div class='line' id='LC69'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="k">x</span> <span class="p">==</span># <span class="s1">&#39;&#39;</span> &amp;&amp; <span class="k">y</span> <span class="p">==</span># <span class="s1">&#39;&#39;</span></div><div class='line' id='LC70'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> str2float<span class="p">(</span>reltimestr<span class="p">(</span>reltime<span class="p">(</span>lastchanged<span class="p">)))</span> <span class="p">&gt;</span> <span class="k">a</span>:wait</div><div class='line' id='LC71'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> [out_memo<span class="p">,</span> err_memo<span class="p">,</span> <span class="s1">&#39;timedout&#39;</span>]</div><div class='line' id='LC72'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC73'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">else</span></div><div class='line' id='LC74'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> lastchanged <span class="p">=</span> reltime<span class="p">()</span></div><div class='line' id='LC75'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> out_memo .<span class="p">=</span> <span class="k">x</span></div><div class='line' id='LC76'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> err_memo .<span class="p">=</span> <span class="k">y</span></div><div class='line' id='LC77'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">for</span> pattern <span class="k">in</span> <span class="k">a</span>:endpatterns</div><div class='line' id='LC78'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> out_memo <span class="p">=~</span> <span class="p">(</span><span class="s2">&quot;\\(^\\|\n\\)&quot;</span> . pattern<span class="p">)</span></div><div class='line' id='LC79'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> [<span class="k">s</span>:S.substitute_last<span class="p">(</span>out_memo<span class="p">,</span> pattern<span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">),</span> err_memo<span class="p">,</span> <span class="s1">&#39;matched&#39;</span>]</div><div class='line' id='LC80'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC81'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">endfor</span></div><div class='line' id='LC82'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC83'>&nbsp;&nbsp;<span class="k">endwhile</span></div><div class='line' id='LC84'><span class="k">endfunction</span></div><div class='line' id='LC85'><br/></div><div class='line' id='LC86'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:<span class="nb">write</span><span class="p">(</span><span class="k">i</span><span class="p">,</span> str<span class="p">)</span></div><div class='line' id='LC87'>&nbsp;&nbsp;<span class="k">if</span> <span class="p">!</span>has_key<span class="p">(</span><span class="k">s</span>:_processes<span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC88'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">throw</span> printf<span class="p">(</span><span class="s2">&quot;ProcessManager doesn&#39;t know about %s&quot;</span><span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC89'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC90'>&nbsp;&nbsp;<span class="k">if</span> <span class="k">s</span>:status<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">)</span> <span class="p">==</span># <span class="s1">&#39;inactive&#39;</span></div><div class='line' id='LC91'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="s1">&#39;inactive&#39;</span></div><div class='line' id='LC92'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC93'><br/></div><div class='line' id='LC94'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC95'>&nbsp;&nbsp;<span class="k">call</span> <span class="k">p</span>.stdin.<span class="nb">write</span><span class="p">(</span><span class="k">a</span>:str<span class="p">)</span></div><div class='line' id='LC96'><br/></div><div class='line' id='LC97'>&nbsp;&nbsp;<span class="k">return</span> <span class="s1">&#39;active&#39;</span></div><div class='line' id='LC98'><span class="k">endfunction</span></div><div class='line' id='LC99'><br/></div><div class='line' id='LC100'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:writeln<span class="p">(</span><span class="k">i</span><span class="p">,</span> str<span class="p">)</span></div><div class='line' id='LC101'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:<span class="nb">write</span><span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">,</span> <span class="k">a</span>:str . <span class="s2">&quot;\n&quot;</span><span class="p">)</span></div><div class='line' id='LC102'><span class="k">endfunction</span></div><div class='line' id='LC103'><br/></div><div class='line' id='LC104'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:status<span class="p">(</span><span class="k">i</span><span class="p">)</span></div><div class='line' id='LC105'>&nbsp;&nbsp;<span class="k">if</span> <span class="p">!</span>has_key<span class="p">(</span><span class="k">s</span>:_processes<span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC106'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">throw</span> printf<span class="p">(</span><span class="s2">&quot;ProcessManager doesn&#39;t know about %s&quot;</span><span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC107'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC108'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC109'><span class="c"> &quot; vimproc.kill isn&#39;t to stop but to ask for the current state.</span></div><div class='line' id='LC110'><span class="c"> &quot; return p.kill(0) ? &#39;inactive&#39; : &#39;active&#39;</span></div><div class='line' id='LC111'><span class="c"> &quot; ... checkpid() checks if the process is running AND does waitpid() in C,</span></div><div class='line' id='LC112'><span class="c"> &quot; so it solves zombie processes.</span></div><div class='line' id='LC113'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">get</span><span class="p">(</span><span class="k">p</span>.checkpid<span class="p">(),</span> <span class="m">0</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="p">==</span># <span class="s1">&#39;run&#39;</span></div><div class='line' id='LC114'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\ ? <span class="s1">&#39;active&#39;</span></div><div class='line' id='LC115'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\ : <span class="s1">&#39;inactive&#39;</span></div><div class='line' id='LC116'><span class="k">endfunction</span></div><div class='line' id='LC117'><br/></div><div class='line' id='LC118'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:debug_processes<span class="p">()</span></div><div class='line' id='LC119'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:_processes</div><div class='line' id='LC120'><span class="k">endfunction</span></div><div class='line' id='LC121'><br/></div><div class='line' id='LC122'><span class="k">let</span> &amp;<span class="nb">cpo</span> <span class="p">=</span> <span class="k">s</span>:save_cpo</div><div class='line' id='LC123'>unlet <span class="k">s</span>:save_cpo</div><div class='line' id='LC124'><span class="c">&quot; vim:set et ts=2 sts=2 sw=2 tw=0:</span></div></pre></div>
</td>
</tr>
</table>
</div>
</div>
</div>
<a href="#jump-to-line" rel="facebox[.linejump]" data-hotkey="l" class="js-jump-to-line" style="display:none">Jump to Line</a>
<div id="jump-to-line" style="display:none">
<form accept-charset="UTF-8" class="js-jump-to-line-form">
<input class="linejump-input js-jump-to-line-field" type="text" placeholder="Jump to line&hellip;" autofocus>
<button type="submit" class="button">Go</button>
</form>
</div>
</div>
</div><!-- /.repo-container -->
<div class="modal-backdrop"></div>
</div><!-- /.container -->
</div><!-- /.site -->
</div><!-- /.wrapper -->
<div class="container">
<div class="site-footer">
<ul class="site-footer-links right">
<li><a href="https://status.github.com/">Status</a></li>
<li><a href="http://developer.github.com">API</a></li>
<li><a href="http://training.github.com">Training</a></li>
<li><a href="http://shop.github.com">Shop</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/about">About</a></li>
</ul>
<a href="/">
<span class="mega-octicon octicon-mark-github" title="GitHub"></span>
</a>
<ul class="site-footer-links">
<li>&copy; 2014 <span title="0.03660s from github-fe122-cp1-prd.iad.github.net">GitHub</span>, Inc.</li>
<li><a href="/site/terms">Terms</a></li>
<li><a href="/site/privacy">Privacy</a></li>
<li><a href="/security">Security</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
</div><!-- /.site-footer -->
</div><!-- /.container -->
<div class="fullscreen-overlay js-fullscreen-overlay" id="fullscreen_overlay">
<div class="fullscreen-container js-fullscreen-container">
<div class="textarea-wrap">
<textarea name="fullscreen-contents" id="fullscreen-contents" class="js-fullscreen-contents" placeholder="" data-suggester="fullscreen_suggester"></textarea>
<div class="suggester-container">
<div class="suggester fullscreen-suggester js-navigation-container" id="fullscreen_suggester"
data-url="/vim-jp/vital.vim/suggestions/commit">
</div>
</div>
</div>
</div>
<div class="fullscreen-sidebar">
<a href="#" class="exit-fullscreen js-exit-fullscreen tooltipped leftwards" title="Exit Zen Mode">
<span class="mega-octicon octicon-screen-normal"></span>
</a>
<a href="#" class="theme-switcher js-theme-switcher tooltipped leftwards"
title="Switch themes">
<span class="octicon octicon-color-mode"></span>
</a>
</div>
</div>
<div id="ajax-error-message" class="flash flash-error">
<span class="octicon octicon-alert"></span>
<a href="#" class="octicon octicon-remove-close close js-ajax-error-dismiss"></a>
Something went wrong with that request. Please try again.
</div>
</body>
</html>
<!DOCTYPE html>
<html>
<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# githubog: http://ogp.me/ns/fb/githubog#">
<meta charset='utf-8'>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>vital.vim/autoload/vital/__latest__/ProcessManager.vim at master · vim-jp/vital.vim</title>
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub" />
<link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub" />
<link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-114.png" />
<link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114.png" />
<link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-144.png" />
<link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144.png" />
<link rel="logo" type="image/svg" href="https://github-media-downloads.s3.amazonaws.com/github-logo.svg" />
<meta property="og:image" content="https://github.global.ssl.fastly.net/images/modules/logos_page/Octocat.png">
<meta name="hostname" content="github-fe122-cp1-prd.iad.github.net">
<meta name="ruby" content="ruby 2.1.0p0-github-tcmalloc (60139581e1) [x86_64-linux]">
<link rel="assets" href="https://github.global.ssl.fastly.net/">
<link rel="conduit-xhr" href="https://ghconduit.com:25035/">
<link rel="xhr-socket" href="/_sockets" />
<meta name="msapplication-TileImage" content="/windows-tile.png" />
<meta name="msapplication-TileColor" content="#ffffff" />
<meta name="selected-link" value="repo_source" data-pjax-transient />
<meta content="collector.githubapp.com" name="octolytics-host" /><meta content="collector-cdn.github.com" name="octolytics-script-host" /><meta content="github" name="octolytics-app-id" /><meta content="B6F95C6A:6644:E50EC4:52E18AFE" name="octolytics-dimension-request_id" /><meta content="214488" name="octolytics-actor-id" /><meta content="osyo-manga" name="octolytics-actor-login" /><meta content="e5012931f92cc8195a7f530c4e37bcc88d86a6df4ea3fd06d12d9d5795f6d0e8" name="octolytics-actor-hash" />
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
<meta content="authenticity_token" name="csrf-param" />
<meta content="QJ+IADlDg9SxDImNEnlVQuqnrERp2WaGGsoyvKtaTk4=" name="csrf-token" />
<link href="https://github.global.ssl.fastly.net/assets/github-43087292f81aebbe92f90a36344865c4ad8170a0.css" media="all" rel="stylesheet" type="text/css" />
<link href="https://github.global.ssl.fastly.net/assets/github2-d23a1b1c4a1bc509a0ca67face2fb37ef257f599.css" media="all" rel="stylesheet" type="text/css" />
<script src="https://github.global.ssl.fastly.net/assets/frameworks-bf5987648bb83690ac0a5e955f74bbaf6ba44c4a.js" type="text/javascript"></script>
<script async="async" defer="defer" src="https://github.global.ssl.fastly.net/assets/github-eab207422bd65ea8c46ef3d26d6fbcc74bba89ce.js" type="text/javascript"></script>
<meta http-equiv="x-pjax-version" content="1ceda3c4fa0194817b46f4df6a3f2c23">
<link data-pjax-transient rel='permalink' href='/vim-jp/vital.vim/blob/3e229e28b002d42b9ca0d15bddddf0872fa2eed0/autoload/vital/__latest__/ProcessManager.vim'>
<meta property="og:title" content="vital.vim"/>
<meta property="og:type" content="githubog:gitrepository"/>
<meta property="og:url" content="https://github.com/vim-jp/vital.vim"/>
<meta property="og:image" content="https://github.global.ssl.fastly.net/images/gravatars/gravatar-user-420.png"/>
<meta property="og:site_name" content="GitHub"/>
<meta property="og:description" content="vital.vim - A comprehensive Vim utility functions for Vim plugins"/>
<meta name="description" content="vital.vim - A comprehensive Vim utility functions for Vim plugins" />
<meta content="1051958" name="octolytics-dimension-user_id" /><meta content="vim-jp" name="octolytics-dimension-user_login" /><meta content="1308435" name="octolytics-dimension-repository_id" /><meta content="vim-jp/vital.vim" name="octolytics-dimension-repository_nwo" /><meta content="true" name="octolytics-dimension-repository_public" /><meta content="false" name="octolytics-dimension-repository_is_fork" /><meta content="1308435" name="octolytics-dimension-repository_network_root_id" /><meta content="vim-jp/vital.vim" name="octolytics-dimension-repository_network_root_nwo" />
<link href="https://github.com/vim-jp/vital.vim/commits/master.atom" rel="alternate" title="Recent Commits to vital.vim:master" type="application/atom+xml" />
</head>
<body class="logged_in env-production windows vis-public page-blob">
<div class="wrapper">
<div class="header header-logged-in true">
<div class="container clearfix">
<a class="header-logo-invertocat" href="https://github.com/">
<span class="mega-octicon octicon-mark-github"></span>
</a>
<a href="/vim-jp/vital.vim/notifications" class="notification-indicator tooltipped downwards contextually-unread" data-gotokey="n" title="You have unread notifications in this repository">
<span class="mail-status unread"></span>
</a>
<div class="command-bar js-command-bar in-repository">
<form accept-charset="UTF-8" action="/search" class="command-bar-form" id="top_search_form" method="get">
<input type="text" data-hotkey="/ s" name="q" id="js-command-bar-field" placeholder="Search or type a command" tabindex="1" autocapitalize="off"
data-username="osyo-manga"
data-repo="vim-jp/vital.vim"
data-branch="master"
data-sha="e9e83ed3a8ffeefb55aeb10af4b80747448aeda6"
>
<input type="hidden" name="nwo" value="vim-jp/vital.vim" />
<div class="select-menu js-menu-container js-select-menu search-context-select-menu">
<span class="minibutton select-menu-button js-menu-target">
<span class="js-select-button">This repository</span>
</span>
<div class="select-menu-modal-holder js-menu-content js-navigation-container">
<div class="select-menu-modal">
<div class="select-menu-item js-navigation-item js-this-repository-navigation-item selected">
<span class="select-menu-item-icon octicon octicon-check"></span>
<input type="radio" class="js-search-this-repository" name="search_target" value="repository" checked="checked" />
<div class="select-menu-item-text js-select-button-text">This repository</div>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item js-all-repositories-navigation-item">
<span class="select-menu-item-icon octicon octicon-check"></span>
<input type="radio" name="search_target" value="global" />
<div class="select-menu-item-text js-select-button-text">All repositories</div>
</div> <!-- /.select-menu-item -->
</div>
</div>
</div>
<span class="octicon help tooltipped downwards" title="Show command bar help">
<span class="octicon octicon-question"></span>
</span>
<input type="hidden" name="ref" value="cmdform">
</form>
<ul class="top-nav">
<li class="explore"><a href="/explore">Explore</a></li>
<li><a href="https://gist.github.com">Gist</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="https://help.github.com">Help</a></li>
</ul>
</div>
<ul id="user-links">
<li>
<a href="/osyo-manga" class="name">
<img height="20" src="https://1.gravatar.com/avatar/3931098ae486b6df619050c63e24f6cc?d=https%3A%2F%2Fidenticons.github.com%2Fc192b911f32678010c36ee637415e182.png&amp;r=x&amp;s=140" width="20" /> osyo-manga
</a>
</li>
<li class="new-menu dropdown-toggle js-menu-container">
<a href="#" class="js-menu-target tooltipped downwards" title="Create new…">
<span class="octicon octicon-plus"></span>
<span class="dropdown-arrow"></span>
</a>
<div class="js-menu-content">
</div>
</li>
<li>
<a href="/settings/profile" id="account_settings"
class="tooltipped downwards"
aria-label="Account settings "
title="Account settings ">
<span class="octicon octicon-tools"></span>
</a>
</li>
<li>
<a class="tooltipped downwards" href="/logout" data-method="post" id="logout" title="Sign out" aria-label="Sign out">
<span class="octicon octicon-log-out"></span>
</a>
</li>
</ul>
<div class="js-new-dropdown-contents hidden">
<ul class="dropdown-menu">
<li>
<a href="/new"><span class="octicon octicon-repo-create"></span> New repository</a>
</li>
<li>
<a href="/organizations/new"><span class="octicon octicon-organization"></span> New organization</a>
</li>
<li class="section-title">
<span title="vim-jp/vital.vim">This repository</span>
</li>
<li>
<a href="/vim-jp/vital.vim/issues/new"><span class="octicon octicon-issue-opened"></span> New issue</a>
</li>
</ul>
</div>
</div>
</div>
<div class="site" itemscope itemtype="http://schema.org/WebPage">
<div class="pagehead repohead instapaper_ignore readability-menu">
<div class="container">
<ul class="pagehead-actions">
<li class="subscription">
<form accept-charset="UTF-8" action="/notifications/subscribe" class="js-social-container" data-autosubmit="true" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="QJ+IADlDg9SxDImNEnlVQuqnrERp2WaGGsoyvKtaTk4=" /></div> <input id="repository_id" name="repository_id" type="hidden" value="1308435" />
<div class="select-menu js-menu-container js-select-menu">
<a class="social-count js-social-count" href="/vim-jp/vital.vim/watchers">
22
</a>
<span class="minibutton select-menu-button with-count js-menu-target" role="button" tabindex="0">
<span class="js-select-button">
<span class="octicon octicon-eye-unwatch"></span>
Unwatch
</span>
</span>
<div class="select-menu-modal-holder">
<div class="select-menu-modal subscription-menu-modal js-menu-content">
<div class="select-menu-header">
<span class="select-menu-title">Notification status</span>
<span class="octicon octicon-remove-close js-menu-close"></span>
</div> <!-- /.select-menu-header -->
<div class="select-menu-list js-navigation-container" role="menu">
<div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0">
<span class="select-menu-item-icon octicon octicon-check"></span>
<div class="select-menu-item-text">
<input id="do_included" name="do" type="radio" value="included" />
<h4>Not watching</h4>
<span class="description">You only receive notifications for conversations in which you participate or are @mentioned.</span>
<span class="js-select-button-text hidden-select-button-text">
<span class="octicon octicon-eye-watch"></span>
Watch
</span>
</div>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item selected" role="menuitem" tabindex="0">
<span class="select-menu-item-icon octicon octicon octicon-check"></span>
<div class="select-menu-item-text">
<input checked="checked" id="do_subscribed" name="do" type="radio" value="subscribed" />
<h4>Watching</h4>
<span class="description">You receive notifications for all conversations in this repository.</span>
<span class="js-select-button-text hidden-select-button-text">
<span class="octicon octicon-eye-unwatch"></span>
Unwatch
</span>
</div>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0">
<span class="select-menu-item-icon octicon octicon-check"></span>
<div class="select-menu-item-text">
<input id="do_ignore" name="do" type="radio" value="ignore" />
<h4>Ignoring</h4>
<span class="description">You do not receive any notifications for conversations in this repository.</span>
<span class="js-select-button-text hidden-select-button-text">
<span class="octicon octicon-mute"></span>
Stop ignoring
</span>
</div>
</div> <!-- /.select-menu-item -->
</div> <!-- /.select-menu-list -->
</div> <!-- /.select-menu-modal -->
</div> <!-- /.select-menu-modal-holder -->
</div> <!-- /.select-menu -->
</form>
</li>
<li>
<div class="js-toggler-container js-social-container starring-container ">
<a href="/vim-jp/vital.vim/unstar"
class="minibutton with-count js-toggler-target star-button starred upwards"
title="Unstar this repository" data-remote="true" data-method="post" rel="nofollow">
<span class="octicon octicon-star-delete"></span><span class="text">Unstar</span>
</a>
<a href="/vim-jp/vital.vim/star"
class="minibutton with-count js-toggler-target star-button unstarred upwards"
title="Star this repository" data-remote="true" data-method="post" rel="nofollow">
<span class="octicon octicon-star"></span><span class="text">Star</span>
</a>
<a class="social-count js-social-count" href="/vim-jp/vital.vim/stargazers">
79
</a>
</div>
</li>
<li>
<a href="/vim-jp/vital.vim/fork" class="minibutton with-count js-toggler-target fork-button lighter upwards" title="Fork this repo" rel="facebox nofollow">
<span class="octicon octicon-git-branch-create"></span><span class="text">Fork</span>
</a>
<a href="/vim-jp/vital.vim/network" class="social-count">26</a>
</li>
</ul>
<h1 itemscope itemtype="http://data-vocabulary.org/Breadcrumb" class="entry-title public">
<span class="repo-label"><span>public</span></span>
<span class="mega-octicon octicon-repo"></span>
<span class="author">
<a href="/vim-jp" class="url fn" itemprop="url" rel="author"><span itemprop="title">vim-jp</span></a>
</span>
<span class="repohead-name-divider">/</span>
<strong><a href="/vim-jp/vital.vim" class="js-current-repository js-repo-home-link">vital.vim</a></strong>
<span class="page-context-loader">
<img alt="Octocat-spinner-32" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</span>
</h1>
</div><!-- /.container -->
</div><!-- /.repohead -->
<div class="container">
<div class="repository-with-sidebar repo-container ">
<div class="repository-sidebar">
<div class="sunken-menu vertical-right repo-nav js-repo-nav js-repository-container-pjax js-octicon-loaders">
<div class="sunken-menu-contents">
<ul class="sunken-menu-group">
<li class="tooltipped leftwards" title="Code">
<a href="/vim-jp/vital.vim" aria-label="Code" class="selected js-selected-navigation-item sunken-menu-item" data-gotokey="c" data-pjax="true" data-selected-links="repo_source repo_downloads repo_commits repo_tags repo_branches /vim-jp/vital.vim">
<span class="octicon octicon-code"></span> <span class="full-word">Code</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Issues">
<a href="/vim-jp/vital.vim/issues" aria-label="Issues" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-gotokey="i" data-selected-links="repo_issues /vim-jp/vital.vim/issues">
<span class="octicon octicon-issue-opened"></span> <span class="full-word">Issues</span>
<span class='counter'>28</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Pull Requests">
<a href="/vim-jp/vital.vim/pulls" aria-label="Pull Requests" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-gotokey="p" data-selected-links="repo_pulls /vim-jp/vital.vim/pulls">
<span class="octicon octicon-git-pull-request"></span> <span class="full-word">Pull Requests</span>
<span class='counter'>4</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Wiki">
<a href="/vim-jp/vital.vim/wiki" aria-label="Wiki" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="repo_wiki /vim-jp/vital.vim/wiki">
<span class="octicon octicon-book"></span> <span class="full-word">Wiki</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
</ul>
<div class="sunken-menu-separator"></div>
<ul class="sunken-menu-group">
<li class="tooltipped leftwards" title="Pulse">
<a href="/vim-jp/vital.vim/pulse" aria-label="Pulse" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="pulse /vim-jp/vital.vim/pulse">
<span class="octicon octicon-pulse"></span> <span class="full-word">Pulse</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Graphs">
<a href="/vim-jp/vital.vim/graphs" aria-label="Graphs" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="repo_graphs repo_contributors /vim-jp/vital.vim/graphs">
<span class="octicon octicon-graph"></span> <span class="full-word">Graphs</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Network">
<a href="/vim-jp/vital.vim/network" aria-label="Network" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-selected-links="repo_network /vim-jp/vital.vim/network">
<span class="octicon octicon-git-branch"></span> <span class="full-word">Network</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
</ul>
</div>
</div>
<div class="only-with-full-nav">
<div class="clone-url "
data-protocol-type="http"
data-url="/users/set_protocol?protocol_selector=http&amp;protocol_type=push">
<h3><strong>HTTPS</strong> clone URL</h3>
<div class="clone-url-box">
<input type="text" class="clone js-url-field"
value="https://github.com/vim-jp/vital.vim.git" readonly="readonly">
<span class="js-zeroclipboard url-box-clippy minibutton zeroclipboard-button" data-clipboard-text="https://github.com/vim-jp/vital.vim.git" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
</div>
</div>
<div class="clone-url open"
data-protocol-type="ssh"
data-url="/users/set_protocol?protocol_selector=ssh&amp;protocol_type=push">
<h3><strong>SSH</strong> clone URL</h3>
<div class="clone-url-box">
<input type="text" class="clone js-url-field"
value="git@github.com:vim-jp/vital.vim.git" readonly="readonly">
<span class="js-zeroclipboard url-box-clippy minibutton zeroclipboard-button" data-clipboard-text="git@github.com:vim-jp/vital.vim.git" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
</div>
</div>
<div class="clone-url "
data-protocol-type="subversion"
data-url="/users/set_protocol?protocol_selector=subversion&amp;protocol_type=push">
<h3><strong>Subversion</strong> checkout URL</h3>
<div class="clone-url-box">
<input type="text" class="clone js-url-field"
value="https://github.com/vim-jp/vital.vim" readonly="readonly">
<span class="js-zeroclipboard url-box-clippy minibutton zeroclipboard-button" data-clipboard-text="https://github.com/vim-jp/vital.vim" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
</div>
</div>
<p class="clone-options">You can clone with
<a href="#" class="js-clone-selector" data-protocol="http">HTTPS</a>,
<a href="#" class="js-clone-selector" data-protocol="ssh">SSH</a>,
or <a href="#" class="js-clone-selector" data-protocol="subversion">Subversion</a>.
<span class="octicon help tooltipped upwards" title="Get help on which URL is right for you.">
<a href="https://help.github.com/articles/which-remote-url-should-i-use">
<span class="octicon octicon-question"></span>
</a>
</span>
</p>
<a href="http://windows.github.com" class="minibutton sidebar-button">
<span class="octicon octicon-device-desktop"></span>
Clone in Desktop
</a>
<a href="/vim-jp/vital.vim/archive/master.zip"
class="minibutton sidebar-button"
title="Download this repository as a zip file"
rel="nofollow">
<span class="octicon octicon-cloud-download"></span>
Download ZIP
</a>
</div>
</div><!-- /.repository-sidebar -->
<div id="js-repo-pjax-container" class="repository-content context-loader-container" data-pjax-container>
<!-- blob contrib key: blob_contributors:v21:8865196e6c233067ca43f509eaa36ae4 -->
<p title="This is a placeholder element" class="js-history-link-replace hidden"></p>
<a href="/vim-jp/vital.vim/find/master" data-pjax data-hotkey="t" class="js-show-file-finder" style="display:none">Show File Finder</a>
<div class="file-navigation">
<div class="select-menu js-menu-container js-select-menu" >
<span class="minibutton select-menu-button js-menu-target" data-hotkey="w"
data-master-branch="master"
data-ref="master"
role="button" aria-label="Switch branches or tags" tabindex="0">
<span class="octicon octicon-git-branch"></span>
<i>branch:</i>
<span class="js-select-button">master</span>
</span>
<div class="select-menu-modal-holder js-menu-content js-navigation-container" data-pjax>
<div class="select-menu-modal">
<div class="select-menu-header">
<span class="select-menu-title">Switch branches/tags</span>
<span class="octicon octicon-remove-close js-menu-close"></span>
</div> <!-- /.select-menu-header -->
<div class="select-menu-filters">
<div class="select-menu-text-filter">
<input type="text" aria-label="Find or create a branch…" id="context-commitish-filter-field" class="js-filterable-field js-navigation-enable" placeholder="Find or create a branch…">
</div>
<div class="select-menu-tabs">
<ul>
<li class="select-menu-tab">
<a href="#" data-tab-filter="branches" class="js-select-menu-tab">Branches</a>
</li>
<li class="select-menu-tab">
<a href="#" data-tab-filter="tags" class="js-select-menu-tab">Tags</a>
</li>
</ul>
</div><!-- /.select-menu-tabs -->
</div><!-- /.select-menu-filters -->
<div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="branches">
<div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/Data.Closure/autoload/vital/__latest__/ProcessManager.vim"
data-name="Data.Closure"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="Data.Closure">Data.Closure</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/git_submodule/autoload/vital/__latest__/ProcessManager.vim"
data-name="git_submodule"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="git_submodule">git_submodule</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/logger/autoload/vital/__latest__/ProcessManager.vim"
data-name="logger"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="logger">logger</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item selected">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/master/autoload/vital/__latest__/ProcessManager.vim"
data-name="master"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="master">master</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/optional-prelude/autoload/vital/__latest__/ProcessManager.vim"
data-name="optional-prelude"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="optional-prelude">optional-prelude</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/sqlite-processmanager-wip/autoload/vital/__latest__/ProcessManager.vim"
data-name="sqlite-processmanager-wip"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="sqlite-processmanager-wip">sqlite-processmanager-wip</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/sys.file/autoload/vital/__latest__/ProcessManager.vim"
data-name="sys.file"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="sys.file">sys.file</a>
</div> <!-- /.select-menu-item -->
</div>
<form accept-charset="UTF-8" action="/vim-jp/vital.vim/branches" class="js-create-branch select-menu-item select-menu-new-item-form js-navigation-item js-new-item-form" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="QJ+IADlDg9SxDImNEnlVQuqnrERp2WaGGsoyvKtaTk4=" /></div>
<span class="octicon octicon-git-branch-create select-menu-item-icon"></span>
<div class="select-menu-item-text">
<h4>Create branch: <span class="js-new-item-name"></span></h4>
<span class="description">from ‘master’</span>
</div>
<input type="hidden" name="name" id="name" class="js-new-item-value">
<input type="hidden" name="branch" id="branch" value="master" />
<input type="hidden" name="path" id="path" value="autoload/vital/__latest__/ProcessManager.vim" />
</form> <!-- /.select-menu-item -->
</div> <!-- /.select-menu-list -->
<div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="tags">
<div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
</div>
<div class="select-menu-no-results">Nothing to show</div>
</div> <!-- /.select-menu-list -->
</div> <!-- /.select-menu-modal -->
</div> <!-- /.select-menu-modal-holder -->
</div> <!-- /.select-menu -->
<div class="breadcrumb">
<span class='repo-root js-repo-root'><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/vim-jp/vital.vim" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">vital.vim</span></a></span></span><span class="separator"> / </span><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/vim-jp/vital.vim/tree/master/autoload" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">autoload</span></a></span><span class="separator"> / </span><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/vim-jp/vital.vim/tree/master/autoload/vital" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">vital</span></a></span><span class="separator"> / </span><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/vim-jp/vital.vim/tree/master/autoload/vital/__latest__" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">__latest__</span></a></span><span class="separator"> / </span><strong class="final-path">ProcessManager.vim</strong> <span class="js-zeroclipboard minibutton zeroclipboard-button" data-clipboard-text="autoload/vital/__latest__/ProcessManager.vim" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
</div>
</div>
<div class="commit file-history-tease">
<img class="main-avatar" height="24" src="https://1.gravatar.com/avatar/d9d0ceb387e3b6de5c4562af78e8a910?d=https%3A%2F%2Fidenticons.github.com%2F0fc780bb04e74ce5ed154d2e49cfe2fd.png&amp;r=x&amp;s=140" width="24" />
<span class="author"><a href="/ujihisa" rel="author">ujihisa</a></span>
<time class="js-relative-date" datetime="2013-12-21T20:30:11-08:00" title="2013-12-21 20:30:11">December 21, 2013</time>
<div class="commit-title">
<a href="/vim-jp/vital.vim/commit/240d2c93ff042c7afd291cdb301c0c1004136a73" class="message" data-pjax="true" title="ProcessManager: cosmetic change">ProcessManager: cosmetic change</a>
</div>
<div class="participation">
<p class="quickstat"><a href="#blob_contributors_box" rel="facebox"><strong>4</strong> contributors</a></p>
<a class="avatar tooltipped downwards" title="ujihisa" href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim?author=ujihisa"><img height="20" src="https://1.gravatar.com/avatar/d9d0ceb387e3b6de5c4562af78e8a910?d=https%3A%2F%2Fidenticons.github.com%2F0fc780bb04e74ce5ed154d2e49cfe2fd.png&amp;r=x&amp;s=140" width="20" /></a>
<a class="avatar tooltipped downwards" title="mattn" href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim?author=mattn"><img height="20" src="https://2.gravatar.com/avatar/1ba93fd9e39ebf48777f217c38e768fd?d=https%3A%2F%2Fidenticons.github.com%2F70bb83c9272e6c4bc6e83e0a55c7c9c3.png&amp;r=x&amp;s=140" width="20" /></a>
<a class="avatar tooltipped downwards" title="ichizok" href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim?author=ichizok"><img height="20" src="https://2.gravatar.com/avatar/9b780db659a9a657e775b07521be3efc?d=https%3A%2F%2Fidenticons.github.com%2Fa8a23399cfd9dee3779fad0970ec23dc.png&amp;r=x&amp;s=140" width="20" /></a>
<a class="avatar tooltipped downwards" title="alpaca-tc" href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim?author=alpaca-tc"><img height="20" src="https://1.gravatar.com/avatar/c2fe23111675890bf8bc59afb312990e?d=https%3A%2F%2Fidenticons.github.com%2F8e3d7e94dcb83a1fda7307b9f75b186c.png&amp;r=x&amp;s=140" width="20" /></a>
</div>
<div id="blob_contributors_box" style="display:none">
<h2 class="facebox-header">Users who have contributed to this file</h2>
<ul class="facebox-user-list">
<li class="facebox-user-list-item">
<img height="24" src="https://1.gravatar.com/avatar/d9d0ceb387e3b6de5c4562af78e8a910?d=https%3A%2F%2Fidenticons.github.com%2F0fc780bb04e74ce5ed154d2e49cfe2fd.png&amp;r=x&amp;s=140" width="24" />
<a href="/ujihisa">ujihisa</a>
</li>
<li class="facebox-user-list-item">
<img height="24" src="https://2.gravatar.com/avatar/1ba93fd9e39ebf48777f217c38e768fd?d=https%3A%2F%2Fidenticons.github.com%2F70bb83c9272e6c4bc6e83e0a55c7c9c3.png&amp;r=x&amp;s=140" width="24" />
<a href="/mattn">mattn</a>
</li>
<li class="facebox-user-list-item">
<img height="24" src="https://2.gravatar.com/avatar/9b780db659a9a657e775b07521be3efc?d=https%3A%2F%2Fidenticons.github.com%2Fa8a23399cfd9dee3779fad0970ec23dc.png&amp;r=x&amp;s=140" width="24" />
<a href="/ichizok">ichizok</a>
</li>
<li class="facebox-user-list-item">
<img height="24" src="https://1.gravatar.com/avatar/c2fe23111675890bf8bc59afb312990e?d=https%3A%2F%2Fidenticons.github.com%2F8e3d7e94dcb83a1fda7307b9f75b186c.png&amp;r=x&amp;s=140" width="24" />
<a href="/alpaca-tc">alpaca-tc</a>
</li>
</ul>
</div>
</div>
<div id="files" class="bubble">
<div class="file">
<div class="meta">
<div class="info">
<span class="icon"><b class="octicon octicon-file-text"></b></span>
<span class="mode" title="File Mode">file</span>
<span>125 lines (103 sloc)</span>
<span>2.881 kb</span>
</div>
<div class="actions">
<div class="button-group">
<a class="minibutton tooltipped leftwards"
href="http://windows.github.com" title="Open this file in GitHub for Windows">
<span class="octicon octicon-device-desktop"></span> Open
</a>
<a class="minibutton"
href="/vim-jp/vital.vim/edit/master/autoload/vital/__latest__/ProcessManager.vim"
data-method="post" rel="nofollow" data-hotkey="e">Edit</a>
<a href="/vim-jp/vital.vim/raw/master/autoload/vital/__latest__/ProcessManager.vim" class="button minibutton " id="raw-url">Raw</a>
<a href="/vim-jp/vital.vim/blame/master/autoload/vital/__latest__/ProcessManager.vim" class="button minibutton ">Blame</a>
<a href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim" class="button minibutton " rel="nofollow">History</a>
</div><!-- /.button-group -->
<a class="minibutton danger empty-icon tooltipped downwards"
href="/vim-jp/vital.vim/delete/master/autoload/vital/__latest__/ProcessManager.vim"
title=""
data-method="post" data-test-id="delete-blob-file" rel="nofollow">
Delete
</a>
</div><!-- /.actions -->
</div>
<div class="blob-wrapper data type-viml js-blob-data">
<table class="file-code file-diff">
<tr class="file-code-line">
<td class="blob-line-nums">
<span id="L1" rel="#L1">1</span>
<span id="L2" rel="#L2">2</span>
<span id="L3" rel="#L3">3</span>
<span id="L4" rel="#L4">4</span>
<span id="L5" rel="#L5">5</span>
<span id="L6" rel="#L6">6</span>
<span id="L7" rel="#L7">7</span>
<span id="L8" rel="#L8">8</span>
<span id="L9" rel="#L9">9</span>
<span id="L10" rel="#L10">10</span>
<span id="L11" rel="#L11">11</span>
<span id="L12" rel="#L12">12</span>
<span id="L13" rel="#L13">13</span>
<span id="L14" rel="#L14">14</span>
<span id="L15" rel="#L15">15</span>
<span id="L16" rel="#L16">16</span>
<span id="L17" rel="#L17">17</span>
<span id="L18" rel="#L18">18</span>
<span id="L19" rel="#L19">19</span>
<span id="L20" rel="#L20">20</span>
<span id="L21" rel="#L21">21</span>
<span id="L22" rel="#L22">22</span>
<span id="L23" rel="#L23">23</span>
<span id="L24" rel="#L24">24</span>
<span id="L25" rel="#L25">25</span>
<span id="L26" rel="#L26">26</span>
<span id="L27" rel="#L27">27</span>
<span id="L28" rel="#L28">28</span>
<span id="L29" rel="#L29">29</span>
<span id="L30" rel="#L30">30</span>
<span id="L31" rel="#L31">31</span>
<span id="L32" rel="#L32">32</span>
<span id="L33" rel="#L33">33</span>
<span id="L34" rel="#L34">34</span>
<span id="L35" rel="#L35">35</span>
<span id="L36" rel="#L36">36</span>
<span id="L37" rel="#L37">37</span>
<span id="L38" rel="#L38">38</span>
<span id="L39" rel="#L39">39</span>
<span id="L40" rel="#L40">40</span>
<span id="L41" rel="#L41">41</span>
<span id="L42" rel="#L42">42</span>
<span id="L43" rel="#L43">43</span>
<span id="L44" rel="#L44">44</span>
<span id="L45" rel="#L45">45</span>
<span id="L46" rel="#L46">46</span>
<span id="L47" rel="#L47">47</span>
<span id="L48" rel="#L48">48</span>
<span id="L49" rel="#L49">49</span>
<span id="L50" rel="#L50">50</span>
<span id="L51" rel="#L51">51</span>
<span id="L52" rel="#L52">52</span>
<span id="L53" rel="#L53">53</span>
<span id="L54" rel="#L54">54</span>
<span id="L55" rel="#L55">55</span>
<span id="L56" rel="#L56">56</span>
<span id="L57" rel="#L57">57</span>
<span id="L58" rel="#L58">58</span>
<span id="L59" rel="#L59">59</span>
<span id="L60" rel="#L60">60</span>
<span id="L61" rel="#L61">61</span>
<span id="L62" rel="#L62">62</span>
<span id="L63" rel="#L63">63</span>
<span id="L64" rel="#L64">64</span>
<span id="L65" rel="#L65">65</span>
<span id="L66" rel="#L66">66</span>
<span id="L67" rel="#L67">67</span>
<span id="L68" rel="#L68">68</span>
<span id="L69" rel="#L69">69</span>
<span id="L70" rel="#L70">70</span>
<span id="L71" rel="#L71">71</span>
<span id="L72" rel="#L72">72</span>
<span id="L73" rel="#L73">73</span>
<span id="L74" rel="#L74">74</span>
<span id="L75" rel="#L75">75</span>
<span id="L76" rel="#L76">76</span>
<span id="L77" rel="#L77">77</span>
<span id="L78" rel="#L78">78</span>
<span id="L79" rel="#L79">79</span>
<span id="L80" rel="#L80">80</span>
<span id="L81" rel="#L81">81</span>
<span id="L82" rel="#L82">82</span>
<span id="L83" rel="#L83">83</span>
<span id="L84" rel="#L84">84</span>
<span id="L85" rel="#L85">85</span>
<span id="L86" rel="#L86">86</span>
<span id="L87" rel="#L87">87</span>
<span id="L88" rel="#L88">88</span>
<span id="L89" rel="#L89">89</span>
<span id="L90" rel="#L90">90</span>
<span id="L91" rel="#L91">91</span>
<span id="L92" rel="#L92">92</span>
<span id="L93" rel="#L93">93</span>
<span id="L94" rel="#L94">94</span>
<span id="L95" rel="#L95">95</span>
<span id="L96" rel="#L96">96</span>
<span id="L97" rel="#L97">97</span>
<span id="L98" rel="#L98">98</span>
<span id="L99" rel="#L99">99</span>
<span id="L100" rel="#L100">100</span>
<span id="L101" rel="#L101">101</span>
<span id="L102" rel="#L102">102</span>
<span id="L103" rel="#L103">103</span>
<span id="L104" rel="#L104">104</span>
<span id="L105" rel="#L105">105</span>
<span id="L106" rel="#L106">106</span>
<span id="L107" rel="#L107">107</span>
<span id="L108" rel="#L108">108</span>
<span id="L109" rel="#L109">109</span>
<span id="L110" rel="#L110">110</span>
<span id="L111" rel="#L111">111</span>
<span id="L112" rel="#L112">112</span>
<span id="L113" rel="#L113">113</span>
<span id="L114" rel="#L114">114</span>
<span id="L115" rel="#L115">115</span>
<span id="L116" rel="#L116">116</span>
<span id="L117" rel="#L117">117</span>
<span id="L118" rel="#L118">118</span>
<span id="L119" rel="#L119">119</span>
<span id="L120" rel="#L120">120</span>
<span id="L121" rel="#L121">121</span>
<span id="L122" rel="#L122">122</span>
<span id="L123" rel="#L123">123</span>
<span id="L124" rel="#L124">124</span>
</td>
<td class="blob-line-code">
<div class="code-body highlight"><pre><div class='line' id='LC1'><span class="k">let</span> <span class="k">s</span>:save_cpo <span class="p">=</span> &amp;<span class="nb">cpo</span></div><div class='line' id='LC2'><span class="k">set</span> <span class="nb">cpo</span>&amp;<span class="k">vim</span></div><div class='line' id='LC3'><br/></div><div class='line' id='LC4'><span class="k">let</span> <span class="k">s</span>:_processes <span class="p">=</span> {}</div><div class='line' id='LC5'><br/></div><div class='line' id='LC6'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:_vital_loaded<span class="p">(</span>V<span class="p">)</span></div><div class='line' id='LC7'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">s</span>:V <span class="p">=</span> <span class="k">a</span>:V</div><div class='line' id='LC8'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">s</span>:S <span class="p">=</span> <span class="k">s</span>:V.import<span class="p">(</span><span class="s1">&#39;Data.String&#39;</span><span class="p">)</span></div><div class='line' id='LC9'><span class="k">endfunction</span></div><div class='line' id='LC10'><br/></div><div class='line' id='LC11'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:_vital_depends<span class="p">()</span></div><div class='line' id='LC12'>&nbsp;&nbsp;<span class="k">return</span> [<span class="s1">&#39;Data.String&#39;</span>]</div><div class='line' id='LC13'><span class="k">endfunction</span></div><div class='line' id='LC14'><br/></div><div class='line' id='LC15'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:is_available<span class="p">()</span></div><div class='line' id='LC16'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:V.has_vimproc<span class="p">()</span></div><div class='line' id='LC17'><span class="k">endfunction</span></div><div class='line' id='LC18'><br/></div><div class='line' id='LC19'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:touch<span class="p">(</span>name<span class="p">,</span> cmd<span class="p">)</span></div><div class='line' id='LC20'>&nbsp;&nbsp;<span class="k">if</span> has_key<span class="p">(</span><span class="k">s</span>:_processes<span class="p">,</span> <span class="k">a</span>:name<span class="p">)</span></div><div class='line' id='LC21'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="s1">&#39;existing&#39;</span></div><div class='line' id='LC22'>&nbsp;&nbsp;<span class="k">else</span></div><div class='line' id='LC23'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> vimproc#popen3<span class="p">(</span><span class="k">a</span>:cmd<span class="p">)</span></div><div class='line' id='LC24'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> <span class="k">s</span>:_processes[<span class="k">a</span>:name] <span class="p">=</span> <span class="k">p</span></div><div class='line' id='LC25'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="s1">&#39;new&#39;</span></div><div class='line' id='LC26'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC27'><span class="k">endfunction</span></div><div class='line' id='LC28'><br/></div><div class='line' id='LC29'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:stop<span class="p">(</span><span class="k">i</span><span class="p">)</span></div><div class='line' id='LC30'>&nbsp;&nbsp;<span class="k">echomsg</span> <span class="s2">&quot;Vital.ProcessManager.stop() is deprecated! Please use kill() or term() instead.&quot;</span></div><div class='line' id='LC31'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:kill<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC32'><span class="k">endfunction</span></div><div class='line' id='LC33'><br/></div><div class='line' id='LC34'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:_stop<span class="p">(</span><span class="k">i</span><span class="p">,</span> ...<span class="p">)</span></div><div class='line' id='LC35'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC36'>&nbsp;&nbsp;<span class="k">call</span> <span class="k">p</span>.kill<span class="p">(</span><span class="k">get</span><span class="p">(</span><span class="k">a</span>:<span class="m">000</span><span class="p">,</span> <span class="m">0</span><span class="p">,</span> <span class="m">0</span><span class="p">)</span> ? <span class="k">g</span>:vimproc#SIGKILL : <span class="k">g</span>:vimproc#SIGTERM<span class="p">)</span></div><div class='line' id='LC37'><span class="c"> &quot; call p.waitpid()</span></div><div class='line' id='LC38'>&nbsp;&nbsp;unlet <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC39'><span class="k">endfunction</span></div><div class='line' id='LC40'><br/></div><div class='line' id='LC41'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:<span class="nb">term</span><span class="p">(</span><span class="k">i</span><span class="p">)</span></div><div class='line' id='LC42'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:_stop<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">,</span> <span class="m">0</span><span class="p">)</span></div><div class='line' id='LC43'><span class="k">endfunction</span></div><div class='line' id='LC44'><br/></div><div class='line' id='LC45'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:kill<span class="p">(</span><span class="k">i</span><span class="p">)</span></div><div class='line' id='LC46'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:_stop<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">,</span> <span class="m">1</span><span class="p">)</span></div><div class='line' id='LC47'><span class="k">endfunction</span></div><div class='line' id='LC48'><br/></div><div class='line' id='LC49'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:read<span class="p">(</span><span class="k">i</span><span class="p">,</span> endpatterns<span class="p">)</span></div><div class='line' id='LC50'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:read_wait<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">,</span> <span class="m">0</span>.<span class="m">05</span><span class="p">,</span> <span class="k">a</span>:endpatterns<span class="p">)</span></div><div class='line' id='LC51'><span class="k">endfunction</span></div><div class='line' id='LC52'><br/></div><div class='line' id='LC53'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:read_wait<span class="p">(</span><span class="k">i</span><span class="p">,</span> wait<span class="p">,</span> endpatterns<span class="p">)</span></div><div class='line' id='LC54'>&nbsp;&nbsp;<span class="k">if</span> <span class="p">!</span>has_key<span class="p">(</span><span class="k">s</span>:_processes<span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC55'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">throw</span> printf<span class="p">(</span><span class="s2">&quot;ProcessManager doesn&#39;t know about %s&quot;</span><span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC56'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC57'><br/></div><div class='line' id='LC58'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC59'><br/></div><div class='line' id='LC60'>&nbsp;&nbsp;<span class="k">if</span> <span class="k">s</span>:status<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">)</span> <span class="p">==</span># <span class="s1">&#39;inactive&#39;</span></div><div class='line' id='LC61'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> [<span class="k">p</span>.stdout.read<span class="p">(),</span> <span class="k">p</span>.stderr.read<span class="p">(),</span> <span class="s1">&#39;inactive&#39;</span>]</div><div class='line' id='LC62'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC63'><br/></div><div class='line' id='LC64'>&nbsp;&nbsp;<span class="k">let</span> out_memo <span class="p">=</span> <span class="s1">&#39;&#39;</span></div><div class='line' id='LC65'>&nbsp;&nbsp;<span class="k">let</span> err_memo <span class="p">=</span> <span class="s1">&#39;&#39;</span></div><div class='line' id='LC66'>&nbsp;&nbsp;<span class="k">let</span> lastchanged <span class="p">=</span> reltime<span class="p">()</span></div><div class='line' id='LC67'>&nbsp;&nbsp;<span class="k">while</span> <span class="m">1</span></div><div class='line' id='LC68'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> [<span class="k">x</span><span class="p">,</span> <span class="k">y</span>] <span class="p">=</span> [<span class="k">p</span>.stdout.read<span class="p">(),</span> <span class="k">p</span>.stderr.read<span class="p">()</span>]</div><div class='line' id='LC69'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="k">x</span> <span class="p">==</span># <span class="s1">&#39;&#39;</span> &amp;&amp; <span class="k">y</span> <span class="p">==</span># <span class="s1">&#39;&#39;</span></div><div class='line' id='LC70'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> str2float<span class="p">(</span>reltimestr<span class="p">(</span>reltime<span class="p">(</span>lastchanged<span class="p">)))</span> <span class="p">&gt;</span> <span class="k">a</span>:wait</div><div class='line' id='LC71'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> [out_memo<span class="p">,</span> err_memo<span class="p">,</span> <span class="s1">&#39;timedout&#39;</span>]</div><div class='line' id='LC72'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC73'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">else</span></div><div class='line' id='LC74'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> lastchanged <span class="p">=</span> reltime<span class="p">()</span></div><div class='line' id='LC75'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> out_memo .<span class="p">=</span> <span class="k">x</span></div><div class='line' id='LC76'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> err_memo .<span class="p">=</span> <span class="k">y</span></div><div class='line' id='LC77'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">for</span> pattern <span class="k">in</span> <span class="k">a</span>:endpatterns</div><div class='line' id='LC78'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> out_memo <span class="p">=~</span> <span class="p">(</span><span class="s2">&quot;\\(^\\|\n\\)&quot;</span> . pattern<span class="p">)</span></div><div class='line' id='LC79'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> [<span class="k">s</span>:S.substitute_last<span class="p">(</span>out_memo<span class="p">,</span> pattern<span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">),</span> err_memo<span class="p">,</span> <span class="s1">&#39;matched&#39;</span>]</div><div class='line' id='LC80'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC81'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">endfor</span></div><div class='line' id='LC82'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC83'>&nbsp;&nbsp;<span class="k">endwhile</span></div><div class='line' id='LC84'><span class="k">endfunction</span></div><div class='line' id='LC85'><br/></div><div class='line' id='LC86'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:<span class="nb">write</span><span class="p">(</span><span class="k">i</span><span class="p">,</span> str<span class="p">)</span></div><div class='line' id='LC87'>&nbsp;&nbsp;<span class="k">if</span> <span class="p">!</span>has_key<span class="p">(</span><span class="k">s</span>:_processes<span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC88'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">throw</span> printf<span class="p">(</span><span class="s2">&quot;ProcessManager doesn&#39;t know about %s&quot;</span><span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC89'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC90'>&nbsp;&nbsp;<span class="k">if</span> <span class="k">s</span>:status<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">)</span> <span class="p">==</span># <span class="s1">&#39;inactive&#39;</span></div><div class='line' id='LC91'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="s1">&#39;inactive&#39;</span></div><div class='line' id='LC92'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC93'><br/></div><div class='line' id='LC94'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC95'>&nbsp;&nbsp;<span class="k">call</span> <span class="k">p</span>.stdin.<span class="nb">write</span><span class="p">(</span><span class="k">a</span>:str<span class="p">)</span></div><div class='line' id='LC96'><br/></div><div class='line' id='LC97'>&nbsp;&nbsp;<span class="k">return</span> <span class="s1">&#39;active&#39;</span></div><div class='line' id='LC98'><span class="k">endfunction</span></div><div class='line' id='LC99'><br/></div><div class='line' id='LC100'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:writeln<span class="p">(</span><span class="k">i</span><span class="p">,</span> str<span class="p">)</span></div><div class='line' id='LC101'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:<span class="nb">write</span><span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">,</span> <span class="k">a</span>:str . <span class="s2">&quot;\n&quot;</span><span class="p">)</span></div><div class='line' id='LC102'><span class="k">endfunction</span></div><div class='line' id='LC103'><br/></div><div class='line' id='LC104'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:status<span class="p">(</span><span class="k">i</span><span class="p">)</span></div><div class='line' id='LC105'>&nbsp;&nbsp;<span class="k">if</span> <span class="p">!</span>has_key<span class="p">(</span><span class="k">s</span>:_processes<span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC106'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">throw</span> printf<span class="p">(</span><span class="s2">&quot;ProcessManager doesn&#39;t know about %s&quot;</span><span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC107'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC108'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC109'><span class="c"> &quot; vimproc.kill isn&#39;t to stop but to ask for the current state.</span></div><div class='line' id='LC110'><span class="c"> &quot; return p.kill(0) ? &#39;inactive&#39; : &#39;active&#39;</span></div><div class='line' id='LC111'><span class="c"> &quot; ... checkpid() checks if the process is running AND does waitpid() in C,</span></div><div class='line' id='LC112'><span class="c"> &quot; so it solves zombie processes.</span></div><div class='line' id='LC113'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">get</span><span class="p">(</span><span class="k">p</span>.checkpid<span class="p">(),</span> <span class="m">0</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="p">==</span># <span class="s1">&#39;run&#39;</span></div><div class='line' id='LC114'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\ ? <span class="s1">&#39;active&#39;</span></div><div class='line' id='LC115'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\ : <span class="s1">&#39;inactive&#39;</span></div><div class='line' id='LC116'><span class="k">endfunction</span></div><div class='line' id='LC117'><br/></div><div class='line' id='LC118'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:debug_processes<span class="p">()</span></div><div class='line' id='LC119'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:_processes</div><div class='line' id='LC120'><span class="k">endfunction</span></div><div class='line' id='LC121'><br/></div><div class='line' id='LC122'><span class="k">let</span> &amp;<span class="nb">cpo</span> <span class="p">=</span> <span class="k">s</span>:save_cpo</div><div class='line' id='LC123'>unlet <span class="k">s</span>:save_cpo</div><div class='line' id='LC124'><span class="c">&quot; vim:set et ts=2 sts=2 sw=2 tw=0:</span></div></pre></div>
</td>
</tr>
</table>
</div>
</div>
</div>
<a href="#jump-to-line" rel="facebox[.linejump]" data-hotkey="l" class="js-jump-to-line" style="display:none">Jump to Line</a>
<div id="jump-to-line" style="display:none">
<form accept-charset="UTF-8" class="js-jump-to-line-form">
<input class="linejump-input js-jump-to-line-field" type="text" placeholder="Jump to line&hellip;" autofocus>
<button type="submit" class="button">Go</button>
</form>
</div>
</div>
</div><!-- /.repo-container -->
<div class="modal-backdrop"></div>
</div><!-- /.container -->
</div><!-- /.site -->
</div><!-- /.wrapper -->
<div class="container">
<div class="site-footer">
<ul class="site-footer-links right">
<li><a href="https://status.github.com/">Status</a></li>
<li><a href="http://developer.github.com">API</a></li>
<li><a href="http://training.github.com">Training</a></li>
<li><a href="http://shop.github.com">Shop</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/about">About</a></li>
</ul>
<a href="/">
<span class="mega-octicon octicon-mark-github" title="GitHub"></span>
</a>
<ul class="site-footer-links">
<li>&copy; 2014 <span title="0.03660s from github-fe122-cp1-prd.iad.github.net">GitHub</span>, Inc.</li>
<li><a href="/site/terms">Terms</a></li>
<li><a href="/site/privacy">Privacy</a></li>
<li><a href="/security">Security</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
</div><!-- /.site-footer -->
</div><!-- /.container -->
<div class="fullscreen-overlay js-fullscreen-overlay" id="fullscreen_overlay">
<div class="fullscreen-container js-fullscreen-container">
<div class="textarea-wrap">
<textarea name="fullscreen-contents" id="fullscreen-contents" class="js-fullscreen-contents" placeholder="" data-suggester="fullscreen_suggester"></textarea>
<div class="suggester-container">
<div class="suggester fullscreen-suggester js-navigation-container" id="fullscreen_suggester"
data-url="/vim-jp/vital.vim/suggestions/commit">
</div>
</div>
</div>
</div>
<div class="fullscreen-sidebar">
<a href="#" class="exit-fullscreen js-exit-fullscreen tooltipped leftwards" title="Exit Zen Mode">
<span class="mega-octicon octicon-screen-normal"></span>
</a>
<a href="#" class="theme-switcher js-theme-switcher tooltipped leftwards"
title="Switch themes">
<span class="octicon octicon-color-mode"></span>
</a>
</div>
</div>
<div id="ajax-error-message" class="flash flash-error">
<span class="octicon octicon-alert"></span>
<a href="#" class="octicon octicon-remove-close close js-ajax-error-dismiss"></a>
Something went wrong with that request. Please try again.
</div>
</body>
</html>
<!DOCTYPE html>
<html>
<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# githubog: http://ogp.me/ns/fb/githubog#">
<meta charset='utf-8'>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>vital.vim/autoload/vital/__latest__/ProcessManager.vim at master · vim-jp/vital.vim</title>
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub" />
<link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub" />
<link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-114.png" />
<link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114.png" />
<link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-144.png" />
<link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144.png" />
<link rel="logo" type="image/svg" href="https://github-media-downloads.s3.amazonaws.com/github-logo.svg" />
<meta property="og:image" content="https://github.global.ssl.fastly.net/images/modules/logos_page/Octocat.png">
<meta name="hostname" content="github-fe122-cp1-prd.iad.github.net">
<meta name="ruby" content="ruby 2.1.0p0-github-tcmalloc (60139581e1) [x86_64-linux]">
<link rel="assets" href="https://github.global.ssl.fastly.net/">
<link rel="conduit-xhr" href="https://ghconduit.com:25035/">
<link rel="xhr-socket" href="/_sockets" />
<meta name="msapplication-TileImage" content="/windows-tile.png" />
<meta name="msapplication-TileColor" content="#ffffff" />
<meta name="selected-link" value="repo_source" data-pjax-transient />
<meta content="collector.githubapp.com" name="octolytics-host" /><meta content="collector-cdn.github.com" name="octolytics-script-host" /><meta content="github" name="octolytics-app-id" /><meta content="B6F95C6A:6644:E50EC4:52E18AFE" name="octolytics-dimension-request_id" /><meta content="214488" name="octolytics-actor-id" /><meta content="osyo-manga" name="octolytics-actor-login" /><meta content="e5012931f92cc8195a7f530c4e37bcc88d86a6df4ea3fd06d12d9d5795f6d0e8" name="octolytics-actor-hash" />
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
<meta content="authenticity_token" name="csrf-param" />
<meta content="QJ+IADlDg9SxDImNEnlVQuqnrERp2WaGGsoyvKtaTk4=" name="csrf-token" />
<link href="https://github.global.ssl.fastly.net/assets/github-43087292f81aebbe92f90a36344865c4ad8170a0.css" media="all" rel="stylesheet" type="text/css" />
<link href="https://github.global.ssl.fastly.net/assets/github2-d23a1b1c4a1bc509a0ca67face2fb37ef257f599.css" media="all" rel="stylesheet" type="text/css" />
<script src="https://github.global.ssl.fastly.net/assets/frameworks-bf5987648bb83690ac0a5e955f74bbaf6ba44c4a.js" type="text/javascript"></script>
<script async="async" defer="defer" src="https://github.global.ssl.fastly.net/assets/github-eab207422bd65ea8c46ef3d26d6fbcc74bba89ce.js" type="text/javascript"></script>
<meta http-equiv="x-pjax-version" content="1ceda3c4fa0194817b46f4df6a3f2c23">
<link data-pjax-transient rel='permalink' href='/vim-jp/vital.vim/blob/3e229e28b002d42b9ca0d15bddddf0872fa2eed0/autoload/vital/__latest__/ProcessManager.vim'>
<meta property="og:title" content="vital.vim"/>
<meta property="og:type" content="githubog:gitrepository"/>
<meta property="og:url" content="https://github.com/vim-jp/vital.vim"/>
<meta property="og:image" content="https://github.global.ssl.fastly.net/images/gravatars/gravatar-user-420.png"/>
<meta property="og:site_name" content="GitHub"/>
<meta property="og:description" content="vital.vim - A comprehensive Vim utility functions for Vim plugins"/>
<meta name="description" content="vital.vim - A comprehensive Vim utility functions for Vim plugins" />
<meta content="1051958" name="octolytics-dimension-user_id" /><meta content="vim-jp" name="octolytics-dimension-user_login" /><meta content="1308435" name="octolytics-dimension-repository_id" /><meta content="vim-jp/vital.vim" name="octolytics-dimension-repository_nwo" /><meta content="true" name="octolytics-dimension-repository_public" /><meta content="false" name="octolytics-dimension-repository_is_fork" /><meta content="1308435" name="octolytics-dimension-repository_network_root_id" /><meta content="vim-jp/vital.vim" name="octolytics-dimension-repository_network_root_nwo" />
<link href="https://github.com/vim-jp/vital.vim/commits/master.atom" rel="alternate" title="Recent Commits to vital.vim:master" type="application/atom+xml" />
</head>
<body class="logged_in env-production windows vis-public page-blob">
<div class="wrapper">
<div class="header header-logged-in true">
<div class="container clearfix">
<a class="header-logo-invertocat" href="https://github.com/">
<span class="mega-octicon octicon-mark-github"></span>
</a>
<a href="/vim-jp/vital.vim/notifications" class="notification-indicator tooltipped downwards contextually-unread" data-gotokey="n" title="You have unread notifications in this repository">
<span class="mail-status unread"></span>
</a>
<div class="command-bar js-command-bar in-repository">
<form accept-charset="UTF-8" action="/search" class="command-bar-form" id="top_search_form" method="get">
<input type="text" data-hotkey="/ s" name="q" id="js-command-bar-field" placeholder="Search or type a command" tabindex="1" autocapitalize="off"
data-username="osyo-manga"
data-repo="vim-jp/vital.vim"
data-branch="master"
data-sha="e9e83ed3a8ffeefb55aeb10af4b80747448aeda6"
>
<input type="hidden" name="nwo" value="vim-jp/vital.vim" />
<div class="select-menu js-menu-container js-select-menu search-context-select-menu">
<span class="minibutton select-menu-button js-menu-target">
<span class="js-select-button">This repository</span>
</span>
<div class="select-menu-modal-holder js-menu-content js-navigation-container">
<div class="select-menu-modal">
<div class="select-menu-item js-navigation-item js-this-repository-navigation-item selected">
<span class="select-menu-item-icon octicon octicon-check"></span>
<input type="radio" class="js-search-this-repository" name="search_target" value="repository" checked="checked" />
<div class="select-menu-item-text js-select-button-text">This repository</div>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item js-all-repositories-navigation-item">
<span class="select-menu-item-icon octicon octicon-check"></span>
<input type="radio" name="search_target" value="global" />
<div class="select-menu-item-text js-select-button-text">All repositories</div>
</div> <!-- /.select-menu-item -->
</div>
</div>
</div>
<span class="octicon help tooltipped downwards" title="Show command bar help">
<span class="octicon octicon-question"></span>
</span>
<input type="hidden" name="ref" value="cmdform">
</form>
<ul class="top-nav">
<li class="explore"><a href="/explore">Explore</a></li>
<li><a href="https://gist.github.com">Gist</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="https://help.github.com">Help</a></li>
</ul>
</div>
<ul id="user-links">
<li>
<a href="/osyo-manga" class="name">
<img height="20" src="https://1.gravatar.com/avatar/3931098ae486b6df619050c63e24f6cc?d=https%3A%2F%2Fidenticons.github.com%2Fc192b911f32678010c36ee637415e182.png&amp;r=x&amp;s=140" width="20" /> osyo-manga
</a>
</li>
<li class="new-menu dropdown-toggle js-menu-container">
<a href="#" class="js-menu-target tooltipped downwards" title="Create new…">
<span class="octicon octicon-plus"></span>
<span class="dropdown-arrow"></span>
</a>
<div class="js-menu-content">
</div>
</li>
<li>
<a href="/settings/profile" id="account_settings"
class="tooltipped downwards"
aria-label="Account settings "
title="Account settings ">
<span class="octicon octicon-tools"></span>
</a>
</li>
<li>
<a class="tooltipped downwards" href="/logout" data-method="post" id="logout" title="Sign out" aria-label="Sign out">
<span class="octicon octicon-log-out"></span>
</a>
</li>
</ul>
<div class="js-new-dropdown-contents hidden">
<ul class="dropdown-menu">
<li>
<a href="/new"><span class="octicon octicon-repo-create"></span> New repository</a>
</li>
<li>
<a href="/organizations/new"><span class="octicon octicon-organization"></span> New organization</a>
</li>
<li class="section-title">
<span title="vim-jp/vital.vim">This repository</span>
</li>
<li>
<a href="/vim-jp/vital.vim/issues/new"><span class="octicon octicon-issue-opened"></span> New issue</a>
</li>
</ul>
</div>
</div>
</div>
<div class="site" itemscope itemtype="http://schema.org/WebPage">
<div class="pagehead repohead instapaper_ignore readability-menu">
<div class="container">
<ul class="pagehead-actions">
<li class="subscription">
<form accept-charset="UTF-8" action="/notifications/subscribe" class="js-social-container" data-autosubmit="true" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="QJ+IADlDg9SxDImNEnlVQuqnrERp2WaGGsoyvKtaTk4=" /></div> <input id="repository_id" name="repository_id" type="hidden" value="1308435" />
<div class="select-menu js-menu-container js-select-menu">
<a class="social-count js-social-count" href="/vim-jp/vital.vim/watchers">
22
</a>
<span class="minibutton select-menu-button with-count js-menu-target" role="button" tabindex="0">
<span class="js-select-button">
<span class="octicon octicon-eye-unwatch"></span>
Unwatch
</span>
</span>
<div class="select-menu-modal-holder">
<div class="select-menu-modal subscription-menu-modal js-menu-content">
<div class="select-menu-header">
<span class="select-menu-title">Notification status</span>
<span class="octicon octicon-remove-close js-menu-close"></span>
</div> <!-- /.select-menu-header -->
<div class="select-menu-list js-navigation-container" role="menu">
<div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0">
<span class="select-menu-item-icon octicon octicon-check"></span>
<div class="select-menu-item-text">
<input id="do_included" name="do" type="radio" value="included" />
<h4>Not watching</h4>
<span class="description">You only receive notifications for conversations in which you participate or are @mentioned.</span>
<span class="js-select-button-text hidden-select-button-text">
<span class="octicon octicon-eye-watch"></span>
Watch
</span>
</div>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item selected" role="menuitem" tabindex="0">
<span class="select-menu-item-icon octicon octicon octicon-check"></span>
<div class="select-menu-item-text">
<input checked="checked" id="do_subscribed" name="do" type="radio" value="subscribed" />
<h4>Watching</h4>
<span class="description">You receive notifications for all conversations in this repository.</span>
<span class="js-select-button-text hidden-select-button-text">
<span class="octicon octicon-eye-unwatch"></span>
Unwatch
</span>
</div>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0">
<span class="select-menu-item-icon octicon octicon-check"></span>
<div class="select-menu-item-text">
<input id="do_ignore" name="do" type="radio" value="ignore" />
<h4>Ignoring</h4>
<span class="description">You do not receive any notifications for conversations in this repository.</span>
<span class="js-select-button-text hidden-select-button-text">
<span class="octicon octicon-mute"></span>
Stop ignoring
</span>
</div>
</div> <!-- /.select-menu-item -->
</div> <!-- /.select-menu-list -->
</div> <!-- /.select-menu-modal -->
</div> <!-- /.select-menu-modal-holder -->
</div> <!-- /.select-menu -->
</form>
</li>
<li>
<div class="js-toggler-container js-social-container starring-container ">
<a href="/vim-jp/vital.vim/unstar"
class="minibutton with-count js-toggler-target star-button starred upwards"
title="Unstar this repository" data-remote="true" data-method="post" rel="nofollow">
<span class="octicon octicon-star-delete"></span><span class="text">Unstar</span>
</a>
<a href="/vim-jp/vital.vim/star"
class="minibutton with-count js-toggler-target star-button unstarred upwards"
title="Star this repository" data-remote="true" data-method="post" rel="nofollow">
<span class="octicon octicon-star"></span><span class="text">Star</span>
</a>
<a class="social-count js-social-count" href="/vim-jp/vital.vim/stargazers">
79
</a>
</div>
</li>
<li>
<a href="/vim-jp/vital.vim/fork" class="minibutton with-count js-toggler-target fork-button lighter upwards" title="Fork this repo" rel="facebox nofollow">
<span class="octicon octicon-git-branch-create"></span><span class="text">Fork</span>
</a>
<a href="/vim-jp/vital.vim/network" class="social-count">26</a>
</li>
</ul>
<h1 itemscope itemtype="http://data-vocabulary.org/Breadcrumb" class="entry-title public">
<span class="repo-label"><span>public</span></span>
<span class="mega-octicon octicon-repo"></span>
<span class="author">
<a href="/vim-jp" class="url fn" itemprop="url" rel="author"><span itemprop="title">vim-jp</span></a>
</span>
<span class="repohead-name-divider">/</span>
<strong><a href="/vim-jp/vital.vim" class="js-current-repository js-repo-home-link">vital.vim</a></strong>
<span class="page-context-loader">
<img alt="Octocat-spinner-32" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</span>
</h1>
</div><!-- /.container -->
</div><!-- /.repohead -->
<div class="container">
<div class="repository-with-sidebar repo-container ">
<div class="repository-sidebar">
<div class="sunken-menu vertical-right repo-nav js-repo-nav js-repository-container-pjax js-octicon-loaders">
<div class="sunken-menu-contents">
<ul class="sunken-menu-group">
<li class="tooltipped leftwards" title="Code">
<a href="/vim-jp/vital.vim" aria-label="Code" class="selected js-selected-navigation-item sunken-menu-item" data-gotokey="c" data-pjax="true" data-selected-links="repo_source repo_downloads repo_commits repo_tags repo_branches /vim-jp/vital.vim">
<span class="octicon octicon-code"></span> <span class="full-word">Code</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Issues">
<a href="/vim-jp/vital.vim/issues" aria-label="Issues" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-gotokey="i" data-selected-links="repo_issues /vim-jp/vital.vim/issues">
<span class="octicon octicon-issue-opened"></span> <span class="full-word">Issues</span>
<span class='counter'>28</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Pull Requests">
<a href="/vim-jp/vital.vim/pulls" aria-label="Pull Requests" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-gotokey="p" data-selected-links="repo_pulls /vim-jp/vital.vim/pulls">
<span class="octicon octicon-git-pull-request"></span> <span class="full-word">Pull Requests</span>
<span class='counter'>4</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Wiki">
<a href="/vim-jp/vital.vim/wiki" aria-label="Wiki" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="repo_wiki /vim-jp/vital.vim/wiki">
<span class="octicon octicon-book"></span> <span class="full-word">Wiki</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
</ul>
<div class="sunken-menu-separator"></div>
<ul class="sunken-menu-group">
<li class="tooltipped leftwards" title="Pulse">
<a href="/vim-jp/vital.vim/pulse" aria-label="Pulse" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="pulse /vim-jp/vital.vim/pulse">
<span class="octicon octicon-pulse"></span> <span class="full-word">Pulse</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Graphs">
<a href="/vim-jp/vital.vim/graphs" aria-label="Graphs" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="repo_graphs repo_contributors /vim-jp/vital.vim/graphs">
<span class="octicon octicon-graph"></span> <span class="full-word">Graphs</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Network">
<a href="/vim-jp/vital.vim/network" aria-label="Network" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-selected-links="repo_network /vim-jp/vital.vim/network">
<span class="octicon octicon-git-branch"></span> <span class="full-word">Network</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
</ul>
</div>
</div>
<div class="only-with-full-nav">
<div class="clone-url "
data-protocol-type="http"
data-url="/users/set_protocol?protocol_selector=http&amp;protocol_type=push">
<h3><strong>HTTPS</strong> clone URL</h3>
<div class="clone-url-box">
<input type="text" class="clone js-url-field"
value="https://github.com/vim-jp/vital.vim.git" readonly="readonly">
<span class="js-zeroclipboard url-box-clippy minibutton zeroclipboard-button" data-clipboard-text="https://github.com/vim-jp/vital.vim.git" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
</div>
</div>
<div class="clone-url open"
data-protocol-type="ssh"
data-url="/users/set_protocol?protocol_selector=ssh&amp;protocol_type=push">
<h3><strong>SSH</strong> clone URL</h3>
<div class="clone-url-box">
<input type="text" class="clone js-url-field"
value="git@github.com:vim-jp/vital.vim.git" readonly="readonly">
<span class="js-zeroclipboard url-box-clippy minibutton zeroclipboard-button" data-clipboard-text="git@github.com:vim-jp/vital.vim.git" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
</div>
</div>
<div class="clone-url "
data-protocol-type="subversion"
data-url="/users/set_protocol?protocol_selector=subversion&amp;protocol_type=push">
<h3><strong>Subversion</strong> checkout URL</h3>
<div class="clone-url-box">
<input type="text" class="clone js-url-field"
value="https://github.com/vim-jp/vital.vim" readonly="readonly">
<span class="js-zeroclipboard url-box-clippy minibutton zeroclipboard-button" data-clipboard-text="https://github.com/vim-jp/vital.vim" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
</div>
</div>
<p class="clone-options">You can clone with
<a href="#" class="js-clone-selector" data-protocol="http">HTTPS</a>,
<a href="#" class="js-clone-selector" data-protocol="ssh">SSH</a>,
or <a href="#" class="js-clone-selector" data-protocol="subversion">Subversion</a>.
<span class="octicon help tooltipped upwards" title="Get help on which URL is right for you.">
<a href="https://help.github.com/articles/which-remote-url-should-i-use">
<span class="octicon octicon-question"></span>
</a>
</span>
</p>
<a href="http://windows.github.com" class="minibutton sidebar-button">
<span class="octicon octicon-device-desktop"></span>
Clone in Desktop
</a>
<a href="/vim-jp/vital.vim/archive/master.zip"
class="minibutton sidebar-button"
title="Download this repository as a zip file"
rel="nofollow">
<span class="octicon octicon-cloud-download"></span>
Download ZIP
</a>
</div>
</div><!-- /.repository-sidebar -->
<div id="js-repo-pjax-container" class="repository-content context-loader-container" data-pjax-container>
<!-- blob contrib key: blob_contributors:v21:8865196e6c233067ca43f509eaa36ae4 -->
<p title="This is a placeholder element" class="js-history-link-replace hidden"></p>
<a href="/vim-jp/vital.vim/find/master" data-pjax data-hotkey="t" class="js-show-file-finder" style="display:none">Show File Finder</a>
<div class="file-navigation">
<div class="select-menu js-menu-container js-select-menu" >
<span class="minibutton select-menu-button js-menu-target" data-hotkey="w"
data-master-branch="master"
data-ref="master"
role="button" aria-label="Switch branches or tags" tabindex="0">
<span class="octicon octicon-git-branch"></span>
<i>branch:</i>
<span class="js-select-button">master</span>
</span>
<div class="select-menu-modal-holder js-menu-content js-navigation-container" data-pjax>
<div class="select-menu-modal">
<div class="select-menu-header">
<span class="select-menu-title">Switch branches/tags</span>
<span class="octicon octicon-remove-close js-menu-close"></span>
</div> <!-- /.select-menu-header -->
<div class="select-menu-filters">
<div class="select-menu-text-filter">
<input type="text" aria-label="Find or create a branch…" id="context-commitish-filter-field" class="js-filterable-field js-navigation-enable" placeholder="Find or create a branch…">
</div>
<div class="select-menu-tabs">
<ul>
<li class="select-menu-tab">
<a href="#" data-tab-filter="branches" class="js-select-menu-tab">Branches</a>
</li>
<li class="select-menu-tab">
<a href="#" data-tab-filter="tags" class="js-select-menu-tab">Tags</a>
</li>
</ul>
</div><!-- /.select-menu-tabs -->
</div><!-- /.select-menu-filters -->
<div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="branches">
<div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/Data.Closure/autoload/vital/__latest__/ProcessManager.vim"
data-name="Data.Closure"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="Data.Closure">Data.Closure</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/git_submodule/autoload/vital/__latest__/ProcessManager.vim"
data-name="git_submodule"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="git_submodule">git_submodule</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/logger/autoload/vital/__latest__/ProcessManager.vim"
data-name="logger"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="logger">logger</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item selected">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/master/autoload/vital/__latest__/ProcessManager.vim"
data-name="master"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="master">master</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/optional-prelude/autoload/vital/__latest__/ProcessManager.vim"
data-name="optional-prelude"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="optional-prelude">optional-prelude</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/sqlite-processmanager-wip/autoload/vital/__latest__/ProcessManager.vim"
data-name="sqlite-processmanager-wip"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="sqlite-processmanager-wip">sqlite-processmanager-wip</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/sys.file/autoload/vital/__latest__/ProcessManager.vim"
data-name="sys.file"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="sys.file">sys.file</a>
</div> <!-- /.select-menu-item -->
</div>
<form accept-charset="UTF-8" action="/vim-jp/vital.vim/branches" class="js-create-branch select-menu-item select-menu-new-item-form js-navigation-item js-new-item-form" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="QJ+IADlDg9SxDImNEnlVQuqnrERp2WaGGsoyvKtaTk4=" /></div>
<span class="octicon octicon-git-branch-create select-menu-item-icon"></span>
<div class="select-menu-item-text">
<h4>Create branch: <span class="js-new-item-name"></span></h4>
<span class="description">from ‘master’</span>
</div>
<input type="hidden" name="name" id="name" class="js-new-item-value">
<input type="hidden" name="branch" id="branch" value="master" />
<input type="hidden" name="path" id="path" value="autoload/vital/__latest__/ProcessManager.vim" />
</form> <!-- /.select-menu-item -->
</div> <!-- /.select-menu-list -->
<div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="tags">
<div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
</div>
<div class="select-menu-no-results">Nothing to show</div>
</div> <!-- /.select-menu-list -->
</div> <!-- /.select-menu-modal -->
</div> <!-- /.select-menu-modal-holder -->
</div> <!-- /.select-menu -->
<div class="breadcrumb">
<span class='repo-root js-repo-root'><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/vim-jp/vital.vim" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">vital.vim</span></a></span></span><span class="separator"> / </span><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/vim-jp/vital.vim/tree/master/autoload" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">autoload</span></a></span><span class="separator"> / </span><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/vim-jp/vital.vim/tree/master/autoload/vital" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">vital</span></a></span><span class="separator"> / </span><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/vim-jp/vital.vim/tree/master/autoload/vital/__latest__" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">__latest__</span></a></span><span class="separator"> / </span><strong class="final-path">ProcessManager.vim</strong> <span class="js-zeroclipboard minibutton zeroclipboard-button" data-clipboard-text="autoload/vital/__latest__/ProcessManager.vim" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
</div>
</div>
<div class="commit file-history-tease">
<img class="main-avatar" height="24" src="https://1.gravatar.com/avatar/d9d0ceb387e3b6de5c4562af78e8a910?d=https%3A%2F%2Fidenticons.github.com%2F0fc780bb04e74ce5ed154d2e49cfe2fd.png&amp;r=x&amp;s=140" width="24" />
<span class="author"><a href="/ujihisa" rel="author">ujihisa</a></span>
<time class="js-relative-date" datetime="2013-12-21T20:30:11-08:00" title="2013-12-21 20:30:11">December 21, 2013</time>
<div class="commit-title">
<a href="/vim-jp/vital.vim/commit/240d2c93ff042c7afd291cdb301c0c1004136a73" class="message" data-pjax="true" title="ProcessManager: cosmetic change">ProcessManager: cosmetic change</a>
</div>
<div class="participation">
<p class="quickstat"><a href="#blob_contributors_box" rel="facebox"><strong>4</strong> contributors</a></p>
<a class="avatar tooltipped downwards" title="ujihisa" href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim?author=ujihisa"><img height="20" src="https://1.gravatar.com/avatar/d9d0ceb387e3b6de5c4562af78e8a910?d=https%3A%2F%2Fidenticons.github.com%2F0fc780bb04e74ce5ed154d2e49cfe2fd.png&amp;r=x&amp;s=140" width="20" /></a>
<a class="avatar tooltipped downwards" title="mattn" href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim?author=mattn"><img height="20" src="https://2.gravatar.com/avatar/1ba93fd9e39ebf48777f217c38e768fd?d=https%3A%2F%2Fidenticons.github.com%2F70bb83c9272e6c4bc6e83e0a55c7c9c3.png&amp;r=x&amp;s=140" width="20" /></a>
<a class="avatar tooltipped downwards" title="ichizok" href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim?author=ichizok"><img height="20" src="https://2.gravatar.com/avatar/9b780db659a9a657e775b07521be3efc?d=https%3A%2F%2Fidenticons.github.com%2Fa8a23399cfd9dee3779fad0970ec23dc.png&amp;r=x&amp;s=140" width="20" /></a>
<a class="avatar tooltipped downwards" title="alpaca-tc" href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim?author=alpaca-tc"><img height="20" src="https://1.gravatar.com/avatar/c2fe23111675890bf8bc59afb312990e?d=https%3A%2F%2Fidenticons.github.com%2F8e3d7e94dcb83a1fda7307b9f75b186c.png&amp;r=x&amp;s=140" width="20" /></a>
</div>
<div id="blob_contributors_box" style="display:none">
<h2 class="facebox-header">Users who have contributed to this file</h2>
<ul class="facebox-user-list">
<li class="facebox-user-list-item">
<img height="24" src="https://1.gravatar.com/avatar/d9d0ceb387e3b6de5c4562af78e8a910?d=https%3A%2F%2Fidenticons.github.com%2F0fc780bb04e74ce5ed154d2e49cfe2fd.png&amp;r=x&amp;s=140" width="24" />
<a href="/ujihisa">ujihisa</a>
</li>
<li class="facebox-user-list-item">
<img height="24" src="https://2.gravatar.com/avatar/1ba93fd9e39ebf48777f217c38e768fd?d=https%3A%2F%2Fidenticons.github.com%2F70bb83c9272e6c4bc6e83e0a55c7c9c3.png&amp;r=x&amp;s=140" width="24" />
<a href="/mattn">mattn</a>
</li>
<li class="facebox-user-list-item">
<img height="24" src="https://2.gravatar.com/avatar/9b780db659a9a657e775b07521be3efc?d=https%3A%2F%2Fidenticons.github.com%2Fa8a23399cfd9dee3779fad0970ec23dc.png&amp;r=x&amp;s=140" width="24" />
<a href="/ichizok">ichizok</a>
</li>
<li class="facebox-user-list-item">
<img height="24" src="https://1.gravatar.com/avatar/c2fe23111675890bf8bc59afb312990e?d=https%3A%2F%2Fidenticons.github.com%2F8e3d7e94dcb83a1fda7307b9f75b186c.png&amp;r=x&amp;s=140" width="24" />
<a href="/alpaca-tc">alpaca-tc</a>
</li>
</ul>
</div>
</div>
<div id="files" class="bubble">
<div class="file">
<div class="meta">
<div class="info">
<span class="icon"><b class="octicon octicon-file-text"></b></span>
<span class="mode" title="File Mode">file</span>
<span>125 lines (103 sloc)</span>
<span>2.881 kb</span>
</div>
<div class="actions">
<div class="button-group">
<a class="minibutton tooltipped leftwards"
href="http://windows.github.com" title="Open this file in GitHub for Windows">
<span class="octicon octicon-device-desktop"></span> Open
</a>
<a class="minibutton"
href="/vim-jp/vital.vim/edit/master/autoload/vital/__latest__/ProcessManager.vim"
data-method="post" rel="nofollow" data-hotkey="e">Edit</a>
<a href="/vim-jp/vital.vim/raw/master/autoload/vital/__latest__/ProcessManager.vim" class="button minibutton " id="raw-url">Raw</a>
<a href="/vim-jp/vital.vim/blame/master/autoload/vital/__latest__/ProcessManager.vim" class="button minibutton ">Blame</a>
<a href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim" class="button minibutton " rel="nofollow">History</a>
</div><!-- /.button-group -->
<a class="minibutton danger empty-icon tooltipped downwards"
href="/vim-jp/vital.vim/delete/master/autoload/vital/__latest__/ProcessManager.vim"
title=""
data-method="post" data-test-id="delete-blob-file" rel="nofollow">
Delete
</a>
</div><!-- /.actions -->
</div>
<div class="blob-wrapper data type-viml js-blob-data">
<table class="file-code file-diff">
<tr class="file-code-line">
<td class="blob-line-nums">
<span id="L1" rel="#L1">1</span>
<span id="L2" rel="#L2">2</span>
<span id="L3" rel="#L3">3</span>
<span id="L4" rel="#L4">4</span>
<span id="L5" rel="#L5">5</span>
<span id="L6" rel="#L6">6</span>
<span id="L7" rel="#L7">7</span>
<span id="L8" rel="#L8">8</span>
<span id="L9" rel="#L9">9</span>
<span id="L10" rel="#L10">10</span>
<span id="L11" rel="#L11">11</span>
<span id="L12" rel="#L12">12</span>
<span id="L13" rel="#L13">13</span>
<span id="L14" rel="#L14">14</span>
<span id="L15" rel="#L15">15</span>
<span id="L16" rel="#L16">16</span>
<span id="L17" rel="#L17">17</span>
<span id="L18" rel="#L18">18</span>
<span id="L19" rel="#L19">19</span>
<span id="L20" rel="#L20">20</span>
<span id="L21" rel="#L21">21</span>
<span id="L22" rel="#L22">22</span>
<span id="L23" rel="#L23">23</span>
<span id="L24" rel="#L24">24</span>
<span id="L25" rel="#L25">25</span>
<span id="L26" rel="#L26">26</span>
<span id="L27" rel="#L27">27</span>
<span id="L28" rel="#L28">28</span>
<span id="L29" rel="#L29">29</span>
<span id="L30" rel="#L30">30</span>
<span id="L31" rel="#L31">31</span>
<span id="L32" rel="#L32">32</span>
<span id="L33" rel="#L33">33</span>
<span id="L34" rel="#L34">34</span>
<span id="L35" rel="#L35">35</span>
<span id="L36" rel="#L36">36</span>
<span id="L37" rel="#L37">37</span>
<span id="L38" rel="#L38">38</span>
<span id="L39" rel="#L39">39</span>
<span id="L40" rel="#L40">40</span>
<span id="L41" rel="#L41">41</span>
<span id="L42" rel="#L42">42</span>
<span id="L43" rel="#L43">43</span>
<span id="L44" rel="#L44">44</span>
<span id="L45" rel="#L45">45</span>
<span id="L46" rel="#L46">46</span>
<span id="L47" rel="#L47">47</span>
<span id="L48" rel="#L48">48</span>
<span id="L49" rel="#L49">49</span>
<span id="L50" rel="#L50">50</span>
<span id="L51" rel="#L51">51</span>
<span id="L52" rel="#L52">52</span>
<span id="L53" rel="#L53">53</span>
<span id="L54" rel="#L54">54</span>
<span id="L55" rel="#L55">55</span>
<span id="L56" rel="#L56">56</span>
<span id="L57" rel="#L57">57</span>
<span id="L58" rel="#L58">58</span>
<span id="L59" rel="#L59">59</span>
<span id="L60" rel="#L60">60</span>
<span id="L61" rel="#L61">61</span>
<span id="L62" rel="#L62">62</span>
<span id="L63" rel="#L63">63</span>
<span id="L64" rel="#L64">64</span>
<span id="L65" rel="#L65">65</span>
<span id="L66" rel="#L66">66</span>
<span id="L67" rel="#L67">67</span>
<span id="L68" rel="#L68">68</span>
<span id="L69" rel="#L69">69</span>
<span id="L70" rel="#L70">70</span>
<span id="L71" rel="#L71">71</span>
<span id="L72" rel="#L72">72</span>
<span id="L73" rel="#L73">73</span>
<span id="L74" rel="#L74">74</span>
<span id="L75" rel="#L75">75</span>
<span id="L76" rel="#L76">76</span>
<span id="L77" rel="#L77">77</span>
<span id="L78" rel="#L78">78</span>
<span id="L79" rel="#L79">79</span>
<span id="L80" rel="#L80">80</span>
<span id="L81" rel="#L81">81</span>
<span id="L82" rel="#L82">82</span>
<span id="L83" rel="#L83">83</span>
<span id="L84" rel="#L84">84</span>
<span id="L85" rel="#L85">85</span>
<span id="L86" rel="#L86">86</span>
<span id="L87" rel="#L87">87</span>
<span id="L88" rel="#L88">88</span>
<span id="L89" rel="#L89">89</span>
<span id="L90" rel="#L90">90</span>
<span id="L91" rel="#L91">91</span>
<span id="L92" rel="#L92">92</span>
<span id="L93" rel="#L93">93</span>
<span id="L94" rel="#L94">94</span>
<span id="L95" rel="#L95">95</span>
<span id="L96" rel="#L96">96</span>
<span id="L97" rel="#L97">97</span>
<span id="L98" rel="#L98">98</span>
<span id="L99" rel="#L99">99</span>
<span id="L100" rel="#L100">100</span>
<span id="L101" rel="#L101">101</span>
<span id="L102" rel="#L102">102</span>
<span id="L103" rel="#L103">103</span>
<span id="L104" rel="#L104">104</span>
<span id="L105" rel="#L105">105</span>
<span id="L106" rel="#L106">106</span>
<span id="L107" rel="#L107">107</span>
<span id="L108" rel="#L108">108</span>
<span id="L109" rel="#L109">109</span>
<span id="L110" rel="#L110">110</span>
<span id="L111" rel="#L111">111</span>
<span id="L112" rel="#L112">112</span>
<span id="L113" rel="#L113">113</span>
<span id="L114" rel="#L114">114</span>
<span id="L115" rel="#L115">115</span>
<span id="L116" rel="#L116">116</span>
<span id="L117" rel="#L117">117</span>
<span id="L118" rel="#L118">118</span>
<span id="L119" rel="#L119">119</span>
<span id="L120" rel="#L120">120</span>
<span id="L121" rel="#L121">121</span>
<span id="L122" rel="#L122">122</span>
<span id="L123" rel="#L123">123</span>
<span id="L124" rel="#L124">124</span>
</td>
<td class="blob-line-code">
<div class="code-body highlight"><pre><div class='line' id='LC1'><span class="k">let</span> <span class="k">s</span>:save_cpo <span class="p">=</span> &amp;<span class="nb">cpo</span></div><div class='line' id='LC2'><span class="k">set</span> <span class="nb">cpo</span>&amp;<span class="k">vim</span></div><div class='line' id='LC3'><br/></div><div class='line' id='LC4'><span class="k">let</span> <span class="k">s</span>:_processes <span class="p">=</span> {}</div><div class='line' id='LC5'><br/></div><div class='line' id='LC6'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:_vital_loaded<span class="p">(</span>V<span class="p">)</span></div><div class='line' id='LC7'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">s</span>:V <span class="p">=</span> <span class="k">a</span>:V</div><div class='line' id='LC8'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">s</span>:S <span class="p">=</span> <span class="k">s</span>:V.import<span class="p">(</span><span class="s1">&#39;Data.String&#39;</span><span class="p">)</span></div><div class='line' id='LC9'><span class="k">endfunction</span></div><div class='line' id='LC10'><br/></div><div class='line' id='LC11'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:_vital_depends<span class="p">()</span></div><div class='line' id='LC12'>&nbsp;&nbsp;<span class="k">return</span> [<span class="s1">&#39;Data.String&#39;</span>]</div><div class='line' id='LC13'><span class="k">endfunction</span></div><div class='line' id='LC14'><br/></div><div class='line' id='LC15'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:is_available<span class="p">()</span></div><div class='line' id='LC16'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:V.has_vimproc<span class="p">()</span></div><div class='line' id='LC17'><span class="k">endfunction</span></div><div class='line' id='LC18'><br/></div><div class='line' id='LC19'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:touch<span class="p">(</span>name<span class="p">,</span> cmd<span class="p">)</span></div><div class='line' id='LC20'>&nbsp;&nbsp;<span class="k">if</span> has_key<span class="p">(</span><span class="k">s</span>:_processes<span class="p">,</span> <span class="k">a</span>:name<span class="p">)</span></div><div class='line' id='LC21'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="s1">&#39;existing&#39;</span></div><div class='line' id='LC22'>&nbsp;&nbsp;<span class="k">else</span></div><div class='line' id='LC23'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> vimproc#popen3<span class="p">(</span><span class="k">a</span>:cmd<span class="p">)</span></div><div class='line' id='LC24'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> <span class="k">s</span>:_processes[<span class="k">a</span>:name] <span class="p">=</span> <span class="k">p</span></div><div class='line' id='LC25'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="s1">&#39;new&#39;</span></div><div class='line' id='LC26'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC27'><span class="k">endfunction</span></div><div class='line' id='LC28'><br/></div><div class='line' id='LC29'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:stop<span class="p">(</span><span class="k">i</span><span class="p">)</span></div><div class='line' id='LC30'>&nbsp;&nbsp;<span class="k">echomsg</span> <span class="s2">&quot;Vital.ProcessManager.stop() is deprecated! Please use kill() or term() instead.&quot;</span></div><div class='line' id='LC31'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:kill<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC32'><span class="k">endfunction</span></div><div class='line' id='LC33'><br/></div><div class='line' id='LC34'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:_stop<span class="p">(</span><span class="k">i</span><span class="p">,</span> ...<span class="p">)</span></div><div class='line' id='LC35'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC36'>&nbsp;&nbsp;<span class="k">call</span> <span class="k">p</span>.kill<span class="p">(</span><span class="k">get</span><span class="p">(</span><span class="k">a</span>:<span class="m">000</span><span class="p">,</span> <span class="m">0</span><span class="p">,</span> <span class="m">0</span><span class="p">)</span> ? <span class="k">g</span>:vimproc#SIGKILL : <span class="k">g</span>:vimproc#SIGTERM<span class="p">)</span></div><div class='line' id='LC37'><span class="c"> &quot; call p.waitpid()</span></div><div class='line' id='LC38'>&nbsp;&nbsp;unlet <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC39'><span class="k">endfunction</span></div><div class='line' id='LC40'><br/></div><div class='line' id='LC41'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:<span class="nb">term</span><span class="p">(</span><span class="k">i</span><span class="p">)</span></div><div class='line' id='LC42'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:_stop<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">,</span> <span class="m">0</span><span class="p">)</span></div><div class='line' id='LC43'><span class="k">endfunction</span></div><div class='line' id='LC44'><br/></div><div class='line' id='LC45'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:kill<span class="p">(</span><span class="k">i</span><span class="p">)</span></div><div class='line' id='LC46'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:_stop<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">,</span> <span class="m">1</span><span class="p">)</span></div><div class='line' id='LC47'><span class="k">endfunction</span></div><div class='line' id='LC48'><br/></div><div class='line' id='LC49'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:read<span class="p">(</span><span class="k">i</span><span class="p">,</span> endpatterns<span class="p">)</span></div><div class='line' id='LC50'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:read_wait<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">,</span> <span class="m">0</span>.<span class="m">05</span><span class="p">,</span> <span class="k">a</span>:endpatterns<span class="p">)</span></div><div class='line' id='LC51'><span class="k">endfunction</span></div><div class='line' id='LC52'><br/></div><div class='line' id='LC53'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:read_wait<span class="p">(</span><span class="k">i</span><span class="p">,</span> wait<span class="p">,</span> endpatterns<span class="p">)</span></div><div class='line' id='LC54'>&nbsp;&nbsp;<span class="k">if</span> <span class="p">!</span>has_key<span class="p">(</span><span class="k">s</span>:_processes<span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC55'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">throw</span> printf<span class="p">(</span><span class="s2">&quot;ProcessManager doesn&#39;t know about %s&quot;</span><span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC56'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC57'><br/></div><div class='line' id='LC58'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC59'><br/></div><div class='line' id='LC60'>&nbsp;&nbsp;<span class="k">if</span> <span class="k">s</span>:status<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">)</span> <span class="p">==</span># <span class="s1">&#39;inactive&#39;</span></div><div class='line' id='LC61'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> [<span class="k">p</span>.stdout.read<span class="p">(),</span> <span class="k">p</span>.stderr.read<span class="p">(),</span> <span class="s1">&#39;inactive&#39;</span>]</div><div class='line' id='LC62'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC63'><br/></div><div class='line' id='LC64'>&nbsp;&nbsp;<span class="k">let</span> out_memo <span class="p">=</span> <span class="s1">&#39;&#39;</span></div><div class='line' id='LC65'>&nbsp;&nbsp;<span class="k">let</span> err_memo <span class="p">=</span> <span class="s1">&#39;&#39;</span></div><div class='line' id='LC66'>&nbsp;&nbsp;<span class="k">let</span> lastchanged <span class="p">=</span> reltime<span class="p">()</span></div><div class='line' id='LC67'>&nbsp;&nbsp;<span class="k">while</span> <span class="m">1</span></div><div class='line' id='LC68'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> [<span class="k">x</span><span class="p">,</span> <span class="k">y</span>] <span class="p">=</span> [<span class="k">p</span>.stdout.read<span class="p">(),</span> <span class="k">p</span>.stderr.read<span class="p">()</span>]</div><div class='line' id='LC69'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="k">x</span> <span class="p">==</span># <span class="s1">&#39;&#39;</span> &amp;&amp; <span class="k">y</span> <span class="p">==</span># <span class="s1">&#39;&#39;</span></div><div class='line' id='LC70'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> str2float<span class="p">(</span>reltimestr<span class="p">(</span>reltime<span class="p">(</span>lastchanged<span class="p">)))</span> <span class="p">&gt;</span> <span class="k">a</span>:wait</div><div class='line' id='LC71'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> [out_memo<span class="p">,</span> err_memo<span class="p">,</span> <span class="s1">&#39;timedout&#39;</span>]</div><div class='line' id='LC72'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC73'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">else</span></div><div class='line' id='LC74'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> lastchanged <span class="p">=</span> reltime<span class="p">()</span></div><div class='line' id='LC75'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> out_memo .<span class="p">=</span> <span class="k">x</span></div><div class='line' id='LC76'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> err_memo .<span class="p">=</span> <span class="k">y</span></div><div class='line' id='LC77'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">for</span> pattern <span class="k">in</span> <span class="k">a</span>:endpatterns</div><div class='line' id='LC78'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> out_memo <span class="p">=~</span> <span class="p">(</span><span class="s2">&quot;\\(^\\|\n\\)&quot;</span> . pattern<span class="p">)</span></div><div class='line' id='LC79'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> [<span class="k">s</span>:S.substitute_last<span class="p">(</span>out_memo<span class="p">,</span> pattern<span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">),</span> err_memo<span class="p">,</span> <span class="s1">&#39;matched&#39;</span>]</div><div class='line' id='LC80'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC81'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">endfor</span></div><div class='line' id='LC82'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC83'>&nbsp;&nbsp;<span class="k">endwhile</span></div><div class='line' id='LC84'><span class="k">endfunction</span></div><div class='line' id='LC85'><br/></div><div class='line' id='LC86'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:<span class="nb">write</span><span class="p">(</span><span class="k">i</span><span class="p">,</span> str<span class="p">)</span></div><div class='line' id='LC87'>&nbsp;&nbsp;<span class="k">if</span> <span class="p">!</span>has_key<span class="p">(</span><span class="k">s</span>:_processes<span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC88'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">throw</span> printf<span class="p">(</span><span class="s2">&quot;ProcessManager doesn&#39;t know about %s&quot;</span><span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC89'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC90'>&nbsp;&nbsp;<span class="k">if</span> <span class="k">s</span>:status<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">)</span> <span class="p">==</span># <span class="s1">&#39;inactive&#39;</span></div><div class='line' id='LC91'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="s1">&#39;inactive&#39;</span></div><div class='line' id='LC92'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC93'><br/></div><div class='line' id='LC94'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC95'>&nbsp;&nbsp;<span class="k">call</span> <span class="k">p</span>.stdin.<span class="nb">write</span><span class="p">(</span><span class="k">a</span>:str<span class="p">)</span></div><div class='line' id='LC96'><br/></div><div class='line' id='LC97'>&nbsp;&nbsp;<span class="k">return</span> <span class="s1">&#39;active&#39;</span></div><div class='line' id='LC98'><span class="k">endfunction</span></div><div class='line' id='LC99'><br/></div><div class='line' id='LC100'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:writeln<span class="p">(</span><span class="k">i</span><span class="p">,</span> str<span class="p">)</span></div><div class='line' id='LC101'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:<span class="nb">write</span><span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">,</span> <span class="k">a</span>:str . <span class="s2">&quot;\n&quot;</span><span class="p">)</span></div><div class='line' id='LC102'><span class="k">endfunction</span></div><div class='line' id='LC103'><br/></div><div class='line' id='LC104'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:status<span class="p">(</span><span class="k">i</span><span class="p">)</span></div><div class='line' id='LC105'>&nbsp;&nbsp;<span class="k">if</span> <span class="p">!</span>has_key<span class="p">(</span><span class="k">s</span>:_processes<span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC106'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">throw</span> printf<span class="p">(</span><span class="s2">&quot;ProcessManager doesn&#39;t know about %s&quot;</span><span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC107'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC108'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC109'><span class="c"> &quot; vimproc.kill isn&#39;t to stop but to ask for the current state.</span></div><div class='line' id='LC110'><span class="c"> &quot; return p.kill(0) ? &#39;inactive&#39; : &#39;active&#39;</span></div><div class='line' id='LC111'><span class="c"> &quot; ... checkpid() checks if the process is running AND does waitpid() in C,</span></div><div class='line' id='LC112'><span class="c"> &quot; so it solves zombie processes.</span></div><div class='line' id='LC113'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">get</span><span class="p">(</span><span class="k">p</span>.checkpid<span class="p">(),</span> <span class="m">0</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="p">==</span># <span class="s1">&#39;run&#39;</span></div><div class='line' id='LC114'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\ ? <span class="s1">&#39;active&#39;</span></div><div class='line' id='LC115'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\ : <span class="s1">&#39;inactive&#39;</span></div><div class='line' id='LC116'><span class="k">endfunction</span></div><div class='line' id='LC117'><br/></div><div class='line' id='LC118'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:debug_processes<span class="p">()</span></div><div class='line' id='LC119'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:_processes</div><div class='line' id='LC120'><span class="k">endfunction</span></div><div class='line' id='LC121'><br/></div><div class='line' id='LC122'><span class="k">let</span> &amp;<span class="nb">cpo</span> <span class="p">=</span> <span class="k">s</span>:save_cpo</div><div class='line' id='LC123'>unlet <span class="k">s</span>:save_cpo</div><div class='line' id='LC124'><span class="c">&quot; vim:set et ts=2 sts=2 sw=2 tw=0:</span></div></pre></div>
</td>
</tr>
</table>
</div>
</div>
</div>
<a href="#jump-to-line" rel="facebox[.linejump]" data-hotkey="l" class="js-jump-to-line" style="display:none">Jump to Line</a>
<div id="jump-to-line" style="display:none">
<form accept-charset="UTF-8" class="js-jump-to-line-form">
<input class="linejump-input js-jump-to-line-field" type="text" placeholder="Jump to line&hellip;" autofocus>
<button type="submit" class="button">Go</button>
</form>
</div>
</div>
</div><!-- /.repo-container -->
<div class="modal-backdrop"></div>
</div><!-- /.container -->
</div><!-- /.site -->
</div><!-- /.wrapper -->
<div class="container">
<div class="site-footer">
<ul class="site-footer-links right">
<li><a href="https://status.github.com/">Status</a></li>
<li><a href="http://developer.github.com">API</a></li>
<li><a href="http://training.github.com">Training</a></li>
<li><a href="http://shop.github.com">Shop</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/about">About</a></li>
</ul>
<a href="/">
<span class="mega-octicon octicon-mark-github" title="GitHub"></span>
</a>
<ul class="site-footer-links">
<li>&copy; 2014 <span title="0.03660s from github-fe122-cp1-prd.iad.github.net">GitHub</span>, Inc.</li>
<li><a href="/site/terms">Terms</a></li>
<li><a href="/site/privacy">Privacy</a></li>
<li><a href="/security">Security</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
</div><!-- /.site-footer -->
</div><!-- /.container -->
<div class="fullscreen-overlay js-fullscreen-overlay" id="fullscreen_overlay">
<div class="fullscreen-container js-fullscreen-container">
<div class="textarea-wrap">
<textarea name="fullscreen-contents" id="fullscreen-contents" class="js-fullscreen-contents" placeholder="" data-suggester="fullscreen_suggester"></textarea>
<div class="suggester-container">
<div class="suggester fullscreen-suggester js-navigation-container" id="fullscreen_suggester"
data-url="/vim-jp/vital.vim/suggestions/commit">
</div>
</div>
</div>
</div>
<div class="fullscreen-sidebar">
<a href="#" class="exit-fullscreen js-exit-fullscreen tooltipped leftwards" title="Exit Zen Mode">
<span class="mega-octicon octicon-screen-normal"></span>
</a>
<a href="#" class="theme-switcher js-theme-switcher tooltipped leftwards"
title="Switch themes">
<span class="octicon octicon-color-mode"></span>
</a>
</div>
</div>
<div id="ajax-error-message" class="flash flash-error">
<span class="octicon octicon-alert"></span>
<a href="#" class="octicon octicon-remove-close close js-ajax-error-dismiss"></a>
Something went wrong with that request. Please try again.
</div>
</body>
</html>
<!DOCTYPE html>
<html>
<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# githubog: http://ogp.me/ns/fb/githubog#">
<meta charset='utf-8'>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>vital.vim/autoload/vital/__latest__/ProcessManager.vim at master · vim-jp/vital.vim</title>
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub" />
<link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub" />
<link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-114.png" />
<link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114.png" />
<link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-144.png" />
<link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144.png" />
<link rel="logo" type="image/svg" href="https://github-media-downloads.s3.amazonaws.com/github-logo.svg" />
<meta property="og:image" content="https://github.global.ssl.fastly.net/images/modules/logos_page/Octocat.png">
<meta name="hostname" content="github-fe122-cp1-prd.iad.github.net">
<meta name="ruby" content="ruby 2.1.0p0-github-tcmalloc (60139581e1) [x86_64-linux]">
<link rel="assets" href="https://github.global.ssl.fastly.net/">
<link rel="conduit-xhr" href="https://ghconduit.com:25035/">
<link rel="xhr-socket" href="/_sockets" />
<meta name="msapplication-TileImage" content="/windows-tile.png" />
<meta name="msapplication-TileColor" content="#ffffff" />
<meta name="selected-link" value="repo_source" data-pjax-transient />
<meta content="collector.githubapp.com" name="octolytics-host" /><meta content="collector-cdn.github.com" name="octolytics-script-host" /><meta content="github" name="octolytics-app-id" /><meta content="B6F95C6A:6644:E50EC4:52E18AFE" name="octolytics-dimension-request_id" /><meta content="214488" name="octolytics-actor-id" /><meta content="osyo-manga" name="octolytics-actor-login" /><meta content="e5012931f92cc8195a7f530c4e37bcc88d86a6df4ea3fd06d12d9d5795f6d0e8" name="octolytics-actor-hash" />
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
<meta content="authenticity_token" name="csrf-param" />
<meta content="QJ+IADlDg9SxDImNEnlVQuqnrERp2WaGGsoyvKtaTk4=" name="csrf-token" />
<link href="https://github.global.ssl.fastly.net/assets/github-43087292f81aebbe92f90a36344865c4ad8170a0.css" media="all" rel="stylesheet" type="text/css" />
<link href="https://github.global.ssl.fastly.net/assets/github2-d23a1b1c4a1bc509a0ca67face2fb37ef257f599.css" media="all" rel="stylesheet" type="text/css" />
<script src="https://github.global.ssl.fastly.net/assets/frameworks-bf5987648bb83690ac0a5e955f74bbaf6ba44c4a.js" type="text/javascript"></script>
<script async="async" defer="defer" src="https://github.global.ssl.fastly.net/assets/github-eab207422bd65ea8c46ef3d26d6fbcc74bba89ce.js" type="text/javascript"></script>
<meta http-equiv="x-pjax-version" content="1ceda3c4fa0194817b46f4df6a3f2c23">
<link data-pjax-transient rel='permalink' href='/vim-jp/vital.vim/blob/3e229e28b002d42b9ca0d15bddddf0872fa2eed0/autoload/vital/__latest__/ProcessManager.vim'>
<meta property="og:title" content="vital.vim"/>
<meta property="og:type" content="githubog:gitrepository"/>
<meta property="og:url" content="https://github.com/vim-jp/vital.vim"/>
<meta property="og:image" content="https://github.global.ssl.fastly.net/images/gravatars/gravatar-user-420.png"/>
<meta property="og:site_name" content="GitHub"/>
<meta property="og:description" content="vital.vim - A comprehensive Vim utility functions for Vim plugins"/>
<meta name="description" content="vital.vim - A comprehensive Vim utility functions for Vim plugins" />
<meta content="1051958" name="octolytics-dimension-user_id" /><meta content="vim-jp" name="octolytics-dimension-user_login" /><meta content="1308435" name="octolytics-dimension-repository_id" /><meta content="vim-jp/vital.vim" name="octolytics-dimension-repository_nwo" /><meta content="true" name="octolytics-dimension-repository_public" /><meta content="false" name="octolytics-dimension-repository_is_fork" /><meta content="1308435" name="octolytics-dimension-repository_network_root_id" /><meta content="vim-jp/vital.vim" name="octolytics-dimension-repository_network_root_nwo" />
<link href="https://github.com/vim-jp/vital.vim/commits/master.atom" rel="alternate" title="Recent Commits to vital.vim:master" type="application/atom+xml" />
</head>
<body class="logged_in env-production windows vis-public page-blob">
<div class="wrapper">
<div class="header header-logged-in true">
<div class="container clearfix">
<a class="header-logo-invertocat" href="https://github.com/">
<span class="mega-octicon octicon-mark-github"></span>
</a>
<a href="/vim-jp/vital.vim/notifications" class="notification-indicator tooltipped downwards contextually-unread" data-gotokey="n" title="You have unread notifications in this repository">
<span class="mail-status unread"></span>
</a>
<div class="command-bar js-command-bar in-repository">
<form accept-charset="UTF-8" action="/search" class="command-bar-form" id="top_search_form" method="get">
<input type="text" data-hotkey="/ s" name="q" id="js-command-bar-field" placeholder="Search or type a command" tabindex="1" autocapitalize="off"
data-username="osyo-manga"
data-repo="vim-jp/vital.vim"
data-branch="master"
data-sha="e9e83ed3a8ffeefb55aeb10af4b80747448aeda6"
>
<input type="hidden" name="nwo" value="vim-jp/vital.vim" />
<div class="select-menu js-menu-container js-select-menu search-context-select-menu">
<span class="minibutton select-menu-button js-menu-target">
<span class="js-select-button">This repository</span>
</span>
<div class="select-menu-modal-holder js-menu-content js-navigation-container">
<div class="select-menu-modal">
<div class="select-menu-item js-navigation-item js-this-repository-navigation-item selected">
<span class="select-menu-item-icon octicon octicon-check"></span>
<input type="radio" class="js-search-this-repository" name="search_target" value="repository" checked="checked" />
<div class="select-menu-item-text js-select-button-text">This repository</div>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item js-all-repositories-navigation-item">
<span class="select-menu-item-icon octicon octicon-check"></span>
<input type="radio" name="search_target" value="global" />
<div class="select-menu-item-text js-select-button-text">All repositories</div>
</div> <!-- /.select-menu-item -->
</div>
</div>
</div>
<span class="octicon help tooltipped downwards" title="Show command bar help">
<span class="octicon octicon-question"></span>
</span>
<input type="hidden" name="ref" value="cmdform">
</form>
<ul class="top-nav">
<li class="explore"><a href="/explore">Explore</a></li>
<li><a href="https://gist.github.com">Gist</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="https://help.github.com">Help</a></li>
</ul>
</div>
<ul id="user-links">
<li>
<a href="/osyo-manga" class="name">
<img height="20" src="https://1.gravatar.com/avatar/3931098ae486b6df619050c63e24f6cc?d=https%3A%2F%2Fidenticons.github.com%2Fc192b911f32678010c36ee637415e182.png&amp;r=x&amp;s=140" width="20" /> osyo-manga
</a>
</li>
<li class="new-menu dropdown-toggle js-menu-container">
<a href="#" class="js-menu-target tooltipped downwards" title="Create new…">
<span class="octicon octicon-plus"></span>
<span class="dropdown-arrow"></span>
</a>
<div class="js-menu-content">
</div>
</li>
<li>
<a href="/settings/profile" id="account_settings"
class="tooltipped downwards"
aria-label="Account settings "
title="Account settings ">
<span class="octicon octicon-tools"></span>
</a>
</li>
<li>
<a class="tooltipped downwards" href="/logout" data-method="post" id="logout" title="Sign out" aria-label="Sign out">
<span class="octicon octicon-log-out"></span>
</a>
</li>
</ul>
<div class="js-new-dropdown-contents hidden">
<ul class="dropdown-menu">
<li>
<a href="/new"><span class="octicon octicon-repo-create"></span> New repository</a>
</li>
<li>
<a href="/organizations/new"><span class="octicon octicon-organization"></span> New organization</a>
</li>
<li class="section-title">
<span title="vim-jp/vital.vim">This repository</span>
</li>
<li>
<a href="/vim-jp/vital.vim/issues/new"><span class="octicon octicon-issue-opened"></span> New issue</a>
</li>
</ul>
</div>
</div>
</div>
<div class="site" itemscope itemtype="http://schema.org/WebPage">
<div class="pagehead repohead instapaper_ignore readability-menu">
<div class="container">
<ul class="pagehead-actions">
<li class="subscription">
<form accept-charset="UTF-8" action="/notifications/subscribe" class="js-social-container" data-autosubmit="true" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="QJ+IADlDg9SxDImNEnlVQuqnrERp2WaGGsoyvKtaTk4=" /></div> <input id="repository_id" name="repository_id" type="hidden" value="1308435" />
<div class="select-menu js-menu-container js-select-menu">
<a class="social-count js-social-count" href="/vim-jp/vital.vim/watchers">
22
</a>
<span class="minibutton select-menu-button with-count js-menu-target" role="button" tabindex="0">
<span class="js-select-button">
<span class="octicon octicon-eye-unwatch"></span>
Unwatch
</span>
</span>
<div class="select-menu-modal-holder">
<div class="select-menu-modal subscription-menu-modal js-menu-content">
<div class="select-menu-header">
<span class="select-menu-title">Notification status</span>
<span class="octicon octicon-remove-close js-menu-close"></span>
</div> <!-- /.select-menu-header -->
<div class="select-menu-list js-navigation-container" role="menu">
<div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0">
<span class="select-menu-item-icon octicon octicon-check"></span>
<div class="select-menu-item-text">
<input id="do_included" name="do" type="radio" value="included" />
<h4>Not watching</h4>
<span class="description">You only receive notifications for conversations in which you participate or are @mentioned.</span>
<span class="js-select-button-text hidden-select-button-text">
<span class="octicon octicon-eye-watch"></span>
Watch
</span>
</div>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item selected" role="menuitem" tabindex="0">
<span class="select-menu-item-icon octicon octicon octicon-check"></span>
<div class="select-menu-item-text">
<input checked="checked" id="do_subscribed" name="do" type="radio" value="subscribed" />
<h4>Watching</h4>
<span class="description">You receive notifications for all conversations in this repository.</span>
<span class="js-select-button-text hidden-select-button-text">
<span class="octicon octicon-eye-unwatch"></span>
Unwatch
</span>
</div>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0">
<span class="select-menu-item-icon octicon octicon-check"></span>
<div class="select-menu-item-text">
<input id="do_ignore" name="do" type="radio" value="ignore" />
<h4>Ignoring</h4>
<span class="description">You do not receive any notifications for conversations in this repository.</span>
<span class="js-select-button-text hidden-select-button-text">
<span class="octicon octicon-mute"></span>
Stop ignoring
</span>
</div>
</div> <!-- /.select-menu-item -->
</div> <!-- /.select-menu-list -->
</div> <!-- /.select-menu-modal -->
</div> <!-- /.select-menu-modal-holder -->
</div> <!-- /.select-menu -->
</form>
</li>
<li>
<div class="js-toggler-container js-social-container starring-container ">
<a href="/vim-jp/vital.vim/unstar"
class="minibutton with-count js-toggler-target star-button starred upwards"
title="Unstar this repository" data-remote="true" data-method="post" rel="nofollow">
<span class="octicon octicon-star-delete"></span><span class="text">Unstar</span>
</a>
<a href="/vim-jp/vital.vim/star"
class="minibutton with-count js-toggler-target star-button unstarred upwards"
title="Star this repository" data-remote="true" data-method="post" rel="nofollow">
<span class="octicon octicon-star"></span><span class="text">Star</span>
</a>
<a class="social-count js-social-count" href="/vim-jp/vital.vim/stargazers">
79
</a>
</div>
</li>
<li>
<a href="/vim-jp/vital.vim/fork" class="minibutton with-count js-toggler-target fork-button lighter upwards" title="Fork this repo" rel="facebox nofollow">
<span class="octicon octicon-git-branch-create"></span><span class="text">Fork</span>
</a>
<a href="/vim-jp/vital.vim/network" class="social-count">26</a>
</li>
</ul>
<h1 itemscope itemtype="http://data-vocabulary.org/Breadcrumb" class="entry-title public">
<span class="repo-label"><span>public</span></span>
<span class="mega-octicon octicon-repo"></span>
<span class="author">
<a href="/vim-jp" class="url fn" itemprop="url" rel="author"><span itemprop="title">vim-jp</span></a>
</span>
<span class="repohead-name-divider">/</span>
<strong><a href="/vim-jp/vital.vim" class="js-current-repository js-repo-home-link">vital.vim</a></strong>
<span class="page-context-loader">
<img alt="Octocat-spinner-32" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</span>
</h1>
</div><!-- /.container -->
</div><!-- /.repohead -->
<div class="container">
<div class="repository-with-sidebar repo-container ">
<div class="repository-sidebar">
<div class="sunken-menu vertical-right repo-nav js-repo-nav js-repository-container-pjax js-octicon-loaders">
<div class="sunken-menu-contents">
<ul class="sunken-menu-group">
<li class="tooltipped leftwards" title="Code">
<a href="/vim-jp/vital.vim" aria-label="Code" class="selected js-selected-navigation-item sunken-menu-item" data-gotokey="c" data-pjax="true" data-selected-links="repo_source repo_downloads repo_commits repo_tags repo_branches /vim-jp/vital.vim">
<span class="octicon octicon-code"></span> <span class="full-word">Code</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Issues">
<a href="/vim-jp/vital.vim/issues" aria-label="Issues" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-gotokey="i" data-selected-links="repo_issues /vim-jp/vital.vim/issues">
<span class="octicon octicon-issue-opened"></span> <span class="full-word">Issues</span>
<span class='counter'>28</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Pull Requests">
<a href="/vim-jp/vital.vim/pulls" aria-label="Pull Requests" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-gotokey="p" data-selected-links="repo_pulls /vim-jp/vital.vim/pulls">
<span class="octicon octicon-git-pull-request"></span> <span class="full-word">Pull Requests</span>
<span class='counter'>4</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Wiki">
<a href="/vim-jp/vital.vim/wiki" aria-label="Wiki" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="repo_wiki /vim-jp/vital.vim/wiki">
<span class="octicon octicon-book"></span> <span class="full-word">Wiki</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
</ul>
<div class="sunken-menu-separator"></div>
<ul class="sunken-menu-group">
<li class="tooltipped leftwards" title="Pulse">
<a href="/vim-jp/vital.vim/pulse" aria-label="Pulse" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="pulse /vim-jp/vital.vim/pulse">
<span class="octicon octicon-pulse"></span> <span class="full-word">Pulse</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Graphs">
<a href="/vim-jp/vital.vim/graphs" aria-label="Graphs" class="js-selected-navigation-item sunken-menu-item" data-pjax="true" data-selected-links="repo_graphs repo_contributors /vim-jp/vital.vim/graphs">
<span class="octicon octicon-graph"></span> <span class="full-word">Graphs</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
<li class="tooltipped leftwards" title="Network">
<a href="/vim-jp/vital.vim/network" aria-label="Network" class="js-selected-navigation-item sunken-menu-item js-disable-pjax" data-selected-links="repo_network /vim-jp/vital.vim/network">
<span class="octicon octicon-git-branch"></span> <span class="full-word">Network</span>
<img alt="Octocat-spinner-32" class="mini-loader" height="16" src="https://github.global.ssl.fastly.net/images/spinners/octocat-spinner-32.gif" width="16" />
</a> </li>
</ul>
</div>
</div>
<div class="only-with-full-nav">
<div class="clone-url "
data-protocol-type="http"
data-url="/users/set_protocol?protocol_selector=http&amp;protocol_type=push">
<h3><strong>HTTPS</strong> clone URL</h3>
<div class="clone-url-box">
<input type="text" class="clone js-url-field"
value="https://github.com/vim-jp/vital.vim.git" readonly="readonly">
<span class="js-zeroclipboard url-box-clippy minibutton zeroclipboard-button" data-clipboard-text="https://github.com/vim-jp/vital.vim.git" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
</div>
</div>
<div class="clone-url open"
data-protocol-type="ssh"
data-url="/users/set_protocol?protocol_selector=ssh&amp;protocol_type=push">
<h3><strong>SSH</strong> clone URL</h3>
<div class="clone-url-box">
<input type="text" class="clone js-url-field"
value="git@github.com:vim-jp/vital.vim.git" readonly="readonly">
<span class="js-zeroclipboard url-box-clippy minibutton zeroclipboard-button" data-clipboard-text="git@github.com:vim-jp/vital.vim.git" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
</div>
</div>
<div class="clone-url "
data-protocol-type="subversion"
data-url="/users/set_protocol?protocol_selector=subversion&amp;protocol_type=push">
<h3><strong>Subversion</strong> checkout URL</h3>
<div class="clone-url-box">
<input type="text" class="clone js-url-field"
value="https://github.com/vim-jp/vital.vim" readonly="readonly">
<span class="js-zeroclipboard url-box-clippy minibutton zeroclipboard-button" data-clipboard-text="https://github.com/vim-jp/vital.vim" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
</div>
</div>
<p class="clone-options">You can clone with
<a href="#" class="js-clone-selector" data-protocol="http">HTTPS</a>,
<a href="#" class="js-clone-selector" data-protocol="ssh">SSH</a>,
or <a href="#" class="js-clone-selector" data-protocol="subversion">Subversion</a>.
<span class="octicon help tooltipped upwards" title="Get help on which URL is right for you.">
<a href="https://help.github.com/articles/which-remote-url-should-i-use">
<span class="octicon octicon-question"></span>
</a>
</span>
</p>
<a href="http://windows.github.com" class="minibutton sidebar-button">
<span class="octicon octicon-device-desktop"></span>
Clone in Desktop
</a>
<a href="/vim-jp/vital.vim/archive/master.zip"
class="minibutton sidebar-button"
title="Download this repository as a zip file"
rel="nofollow">
<span class="octicon octicon-cloud-download"></span>
Download ZIP
</a>
</div>
</div><!-- /.repository-sidebar -->
<div id="js-repo-pjax-container" class="repository-content context-loader-container" data-pjax-container>
<!-- blob contrib key: blob_contributors:v21:8865196e6c233067ca43f509eaa36ae4 -->
<p title="This is a placeholder element" class="js-history-link-replace hidden"></p>
<a href="/vim-jp/vital.vim/find/master" data-pjax data-hotkey="t" class="js-show-file-finder" style="display:none">Show File Finder</a>
<div class="file-navigation">
<div class="select-menu js-menu-container js-select-menu" >
<span class="minibutton select-menu-button js-menu-target" data-hotkey="w"
data-master-branch="master"
data-ref="master"
role="button" aria-label="Switch branches or tags" tabindex="0">
<span class="octicon octicon-git-branch"></span>
<i>branch:</i>
<span class="js-select-button">master</span>
</span>
<div class="select-menu-modal-holder js-menu-content js-navigation-container" data-pjax>
<div class="select-menu-modal">
<div class="select-menu-header">
<span class="select-menu-title">Switch branches/tags</span>
<span class="octicon octicon-remove-close js-menu-close"></span>
</div> <!-- /.select-menu-header -->
<div class="select-menu-filters">
<div class="select-menu-text-filter">
<input type="text" aria-label="Find or create a branch…" id="context-commitish-filter-field" class="js-filterable-field js-navigation-enable" placeholder="Find or create a branch…">
</div>
<div class="select-menu-tabs">
<ul>
<li class="select-menu-tab">
<a href="#" data-tab-filter="branches" class="js-select-menu-tab">Branches</a>
</li>
<li class="select-menu-tab">
<a href="#" data-tab-filter="tags" class="js-select-menu-tab">Tags</a>
</li>
</ul>
</div><!-- /.select-menu-tabs -->
</div><!-- /.select-menu-filters -->
<div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="branches">
<div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/Data.Closure/autoload/vital/__latest__/ProcessManager.vim"
data-name="Data.Closure"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="Data.Closure">Data.Closure</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/git_submodule/autoload/vital/__latest__/ProcessManager.vim"
data-name="git_submodule"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="git_submodule">git_submodule</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/logger/autoload/vital/__latest__/ProcessManager.vim"
data-name="logger"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="logger">logger</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item selected">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/master/autoload/vital/__latest__/ProcessManager.vim"
data-name="master"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="master">master</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/optional-prelude/autoload/vital/__latest__/ProcessManager.vim"
data-name="optional-prelude"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="optional-prelude">optional-prelude</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/sqlite-processmanager-wip/autoload/vital/__latest__/ProcessManager.vim"
data-name="sqlite-processmanager-wip"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="sqlite-processmanager-wip">sqlite-processmanager-wip</a>
</div> <!-- /.select-menu-item -->
<div class="select-menu-item js-navigation-item ">
<span class="select-menu-item-icon octicon octicon-check"></span>
<a href="/vim-jp/vital.vim/blob/sys.file/autoload/vital/__latest__/ProcessManager.vim"
data-name="sys.file"
data-skip-pjax="true"
rel="nofollow"
class="js-navigation-open select-menu-item-text js-select-button-text css-truncate-target"
title="sys.file">sys.file</a>
</div> <!-- /.select-menu-item -->
</div>
<form accept-charset="UTF-8" action="/vim-jp/vital.vim/branches" class="js-create-branch select-menu-item select-menu-new-item-form js-navigation-item js-new-item-form" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="QJ+IADlDg9SxDImNEnlVQuqnrERp2WaGGsoyvKtaTk4=" /></div>
<span class="octicon octicon-git-branch-create select-menu-item-icon"></span>
<div class="select-menu-item-text">
<h4>Create branch: <span class="js-new-item-name"></span></h4>
<span class="description">from ‘master’</span>
</div>
<input type="hidden" name="name" id="name" class="js-new-item-value">
<input type="hidden" name="branch" id="branch" value="master" />
<input type="hidden" name="path" id="path" value="autoload/vital/__latest__/ProcessManager.vim" />
</form> <!-- /.select-menu-item -->
</div> <!-- /.select-menu-list -->
<div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="tags">
<div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
</div>
<div class="select-menu-no-results">Nothing to show</div>
</div> <!-- /.select-menu-list -->
</div> <!-- /.select-menu-modal -->
</div> <!-- /.select-menu-modal-holder -->
</div> <!-- /.select-menu -->
<div class="breadcrumb">
<span class='repo-root js-repo-root'><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/vim-jp/vital.vim" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">vital.vim</span></a></span></span><span class="separator"> / </span><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/vim-jp/vital.vim/tree/master/autoload" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">autoload</span></a></span><span class="separator"> / </span><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/vim-jp/vital.vim/tree/master/autoload/vital" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">vital</span></a></span><span class="separator"> / </span><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/vim-jp/vital.vim/tree/master/autoload/vital/__latest__" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">__latest__</span></a></span><span class="separator"> / </span><strong class="final-path">ProcessManager.vim</strong> <span class="js-zeroclipboard minibutton zeroclipboard-button" data-clipboard-text="autoload/vital/__latest__/ProcessManager.vim" data-copied-hint="copied!" title="copy to clipboard"><span class="octicon octicon-clippy"></span></span>
</div>
</div>
<div class="commit file-history-tease">
<img class="main-avatar" height="24" src="https://1.gravatar.com/avatar/d9d0ceb387e3b6de5c4562af78e8a910?d=https%3A%2F%2Fidenticons.github.com%2F0fc780bb04e74ce5ed154d2e49cfe2fd.png&amp;r=x&amp;s=140" width="24" />
<span class="author"><a href="/ujihisa" rel="author">ujihisa</a></span>
<time class="js-relative-date" datetime="2013-12-21T20:30:11-08:00" title="2013-12-21 20:30:11">December 21, 2013</time>
<div class="commit-title">
<a href="/vim-jp/vital.vim/commit/240d2c93ff042c7afd291cdb301c0c1004136a73" class="message" data-pjax="true" title="ProcessManager: cosmetic change">ProcessManager: cosmetic change</a>
</div>
<div class="participation">
<p class="quickstat"><a href="#blob_contributors_box" rel="facebox"><strong>4</strong> contributors</a></p>
<a class="avatar tooltipped downwards" title="ujihisa" href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim?author=ujihisa"><img height="20" src="https://1.gravatar.com/avatar/d9d0ceb387e3b6de5c4562af78e8a910?d=https%3A%2F%2Fidenticons.github.com%2F0fc780bb04e74ce5ed154d2e49cfe2fd.png&amp;r=x&amp;s=140" width="20" /></a>
<a class="avatar tooltipped downwards" title="mattn" href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim?author=mattn"><img height="20" src="https://2.gravatar.com/avatar/1ba93fd9e39ebf48777f217c38e768fd?d=https%3A%2F%2Fidenticons.github.com%2F70bb83c9272e6c4bc6e83e0a55c7c9c3.png&amp;r=x&amp;s=140" width="20" /></a>
<a class="avatar tooltipped downwards" title="ichizok" href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim?author=ichizok"><img height="20" src="https://2.gravatar.com/avatar/9b780db659a9a657e775b07521be3efc?d=https%3A%2F%2Fidenticons.github.com%2Fa8a23399cfd9dee3779fad0970ec23dc.png&amp;r=x&amp;s=140" width="20" /></a>
<a class="avatar tooltipped downwards" title="alpaca-tc" href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim?author=alpaca-tc"><img height="20" src="https://1.gravatar.com/avatar/c2fe23111675890bf8bc59afb312990e?d=https%3A%2F%2Fidenticons.github.com%2F8e3d7e94dcb83a1fda7307b9f75b186c.png&amp;r=x&amp;s=140" width="20" /></a>
</div>
<div id="blob_contributors_box" style="display:none">
<h2 class="facebox-header">Users who have contributed to this file</h2>
<ul class="facebox-user-list">
<li class="facebox-user-list-item">
<img height="24" src="https://1.gravatar.com/avatar/d9d0ceb387e3b6de5c4562af78e8a910?d=https%3A%2F%2Fidenticons.github.com%2F0fc780bb04e74ce5ed154d2e49cfe2fd.png&amp;r=x&amp;s=140" width="24" />
<a href="/ujihisa">ujihisa</a>
</li>
<li class="facebox-user-list-item">
<img height="24" src="https://2.gravatar.com/avatar/1ba93fd9e39ebf48777f217c38e768fd?d=https%3A%2F%2Fidenticons.github.com%2F70bb83c9272e6c4bc6e83e0a55c7c9c3.png&amp;r=x&amp;s=140" width="24" />
<a href="/mattn">mattn</a>
</li>
<li class="facebox-user-list-item">
<img height="24" src="https://2.gravatar.com/avatar/9b780db659a9a657e775b07521be3efc?d=https%3A%2F%2Fidenticons.github.com%2Fa8a23399cfd9dee3779fad0970ec23dc.png&amp;r=x&amp;s=140" width="24" />
<a href="/ichizok">ichizok</a>
</li>
<li class="facebox-user-list-item">
<img height="24" src="https://1.gravatar.com/avatar/c2fe23111675890bf8bc59afb312990e?d=https%3A%2F%2Fidenticons.github.com%2F8e3d7e94dcb83a1fda7307b9f75b186c.png&amp;r=x&amp;s=140" width="24" />
<a href="/alpaca-tc">alpaca-tc</a>
</li>
</ul>
</div>
</div>
<div id="files" class="bubble">
<div class="file">
<div class="meta">
<div class="info">
<span class="icon"><b class="octicon octicon-file-text"></b></span>
<span class="mode" title="File Mode">file</span>
<span>125 lines (103 sloc)</span>
<span>2.881 kb</span>
</div>
<div class="actions">
<div class="button-group">
<a class="minibutton tooltipped leftwards"
href="http://windows.github.com" title="Open this file in GitHub for Windows">
<span class="octicon octicon-device-desktop"></span> Open
</a>
<a class="minibutton"
href="/vim-jp/vital.vim/edit/master/autoload/vital/__latest__/ProcessManager.vim"
data-method="post" rel="nofollow" data-hotkey="e">Edit</a>
<a href="/vim-jp/vital.vim/raw/master/autoload/vital/__latest__/ProcessManager.vim" class="button minibutton " id="raw-url">Raw</a>
<a href="/vim-jp/vital.vim/blame/master/autoload/vital/__latest__/ProcessManager.vim" class="button minibutton ">Blame</a>
<a href="/vim-jp/vital.vim/commits/master/autoload/vital/__latest__/ProcessManager.vim" class="button minibutton " rel="nofollow">History</a>
</div><!-- /.button-group -->
<a class="minibutton danger empty-icon tooltipped downwards"
href="/vim-jp/vital.vim/delete/master/autoload/vital/__latest__/ProcessManager.vim"
title=""
data-method="post" data-test-id="delete-blob-file" rel="nofollow">
Delete
</a>
</div><!-- /.actions -->
</div>
<div class="blob-wrapper data type-viml js-blob-data">
<table class="file-code file-diff">
<tr class="file-code-line">
<td class="blob-line-nums">
<span id="L1" rel="#L1">1</span>
<span id="L2" rel="#L2">2</span>
<span id="L3" rel="#L3">3</span>
<span id="L4" rel="#L4">4</span>
<span id="L5" rel="#L5">5</span>
<span id="L6" rel="#L6">6</span>
<span id="L7" rel="#L7">7</span>
<span id="L8" rel="#L8">8</span>
<span id="L9" rel="#L9">9</span>
<span id="L10" rel="#L10">10</span>
<span id="L11" rel="#L11">11</span>
<span id="L12" rel="#L12">12</span>
<span id="L13" rel="#L13">13</span>
<span id="L14" rel="#L14">14</span>
<span id="L15" rel="#L15">15</span>
<span id="L16" rel="#L16">16</span>
<span id="L17" rel="#L17">17</span>
<span id="L18" rel="#L18">18</span>
<span id="L19" rel="#L19">19</span>
<span id="L20" rel="#L20">20</span>
<span id="L21" rel="#L21">21</span>
<span id="L22" rel="#L22">22</span>
<span id="L23" rel="#L23">23</span>
<span id="L24" rel="#L24">24</span>
<span id="L25" rel="#L25">25</span>
<span id="L26" rel="#L26">26</span>
<span id="L27" rel="#L27">27</span>
<span id="L28" rel="#L28">28</span>
<span id="L29" rel="#L29">29</span>
<span id="L30" rel="#L30">30</span>
<span id="L31" rel="#L31">31</span>
<span id="L32" rel="#L32">32</span>
<span id="L33" rel="#L33">33</span>
<span id="L34" rel="#L34">34</span>
<span id="L35" rel="#L35">35</span>
<span id="L36" rel="#L36">36</span>
<span id="L37" rel="#L37">37</span>
<span id="L38" rel="#L38">38</span>
<span id="L39" rel="#L39">39</span>
<span id="L40" rel="#L40">40</span>
<span id="L41" rel="#L41">41</span>
<span id="L42" rel="#L42">42</span>
<span id="L43" rel="#L43">43</span>
<span id="L44" rel="#L44">44</span>
<span id="L45" rel="#L45">45</span>
<span id="L46" rel="#L46">46</span>
<span id="L47" rel="#L47">47</span>
<span id="L48" rel="#L48">48</span>
<span id="L49" rel="#L49">49</span>
<span id="L50" rel="#L50">50</span>
<span id="L51" rel="#L51">51</span>
<span id="L52" rel="#L52">52</span>
<span id="L53" rel="#L53">53</span>
<span id="L54" rel="#L54">54</span>
<span id="L55" rel="#L55">55</span>
<span id="L56" rel="#L56">56</span>
<span id="L57" rel="#L57">57</span>
<span id="L58" rel="#L58">58</span>
<span id="L59" rel="#L59">59</span>
<span id="L60" rel="#L60">60</span>
<span id="L61" rel="#L61">61</span>
<span id="L62" rel="#L62">62</span>
<span id="L63" rel="#L63">63</span>
<span id="L64" rel="#L64">64</span>
<span id="L65" rel="#L65">65</span>
<span id="L66" rel="#L66">66</span>
<span id="L67" rel="#L67">67</span>
<span id="L68" rel="#L68">68</span>
<span id="L69" rel="#L69">69</span>
<span id="L70" rel="#L70">70</span>
<span id="L71" rel="#L71">71</span>
<span id="L72" rel="#L72">72</span>
<span id="L73" rel="#L73">73</span>
<span id="L74" rel="#L74">74</span>
<span id="L75" rel="#L75">75</span>
<span id="L76" rel="#L76">76</span>
<span id="L77" rel="#L77">77</span>
<span id="L78" rel="#L78">78</span>
<span id="L79" rel="#L79">79</span>
<span id="L80" rel="#L80">80</span>
<span id="L81" rel="#L81">81</span>
<span id="L82" rel="#L82">82</span>
<span id="L83" rel="#L83">83</span>
<span id="L84" rel="#L84">84</span>
<span id="L85" rel="#L85">85</span>
<span id="L86" rel="#L86">86</span>
<span id="L87" rel="#L87">87</span>
<span id="L88" rel="#L88">88</span>
<span id="L89" rel="#L89">89</span>
<span id="L90" rel="#L90">90</span>
<span id="L91" rel="#L91">91</span>
<span id="L92" rel="#L92">92</span>
<span id="L93" rel="#L93">93</span>
<span id="L94" rel="#L94">94</span>
<span id="L95" rel="#L95">95</span>
<span id="L96" rel="#L96">96</span>
<span id="L97" rel="#L97">97</span>
<span id="L98" rel="#L98">98</span>
<span id="L99" rel="#L99">99</span>
<span id="L100" rel="#L100">100</span>
<span id="L101" rel="#L101">101</span>
<span id="L102" rel="#L102">102</span>
<span id="L103" rel="#L103">103</span>
<span id="L104" rel="#L104">104</span>
<span id="L105" rel="#L105">105</span>
<span id="L106" rel="#L106">106</span>
<span id="L107" rel="#L107">107</span>
<span id="L108" rel="#L108">108</span>
<span id="L109" rel="#L109">109</span>
<span id="L110" rel="#L110">110</span>
<span id="L111" rel="#L111">111</span>
<span id="L112" rel="#L112">112</span>
<span id="L113" rel="#L113">113</span>
<span id="L114" rel="#L114">114</span>
<span id="L115" rel="#L115">115</span>
<span id="L116" rel="#L116">116</span>
<span id="L117" rel="#L117">117</span>
<span id="L118" rel="#L118">118</span>
<span id="L119" rel="#L119">119</span>
<span id="L120" rel="#L120">120</span>
<span id="L121" rel="#L121">121</span>
<span id="L122" rel="#L122">122</span>
<span id="L123" rel="#L123">123</span>
<span id="L124" rel="#L124">124</span>
</td>
<td class="blob-line-code">
<div class="code-body highlight"><pre><div class='line' id='LC1'><span class="k">let</span> <span class="k">s</span>:save_cpo <span class="p">=</span> &amp;<span class="nb">cpo</span></div><div class='line' id='LC2'><span class="k">set</span> <span class="nb">cpo</span>&amp;<span class="k">vim</span></div><div class='line' id='LC3'><br/></div><div class='line' id='LC4'><span class="k">let</span> <span class="k">s</span>:_processes <span class="p">=</span> {}</div><div class='line' id='LC5'><br/></div><div class='line' id='LC6'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:_vital_loaded<span class="p">(</span>V<span class="p">)</span></div><div class='line' id='LC7'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">s</span>:V <span class="p">=</span> <span class="k">a</span>:V</div><div class='line' id='LC8'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">s</span>:S <span class="p">=</span> <span class="k">s</span>:V.import<span class="p">(</span><span class="s1">&#39;Data.String&#39;</span><span class="p">)</span></div><div class='line' id='LC9'><span class="k">endfunction</span></div><div class='line' id='LC10'><br/></div><div class='line' id='LC11'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:_vital_depends<span class="p">()</span></div><div class='line' id='LC12'>&nbsp;&nbsp;<span class="k">return</span> [<span class="s1">&#39;Data.String&#39;</span>]</div><div class='line' id='LC13'><span class="k">endfunction</span></div><div class='line' id='LC14'><br/></div><div class='line' id='LC15'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:is_available<span class="p">()</span></div><div class='line' id='LC16'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:V.has_vimproc<span class="p">()</span></div><div class='line' id='LC17'><span class="k">endfunction</span></div><div class='line' id='LC18'><br/></div><div class='line' id='LC19'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:touch<span class="p">(</span>name<span class="p">,</span> cmd<span class="p">)</span></div><div class='line' id='LC20'>&nbsp;&nbsp;<span class="k">if</span> has_key<span class="p">(</span><span class="k">s</span>:_processes<span class="p">,</span> <span class="k">a</span>:name<span class="p">)</span></div><div class='line' id='LC21'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="s1">&#39;existing&#39;</span></div><div class='line' id='LC22'>&nbsp;&nbsp;<span class="k">else</span></div><div class='line' id='LC23'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> vimproc#popen3<span class="p">(</span><span class="k">a</span>:cmd<span class="p">)</span></div><div class='line' id='LC24'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> <span class="k">s</span>:_processes[<span class="k">a</span>:name] <span class="p">=</span> <span class="k">p</span></div><div class='line' id='LC25'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="s1">&#39;new&#39;</span></div><div class='line' id='LC26'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC27'><span class="k">endfunction</span></div><div class='line' id='LC28'><br/></div><div class='line' id='LC29'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:stop<span class="p">(</span><span class="k">i</span><span class="p">)</span></div><div class='line' id='LC30'>&nbsp;&nbsp;<span class="k">echomsg</span> <span class="s2">&quot;Vital.ProcessManager.stop() is deprecated! Please use kill() or term() instead.&quot;</span></div><div class='line' id='LC31'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:kill<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC32'><span class="k">endfunction</span></div><div class='line' id='LC33'><br/></div><div class='line' id='LC34'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:_stop<span class="p">(</span><span class="k">i</span><span class="p">,</span> ...<span class="p">)</span></div><div class='line' id='LC35'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC36'>&nbsp;&nbsp;<span class="k">call</span> <span class="k">p</span>.kill<span class="p">(</span><span class="k">get</span><span class="p">(</span><span class="k">a</span>:<span class="m">000</span><span class="p">,</span> <span class="m">0</span><span class="p">,</span> <span class="m">0</span><span class="p">)</span> ? <span class="k">g</span>:vimproc#SIGKILL : <span class="k">g</span>:vimproc#SIGTERM<span class="p">)</span></div><div class='line' id='LC37'><span class="c"> &quot; call p.waitpid()</span></div><div class='line' id='LC38'>&nbsp;&nbsp;unlet <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC39'><span class="k">endfunction</span></div><div class='line' id='LC40'><br/></div><div class='line' id='LC41'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:<span class="nb">term</span><span class="p">(</span><span class="k">i</span><span class="p">)</span></div><div class='line' id='LC42'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:_stop<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">,</span> <span class="m">0</span><span class="p">)</span></div><div class='line' id='LC43'><span class="k">endfunction</span></div><div class='line' id='LC44'><br/></div><div class='line' id='LC45'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:kill<span class="p">(</span><span class="k">i</span><span class="p">)</span></div><div class='line' id='LC46'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:_stop<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">,</span> <span class="m">1</span><span class="p">)</span></div><div class='line' id='LC47'><span class="k">endfunction</span></div><div class='line' id='LC48'><br/></div><div class='line' id='LC49'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:read<span class="p">(</span><span class="k">i</span><span class="p">,</span> endpatterns<span class="p">)</span></div><div class='line' id='LC50'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:read_wait<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">,</span> <span class="m">0</span>.<span class="m">05</span><span class="p">,</span> <span class="k">a</span>:endpatterns<span class="p">)</span></div><div class='line' id='LC51'><span class="k">endfunction</span></div><div class='line' id='LC52'><br/></div><div class='line' id='LC53'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:read_wait<span class="p">(</span><span class="k">i</span><span class="p">,</span> wait<span class="p">,</span> endpatterns<span class="p">)</span></div><div class='line' id='LC54'>&nbsp;&nbsp;<span class="k">if</span> <span class="p">!</span>has_key<span class="p">(</span><span class="k">s</span>:_processes<span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC55'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">throw</span> printf<span class="p">(</span><span class="s2">&quot;ProcessManager doesn&#39;t know about %s&quot;</span><span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC56'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC57'><br/></div><div class='line' id='LC58'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC59'><br/></div><div class='line' id='LC60'>&nbsp;&nbsp;<span class="k">if</span> <span class="k">s</span>:status<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">)</span> <span class="p">==</span># <span class="s1">&#39;inactive&#39;</span></div><div class='line' id='LC61'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> [<span class="k">p</span>.stdout.read<span class="p">(),</span> <span class="k">p</span>.stderr.read<span class="p">(),</span> <span class="s1">&#39;inactive&#39;</span>]</div><div class='line' id='LC62'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC63'><br/></div><div class='line' id='LC64'>&nbsp;&nbsp;<span class="k">let</span> out_memo <span class="p">=</span> <span class="s1">&#39;&#39;</span></div><div class='line' id='LC65'>&nbsp;&nbsp;<span class="k">let</span> err_memo <span class="p">=</span> <span class="s1">&#39;&#39;</span></div><div class='line' id='LC66'>&nbsp;&nbsp;<span class="k">let</span> lastchanged <span class="p">=</span> reltime<span class="p">()</span></div><div class='line' id='LC67'>&nbsp;&nbsp;<span class="k">while</span> <span class="m">1</span></div><div class='line' id='LC68'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> [<span class="k">x</span><span class="p">,</span> <span class="k">y</span>] <span class="p">=</span> [<span class="k">p</span>.stdout.read<span class="p">(),</span> <span class="k">p</span>.stderr.read<span class="p">()</span>]</div><div class='line' id='LC69'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="k">x</span> <span class="p">==</span># <span class="s1">&#39;&#39;</span> &amp;&amp; <span class="k">y</span> <span class="p">==</span># <span class="s1">&#39;&#39;</span></div><div class='line' id='LC70'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> str2float<span class="p">(</span>reltimestr<span class="p">(</span>reltime<span class="p">(</span>lastchanged<span class="p">)))</span> <span class="p">&gt;</span> <span class="k">a</span>:wait</div><div class='line' id='LC71'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> [out_memo<span class="p">,</span> err_memo<span class="p">,</span> <span class="s1">&#39;timedout&#39;</span>]</div><div class='line' id='LC72'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC73'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">else</span></div><div class='line' id='LC74'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> lastchanged <span class="p">=</span> reltime<span class="p">()</span></div><div class='line' id='LC75'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> out_memo .<span class="p">=</span> <span class="k">x</span></div><div class='line' id='LC76'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">let</span> err_memo .<span class="p">=</span> <span class="k">y</span></div><div class='line' id='LC77'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">for</span> pattern <span class="k">in</span> <span class="k">a</span>:endpatterns</div><div class='line' id='LC78'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> out_memo <span class="p">=~</span> <span class="p">(</span><span class="s2">&quot;\\(^\\|\n\\)&quot;</span> . pattern<span class="p">)</span></div><div class='line' id='LC79'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> [<span class="k">s</span>:S.substitute_last<span class="p">(</span>out_memo<span class="p">,</span> pattern<span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">),</span> err_memo<span class="p">,</span> <span class="s1">&#39;matched&#39;</span>]</div><div class='line' id='LC80'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC81'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">endfor</span></div><div class='line' id='LC82'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC83'>&nbsp;&nbsp;<span class="k">endwhile</span></div><div class='line' id='LC84'><span class="k">endfunction</span></div><div class='line' id='LC85'><br/></div><div class='line' id='LC86'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:<span class="nb">write</span><span class="p">(</span><span class="k">i</span><span class="p">,</span> str<span class="p">)</span></div><div class='line' id='LC87'>&nbsp;&nbsp;<span class="k">if</span> <span class="p">!</span>has_key<span class="p">(</span><span class="k">s</span>:_processes<span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC88'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">throw</span> printf<span class="p">(</span><span class="s2">&quot;ProcessManager doesn&#39;t know about %s&quot;</span><span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC89'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC90'>&nbsp;&nbsp;<span class="k">if</span> <span class="k">s</span>:status<span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">)</span> <span class="p">==</span># <span class="s1">&#39;inactive&#39;</span></div><div class='line' id='LC91'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="s1">&#39;inactive&#39;</span></div><div class='line' id='LC92'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC93'><br/></div><div class='line' id='LC94'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC95'>&nbsp;&nbsp;<span class="k">call</span> <span class="k">p</span>.stdin.<span class="nb">write</span><span class="p">(</span><span class="k">a</span>:str<span class="p">)</span></div><div class='line' id='LC96'><br/></div><div class='line' id='LC97'>&nbsp;&nbsp;<span class="k">return</span> <span class="s1">&#39;active&#39;</span></div><div class='line' id='LC98'><span class="k">endfunction</span></div><div class='line' id='LC99'><br/></div><div class='line' id='LC100'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:writeln<span class="p">(</span><span class="k">i</span><span class="p">,</span> str<span class="p">)</span></div><div class='line' id='LC101'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:<span class="nb">write</span><span class="p">(</span><span class="k">a</span>:<span class="k">i</span><span class="p">,</span> <span class="k">a</span>:str . <span class="s2">&quot;\n&quot;</span><span class="p">)</span></div><div class='line' id='LC102'><span class="k">endfunction</span></div><div class='line' id='LC103'><br/></div><div class='line' id='LC104'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:status<span class="p">(</span><span class="k">i</span><span class="p">)</span></div><div class='line' id='LC105'>&nbsp;&nbsp;<span class="k">if</span> <span class="p">!</span>has_key<span class="p">(</span><span class="k">s</span>:_processes<span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC106'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">throw</span> printf<span class="p">(</span><span class="s2">&quot;ProcessManager doesn&#39;t know about %s&quot;</span><span class="p">,</span> <span class="k">a</span>:<span class="k">i</span><span class="p">)</span></div><div class='line' id='LC107'>&nbsp;&nbsp;<span class="k">endif</span></div><div class='line' id='LC108'>&nbsp;&nbsp;<span class="k">let</span> <span class="k">p</span> <span class="p">=</span> <span class="k">s</span>:_processes[<span class="k">a</span>:<span class="k">i</span>]</div><div class='line' id='LC109'><span class="c"> &quot; vimproc.kill isn&#39;t to stop but to ask for the current state.</span></div><div class='line' id='LC110'><span class="c"> &quot; return p.kill(0) ? &#39;inactive&#39; : &#39;active&#39;</span></div><div class='line' id='LC111'><span class="c"> &quot; ... checkpid() checks if the process is running AND does waitpid() in C,</span></div><div class='line' id='LC112'><span class="c"> &quot; so it solves zombie processes.</span></div><div class='line' id='LC113'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">get</span><span class="p">(</span><span class="k">p</span>.checkpid<span class="p">(),</span> <span class="m">0</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">)</span> <span class="p">==</span># <span class="s1">&#39;run&#39;</span></div><div class='line' id='LC114'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\ ? <span class="s1">&#39;active&#39;</span></div><div class='line' id='LC115'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\ : <span class="s1">&#39;inactive&#39;</span></div><div class='line' id='LC116'><span class="k">endfunction</span></div><div class='line' id='LC117'><br/></div><div class='line' id='LC118'><span class="k">function</span><span class="p">!</span> <span class="k">s</span>:debug_processes<span class="p">()</span></div><div class='line' id='LC119'>&nbsp;&nbsp;<span class="k">return</span> <span class="k">s</span>:_processes</div><div class='line' id='LC120'><span class="k">endfunction</span></div><div class='line' id='LC121'><br/></div><div class='line' id='LC122'><span class="k">let</span> &amp;<span class="nb">cpo</span> <span class="p">=</span> <span class="k">s</span>:save_cpo</div><div class='line' id='LC123'>unlet <span class="k">s</span>:save_cpo</div><div class='line' id='LC124'><span class="c">&quot; vim:set et ts=2 sts=2 sw=2 tw=0:</span></div></pre></div>
</td>
</tr>
</table>
</div>
</div>
</div>
<a href="#jump-to-line" rel="facebox[.linejump]" data-hotkey="l" class="js-jump-to-line" style="display:none">Jump to Line</a>
<div id="jump-to-line" style="display:none">
<form accept-charset="UTF-8" class="js-jump-to-line-form">
<input class="linejump-input js-jump-to-line-field" type="text" placeholder="Jump to line&hellip;" autofocus>
<button type="submit" class="button">Go</button>
</form>
</div>
</div>
</div><!-- /.repo-container -->
<div class="modal-backdrop"></div>
</div><!-- /.container -->
</div><!-- /.site -->
</div><!-- /.wrapper -->
<div class="container">
<div class="site-footer">
<ul class="site-footer-links right">
<li><a href="https://status.github.com/">Status</a></li>
<li><a href="http://developer.github.com">API</a></li>
<li><a href="http://training.github.com">Training</a></li>
<li><a href="http://shop.github.com">Shop</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/about">About</a></li>
</ul>
<a href="/">
<span class="mega-octicon octicon-mark-github" title="GitHub"></span>
</a>
<ul class="site-footer-links">
<li>&copy; 2014 <span title="0.03660s from github-fe122-cp1-prd.iad.github.net">GitHub</span>, Inc.</li>
<li><a href="/site/terms">Terms</a></li>
<li><a href="/site/privacy">Privacy</a></li>
<li><a href="/security">Security</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
</div><!-- /.site-footer -->
</div><!-- /.container -->
<div class="fullscreen-overlay js-fullscreen-overlay" id="fullscreen_overlay">
<div class="fullscreen-container js-fullscreen-container">
<div class="textarea-wrap">
<textarea name="fullscreen-contents" id="fullscreen-contents" class="js-fullscreen-contents" placeholder="" data-suggester="fullscreen_suggester"></textarea>
<div class="suggester-container">
<div class="suggester fullscreen-suggester js-navigation-container" id="fullscreen_suggester"
data-url="/vim-jp/vital.vim/suggestions/commit">
</div>
</div>
</div>
</div>
<div class="fullscreen-sidebar">
<a href="#" class="exit-fullscreen js-exit-fullscreen tooltipped leftwards" title="Exit Zen Mode">
<span class="mega-octicon octicon-screen-normal"></span>
</a>
<a href="#" class="theme-switcher js-theme-switcher tooltipped leftwards"
title="Switch themes">
<span class="octicon octicon-color-mode"></span>
</a>
</div>
</div>
<div id="ajax-error-message" class="flash flash-error">
<span class="octicon octicon-alert"></span>
<a href="#" class="octicon octicon-remove-close close js-ajax-error-dismiss"></a>
Something went wrong with that request. Please try again.
</div>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment