summaryrefslogtreecommitdiff
path: root/script/provider/spell.lua
diff options
context:
space:
mode:
Diffstat (limited to 'script/provider/spell.lua')
-rw-r--r--script/provider/spell.lua56
1 files changed, 56 insertions, 0 deletions
diff --git a/script/provider/spell.lua b/script/provider/spell.lua
new file mode 100644
index 00000000..b315b3aa
--- /dev/null
+++ b/script/provider/spell.lua
@@ -0,0 +1,56 @@
+local suc, codeFormat = pcall(require, 'code_format')
+if not suc then
+ return
+end
+
+local fs = require 'bee.filesystem'
+local config = require 'config'
+local diagnostics = require 'provider.diagnostic'
+
+local m = {}
+
+function m.loadDictionaryFromFile(filePath)
+ return codeFormat.spell_load_dictionary_from_path(filePath)
+end
+
+function m.loadDictionaryFromBuffer(buffer)
+ return codeFormat.spell_load_dictionary_from_buffer(buffer)
+end
+
+function m.addWord(word)
+ return codeFormat.spell_load_dictionary_from_buffer(word)
+end
+
+function m.spellCheck(uri, text)
+ if not m._dictionaryLoaded then
+ m.initDictionary()
+ m._dictionaryLoaded = true
+ end
+
+ local tempDict = config.get(uri, 'Lua.spell.dict')
+
+ return codeFormat.spell_analysis(uri, text, tempDict)
+end
+
+function m.getSpellSuggest(word)
+ local status, result = codeFormat.spell_suggest(word)
+ if status then
+ return result
+ end
+end
+
+function m.initDictionary()
+ local basicDictionary = fs.path(METAPATH) / "spell/dictionary.txt"
+ local luaDictionary = fs.path(METAPATH) / "spell/lua_dict.txt"
+
+ m.loadDictionaryFromFile(basicDictionary:string())
+ m.loadDictionaryFromFile(luaDictionary:string())
+end
+
+config.watch(function (uri, key, value, oldValue)
+ if key == 'Lua.spell.dict' and uri ~= nil then
+ diagnostics.refresh(uri)
+ end
+end)
+
+return m