| Commit message (Collapse) | Author |
|
Apparently these are common. There's no terminfo for these, so
manually define the xterm sequences.
There's no documentation in the manual for the "intuitive" keys...
I'm not sure if that should continue to be the case or not.
|
|
Don't want to be touching window names much though, otherwise query
window names would interfere with tab completion within a channel.
|
|
A_BLINK has probably always existed, but there's no good reason to
ever use it, so make it do italics instead. Normally all attributes
are set by a single set_attributes string if it's set, so clear it
to force ncurses to use the reassigned enter_blink_mode string. If
the terminal has no enter_italics_mode string, then nothing will
happen.
This makes setting multiple attributes a bit less efficient, but I
don't think it's likely to make much of a difference since using
multiple attributes at once is so uncommon.
|
|
Bad things happen otherwise.
|
|
This restores showing the topic and names for automatic joined
channels, while still avoiding touching the windows, by using Cold
heat.
|
|
OpenBSD's xterm doesn't have bracketed paste mode, and it would be
nice to still be able to paste in several lines and collapse them
with M-q, provided one remembers to type C-z p first...
|
|
|
|
Otherwise it could hit the assertion in editBuffer while converting
to mbs for consumption by the rest of the program.
It's possibly to trigger this with LC_ALL=C and typing C-z C-v M-a,
for example.
|
|
Otherwise expanding a macro could hit the assertion in editBuffer
while converting to mbs for consumption by the rest of the program.
|
|
|
|
The new reference to the COMMANDS section at the beginning of the
manual would get matched instead.
|
|
Provide a hotkey to browser the manual in its own window.
After input, nicm (tmux upstream) added "-S" to tmux(1) such that
the "new-window" command (in combination with "-d") first looks
for the given window name and selects the window if it exists
instead of trying to create a window that already exists.
Given that this makes chat.tmux.conf idempotent, we can now also reload
it at runtime to refresh settings.
|
|
In other words, only automatically switch to an automatically joined
channel window if there's only one. Otherwise, stay on the <network>
window and avoid touching the channel windows with their automatic
topic and names replies.
This fixes unintentionally clearing saved window unread counts when
rejoining channels automatically by switching to them as they are
joined.
|
|
A little annoying to make it a "chord" like this, but C-v is already
used for scrolling, following Emacs-style key bindings (in order
to have a way to scroll without using "special" keys like the arrows
and page up/down), and C-z is at least already in the business of
inserting control characters. This makes it possible to manually
enter some things that are otherwise only possible with /exec printf.
|
|
Only respawn the pane not the entire window to avoid killing other
possibly existing panes in the same window.
|
|
Third time's the charm?
|
|
|
|
With the early return, mainUpdate doesn't get called in cases where
other functions expect windowShow to call it, such as when closing
or moving windows.
|
|
LibreTLS in particular is gaining traction in packaging, so point
to Repology pages to make users' lives easier.
|
|
|
|
This is used by InspIRCd to indicate if a user is a bot (if it set
user mode +B).
|
|
I don't know why I ruled this out originally, it's more visually
pleasing to me now especially that threshold is likely to remain
set at "+" for a long time.
|
|
|
|
This allows for non-ASCII characters in timestamps, and simplifies
things by including the trailing space in the width.
|
|
This respects the user's locale settings.
|
|
|
|
|
|
Finally! Changing the message visibility threshold doesn't totally
screw up scroll position. Neither do horizontal resizes, but vertical
resizes drift because the value of windowTop() changes before and
after...
The scroll position is anchored to the top of the window. It's
arbitrary whether to anchor the top or the bottom, but other scrolling
commands like M-p and C-r are anchored to the top, so this is
consistent.
|
|
This directly correlates hard-wrapped lines with the soft lines
they were wrapped from.
Choosing uint here because it doesn't change the size of struct
Line. It doesn't at all matter since buffers only hold 1024 lines
at a time anyway.
|
|
|
|
|
|
Otherwise they are invisible with M-+ and commands having no output
is confusing.
|
|
|
|
Don't search base directories if path starts with "/", "./" or
"../", but still do if the path simply starts with ".". Bail early
if HOME is needed but unset. Don't attempt to open the original
path in configOpen and dataOpen.
|
|
|
|
catgirl shouldn't try to execute a command if it is misconfigured
with both restrict and notify.
|
|
|
|
|
|
I don't feel that 100% protocol extension support should at all be
a goal.
|
|
The manual is the wrong place to document platform support.
|
|
Filters should be kept in order since the first one that matches,
wins. This lets highlights or ignores take priority over each other,
if desired.
|
|
Yikes, copy-paste fail.
|
|
Sure, it was completely unnecessary, but I resent being told how
to use snprintf.
https://cvsweb.openbsd.org/src/lib/libc/stdio/vfprintf.c?rev=1.79&content-type=text/x-cvsweb-markup
Notes:
My problem here is with yelling about a standard C feature that has
legitimate uses, simply because it *could* be used in a way that
might cause security issues. If you're going to do that, you may
as well syslog(3) whenever someone runs any C code at all.
|
|
Log files and state save/restore both require read/write access to
the filesystem, both during start and exit.
If neither features are used, catgirl may run with "stdio tty".
|
|
Nothing must be executed when running /copy, et al.
|
|
catgirl has no reconnect feature and generally must not do
anything but read/write from/to the connected socket which
does not require "inet" or "dns" promises.
|
|
Simplify logic, be more idiomatic and finalize by pledging after
all unveiling is done by omitting the "unveil" promise and thereby
not allowing further calls to it.
|
|
Restrict mode will focus on sandboxing, while kiosk will continue
to restrict IRC access through a public kiosk. Kiosk mode without
restrict mode allows execution of man 1 catgirl with /help, assuming
external sandboxing.
The /list and /part commands are also added to the list of disabled
commands in kiosk mode, since they are pointless without access to
/join.
|
|
No idea why I made that more complicated than it had to be looping
backwards.
|
|
|