aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--wee_slack.py41
1 files changed, 27 insertions, 14 deletions
diff --git a/wee_slack.py b/wee_slack.py
index 5f860e3..f86ee60 100644
--- a/wee_slack.py
+++ b/wee_slack.py
@@ -95,20 +95,30 @@ class SearchList(list):
if name in self.hashtable:
return self.hashtable[name]
# this is a fallback to __eq__ if the item isn't in the hashtable already
- if self.count(name) > 0:
+ if name in self:
self.update_hashtable()
return self[self.index(name)]
def append(self, item, aliases=[]):
super(SearchList, self).append(item)
- self.update_hashtable()
+ self.update_hashtable(item)
- def update_hashtable(self):
- for child in self:
- if hasattr(child, "get_aliases"):
- for alias in child.get_aliases():
+ def update_hashtable(self, item=None):
+ if item is not None:
+ try:
+ for alias in item.get_aliases():
if alias is not None:
- self.hashtable[alias] = child
+ self.hashtable[alias] = item
+ except AttributeError:
+ pass
+ else:
+ for child in self:
+ try:
+ for alias in child.get_aliases():
+ if alias is not None:
+ self.hashtable[alias] = child
+ except AttributeError:
+ pass
def find_by_class(self, class_name):
items = []
@@ -648,6 +658,7 @@ class Channel(object):
set_read_marker = False
time_float = float(time)
tags = "nick_" + user
+ user_obj = self.server.users.find(user)
# XXX: we should not set log1 for robots.
if time_float != 0 and self.last_read >= time_float:
tags += ",no_highlight,notify_none,logger_backlog_end"
@@ -668,8 +679,8 @@ class Channel(object):
if self.channel_buffer:
prefix_same_nick = w.config_string(w.config_get('weechat.look.prefix_same_nick'))
if user == self.last_active_user and prefix_same_nick != "":
- if colorize_nicks and self.server.users.find(user):
- name = self.server.users.find(user).color + prefix_same_nick
+ if colorize_nicks and user_obj:
+ name = user_obj.color + prefix_same_nick
else:
name = prefix_same_nick
else:
@@ -681,8 +692,8 @@ class Channel(object):
nick_suffix_color_name = w.config_string(w.config_get('weechat.color.chat_nick_prefix'))
nick_suffix_color = w.color(nick_suffix_color_name)
- if self.server.users.find(user):
- name = self.server.users.find(user).formatted_name()
+ if user_obj:
+ name = user_obj.formatted_name()
self.last_active_user = user
# XXX: handle bots properly here.
else:
@@ -695,8 +706,8 @@ class Channel(object):
if type(message) is not unicode:
message = message.decode('UTF-8', 'replace')
curr_color = w.color(chat_color)
- if colorize_nicks and colorize_messages and self.server.users.find(user):
- curr_color = self.server.users.find(user).color
+ if colorize_nicks and colorize_messages and user_obj:
+ curr_color = user_obj.color
message = curr_color + message
for user in self.server.users:
if user.name in message:
@@ -874,7 +885,9 @@ class User(object):
def __eq__(self, compare_str):
try:
- if compare_str == self.name or compare_str == "@" + self.name or compare_str == self.identifier:
+ if compare_str == self.name or compare_str == self.identifier:
+ return True
+ elif compare_str[0] == '@' and compare_str[1:] == self.name:
return True
else:
return False