Table of Contents

# $EPIC: set_status_format.txt,v 1.8 2007/05/20 01:19:15 jnelson Exp $

Synopsis:

set status_format [<text>]

Description:

This setting defines the appearance of the data in the status bar. A great deal of information can be displayed in the status bar, such as the current time of day, the current channel name and its modes, the target of a query, and much more.

When set show_status_all is OFF (default), some of the expandos only appear when the window is the current input window. Those expandos are marked with “(CURRENT)”. If ON, they appear all the time.

Most of the expandos are macro-replaced with set variables. These expandos are marked with “(SET <variable>)”. Some of these SET values can contain the expando and will get data put in there. These sub-expanded SETs are marked with “wrapper”.

PLEASE NOTE that the status_format is not reversed, like it is in ircII and BitchX. If you want a reverse status bar, you need to start your status format out with a reverse character (control-V).

List of status bar expandos

All expandos are case sensitive, and by convention are uppercase. Each header tells you

  1. The name of the expando
  2. Whether it shows only on the current input window (CURRENT)
  3. Whether it shows a string you can configure (set link)
  4. Whether it has a sub-expansion value that is substituted into the linked set variable using the same expando. (see below)
%A (CURRENT, SET STATUS_AWAY)

This expands when you are AWAY. If you are connected to only one server, this appears in the current window. If you are connected to multiple servers, this appears in all windows.

%B (SET STATUS_HOLD_LINES, wrapper)

This expands if you have lines in your scrollback that you have never seen (“held lines”). This sub-expansion value is the number of lines that you have never seen. It is updated every window hold_interval or set hold_interval lines.

%C (SET STATUS_CHANNEL, wrapper)

This expands when you are on a channel. The sub-expansion value is the current channel name: * But if set hide_private_channels is ON, and the channel mode includes +p or +s, “*private*” is used instead. * But if set channel_name_width is > 0, and the channel name is longer than this value, it is chopped off to this length.

%D (CURRENT)

This expands to information about your current file transfer when you have a DCC SEND or DCC GET in progress, and when the window's level includes DCC, or if this is the current input window and SET CURRENT_WINDOW_LEVEL includes DCC.

%{1}D

This expands to information about your current file transfer when you have a DCC SEND or DCC GET in progress. It unconditionally appears in every window.

%E

This expands to the current activity string for the window. I need to document this more fully in window_activity_handling.

%F (CURRENT, SET STATUS_NOTIFY, wrapper)

If you /WINDOW NOTIFY ON, a window, then hide it, and output occurs to one of the levels in the hidden window's WINDOW NOTIFY_LEVEL, the window will “notify” you that it has output. The sub-expansion value is a comma-separated list of the window refnums that are “notifying”.

%{1}F (CURRENT, SET STATUS_NOTIFY, wrapper)

Just like %F, this gives you a list of notifying hidden windows, but if the window has a name, the name is used instead of its refnum.

This expands if you have lines in your scrollback that you have never seen (“held lines”).

%I (CURRENT, SET STATUS_INSERT)

This expands when SET INSERT_MODE is ON.

This expands when you are browsing the scrollback in this window. It can be helpful to use this because any new output to your window is “held” when you are in scrollback mode, and this gives you a visual clue that you haven't existed scrollback mode yet.

%{1}K

This expands when you are browsing the scrollback in this window. It expands to “(Scroll: <num1> of <num2>)” where <num1> is how far the top of your display is from the bottom of the scrollback buffer (including any lines being held), and <num2> is how many lines total are in your scrollback buffer (including any lines being held).

%L (SET STATUS_CPU_SAVER, wrapper)

This expands when you are in CPU SAVER mode. The sub-expansion value is the literal string “CPU”.

%M (CURRENT, SET STATUS_MAIL, wrapper)

This expands whenever SET MAIL is not 0 and you have mail in your inbox. EPIC only supports mbox right now. If SET MAIL is 1, the sub-expression value is the empty string. If SET MAIL is 2, the sub-expression value is the number of emails in your inbox.

%N (SET STATUS_NICKNAME, wrapper)

This always expands. The sub-expansion value is the nickname you are using on the window's server. If the window is not connected to a server, the sub-expansion value is “<invalid server>”. If the window is connected to a disconnected server, the sub-expansion value is “<not registered yet>”.

