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.
next prev parent 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).