def __call__(self, errors): '''Show errors in the ui. @errors An instance of `ErrorInfoCollection`. ''' view = get_active_view() # TODO(guillermooo): Use tokens to identify requests:file. if not self.compare_paths(errors.file, view.file_name()): _logger.debug('different view active - aborting') return panel = OutputPanel('dart.analyzer') analysis_errors = list(errors.errors) infos, warns, erros = self.group(analysis_errors) if len(infos + warns + erros) == 0: clear_ui() panel.hide() return info_regs = [self.error_to_region(view, item) for item in infos] warn_regs = [self.error_to_region(view, item) for item in warns] errs_regs = [self.error_to_region(view, item) for item in erros] _logger.debug('displaying errors to the user') self.add_regions(view, info_regs, warn_regs, errs_regs) all_sorted = sorted(infos + warns + erros, key=lambda x: x.location.offset) all_errs = (self.to_compact_text(item) for item in all_sorted) # TODO(guillermooo): abstract out the panel stuff into a DartErrorPanel class. panel = OutputPanel('dart.analyzer') # Tried to use .sublime-settings for this, but it won't work well. errors_pattern = r'^\w+\|\w+\|(.+)\|(\d+)\|(\d+)\|(.+)$' panel.set('result_file_regex', errors_pattern) all_errs = list(all_errs) # Overwrite any previous text in the panel. # We get errors sometimes when writing error lines here. panel.write('\n'.join(all_errs)) # TODO(guillermooo): remove this when .sublime-syntax has been fully # adopted. if sublime.version() >= '3084': panel.view.set_syntax_file( 'Packages/Dart/Support/Analyzer Output.sublime-syntax') else: panel.view.set_syntax_file( 'Packages/Dart/Support/Analyzer Output.tmLanguage') editor_context.errors = all_errs panel.show() try: view.show(view.sel()[0]) except IndexError: pass sublime.status_message("Dart: Errors found")
def show_errors(errors): '''Show errors in the ui. @errors An instance of `ErrorInfoCollection`. ''' v = sublime.active_window().active_view() # TODO(guillermooo): Use tokens to identify requests:file. # todo (pp): notifications don't have id; process all if os.path.realpath(errors.file) != os.path.realpath(v.file_name()): _logger.debug('different view active - aborting') return analysis_errors = list(errors.errors) if analysis_errors == 0: clear_ui() return infos = [ae for ae in analysis_errors if (ae.severity == AnalysisErrorSeverity.INFO)] warns = [ae for ae in analysis_errors if (ae.severity == AnalysisErrorSeverity.WARNING)] erros = [ae for ae in analysis_errors if (ae.severity == AnalysisErrorSeverity.ERROR)] def error_to_region(view, error): '''Converts location data to region data. ''' loc = error.location pt = view.text_point(loc.startLine - 1, loc.startColumn - 1) return sublime.Region(pt, pt + loc.length) info_regs = [error_to_region(v, item) for item in infos] warn_regs = [error_to_region(v, item) for item in warns] errs_regs = [error_to_region(v, item) for item in erros] _logger.debug('displaying errors to the user') v.add_regions(DAS_UI_REGIONS_INFOS, info_regs, scope=DAS_SCOPE_INFO, icon="Packages/Dart/gutter/dartlint-simple-info.png", flags=_flags) v.add_regions(DAS_UI_REGIONS_WARNINGS, warn_regs, scope=DAS_SCOPE_WARNING, icon="Packages/Dart/gutter/dartlint-simple-warning.png", flags=_flags) v.add_regions(DAS_UI_REGIONS_ERRORS, errs_regs, scope=DAS_SCOPE_ERROR, icon='Packages/Dart/gutter/dartlint-simple-error.png', flags=_flags) def to_compact_text(error): return ("{error.severity}|{error.type}|{loc.file}|" "{loc.startLine}|{loc.startColumn}|{error.message}").format( error=error, loc=error.location) info_patts = [to_compact_text(item) for item in infos] warn_patts = [to_compact_text(item) for item in warns] errs_patts = [to_compact_text(item) for item in erros] all_errs = set(errs_patts + warn_patts + info_patts) if not all_errs: panel = OutputPanel('dart.analyzer') panel.hide() return panel = OutputPanel('dart.analyzer') errors_pattern = r'^\w+\|\w+\|(.+)\|(\d+)\|(\d+)\|(.+)$' panel.set('result_file_regex', errors_pattern) # This will overwrite any previous text. panel.write('\n' + '\n'.join(all_errs)) panel.show() sublime.status_message("Dart: Errors found")
def show_errors(errors): '''Show errors in the ui. @errors An instance of `ErrorInfoCollection`. ''' v = sublime.active_window().active_view() # TODO(guillermooo): Use tokens to identify requests:file. # todo (pp): notifications don't have id; process all if os.path.realpath(errors.file) != os.path.realpath(v.file_name()): _logger.debug('different view active - aborting') return analysis_errors = list(errors.errors) if analysis_errors == 0: clear_ui() return infos = [ ae for ae in analysis_errors if (ae.severity == AnalysisErrorSeverity.INFO) and ( ae.type != AnalysisErrorType.TODO) ] warns = [ ae for ae in analysis_errors if (ae.severity == AnalysisErrorSeverity.WARNING) ] erros = [ ae for ae in analysis_errors if (ae.severity == AnalysisErrorSeverity.ERROR) ] def error_to_region(view, error): '''Converts location data to region data. ''' pass loc = error.location pt = view.text_point(loc.startLine - 1, loc.startColumn - 1) return sublime.Region(pt, pt + loc.length) info_regs = [error_to_region(v, item) for item in infos] warn_regs = [error_to_region(v, item) for item in warns] errs_regs = [error_to_region(v, item) for item in erros] _logger.debug('displaying errors to the user') v.add_regions(DAS_UI_REGIONS_INFOS, info_regs, scope=DAS_SCOPE_INFO, icon="Packages/Dart/gutter/dartlint-simple-info.png", flags=_flags) v.add_regions(DAS_UI_REGIONS_WARNINGS, warn_regs, scope=DAS_SCOPE_WARNING, icon="Packages/Dart/gutter/dartlint-simple-warning.png", flags=_flags) v.add_regions(DAS_UI_REGIONS_ERRORS, errs_regs, scope=DAS_SCOPE_ERROR, icon='Packages/Dart/gutter/dartlint-simple-error.png', flags=_flags) def to_compact_text(error): return ("{error.severity}|{error.type}|{loc.file}|" "{loc.startLine}|{loc.startColumn}|{error.message}").format( error=error, loc=error.location) info_patts = [to_compact_text(item) for item in infos] warn_patts = [to_compact_text(item) for item in warns] errs_patts = [to_compact_text(item) for item in erros] all_errs = set(errs_patts + warn_patts + info_patts) panel = OutputPanel('dart.analyzer') if not all_errs: editor_context.errors = [] panel.hide() return errors_pattern = r'^\w+\|\w+\|(.+)\|(\d+)\|(\d+)\|(.+)$' panel.set('result_file_regex', errors_pattern) # This will overwrite any previous text. panel.write('\n' + '\n'.join(all_errs)) # FIXME: It appears that if ST dev find a .sublime-syntax and a .tmLanguage # file, it will load # the first one. But how do we refer to the file then? if sublime.version() >= '3084': panel.view.set_syntax_file( 'Packages/Dart/Support/Analyzer Output.sublime-syntax') else: panel.view.set_syntax_file( 'Packages/Dart/Support/Analyzer Output.tmLanguage') panel.view.settings().set('rulers', []) panel.show() sublime.status_message("Dart: Errors found") editor_context.errors = all_errs
def __call__(self, errors): '''Show errors in the ui. @errors An instance of `ErrorInfoCollection`. ''' view = get_active_view() # TODO(guillermooo): Use tokens to identify requests:file. if not self.compare_paths(errors.file, view.file_name()): _logger.debug('different view active - aborting') return panel = OutputPanel('dart.errors') analysis_errors = list(errors.errors) infos, warns, erros = self.group(analysis_errors) if len(infos + warns + erros) == 0: clear_ui() panel.hide() return info_regs = [self.error_to_region(view, item) for item in infos] warn_regs = [self.error_to_region(view, item) for item in warns] errs_regs = [self.error_to_region(view, item) for item in erros] _logger.debug('displaying errors to the user') self.add_regions(view, info_regs, warn_regs, errs_regs) all_sorted = sorted(infos + warns + erros, key=lambda x: x.location.offset) all_errs = (self.to_compact_text(item) for item in all_sorted) # TODO(guillermooo): abstract out the panel stuff into a DartErrorPanel class. panel = OutputPanel('dart.errors') # Tried to use .sublime-settings for this, but it won't work well. errors_pattern = r'^\w+\|\w+\|(.+)\|(\d+)\|(\d+)\|(.+)$' panel.set('result_file_regex', errors_pattern) all_errs = list(all_errs) # Overwrite any previous text in the panel. # We get errors sometimes when writing error lines here. panel.write('\n'.join(all_errs)) # TODO(guillermooo): remove this when .sublime-syntax has been fully # adopted. if sublime.version() >= '3084': panel.view.set_syntax_file('Packages/Dart/Support/Analyzer Output.sublime-syntax') else: panel.view.set_syntax_file('Packages/Dart/Support/Analyzer Output.tmLanguage') editor_context.errors = all_errs # To show the panel, use the Command Palette or the key binding. # panel.show() try: view.show(view.sel()[0]) except IndexError: pass sublime.status_message("Dart: Errors found")