def execute(self, server, room, buff, tags): short_name = shorten_sender(self.sender) if self.sender in room.users: user = room.users[self.sender] if self.display_name: user.display_name = self.display_name else: user = MatrixUser(short_name, self.display_name) if not user.nick_color: if self.sender == server.user_id: highlight_words = [self.sender, user.name] if self.display_name: highlight_words.append(self.display_name) user.nick_color = "weechat.color.chat_nick_self" W.buffer_set(buff, "highlight_words", ",".join(highlight_words)) else: user.nick_color = W.info_get("nick_color_name", user.name) room.users[self.sender] = user nick_pointer = W.nicklist_search_nick(buff, "", self.sender) if not nick_pointer: add_user_to_nicklist(buff, self.sender, user) # calculate room display name and set it as the buffer list name room_name = room.display_name(server.user_id) W.buffer_set(buff, "short_name", room_name)
def execute(self, server, room, buff, tags): topic = self.topic W.buffer_set(buff, "title", topic) room.topic = topic room.topic_author = self.sender room.topic_date = datetime.fromtimestamp( server_ts_to_weechat(self.timestamp))
def server_buffer_set_title(server): # type: (MatrixServer) -> None if server.numeric_address: ip_string = " ({address})".format(address=server.numeric_address) else: ip_string = "" title = ("Matrix: {address}:{port}{ip}").format( address=server.address, port=server.port, ip=ip_string) W.buffer_set(server.server_buffer, "title", title)
def execute(self, server, room, buff, tags): if not self.canonical_alias: return # TODO: What should we do with this? # W.buffer_set(buff, "name", self.name) # W.buffer_set(buff, "localvar_set_channel", self.name) # calculate room display name and set it as the buffer list name room.canonical_alias = self.canonical_alias room_name = room.display_name(server.user_id) W.buffer_set(buff, "short_name", room_name)
def execute(self, server, room, buff, tags): if self.leaving_user in room.users: nick_pointer = W.nicklist_search_nick(buff, "", self.leaving_user) if nick_pointer: W.nicklist_remove_nick(buff, nick_pointer) del room.users[self.leaving_user] # calculate room display name and set it as the buffer list name room_name = room.display_name(server.user_id) W.buffer_set(buff, "short_name", room_name)
def buffer_command_cb(data, _, command): """Override the buffer command to allow switching buffers by short name.""" command = command[7:].strip() buffer_subcommands = [ "list", "add", "clear", "move", "swap", "cycle", "merge", "unmerge", "hide", "unhide", "renumber", "close", "notify", "localvar", "set", "get" ] if not command: return W.WEECHAT_RC_OK command_words = command.split() if len(command_words) >= 1: if command_words[0] in buffer_subcommands: return W.WEECHAT_RC_OK elif command_words[0].startswith("*"): return W.WEECHAT_RC_OK try: int(command_words[0]) return W.WEECHAT_RC_OK except ValueError: pass room_buffers = [] for server in SERVERS.values(): room_buffers.extend(server.room_buffers.values()) sorted_buffers = sorted(room_buffers, key=lambda b: b.weechat_buffer.number) for room_buffer in sorted_buffers: buffer = room_buffer.weechat_buffer if command in buffer.short_name: displayed = W.current_buffer() == buffer._ptr if displayed: continue W.buffer_set(buffer._ptr, 'display', '1') return W.WEECHAT_RC_OK_EAT return W.WEECHAT_RC_OK
def create_server_buffer(server): # type: (MatrixServer) -> None server.server_buffer = W.buffer_new(server.name, "server_buffer_cb", server.name, "", "") server_buffer_set_title(server) W.buffer_set(server.server_buffer, "localvar_set_type", 'server') W.buffer_set(server.server_buffer, "localvar_set_nick", server.user) W.buffer_set(server.server_buffer, "localvar_set_server", server.name) W.buffer_set(server.server_buffer, "localvar_set_channel", server.name) server_buffer_merge(server.server_buffer)
def execute(self, server, room, buff, tags): if not self.name: return room.name = self.name W.buffer_set(buff, "name", self.name) W.buffer_set(buff, "localvar_set_channel", self.name) # calculate room display name and set it as the buffer list name room_name = room.display_name(server.user_id) W.buffer_set(buff, "short_name", room_name)
def matrix_create_room_buffer(server, room_id): # type: (MatrixServer, str) -> None buf = W.buffer_new(room_id, "room_input_cb", server.name, "room_close_cb", server.name) W.buffer_set(buf, "localvar_set_type", 'channel') W.buffer_set(buf, "type", 'formatted') W.buffer_set(buf, "localvar_set_channel", room_id) W.buffer_set(buf, "localvar_set_nick", server.user) W.buffer_set(buf, "localvar_set_server", server.name) short_name = strip_matrix_server(room_id) W.buffer_set(buf, "short_name", short_name) W.nicklist_add_group(buf, '', "000|o", "weechat.color.nicklist_group", 1) W.nicklist_add_group(buf, '', "001|h", "weechat.color.nicklist_group", 1) W.nicklist_add_group(buf, '', "002|v", "weechat.color.nicklist_group", 1) W.nicklist_add_group(buf, '', "999|...", "weechat.color.nicklist_group", 1) W.buffer_set(buf, "nicklist", "1") W.buffer_set(buf, "nicklist_display_groups", "0") # TODO make this configurable W.buffer_set(buf, "highlight_tags_restrict", "matrix_message") server.buffers[room_id] = buf server.rooms[room_id] = MatrixRoom(room_id)