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()
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