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/>. # ####### # «.tutorials» (to "tutorials") # «.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-2022» (to "install-2022") # «.smalltalkeditor-feb2022» (to "smalltalkeditor-feb2022") # «.tweaks.cs» (to "tweaks.cs") # «.autocompletion» (to "autocompletion") # «.20220302-transpose» (to "20220302-transpose") # (find-es "smalltalk") http://minnow.cc.gatech.edu/squeak/uploads/SqueakLanguageRef.3.html http://minnow.cc.gatech.edu/squeak/uploads/SqueakClassesRef.html ##### # # tutorials # 2022mar02 # ##### # «tutorials» (to ".tutorials") # https://wiki.squeak.org/squeak/792 Squeak Tutorials # https://wiki.squeak.org/squeak/6622 Learning Squeak in 2020 *** # https://wiki.squeak.org/squeak/792#eToys # https://en.scratch-wiki.info/wiki/Squeak_Tutorial ##### # # Squeak 3.6 # 2004feb29 # ##### # «squeak-3.6» (to ".squeak-3.6") # <http://www-sor.inria.fr/~piumarta/squeak/> # (code-c-d "squeakvm" "~/bigsrc/Squeak-3.6g-2/") # (code-c-d "squeakvmdoc" "~/bigsrc/Squeak-3.6g-2/platforms/unix/doc/") # (find-squeakvmfile "") # (find-squeakvmfile "README") # (find-squeakvmdocfile "HowToBuildFromSource.txt") # (find-squeakvmdocfile "3.2-5.RELEASE_NOTES" "libdir") # (find-squeakvmdocfile "3.2-1.RELEASE_NOTES" "without first installing it") # (find-squeakvmdocfile "") #* rm -Rv ~/bigsrc/Squeak-3.6g-2/ cd $S/http/www-sor.inria.fr/~piumarta/squeak/devel/dist/ tar -xvzf Squeak-3.6g-2.src.tar.gz -C ~/bigsrc/ tar -xvzf Squeak-3.6g-5420.image.tar.gz -C ~/bigsrc/ cd $S/http/www-sor.inria.fr/~piumarta/squeak/unix/release/ tar -xvzf Squeak-3.sources.tar.gz -C ~/bigsrc/Squeak-3.6g-2/ cd ~/bigsrc/Squeak-3.6g-2/ mv -v Squeak-3/usr/local/lib/squeak/SqueakV3.sources \ usr/local/lib/squeak/ #* cd ~/bigsrc/Squeak-3.6g-2/ mkdir bld cd bld ../platforms/unix/config/configure |& tee oc make |& tee om #* # (find-squeakvmfile "bld/omi") cd ~/bigsrc/Squeak-3.6g-2/bld/ rm -v /usr/local/doc/squeak/*.gz make install |& tee omi cd ~/bigsrc/Squeak-3.6g-2/ ./INSTALL |& tee oI #* # (find-fline "/tmp/Squeak-3/INSTALL" "preferred locations") # (find-fline "/tmp/Squeak-3.6g-2/INSTALL" "preferred locations") #* diff /tmp/Squeak-3/INSTALL /tmp/Squeak-3.6g-2/INSTALL #* rm -Rv /tmp/Squeak-3* #* ##### # # learning squeak # 2004mar11 # ##### # «learn-squeak» (to ".learn-squeak") # Squeak FAQ: <http://minnow.cc.gatech.edu/squeak/471> # (find-w3m "/home/edrx/snarf/http/minnow.cc.gatech.edu/squeak/471") (defun find-sqsrc (&rest rest) (find-fline "~/.squeak/srcs") (setq tab-width 2) (apply 'ee-goto-position rest)) (defun find-sqchg (&rest rest) (find-fline "~/.squeak/chgs") (setq tab-width 2) (apply 'ee-goto-position rest)) # (find-sqsrc "inspect it (i)") # (find-sqsrc "TextEditorYellowButtonMenu _ SelectionMenu") # (find-sqsrc "printIt: characterStream") # (find-sqsrc "evalString:") # (find-sqsrc "\nbrowseAllClasses") # (find-sqchg "A Browser is a tool") # (find-sqchg 0) #* # (find-fline "~/.squeak/") cd ~/.squeak/ tr \\\r \\\n < squeak.changes > chgs tr \\\r \\\n < SqueakV3.sources > srcs mkdir chg src #* # (find-lua50ref "string.find") cd ~/.squeak/chg/ lua50e ' sources = {} class = nil _, __, class_ = string.find( add = function (class, line) ' # (find-gstnode "A new class") # (find-gstnode "Defining methods") # (find-gstnode "The syntax") # (find-gstnode "The syntax" "#at:put:") 1 to: 62 do: [:j | bestIndex = 63 ifTrue: [ (stepSizeTable at: j) >= diff ifTrue: [bestIndex _ j]]]. ^ bestIndex # (find-fline "~/.squeak/") ##### # # squeak from the debianized sources # 2004dec15 # ##### # «squeak-sarge» (to ".squeak-sarge") # http://minnow.cc.gatech.edu/squeak/3616 # (find-fline "/etc/apt/sources.list") # deb ftp://st.cs.uiuc.edu/pub/Smalltalk/Squeak/debian/ unstable non-US deb-src ftp://st.cs.uiuc.edu/pub/Smalltalk/Squeak/debian/ unstable non-US #* apt-get update #* # (find-fline "~/tmp/debsrc/") rm -Rv ~/bigsrc/squeak/ mkdir ~/bigsrc/squeak/ cd ~/bigsrc/squeak/ cp -v $S/ftp/st.cs.uiuc.edu/pub/Smalltalk/Squeak/debian/dists/unstable/non-US/source/non-free/* . #* # (find-fline "~/bigsrc/squeak/") # (find-fline "~/bigsrc/squeak/squeak-3.7b5/") cd ~/bigsrc/squeak/ dpkg-source -x squeak_3.7b5-2.dsc cd ~/bigsrc/squeak/squeak-3.7b5/ dpkg-buildpackage -rfakeroot |& tee odbfr cd ~/bigsrc/squeak/ dpkg-source -x squeak-image3.7_5868-1.dsc cd ~/bigsrc/squeak/squeak-image3.7-5868/ dpkg-buildpackage -rfakeroot |& tee odbfr cd ~/bigsrc/squeak/ dpkg-source -x squeak-sources3_0.0-1.dsc cd ~/bigsrc/squeak/squeak-sources3-0.0/ dpkg-buildpackage -rfakeroot |& tee odbfr #* cd ~/bigsrc/squeak/ dpkg -i \ inisqueak_3.7b5-2_i386.deb \ squeak-image3.7_5868-1_all.deb \ squeak-plugin_3.7b5-2_i386.deb \ squeak-sources3_0.0-1_all.deb \ squeak-vm_3.7b5-2_i386.deb \ squeak_3.7b5-2_all.deb #* ##### # # Squeak 3.6 # 2004feb29 # ##### # «squeak-3.6» (to ".squeak-3.6") # <http://www-sor.inria.fr/~piumarta/squeak/> # (code-c-d "squeakvm" "~/bigsrc/Squeak-3.6g-2/") # (code-c-d "squeakvmdoc" "~/bigsrc/Squeak-3.6g-2/platforms/unix/doc/") # (find-squeakvmfile "") # (find-squeakvmfile "README") # (find-squeakvmdocfile "HowToBuildFromSource.txt") # (find-squeakvmdocfile "3.2-5.RELEASE_NOTES" "libdir") # (find-squeakvmdocfile "3.2-1.RELEASE_NOTES" "without first installing it") # (find-squeakvmdocfile "") #* rm -Rv ~/bigsrc/Squeak-3.6g-2/ cd $S/http/www-sor.inria.fr/~piumarta/squeak/devel/dist/ tar -xvzf Squeak-3.6g-2.src.tar.gz -C ~/bigsrc/ tar -xvzf Squeak-3.6g-5420.image.tar.gz -C ~/bigsrc/ cd $S/http/www-sor.inria.fr/~piumarta/squeak/unix/release/ tar -xvzf Squeak-3.sources.tar.gz -C ~/bigsrc/Squeak-3.6g-2/ cd ~/bigsrc/Squeak-3.6g-2/ mv -v Squeak-3/usr/local/lib/squeak/SqueakV3.sources \ usr/local/lib/squeak/ #* cd ~/bigsrc/Squeak-3.6g-2/ mkdir bld cd bld ../platforms/unix/config/configure |& tee oc make |& tee om #* # (find-squeakvmfile "bld/omi") cd ~/bigsrc/Squeak-3.6g-2/bld/ rm -v /usr/local/doc/squeak/*.gz make install |& tee omi cd ~/bigsrc/Squeak-3.6g-2/ ./INSTALL |& tee oI #* # (find-fline "/tmp/Squeak-3/INSTALL" "preferred locations") # (find-fline "/tmp/Squeak-3.6g-2/INSTALL" "preferred locations") #* diff /tmp/Squeak-3/INSTALL /tmp/Squeak-3.6g-2/INSTALL #* rm -Rv /tmp/Squeak-3* #* ##### # # learning squeak # 2004mar11 # ##### # «learn-squeak» (to ".learn-squeak") # Squeak FAQ: <http://minnow.cc.gatech.edu/squeak/471> # (find-w3m "/home/edrx/snarf/http/minnow.cc.gatech.edu/squeak/471") (defun find-sqsrc (&rest rest) (find-fline "~/.squeak/srcs") (setq tab-width 2) (apply 'ee-goto-position rest)) (defun find-sqchg (&rest rest) (find-fline "~/.squeak/chgs") (setq tab-width 2) (apply 'ee-goto-position rest)) # (find-sqsrc "inspect it (i)") # (find-sqsrc "TextEditorYellowButtonMenu _ SelectionMenu") # (find-sqsrc "printIt: characterStream") # (find-sqsrc "evalString:") # (find-sqsrc "\nbrowseAllClasses") # (find-sqchg "A Browser is a tool") # (find-sqchg 0) #* # (find-fline "~/.squeak/") cd ~/.squeak/ tr \\\r \\\n < squeak.changes > chgs tr \\\r \\\n < SqueakV3.sources > srcs mkdir chg src #* # (find-lua50ref "string.find") cd ~/.squeak/chg/ lua50e ' sources = {} class = nil _, __, class_ = string.find( add = function (class, line) ' # (find-gstnode "A new class") # (find-gstnode "Defining methods") # (find-gstnode "The syntax") # (find-gstnode "The syntax" "#at:put:") 1 to: 62 do: [:j | bestIndex = 63 ifTrue: [ (stepSizeTable at: j) >= diff ifTrue: [bestIndex _ j]]]. ^ bestIndex # (find-fline "~/.squeak/") ##### # # the Squeak VM # 2005jan06 # ##### # «squeak-vm» (to ".squeak-vm") # (code-c-d "squeakvm" "~/bigsrc/squeak/squeak-3.7b5/") # (code-c-d "squeakvmdoc" "~/bigsrc/squeak/squeak-3.7b5/platforms/unix/doc/") # (find-squeakvmfile "src/vm/") # (find-squeakvmfile "src/vm/interp.c") # (find-squeakvmdocfile "README.Keyboard" "Button1 (red)") ##### # # squeak for debian, again (2006) # 2006aug11 # ##### # «squeak-debian-2006» (to ".squeak-debian-2006") # (find-angg ".zshrc" "mysqueak") # http://wiki.squeak.org/squeak/3616 # http://ftp.squeak.org/debian/squeak-debian-packages.pdf # http://wudika.de/~marcus/swiki/minnow.cc.gatech.edu/squeak/3616.html # http://www-sor.inria.fr/~piumarta/squeak/index.html # http://ftp.squeak.org/debian/dists/unstable/main/source/Sources # http://ftp.squeak.org/debian/dists/unstable/main/source/devel/ # http://ftp.squeak.org/debian/dists/unstable/main/source/devel/index.html # http://ftp.squeak.org/debian/dists/unstable/main/binary-all/Packages.gen # http://ftp.squeak.org/debian/dists/unstable/main/binary-all/devel/ # http://ftp.squeak.org/debian/dists/unstable/main/binary-all/devel/index.html # http://ftp.squeak.org/debian/dists/unstable/main/binary-i386/Packages # http://ftp.squeak.org/debian/dists/unstable/main/binary-i386/Packages.gen # http://ftp.squeak.org/debian/dists/unstable/main/binary-i386/devel/ # http://ftp.squeak.org/debian/dists/unstable/main/binary-i386/devel/index.html # (find-zsh "gethrefs < $S/http/ftp.squeak.org/debian/dists/unstable/main/source/devel/index.html") # (find-zsh "gethrefs < $S/http/ftp.squeak.org/debian/dists/unstable/main/binary-all/devel/index.html") # (find-zsh "gethrefs < $S/http/ftp.squeak.org/debian/dists/unstable/main/binary-i386/devel/index.html") # http://ftp.squeak.org/debian/dists/unstable/main/binary-i386/devel/squeak-vm_3.9.7-9_i386.deb # http://ftp.squeak.org/debian/dists/unstable/main/binary-all/devel/squeak-image3.9_3.9.7046.1_all.deb # http://ftp.squeak.org/debian/dists/unstable/main/binary-all/devel/squeak-sources3_3.7_all.deb # http://ftp.squeak.org/debian/dists/unstable/main/binary-all/devel/squeak_3.9.7-9_all.deb #* A=( $S/http/ftp.squeak.org/debian/dists/unstable/main/binary-i386/devel/squeak-vm_3.9.7-9_i386.deb $S/http/ftp.squeak.org/debian/dists/unstable/main/binary-all/devel/squeak-image3.9_3.9.7046.1_all.deb $S/http/ftp.squeak.org/debian/dists/unstable/main/binary-all/devel/squeak-sources3_3.7_all.deb $S/http/ftp.squeak.org/debian/dists/unstable/main/binary-all/devel/squeak_3.9.7-9_all.deb ) sudo dpkg -i $A #* # (find-fline "~/SQUEAK/") # (find-sh "rm -Rv ~/SQUEAK/") #* mkdir -p ~/SQUEAK/ cd ~/SQUEAK/ squeak & #* # (find-status "squeak-vm") # (find-vldifile "squeak-vm.list") # (find-udfile "squeak-vm/") # (find-status "squeak-image3.9") # (find-vldifile "squeak-image3.9.list") # (find-udfile "squeak-image3.9/") # (find-status "squeak-sources3") # (find-vldifile "squeak-sources3.list") # (find-udfile "squeak-sources3/") # (find-status "squeak") # (find-vldifile "squeak.list") # (find-udfile "squeak/") # (find-sh "tr \\\\r \\\\n < /usr/share/squeak/SqueakV3.sources") ##### # # squeak on etch # 2007jun30 # ###### # «squeak-on-etch» (to ".squeak-on-etch") # http://wiki.squeak.org/squeak/3616 # (find-fline "/etc/apt/sources.list") deb http://ftp.squeak.org/debian/ stable main deb-src http://ftp.squeak.org/debian/ stable main # (find-status "squeak") # (find-vldifile "squeak.list") # (find-udfile "squeak/") # (find-status "squeak-vm") # (find-vldifile "squeak-vm.list") # (find-udfile "squeak-vm/") # (find-status "squeak-image3.9") # (find-vldifile "squeak-image3.9.list") # (find-udfile "squeak-image3.9/") # (find-status "squeak-sources3.9") # (find-vldifile "squeak-sources3.9.list") # (find-udfile "squeak-sources3.9/") # (find-fline "/usr/bin/squeak") # (find-man "1 squeak") # (find-fline "/usr/bin/squeakvm") # (find-man "1 squeakvm") # (find-fline "/usr/share/squeak/") # (find-fline "/usr/lib/squeak/4.0.3-2202/") # (find-anggsh "tr '\\r' '\\n' < .squeak/SqueakV39.sources") # (find-anggsh "tr '\\r' '\\n' < .squeak/SqueakV39.sources" "authoring tools") # (find-anggsh "tr '\\r' '\\n' < .squeak/SqueakV39.sources" "print it (p)") # (find-anggsh "tr '\\r' '\\n' < .squeak/SqueakV39.sources" "polynomialEval: thisX") # (find-anggsh "tr '\\r' '\\n' < .squeak/SqueakV39.sources" "a Stream that accesses a FilePage") #(1 2 3) polynomialEval: 2 readFromFile: FileStream | f | f := (FileStream fileNamed: fileName) binary. self storeAIFFSamplesOn: f. f close. * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) # squeak /usr/share/squeak/squeak3.9.image.gz & zcat /usr/share/squeak/squeak3.9.image.gz > /tmp/squeak3.9.image cp -v /usr/share/squeak/SqueakV39.sources /tmp/SqueakV39.sources zcat /usr/share/squeak/squeak3.9.changes.gz > /tmp/squeak3.9.changes squeak /tmp/squeak3.9.image # (find-bgprocess "squeak /tmp/squeak3.9.image") /usr/share/squeak # (find-fline "~/.squeak/") # (find-fline "/usr/share/squeak/") # (find-sh0 "tr '\\r' '\\n' < ~/.squeak/SqueakV39.sources > /tmp/sources.txt") # (find-esgrep "grep -nH -e file: /tmp/sources.txt") # (find-esgrep "grep -niH -e filedirectory /tmp/sources.txt") # (find-esgrep "grep -niH -e writeOnFileNamed: /tmp/sources.txt") # (find-esgrep "grep -niH -e forceNewFileNamed: /tmp/sources.txt") # (find-fline "/tmp/sources.txt") (FileDirectory on: 'tmp') newFileNamed: 'foo' ##### # # squeak and binfmts # 2007jul01 # ##### # «squeak-binfmts» (to ".squeak-binfmts") # http://wiki.squeak.org/squeak/3616 # (find-available "binfmt-support") # (find-status "binfmt-support") # (find-vldifile "binfmt-support.list") # (find-udfile "binfmt-support/") update-binfmts --install squeak /usr/bin/squeakvm --magic '\x66\x19\x00\x00' update-binfmts --install squeak-be /usr/bin/squeakvm --magic '\x00\x00\x19\x66' echo ':squeak:M::\x66\x19\x00\x00::/usr/bin/squeakvm:' > /proc/sys/fs/binfmt_misc/register echo ':squeak-be:M::\x00\x00\x19\x66::/usr/bin/squeakvm:' > /proc/sys/fs/binfmt_misc/register ##### # # install-2022 # 2022feb25 # ##### # «install-2022» (to ".install-2022") # http://wiki.squeak.org/squeak/3616 the Debian packages have not been updated in over a decade # https://squeak.org/downloads/ * (eepitch-shell) * (eepitch-kill) * (eepitch-shell) cd ~/SQUEAK/ wget -nc http://files.squeak.org/5.3/Squeak5.3-19459-64bit/Squeak5.3-19459-64bit-202003021730-Linux.zip rm -Rv ~/SQUEAK/Squeak5.3-19459-64bit-202003021730-Linux/ unzip Squeak5.3-19459-64bit-202003021730-Linux.zip * (eepitch-shell3) * (eepitch-kill) * (eepitch-shell3) # (find-fline "~/SQUEAK/Squeak5.3-19459-64bit-202003021730-Linux/") cd ~/SQUEAK/Squeak5.3-19459-64bit-202003021730-Linux/ ./squeak.sh ##### # # smalltalkeditor-feb2022 # 2022feb25 # ##### # «smalltalkeditor-feb2022» (to ".smalltalkeditor-feb2022") # (find-fline "/tmp/emacs-squeak.txt") # (find-fline "~/SQUEAK/" "SmalltalkEditor.st") # (find-fline "~/SQUEAK/SmalltalkEditor.st") Okay! SmalltalkEditor.st 14.0 KB I had to remind myself of a lot of things (it's been years) sorry it took so long Okay download this, then in your Squeak: Tools menu, select File List and browse to where you downloaded this file Click it, then click the filein button Okay cool One last step Go to the tools menu and open a workspace and a transcript in either of them: SmalltalkEditor initialize and hit C-d Now here's what should happen: C-e should inject the contents of /tmp/emacs-squeak.txt and point; C-E should write the selection to the same file So you could test by selecting some text and hitting C-E, then seeing whether that file exists from Emacs (and if so, editing it there, saving, and hitting C-e in the workspace) you should see a little notification in the Transcript FANTASTIC!!! Does it work? Perfectly!!!!!!!!!! =) =) =) Yay If you want separate files that's a trivial change No, it's better that way!!! one last thing: try C-d on "SmalltalkEditor browse" (no quotes) and ensure the instance (rather than class) button is clicked look for methods emacsIn and emacsOut FWIW the time consuming thing here was figuring out how to rebind, and looking at the editor API to see how to grab the selection or insert at point It's probably been 17 years since I dug around the system in this way so I've forgotten everything ##### # # tweaks.cs # 2022feb28 # ##### # «tweaks.cs» (to ".tweaks.cs") # (find-fline "~/SQUEAK/tweaks.st") ; install this (find-epackage-links 'smalltalk-mode) ; save this somewhere (find-wget "https://0branch.com/snippets/tweaks.cs") ;; now in squeak: tools menu -> file list -> browse to file -> filein ##### # # autocompletion # 2022mar04 # ##### # «autocompletion» (to ".autocompletion") Tools -> Preferences -> search -> completion Tools -> Preferences -> search -> color -> Color Preference Example Extras -> Themes and colors -> Squeak (duller) Squeak -> Tutorials -> Useful expressions Apps -> Preference wizard update + completion ##### # # 20220302-transpose # 2022mar03 # ##### # «20220302-transpose» (to ".20220302-transpose") # (find-mvideo "20220302squeakdemo" "0:00") # (find-mvideo "20220303inaworkspace" "0:00") * (eepitch-shell3) * (eepitch-kill) * (eepitch-shell3) # (find-fline "~/SQUEAK/Squeak5.3-19459-64bit-202003021730-Linux/") cd ~/SQUEAK/Squeak5.3-19459-64bit-202003021730-Linux/ ./squeak.sh IRC chat, 2006aug11: <gulik> edrx: Try this in a Squeak workspace: (1 to: 100) collect: [ :each | each * 2 ]. <gulik> Select it and press alt-i. <gulik> Its a stupid bit of code that returns a list of numbers. <gulik> Here's a better example that shows how inspectors update: <gulik> Make a list: myList := OrderedCollection new. <gulik> Add stuff to it: 1 to: 100 do: [ :each | myList add: each ]. <gulik> select only "myList" and press alt-i. <gulik> and then change it: myList at: 1 put: 'hello'. <gulik> You should see it change in the inspector. <gulik> The debugger is pretty cool as well. Some people advocate coding using only the debugger. <gulik> That is, write some code, run it until it fails, write more code to make it not fail and "continue" the debugger until it fails again. Browser newOnClass: Workspace. Workspace browse. Squeak by Example: http://www.iam.unibe.ch/~scg/SBE/ http://vpri.org/html/writings.htm http://vpri.org/pdf/NSF_prop_RN-2006-002.pdf http://piumarta.com/cv/ http://www.zogotounga.net/comp/squeak/sqgeo.htm?fbclid=IwAR0rRsbY7GYUO_ihnm0QhRmK-H4GeQZWJj9SeskOzCiMxGutqEUYYRTggUs # Local Variables: # coding: utf-8-unix # End: