Bug 1255525

Summary: No 'add word' item in dictionary pop-up
Product: [Fedora] Fedora Reporter: Martin Gregorie <martin>
Component: evolutionAssignee: Milan Crha <mcrha>
Status: CLOSED UPSTREAM QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 22CC: lucilanga, mbarnes, mcrha, tpopela
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-08-21 07:06:03 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Martin Gregorie 2015-08-20 20:10:48 UTC
Description of problem: 
   Can't add new words to any dictionary used by the spell checker.


Version-Release number of selected component (if applicable): 
   3.16.4
 

How reproducible: 
   Always happens


Steps to Reproduce:
1. Start writing a new e-mail message

2. Type a sentence containing an unknown word, e.g. Messerschmitt,
   followed by a space. The word is underlined in red as expected
   
3. Right click on the word. The pop-up menu appears with items to:
   - allow spelling correction using the dictionary(s)
   - Ignore misspelt word
   - Undo
   - Redo
   - Cut
   - Copy   (disabled)
   - Paste  (disabled)
   - Paste Quotation
   - Input methods

   However, there is no item that can be used to add the word to a dictionary.
 
   Selecting a dictionary (I have two configured) allows the spelling to be
   corrected (but I'm unable to get it to display more than a single choice)
   but once again, there is no way shown to add the new word to the dictionary. 

Actual results: 
   As described. No way of extending the dictionary is offered and there 
   is never more than one alternative word shown.

Expected results:
   Selecting a dictionary should offer the choice of one or more replacement
   words *and* a way to add the word being checked to the dictionary

   Previous versions of Evolution have always provided both these abilities.

Additional info:
   One thing that Evolution has always lacked is the ability to remove or
   correct words added to a dictionary by mistake. 

   Ideally there would be some way of distinguishing between words that are
   part of the standard dictionary and those added by a user. There should 
   also be a way to delete or correct used-added words. 

   What purpose is served by the 'Input methods' item? 
   Changing the selected method does not seem to affect my ability to add 
   a word to a dictionary and nore does selecting and copying the word.

Comment 1 Milan Crha 2015-08-21 07:06:03 UTC
Thanks for a bug report. Testing it here, the main difference is the multiple dictionary case. For example, I wrote "apstair". With English (United States) dictionary Firefox suggests "upstairs" and "stair". The composer suggests the same when only this one dictionary is selected, together with the "Add Word to Dictionary" menu item and "Ignore Misspelled Word" menu item. When I enable also another dictionary, then the US dictionary contains only "upstairs", the second choice is missing for some reason. When the composer is opened with multiple dictionaries selected, the "Add Word to Dictionary" is completely missing, but disabling all but one dictionary and then enable the others makes it show.

That said, there is some oddity when multiple dictionaries are enabled.
I moved this upstream as [1]. Please see [1] for any further updates.

(In reply to Martin Gregorie from comment #0)
>    One thing that Evolution has always lacked is the ability to remove or
>    correct words added to a dictionary by mistake. 

I do not know where these things are usually done. Evolution uses enchant to get list of dictionaries and the other abilities. These things are shared by the applications (which also use enchant), thus that can be done in some 3rd-party software (which I'm not aware of).

>    What purpose is served by the 'Input methods' item? 
>    Changing the selected method does not seem to affect my ability to add 
>    a word to a dictionary and nore does selecting and copying the word.

Yes, that's not for it. You can change the input method for other keyboard layouts, like to be able to write some Japanese, Indie or any other language letters which are not directly within the keyboard layout.

[1] https://bugzilla.gnome.org/show_bug.cgi?id=753911

Comment 2 Martin Gregorie 2015-08-21 11:28:57 UTC
How can I raise an enhancement request for the ability to amend or delete user-added words in a dictionary?

I'm certain I'm not the only person to want this functionality.

Comment 3 Milan Crha 2015-08-21 13:12:54 UTC
To be honest, I'm not sure where such functionality should be added. It probably doesn't make much sense to add that UI to each application using enchant. I asked Google for "enchant remove added word" and one of the top result pages links to:

http://superuser.com/questions/90944/remove-words-from-evolution-user-dictionary

Comment 4 Martin Gregorie 2015-08-21 14:32:42 UTC
I've just found the enchant home page at http://abisource.com/projects/enchant/,
discovered that aspell is installed and had a play. Unfortunately, the one thing aspell doesn't do is modify a dictionary, but part of my wish list is answered because the files in .config/enchant obviously just contain user additions. As these files can apparently be edited with any old text editor, all thats needed is some code that sorts the additions lexicographically, presents them to the user, accepts corrections and deletions and applies them to the list.

Such a tool needs a graphical front end but can easily be a free-standing program that would be installed alongside Evolution and be part of either the Accessories or Office submenus.

Incidentally, I notice that LibreOffice also seems to lack any ability to correct or remove words that have been added to its dictionaries. Does it share common dictionaries with Evolution?

Comment 5 Milan Crha 2015-08-26 06:59:54 UTC
I do not know libreoffice, but if it uses enchant, then it shares the dictionaries. That's the reason why any such "manage my dictionaries" application should be a standalone application independent from anything else, thus any software using enchant could benefit from it (consider also no code duplication between applications).

Enchant doesn't seem to provide direct API to access user-entered words. One can check whether the word is added or not, but nothing more (there is no listing API). Accessing private application files isn't correct too. Thus, from my point of view, the enchant API should be extended first, then a new application can be created to manage user-entered words. Maybe such application could be part of enchant source code.