Ramkumar Ramachandra
2010-Apr-10 10:37 UTC
[sup-talk] [PATCH 1/4] Add method to shell out asynchronously
Add shell_out_async method to fork and detach the editor, and register
the monitoring thread in PollManager.
Signed-off-by: Ramkumar Ramachandra <artagnon at gmail.com>
---
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
Anirudh Sanjeev
2010-Apr-10 19:40 UTC
[sup-talk] [PATCH 1/4] Add method to shell out asynchronously
Some people (me for instance) use an editor in-shell. Even the default command that sup sets is "vim". Trying to launch an editor asynchronously in this manner might not work. Perhaps adding a custom option in config.yaml to launch editor asynchronously might be a better option, and also suggest sensible defaults. Thanks, Anirudh -- Senior Undergraduate Student, Indian Institute of Technology, Kharagpur http://anirudhsanjeev.org The Unix philosophy - Do one thing. Do it well. -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 197 bytes Desc: not available URL: <http://rubyforge.org/pipermail/sup-talk/attachments/20100411/6cbc78b4/attachment.bin>
Ramkumar Ramachandra
2010-Apr-10 20:12 UTC
[sup-talk] [PATCH 1/4] Add method to shell out asynchronously
On Sun, Apr 11, 2010 at 1:10 AM, Anirudh Sanjeev <anirudh at anirudhsanjeev.org> wrote:> Perhaps adding a custom option in config.yaml to launch editor > asynchronously might be a better option, and also suggest sensible > defaults.Did you even read the patch? That''s what I''ve done. From PATCH 4/4: + editor_daemon = $config[:editor_daemon] -- Ram
Anirudh Sanjeev
2010-Apr-10 20:21 UTC
[sup-talk] [PATCH 1/4] Add method to shell out asynchronously
Excerpts from Ramkumar Ramachandra''s message of Sun Apr 11 01:42:59 +0530 2010:> Did you even read the patch? That''s what I''ve done. From PATCH 4/4: > + editor_daemon = $config[:editor_daemon]Oh, I guess it does. I should''ve gone through it in better detail. My bad. Btw, I applied the patch and it seems to work great! --
Ramkumar Ramachandra
2010-Apr-11 02:50 UTC
[sup-talk] [PATCH 1/4] Add method to shell out asynchronously
> Btw, I applied the patch and it seems to work great!Thanks. Rendering is horribly broken though, and I have no experience whatsoever with Ncurses- can someone help me out there? -- Ram