コード例 #1
0
ファイル: command.py プロジェクト: jhetherly/dotfiles_jwh
    def __call__(self, args, should_open):
        # build arguments to pass pandoc

        buffer_bibliographies = vim.eval('b:pandoc_biblio_bibs')
        if len(buffer_bibliographies) < 1:
            buffer_bibliographies = find_bibfiles()
        bib_arg = " ".join(['--bibliography "' + i  + '"' for i in buffer_bibliographies]) if \
                len(buffer_bibliographies) > 0 \
                else ""

        strict_arg = "-r markdown_strict" if \
                vim.current.buffer.options["ft"] == "markdown" and \
                not bool(vim.vars["pandoc#filetypes#pandoc_markdown"]) \
                else ""

        c_opts, c_args = getopt.gnu_getopt(shlex.split(args), self.opts.shortopts, self.opts.longopts)
        def wrap_args(i):
            if re.search('=', i[1]):
                return (i[0], re.sub('$', '"', re.sub('(.*)=', '\\1="', i[1])))
            else:
                return (i[0], i[1])
        c_opts = [wrap_args(i) for i in c_opts]

        output_format = c_args.pop(0) if len(c_args) > 0 and c_args[0] in PandocHelpParser.get_output_formats_table().keys() else "html"
        output_format_arg = "-t " + output_format if output_format != "pdf" else ""
        self._output_file_path = vim.eval('expand("%:r")') + '.' + PandocHelpParser.get_output_formats_table()[output_format]
        output_arg = '-o "' + self._output_file_path + '"'

        engine_arg = "--latex-engine=" + vim.vars["pandoc#command#latex_engine"] if output_format in ["pdf", "beamer"] else ""

        extra = []
        for opt in c_opts:
            eq = '=' if opt[1] and re.match('^--', opt[0]) else ''
            # if it begins with ~, it will expand, otherwise, it will just copy
            val = os.path.expanduser(opt[1])
            if os.path.isabs(val) and os.path.exists(val):
                extra.append(opt[0] + (eq or ' ') + '"' + val + '"')
            else:
                extra.append(opt[0] + eq + opt[1])

        extra_args = " ".join(extra)

        extra_input_args = '"' + '" "'.join(c_args) + '"' if len(c_args) > 0 else ""

        input_arg = '"' + vim.eval('expand("%")') + '"'

        self._run_command = " ".join(filter(lambda i: i != "", ["pandoc", \
                                                                bib_arg, \
                                                                strict_arg, \
                                                                output_format_arg, \
                                                                engine_arg, \
                                                                output_arg, \
                                                                extra_args, \
                                                                extra_input_args, \
                                                                input_arg]))

        # execute
        self.execute(should_open)
コード例 #2
0
ファイル: command.py プロジェクト: duckwork/vim-pandoc
    def __call__(self, args, should_open):
        # build arguments to pass pandoc

        buffer_bibliographies = vim.eval('b:pandoc_biblio_bibs')
        if len(buffer_bibliographies) < 1:
            buffer_bibliographies = find_bibfiles()
        bib_arg = " ".join(['--bibliography "' + i  + '"' for i in buffer_bibliographies]) if \
                len(buffer_bibliographies) > 0 \
                else ""

        strict_arg = "-r markdown_strict" if \
                vim.current.buffer.options["ft"] == "markdown" and \
                not bool(vim.vars["pandoc#filetypes#pandoc_markdown"]) \
                else ""

        c_opts, c_args = getopt.gnu_getopt(shlex.split(args), self.opts.shortopts, self.opts.longopts)
        def wrap_args(i):
            if re.search('=', i[1]):
                return (i[0], re.sub('$', '"', re.sub('(.*)=', '\\1="', i[1])))
            else:
                return (i[0], i[1])
        c_opts = [wrap_args(i) for i in c_opts]

        output_format = c_args.pop(0) if len(c_args) > 0 and c_args[0] in PandocHelpParser.get_output_formats_table().keys() else "html"
        output_format_arg = "-t " + output_format if output_format != "pdf" else ""
        self._output_file_path = vim.eval('expand("%:r")') + '.' + PandocHelpParser.get_output_formats_table()[output_format]
        output_arg = '-o "' + self._output_file_path + '"'

        engine_arg = "--latex-engine=" + vim.vars["pandoc#command#latex_engine"] if output_format in ["pdf", "beamer"] else ""

        extra = []
        for opt in c_opts:
            eq = '=' if opt[1] and re.match('^--', opt[0]) else ''
            # if it begins with ~, it will expand, otherwise, it will just copy
            val = os.path.expanduser(opt[1])
            if os.path.isabs(val) and os.path.exists(val):
                extra.append(opt[0] + (eq or ' ') + '"' + val + '"')
            else:
                extra.append(opt[0] + eq + opt[1])

        extra_args = " ".join(extra)

        extra_input_args = '"' + '" "'.join(c_args) + '"' if len(c_args) > 0 else ""

        input_arg = '"' + vim.eval('expand("%")') + '"'

        self._run_command = " ".join(filter(lambda i: i != "", ["pandoc", \
                                                                bib_arg, \
                                                                strict_arg, \
                                                                output_format_arg, \
                                                                engine_arg, \
                                                                output_arg, \
                                                                extra_args, \
                                                                extra_input_args, \
                                                                input_arg]))

        # execute
        self.execute(should_open)
