nvaccess / nvda

NVDA, the free and open source Screen Reader for Microsoft Windows
Other
2.09k stars 628 forks source link

Add Enable/Disable for Individual Dictionary Entries #13660

Open britechguy opened 2 years ago

britechguy commented 2 years ago

Is your feature request related to a problem? Please describe.

Over a long period of time it is possible for speech dictionaries to become quite extensive and, for those who use regex entries in particular, some of these are very complicated to construct. There are times when certain specific dictionary entries are not desirable when performing a specific task or tasks, but you really don't want to have to manually preserve them in another file, delete them from the dictionary temporarily, and then put them back later. It would be very nice to have a checkbox per dictionary entry or something similar to the Enabled/Disabled mechanism in Add-Ons Manager associated with dictionary functionality.

Describe the solution you'd like

I'd like to see some mechanism that allows one to select individual dictionary entries for being active/inactive | enabled/disabled. It would also be nice, but not strictly necessary, to have a single "disable all" control for those rare occasions where you may wish to suspend all dictionary processing on a temporary basis. This would be available in all dictionaries, including the temporary dictionary.

Describe alternatives you've considered

Additional context

feerrenrut commented 2 years ago

Another alternative is to implement per profile speech dictionaries. This has been attempted previously but was abandoned: https://github.com/nvaccess/nvda/pull/11005 and issue https://github.com/nvaccess/nvda/issues/3656

britechguy commented 2 years ago

Actually, the two things are not mutually exclusive.

The recently created Application Dictionary add-on (https://addons.nvda-project.org/addons/applicationDictionary.en.html) is not exactly a profile dictionary, but the concept is largely the same.

There is still an advantage to being able to turn on/off specific dictionary entries for testing purposes even if they are in a given application or profile dictionary.

cary-rowen commented 1 year ago

Any progress on this? As far as I know @marlon-sousa can do this part of the job perfectly, but it doesn't have the exact permission of NVAccess. I would like to know @feerrenrut @seanbudd @michaelDCurran's opinion on this, it may be crucial. Below is my request: https://github.com/marlon-sousa/EnhancedDictionaries/issues/3

marlon-sousa commented 1 year ago

This is the solution I have coded while profile dictionaries are not implemented on NVDA core.

https://github.com/marlon-sousa/EnhancedDictionaries

It is a full implementation of dictionaries per profile. Profiles do not inherit default dictionary entries unless you choose to do so.

I was the original proposer and writer of some prs which stalled because some wanted profile dictionaries to inherit default dictionary entries by default, which would hardly be useful to solve this specific issue, while others like me coded the feature on a premise of no inherit unless one wants to.

The addon here is a port of the stalled pr, and it works for me and for a couple of others.

Independently of the inheritance schema, it is still my opinion that NVDA needs that feature by default. I proposed to code whatever schema NVAccess decided, but they did not decide, so I didn't code.

If they ever decide what to do I will be happy to implement that.

If they decide for inheritance by default, I will keep this addon around because in my case it is important that inheritance is controlled by the user.

seanbudd commented 1 year ago

There needs to be an implementation plan outlined on this issue before we can provide feedback.

It is not immediately clear what these add-ons do based on these comments. Please outline the changes you intend to make to NVDA core to solve the issue described here.

britechguy commented 1 year ago

I'm giving this a bump to try to get it attention again or see if it's even under consideration.

Even if I had to reload NVDA after tweaking whether a given dictionary entry (or multiple entries) were to be enabled or disabled on next startup, that would be fine.

Those of us doing lots of testing, and where keeping the history of what we tested right in our dictionaries while not having it be always enabled, would bless whoever might be able to implement this.

britechguy commented 3 weeks ago

OK, we're one and a quarter years past my last bump, so I'm bumping this again.

There is currently an issue being discussed on the NVDA Group in topic, Issues with how the Tiflotecnia Voices for NVDA add-on reads headings with dates written in a particular way., where my personal second step after having done the basic NVDA troubleshooting steps would be to run NVDA with the dictionaries disabled entirely. On more than one occasion some weirdness in how I put together a regex causes it to capture (or miss) something I think it should have handled. And the fact that dictionary processing does not "fall out" after the first replacement, but keeps going, has the potential to make things all the more nightmarish.

There needs to be an equivalent to "start with add-ons disabled" for dictionary processing, too, as there have been many examples over time of where a dictionary flub is what's causing NVDA to pass something to the synth to speak that no one thought it would. Being able to isolate dictionary issues can be as important as being able to isolate add-on issues.

marlon-sousa commented 3 weeks ago

Can uyou please create an issue only for the disable dictionaries?

Please mark me whem you create it.

This one is implementable, but it would require more work and discussions.

The new one should make no arm and is therefore more likely to be accepted, and coding it is also easier.

britechguy commented 3 weeks ago

Can you please create an issue only for the disable dictionaries?

Done: Create an option to start/restart NVDA with all user dictionaries disabled #17129