[CSIDE] The ChoiceScript IDE (v1.3.3 Now Available — 05/09/2022)

Hi Hazel, yeah that’s a known bug: @{} Multireplace nested syntax highlighting is over sensitive · Issue #47 · ChoicescriptIDE/main · GitHub

It’s proven a surprisingly difficult construct to highlight properly! Thanks for bringing it back to attention. I’ll see if the new editor changes help provide a fix. Good suggestion for a hotkey, I’ll log that request :slight_smile:

5 Likes

Blog update! This post covers news and upcoming changes—including a new editor!—and a New Year’s retrospective of the last year in CSIDE. Please feel free to comment with thoughts or suggestions; we’re always up for hearing from our users! Your feedback and requests are invaluable as we refine and expand CSIDE.

Thank you all so much for your support!

16 Likes

I’m a relatively new user of ChoiceScript and I was so happy to find CSIDE. The integrated testing is great, and I like being able to run the game within the app, rather than having to switch from an editor (I was using Atom on my Mac) to a browser. It saves me a lot of time.

Looking forward to your next updates, which sound even more awesome!

P.S. I second the love for indentation guides, when/if you’ve got the time to perfect them. That would be great.

5 Likes

Yeah, CSIDE is amazing and most definitely my platform of choice, but indenting is sort of an Achilles heel for it. It handles the first one fine, but when it’s an *if inside a *if things start to go haywire.

4 Likes

I find that using a monospace font helps a little, or maybe that’s just because that’s what I’m used to working with.

1 Like

Not sure if it is just me, but indenting works fine (on my laptop-- I tried editing code on my phones and it literally deleted all my indents. That sucked) pretty much 100% of the time.

But there is occasionally an issue where if I want to go back and try and fix it, it literally overwrite the next letters (e.g. “You koll the man” should be edited to “kill”, but becomes “kil”)

Interesting. I’ve not yet come across any of these issues. I’m just hopeless at keeping track of my indents :slight_smile: I’ll try the monospace font and see if that makes it easier for me.

I use CSIDE myself to my writing, it is certainly a good learning tool when you first start out, and I personally appreciate the spell checks the most. :slight_smile:

I am wondering, though. Have any authors written and published a completed book using CSIDE?

3 Likes

I did Nuclear Powered Toaster pretty much entirely in CSIDE. And my next one will be the same.

3 Likes

I didn’t start Highway Wars with it, but I was using it by the time I finished. Birth of a Hero was largely written using CSIDE. By now I find it difficult to use anything else!

But, I do have a question… currently I’m using version 1.0.1 (I think). How can I download the newest version (1.2?) The links in this thread and the website are not so clear about this… or is it by invitation only? (I’m happy to report bugs etc…)

1 Like

Hi erica, thank you so much for the feedback! It’s much appreciated, and very helpful to know which aspects you like (and feel could use improvement). Decent indent guides will come as part of the new editor, so stay tuned for more on that :slight_smile:

Would you mind giving me a little more information here, maybe a reproducer? It’s not something I’ve as yet been aware of.

I think you might just have pressed your Ins (insert) key, or some similar combo? You’ll get that behaviour on pretty much any text editor under the sun via that key. I never explicitly included that feature, but it wouldn’t surprise me if it’s bundled into the editor.

Newest is 1.2.1, and you should automatically get prompted to install it, as long as you’re update channel isn’t set to ‘none’. You can change the setting or restart CSIDE to trigger a re-check. Let me know if you’re still having problems :slight_smile: All feedback is not only welcome but encouraged! Especially bugs, but also any niggles and/or suggestions for improvement, and comments on what works.

2 Likes

Ah, sorry, I just found the settings (somehow it was not where I was expecting it… I am on 1.2.1.!)

2 Likes

Is there a way for me to organize all indents into tabs? Or do I just have to hunt down these pesky “spaces” and convert them into “tabs” manually? wololo
EDIT: Never mind, I found an option to use tabs instead of spaces with the smart indent, also I hunted the spaces and converted them into tabs. wololololo

2 Likes

I don’t have a specific example, I weeded them out in testing. But for an example, if a #choice has an *if branching inside of it, I always have to make it the last choice in the tree. If I don’t, everything below it seems to become unreachable or it throws a fit in testing. Because once you hit Return after finishing the last of the gotos for the If branches, you are too far indented (as it just drops you back like you were doing yet another *if for that chain instead of for another choice). I delete four spaces to theoretically get it back in line, but it does not seem to work.

I may be expressing this poorly.

If you hold down SHIFT whilst hitting RETURN, your cursor will drop back to beginning of the line (essentially ignoring your indentation context). Does that help at all @hustlertwo?

2 Likes

I think it just might. I should have asked this a year ago.

2 Likes

We’re open books here, however small or trivial the question might seem, never hesitate to ask :slight_smile:

2 Likes

Here’s an example of the issue; the shift and return thing did not stop it, unfortunately, Whenever I have a choice below one which has *if branches inside of it, I always get the ‘illegal to fail out of a *choice’ warning, like this code does here. But if I switch the choices so the *if one is on bottom it goes just fine.

*choice
    #"Stay strong, kid.  Weekend is coming!"
        *set indy +1
        "There's only a few more days, why don't you see if you can stick it out?  The longer you're there, the better chance you get to know some people better."
        
        You hear the sound of a long swallow on the other end, as $!{aname} composes ${ahimself}.  "Okay, $!{mama}.  I'll keep trying.  I love you."
        
        You try to respond in kind, but ${ahe} has already disconnected.
        *goto keepcamp
    #"I'm sorry, but you wanted to be at this camp.  It's too late to cancel now."
        *set trad +1
        *if (lump < 1)
            There's a note of weary resignation in ${ahis} voice.  "I understand.  You're right, I did want to come.  So I can make it through to the end.  Bye, $!{mama}."
            
            You try to say goodbye as well, but ${ahe} has already disconnected the call.
            *goto keepcamp
        *if (lump > 0)
            $!{ahe} almost screams in response.  "No!  No I didn't!  I told you already that I didn't want to be here and you told me to love it or lump it.  I tried to love it, it didn't work, and now you're acting like this was my choice.  Why are you so mean?"
            *goto lumpsplit
    #"I understand.  I'll come get you this afternoon, you don't have to keep on with the rest of the week."
        It sounds as if ${ahe} might be crying on the other end.  "Thank you so much, $!{mama}.  I just want to have some fun again and not be with a bunch of people I don't know."
        *goto leaving
        *if (lump < 1)
            There's a note of weary resignation in ${ahis} voice.  "I understand.  You're right, I did want to come.  So I can make it through to the end.  Bye, $!{mama}."
            
            You try to say goodbye as well, but ${ahe} has already disconnected the call.
            *goto keepcamp
        *else
            $!{ahe} almost screams in response.  "No!  No I didn't!  I told you already that I didn't want to be here and you told me to love it or lump it.  I tried to love it, it didn't work, and now you're acting like this was my choice.  Why are you so mean?"
            *goto lumpsplit

Quicktest always tests what happens if no *if commands are followed (even if that’s impossible) unless you specifically use *else or put the *goto outside of the *if command.

The basic idea is that quicktest will always try to find a way to fail all the *if arguments. In your case, the qtest will fail all of your *if lump argument (by “fabricating” lump = 0.5, I suppose), and the code will skip all the *gotos.

One of the solution is as @will suggested, and another would be using implicit_control_flow, I suppose.

1 Like