From mboxrd@z Thu Jan 1 00:00:00 1970 Received: by 10.213.32.82 with SMTP id b18cs52756ebd; Sat, 10 Apr 2010 03:49:45 -0700 (PDT) Received: by 10.204.84.83 with SMTP id i19mr1391192bkl.175.1270896585623; Sat, 10 Apr 2010 03:49:45 -0700 (PDT) Return-Path: Received: from rubyforge.org (rubyforge.org [205.234.109.19]) by mx.google.com with ESMTP id u10si4890597bkz.89.2010.04.10.03.49.45; Sat, 10 Apr 2010 03:49:45 -0700 (PDT) Received-SPF: pass (google.com: domain of sup-talk-bounces@rubyforge.org designates 205.234.109.19 as permitted sender) client-ip=205.234.109.19; Authentication-Results: mx.google.com; spf=pass (google.com: domain of sup-talk-bounces@rubyforge.org designates 205.234.109.19 as permitted sender) smtp.mail=sup-talk-bounces@rubyforge.org; dkim=neutral (body hash did not verify) header.i=@gmail.com Received: from rubyforge.org (rubyforge.org [127.0.0.1]) by rubyforge.org (Postfix) with ESMTP id DEAD43C8033; Sat, 10 Apr 2010 06:49:44 -0400 (EDT) Received: from mail-pv0-f178.google.com (mail-pv0-f178.google.com [74.125.83.178]) by rubyforge.org (Postfix) with ESMTP id BEDEE1858307 for ; Sat, 10 Apr 2010 06:47:37 -0400 (EDT) Received: by pvg4 with SMTP id 4so2642343pvg.23 for ; Sat, 10 Apr 2010 03:47:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:content-type:subject:from:to :date:message-id:user-agent:content-transfer-encoding; bh=QT0WPv1Tosiu19j5nutokuK2hVVAp9ABbSjNBDwhaMs=; b=eiXQYO53GMeZ5yJfe1jjgJUFQ/kqJwuALNSaoWEgo1rk7ID3u3bOVZFDuZdE3567Mx YcOT9r2JIQ+DwrzUdTCfZko2Gw/MhOEIZ24hkT6HeLdB1/5llC31XYp+LtX5wW787cB+ PT5uxzpwC9c8kaSx0j5ZRPp0TIBV3TLSstwfM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=content-type:subject:from:to:date:message-id:user-agent :content-transfer-encoding; b=t9l7Jn8knGE2Fw2ndt3EMmeb3L0It8Fo3FsWJcuuXSD98bgGCRcXDwiuoRrwrzsPJS sIIMItLVwIR4gr+e51LypI40wMzlj+K+juaqJFjNgLWynNn2fQnZ61ytpJcHMjbzunU1 4yzFa7/QBgODXfaFV8oDGCT455et/csTt1WJY= Received: by 10.114.3.40 with SMTP id 40mr1397330wac.124.1270895982325; Sat, 10 Apr 2010 03:39:42 -0700 (PDT) Received: from localhost ([203.110.240.41]) by mx.google.com with ESMTPS id 20sm1837076pzk.3.2010.04.10.03.39.40 (version=TLSv1/SSLv3 cipher=RC4-MD5); Sat, 10 Apr 2010 03:39:41 -0700 (PDT) From: Ramkumar Ramachandra To: sup-talk Date: Sat, 10 Apr 2010 16:07:21 +0530 Message-Id: <1270895815-sup-99@kytes> User-Agent: Sup/git Subject: [sup-talk] [PATCH 1/4] Add method to shell out asynchronously X-BeenThere: sup-talk@rubyforge.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: User & developer discussion of Sup List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: sup-talk-bounces@rubyforge.org Errors-To: sup-talk-bounces@rubyforge.org Add shell_out_async method to fork and detach the editor, and register the monitoring thread in PollManager. Signed-off-by: Ramkumar Ramachandra --- lib/sup/buffer.rb | 20 ++++++++++++++++++++ 1 files changed, 20 insertions(+), 0 deletions(-) diff --git a/lib/sup/buffer.rb b/lib/sup/buffer.rb index 5772bb0..25a2025 100644 --- a/lib/sup/buffer.rb +++ b/lib/sup/buffer.rb @@ -768,6 +768,26 @@ EOS @shelled = false end + def shell_out_async editor, file + @shelled = true + command = "#{editor} #{file.path}" + mtime = File.mtime file.path + + Ncurses.sync do + pid = Process.fork + if pid.nil? + exec(command) + else + pthread = Process.detach(pid) + PollManager.editor_loop_init pthread, file, mtime + end + Ncurses.stdscr.keypad 1 + Ncurses.refresh + Ncurses.curs_set 0 + end + @shelled = false + end + private def default_status_bar buf -- 1.7.0.4 _______________________________________________ sup-talk mailing list sup-talk@rubyforge.org http://rubyforge.org/mailman/listinfo/sup-talk