コード例 #3
0
ファイル: command.py プロジェクト: vim-pandoc/vim-pandoc
    def __call__(self, args, should_open):
        # build arguments to pass pandoc

        if "bibliographies" in plugin_enabled_modules():
            buffer_bibliographies = vim.eval("b:pandoc_biblio_bibs")
            if len(buffer_bibliographies) < 1:
                buffer_bibliographies = find_bibfiles()
            bib_arg = (
                " ".join(['--bibliography "' + i + '"' for i in buffer_bibliographies])
                if len(buffer_bibliographies) > 0
                else ""
            )
        else:
            bib_arg = ""

        strict_arg = (
            "-r markdown_strict"
            if vim.current.buffer.options["ft"] == "markdown" and not bool(vim.vars["pandoc#filetypes#pandoc_markdown"])
            else ""
        )

        c_opts, c_args = getopt.gnu_getopt(shlex.split(args), self.opts.shortopts, self.opts.longopts)

        def wrap_args(i):
            if re.search("=", i[1]):
                return (i[0], re.sub("$", '"', re.sub("(.*)=", '\\1="', i[1])))
            else:
                return (i[0], i[1])

        c_opts = [wrap_args(i) for i in c_opts]

        output_format = c_args.pop(0) if len(c_args) > 0 and self.opts.in_allowed_formats(c_args[0]) else "html"
        output_format_arg = "-t " + output_format if output_format != "pdf" else ""

        def no_extensions(fmt):
            return re.split("[-+]", fmt)[0]

        self._output_file_path = (
            vim.eval('expand("%:r")') + "." + self.opts.get_output_formats_table()[no_extensions(output_format)]
        )
        output_arg = '-o "' + self._output_file_path + '"'

        engine_arg = (
            "--latex-engine=" + vim.vars["pandoc#command#latex_engine"] if output_format in ["pdf", "beamer"] else ""
        )

        extra = []
        for opt in c_opts:
            eq = "=" if opt[1] and re.match("^--", opt[0]) else ""
            # if it begins with ~, it will expand, otherwise, it will just copy
            val = os.path.expanduser(opt[1])
            if os.path.isabs(val) and os.path.exists(val):
                extra.append(opt[0] + (eq or " ") + '"' + val + '"')
            else:
                extra.append(opt[0] + eq + opt[1])

        extra_args = " ".join(extra)

        extra_input_args = '"' + '" "'.join(c_args) + '"' if len(c_args) > 0 else ""

        input_arg = '"' + vim.eval('expand("%")') + '"'

        self._run_command = " ".join(
            filter(
                lambda i: i != "",
                [
                    "pandoc",
                    bib_arg,
                    strict_arg,
                    output_format_arg,
                    engine_arg,
                    output_arg,
                    extra_args,
                    extra_input_args,
                    input_arg,
                ],
            )
        )

        # execute
        self.execute(should_open)
