|
Post by Robert on Mar 22, 2023 14:42:03 GMT -5
There is always an issue when new KB primitives are introduced: Prior versions can't use them. This is especially true when KB primitives are introduced in beta versions.
Example: The current beta supports the function (cMarkRight). The current production does not.
The underlying cause of this is that there is one, and only one, KB definition, and not unique definitions tied to specific version numbers. We have discussed this idea before, and you remained unconvinced about changing it. That's the breaks. (Oh well. I have moved on.)
And, of course, any change made NOW would not be available in versions prior to IT, so it's a problem that defies an 'instant' solution. It's a fix that we can introduce now, and *eventually* after enough versions are released, the problem will take care of itself.
Anyhow, suppose for this particular issue, there was a general 'work-around".
The idea is, if a KB primitive is encountered in a key mapping that doesn't exist, just ignore it, instead of beeping or flashing the screen.
I wouldn't want to overthink this. I am sure somebody might say "no, I want the error message" or "I want to make the warning optional" etc. etc. I'd rather not go there; and even if YOU did, I won't be one to ask for it. Now, if YOU want to make it optional, great - go for it. I'm not going to worry my pretty little head (which so happens to be neither pretty nor little; just saying) about it.
That's the idea.
|
|
|
Post by George on Mar 22, 2023 15:50:26 GMT -5
Robert: As a general thought, I don't have much of a problem with this. If someone switches and utilizes some new feature and THEN GOES BACK TO AN OLDER VERSION, then whatever happens, and how it's handled is THEIR problem.
We simply can't forecast and accomodate all these "What if" scenarios.
George
|
|
|
Post by Robert on Mar 22, 2023 17:09:54 GMT -5
I don't foresee someone amassing a large number of production versions and picking through them to find 'just the right version' for some quirk or tweak. The (much) more likely scenario is bouncing between a perhaps large number of betas and the prod version. This represents a relatively new situation. In the past, you rarely put out beta. There was the 'prod' version, a 'new prod version' and occasionally a beta or two.
These days, you don't operate that way. You have changed your development habits over the last few years to create many, many more beta versions and fewer prod releases.
You are right; we can't accommodate all possible what-if scenarios. But we can't accommodate all scenarios of ANY kind. That is true no matter how many developers were working on the code. It can't be done.
It's one thing to say "we'd can't do everything" which is obviously true, and saying that you won't try to protect users from obvious and foreseeable run-time issues. Users are mere mortals and will make mistakes. Trying to help them escape the fallout from an innocent (but likely) mistake is just the "nice" thing to do.
Running into prod/beta version conflicts is a foreseeable issue. Only question is, do you want to take time out from other activities to insert some "niceness" code to help them.
I am not going to overly worry about it, but I feel it's important to identify run-time issues. Even if you choose not to do anything about an issue, that's not the same as saying the issue doesn't exist.
|
|
|
Post by Stefan on Mar 22, 2023 17:27:20 GMT -5
FWIW... I'm with George on this one. I tend to run the latest beta and accept the risk that (a) it may not work - yet (rarely happens) (b) it may have lost a previous fix or two (sometimes happens) (c) Given a common CFG file, it may mess with some aspect of the current production version (d) If it does work, I'll stick with it until the next production release (e) and most importantly... "on my head be it" I reckon the people who run beta versions are smart enough to understand why their "production" copy may be misbehaving after they used the beta. To be really careful, they can always take a backup of the CFG file before launching the beta for the first time.
DO so with CFGMAINT -EXPORT so you can reload the CFG one table at a time if necessary.
|
|
|
Post by mueh on Mar 23, 2023 1:39:18 GMT -5
Not mentioned yet : Start BETA.exe -I TEST and choose unique KB Table . Both Production and TEST Instance can be run in parallel with different KB .
|
|
|
Post by George on Mar 23, 2023 8:35:08 GMT -5
Robert: This all started with your comment as to how to handle an invalid primitive, if triggered by going back to a previous release. Well the command is ignored and a Beep issued (audible and/or visual).
You suggest some 'niceness' code, to be kind to users. But you never indicated just what might be possible.
And I don't have a clue. An invalid primitive triggered by going back a version looks exactly the same as an invalid primitive created by a simple typo. The only logical thing I can think of to do is to alert the user.
George
|
|
|
Post by Robert on Mar 23, 2023 12:44:26 GMT -5
George, I didn't want to 'overspecify' things, because we both know the most innocent of comments can blow up into a controversy, a thing I don't want.
There is a 'dumb' way to handle this, and a 'smart' way. Naturally, a 'smart' way takes more work. And, the more work, the less likely that you will want to implement it.
Since I don't really know how interested you and other users are in the whole idea, I can give you suggestions. Here is what comes to mind:
1. When a key is mapped, you have a chance to test most or all of what was entered at the time the mapping is made. Right now, you do a limited amount of checking, like looking for mismatched parens. If you could harness your existing keyboard execution function to run in 'verify mode', you could 'pretend' to execute a key mapping - only it wouldn't actually 'do' anything, except for seeing if the mapping were valid. In that way, nearly all 'typo'-type errors could be caught right at mapping time.
2. To help with existing mappings, you could have a new primary command of KEYMAP VERIFY to apply the validation process to every existing mapping. That would help transition to the new way of handling mappings so that you could check things that were already defined.
3. Steps 1 and 2 would deal with the 'typo' question. The only other question is what to do with undefined functions in down releases. Again, this can either be 'smart' or 'dumb'. The dumb way would be to have a checkbox to enable or disable warnings for key mapping issues. Maybe I can about this, maybe I don't. I suppose if I were running a down release and had a mapping issue, I'd want to know at first, but not for the next 100 times I press the 'wrong' key. The 'smart' way would be to have a universal keyboard primitive list, with an entry for every primitive name, and the range of releases they are valid in. If you get an undefined name, you could look it up in this list. If the name is known in some other release, you could ignore it, otherwise warn of a problem.
4. Do I expect you to do any of these things? No.
R
|
|
|
Post by George on Mar 23, 2023 13:18:09 GMT -5
You're exactly right, what you suggest in a few words becomes a bucketload of work, just to avoid a BEEP (and ignore) when an invalid KB entry occurs (for whatever reason). Parsing KB strings and validating what could be any valid Primitive, Line Command (both Edit and FM) and Primary command (plus macro names) is just simply never going to get done.
I know I asked for suggestions, but I think you have to temper your suggestions of what may be possible in some idealistic programming world with what is possible with a single octogenarian programmer.
George
|
|
|
Post by Robert on Mar 24, 2023 12:55:51 GMT -5
I can't argue against that, even if I were inclined to argue, which I'm not. Never thought of myself as "septuagenarian" myself (hard word to spell, BYW) but I have to deal with it, too.
SPFLite is so complicated, there are a lot of "cool" things that could have been a part of it, if we know 15 years ago what it was going to turn into, which is a LOT more than it was when it actually WAS "lite".
That is like my own keyboard project, which is far, far more than I ever envisioned 8 years ago. I now wonder whether I will live long enough to even document it, much less get it out into the world somehow.
|
|
|
Post by George on Mar 24, 2023 14:15:37 GMT -5
Robert: Yeah, I know. Being in the 80's is not fun, physically, things change (i.e. deteriorate) much more rapidly than before. We're off on a cruise this summer, and I'm having serious concerns about the 'walkabouts' on shore excursions. Based on the results, this may be the end of cruising for us. (Unless we just stay on board, sit by the pool and holler "Garcon, Garcon, un autre s'il vou plait")
I've removed PURGE from FM, I'll have a look at the messages for DELETE.
George
|
|
|
Post by Robert on Mar 24, 2023 16:50:49 GMT -5
Be sure to look at my comment on the other thread
|
|