Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
#######
#
# E-scripts on Squeak (not on other SmallTalks)
#
# Note 1: use the eev command (defined in eev.el) and the
# ee alias (in my .zshrc) to execute parts of this file.
# Executing this file as a whole makes no sense.
# An introduction to eev can be found here:
#
#   (find-eev-quick-intro)
#   http://angg.twu.net/eev-intros/find-eev-quick-intro.html
#
# Note 2: be VERY careful and make sure you understand what
# you're doing.
#
# Note 3: If you use a shell other than zsh things like |&
# and the for loops may not work.
#
# Note 4: I always run as root.
#
# Note 5: some parts are too old and don't work anymore. Some
# never worked.
#
# Note 6: the definitions for the find-xxxfile commands are on my
# .emacs.
#
# Note 7: if you see a strange command check my .zshrc -- it may
# be defined there as a function or an alias.
#
# Note 8: the sections without dates are always older than the
# sections with dates.
#
# This file is at <http://angg.twu.net/e/squeak.e>
#           or at <http://angg.twu.net/e/squeak.e.html>.
#        See also <http://angg.twu.net/emacs.html>,
#                 <http://angg.twu.net/.emacs[.html]>,
#                 <http://angg.twu.net/.zshrc[.html]>,
#                 <http://angg.twu.net/escripts.html>,
#             and <http://angg.twu.net/>.
#
#######




