mirror of
https://github.com/zadam/trilium.git
synced 2024-11-18 05:35:56 +08:00
48 lines
No EOL
1.8 KiB
JavaScript
48 lines
No EOL
1.8 KiB
JavaScript
import optionsService from "./options.js";
|
|
|
|
export async function initSpellCheck() {
|
|
const options = await optionsService.waitForOptions();
|
|
|
|
if (!options.is('spellCheckEnabled')) {
|
|
return;
|
|
}
|
|
|
|
const {SpellCheckHandler, ContextMenuListener, ContextMenuBuilder} = require('electron-spellchecker');
|
|
const {remote, shell} = require('electron');
|
|
|
|
const spellCheckHandler = new SpellCheckHandler();
|
|
spellCheckHandler.attachToInput();
|
|
|
|
spellCheckHandler.switchLanguage(options.get('spellCheckLanguageCode'));
|
|
|
|
spellCheckHandler.currentSpellcheckerChanged.subscribe(() => {
|
|
console.debug(`Detected language is ${spellCheckHandler.currentSpellcheckerLanguage}`);
|
|
|
|
spellCheckHandler.currentSpellchecker.add("trilium");
|
|
spellCheckHandler.currentSpellchecker.add("https");
|
|
spellCheckHandler.currentSpellchecker.add("github");
|
|
spellCheckHandler.currentSpellchecker.add("unordered");
|
|
});
|
|
|
|
const contextMenuBuilder = new ContextMenuBuilder(spellCheckHandler, null, true, (menu, menuInfo) => {
|
|
// There's no menu.remove(id) so this is a convoluted way of removing the 'Search with Google' menu item
|
|
const oldItems = menu.items;
|
|
menu.clear();
|
|
oldItems.forEach(oldItem => {
|
|
if (!oldItem.label.includes('Google')) {
|
|
menu.append(oldItem);
|
|
} else {
|
|
menu.append(new remote.MenuItem({
|
|
label: 'Search with DuckDuckGo',
|
|
click: () => {
|
|
shell.openExternal(`https://duckduckgo.com/?q=${encodeURIComponent(menuInfo.selectionText)}`);
|
|
}
|
|
}));
|
|
}
|
|
});
|
|
});
|
|
|
|
new ContextMenuListener(async (info) => {
|
|
await contextMenuBuilder.showPopupMenu(info);
|
|
});
|
|
} |