(name 'CommandShell-dtl.65' message 'CommandShell 4.5.6

When processing a command in a CommandShell, inform any dependents to display the command line. If the command came from a transcript stream that already contains the command line, do not update it. This allows a command shell that is controlled programmatically to display the command line input in a shell window if the shell window is open.' id '086c0515-b84b-4e31-b6e5-3b923e000f61' date '15 September 2012' time '7:19:41.026 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.64' message 'When processing a command in a CommandShell, inform any dependents to display the command line. If the command came from a transcript stream that already contains the command line, do not update it. This allows a command shell that is controlled programmatically to display the command line input in a shell window if the shell window is open.' id '88a84965-ac75-433c-9c7a-791384c047a4' date '15 September 2012' time '7:14:01.702999999 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.63' message 'CommandShell 4.5.5

Address process synchronization issues exposed by unit tests.

An error pipeline stream is shared by multiple process proxies, so do not raise an error in PipeJunction>>closeErrorPipeline if the close fails.

Add a short (10 ms) delay ProxyPipeline>>value after each proxy is started in order to permit associated (Smalltalk) processes to be scheduled to service that proxy. When using AIO event driven streams, this permits a BufferedAsyncFileReadStream to start its event handler process.' id 'd29a1cd6-af65-472c-9e97-e9baff529e0d' date '29 August 2012' time '6:37:28.682 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.62' message 'CommandShell 4.5.5

Address process synchronization issues exposed by unit tests.

An error pipeline stream is shared by multiple process proxies, so do not raise an error in PipeJunction>>closeErrorPipeline if the close fails.

Add a short (10 ms) delay ProxyPipeline>>value after each proxy is started in order to permit associated (Smalltalk) processes to be scheduled to service that proxy. When using AIO event driven streams, this permits a BufferedAsyncFileReadStream to start its event handler process.' id 'e6abe1b7-cbee-4635-8bb1-e2f77f4c8ecf' date '29 August 2012' time '6:31:11.309 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.61' message 'CommandShell 4.5.4
Fix file handle leaks in unit tests' id '4b23e615-2417-4f73-b6cd-b9050cbfe6e7' date '24 April 2012' time '8:38:34.935 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.60' message 'CommandShell 4.5.3
Simplify a couple of tests, and avoid use of string intersection, which has been redefined in Pharo' id '3c8bc957-7b56-4b8f-b2d6-1ede7210867a' date '22 April 2012' time '5:08:17.272 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.59' message 'CommandShell 4.5.2

For Squeak 3.8 compatibility, use  #hasLiteral: rather than #sendsSelector: (thanks Bert Freudenberg).

If DeferredActionStandardSystemController is not present, use StandardSystemController. Newer Squeak versions do not require DeferredActionStandardSystemController because #addDeferredUIMessage: has been moved up to class Controller.' id 'f3a3eb96-44e5-4b69-af3f-20dbfb5049eb' date '3 February 2012' time '10:26:57.544 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.58' message 'CommandShell 4.5.1

Update RemoteTask to use Fuel for serialization if present in the image.

Fuel is faster than reference stream serialization, and successfully serializes large integers (this does not work properly with a reference stream, see http://bugs.squeak.org/view.php?id=7679).' id '9790c3f5-910c-48d8-b89c-2f4df450f9b0' date '27 November 2011' time '1:09:55.452 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.57' message 'CommandShell 4.5.0

Update RemoteTask to support asynchronous task completion notification. Eliminate redundant buffering of input stream, and read the result object directly from the pipe reader upon notification of data available from the remote image. Processing no longer waits for remote image exit, and does not read remote data into intermediate buffers and streams.

Add #do:whenComplete: to schedule a remote task (image forked in separate OS process) with results handled in a completion block. The supervisory Squeak image carries none of the processing load during remote task execution.

Support forkSqueak with AIO event handling to provide notification of data available from remote Squeak.' id '51f3b714-2d8d-4654-951c-158d5e224f23' date '13 November 2011' time '1:15:47.519 am' author 'dtl' ancestors ((name 'CommandShell-dtl.56' message 'CommandShell 4.4.19
Add PipeableOSProcess class>>command:environment: per Francois Stephany suggestion <http://lists.gforge.inria.fr/pipermail/pharo-users/2011-November/003173.html>' id 'fdcec5de-eb49-415a-afe3-e7804c5fdc9b' date '8 November 2011' time '7:50:46.403 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.55' message 'CommandShell 4.4.18

Use upper case in Squeak menu entries for consistency with trunk.

world -> open... -> Squeak Shell
Apps -> Squeak Shell' id 'b3fd9f62-e3ef-4aa4-b80a-bed117505872' date '30 August 2011' time '7:39:15.934 am' author 'dtl' ancestors ((name 'CommandShell-dtl.53' message 'CommandShell 4.4.17
Catch warnings in unit tests to permit them to run on OS X without UI interaction. Many test failures are expected on OS X due to lack of forkSqueak and XDisplayControlPlugin capability on that platform.' id '101ddf10-e403-4b80-a387-94de1c2a4921' date '10 June 2011' time '4:58:44.565 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.52' message 'CommandShell 4.4.16

Fix poorly written ComandShellTestCase>>testPipeline65 that caused problems on Pharo images.' id 'faa35145-fd47-47a4-9bcc-6b421673a332' date '5 June 2011' time '6:21:15 am' author 'dtl' ancestors ((name 'CommandShell-dtl.51' message 'CommandShell 4.4.15
Do not use #addToStartUpList:after: which was just a workaround for an ancient Squeak bug.' id 'ac9f4447-c48a-43ca-8e1c-0c61cf19f95c' date '20 May 2011' time '7:26:18 am' author 'dtl' ancestors ((name 'CommandShell-dtl.50' message 'CommandShell 4.4.14
Remove unreferenced (and buggy) PipeableOSProcess>>notifyError' id '7e6344df-dd64-46a1-b2b9-6786fd68be9d' date '2 January 2011' time '11:58:48 am' author 'dtl' ancestors ((name 'CommandShell-dtl.49' message 'CommandShell 4.4.13
Remove #fixTemps' id 'e255c374-e51f-4519-b56e-e655e8b55b50' date '30 November 2010' time '7:43:10 am' author 'dtl' ancestors ((name 'CommandShell-dtl.48' message 'CommandShell 4.4.12
Work around Pharo exception difference by catching all Exceptions in ExpressionEvaluator>>compile rather than using a specific Error and UndeclaredVariableReference declaration.' id '9aa745ca-f3a3-49d8-8ca3-d5d1c8eb60dd' date '29 November 2010' time '11:49:31 am' author 'dtl' ancestors ((name 'CommandShell-dtl.47' message 'Add initialization fix, part of CommandShell 4.4.11 but inadvertently left out of the immediately preceding update.' id 'fedb3e2c-676f-432e-96b2-2020ffa8833f' date '29 November 2010' time '10:58:27 am' author 'dtl' ancestors ((name 'CommandShell-dtl.46' message 'CommandShell 4.4.11
Override various Pharo deprecation warnings inappropriate for this package. Support Pharo menu registration.' id 'c5948600-5726-42a7-8487-1e2955d07598' date '29 November 2010' time '9:11:14 am' author 'dtl' ancestors ((name 'CommandShell-dtl.45' message 'CommandShell 4.4.10
Fix duplicate prompt string on #clear built-in shell command.
Accomodate Pharo refactorings and deprecation warnings.
Add commented PipeableOSProcess>>close to document usage.' id '194626ce-46ae-438c-a104-1e20b51b9c54' date '28 November 2010' time '8:37:35 am' author 'dtl' ancestors ((name 'CommandShell-dtl.44' message 'CommandShell 4.4.9
Do not use #ifNotNilDo: (for Cuis compatibility) and do not use #ifNotNil: with a block parameter (for Squeak 3.6 compatibility).' id '41dee1fa-e3ca-40db-a344-9d56eb9d8e1b' date '3 September 2010' time '7:33:42 am' author 'dtl' ancestors ((name 'CommandShell-dtl.43' message 'CommandShell 4.4.8

Return to publishing full CommandShell package. Splitting CommandShell into individual packages is nice for modularity, but not good for version tracking. The individual subpackages will continue to be published separately along with the full CommandShell package.

Changes since CommandShell 4.4.4:

CommandShell 4.4.8
Change RemoteTask>>result to poll for child completion to avoid spin wait on pipe read. Better solution would be to change ReferenceStream reading to work with non-positionable stream.

CommandShell 4.4.7
Fix a race condition in PipeableOSProcess accessProtect that led to intermittent blocking of the OSProcess grimReaper process when running test suite.

CommandShell 4.4.6
Pharo pretends to be unaware that it #isMorphic, so implement a workaround in CommandShell class>>isMorphic.

Handle Pharo variances for window spec on class initialization

Fix handling of WindowColorSpec not present

CommandShell 4.4.5

Do not open a command shell window in CommandShell class>>initialize (instead use CommandShell class>>openWithHelp in SAR postscript).

Work around some Pharo differences:
 - Preference mechanism is different
 - Window color specs replaced by some other mechanism.
 - World menu registration requires pragmas, will not work in e.g. Squeak 3.8' id 'd98b2611-89b6-47d8-849a-a6ec22e6e797' date '1 September 2010' time '10:09:04 am' author 'dtl' ancestors ((name 'CommandShell-dtl.42' message 'Package CommandShell has been recategorized into subpackages. CommandShell-dtl.42 will be the last update to the old package structure.

CommandShell should now be loaded directly from the following packages, which will contain all future updates to CommandShell

 CommandShell-Base
 CommandShell-Commands
 CommandShell-Morphic
 CommandShell-MVC
 CommandShell-Piping
 CommandShell-UI
 CommandShell-Tests
' id 'ef037788-d1ce-4ad7-a6d8-bf30ee0ffd81' date '27 June 2010' time '1:15:02 am' author 'dtl' ancestors ((name 'CommandShell-dtl.41' message 'CommandShell 4.4.4

Add RemoteTask for remote block execution.

  "RemoteTask do: [2 + 2]"

A RemoteTask represents a block to be evaluated in a headless Squeak child process. The results of evaluating the block are returned to the sender through a reference stream on an OS pipe.
' id '612f5458-a211-4ed6-8d00-e80db161e777' date '25 January 2010' time '10:21:07 am' author 'dtl' ancestors ((name 'CommandShell-dtl.40' message 'CommandShell 4.4.3
Use text style ''DefaultFixedTextStyle'' rather than ''Atlanta'' and fall back to default if none found. Motivated by Pharo.' id '62cd334e-61eb-4427-8441-8e4c6b3788d9' date '18 November 2009' time '10:27:48 am' author 'dtl' ancestors ((name 'CommandShell-dtl.39' message 'CommandShell 4.4.2

Eliminate use of deprecated #upTo:' id '4d35607c-a079-4b8a-9047-15ae7707f0bd' date '26 September 2009' time '1:34:31 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.38' message 'Fix typo in ShellSyntax class comment' id 'c0160d58-34dc-47c5-882b-8bbf72ad7fa2' date '7 September 2009' time '12:37:42 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.37' message 'Add patch from eem for ExpressionEvaluator>>compile to handle UndeclaredVariableReference for closure compiler.
' id 'c8c0fd35-17b9-4f0a-a8e8-ac586627ee03' date '17 July 2009' time '2:56:05 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.36' message 'CommandShell 4.4
Add PipeableOSProcess support for forked Squeak images to enable a parent Squeak process to communicate with child Squeak processes using OS pipes connected to the standard streams of the parent and child Squeak processes.' id 'daf81a2d-ac90-47c6-8da9-c7a52aa05a12' date '24 May 2009' time '12:18:44 am' author 'dtl' ancestors ((name 'CommandShell-dtl.35' message 'CommandShell version 4.3.

Fix improper handling of executable path resolution for executables not in current PATH list, and remove incorrect permission to execute a file in current (or Squeak default) working directory if not explicitly in the unix PATH. If an executable file is not found in the PATH, an ExpressionEvaluator is created instead of a PipeableOSProcess, such that the ExpressionEvaluator writes a suitable error message to stderr of the command shell and presents an error exit status."' id '3c323319-c060-43fc-90ae-d3846a9ec305' date '14 October 2008' time '8:52:49 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.34' message 'Fix underscores' id '22c98772-269c-4035-848f-026b462a7fc3' date '18 May 2008' time '4:55:11 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.33' message 'Fix initialization bug when OSProcess is not present in the image.' id 'c261832c-abd5-42c9-830a-f6a93a74a574' date '10 May 2008' time '10:56:09 am' author 'dtl' ancestors ((name 'CommandShell-dtl.32' message 'Eliminate unnecessary WeakArray extension' id 'e6a2c7c6-5a9c-433a-94c4-ead4987321d9' date '3 May 2008' time '1:10:08 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.31' message 'Version 4.2.3
Add #pipeline: and #pipeableProxyFor: convenience methods for creating process proxies and pipelines (CommandShell class category ''proxy creation'').' id 'af5ae7e9-e642-44db-b1ce-c5eafd8da536' date '31 December 2007' time '3:15:35 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.30' message 'Version 4.2.3

Note: The #duplicateAllControlAndAltKeys preference, set true by default on Squeak 3.10, is a mis-feature that causes <ctl>C to be reported as not a control pressed event. Turn this preference off is you want command shells to be correctly interrupted with a <ctl>C character input from keyboard.

Change <ctl>C and <ctl>D event detection to not interpret <cmd> as the same thing as <ctl>. There was at least one combination of VM and and image for which the latter made sense, but it breaks cut and paste in the command shell window, which is not acceptable. For platforms/images in which <ctl>C gets reported as <cmd> event, this will just have to be treated as a bug.
' id '5b044577-0cf1-4d76-9d21-67ca22f31fd3' date '27 December 2007' time '10:48:30 am' author 'dtl' ancestors ((name 'CommandShell-dtl.29' message 'Undo the prior changes for <cmd>C handling. There is a bug (or possibly too many conflicting features) in keyboard event reporting that causes the <ctl>C event to be reported as #commandKeyPressed and not #controlKeyPressed. If we cannot trap the <ctl>C event, we can end up with un-interruptable processes such as for ''ls -l /'' in a shell window.

This change puts incorrect behavior back into CommandShellTranscript, and consequently it is no longer possible to use command-C as the "cut" shortcut in a command shell window.' id 'c25b3200-b256-4d41-af4f-68d6f46e1c7d' date '26 December 2007' time '1:56:16 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.28' message 'Version 4.2.3
Change <ctl>C and <ctl>D event detection to not interpret <cmd> as the same thing as <ctl>. There was at least one combination of VM and and image for which the latter made sense, but it breaks cut and paste in the command shell window, which is not acceptable. For platforms/images in which <ctl>C gets reported as <cmd> event, this will just have to be treated as a bug.
' id '6985fd8f-5700-4548-94e4-c3be1da91554' date '25 December 2007' time '4:35:05 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.27' message 'Version 4.2.2
And yet one more bug from SmalltalkImage refactoring. This one broke the ''snapshot'' builtin on newer Squeak images.' id '9c64843b-4885-4f55-ae59-cfd9cf56963e' date '23 December 2007' time '12:26:21 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.26' message 'Version 4.2.2
Fix yet another bug from SmalltalkImage refactoring. This one broke the ''snapshot'' builtin on newer Squeak images.' id '187f2c3f-ea4f-4e4d-a698-2c4960cc87ac' date '23 December 2007' time '12:18:43 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.25' message 'CommandShell 4.2.1
- Handle binary input for redirected input to prevent multi-byte character conversion.
- Fix ProxyPipeline>>closePipes nil check.' id '246fa364-a13b-4853-a1e5-1e6001d2f89c' date '22 December 2007' time '10:28:54 am' author 'dtl' ancestors ((name 'CommandShell-dtl.24' message 'CommandShell 4.2
Fix red window of doom error in Morphic for #editCommand when directly editing a file, e.g. ''edit foo.txt'' in shell window.' id 'e7e37051-3fa7-475c-bbae-b173e5583cc9' date '21 December 2007' time '10:07:12 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.23' message 'CommandShell 4.2
Remove unnecessary #fork in ShellBuiltInEvaluator>>value.
Clean up tortured logic in #evaluatePipelines.
Add tests green when run with OSProcess 4.3.5.' id '6c985fb0-d097-450c-93f3-b9dcb3e18986' date '21 December 2007' time '2:17:42 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.22' message 'Update #findExecutablePathFor:inDirectoryPath: to handle file directory exception used in newer images. Cleaned up tortured logic in directory scanning.
' id 'b14e933d-2164-425e-bb5f-3f7627d068f5' date '20 December 2007' time '12:13:38 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.21' message 'Remove garbage collection from isNumberOfOpenFiles: to require clean closing of all files and pipes.' id '9cb269ff-0396-477a-a21c-f6be47ca5f21' date '20 December 2007' time '12:07:28 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.20' message 'Change underscores to :=' id '564c0e86-d219-44d9-93b7-88178c643e62' date '16 December 2007' time '10:47:06 am' author 'dtl' ancestors ((name 'CommandShell-dtl.19' message 'Change underscore to :=' id 'eb8d3015-ba4e-4a34-9a70-c472e728a3e8' date '15 December 2007' time '1:38:39 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.18' message 'Fix yet another bug caused by  "SmalltalkImage current"' id 'c1fd2fb8-c3d4-4d1d-be2b-aa1ebc4580ba' date '15 December 2007' time '1:35:32 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.17' message 'Update documentation' id '45b3ffab-b312-4f7d-a912-7ee2a523f65d' date '15 December 2007' time '12:34:27 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.16' message 'Version 4.1.3
Various updates and cleanups. Works in MVC now.' id '3510f566-0e44-4e58-8187-64d388f766d5' date '15 December 2007' time '12:17:18 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.15' message 'Updates for Squeak 3.10.
Reorganize class categories.
Remove underscores.' id 'f6387681-e1ad-45b0-98d2-aa40bda41fd3' date '8 November 2007' time '9:00:56 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.14' message 'CommandShell V4.1.2
Add missing #filterAndForwardEvent: method.' id 'e29add51-8dc7-4498-8972-4f7e9a471f11' date '3 November 2007' time '3:54:25 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.13' message 'CommandShell V4.1.1
Open a command shell and display help on class initialization. This allows the package to be loaded with a simple help display from the mcz file (prior SAR releases opened too many windows for use in a package universe).' id 'f59f5c94-6e4f-4b5a-8a69-79a76726745d' date '3 November 2007' time '3:38:27 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.12' message 'CommandShell V4.1.1
Recent versions of Squeak no longer report <ctl>c keyboard inputs as ascii value 3. This update attempts to handle <ctl>c and <ctl>d (end of file) keyboard input for a range of Squeak versions. The correction works only for Morphic; MVC continues to depend on character value 3 for <ctl>c and character value 4 for <ctl>d.' id '37090473-83d9-4a7b-b446-c8a1c445051f' date '3 November 2007' time '2:34:10 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.10' message 'Update #platformName for Squeak version dependencies.' id '55ea3075-cd4d-44aa-84e8-54c72386bc68' date '30 October 2007' time '7:04:20 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.9' message 'CommandShell 4.1
Merge ExternalCli into ExternalCommandShell, eliminate ExternalCli.' id 'fea8ff63-6bc6-48dc-a6f6-697fc0db8a3a' date '24 March 2007' time '8:52:31 am' author 'dtl' ancestors ((name 'CommandShell-dtl.8' message 'Implement ExternalCli, alternative implementation of ExternalCommandShell with event driven input rather than real-eval loop.' id '489f3eb2-f132-4970-85f0-4897d8ff3900' date '24 March 2007' time '8:20:52 am' author 'dtl' ancestors ((name 'CommandShell-dtl.6' message 'Fix PipeJunction>>close' id '14b9bcca-9063-42c7-a925-d12169988890' date '11 March 2007' time '11:13:17 am' author 'dtl' ancestors ((name 'CommandShell-dtl.5' message 'CommandShell V4.0.
This is a substantial rewrite of CommandShell since version 3. It uses event-driven AIO where possible to eliminate polling loops, and is extensively refactored. This version is alpha level, use with caution.' id 'a4cce4e2-f5fc-4fbc-a56f-1870a358eb57' date '24 February 2007' time '2:08:09 pm' author 'dtl' ancestors ((name 'CommandShell-dtl.4' message 'Version 3.0.4 - Add selectable window color preferences for CommandShell and CrLfFileEditor.' id '031b5c30-2d1b-4cec-9661-95b75a4f7f20' date '25 November 2005' time '11:24:09 am' author 'dtl' ancestors ((name 'CommandShell-dtl.3' message 'Change color of edit windows to Color lightOrange paler, per suggestion from Michael van der Gulik. Update version number to 3.0.3.' id '2a2bf5b7-7b6d-45f8-9fad-bd5e5c93fbe4' date '19 November 2005' time '11:26:29 am' author 'dtl' ancestors ((name 'CommandShell-dtl.1' message 'CommandShell 3.0.2 adds support for KCP refactorings, in which a number methods were moved from SystemDictionary to SmalltalkImage. Backward compatibility is maintained for Squeak 3.6 and earlier. Class category has been changed to work better with Monticello.' id '8af7fe81-f31a-4be8-bc0a-bfaa7f3d3c4d' date '7 August 2005' time '7:30:27 am' author 'dtl' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())(id '55ea3075-cd4d-44aa-84e8-54c72386bc68')) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())