def cwl_parsing_handler(callback):
    completion_results = {}
    environment_results = {}
    cwl_files, use_package = get_cwl_package_files()

    for cwl_file in cwl_files:
        base_name = os.path.basename(cwl_file)
        if use_package:
            try:
                s = (sublime.load_resource(cwl_file).replace("\r\n",
                                                             "\n").replace(
                                                                 "\r", "\n"))
            except IOError:
                print(u'{0} does not exist or could not be accessed'.format(
                    cwl_file))
                continue
        else:
            if not os.path.isabs(cwl_file) and cwl_file.startswith('Package'):
                cwl_file = os.path.normpath(
                    cwl_file.replace('Package', sublime.packages_path()))

            try:
                s = utils.read_file_unix_endings(cwl_file)
            except IOError:
                print(u'{0} does not exist or could not be accessed'.format(
                    cwl_file))
                continue

        completions = parse_cwl_file(base_name, s)
        completion_results[base_name] = completions

        environments = parse_cwl_file(base_name, s, parse_line_as_environment)
        environment_results[base_name] = environments

    callback(completion_results, environment_results)
def cwl_parsing_handler(callback):
    completion_results = {}
    environment_results = {}
    cwl_files, use_package = get_cwl_package_files()

    for cwl_file in cwl_files:
        base_name = os.path.basename(cwl_file)
        if use_package:
            try:
                s = (sublime.load_resource(cwl_file).replace("\r\n", "\n")
                     .replace("\r", "\n"))
            except IOError:
                print(
                    u'{0} does not exist or could not be accessed'.format(
                        cwl_file
                    )
                )
                continue
        else:
            if not os.path.isabs(cwl_file) and cwl_file.startswith('Package'):
                cwl_file = os.path.normpath(
                    cwl_file.replace('Package', sublime.packages_path())
                )

            try:
                s = utils.read_file_unix_endings(cwl_file)
            except IOError:
                print(
                    u'{0} does not exist or could not be accessed'.format(
                        cwl_file
                    )
                )
                continue

        completions = parse_cwl_file(base_name, s)
        completion_results[base_name] = completions

        environments = parse_cwl_file(base_name, s, parse_line_as_environment)
        environment_results[base_name] = environments

    callback(completion_results, environment_results)
def _jumpto_cite(view, com_reg, pos):
    tex_root = get_tex_root(view)
    bib_key = _get_selected_arg(view, com_reg, pos)
    if tex_root is None or not bib_key:
        return
    message = "Scanning bibliography files for key '{0}'...".format(bib_key)
    print(message)
    sublime.status_message(message)
    base_dir = os.path.dirname(tex_root)
    ana = analysis.get_analysis(tex_root)

    bib_commands = ana.filter_commands(
        ["bibliography", "nobibliography", "addbibresource"])
    for bib_command in bib_commands:
        for bib_file in jumpto_tex_file._split_bib_args(bib_command.args):
            if not os.path.splitext(bib_file)[1]:
                bib_file += ".bib"
            bib_file = os.path.join(base_dir, bib_file)
            try:
                file_content = utils.read_file_unix_endings(bib_file)
                start = file_content.find(bib_key)
                end = start + len(bib_key)
                # check that we found the entry and we are not inside a word
                if (start == -1 or file_content[start - 1:start].isalnum()
                        or file_content[end:end + 1].isalnum()):
                    continue
                region = sublime.Region(start, end)
                message = "Jumping to bibliography key '{0}'.".format(bib_key)
                print(message)
                sublime.status_message(message)
                utils.open_and_select_region(view, bib_file, region)
                return
            except Exception as e:
                print("Error occurred opening file {0}".format(bib_file))
                print(e)
                continue
    message = "Entry '{0}' not found in bibliography.".format(bib_key)
    print(message)
    sublime.status_message(message)
Esempio n. 4
0
def _jumpto_cite(view, com_reg, pos):
    tex_root = get_tex_root(view)
    bib_key = _get_selected_arg(view, com_reg, pos)
    if tex_root is None or not bib_key:
        return
    message = "Scanning bibliography files for key '{0}'...".format(bib_key)
    print(message)
    sublime.status_message(message)
    base_dir = os.path.dirname(tex_root)
    ana = analysis.get_analysis(tex_root)

    bib_commands = ana.filter_commands(
        ["bibliography", "nobibliography", "addbibresource"])
    for bib_command in bib_commands:
        for bib_file in jumpto_tex_file._split_bib_args(bib_command.args):
            if not os.path.splitext(bib_file)[1]:
                bib_file += ".bib"
            bib_file = os.path.join(base_dir, bib_file)
            try:
                file_content = utils.read_file_unix_endings(bib_file)
                start = file_content.find(bib_key)
                end = start + len(bib_key)
                # check that we found the entry and we are not inside a word
                if (start == -1 or file_content[start - 1:start].isalnum() or
                        file_content[end:end + 1].isalnum()):
                    continue
                region = sublime.Region(start, end)
                message = "Jumping to bibliography key '{0}'.".format(bib_key)
                print(message)
                sublime.status_message(message)
                utils.open_and_select_region(view, bib_file, region)
                return
            except Exception as e:
                print("Error occurred opening file {0}".format(bib_file))
                print(e)
                continue
    message = "Entry '{0}' not found in bibliography.".format(bib_key)
    print(message)
    sublime.status_message(message)