Exemple #1
0
 def _close(self):
     """To close the Surfer user interface."""
     v.exe('q')
     for cmd in self.exit_cmds:
         v.exe(cmd)
     if self.user_buf.winnr:
         v.focus_win(self.user_buf.winnr)
     self._reset()
     v.redraw()
Exemple #2
0
    def render(self, target_win, cursor_pos, query, tags, msg="", iserror=False):
        """To render all search results."""
        v.exe('syntax clear')
        v.focus_win(target_win)
        mapper = {}

        if not tags and not msg:
            msg = settings.get("no_results_msg")

        if msg:

            v.setbuffer(msg)
            v.setwinh(len(msg.split("\n")))
            (len(msg.split("\n")))
            cursor_pos = 0
            if iserror:
                self._highlight_err()

        else:

            # Find duplicates file names
            dups = {}
            for _, g in groupby(tags, key=lambda t: os.path.basename(t["file"])):
                # s is a set of unique paths but with the same basename
                s = set(t["file"] for t in g)
                if len(s) > 1:
                    dups.update((file, True) for file in s)

            tags = tags[::-1]
            mapper = dict(enumerate(t for t in tags))
            v.setbuffer([self._render_line(t, query, dups) for t in tags])
            cursor_pos = self._render_curr_line(cursor_pos)
            self._highlight_tags(tags, cursor_pos)
            v.setwinh(len(tags))

        v.cursor((cursor_pos + 1, 0))
        v.exe("normal! 0")

        return mapper, cursor_pos