Пример #1
0
    def _handle_failure(self, trigger):
        """Mainly make sure that we play well with SuperTab."""
        if trigger.lower() == "<tab>":
            feedkey = "\\" + trigger
        elif trigger.lower() == "<s-tab>":
            feedkey = "\\" + trigger
        else:
            feedkey = None
        mode = "n"
        if not self._supertab_keys:
            if vim_helper.eval("exists('g:SuperTabMappingForward')") != "0":
                self._supertab_keys = (
                    vim_helper.eval("g:SuperTabMappingForward"),
                    vim_helper.eval("g:SuperTabMappingBackward"),
                )
            else:
                self._supertab_keys = ["", ""]

        for idx, sttrig in enumerate(self._supertab_keys):
            if trigger.lower() == sttrig.lower():
                if idx == 0:
                    feedkey = r"\<Plug>SuperTabForward"
                    mode = "n"
                elif idx == 1:
                    feedkey = r"\<Plug>SuperTabBackward"
                    mode = "p"
                # Use remap mode so SuperTab mappings will be invoked.
                break

        if feedkey in (r"\<Plug>SuperTabForward", r"\<Plug>SuperTabBackward"):
            vim_helper.command("return SuperTab(%s)" % vim_helper.escape(mode))
        elif feedkey:
            vim_helper.command("return %s" % vim_helper.escape(feedkey))
Пример #2
0
 def _parse_snippets(self, ft, filename):
     """Parse the 'filename' for the given 'ft'."""
     with open(filename, "r", encoding="utf-8-sig") as to_read:
         file_data = to_read.read()
     self._snippets[ft]  # Make sure the dictionary exists
     for event, data in self._parse_snippet_file(file_data, filename):
         if event == "error":
             msg, line_index = data
             filename = vim_helper.eval(
                 """fnamemodify(%s, ":~:.")""" % vim_helper.escape(filename)
             )
             raise SnippetSyntaxError(filename, line_index, msg)
         elif event == "clearsnippets":
             priority, triggers = data
             self._snippets[ft].clear_snippets(priority, triggers)
         elif event == "extends":
             # TODO(sirver): extends information is more global
             # than one snippet source.
             (filetypes,) = data
             self.update_extends(ft, filetypes)
         elif event == "snippet":
             (snippet,) = data
             self._snippets[ft].add_snippet(snippet)
         else:
             assert False, "Unhandled %s: %r" % (event, data)
Пример #3
0
def _ask_user(a, formatted):
    """Asks the user using inputlist() and returns the selected element or
    None."""
    try:
        rv = vim_helper.eval("inputlist(%s)" % vim_helper.escape(formatted))
        if rv is None or rv == "0":
            return None
        rv = int(rv)
        if rv > len(a):
            rv = len(a)
        return a[rv - 1]
    except vim_helper.error:
        # Likely "invalid expression", but might be translated. We have no way
        # of knowing the exact error, therefore, we ignore all errors silently.
        return None
    except KeyboardInterrupt:
        return None