inscryb-markdown-editor icon indicating copy to clipboard operation
inscryb-markdown-editor copied to clipboard

Spellchecker language

Open Akirami opened this issue 8 years ago • 3 comments

Hi,

I'm using vue-simpleMDE for my project and i found your package, i'm interested by it and happy to know that someone continue the work.

So i would like to know if you've found a way to integrate spellchecker in other language than english, if not i'll do it in the next week / month (pass option to typo.js, search for common dictionnaries in other language, integrate it in SimpleMDE / InscrybMDE).

Let me know if you are interested and like tou see i really need a spellchecker ;) (i'm french)

Also, it would be a great thing if you could briefly summarize the change you made to SimpleMDE.

Thanks.

Akirami avatar Apr 17 '18 03:04 Akirami

Right now the project is using codemirror-spell-checker for spell checking, another project by sparksuite. I like the idea of moving to standardized dictionaries. If typo.js is currently maintained then I think it would be a great move. I would love a PR if you find the time.

As far as changes, I have updated the libraries due to security issues and added Font Awesome 5 support. Nothing really big yet. I have noticed a few bugs and feature that I plan to implement in the near future.

CWharton avatar Apr 17 '18 13:04 CWharton

I saw codemirror-spell-checker and there is no option to select a different language than en_US, it need many rewrite.

I've make test this night with the use of codemirror-typo instead of codemirror-spell-checker and it work,

in simplemde.js

var codeMirrorTypo = require("codemirror-typo");
//--- add en replace at line 1466 //
var mode, backdrop;
	/*if(options.spellChecker !== false) {
		mode = "spell-checker";
		backdrop = options.parsingConfig;
		backdrop.name = "gfm";
		backdrop.gitHubSpice = false;

		CodeMirrorSpellChecker({
			codeMirrorInstance: CodeMirror
		});
	} else {
		mode = options.parsingConfig;
		mode.name = "gfm";
		mode.gitHubSpice = false;
	}*/

	// Find language options
	if (options.isSpellCheck !== false) {
		mode = "spell-checker";
		backdrop = options.parsingConfig;
		backdrop.name = "gfm";
		backdrop.gitHubSpice = false;
	} else {
		mode = options.parsingConfig;
		mode.name = "gfm";
		mode.gitHubSpice = false;
	}	

	this.codemirror = CodeMirror.fromTextArea(el, {
		mode: mode,
		backdrop: backdrop,
		theme: "paper",
		tabSize: (options.tabSize != undefined) ? options.tabSize : 2,
		indentUnit: (options.tabSize != undefined) ? options.tabSize : 2,
		indentWithTabs: (options.indentWithTabs === false) ? false : true,
		lineNumbers: false,
		autofocus: (options.autofocus === true) ? true : false,
		extraKeys: keyMaps,
		lineWrapping: (options.lineWrapping === false) ? false : true,
		allowDropFileTypes: ["text/plain"],
		placeholder: options.placeholder || el.getAttribute("placeholder") || "",
		styleSelectedText: (options.styleSelectedText != undefined) ? options.styleSelectedText : true
	});	
	if (options.isSpellCheck !== false) {
		codeMirrorTypo(this.codemirror, options.spellCheckerLang.lang, options.spellCheckerLang.path);
	}

And in simplemde configs, only add:

configs: {
  autofocus: true,
  forceSync: true,
  ...,
  spellChecker: false,
  isSpellCheck: true,
  spellCheckerLang: {
    lang: 'fr_FR',
    path: 'path/to/dictionary/fr_FR/'
  }

It's just a work around and i notice some problem, the dic is loaded every time the editor is called (XMLHttpRequest in codemirror-typo/typo-tools.js) and it make 2 second to scan every word (in dev mod), even with short text, i think it's maybe the gutter with the proposal word's replacement and maybe i need to disable this before continue.

I think I'll have time in the next days, so i continue but some help will be welcome ;)

Akirami avatar Apr 17 '18 16:04 Akirami

I don't think spark suite-spell-check needs a lot of rewrite: I had made a PR a long time ago but it didn't go through. If you want to integrate my code it's on https://github.com/ETSoftware/codemirror-spell-checker. Also, it supports standard dicts.

eutampieri avatar Oct 31 '18 15:10 eutampieri