2012/12/19 ridiculous_fish <[email protected]>:
> After running a command, some processing occurs on a background thread. When
> that's done, it notifies the main thread, which adds the item to the history.
> The earliest that the main thread can respond to the notification is in its
> main "event loop", which is a call to select(). So the history item only
> gets added after the next prompt is displayed.
>
What's the motivation for using another thread for adding history? I
guess this is due to performance consideration (writing to disk may
take some time), but perhaps we can add the history to $history in the
main thread, and write to disk in a thread. That way a preexec-like
event can be added, and a preexec-catching function can get the latest
history in $history[1] reliably.
The the availability of latest history item before it is executed is
crucial to the filename saving part of a fasd-like tool. Assuming a
preexec event implemented, it will look like:
function parse_and_save -e preexec
eval set args (echo $history[1] | tr \;\n ' ')
for a in $args
if test -f $a
save (readlink -f $a)
end
end
end
parse_and_save tries to re-expanded the last command (it uses an adhoc
method now, could be better), test for existing files (or
directories), and save their canonicalized file names (readlink -f is
only available in GNU coreutils, and there seems to be no easy
alternative for non-GNU users; but you get the point). These need to
be done as early as possible - preferably *before* the command is
actually executed. Otherwise, the major problem is that the current
directory may have changed, and there the re-expansions, file testing
will break.
> Incidentally, I believe this is why if you run 'exit', it doesn't show up in
> history.
--
Regards,
Cheer Xiao
------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
Fish-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/fish-users