%O (CURRENT, SET STATUS_OVERWRITE)

This expands when SET INSERT_MODE is OFF.

%P

This is an expando which is used by the developers to display debugging information without doing any screen output. There is no point in documenting it since it changes frequently.

%Q (SET STATUS_QUERY, wrapper)

This expands whenever you have a QUERY in this window. The sub-expansion value is target you are querying.

%R

This always expands to the window's name, if it has one, and to the window's refnum, if it does not have a name.

%{1}R

This always expands to the window's refnum.

%S (SET STATUS_SERVER, wrapper)

This always expands except when you are connected to exactly one server. 1) If the window is not connected to a server, it expands to “No Server”. 2) If our name for the server is an IP address, the sub-expansion value is the IP address. 3) Otherwise, the sub-expansion value is the first segment of our name that doesn't start with “irc”. The sub-expansion value is truncated to 60 chars if it is too long. As an example, if you are connected to “irc.choomba.com”, then %S is “choomba”, and if you are connected to “192.168.1.101” then %S is “192.168.1.101” and if you are connected to “zen.buddha.com” then %S is “zen”. I hope this makes sense!

%{1}S (SET STATUS_SERVER, wrapper)

This is just like %S, but it always expands, even when you are connected to exactly one server.

%{2}S (SET STATUS_SERVER, wrapper)

This is just like %{1}S, but the sub-expansion value is the full our name of the server, and is not chopped into segments.

%{3}S (SET STATUS_SERVER, wrapper)

This is just like %{1}S, but the sub-expansion value is the group name of the server.

%T (CURRENT, SET STATUS_CLOCK, wrapper)

This expands if SET CLOCK is ON.

  1. If SET CLOCK_FORMAT is set, the sub-expansion value is the current time formatted with strftime() using SET CLOCK_FORMAT.
  2. If SET CLOCK_FORMAT is unset and SET CLOCK_24HOUR is ON, then the sub-expansion value is the current time in 24 hour time.
  3. Otherwise, the sub-expansion value is the current time in 12 hour (AM-PM) time.
%{1}T

This expands to the string “TEST”. If you don't see this on the status bar when you use this expando, your epic version doesn't support status expando maps.

%U

[see below]

%V (CURRENT)

This expands to the client's version string ($V)

%W (CURRENT, set status_window)

This expands if there is more than one window on the screen, and this window is the current input window. This expando should be used as a visual cue that this window is the current input window when you are using a split screen.

%{1}W (SET STATUS_NOSWAP, wrapper)

This expands if window swappable is OFF.

This expands on every window on every screen.

%{3}W (CURRENT, set status_window)

This expands on the current window, even if there is only one window on the screen.

%X
%Y
%Z

[see below]

%# (CURRENT, SET STATUS_UMODE, wrapper)

This expands when you have set a user mode on the window's server. It alawys expands if you are connected to more than one server. It does not expand if you are not connected to a server in this window. The sub-expansion value is the user mode for this server.

<noparse>%%</noparse>

This expands to the literal string “%”. This is necessary for when you want to put a % in your status bar.

%* (CURRENT, SET STATUS_OPER)

This expands when you are an irc operator.

%+ (SET STATUS_MODE, wrapper)

This expands when the current channel has a channel mode. This means if you are not on a channel, or the current channel does not have a mode, this does not expand. The sub-expression value is the current channel's mode, including any extra arguments (the channel's limit, the channel's key). Because the channel's key might contain a $ and this would interefere with set status_does_expandos, special handling is done to protect you.

%{1}+ (SET STATUS_MODE, wrapper)

This is like %+, but it expands even when the current channel doesn't have a mode.

%{2}+ (SET STATUS_MODE, wrapper)

This is like %+, but doesn't include the extra arguments (limit, key).

%{3}+

This is like %{1}+, but doesn't include the extra arguments (limit, key).

This expands when you have a WINDOW STATUS_SPECIAL value.

This expands when you are a channel voice for the current channel. This does not expand when you are a channel operator for the current channel.

%>

This special expando begins the “right justify” section. All text that occurs after %> will be right justified on the status bar, but if the right justify section is too long to fit on the screen, it will be truncated on the right end to fit.

