Workbench Selecting Library

I thought I’d do a little testing of the beta of adv3Lite 1.6 using my current project (post-Comp).

Silly rabbit. I know Workbench is old-fashioned, but I’ve run into a serious problem that really shouldn’t exist … and of course Mike Roberts is probably no longer interested. Plus, I’m pretty sure the Workbench documentation was written before there was an alternate library, so maybe he never anticipated this issue, much less wrote about it.

Here’s the deal:

I created an entirely new folder in my TADS 3 folder. Into it I dropped all of my source code files, plus a folder containing the 1.6 beta. I created a new project. I then went into Tools > Options > Library Paths and created a link to the location of the 1.6 beta. But when I went back to my actual project, the new Library Path was still selected!

Apparently the choice of library path is global to Workbench; it’s not stored with the project.

But now I can’t get it back. Not only is the file directory pane in Options screwed up, but when I manually type in the link, close the project (my original project) and reopen it, the files in the project browser STILL show the new 1.6 library files,

I don’t know what order I did a bunch of stuff in, trying to fix this – but now I have my original project open but there’s NO library in it, even though I have given it a Library Path – and I don’t know how to add a library. Apparently Mike’s idea was that you were going to choose a library path when you create the project, and then never change it afterward. I could be wrong about that – maybe this is all just user error on my part, and in any case I shouldn’t engage in mind-reading. But this is infuriating! I now have a project that has no library. I can right-click on things in the project browser pane and select “Add Folder,” but then I get a dialog box that says, “The selected project section can’t contain folders.” How am I supposed to add a library, then?

Right at this moment I can’t compile my game at all. Workbench has defeated me. Help!

1 Like

I’ve managed to put together my original project. I did it by creating an entirely new project (after setting the Library Path correctly). Then I manually used File > Open File to load each of my 38 source files, one at a time. There is no group file loading from this dialog box. Each time you open the dialog box, it defaults to .js files so you have to manually select .t files in a drop-down. And then, after the file is open in the Workbench editor, you have to right-click on it to add it to the project. 38 times What a thrill.

It’s almost enough to convince me to switch over to VS Code, but not quite. I have a pronounced disinterest in changing my entire workflow in order to detour around one or two specific obstacles.

Unfortunately, what that means is, I pretty much can’t test advLite 1.6 beta until I’m able to set the current project aside and start something new from scratch, because switching back and forth between two projects that don’t use the same library seems to be just a nightmare in Workbench.

Mha. Perhaps I’m old-fashioned, but I don’t use workbench/IDE solution, only an advanced editor (open project and syntax highlighting) and the good ol’ shell for the actual compilation.

I’m currently working on my major TADS 3 WIP, whose is under adv3, but if I want to experiment around a3lite 1.6ß, all I need is a little copyedit of the relevant .t3m files, pointing to the dir hosting 1.6ß (a3lite-1.6ß/ instead of the 1.5 dir (a3lite-1.5/)

Best regards from Italy,
dott. Piergiorgio.

I’m not sure I have a definitive answer to this (I don’t want to risk replicating your experience!), but I thought I’d take a quick look at my own setup.
I have my adv3Lite folder under my TADS 3\extensions folder.
My Workbench setup lists this folder where you found it, under Tools > Options > Library Path. But it looks as if you should be able to list more than one path there.
So what I’d attempt is to create an adv3LiteBeta folder under extensions and put the adv3Lite beta files in there, and then add that to the list of library paths.
Then, in the project for which you want to test the adv3Lite beta, you could remove the current adv3Lite library files by right-clicking on advLite library under the Source Files and select remove adv3Lite.tl from project.
Then right-click on Source Files, select add file, navigate to the adv3Lite beta folder and select the adv3Lite.tl and select that.
(I think this is more or less what I did to unload and reload adv3Lite to cure a OneDrive synchronisation issue).
Might this work?

1 Like

Caution is called for, you’re right about that. Yes, you can list more than one library path, but if both paths contain libraries, which path will the Project use? I have no idea.

I’m speculating (and again, I don’t plan to test this right away) that if I have a library in a folder called adv3Lite, I may be able to have a separate folder called, let’s say, inactive_adv3Lite. I could then rename the folders before opening Workbench. At which point it would be necessary to do a full recompile before starting work, but that ought to cause Workbench to use whatever library is in the path.

You may be right about that. However, all of the source code files will also need one line of the header changed.

When I switched from adv3 to adv3Lite, I found that I needed to make more changes to my source code than I expected. The basic mechanism is similar (and of course the TADS programming language itself is the same), but for instance the way you specify the vocabulary for objects is different.

I would expect Workbench to continue using the same library it loaded whichever .tl file it used when the project was created (or whatever it had been explicitly changed to), but renaming the folders might just confuse things further.

If you want to try renaming things it might be safer to rename the adv3Lite.tl file in your adv3Lite beta folder to adv3LiteBeta.tl and then edit the adv3lite.tbd-project-starter file in the same folder to read:

name: Adv3liteBeta
desc: Create a game based on the Adv3Lite library.  Adv3Lite is a
  replacement for the standard Adv3 library that's smaller, easier
  to learn, and easier to use, but still offers the best features of
  Adv3 (plus some new tricks of its own).
source: template\start.t $.t
lib: adv3LiteBeta.tl
define: LANGUAGE=english

That way, you should be able to keep track of which version of the library you’re using.

yea, and this is one of the reason a pair of major WIP remain under adv3; Actually the lone feature of a3Lite I needed, the scenes was first released as an adv3 contribuition, namely scenes.t (note that many of Eric’s contribuitions to adv3 seems to be the basis, if not the very origin, of a3Lite, so I think that these contribuition are a valid alternative to porting an adv3 WIP to a3Lite)

albeit frozen until 1.6 release, I’m studying a3Lite, and the relevant .t3m’s points to the dir containing a3Lite (note that actually I use a synoptic method, using Learning a3Lite and comparing it with Learning Tads3 so, I’m actually studying the differences between the two libraries…)

Best regards from Italy,
dott. Piergiorgio.