LanguageTool.py 文件源码

python
阅读 28 收藏 0 点赞 0 评论 0

项目:languagetool-sublime 作者: gtarawneh 项目源码 文件源码
def run(self, edit, forceServer = None):
        global problems
        global displayMode
        global ignored
        global hscope
        v = self.view
        settings = sublime.load_settings(lt_settings_file)
        server = getServer(settings, forceServer)
        displayMode = settings.get('display_mode', 'statusbar')
        hscope = settings.get("highlight-scope", "comment")
        ignored = loadIgnoredRules()
        strText = v.substr(sublime.Region(0, v.size()))
        checkRegion = v.sel()[0]
        if checkRegion.empty():
            checkRegion = sublime.Region(0, v.size())
        v.run_command("clear_language_problems")
        lang = getLanguage(v)
        ignoredIDs = [rule['id'] for rule in ignored]
        matches = LTServer.getResponse(server, strText, lang, ignoredIDs)
        if matches == None:
            setStatusBar('could not parse server response (may be due to quota if using http://languagetool.org)')
            return
        for match in matches:
            problem = {
                'category': match['rule']['category']['name'],
                'message': match['message'],
                'replacements': [r['value'] for r in match['replacements']],
                'rule' : match['rule']['id'],
                'urls' : [w['value'] for w in match['rule'].get('urls', [])],
            }
            offset = match['offset']
            length = match['length']
            region = sublime.Region(offset, offset + length)
            if not checkRegion.contains(region):
                continue
            ignored_scopes = settings.get('ignored-scopes', [])
            # view.scope_name() returns a string of space-separated scope names
            # (ending with a space)
            pscopes = v.scope_name(region.a).split(' ')[0:-1]
            for ps in pscopes:
                if any([fnmatch.fnmatch(ps, i) for i in ignored_scopes]):
                    ignored = True
                    break
            else:
                # none of this region's scopes are ignored
                regionKey = str(len(problems))
                v.add_regions(regionKey, [region], hscope, "", sublime.DRAW_OUTLINED)
                problem['orgContent'] = v.substr(region)
                problem['regionKey'] = regionKey
                problems.append(problem)
        if problems:
            selectProblem(v, problems[0])
        else:
            setStatusBar("no language problems were found :-)")
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号