# $Id: config,v 1.1 2004/08/29 16:56:24 dope Exp dope $ # # Originaly irssi configuration. Tweaked for my own usage servers = ( { address = "123.123.123.123"; chatnet = "Bouncer"; port = "50023"; user = "strcat"; pass = "PASSWORD"; use_ssl = "yes"; ssl_verify = "no"; autoconnect = "no"; }, { address = "irc.fu-berlin.de"; chatnet = "Ircnet"; port = "6667"; autoconnect = "no"; }, { address = "irc.freenode.net"; chatnet = "Freenode"; port = "6697"; use_ssl = "yes"; ssl_verify = "yes"; autoconnect = "no"; } ); chatnets = { IRCnet = { type = "IRC"; max_kicks = "4"; max_modes = "3"; max_msgs = "5"; max_whois = "4"; max_query_chans = "5"; }; SILC = { type = "SILC"; }; euirc = { type = "IRC"; autosendcmd = "/^msg nickserv identify PASSWORD;wait -ircnet 2000"; }; freenode = { type = "IRC"; autosendcmd = "/nick strcat1974;/^msg nickserv identify PASSWORD;wait -freenode 2000"; sasl_mechanism = "PLAIn"; sasl_username = "strcat1974"; sasl_password = "PASSWORD"; }; BNC = { type = "IRC"; }; Bouncer = { type = "IRC"; }; }; channels = ( { name = "#irssi.de"; chatnet = "Ircnet"; autojoin = "No"; }, { name = "#zsh"; chatnet = "Freenode"; autojoin = "Yes"; }, { name = "#neomutt"; chatnet = "Freenode"; autojoin = "Yes"; }, { name = "#grml"; chatnet = "Freenode"; autojoin = "Yes"; }, { name = "#tmux"; chatnet = "Freenode"; autojoin = "Yes"; }, { name = "##bsdforen.de"; chatnet = "Freenode"; autojoin = "Yes"; }, { name = "#debian.de"; chatnet = "Freenode"; autojoin = "Yes"; } ); aliases = { AME = "foreach channel ${k}me $-; foreach query ${k}me $-"; ASAY = "foreach channel ${k}msg * $-; foreach query ${k}msg * $-"; B = "ban"; BANS = "ban"; BYE = "quit"; C = "clear"; CHAT = "dcc chat"; CL = "clear"; DATE = "time"; DESCRIBE = "action"; GOTO = "sb goto"; H = "help"; HOST = "userhost"; IG = "ignore"; INVITELIST = "mode $C +I"; J = "join"; K = "kick"; KB = "kickban"; KN = "knockout"; LAST = "lastlog"; LEAVE = "part"; M = "msg"; MUB = "unban *"; N = "names"; Q = "QUERY"; RUN = "script load"; SAY = "msg *"; SB = "scrollback"; SBAR = "STATUSBAR"; SIGNOFF = "quit"; T = "topic"; UB = "unban"; UMODE = "mode $N"; UNIG = "unignore"; UPTIME = "eval exec -o - expr `date +%s` - \\$F | awk '{print \"Irssi uptime: \"int(\\\\\\$1/3600/24)\"d \"int(\\\\\\$1/3600%24)\"h \"int(\\\\\\$1/60%60)\"m \"int(\\\\\\$1%60)\"s\" }'"; W = "who"; WC = "window close"; WI = "whois"; WII = "whois $0 $0"; WJOIN = "join -window"; WN = "window new hide"; WA = "window goto active"; WQUERY = "query -window"; WW = "whowas"; back = "/nick strcat;/msg nickserv identify PASSWORD;/say re"; bic = "say (__._);/say (_.__);/say (__._);/say (_.__)"; brb = "/say Be right back.;/nick strcat{away};/msg nickserv identify PASSWORD;/raway"; rules = "/say $*: Recommended channel behaviours can be found at http://www.strcat.de/chanregeln.txt"; euns = "/nick strcat;/msg nickserv identify PASSWORD"; figlet = "/exec -o - figlet -d ~/.fonts/ -f standard $*"; bsay = "/exec -o - figlet -d ~/.fonts/ -f standard $*"; cowsay = "/exec -o cowsay $*"; freens = "/nick strcat1974;/msg nickserv identify PASSWORD"; gw = "/say $0: ja. is ja gut.. jetzt geh endlich sterben"; regelt = "/say $* regelt irgendwie"; saugt = "/say $* saugt auch."; rego = "window down;window size 2;window up"; bego = "window down;window size 30;window up"; rk = "/ban *!*root@*"; ous = "/say $*: Mutt, GNU screen, Slrn, Vim, W3m und Zsh"; sicen = "/say $*: Please ask questions that are specific, informative, complete, concise, and on-topic."; sicde = "/say $*: Stell Fragen die ontopic und vollstaendig sind."; CS = "/msg chanserv"; ASCII = "exec -o toilet -f future --irc"; RFAT = "exec -o toilet -f rustofat --irc"; CSINFO = "/msg chanserv info $0"; CSIDENTIFY = "/msg chanserv identify $0 $1"; CSACCESS = "/msg chanserv access $0 list"; CSKICK = "/msg chanserv op $C $N;/wait 50;/kick $0 $1-;/msg chanserv op $C -$N"; CSBAN = "/msg chanserv op $C $N;/wait 50;/ban $0;/msg chanserv op $C -$N"; CSMUTE = "/msg chanserv op $C $N;/wait 50;/mode +q $0;/msg chanserv op $C -$N"; CSKICKBAN = "/msg chanserv op $C $N;/wait 50;/kb $0 $1-;/msg chanserv op $C -$N"; CSUNBAN = "/msg chanserv op $C $N;/wait 50;/unban $0;/msg chanserv op $C -$N"; CSTOPIC = "/msg chanserv op $C $N;/wait 50;/topic $0-;/msg chanserv op $C -$N"; CSMODE = "/msg chanserv op $C $N;/wait 50;/mode $0;/msg chanserv op $C -$N"; CSINVITE = "/msg chanserv op $C $N;/wait 50;/invite $0;/msg chanserv op $C -$N"; NS = "/msg nickserv"; NSIDENTIFY = "/msg nickserv identify $0"; NSGHOST = "/msg nickserv ghost $0 $1"; NSRECOVER = "/msg nickserv recover $0 $1"; NSRELEASE = "/msg nickserv release $0 $1"; NSINFO = "/msg nickserv info $0"; NSLINK = "/msg nickserv link $0 $1"; CSOP = "/msg chanserv op $C $0"; CSDEOP = "/msg chanserv deop $C $0"; ALLLASTLOG = "script exec foreach (Irssi::windows()) {Irssi::command(\"lastlog - -window \\$_->{'refnum'} $*\")\\;}"; window_goto_last_minus = "script exec Irssi::command(\"window goto \".(sort{\\$b<=>\\$a}map{\\$_->{refnum}}Irssi::windows())[$0]) "; mubmy = "script exec \\$c=Irssi::active_win->{'active'}\\;if(\\$c){foreach \\$ban (\\$c->bans()){if(\\$ban->{'setby'} =~ /^$N/){\\$unban.=\\$ban->{'ban'}.' '\\;}}}\\;\\$c->command(\"unban \\$unban\");"; qpass = "quote pass strcat:PASSWORD"; vserver = "connect -ssl 123.123.123.123 50023 strcat:PASSWORD"; CUBES = "SCRIPT EXEC my$$w=Irssi::active_win \\; my$$C=MSGLEVEL_CLIENTCRAP \\; my$$N=MSGLEVEL_NEVER|$$C \\; sub P{$$w->print(@_)} \\; P(\"%_bases\", $$C) \\; P( do { join '', map { \"%x0$${_}0$$_\" } '0'..'9','A'..'F' }, $$N) \\; P(\"%_cubes\", $$C) \\; P( do { my $$y = $$_*6 \\; join '', map { my $$x = $$_ \\; map { \"%x$$x$$_$$x$$_\" } @{['0'..'9','A'..'Z']}[$$y .. $$y+5] } 1..6 }, $$N) for 0..5 \\; P(\"%_grays\", $$C) \\; P( do { join '', map { \"%x7$${_}7$$_\" } 'A'..'X' }, $$N) \\; P(\"%_mIRC extended colours\", $$C) \\; my $$x \\; $$x .= sprintf \"\\cC99,%02d%02d\",$$_,$$_ for 0..15 \\; P($$x, $$N) \\; for my $$z (0..6) { my $$x \\; $$x .= sprintf \"\\cC99,%02d%02d\",$$_,$$_ for 16+($$z*12)..16+($$z*12)+11 \\; P($$x, $$N) }"; }; statusbar = { # formats: # when using {templates}, the template is shown only if it's argument isn't # empty unless no argument is given. for example {sb} is printed always, # but {sb $T} is printed only if $T isn't empty. items = { # start/end text in statusbars barstart = "{sbstart}"; barend = "{sbend}"; topicbarstart = "{topicsbstart}"; topicbarend = "{topicsbend}"; # treated "normally", you could change the time/user name to whatever time = "{sb $Z}"; user = "{sb {sbnickmode $cumode}$N{sbmode $usermode}{sbaway $A}}"; # treated specially .. window is printed with non-empty windows, # window_empty is printed with empty windows window = "{sb $winref:$itemname{sbmode $M}}"; window_empty = "{sb $winref{sbservertag $tag}}"; prompt = "{prompt $[.15]itemname}"; prompt_empty = "{prompt $winname}"; topic = " $topic"; topic_empty = " Get a clue.. "; # sb_daumode = "{sb daumode I: $0 ($1) O: $2 ($3)}"; # all of these treated specially, they're only displayed when needed lag = "{sb Lag: $0-}"; # act = "{sb Act: $0-}"; more = "-- more --"; }; # there's two type of statusbars. root statusbars are either at the top # of the screen or at the bottom of the screen. window statusbars are at # the top/bottom of each split window in screen. default = { # the "default statusbar" to be displayed at the bottom of the window. # contains all the normal items. window = { disabled = "no"; # window, root type = "window"; # top, bottom placement = "bottom"; # number position = "2"; # active, inactive, always visible = "active"; # list of items in statusbar in the display order items = { barstart = { priority = "100"; }; user = { }; window = { }; window_empty = { }; lag = { priority = "-1"; }; more = { priority = "-1"; alignment = "right"; }; barend = { priority = "100"; alignment = "right"; }; usercount = { }; # daumode = { }; chanact = { }; }; }; # statusbar to use in inactive split windows window_inact = { type = "window"; placement = "bottom"; position = "1"; visible = "inactive"; items = { barstart = { priority = "100"; }; window = { }; window_empty = { }; more = { priority = "-1"; alignment = "right"; }; barend = { priority = "100"; alignment = "right"; }; centericq = { }; }; disabled = "yes"; }; # we treat input line as yet another statusbar :) It's possible to # add other items before or after the input line item. prompt = { type = "root"; placement = "bottom"; # we want to be at the bottom always position = "100"; visible = "always"; items = { prompt = { priority = "-1"; }; prompt_empty = { priority = "-1"; }; # treated specially, this is the real input line. input = { priority = "10"; }; }; }; # topicbar topic = { type = "window"; placement = "top"; position = "1"; visible = "active"; items = { topicbarstart = { priority = "100"; }; topic = { }; topic_empty = { }; topicbarend = { priority = "100"; alignment = "right"; }; }; }; awl_0 = { items = { barstart = { priority = "100"; }; awl_0 = { }; barend = { priority = "100"; alignment = "right"; }; }; }; }; }; settings = { core = { real_name = "Christian 'strcat' Schneider"; user_name = "strcat"; nick = "strcat1974"; awaylog_level = "msgs hilight invites ctcps"; rawlog_lines = "1000"; proxy_address = " "; proxy_port = "7666"; timestamp_format = "%T"; }; "fe-common/core" = { theme = "painless"; autocreate_own_query = "no"; autocreate_query_level = "DCCMSGS"; use_status_window = "no"; use_msgs_window = "no"; timestamps = "yes"; autoclose_windows = "no"; reuse_unused_windows = "yes"; autolog = "yes"; autolog_path = "~/.irssi/logs/$tag/$0/%Y-%m-%d.log"; beep_msg_level = "msgs"; autocreate_split_windows = "no"; hide_colors = "no"; awaylog_colors = "no"; emphasis_multiword = "yes"; term_charset = "utf-8"; emphasis_italics = "yes"; window_check_level_first = "yes"; window_default_level = "ALL -JOINS -PARTS -QUITS"; }; # "fe-text" = { autostick_split_windows = "no"; term_type = " utf-8"; }; "perl/core/scripts" = { usercount_show_zero = "no"; usercount_show_halfops = "yes"; usercount_show_ircops = "no"; show_whois_snote = "yes"; ignore_log = "~/.irssi/irclogs/ignore.log"; neat_maxlength = "12"; url_command = "/home/dope/bin/url_handler.sh __URL__ &"; chanact_show_all = "no"; chanact_display = "$H$N:$M.$S$C"; neat_colorize = "no"; autorejoinpunish_kickban_message = "Autorejoin saugt."; autorejoinpunish_knockout = "yes"; autorejoinpunish_knockout_message = "Autorejoin saugt."; autorejoinpunish_knockout_time = "60"; autorejoinpunish_only_own_kicks = "yes"; antiflud_channels = "#buha.unix #buha "; chanact_chop_status = "no"; scriptassist_script_sources = "http://scripts.irssi.org/scripts.dmp"; wlstat_placement = "bottom"; awl_shared_sbar = "OFF"; awl_viewer = "no"; awl_block = "20"; trackbar_style = "%r"; fancy_abbrev = "fancy"; }; "irc/core" = { alternate_nick = "strcat_"; ctcp_version_reply = "Irssi v$J on OpenBSD i386"; ctcp_userinfo_reply = "I'm $Y, and u? \006hAhAhAhAhAhA"; skip_motd = "yes"; join_auto_chans_on_invite = "no"; }; "irc/notifylist" = { notify_check_time = "10sec"; }; "irc/dcc" = { dcc_download_path = "/home/dope/.irssi/dccs"; dcc_send_replace_space_with_underscore = "yes"; dcc_autoget = "yes"; dcc_autoresume = "yes"; dcc_autorename = "yes"; dcc_own_ip = "84.146.244.42"; }; "fe-text" = { indent_always = "yes"; indent = "0"; colors = "yes"; actlist_sort = "refnum"; colors_ansi_24bit = "no"; }; proxy = { irssiproxy_bind = "foo.bar.tdl"; }; "irc/flood" = { flood_max_msgs = "1000"; flood_timecheck = "100"; }; }; keyboard = ( { key = "meta-K"; id = "insert_text"; data = "/k "; }, { key = "meta-c"; id = "command"; data = "clear -all"; }, { key = "meta-j"; id = "insert_text"; data = "/join #"; }, { key = "meta-n"; id = "command"; data = "window new"; }, { key = "meta-a"; id = "command"; data = "part $C"; }, { key = "meta-m"; id = "command"; data = "exec -o IRSIINP.sh"; }, { key = "meta-q"; id = "insert_text"; data = "/query "; }, { key = "meta-t"; id = "insert_text"; data = "/topic $C $topic"; }, { key = "meta-r"; id = "command"; data = "window shrink 1"; }, { key = "meta-g"; id = "command"; data = "window grow 1"; }, { key = "meta-u"; id = "erase_line"; data = ""; }, { key = "meta-1"; id = "command"; data = "window goto 1"; }, { key = "cleft"; id = "backward_word"; data = ""; }, { key = "^[[1;5D"; id = "backward_word"; data = ""; }, { key = "¹"; id = "change_window"; data = "1"; }, { key = "²"; id = "change_window"; data = "2"; }, { key = "meta2-P"; id = "key"; data = "F1"; }, { key = "meta2-Q"; id = "key"; data = "F2"; }, { key = "F1"; id = "command"; data = "window goto active"; }, { key = "F2"; id = "command"; data = "trackbar"; }, { key = "meta2-R"; id = "key"; data = "F3"; }, { key = "F3"; id = "command"; data = "window prev"; }, { key = "meta2-S"; id = "key"; data = "F4"; }, { key = "F4"; id = "command"; data = "window next"; } ); completions = { k = { value = "k/a"; auto = "yes"; }; boo = { value = ". o O ("; auto = "yes"; }; _je = { value = "J-E-H-O-V-A!!!11!!"; auto = "yes"; }; iwn = { value = "Ich war es *wirklich* nicht!"; auto = "yes"; }; izf = { value = "Im Zweifelsfall `rm -rf /'"; auto = "yes"; }; hpme = { value = "http://www.strcat.de/"; auto = "no"; }; hprtfm = { value = "http://www.strcat.de/rtfm/"; auto = "no"; }; hg = { value = "Hi Grosse."; auto = "no"; }; HPzsh = { value = "http://www.strcat.de/zsh/"; auto = "no"; }; HPwhy = { value = "http://www.strcat.de/eigenes/why.html"; auto = "no"; }; HPdot = { value = "http://www.strcat.de/dotfiles/"; auto = "no"; }; Yanfs = { value = "And now for something completely different..."; auto = "no"; }; Ybtdt = { value = "Been there, done that, got the tshirt."; auto = "yes"; }; Ypass = { value = "You are in a maze of twisty little passages, all alike."; auto = "yes"; }; Yicty = { value = "I could tell you - but then I'd have to kill you."; auto = "yes"; }; Ylinux = { value = "Linux is not a desktop OS for people whose VCRs are still flashing \"12:00\"."; auto = "yes"; }; Ywyot = { value = "when your only tool is a hammer - every problem looks like a nail."; auto = "yes"; }; Ywus = { value = "Es muss noch einen signifikanten Unterschied geben zwischen dem was Du meinst und dem was ich verstanden habe... "; auto = "yes"; }; Ygweg = { value = "Geh weg, Du verschwendest Zeit und Bandbreite, die Du nicht verdient hast."; auto = "yes"; }; Yhae = { value = "In erster Naeherung mit einem zweiten Versuch bei der Beschreibung Deines Problems... Anders formuliert: Haeh?!?"; auto = "yes"; }; Ysau = { value = "Fast wie im richtigen Leben. Da denkt man an einen Schweinebraten und dann kommt eine ganze Sau daher.. "; auto = "yes"; }; Ygs = { value = "Geh sterben."; auto = "yes"; }; Ygw = { value = "Geh weg."; auto = "yes"; }; Ysa = { value = "Score adjusted."; auto = "yes"; }; Yplo = { value = "\"Anotherone bites the dust\" (w) Queen *plonk*"; auto = "yes"; }; Ymgi = { value = "Langsam aber sicher komm ich mir vor wie ein Magnet fuer Idioten."; auto = "yes"; }; Ydgw = { value = "Dieser Gott .. wie mag die wohl aussehend? *sigh*"; auto = "yes"; }; }; logs = { "~/.irssi/irclogs/euirc/buha.unix/buha.unix-%Y-%m-%d" = { auto_optn = "yes"; level = "ALL"; items = ( { type = "target"; name = "#buha.unix"; } ); }; "~/.irssi/irclogs/euirc/buha-%Y-%m-%d" = { auto_open = "yes"; level = "ALL"; items = ( { type = "target"; name = "#buha"; } ); }; "~/.irssi/irclogs/querys/cyberangel/cyberangel-%d-%b-%Y" = { auto_open = "yes"; level = "MSGS"; items = ( { type = "target"; name = "cyberangel"; } ); }; "~/.irssi/irclogs/querys/doomshammer/doomshammer-%d-%b-%Y" = { level = "MSGS"; items = ( { type = "target"; name = "doomshammer"; } ); }; "~/.irssi/irclogs/querys/katze/katze-%d-%b-%Y" = { level = "MSGS"; items = ( { type = "target"; name = "katze"; } ); }; "~/.irssi/irclogs/querys/axel-fox/axel-fox-%d-%b-%Y" = { level = "MSGS"; items = ( { type = "target"; name = "axel-fox"; } ); }; }; ignores = ( { mask = "*zzz*"; level = "NICKS"; }, { mask = "*afk*"; level = "NICKS"; }, { mask = "*away*"; level = "NICKS"; }, { mask = "*!*@*.try2hack.nl"; level = "ALL"; replies = "yes"; }, { mask = "*!*@*.paphat.dk"; level = "ALL"; replies = "yes"; }, { mask = "*!*web@*.dk"; level = "ALL"; replies = "yes"; }, { mask = "FUNDRAISING"; level = "NOTICES"; }, { mask = "Dusk"; level = "ALL"; }, { mask = "*!*@thufirnet.lir.dk"; level = "ALL"; replies = "yes"; }, { mask = "*!*Hasse@sdnat1.flatrate.dk"; level = "ACTIONS"; }, { mask = "*!*@212.130.226.194"; level = "ALL"; replies = "yes"; }, { mask = "*!*@pD9E2D102.dip.t-dialin.net"; level = "ALL"; }, { mask = "*!*rippie@*"; level = "ALL"; }, { mask = "*!*@port167.ds1-vir.adsl.cybercity.dk"; level = "ALL"; }, { mask = "*!*@62.107.146.218"; level = "ALL"; }, { mask = "*!*@212.130.22.*"; level = "ALL"; }, { mask = "Voicer"; level = "MODES"; }, { mask = "*!*@NoKnownName.users.quakenet.org"; level = "ALL"; }, { mask = "*!*@*elite*"; level = "ALL"; }, { mask = "*!*2212.130.112.11.nal-net.dk"; level = "ALL"; }, { mask = "*!*@212.130.112.11.nal-net.dk"; level = "ALL"; }, { mask = "*!*@styrken.users.quakenet.org"; level = "ALL"; }, { mask = "*!*tpd@*.arcnxx17.adsl.tele.dk"; level = "ALL"; }, { mask = "*!*@ewalle.studby.nlh.no"; level = "ALL"; }, { level = "ACTIONS"; pattern = "^is back -"; regexp = "yes"; }, { level = "ACTIONS"; pattern = "^powrocil -"; regexp = "yes"; }, { level = "ACTIONS"; pattern = "^is gone\002."; regexp = "yes"; }, { level = "ACTIONS"; pattern = "^is away"; regexp = "yes"; }, { level = "ACTIONS"; pattern = "^poszedl -"; regexp = "yes"; }, { mask = "*!3seas@*"; level = "ALL"; replies = "yes"; }, { mask = "[!?]{2,}"; level = "ALL"; }, { mask = "*!*@*.try2hack.nl"; level = "ALL"; regexp = "yes"; }, { mask = "*!*@*.paphat.dk"; level = "ALL"; replies = "yes"; }, { mask = "*!*web@*.dk"; level = "ALL"; replies = "yes"; }, { mask = "FUNDRAISING"; level = "ALL"; }, { mask = "waler"; level = "ALL"; }, { mask = "uebx"; level = "ALL"; }, { mask = "Drphil_"; level = "ALL"; }, { mask = "pizon_"; level = "ALL"; }, { mask = "Selink"; level = "ALL"; }, { mask = "etuli"; level = "ALL"; }, { mask = "joelh"; level = "ALL"; }, { mask = "*!*@*.aol.com"; level = "ALL"; replies = "yes"; }, { mask = "Goebbels_"; level = "ALL"; }, { mask = "Markty"; level = "ALL"; }, { mask = "polec0"; level = "ALL"; }, { mask = "Cornuea"; level = "ALL"; }, { mask = "Jaux"; level = "ALL"; }, { mask = "Ox240"; level = "ALL"; }, { mask = "Rcuarzo"; level = "ALL"; }, { mask = "Dompedro"; level = "ALL"; }, { mask = "cheela"; level = "ALL"; }, { mask = "japan99"; level = "ALL"; }, { mask = "finanz8"; level = "ALL"; }, { mask = "joooooo"; level = "ALL"; }, { mask = "[LDG]OFFL1NE"; level = "ALL"; }, { mask = "Studio54"; level = "ALL"; }, { mask = "funky|Studio54"; level = "ALL"; }, { mask = "*JMASTERJ*"; level = "ALL"; }, { mask = "funky|*"; level = "ALL"; }, { mask = "mth`Studio54|na"; level = "ALL"; }, { mask = "mth`*"; level = "ALL"; }, { mask = "Funky*"; level = "ALL"; }, { mask = "*!*bostik@213.*"; level = "ALL"; }, { mask = "*!*@*.sympatico.ca"; level = "ALL"; }, { level = "MSGS"; pattern = "(completely|free)+"; regexp = "yes"; }, { level = "MSGS"; pattern = "free (porn|sex)"; regexp = "yes"; }, { mask = "*!*@*sprint-canada.net"; level = "ALL"; }, { mask = "fucky0"; level = "ALL"; replies = "yes"; }, { mask = "frickle"; level = "ALL"; replies = "yes"; }, { mask = "PSYCgate"; level = "ALL"; }, { mask = "*!*atlantis@*.dip0.t-ipconnect.de"; level = "MSGS"; }, { level = "QUITS"; }, { mask = "sun_wang"; level = "ALL"; }, { mask = "watabou"; level = "ALL"; }, { mask = "sun__wang"; level = "ALL"; } ); notifies = { }; hilights = ( { # Smilies ;) Not perfect, but .. text = "(^|[[:space:]]+)[;:=]-*[)/(