Monday, November 08, 2010 at 12:07 AM.
system.verbs.globals.runSelection
on runSelection () {
<<Fri, Aug 16, 1996 at 6:02:42 AM by DW
<<runs cards
<<modified for Frontier 3.0 -- 11/12/93 DW
<<handles compiled code
<<doesn't display result if it hasn't been set
<<uses window.msg too, in case the main window is hidden
on kernelcall () {
kernel (window.runselection)};
on runoutlineselection () {
<<deposit the value as a comment underneath the headline
<<operate on the original front window, allow for side-effects
origwindow = window.frontmost (); <<remember original frontmost window
origcursor = op.getcursor (); <<remember original bar cursor
wp.setTextMode (false);
s = displaystring (evaluate (op.getlinetext ())); <<evaluate the expression
if origwindow equals "" { <<avoid errors in menu-script windows
if window.frontmost () notequals "" {
<<special case for windows linked into menu bars
<<if the script caused a window change, don't try to deposit value comment
return (true)}}
else {
try {
target.set (origwindow)}
else { <<it must have been deleted by the script
return (true)}};
bundle { <<deposit comment in window with script
op.setcursor (origcursor); <<restore the cursor, avoid side-effect errors
local (displayon = op.getdisplay ());
op.setdisplay (false); <<turn the display off
op.expand (1);
if op.go (right, 1) { <<the line has at least one subhead
if script.iscomment () { <<smash pre-existing value, stored in a comment line
op.setlinetext (s);
op.go (left, 1);
op.setdisplay (displayon); <<restore the outline display
return (true)};
op.go (left, 1)}; <<put cursor back on line with program text
op.insert (s, right);
script.makecomment ();
op.setdisplay (displayon); <<restore the outline display
op.go (left, 1);
target.clear ()};
return (true)};
on runtableselection () {
wp.setTextMode (false);
local (adr = table.getCursor ());
local (result);
case typeOf (adr^) {
codeType; <<11/12/93 DW
scriptType {
result = adr^ ()};
stringType {
result = evaluate (adr^)};
binaryType { <<Fri, Aug 16, 1996 at 6:04:10 AM by DW
if getBinaryType (adr^) == 'CARD' {
card.run (adr)}
else {
speaker.beep ()}}}
else {
speaker.beep ()};
if result != nil { <<11/12/93 DW
local (s = displaystring (result));
msg (s);
window.msg (s)};
return (true)};
on runwpselection () {
local (s = wp.getSelText ());
msg (displaystring (evaluate (s)));
return (true)};
on runmenuselection () {
local (s);
menu.getScript (@s);
s ();
return (true)};
local (frontwindow = window.frontmost ());
if frontwindow == "" { <<no window open, or it's not an object db window
speaker.beep ();
return (false)};
if window.ismenuscript (frontwindow) { <<it's a script linked into a menubar
<<window.frontmost can't return an address for these windows
runoutlineselection ();
return (true)};
if defined (frontwindow^) { <<see if it's a script or an outline
case typeOf (frontwindow^) { <<override for script-implemented running
outlinetype;
scripttype {
return (runoutlineselection ())};
tabletype {
return (runtableselection ())};
wptexttype {
return (runwpselection ())};
menubartype {
return (runmenuselection ())}}};
if not kernelcall () { <<default action: use kernel
speaker.beep ();
return (false)};
return (true)}
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.