コード例 #4
0
    def __call__(self, args, should_open):
        # build arguments to pass pandoc

        if 'bibliographies' in plugin_enabled_modules():
            buffer_bibliographies = vim.eval('b:pandoc_biblio_bibs')
            if len(buffer_bibliographies) < 1:
                buffer_bibliographies = find_bibfiles()
            bib_arg = " ".join(['--bibliography "' + i  + '"' \
                                for i in buffer_bibliographies]) \
                    if len(buffer_bibliographies) > 0 \
                    else ""
        else:
            bib_arg = ""

        strict_arg = "-r markdown_strict" if \
                vim.current.buffer.options["ft"] == "markdown" and \
                not bool(vim.vars["pandoc#filetypes#pandoc_markdown"]) \
                else ""

        if re.search('--mathjax( |$)', args):
            args = re.sub('--mathjax', '', args)
            extra_mathjax = True
        else:
            extra_mathjax = False

        c_opts, c_args = getopt.gnu_getopt(shlex.split(args),
                                           self.opts.shortopts,
                                           self.opts.longopts)

        def wrap_args(i):
            if re.search('=', i[1]):
                return (i[0], re.sub('$', '"', re.sub('(.*)=', '\\1="', i[1])))
            else:
                return (i[0], i[1])

        c_opts = [wrap_args(i) for i in c_opts]

        output_format = c_args.pop(0) \
            if len(c_args) > 0 \
                and self.opts.in_allowed_formats(c_args[0]) \
            else "html"
        output_format_arg = "-t " + output_format if output_format != "pdf" \
                            else ""

        def no_ext(fmt):
            return re.split("[-+]", fmt)[0]

        self._output_file_path = vim.eval('expand("%:r")') + '.' \
            + self.opts.get_output_formats_table()[no_ext(output_format)]
        output_arg = '-o "' + self._output_file_path + '"'

        try:  # try a buffer local engine
            engine_var = vim.current.buffer.vars['pandoc_command_latex_engine']
        except:
            engine_var = vim.vars['pandoc#command#latex_engine']
        # vim's python3's .vars are bytes, unlike in neovim
        if type(engine_var) == bytes:
            engine_var = '"' + engine_var.decode() + '"'
        engine_arg = "--latex-engine=" + str(engine_var) \
            if output_format in ["pdf", "beamer"] \
            else ""

        extra = []
        for opt in c_opts:
            eq = '=' if opt[1] and re.match('^--', opt[0]) else ''
            if opt[0] in ("-V", "--variable") and "=" in opt[1]:
                # we have -V var=thing
                # Should also apply logic below regarding paths
                var, _, arg = opt[1].partition("=")
                # Coerse opt such that the below works on the true value, i.e.
                # the value of the variable being set.
                opt = ("-V " + var, arg.strip('"'))
                eq = "="
            # if it begins with ~, it will expand, otherwise, it will just copy
            val = os.path.expanduser(opt[1])
            extra.append(opt[0] + (eq or ' ') +
                         (('"' + val + '"') if len(val) else ''))
        if extra_mathjax:
            extra.append('--mathjax')

        extra_args = " ".join(extra)

        extra_input_args = '"' + '" "'.join(c_args) + '"' if len(c_args) > 0 \
                            else ""

        input_arg = '"' + vim.eval('expand("%")') + '"'

        arglist = ["pandoc", \
                   bib_arg, \
                   strict_arg, \
                   output_format_arg, \
                   engine_arg, \
                   output_arg, \
                   extra_args, \
                   extra_input_args, \
                   input_arg]

        self._run_command = " ".join(filter(lambda i: len(i) > 0, arglist))

        # execute
        self.execute(should_open)
