aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLibravatar Stefan Malzner <stefan@adlk.io>2019-06-05 17:18:52 +0200
committerLibravatar Stefan Malzner <stefan@adlk.io>2019-09-27 13:13:36 +0200
commit1d6df88ef74d67cc76a4879d89e05b3bda1742a4 (patch)
tree838590b9efa9b8b851f269844630612a2954371f /src
parentupdate electron & electron-builder to latest (diff)
downloadferdium-app-1d6df88ef74d67cc76a4879d89e05b3bda1742a4.tar.gz
ferdium-app-1d6df88ef74d67cc76a4879d89e05b3bda1742a4.tar.zst
ferdium-app-1d6df88ef74d67cc76a4879d89e05b3bda1742a4.zip
Fix spellchecker integration
Diffstat (limited to 'src')
-rw-r--r--src/webview/contextMenu.js5
-rw-r--r--src/webview/spellchecker.js18
2 files changed, 15 insertions, 8 deletions
diff --git a/src/webview/contextMenu.js b/src/webview/contextMenu.js
index 83914f581..2fdbcdca6 100644
--- a/src/webview/contextMenu.js
+++ b/src/webview/contextMenu.js
@@ -297,12 +297,13 @@ const buildMenuTpl = (props, suggestions, isSpellcheckEnabled, defaultSpellcheck
297}; 297};
298 298
299export default function contextMenu(spellcheckProvider, isSpellcheckEnabled, getDefaultSpellcheckerLanguage, getSpellcheckerLanguage) { 299export default function contextMenu(spellcheckProvider, isSpellcheckEnabled, getDefaultSpellcheckerLanguage, getSpellcheckerLanguage) {
300 webContents.on('context-menu', (e, props) => { 300 webContents.on('context-menu', async (e, props) => {
301 e.preventDefault(); 301 e.preventDefault();
302 302
303 let suggestions = []; 303 let suggestions = [];
304 if (spellcheckProvider && props.misspelledWord) { 304 if (spellcheckProvider && props.misspelledWord) {
305 suggestions = spellcheckProvider.getSuggestion(props.misspelledWord); 305 debug('Mispelled word', props.misspelledWord);
306 suggestions = await spellcheckProvider.getSuggestion(props.misspelledWord);
306 307
307 debug('Suggestions', suggestions); 308 debug('Suggestions', suggestions);
308 } 309 }
diff --git a/src/webview/spellchecker.js b/src/webview/spellchecker.js
index 9158b3b94..64575753f 100644
--- a/src/webview/spellchecker.js
+++ b/src/webview/spellchecker.js
@@ -1,6 +1,8 @@
1import { webFrame } from 'electron'; 1import { webFrame } from 'electron';
2import { SpellCheckerProvider } from 'electron-hunspell'; 2import { attachSpellCheckProvider, SpellCheckerProvider } from 'electron-hunspell';
3import { ENVIRONMENT } from 'hunspell-asm';
3import path from 'path'; 4import path from 'path';
5import { readFileSync } from 'fs';
4 6
5import { DICTIONARY_PATH } from '../config'; 7import { DICTIONARY_PATH } from '../config';
6import { SPELLCHECKER_LOCALES } from '../i18n/languages'; 8import { SPELLCHECKER_LOCALES } from '../i18n/languages';
@@ -10,11 +12,12 @@ const debug = require('debug')('Franz:spellchecker');
10let provider; 12let provider;
11let currentDict; 13let currentDict;
12let _isEnabled = false; 14let _isEnabled = false;
15let attached;
13 16
14async function loadDictionary(locale) { 17async function loadDictionary(locale) {
15 try { 18 try {
16 const fileLocation = path.join(DICTIONARY_PATH, `hunspell-dict-${locale}/${locale}`); 19 const fileLocation = path.join(DICTIONARY_PATH, `hunspell-dict-${locale}/${locale}`);
17 await provider.loadDictionary(locale, `${fileLocation}.dic`, `${fileLocation}.aff`); 20 await provider.loadDictionary(locale, readFileSync(`${fileLocation}.dic`), readFileSync(`${fileLocation}.aff`));
18 debug('Loaded dictionary', locale, 'from', fileLocation); 21 debug('Loaded dictionary', locale, 'from', fileLocation);
19 } catch (err) { 22 } catch (err) {
20 console.error('Could not load dictionary', err); 23 console.error('Could not load dictionary', err);
@@ -41,7 +44,7 @@ export async function switchDict(locale) {
41 provider.unloadDictionary(locale); 44 provider.unloadDictionary(locale);
42 } 45 }
43 loadDictionary(locale); 46 loadDictionary(locale);
44 provider.switchDictionary(locale); 47 attached.switchLanguage(locale);
45 48
46 debug('Switched dictionary to', locale); 49 debug('Switched dictionary to', locale);
47 50
@@ -58,12 +61,15 @@ export default async function initialize(languageCode = 'en-us') {
58 const locale = languageCode.toLowerCase(); 61 const locale = languageCode.toLowerCase();
59 62
60 debug('Init spellchecker'); 63 debug('Init spellchecker');
61 await provider.initialize(); 64 await provider.initialize({ environment: ENVIRONMENT.NODE });
62 // await loadDictionaries(); 65
66 debug('Attaching spellcheck provider');
67 attached = await attachSpellCheckProvider(provider);
63 68
64 debug('Available spellchecker dictionaries', provider.availableDictionaries); 69 debug('Available spellchecker dictionaries', provider.availableDictionaries);
65 70
66 switchDict(locale); 71 attached.switchLanguage(locale);
72 console.log('seas oida', attached, provider);
67 73
68 return provider; 74 return provider;
69 } catch (err) { 75 } catch (err) {