zsh-users
 help / color / mirror / code / Atom feed
From: Andrew Janke <janke@pobox.com>
To: Ray Andrews <rayandrews@eastlink.ca>, Zsh Users <zsh-users@zsh.org>
Subject: Re: 'run ahead' execution of script
Date: Tue, 24 Feb 2015 14:44:53 -0500	[thread overview]
Message-ID: <54ECD4B5.709@pobox.com> (raw)
In-Reply-To: <54ECCE79.9050809@eastlink.ca>

Yeah; the geany command's normal behavior isn't really suitable for a 
CLI-driven editing session like this. You probably do want `geany -i`.

Using an editor in a shell sequence like this requires the editor to 
have blocking behavior on a per file basis. The normal `geany` behavior 
is incompatible with it; if geany's already running it hands off the 
file and returns. This basically means you need the `-i` switch to do 
one process per file. Otherwise the lifetime of the shared geany editor 
process isn't tied to the individual file you're editing. Waiting on a 
file to be "closed" would be hard to implement with generality. Editors 
may not keep a file open or locked the entire time they're editing it; 
many work on swap files instead and periodically write out to the main 
file. That state is internal to the editor, and not necessarily exposed 
on the filesystem. The behavior is probably too editor-specific for zsh 
to do anything about it; there's no way for zsh to consistently know 
when an editor is "done" with a file. And you can't just have zsh wait 
for the existing geany process to exit; it may be working with other 
files and live beyond the time you spend editing this particular file.

IMHO the right approach for this would probably be to extend geany to 
provide a command that has the "edit a single file and block until it's 
closed" behavior that command line editor sequences like this require. 
If you wanted a quick and dirty one, you could write a wrapper script 
that fired up geany and polled `geany --list-documents` to figure out 
when you've closed the file.

Cheers,
Andrew



On 2/24/15 2:18 PM, Ray Andrews wrote:
> An interesting problem:
>
>   e ) edit $1; echo "Sourcing $1"; source $1; return 0 ;;
>
> ... that line from a function does just what it seems, edit a file, then
> source it. 'edit' has been various editors over time.  But I just
> tried changing 'edit' to 'geany', and something problematic happens:  The
> message and the sourcing happen before geany is closed, but *only* if
> the editor is already open in another window. zsh
> is executing the rest of the line while the editor is still open, as 
> if it
> thinks it should 'multitask' there.  It seems logical that it
> doesn't close an editor that it didn't open, OTOH there's no point in
> sourcing the file before it has been edited.  Can this be prevented?
> Again, I don't think that zsh should be expected to behave differently,
> however some way of forcing it to wait for the file (if not the entire 
> editor)
> to be closed in this situation would be useful.  Geany itself
> has an '-i' switch that forces a new process, but I'm wondering if zsh
> itself can handle that i.e. pause for a process to quit before continuing
> even if it didn't start it.  I appreciate that this might be impossible--
> a violation of the hierarchy.  It's just a point of interest.


  reply	other threads:[~2015-02-24 19:53 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-24 19:18 Ray Andrews
2015-02-24 19:44 ` Andrew Janke [this message]
2015-02-24 21:41   ` Ray Andrews
2015-02-25  2:21     ` Bart Schaefer
2015-02-25  2:46       ` Ray Andrews
2015-02-25  3:26         ` Andrew Janke
2015-02-25  5:09           ` Ray Andrews

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54ECD4B5.709@pobox.com \
    --to=janke@pobox.com \
    --cc=rayandrews@eastlink.ca \
    --cc=zsh-users@zsh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).