コード例 #5
0
ファイル: command.py プロジェクト: naryga/dotfiles
    def __call__(self, args, should_open):
        largs = shlex.split(args)
        if largs == [] or largs[0].startswith('-'):
            largs = ['html'] + largs  # make sure we pass an output format
        p = self.pandoc_info.build_argument_parser()
        c_vars = vars(p.parse_args(largs))

        # Infer arguments from vim environment

        # a) bibliographies
        if 'bibliographies' in plugin_enabled_modules():
            local_bibs = vim.eval('b:pandoc_biblio_bibs')
            found_bibs = find_bibfiles()
            if local_bibs or found_bibs and not c_vars['bibliography']:
                c_vars['bibliography'] = []
            if local_bibs:
                c_vars['bibliography'].extend(local_bibs)
            if found_bibs:
                c_vars['bibliography'].extend(found_bibs)

        # Now, we must determine what are our input and output files

        # a) First, let's see what is the desired output format...
        output_format = c_vars['output_format'] \
            if self.pandoc_info.is_valid_output_format(c_vars['output_format']) \
            or c_vars['output_format'] == 'pdf' \
            else "html"
        # overwrite --to with this value
        # 'pdf' is not a valid output format, we pass it to -o instead)
        if output_format != 'pdf':
            c_vars['to'] = output_format
        else:
            c_vars['to'] = 'latex'

        if output_format == 'pdf':
            # pdf engine
            if self.pandoc_info.version >= '2':
                engine_option = 'pdf_engine'
            else:
                engine_option = 'latex_engine'
            if not c_vars[engine_option]:
                try:  # try a buffer local engine
                    engine_var = ensure_string(
                        vim.current.buffer.vars['pandoc_command_latex_engine'])
                except:  # use te global value
                    engine_var = ensure_string(
                        vim.vars['pandoc#command#latex_engine'])
                c_vars[engine_option] = str(engine_var)

        if not c_vars['output']:
            self._output_file_path = vim.eval('expand("%:r")') + '.' \
                + self.formats_table[re.split("[-+]", output_format)[0]]
            c_vars['output'] = self._output_file_path
        else:
            self._output_file_path = os.path.expanduser(c_vars['output'][0])

        input_arg = '"' + vim.eval('expand("%")') + '"'

        # Now, we reconstruct the pandoc call
        arglist = []
        arglist.append(ensure_string(vim.vars['pandoc#compiler#command']))
        arglist.append(ensure_string(vim.vars['pandoc#compiler#arguments']))
        # Only consider enabled flags and arguments with values
        extra_arg_vars_keys = [
            k for k in c_vars.keys() if c_vars[k] and k != 'output_format'
        ]
        for var in extra_arg_vars_keys:
            real_var = var.replace("_", "-")
            val = c_vars[var]
            if type(val
                    ) == list and len(val) > 1:  # multiple values, repeat keys
                for vv in val:
                    if type(vv) == list and type(vv[0]) == list:
                        vv = vv[0][0]
                    elif type(vv) == list:
                        vv = vv[0]
                    elif type(val) == bool:
                        vv = None
                    if vv:
                        vv = os.path.expanduser(vv)
                        arglist.append("--" + real_var + '="' + str(vv) + '"')
                    else:
                        arglist.append("--" + real_var)
            else:
                if type(val) == list and type(val[0]) == list:
                    val = val[0][0]
                elif type(val) == list:
                    val = val[0]
                elif type(val) == bool:
                    val = None
                if val:
                    val = os.path.expanduser(val)
                    arglist.append('--' + real_var + '="' + str(val) + '"')
                else:
                    arglist.append('--' + real_var)
        arglist.append(input_arg)

        self._run_command = " ".join(arglist)
        # execute
        self.execute(should_open)
コード例 #6
0
ファイル: command.py プロジェクト: dnguyen85/vim-pandoc
    def __call__(self, args, should_open):
        largs = shlex.split(args)
        if largs == [] or largs[0].startswith('-'):
            largs = ['html'] + largs # make sure we pass an output format
        p = self.pandoc_info.build_argument_parser()
        c_vars = vars(p.parse_args(largs))

        # Infer arguments from vim environment

        # a) bibliographies
        if 'bibliographies' in plugin_enabled_modules():
            local_bibs = vim.eval('b:pandoc_biblio_bibs')
            found_bibs = find_bibfiles()
            if local_bibs or found_bibs and not c_vars['bibliography']:
                c_vars['bibliography'] = []
            if local_bibs:
                c_vars['bibliography'].extend(local_bibs)
            if found_bibs:
                c_vars['bibliography'].extend(found_bibs)

        # Now, we must determine what are our input and output files

        # a) First, let's see what is the desired output format...
        output_format = c_vars['output_format'] \
            if self.pandoc_info.is_valid_output_format(c_vars['output_format']) \
            or c_vars['output_format'] == 'pdf' \
            else "html"
        # overwrite --to with this value
        # 'pdf' is not a valid output format, we pass it to -o instead)
        if output_format != 'pdf':
            c_vars['to'] = output_format
        else:
            c_vars['to'] = 'latex'

        if output_format == 'pdf':
            # pdf engine
            if self.pandoc_info.version >= '2':
                engine_option = 'pdf_engine'
            else:
                engine_option = 'latex_engine'
            if not c_vars[engine_option]:
                try: # try a buffer local engine
                    engine_var = ensure_string(vim.current.buffer.vars['pandoc_command_latex_engine'])
                except: # use te global value
                    engine_var = ensure_string(vim.vars['pandoc#command#latex_engine'])
                c_vars[engine_option] = str(engine_var)

        if not c_vars['output']:
            self._output_file_path = vim.eval('expand("%:r")') + '.' \
                + self.formats_table[re.split("[-+]", output_format)[0]]
            c_vars['output'] = self._output_file_path
        else:
            self._output_file_path = os.path.expanduser(c_vars['output'][0])

        input_arg = '"' + vim.eval('expand("%")') + '"'

        # Now, we reconstruct the pandoc call
        arglist = []
        arglist.append(ensure_string(vim.vars['pandoc#compiler#command']))
        arglist.append(ensure_string(vim.vars['pandoc#compiler#arguments']))
        # Only consider enabled flags and arguments with values
        extra_arg_vars_keys = [k for k in c_vars.keys() if c_vars[k] and k != 'output_format']
        for var in extra_arg_vars_keys:
            real_var = var.replace("_", "-")
            val = c_vars[var]
            if type(val) == list and len(val) > 1: # multiple values, repeat keys
                for vv in val:
                    if type(vv) == list and type(vv[0]) == list:
                        vv = vv[0][0]
                    elif type(vv) == list:
                        vv = vv[0]
                    elif type(val) == bool:
                        vv = None
                    if vv:
                        vv = os.path.expanduser(vv)
                        arglist.append("--" + real_var + '="' + str(vv) + '"')
                    else:
                        arglist.append("--" + real_var)
            else:
                if type(val) == list and type(val[0]) == list:
                    val = val[0][0]
                elif type(val) == list:
                    val = val[0]
                elif type(val) == bool:
                    val = None
                if val:
                    val = os.path.expanduser(val)
                    arglist.append('--' + real_var + '="' + str(val) + '"')
                else:
                    arglist.append('--' + real_var)
        arglist.append(input_arg)

        self._run_command = " ".join(arglist)
        # execute
        self.execute(should_open)