This expands when you are either a channel operator or channel half-operator.

  1. If you are a channel operator for the current channel, it expands to SET STATUS_CHANOP
  2. If you are a channel half-operator for the current channel, it expands to SET STATUS_HALFOP

Some servers call the half-operator a channel helper

This expands to SET STATUS_SSL_ON when the window's server connection is using SSL encryption. Otherwise, it expands to SET STATUS_SSL_OFF.

%U (CURRENT, SET STATUS_USER)
%X (CURRENT, SET STATUS_USER1)
%Y (CURRENT, SET STATUS_USER2)
%Z (CURRENT, SET STATUS_USER3)
%0 (CURRENT, SET STATUS_USER)
%1 (CURRENT, SET STATUS_USER1)

… (%2, %3, %4, %5, %6, %7, %8) …

%9 (CURRENT, SET STATUS_USER9)
%{1}0 (CURRENT, SET STATUS_USER10)

… (%{1}1, %{1}2, %{1}2, %{1}3, %{1}4, %{1}5, %{1}6, %{1}7, %{1}8) …

%{1}9 (CURRENT, SET STATUS_USER19)
%{2}0 (SET STATUS_USER20)

… (%{2}1, %{2}2, %{2}2, %{2}3, %{2}4, %{2}5, %{2}6, %{2}7, %{2}8) …

%{2}9 (SET STATUS_USER29)
%{3}0 (SET STATUS_USER30)

… (%{3}1, %{3}2, %{3}2, %{3}3, %{3}4, %{3}5, %{3}6, %{3}7, %{3}8) …

%{3}9 (SET STATUS_USER39)

These always expand.

Syntax of Status Expandos

All expandos have a “map” level, and the level is specified with the syntax %{map}expando, where “map” is a number and “expando” is a single character. If you don't give a “map”, map 0 is assumed. In the above lists, you will see that most of the expandos are in map 0. But to be absolutely clear about this, %{0}S and %S are the same thing.

Duplicated expandos

Note that SET STATUS_USER - SET STATUS_USER3 have 2 (two) expandos associated with them. This is for convenience, as the remaining user-definable expandos are only referenced by number. The duplicates cannot be set independently. The STATUS_USER expandos defined in the map level of their respective tens-digit. This is especially important for those above 9, which *must* have their map level specified. For example, STATUS_USER15 would be specified as %{1}5.

Repeated Last Character

The normal behavior is to cause the last character in the status bar to repeat until the the of the line. This can be disabled by turning on the set STATUS_NO_REPEAT setting, or by making the last character in set STATUS_FORMAT a space. No repetition is done if the right-alignment expando is used.

Double Status Bar

If the current window happens to have window DOUBLE turned on (double status line), then this setting is ignored, in favor of set STATUS_FORMAT1 and set STATUS_FORMAT2. The former applies to the top line, the latter to the bottom. They are otherwise the same as set STATUS_FORMAT.

Window-specific status formats

You can overrule set status_format, set status_format1, and set status_format2 on a per-window basis by setting that window's window status_format, window status_format1, or window status_format2 value.

Sub-expansion values

Historically, ircII does not permit you to put alias expandos in your status format. This is a problem because a lot of the things that you want to put on your status bar are only available as alias expandos. So status expandos have a way to “sub-expand”, allowing you to put a variable in the status bar.

The way this works is by using the status expando in the linked set value. For example, %Q expands to set status_query when you have a query. But how do you put the current query target in set status_query? It can change dynamically. You do it by including %Q.

/[[SET STATUS_QUERY]]  (Query: %Q)

So for any expando in the above list that says wrapper, you are expected to put that expando in the corresponding set value, where the sub-expansion value will be put.

I hope this makes sense. Check out the set status_* variables to see how each of them link back to their corresponding status expando.

Examples:

A common status bar configuration:

/[[set status_format]] *%R* %H%=%@%N%*%S%# %C%+%Q %O%M%A%T%W %D *

A common doubled status bar configuration:

/[[set status_format1]] *%R* %H%=%@%N%*%S%# %C%+%Q %O%M%A%T %D *
/[[set status_format2]] %W %X %Y $Z *