(global-set-key   (kbd "C-v") 'yank)
(global-unset-key (kbd "C-v"))

# «.mailing-lists»		(to "mailing-lists")
# «.irc»			(to "irc")
# «.tutorials»			(to "tutorials")
# «.squeak-by-example»		(to "squeak-by-example")
# «.squeak-shout»		(to "squeak-shout")
# «.openInWorld»		(to "openInWorld")
# «.addAlarm:»			(to "addAlarm:")
# «.SimpleSwitchMorph»		(to "SimpleSwitchMorph")
# «.SimpleButtonMorph»		(to "SimpleButtonMorph")
# «.Matrix»			(to "Matrix")
# «.quinto»			(to "quinto")
# «.books»			(to "books")
# «.Point3D»			(to "Point3D")
# «.OSProcess»			(to "OSProcess")
# «.See»			(to "See")
# «.See.st.html»		(to "See.st.html")
# «.CompiledMethod»		(to "CompiledMethod")
# «.fileOut-format»		(to "fileOut-format")
# «.menuitem-action»		(to "menuitem-action")
# «.openSelectorBrowser»	(to "openSelectorBrowser")
# «.ToolBuilder»		(to "ToolBuilder")
# «.squeaksource»		(to "squeaksource")
# «.changes-and-screenshots»	(to "changes-and-screenshots")
# «.commandKeyHelp»		(to "commandKeyHelp")
# «.CommandShell»		(to "CommandShell")
# «.squeak-3.6»			(to "squeak-3.6")
# «.learn-squeak»		(to "learn-squeak")
# «.squeak-sarge»		(to "squeak-sarge")
# «.squeak-vm»			(to "squeak-vm")
# «.squeak-debian-2006»		(to "squeak-debian-2006")
# «.squeak-on-etch»		(to "squeak-on-etch")
# «.squeak-binfmts»		(to "squeak-binfmts")
# «.install-2023»		(to "install-2023")
# «.install-2022»		(to "install-2022")
# «.smalltalkeditor-feb2022»	(to "smalltalkeditor-feb2022")
# «.tweaks.cs»			(to "tweaks.cs")
# «.autocompletion»		(to "autocompletion")
# «.Tools-menu»			(to "Tools-menu")
# «.Workspace»			(to "Workspace")
# «.openWorkspace»		(to "openWorkspace")
# «.workspaces-compiler»	(to "workspaces-compiler")
# «.HelpBrowserB»		(to "HelpBrowserB")
# «.morphic-events»		(to "morphic-events")
# «.IconicButton»		(to "IconicButton")
# «.EdrxMorph»			(to "EdrxMorph")
# «.KeyboardExerciser»		(to "KeyboardExerciser")
# «.Bricks»			(to "Bricks")
# «.Kedama»			(to "Kedama")
# «.game-prog-with-etoys»	(to "game-prog-with-etoys")
# «.PolygonMorph»		(to "PolygonMorph")
# «.PolygonMorph-EventHandler»	(to "PolygonMorph-EventHandler")
# «.PolygonMorph-EventHandler-2»	(to "PolygonMorph-EventHandler-2")
# «.PolygonMorph-EventHandler-3»	(to "PolygonMorph-EventHandler-3")
# «.synthetic-kb-event»		(to "synthetic-kb-event")
# «.EToys-kfr»			(to "EToys-kfr")
# «.activeGlobals»		(to "activeGlobals")
# «.currentWorld»		(to "currentWorld")
# «.morphic-tutorial-1»		(to "morphic-tutorial-1")
# «.debugger»			(to "debugger")
# «.generateKeyboardEvent»	(to "generateKeyboardEvent")
# «.handlesKeyboard»		(to "handlesKeyboard")
# «.respondsTo»			(to "respondsTo")
# «.globals»			(to "globals")
# «.world-morphs»		(to "world-morphs")
# «.question-about-a»		(to "question-about-a")
# «.ATheWorldMainDockingBar»	(to "ATheWorldMainDockingBar")
# «.20220302-transpose»		(to "20220302-transpose")
# «.etoys-qg»			(to "etoys-qg")
# «.etoys»			(to "etoys")
# «.etoys-blob-car»		(to "etoys-blob-car")
# «.EventRecorder»		(to "EventRecorder")
# «.LineMorph»			(to "LineMorph")
# «.HorizontalNumberLineMorph»	(to "HorizontalNumberLineMorph")
# «.Slider»			(to "Slider")
# «.See-store»			(to "See-store")
# «.search-bar»			(to "search-bar")
# «.resetHandlerFields»		(to "resetHandlerFields")
# «.Delay»			(to "Delay")
# «.TerseGuideHelp»		(to "TerseGuideHelp")
# «.See-terseGuide»		(to "See-terseGuide")
# «.BubbleFilters»		(to "BubbleFilters")
# «.save-keystroke-events»	(to "save-keystroke-events")
# «.non-openInWorld-able»	(to "non-openInWorld-able")
#   «.TestLayoutMorph»		(to "TestLayoutMorph")
#   «.LayoutPolicy»		(to "LayoutPolicy")
# «.EncoderForV3»		(to "EncoderForV3")
# «.TheWorldMenu-newMorph»	(to "TheWorldMenu-newMorph")
# «.browseFullProtocol»		(to "browseFullProtocol")
# «.Interval»			(to "Interval")
# «.Context»			(to "Context")
# «.roguerrants»		(to "roguerrants")
# «.DisplayScreen»		(to "DisplayScreen")
# «.LambdaMessageSend»		(to "LambdaMessageSend")
# «.launchPartVia»		(to "launchPartVia")
# «.Mines»			(to "Mines")
# «.EventRecorder»		(to "EventRecorder")
# «.PasteUpMorph»		(to "PasteUpMorph")
# «.repl»			(to "repl")

# (find-es "smalltalk")



http://minnow.cc.gatech.edu/squeak/uploads/SqueakLanguageRef.3.html
http://minnow.cc.gatech.edu/squeak/uploads/SqueakClassesRef.html




#####
#
# mailing-lists
# 2023jan26
#
#####

# «mailing-lists»  (to ".mailing-lists")
# http://wiki.squeak.org/squeak/608 Squeak Mailing Lists
# http://wiki.squeak.org/squeak/775 FAQ: Mailing List Archives

# http://lists.squeakfoundation.org/mailman/listinfo/beginners
# http://lists.squeakfoundation.org/pipermail/beginners/ (archive)

# http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-dev
# http://lists.squeakfoundation.org/pipermail/squeak-dev/ (archive)

# http://lists.squeakfoundation.org/pipermail/beginners/2023-January/010308.html 3D?
# http://lists.squeakfoundation.org/pipermail/beginners/2023-January/010309.html RET




#####
#
# irc
# 2023jan27
#
#####

# «irc»  (to ".irc")
# (find-es "rcirc" "oftc")
# http://wiki.squeak.org/squeak/1915 Squeak on IRC
# http://wiki.squeak.org/squeak/5888 IRC Portal

(defun sq2 () (interactive) (find-libera-2a "#squeak"))
(defun sq3 () (interactive) (find-libera-3a "#squeak"))




#####
#
# tutorials
# 2022mar02
#
#####

# «tutorials»  (to ".tutorials")
# http://wiki.squeak.org/squeak/792 Squeak Tutorials
# http://wiki.squeak.org/squeak/6622 Learning Squeak in 2020 ***
# http://wiki.squeak.org/squeak/792#eToys
# http://wiki.squeak.org/squeak/792#Morphic
# http://wiki.squeak.org/squeak/792#Seaside
# http://en.scratch-wiki.info/wiki/Squeak_Tutorial
# http://wiki.squeak.org/squeak/3501 Discovering Better Code: Bowling for Smalltalk Series
# http://wiki.squeak.org/squeak/795 Morphic Tutorial: Build a 4 digit LED counter
# http://wiki.squeak.org/squeak/1827 Counter Tutorial: A Morphic Fascination ***
# http://www.jvuletich.org/Squeak/IntroductionToMorphic/Morphic.html
# http://www.jvuletich.org/Squeak/IntroductionToMorphic/Morphic-Playing.html
# http://wiki.squeak.org/squeak/1175 Fabrik




#####
#
# Squeak by Example
# 2023jan22
#
#####

# «squeak-by-example»  (to ".squeak-by-example")
# (find-books "__comp/__comp.el" "squeak-by-example")
# (find-es "pharo" "pharo-by-example")
# http://github.com/hpi-swa-lab/SqueakByExample-english/releases/download/5.3.1/SBE-5.3.pdf

* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
cp -v $S/http/github.com/hpi-swa-lab/SqueakByExample-english/releases/download/5.3.1/SBE-5.3.pdf \
   ~/SQUEAK/squeak-by-example-5.3.pdf
cd ~/SQUEAK/
scp squeak-by-example-5.3.pdf $LINS/SQUEAK/
scp squeak-by-example-5.3.pdf $LINP/SQUEAK/

* (eepitch-linode)
* (eepitch-kill)
* (eepitch-linode)
mkdir -p ~/public_html/SQUEAK/
mkdir -p   ~/slow_html/SQUEAK/
# (find-linodepfile   "SQUEAK/")
# (find-linodesfile   "SQUEAK/")


# Old:
# http://open.umn.edu/opentextbooks/textbooks/313
# http://pdxscholar.library.pdx.edu/compsci_fac/110/
# http://pdxscholar.library.pdx.edu/cgi/viewcontent.cgi?article=1112&context=compsci_fac PDF
# http://pdxscholar.library.pdx.edu/Squeak_by_Example.pdf (fake URL)
# http://github.com/SquareBracketAssociates/SqueakByExample-english

# (find-squeakbyexpage (+ 14 9) "new morph" "alphabetical list")
# (find-squeakbyextext (+ 14 9) "new morph" "alphabetical list")

world -> old desktop menu (W) -> new morph -> from alphabetical list




#####
#
# Squeak by Example: testShout and shout
# 2023jan25
#
#####

# «squeak-shout»  (to ".squeak-shout")
# (find-squeakbyexpage (+ 14 22) "Method 1.1: A test for a shout method")
# (find-squeakbyextext (+ 14 22) "Method 1.1: A test for a shout method")
# (find-squeakbyexpage (+ 14 25) "Method 1.2: The shout method")
# (find-squeakbyextext (+ 14 25) "Method 1.2: The shout method")

String
String browse      'converting -> shout'
StringTest browse  'tests - converting -> testShout'

testShout
   self assert: ('Don''t panic' shout = 'DON''T PANIC!')

shout
   ^ self asUppercase, '!'




#####
#
# openInWorld
# 2023feb21
#
#####

# «openInWorld»  (to ".openInWorld")
# (find-squeakbyexpage (+ 16 33) "self openInWorld")
# (find-squeakbyextext (+ 16 33) "self openInWorld")

See cm: (Morph >> #openInWorld).
See cm: (Morph >> #openInWorld:).



#####
#
# addAlarm:
# 2023feb21
#
#####

# «addAlarm:»  (to ".addAlarm:")
# (find-TH "eev-squeak" "addAlarm")
# (find-squeakfile "See.st")
# (find-squeakfile "See.st" "run: aBlock after: ms")
# How do I "sleep 5"?
# http://lists.squeakfoundation.org/pipermail/squeak-dev/2023-February/223483.html Edrx 1
# http://lists.squeakfoundation.org/pipermail/squeak-dev/2023-February/223484.html Vanessa 2
# http://lists.squeakfoundation.org/pipermail/squeak-dev/2023-February/223486.html Edrx 3
# http://lists.squeakfoundation.org/pipermail/squeak-dev/2023-February/223487.html Karl 4
# http://lists.squeakfoundation.org/pipermail/squeak-dev/2023-February/223488.html Edrx 5
# http://lists.squeakfoundation.org/pipermail/squeak-dev/2023-February/223490.html Marcel 6
# http://lists.squeakfoundation.org/pipermail/squeak-dev/2023-February/223502.html Karl 7
# http://lists.squeakfoundation.org/pipermail/squeak-dev/2023-February/223518.html STPope 8

See cm: (Morph >> #addAlarm:after:).
See cm: (Morph >> #addAlarm:withArguments:after:).
See cm: (Morph >> #addAlarm:with:after:).
See cm: (Morph >> #addAlarm:with:with:after:).

"Create a SimpleSwitchMorph with label 'Toggle'
    and a SimpleButtonMorph with label 'Flash'.
    The button will be placed below the switch."

sm := SimpleSwitchMorph new.
sm openInWorld.
bm := SimpleButtonMorph new.
bm openInWorld.
bm position: bm position + (0@32).

"Three ways of toggling the color of the switch:"

sm toggleState.

bl := [ sm toggleState ].
bl value.

bm target: bl.
bm actionSelector: #value.
bm doButtonAction.

"Two ways of toggling the switch after 1000ms:"

sm addAlarm: #toggleState after: 1000.
bm addAlarm: #doButtonAction after: 1000.


"Save the keyboard focus in kf after 5s:"

kf := 0.
bl := [ sm toggleState ].
bl := [ kf := self currentHand keyboardFocus ].
bm target: bl.
bm actionSelector: #value.
bm addAlarm: #doButtonAction after: 5000.

kf.

and now I can simply run this

  See run: [ kf := self currentHand keyboardFocus ] after: 5000.

to save into the variable kf the morph on which the keyboard focus is
after 5 second. Neat! =)

  Cheers,
    Eduardo Ochs
    http://anggtwu.net/eev-squeak.html








#####
#
# resetHandlerFields
# 2023feb20
#
#####

# «resetHandlerFields»  (to ".resetHandlerFields")
# (find-squeaksharedfile "")
# (find-squeaksharedfile "See class-accessing.st")

See cm: (HandMorphForReplay >> #processEvents).
See cm: (MorphicEvent   >> #resetHandlerFields).
See cm: (UserInputEvent >> #resetHandlerFields).
See cm: (DropEvent      >> #resetHandlerFields).

See store: Dictionary new.

ar := Array with: 50@100 with: 200@300 with: 100@400.
pm := (PolygonMorph
        vertices: ar color: Color red
        borderWidth: 1 borderColor: Color black).
eh := EventHandler new.
bl := [ :evt :sm | self halt. Transcript show: { evt . sm }; cr. ].
pm eventHandler: eh.
eh on: #keyStroke send: #value:value: to: bl.

World addMorph: pm.
See keyboardFocus: pm.

"Run this in PolygonMorph -> debugger:"
See at: #CR put: evt.
"Go back to the workspace, and then do:"

evt := See at: #CR.
evt.
evt wasHandled.
evt resetHandlerFields.
evt wasHandled.
pm handleEvent: evt.



 sendFilterEventBubble: anEvent for: self.

See cm: (TextMorphForEditView >> keyStroke:).
evt keyCharacter: Character cr.
TextEditor>>#accept

kf explore.
kf editor.
kf editor accept.





#####
#
# SimpleSwitchMorph
# 2023feb21
#
#####

# «SimpleSwitchMorph»  (to ".SimpleSwitchMorph")
# (find-books "__comp/__comp.el" "squeak-by-example" "The Quinto game")
# (find-squeakbyexpage (+ 16 29) "SimpleSwitchMorph")
# (find-squeakbyextext (+ 16 29) "SimpleSwitchMorph")

See class: SimpleSwitchMorph
See cm: (SimpleSwitchMorph >> #initializeWithLabel:).

sm := SimpleSwitchMorph new.
sm openInWorld.

sm initialize.
sm label: '';
   borderWidth: 2;
   bounds: (0 @ 0 corner: 16 @ 16);
   offColor: Color cantaloupe;
   onColor: Color aqua;
   useSquareCorners.
sm turnOff.
sm turnOn.

sm := SimpleSwitchMorph new.
sm openInWorld.
sm label: 'A'.
sm toggleState.
sm addAlarm: #toggleState after: 1000.

bl := [ :evt :sm | Transcript show: { evt . sm }; cr. ].
eh := EventHandler new.
eh on: #keyStroke send: #value:value: to: bl.




#####
#
# SimpleButtonMorph
# 2023feb21
#
#####

# «SimpleButtonMorph»  (to ".SimpleButtonMorph")

See class: SimpleButtonMorph
See cm:   (SimpleButtonMorph >> #label:).
See cm:   (SimpleButtonMorph >> #browseImplementationOfActionSelector).
See cm:   (SimpleButtonMorph >> #target:).
See cm:   (SimpleButtonMorph >> #doButtonAction).

bm := SimpleButtonMorph new.
bm openInWorld.
bm label: 'Foo'.
bm doButtonAction.

rm := RectangleMorph new.
rm openInWorld.
rm color: Color red.

bm position: bm position + (0@16).

sm := SimpleSwitchMorph new.
sm openInWorld.
sm addAlarm: #toggleState after: 1000.

bm := SimpleButtonMorph new.
bm openInWorld.
bm position: bm position + (0@32).

bm label: 'Foo'.
bm doButtonAction.




Hi Vanessa!
Thanks! =) This works in a workspace,

  "Create a SimpleSwitchMorph with label 'Toggle'
      and a SimpleButtonMorph with label 'Flash'.
      The button will be placed below the switch."
  
  sm := SimpleSwitchMorph new.
  sm openInWorld.
  bm := SimpleButtonMorph new.
  bm openInWorld.
  bm position: bm position + (0@32).
  
  "Three ways of toggling the color of the switch:"
  
  sm toggleState.
  
  bl := [ sm toggleState ].
  bl value.
  
  bm target: bl.
  bm actionSelector: #value.
  bm doButtonAction.
  
  "Two ways of toggling the switch after 1000ms:"
  
  sm addAlarm: #toggleState after: 1000.
  bm addAlarm: #doButtonAction after: 1000.

but this doesn't:

  bm2 := SimpleButtonMorph new.
  bm2 target: bl.
  bm2 actionSelector: #value.
  bm2 addAlarm: #doButtonAction after: 1000.

What is the right way to add an alarm to a morph that is not shown on
the screen? Also, can I create a new invisible morph every time that I
want to run an alarm? Are they going to be garbage collected?

  Thanks in advance!
    Eduardo Ochs
    http://anggtwu.net/eev-squeak.html




Hi Vanessa!



http://www.youtube.com/watch?v=BNjgltkqTzc



sm addAlarm: #toggleState after: 1000.




self halt.
bm doButtonAction.
bm explore.
bm class browse.

bl := [ sm toggleState ].
bl value.
bm target: bl.
bm actionSelector: #value.

sm addAlarm: #toggleState after: 1000.
bm addAlarm: #doButtonAction after: 1000.






#####
#
# Matrix
# 2023feb25
#
#####

# «Matrix»  (to ".Matrix")

See cm: (SequenceableCollectionTest >> #testPreMultiplyByMatrix).
See cm: (Matrix >> #preMultiplyByMatrix:).
See class: Matrix.




#####
#
# quinto
# 2023jan25
#
#####

# «quinto»  (to ".quinto")
# (find-squeakbyexpage (+ 14 33) "Method 2.2: Initializing instances of SBECell")
# (find-squeakbyextext (+ 14 33) "Method 2.2: Initializing instances of SBECell")

initialize
  super initialize.
  self label: ''.
  self borderWidth: 2.
  bounds := 0@0 corner: 16@16.
  offColor := Color paleYellow.
  onColor := Color paleBlue darker.
  self useSquareCorners.
  self turnOff

# (find-squeakbyexpage (+ 14 36) "Method 2.4: Initializing the game")
# (find-squeakbyextext (+ 14 36) "Method 2.4: Initializing the game")

initialize
  | sampleCell width height n |
  super initialize.
  n := self cellsPerSide.
  sampleCell := SBECell new.
  width := sampleCell width.
  height := sampleCell height.
  self bounds: (5@5 extent: ((width*n) @(height*n)) + (2 * self borderWidth)).
  cells := Matrix new: n tabulate: [ :i :j | self newCellAt: i at: j ].

# (find-squeakbyexpage (+ 14 40) "Method 2.5: A constant method")
# (find-squeakbyextext (+ 14 40) "Method 2.5: A constant method")

cellsPerSide
 "The number of cells along each side of the game"
 ^ 10

# (find-squeakbyexpage (+ 14 40) "Method 2.6: An initialization helper method")
# (find-squeakbyextext (+ 14 40) "Method 2.6: An initialization helper method")

newCellAt: i at: j
 "Create a cell for position (i,j) and add it to my on--screen
 representation at the appropriate screen position. Answer the new cell"
 | c origin |
 c := SBECell new.
 origin := self innerBounds origin.
 self addMorph: c.
 c position: ((i - 1) * c width) @ ((j - 1) * c height) + origin.
 c mouseAction: [self toggleNeighboursOfCellAt: i at: j].

# (find-squeakbyexpage (+ 14 41) "Method 2.7: The callback method")
# (find-squeakbyextext (+ 14 41) "Method 2.7: The callback method")

toggleNeighboursOfCellAt: i at: j
 (i > 1) ifTrue: [ (cells at: i - 1 at: j ) toggleState].
 (i < self cellsPerSide) ifTrue: [ (cells at: i + 1 at: j) toggleState].
 (j > 1) ifTrue: [ (cells at: i at: j - 1) toggleState].
 (j < self cellsPerSide) ifTrue: [ (cells at: i at: j + 1) toggleState].

# (find-squeakbyexpage (+ 14 41) "Method 2.8: A typical setter method")
# (find-squeakbyextext (+ 14 41) "Method 2.8: A typical setter method")

SBECell»mouseAction: aBlock
  ^ mouseAction := aBlock

# (find-squeakbyexpage (+ 14 42) "Method 2.9: An event handler")
# (find-squeakbyextext (+ 14 42) "Method 2.9: An event handler")

SBECell»mouseUp: anEvent
  mouseAction value


String
String browse
StringTest browse

SBECell new
SBECell new openInWorld
SBEGame new openInWorld

# (find-fline "~/SQUEAK/Squeak5.3-19459-64bit-202003021730-Linux/shared/SBE-Quinto.st")




#####
#
# books
# 2023feb20
#
#####

# «books»  (to ".books")
# (find-books "__comp/__comp.el" "smalltalk")
# http://wiki.squeak.org/squeak/689 Smalltalk & Squeak books
# http://wiki.squeak.org/squeak/471 Squeak FAQ
# http://stephane.ducasse.free.fr/FreeBooks.html
# http://rmod-files.lille.inria.fr/FreeBooks/BlueBookHughes/Design%20Principles%20Behind%20Smalltalk.pdf
# http://rmod-files.lille.inria.fr/FreeBooks/SmalltalkHistoryHOPL.pdf

http://rmod-files.lille.inria.fr/FreeBooks/ByExample/CodeExamples.zip
http://rmod-files.lille.inria.fr/FreeBooks/ByExample/25%20-%20Chapter%2023%20-%20Model-View-Controller.pdf

http://rmod-files.lille.inria.fr/FreeBooks/ByExample/SmalltalkByExampleON2.pdf
http://rmod-files.lille.inria.fr/FreeBooks/ByExample/SmalltalkByExampleNewRelease.pdf
http://rmod-files.lille.inria.fr/FreeBooks/InsideST/InsideSmalltalk.pdf
http://rmod-files.lille.inria.fr/FreeBooks/InsideST/InsideSmalltalkII.pdf
http://rmod-files.lille.inria.fr/FreeBooks/PracticalSmalltalk/PracticalSmalltalk.pdf
http://rmod-files.lille.inria.fr/FreeBooks/HopkinsHoran/HopkinsHoran.pdf


;; (find-stbyexpage)
;; (find-stbyextext)




#####
#
# Point3D
# 2023jan27
#
#####

# «Point3D»  (to ".Point3D")
# (find-fline "~/SQUEAK/Squeak5.3-19459-64bit-202003021730-Linux/shared/")
# (find-squeaksharedfile "")
# (find-squeaksharedfile "Category-Edrx.st")




#####
#
# OSProcess
# 2023jan28
#
#####

# «OSProcess»  (to ".OSProcess")
# http://wiki.squeak.org/squeak/708 OSProcess
# (find-squeaksharedfile "")
# (find-squeaksharedfile "See.st")
# (find-squeaksharedfile "See.st" "\nemacsClientEval: string")




#####
#
# CommandShell
# 2023jan27
#
#####

# «CommandShell»  (to ".CommandShell")
# http://wiki.squeak.org/squeak/1914 CommandShell
# http://wiki.squeak.org/squeak/6023 ExternalCommandShell
# http://wiki.squeak.org/squeak/2153 Overview of CommandShell
# http://wiki.squeak.org/squeak/1064 CommandShell exercise
# http://www.squeaksource.com/CommandShell/
# http://wiki.squeak.org/squeak/2819 Invoking Lua from Squeak using OSProcess Command shell

<krono> something like #wait, #exec:withArguments: 🤔

# (find-fline "~/LOGS/2023jan27.squeak2")








#####
#
# See
# 2023jan28
#
#####

# «See»  (to ".See")
# (find-squeaksharedfile "")
# (find-squeaksharedfile "See.st")
# (find-squeaksharedfile "See.st" "\nitem1tsa: menu")

See>>sbep0: page
  "See the method sbep:."
  ^ 'emacsclient --eval ''(find-squeakbyexpage ' , page , ')'''.

See>>sbep: page
  "Open the book Squeak by Example on a certain page"
  OSProcess waitForCommand: (See sbep0: page).



#####
#
# See.st.html
# 2023jan28
#
#####

# «See.st.html»  (to ".See.st.html")
# (find-squeaksharedfile "")
# (