コード例 #7
0
    def __call__(self, args, should_open):
        # build arguments to pass pandoc

        if 'bibliographies' in plugin_enabled_modules():
            buffer_bibliographies = vim.eval('b:pandoc_biblio_bibs')
            if len(buffer_bibliographies) < 1:
                buffer_bibliographies = find_bibfiles()
            bib_arg = " ".join(['--bibliography "' + i  + '"' \
                                for i in buffer_bibliographies]) \
                    if len(buffer_bibliographies) > 0 \
                    else ""
        else:
            bib_arg = ""

        strict_arg = "-r markdown_strict" if \
                vim.current.buffer.options["ft"] == "markdown" and \
                not bool(vim.vars["pandoc#filetypes#pandoc_markdown"]) \
                else ""

        c_opts, c_args = getopt.gnu_getopt(shlex.split(args),
                                           self.opts.shortopts,
                                           self.opts.longopts)

        def wrap_args(i):
            if re.search('=', i[1]):
                return (i[0], re.sub('$', '"', re.sub('(.*)=', '\\1="', i[1])))
            else:
                return (i[0], i[1])

        c_opts = [wrap_args(i) for i in c_opts]

        output_format = c_args.pop(0) \
            if len(c_args) > 0 \
                and self.opts.in_allowed_formats(c_args[0]) \
            else "html"
        output_format_arg = "-t " + output_format if output_format != "pdf" else ""

        def no_extensions(fmt):
            return re.split("[-+]", fmt)[0]

        self._output_file_path = vim.eval('expand("%:r")') + \
            '.' + self.opts.get_output_formats_table()[no_extensions(output_format)]
        output_arg = '-o "' + self._output_file_path + '"'

        try:  # try a buffer local engine
            engine_var = vim.current.buffer.vars['pandoc_command_latex_engine']
        except:
            engine_var = vim.vars['pandoc#command#latex_engine']
        # vim's python3's .vars are bytes, unlike in neovim
        if type(engine_var) == bytes:
            engine_var = '"' + engine_var.decode() + '"'
        engine_arg = "--latex-engine=" + str(engine_var) \
            if output_format in ["pdf", "beamer"] \
            else ""

        extra = []
        for opt in c_opts:
            eq = '=' if opt[1] and re.match('^--', opt[0]) else ''
            # if it begins with ~, it will expand, otherwise, it will just copy
            val = os.path.expanduser(opt[1])
            if os.path.isabs(val) and os.path.exists(val):
                extra.append(opt[0] + (eq or ' ') + '"' + val + '"')
            else:
                extra.append(opt[0] + eq + opt[1])

        extra_args = " ".join(extra)

        extra_input_args = '"' + '" "'.join(c_args) + '"' if len(
            c_args) > 0 else ""

        input_arg = '"' + vim.eval('expand("%")') + '"'

        arglist = ["pandoc", \
                   bib_arg, \
                   strict_arg, \
                   output_format_arg, \
                   engine_arg, \
                   output_arg, \
                   extra_args, \
                   extra_input_args, \
                   input_arg]

        self._run_command = " ".join(filter(lambda i: len(i) > 0, arglist))

        # execute
        self.execute(should_open)