Exemple #1
0
    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")