def check(self, view_id):
        view = GrammarChecker.get_view(view_id)

        if view is not None:
            text, start = GrammarChecker.text(view)
            args = (view_id, text, start, self.finish)
            threading.Thread(target=GrammarChecker.check_view, args=args).start()
    def on_new(self, view):
        vid = view.id()
        self.loaded.add(vid)

        v = view.settings()
        if not v.has("enable_checkbounce_grammar"):
            default = sublime.load_settings("CheckBounce.sublime-settings").get("check_grammar", True)
            v.set("enable_checkbounce_grammar", default)
        v.add_on_change('checkbounce_grammar_monitor', lambda: self.reassign(view))

        GrammarChecker.assign(view, self.finish)
    def hit(self, view):
        if not ST3:
            self.check(view.id())

        self.checked.add(view.id())
        if view.size() == 0:
            g = GrammarChecker.get_checker(view.id())
            if g:
                g.clear()
            GrammarChecker.reload()
            sublime.set_timeout(lambda: view.erase_status('checkbounce-grammar'), 0)
            return

        const.grammar_queue.hit(view)
Example #4
0
 def is_enabled(self):
     win = sublime.active_window()
     if not win: return False
     view = win.active_view()
     if not view:
         return False
     whitelisted, _ = GrammarChecker.is_whitelisted(view)
     return whitelisted
Example #5
0
 def is_checked(self):
     win = sublime.active_window()
     if not win: return False
     view = win.active_view()
     if not view:
         return False
     v = view.settings()
     whitelisted, _ = GrammarChecker.is_whitelisted(view)
     return v.get("enable_checkbounce_grammar", True) and whitelisted
    def on_selection_modified(self, view):
        vid = view.id()
        if vid in const.grammar_errors:
            gram_regions = const.grammar_error_regions[vid]
            try:
                sel = view.sel()[0]
            except IndexError:
                view.erase_status('checkbounce-grammar')
                return
            for region in gram_regions:
                if sel.intersects(region):
                    c = GrammarChecker.get_checker(vid)
                    if c:
                        expl = c.get_explanation_for_region(region)
                        if expl:
                            view.set_status('checkbounce-grammar', expl)
                            return

            view.erase_status('checkbounce-grammar')
        else:
            view.erase_status('checkbounce-grammar')
    def reassign(self, view):
        v = view.settings()
        v.clear_on_change("checkbounce_grammar_monitor")
        on = v.get("enable_checkbounce_grammar")
        vid = view.id()

        if not vid in self.prev_syntax:
            self.prev_syntax[vid] = v.get("syntax")
        elif self.prev_syntax[vid] != v.get("syntax"):
            GrammarChecker.remove(view.id())
            view.erase_status('checkbounce')
            GrammarChecker.assign(view, self.finish)

        if on != self.on:
            self.on = on
            GrammarChecker.remove(view.id())
            sublime.set_timeout(lambda: view.erase_status('checkbounce-grammar'), 0)
            GrammarChecker.assign(view, self.finish)
            GrammarChecker.reload()
            self.on_modified(view)

        if not on:
            GrammarChecker.remove(view.id())
            sublime.set_timeout(lambda: view.erase_status('checkbounce-grammar'), 0)

        v.add_on_change("checkbounce_grammar_monitor", lambda: self.reassign(view))
 def check_grammar(self, view, check=False):
     if check and GrammarChecker.assign(view, self.finish) != None:
         self.hit(view)
 def on_close(self, view):
     vid = view.id()
     view.settings().clear_on_change("checkbounce_grammar_monitor")
     if vid in self.loaded:
         GrammarChecker.remove(vid)
         self.loaded.remove(vid)