Fixing merge typo
Fixing typos from merge
6e6012ca — Raheman Vaiya 2 years ago
Add support for OSC color sequences
Applied alpha patch and config colors
45659938 — Shi Tian 7 months ago
Fix for wide character being incorrectly cleared on MODE_INSERT

Under insert mode, when inserting a normal character in front of
a wide character, the affected region is shifted to the right by
one cell. However, the empty cell is reset as if being a part of a
wide character, causing the following cell being mishandled as a
dummy cell.
To reproduce the bug:
	printf '\033[4h' # set MODE_INSERT
	printf 妳好
	printf '\033[4D'
	printf 'x'
	printf '\033[4l\n'
82372302 — Hiltjo Posthuma 1 year, 13 days ago
ignore C1 control characters in UTF-8 mode

Ignore processing and printing C1 control characters in UTF-8 mode.
These are in the range: 0x80 - 0x9f.

By default in st the mode is set to UTF-8.

This matches more the behaviour of xterm with the options -u8 or +u8 also.
Also see the xterm resource "allowC1Printable".

Let me know if this breaks something, in most cases I don't think so.

As usual a very good reference is:
30849e2f — Adam Price 1 year, 13 days ago
Add support for DSR response "OK" escape sequence

"VT100 defines an escape sequence [1] called Device Status Report (DSR). When
the DSR sequence received is `csi 5n`, an "OK" response `csi 0n` is returned.
This patch adds that "OK" response.

I encountered this missing sequence when I noticed that fzf [2] would clobber
my prompt whenever completing a find.

To test that ST doesn't currently respond to `csi 5n`, use fzf's shell
extension in ST's repo to complete the path for a file.

    my-fancy-prompt $ vim **<tab>
    <select a file>

Select a file with <enter>, and notice that fzf clobbers some or all of your

After applying this patch, do the same test as above and notice that fzf has no
longer clobbered your prompt by placing the file name in the correct position
in your command.

    my-fancy-prompt $ vim **<tab>
    <select a file>
    my-fancy prompt $ vim st.c

Thank you for considering my first patch submission.

[1] https://www.xfree86.org/current/ctlseqs.html#VT100%20Mode
[2] https://github.com/junegunn/fzf

Patch slightly adapted with input from the mailinglist,
3fac331b — Hiltjo Posthuma 1 year, 15 days ago
Fixed OSC color reset without parameter->resets all colors

Adapted from (garbled) patch by wim <wim@thinkerwim.org>

Additional notes: it should reset all the colors using xloadcols().
To reproduce: set a different (theme) color using some escape code, then reset

	printf '\x1b]104\x07'
69f14e7d — Raheman Vaiya 2 years ago
Add support for OSC color sequences
b686347f — Markus F.X.J. Oberhumer 2 years ago
Mild const-correctness improvements.

Only touch a few things, the main focus is to
improve code readability.
Applied alpha patch and config colors
cdb55d8d — Hiltjo Posthuma 1 year, 3 months ago
fix buffer overflow when handling long composed input

To reproduce the issue:

If you already have the multi-key enabled on your system, then add this line
to your ~/.XCompose file:

<question> <T> <E> <S> <T> <question> :

Reported by and an initial patch by Andy Gozas <andy@gozas.me>, thanks!

Adapted the patch, for now st (like dmenu) handles a fixed amount of composed
characters, or otherwise ignores it. This is done for simplicity sake.
59143390 — Hiltjo Posthuma 1 year, 4 months ago
bump version to 0.9
c0d4e46c — Hiltjo Posthuma 1 year, 5 months ago
FAQ: document the color emojis crash issue which affected some systems is fixed

It is fixed in libXft 2.3.6:

729b0ea9 — Tom Schwindl 1 year, 6 months ago
st: use `void' to indicate an empty parameter list
a52f16d0 — Hiltjo Posthuma 1 year, 9 months ago
Makefile: add manual path for OpenBSD
code-golfing: cleanup osc color related code

* adds missing function prototype
* move xgetcolor() prototype to win.h (that's where all the other x.c
  func prototype seems to be declared at)
* check for snprintf error/truncation
* reduces code duplication for osc 10/11/12
* unify osc_color_response() and osc4_color_response() into a single function

the latter two was suggested by Quentin Rameau in his patch review on
the hackers list.
base64_digits: reduce scope, implicit zero, +1 size

the array is not accessed outside of base64dec() so it makes sense to
limit it's scope to the related function. the static-storage duration of
the array is kept intact.

this also removes unnecessary explicit zeroing from the start and end of
the array. anything that wasn't explicitly zero-ed will now be
implicitly zero-ed instead.

the validity of the new array can be easily confirmed via running this
trivial loop:

	for (int i = 0; i < 255; ++i)
		assert(base64_digits[i] == base64_digits_old[i]);

lastly, as pointed out by Roberto, the array needs to have 256 elements
in order to able access it as any unsigned char as an index; the
previous array had 255.

however, this array will only be accessed at indexes which are
isprint() || '=' (see `base64dec_getc()`), so reducing the size of the
array to the highest printable ascii char (127 AFAIK) + 1 might also be
a valid strategy.