JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
st.git
10 years agoFix tputc control code handling
Roberto E. Vargas Caballero [Mon, 28 Apr 2014 16:32:09 +0000 (18:32 +0200)]
Fix tputc control code handling

The patch 53105cf modified how control codes were detected, because
it tried to handle also C1 control codes (0x80-0x9f), that have
upper bit to 1, so they are multi byte character in utf8.
Code was checking the value of width in order to known that after
decoding the unicode point had a width of 1 byte, but it as incorrect
because this width is the columnb width.

10 years agoRemove repeated initialisation of term.esc
Roberto E. Vargas Caballero [Fri, 25 Apr 2014 23:45:10 +0000 (01:45 +0200)]
Remove repeated initialisation of term.esc

Once a sequence is completed term.esc must return to 0, so
instead of repeating this expression in all the cases is
better put it at the end of the block.

10 years agoCancel DCS with SUB, CAN, ESC or any CC1 code
Roberto E. Vargas Caballero [Fri, 25 Apr 2014 23:34:46 +0000 (01:34 +0200)]
Cancel DCS with SUB, CAN, ESC or any CC1 code

From http://www.vt100.net/docs/vt510-rm/chapter4:

*The VT510 ignores all following characters until it receives a
 SUB, ST, or any other C1 control character.

So OSC, PM and APC sequence ends with a SUB (it cancels the sequence
and show a question mark as error), ST or any another C1 (8 bits)
code, or their C0 (7 bits) equivalent sequences (at this moment we
do not handle C1 codes, but we should). But it is also said that:

Cancel  CAN
1/8     Immediately cancels an escape sequence, control sequence,
or device control string in progress. In this case, the
VT510 does not display any error character.

Escape  ESC
1/11    Introduces an escape sequence. ESC also cancels any escape
sequence, control sequence, or device control string in
progress.

10 years agoadd break;s for last cases in switch statements
Markus Teich [Sat, 26 Apr 2014 21:50:37 +0000 (23:50 +0200)]
add break;s for last cases in switch statements

10 years agoDo not eat ESC character if control string is not properly terminated.
noname [Fri, 25 Apr 2014 22:12:41 +0000 (00:12 +0200)]
Do not eat ESC character if control string is not properly terminated.

Currently tputc handles the case of too long control string waiting for
the end of control string.

Another case is when there is ESC character is encountered but is not
followed by '\\'.  In this case st stops processing control string,
but ESC character is ignored.

After this patch st processes ESC characters in control strings properly.

Test case:
printf '\e]0;abc\e[1mBOLD\e[0m'

Also ^[\ is actually processed in the code that handles ST.
According to ECMA-048 ST stands for STRING TERMINATOR and is used to
close control strings.

10 years agoFix for multibyte characters in techo.
noname [Fri, 25 Apr 2014 14:28:00 +0000 (18:28 +0400)]
Fix for multibyte characters in techo.

Works for both signed and unsigned char.

10 years agos/DSC/DCS/ DCS stands for DEVICE CONTROL STRING
noname [Fri, 25 Apr 2014 14:27:48 +0000 (18:27 +0400)]
s/DSC/DCS/ DCS stands for DEVICE CONTROL STRING

10 years agoUse xwrite instead of write.
noname [Fri, 25 Apr 2014 14:27:26 +0000 (18:27 +0400)]
Use xwrite instead of write.

10 years agoRemove unnecessary break
noname [Fri, 25 Apr 2014 14:27:15 +0000 (18:27 +0400)]
Remove unnecessary break

10 years agoComment fix.
noname [Fri, 25 Apr 2014 14:26:43 +0000 (18:26 +0400)]
Comment fix.

10 years agoOn terminal resize, clear the alt screen with its own cursor.
Colona [Thu, 24 Apr 2014 18:35:41 +0000 (20:35 +0200)]
On terminal resize, clear the alt screen with its own cursor.

Currently the alternate screen get messed up on resize if it has
different colors or mode.

10 years agoOptimize tputtab.
noname [Wed, 23 Apr 2014 19:12:45 +0000 (23:12 +0400)]
Optimize tputtab.

Before this patch executing
printf '\e[10000000000I'
or
printf '\e[10000000000Z'
resulted in long delay.

10 years agoUse != instead of ^ for logical values.
noname [Wed, 23 Apr 2014 19:12:36 +0000 (23:12 +0400)]
Use != instead of ^ for logical values.

sel.alt is only changed by
sel.alt = IS_SET(MODE_ALTSCREEN);

10 years agoUse BETWEEN macro in xsetcolorname and fix style.
noname [Wed, 23 Apr 2014 19:12:29 +0000 (23:12 +0400)]
Use BETWEEN macro in xsetcolorname and fix style.

10 years agoConformity in the -g geometry handling.
Christoph Lohmann [Fri, 25 Apr 2014 20:34:24 +0000 (22:34 +0200)]
Conformity in the -g geometry handling.

Thanks to Yuri Karaban for suggesting this!

These changes make -g correspond to <cols>x<rows> and honor it so non-tiling
window managers can work with the size hints afterwards. It also adds a -i
flag to force the window size. This is needed so -g keeps being useful in dwm.

10 years agoSimplify a bit more tdeletechar and tinsertblank
Roberto E. Vargas Caballero [Fri, 25 Apr 2014 15:24:12 +0000 (17:24 +0200)]
Simplify a bit more tdeletechar and tinsertblank

The large and repeated expression used in memmove to indirect
the line can be simplified using a pointer, that makes more
clear where begins and where ends the movement.

10 years agoSimplify tdeletechar and tinsertblank and fix memory corruption.
noname [Tue, 22 Apr 2014 22:08:13 +0000 (02:08 +0400)]
Simplify tdeletechar and tinsertblank and fix memory corruption.

Current CSI parsing code uses strtol to parse arguments and allows them
to be negative. Negative argument is not properly handled in tdeletechar
and tinsertblank and results in memory corruption in memmove.

Reproduce with printf '\e[-500@'

Patch also removes special handling for corner case and simplifies
the code.

Removed
term.dirty[term.c.y] = 1
because tclearregion sets dirty flag.

10 years agoStyle fixes in tscrollup.
noname [Sun, 20 Apr 2014 13:26:39 +0000 (17:26 +0400)]
Style fixes in tscrollup.

10 years agoDo not set dirty flag twice in tscrollup and tscrolldown.
noname [Sun, 20 Apr 2014 13:26:50 +0000 (17:26 +0400)]
Do not set dirty flag twice in tscrollup and tscrolldown.

10 years agoUse tsetdirt in tscrollup and tscrolldown.
noname [Sun, 20 Apr 2014 13:26:13 +0000 (17:26 +0400)]
Use tsetdirt in tscrollup and tscrolldown.

tscrollup and tscrolldown do not use tsetdirt, but their code is
equivalent to

        tsetdirt(orig, term.bot-n);
        tsetdirt(orig+n, term.bot);

tclearregion also marks cleared lines as dirty.
In tscrolldown it sets lines from term.bot-n+1 to term.bot dirty, and in
tscrollup it sets lines from orig to orig+n-1 dirty.

In both functions all lines from orig to term.bot are effectively set
dirty, but in tscrolldown lines from orig+n to term.bot are set dirty
twice, and in tscrollup lines from orig to term.bot-n are set dirty
twice.

These patches make it clear which lines are set dirty and sets them
dirty once in each funciton.

10 years agoFix techo handling of control and multibyte characters.
noname [Tue, 22 Apr 2014 20:26:07 +0000 (00:26 +0400)]
Fix techo handling of control and multibyte characters.

techo compares signed char to '\x20'. Any character with code less then
'\x20' is treated as control character.  This way characters with MSB
set to 1 are considered control characters too.

Also this patch makes techo display DEL character as ^?.

To reprocuce the bug, enable echo mode using printf '\e[12l',
then type DEL character or any non-ASCII character.

10 years agoMake xrealloc and xstrdup style consistent.
noname [Tue, 22 Apr 2014 17:59:48 +0000 (21:59 +0400)]
Make xrealloc and xstrdup style consistent.

10 years agoUse BETWEEN in tsetchar.
noname [Tue, 22 Apr 2014 17:59:39 +0000 (21:59 +0400)]
Use BETWEEN in tsetchar.

10 years agoUse uint and uchar instead of unsigned int and unsigned char.
noname [Tue, 22 Apr 2014 17:59:32 +0000 (21:59 +0400)]
Use uint and uchar instead of unsigned int and unsigned char.

10 years agoRemove argument names from function prototypes.
noname [Tue, 22 Apr 2014 17:59:21 +0000 (21:59 +0400)]
Remove argument names from function prototypes.

10 years agoStyle fix in tdumpsel.
noname [Tue, 22 Apr 2014 17:59:14 +0000 (21:59 +0400)]
Style fix in tdumpsel.

10 years agoUse BETWEEN in tinsertblankline and tdeleteline.
noname [Tue, 22 Apr 2014 17:59:01 +0000 (21:59 +0400)]
Use BETWEEN in tinsertblankline and tdeleteline.

10 years agoIt's 2014 now.
Christoph Lohmann [Tue, 22 Apr 2014 17:22:58 +0000 (19:22 +0200)]
It's 2014 now.

10 years agomove MODBIT to Macros section
noname@inventati.org [Sun, 20 Apr 2014 09:08:09 +0000 (13:08 +0400)]
move MODBIT to Macros section

Patch moves MODBIT to macros section and uses it in tselcs.

10 years agomisplaced parenthesis in LEN macro
noname@inventati.org [Sun, 20 Apr 2014 11:41:40 +0000 (15:41 +0400)]
misplaced parenthesis in LEN macro

10 years agoremove confusing SERRNO macro
Markus Teich [Sun, 20 Apr 2014 11:15:40 +0000 (13:15 +0200)]
remove confusing SERRNO macro

I found the SERRNO Macro slightly confusing, since you have to look
it up, if you don't know it already. A web search showed it does
not seem to be any kind of standard. Also there was no reason in
the commit log when it was introduced in 2009. As you can see it
also leads to new patches, which don't use this macro (probably the
author did not know about it).

10 years agoSimplify techo
noname@inventati.org [Sun, 13 Apr 2014 16:21:32 +0000 (20:21 +0400)]
Simplify techo

Remove special case for \e because it is handled well by "control code"
case.

10 years agotypedefs instead of #defines
noname@inventati.org [Sat, 5 Apr 2014 16:54:01 +0000 (20:54 +0400)]
typedefs instead of #defines

Replaced #defines with typedefs where possible, patch attached.

10 years agofix cursor handling when alt screen is disabled
q@c9x.me [Wed, 9 Apr 2014 18:37:23 +0000 (20:37 +0200)]
fix cursor handling when alt screen is disabled

I don't like this alt screen thing, but when
allowaltscreen == 0, the cursor is still saved
and restored after calling 'less' (or 'man').

This patch makes allowaltscreen == 0 usable.

10 years agoMerge remote-tracking branch 'origin/master' into omaster
Roberto E. Vargas Caballero [Tue, 15 Apr 2014 06:11:47 +0000 (08:11 +0200)]
Merge remote-tracking branch 'origin/master' into omaster

10 years agoRemoving two unnecessary gettimeofday().
Christoph Lohmann [Fri, 11 Apr 2014 16:11:25 +0000 (18:11 +0200)]
Removing two unnecessary gettimeofday().

10 years agoIncrement XSync consistency
Toaster Toaster [Mon, 7 Apr 2014 17:53:59 +0000 (10:53 -0700)]
Increment XSync consistency

This patch cleans up a style inconsistency.

10 years agoFix Backspace and Delete characters
Roberto E. Vargas Caballero [Fri, 11 Apr 2014 13:08:37 +0000 (15:08 +0200)]
Fix Backspace and Delete characters

Backspace key must generate the backspace character (\010) and
Delete key must generate the delete character (\0177). In
some systems the kernel configuration for erasing previous character
is \0177, so some programs (for example cat, ed, mail, ...), can not
understand the correct meaning of backspace. In this cases it is only
needed this command:

stty erase \b

10 years ago0.5 release.
Christoph Lohmann [Sat, 5 Apr 2014 18:40:11 +0000 (20:40 +0200)]
0.5 release.

10 years agoUpdating the TODO in preparating for 0.5.
Christoph Lohmann [Sat, 5 Apr 2014 18:39:46 +0000 (20:39 +0200)]
Updating the TODO in preparating for 0.5.

10 years agoThere is no need for a full dirt redraw.
Christoph Lohmann [Sat, 5 Apr 2014 18:34:57 +0000 (20:34 +0200)]
There is no need for a full dirt redraw.

10 years agoFixing a compiler warning with the assignment.
Christoph Lohmann [Wed, 2 Apr 2014 07:26:28 +0000 (09:26 +0200)]
Fixing a compiler warning with the assignment.

10 years agoFix segfault when pressing PrintScr without a selection
Rafa Garcia Gallego [Wed, 26 Mar 2014 22:58:27 +0000 (23:58 +0100)]
Fix segfault when pressing PrintScr without a selection

10 years agonew utf decoder
Damian Okrasa [Tue, 25 Mar 2014 19:20:26 +0000 (20:20 +0100)]
new utf decoder

This patch replaces current utf decoder with a new one, which is ~50
lines shorter and should be easier to understand. Parsing 5 and 6
sequences, if necessary, requires trivial modification of UTF_SIZ
constant and utfbyte, utfmask, utfmin, utfmax arrays.

10 years agoMerge branch 'master' of ssh://suckless.org/gitrepos/st
Roberto E. Vargas Caballero [Mon, 10 Mar 2014 14:16:26 +0000 (15:16 +0100)]
Merge branch 'master' of ssh://suckless.org/gitrepos/st

10 years agoAdd terminfo entries for printer
Roberto E. Vargas Caballero [Sat, 1 Feb 2014 10:11:11 +0000 (11:11 +0100)]
Add terminfo entries for printer

These capabilities inform to programs how print in local printer
of the terminal.

10 years agoAdd sequence for printing the current selection
Roberto E. Vargas Caballero [Sat, 1 Feb 2014 12:41:58 +0000 (13:41 +0100)]
Add sequence for printing the current selection

This is very usefull in order to can select what is sent
to the plumber.

10 years agoAdd key definition for printer sequences
Roberto E. Vargas Caballero [Fri, 31 Jan 2014 22:05:42 +0000 (23:05 +0100)]
Add key definition for printer sequences

These new combinations generate the same behaviour (basically) of
vt102. It is a good way of communicating st with other programs.

[0] http://www.vt100.net/docs/vt102-ug/chapter2.html

10 years agoAdd MC for the full screen
Roberto E. Vargas Caballero [Fri, 31 Jan 2014 21:25:51 +0000 (22:25 +0100)]
Add MC for the full screen

This sequence is very useful because allows comunicate the content
of the terminal to another program.

10 years agoAdd MC for a single line
Roberto E. Vargas Caballero [Fri, 31 Jan 2014 20:53:53 +0000 (21:53 +0100)]
Add MC for a single line

This sequence print the current line. It is different to the
'printer on' sequence, where all the characters that arrive to the
terminal are printer. Here only the ascii characters are printed.

10 years agoStyle cleanup.
Christoph Lohmann [Sat, 1 Mar 2014 10:04:03 +0000 (11:04 +0100)]
Style cleanup.

Add some note about the main reason why st is still that big.

10 years agoStyle matters.
Christoph Lohmann [Sat, 1 Mar 2014 08:22:57 +0000 (09:22 +0100)]
Style matters.

10 years agoAdd MC sequence
Roberto E. Vargas Caballero [Fri, 31 Jan 2014 19:57:09 +0000 (20:57 +0100)]
Add MC sequence

This sequence control when the printer is enabled or disabled. This
sequence control the behaviour of the -o option.

10 years agoAdd xstrdup function
Roberto E. Vargas Caballero [Sat, 1 Feb 2014 10:12:47 +0000 (11:12 +0100)]
Add xstrdup function

Since we are using xmalloc, xrealloc ..., then it is not logical
call directly to strdup.

Signed-off-by: Roberto E. Vargas Caballero <k0ga@shike2.com>

10 years agoMerge remote-tracking branch 'origin/master'
Roberto E. Vargas Caballero [Tue, 4 Feb 2014 10:46:45 +0000 (11:46 +0100)]
Merge remote-tracking branch 'origin/master'

10 years agoRemoving the w3img support.
Christoph Lohmann [Mon, 3 Feb 2014 19:54:25 +0000 (20:54 +0100)]
Removing the w3img support.

The patch to add w3img support destroys our way to handle fps and so stop
wasting resources on fast scrolling. Due to w3img being a hack to display
images in an ugly way, is there no need to support this. Use some real way to
display images.

10 years agoRemove non defined behaviour in selcopy
Roberto E. Vargas Caballero [Fri, 31 Jan 2014 16:30:00 +0000 (17:30 +0100)]
Remove non defined behaviour in selcopy

It is not defined when lateral effects of expressions are
calculated, so an expression as:

--last >= gp && !(selected(last - gp, y)

is non portable.

10 years agoRemove duplicated code in strhandle
Roberto E. Vargas Caballero [Fri, 31 Jan 2014 16:04:18 +0000 (17:04 +0100)]
Remove duplicated code in strhandle

The error condition was duplicated in two different switches.
This new version centralized the error handling in only one place.

10 years agoMake Shift+Home equal to CLS in ascii mode
Roberto E. Vargas Caballero [Fri, 31 Jan 2014 15:54:58 +0000 (16:54 +0100)]
Make Shift+Home equal to CLS in ascii mode

10 years agoMake CONTROL + DELETE delete a line
Roberto E. Vargas Caballero [Fri, 31 Jan 2014 13:18:25 +0000 (14:18 +0100)]
Make CONTROL + DELETE delete a line

If CONTROL + INSERT inserts a line then it seems natural CONTROL + DELETE
removes a line.

10 years agoFix SHIFT+DEL definition
Roberto E. Vargas Caballero [Fri, 31 Jan 2014 11:23:53 +0000 (12:23 +0100)]
Fix SHIFT+DEL definition

The AppMode and AsciiMode were inverted in the definition of this
combination.

Signed-off-by: Christoph Lohmann <20h@r-36.net>

10 years agoUse character scaling in XCopyArea
Eric Pruitt [Sun, 19 Jan 2014 16:48:35 +0000 (10:48 -0600)]
Use character scaling in XCopyArea

10 years agoMake w3mimgdisplay work with st
Amadeusz Sławiński [Sat, 11 Jan 2014 11:54:36 +0000 (12:54 +0100)]
Make w3mimgdisplay work with st

Before this patch draw() calls drawregion which calls xdraws and then
updates whole window in one call thus overdrawing anything drawn by
w3mimgdisplay. After moving XCopyArea to xdraws it only updates the
regions which are being updated by XftDraw* functions. It may do a few
more calls to XCopyArea with this patch.

Signed-off-by: Amadeusz Sławiński <amade@asmblr.net>

10 years agoFix truecolor escapes, when both bg and fg are set
Amadeusz Sławiński [Fri, 3 Jan 2014 14:24:24 +0000 (15:24 +0100)]
Fix truecolor escapes, when both bg and fg are set

for example
echo -e "\e[48;2;255;0;0m\e[38;2;0;0;255m test "
should render on red bg with blue fg

also now elinks works correctly when using 'truecolor' option
in preferences

Signed-off-by: Amadeusz Sławiński <amade@asmblr.net>

10 years agoquery pixel size from matched font
Eon S. Jeon [Tue, 17 Dec 2013 20:14:19 +0000 (15:14 -0500)]
query pixel size from matched font

Sorry for another duplicated mail. I found the patch is malformed
significantly. I've been away from my laptop for a while, so I'm quite
unfamiliar with the settings on this system...

10 years agoUpdate arg.h from sbase
Roberto E. Vargas Caballero [Wed, 18 Dec 2013 07:29:28 +0000 (08:29 +0100)]
Update arg.h from sbase

sbase did some interesting modifications to arg.h (basically it
was fixed an incorrect use of the _ namespace), and this commit
take this last version for st.

10 years agoPrevent resizing stdin
Eon S. Jeon [Tue, 17 Dec 2013 17:45:38 +0000 (12:45 -0500)]
Prevent resizing stdin

This fixes a bug that the parent tty gets resized whenever you launch
st through command line.

The problem was that ioctl was resizing cmdfd before it gets
initialized in ttynew. Since cmdfd is a global variable, its initial
value is 0, and consequently stdin was being resized.

10 years agoReplace alignment tabs with spaces.
Mark Edgar [Sun, 20 Oct 2013 17:16:33 +0000 (19:16 +0200)]
Replace alignment tabs with spaces.

10 years agoFix comments in config.def.h to match field names.
Mark Edgar [Sun, 20 Oct 2013 16:18:00 +0000 (18:18 +0200)]
Fix comments in config.def.h to match field names.

10 years agoFix definition of F28 key.
Mark Edgar [Sun, 15 Dec 2013 15:45:51 +0000 (16:45 +0100)]
Fix definition of F28 key.

Shitf modifier adds 12 to the function number of the function keys,
while Control adds 24, so Control + F4 generates F28

10 years agoSet _NET_WM_PID attribute
Eric Pruitt [Wed, 11 Dec 2013 13:10:08 +0000 (07:10 -0600)]
Set _NET_WM_PID attribute

10 years agoFix rmul definition
Eric Pruitt [Fri, 6 Dec 2013 15:22:37 +0000 (09:22 -0600)]
Fix rmul definition

rmul means "exit underline mode", so a full reset of all
the attributes is not the correct way of exiting from
underline mode, because it is going to modify also another
attributes not related.

10 years agoAdd stdint include
René Rietz [Mon, 25 Nov 2013 15:06:22 +0000 (16:06 +0100)]
Add stdint include

Since st is using now int32_t and uint32_t the inclusion of
stdint or inttype is mandatory, because in other case the
definition of these new types will not be known by the
compiler.

10 years agoFix stupid bug in tdefcolor returning -1 in unsigned function
Roberto E. Vargas Caballero [Mon, 25 Nov 2013 13:09:53 +0000 (14:09 +0100)]
Fix stupid bug in tdefcolor returning -1 in unsigned function

k0ga misktook applying patch of others. Sorry guys!!!!

10 years agoUse int instead of long for color
Johannes Hofmann [Sun, 24 Nov 2013 09:20:45 +0000 (10:20 +0100)]
Use int instead of long for color

This patch replaces long by int32_t. It saves
some memory on 64bit systems.

10 years agoadd _NET_WM_NAME
Carlos J. Torres [Fri, 22 Nov 2013 15:45:48 +0000 (10:45 -0500)]
add _NET_WM_NAME

10 years agoSimplify logic in kmap().
Mark Edgar [Sat, 19 Oct 2013 13:13:13 +0000 (15:13 +0200)]
Simplify logic in kmap().

10 years agoSimplify logic in match().
Mark Edgar [Sat, 19 Oct 2013 12:56:40 +0000 (14:56 +0200)]
Simplify logic in match().

10 years agoMerge remote-tracking branch 'origin/master' into omaster
Roberto E. Vargas Caballero [Mon, 28 Oct 2013 18:18:24 +0000 (19:18 +0100)]
Merge remote-tracking branch 'origin/master' into omaster

10 years agoFixed lock up when system time jumps backwards
Rob Pilling [Wed, 19 Jun 2013 20:24:01 +0000 (21:24 +0100)]
Fixed lock up when system time jumps backwards

Signed-off-by: Christoph Lohmann <20h@r-36.net>

10 years agoIgnore numlock (Mod2Mask) for button events too.
Mark Edgar [Sat, 21 Sep 2013 22:07:49 +0000 (00:07 +0200)]
Ignore numlock (Mod2Mask) for button events too.

Conflicts:
config.def.h
st.c

10 years agoAvoid buffer overrun in bpress()
Mark Edgar [Sun, 6 Oct 2013 10:19:12 +0000 (12:19 +0200)]
Avoid buffer overrun in bpress()

Use correct type for Mousekey.b (XButtonEvent.button).

10 years agoNew ttysend() function calls ttywrite() and techo(). Honor MODE_ECHO when pasting...
Mark Edgar [Sat, 5 Oct 2013 09:49:35 +0000 (11:49 +0200)]
New ttysend() function calls ttywrite() and techo(). Honor MODE_ECHO when pasting in selnotify().

10 years agoAvoid buffer overrun in kpress() and remove limit on shortcut strings.
Mark Edgar [Sat, 5 Oct 2013 09:45:44 +0000 (11:45 +0200)]
Avoid buffer overrun in kpress() and remove limit on shortcut strings.

10 years agoSimplify Mod1 logic in kpress(), eliminating locals and a memcpy.
Mark Edgar [Sat, 5 Oct 2013 09:45:17 +0000 (11:45 +0200)]
Simplify Mod1 logic in kpress(), eliminating locals and a memcpy.

10 years agoAdd support for multiple charset definitions
Roberto E. Vargas Caballero [Tue, 1 Oct 2013 19:23:11 +0000 (21:23 +0200)]
Add support for multiple charset definitions

vt100 has support for two defined charset, G0 and G1. Each charset
can be defined, but in each moment is selected only one of both
charset. This is usually used selecting a national charset in G0
and graphic charset in G1, so you can switch between graphic
charset and text charset without losing the national charset
already defined.

st hasn't support for national charsets, because it is an utf8
based terminal emulator, but it has support for graphic
charset because it is heavily used, but it only supports G0,
without understanding G1 selection sequences, which causes some
programs in some moments can print some garbage in the screen.

This patch adds a fake support for multiple charset definitions,
where we only support graphic charset and us-ascii charset, but
we allow more of one charset definition.

This patch allow define G0 until G3 charsets, but only accepts
select G0 or G1, and it accepts some national charset definitions
but all of them are mapped to us-ascii.

10 years agoPeople, learn to keep to styles. Thanks.
Christoph Lohmann [Wed, 2 Oct 2013 19:06:50 +0000 (21:06 +0200)]
People, learn to keep to styles. Thanks.

10 years agoFix save/restore cursor
Mihail Zenkov [Tue, 1 Oct 2013 18:02:24 +0000 (20:02 +0200)]
Fix save/restore cursor

st was assuming that save/restore cursor position was independent
of the screen that was shown in each moment, but it is not true,
because each screen has a different save/restore buffer. This
patch fixes it.

10 years agoAdd DSR cursor position sequence
Mihail Zenkov [Tue, 1 Oct 2013 18:01:15 +0000 (20:01 +0200)]
Add DSR cursor position sequence

10 years agoFix core in multi-line selection on OpenBSD
Maurice Quennet [Sat, 21 Sep 2013 21:33:56 +0000 (23:33 +0200)]
Fix core in multi-line selection on OpenBSD

OpenBSD 5.3 amd64 release version with the most current st
version from git, crash and dump core when selecting multiple
lines whith the cursor.  This happens, because on line 964
of st.c (gp-1)->mode is accessed, although gp is still
pointing at the beginning of the array term.line[y] (see
line 939 for initialization of gp).

10 years agoAdd bracketed paste mode
Egmont Koblinger [Mon, 23 Sep 2013 07:22:47 +0000 (09:22 +0200)]
Add bracketed paste mode

This patch enables bracketed paste mode (
http://invisible-island.net/xterm/ctlseqs/ctlseqs.html#Bracketed%20Paste%20Mode
).

It's mainly useful for text editors to disable line wrapping and auto
indentation when text is being pasted, rather than typed from keyboard.

On the emulator side, it is supported by at least xterm, urxvt,
gnome-terminal, putty, iterm2; and I have a patch for konsole.

On the application side, vim can be configured easily to handle this, and
I have pending patches for mcedit and joe. Probably many others also
support it.

10 years agoFix some bugs in mouse tracking logic
Michael Forney [Thu, 25 Jul 2013 23:19:19 +0000 (16:19 -0700)]
Fix some bugs in mouse tracking logic

* Button number in X10 mode:

  I believe the button - 1 came from "C b is button - 1" from [0].
  However, above this section, it states

    "Normally, parameters (such as pointer poisition and button number)
     for all mouse tracking escape sequences generated by xterm encode
     numeric parameters in a single character as value+32. For example, !
     specifies the value 1."

  Also, from the description of SGR,

    "The encoded button value in this case does not add 32 since that
     was useful only in the X10 scheme for ensuring that the byte
     containing the button value is a printable code."

  This suggests that we should still add 32 to the button value when in
  MODE_MOUSEX10.

* No button release reporting in X10 mode:

    "X10 compatibility mode sends an escape sequence only on button press,
     encoding the location and the mouse button pressed."

* Fix MODE_MOUSEMOTION:

  Currently, motion reporting is skipped when oldbutton == 3
  (corresponding to no button being pressed). However, oldbutton is
  only set on a button press, which will never be 3.

[0]: http://invisible-island.net/xterm/ctlseqs/ctlseqs.html

10 years agoDefault volume of the bell is 0.
Christoph Lohmann [Thu, 12 Sep 2013 18:52:10 +0000 (20:52 +0200)]
Default volume of the bell is 0.

10 years agoAdd audible bell
Roberto E. Vargas Caballero [Thu, 12 Sep 2013 18:41:34 +0000 (20:41 +0200)]
Add audible bell

\a is the character for bell, and st is only marking the window as urgent
if it is not active. This patch adds an audible bell which can be disable
with bellvolume variable.

Signed-off-by: Christoph Lohmann <20h@r-36.net>

10 years agoWide character support.
Christoph Lohmann [Sat, 7 Sep 2013 10:41:36 +0000 (12:41 +0200)]
Wide character support.

Thanks "Eon S. Jeon" <esjeon@hyunmu.am>!

10 years agoAdding some contributors. Thanks to you all!
Christoph Lohmann [Sat, 7 Sep 2013 10:29:44 +0000 (12:29 +0200)]
Adding some contributors. Thanks to you all!

10 years agoCorrectly initialize altscreen when defaultbg is not 0.
Mark Edgar [Sun, 25 Aug 2013 22:10:47 +0000 (00:10 +0200)]
Correctly initialize altscreen when defaultbg is not 0.

The alternate screen is not properly initialized when st starts. To see
this, set defaultbg in config.h to anything other than 0 (for example, swap
defaultfg and defaultbg), and run:

./st -e sh -c 'tput smcup; read'

You should see that the top-left 80x24 rectangle is black (or whatever
colorname[0] is), while the rest of the screen (if any) has the desired
colorname[defaultbg] color.

The attached patch fixes this by initializing term.c.attr in tnew() before
calling tresize(). It also removes the unnecessary xcalloc() calls, which
misled me on this bug hunt since it is really tclearregion() which
initializes term.lines and term.alt in tresize().

10 years agoRegarding commit 7e3cff3
Eon S. Jeon [Sun, 11 Aug 2013 10:42:30 +0000 (06:42 -0400)]
Regarding commit 7e3cff3

Hello.

I reviewed and tested commit 7e3cff3, and made a patch that fixes some
problems in it.

1. There's a semicolon after an if statement, which is obviously a
typo.

2. The current way of calculating text position in "xdraws" yields
inconsistent results in some cases. This is due to the use of
"font->width", which varies. Instead, "xw.cw" has to be used as the
character width.

Sincerely,
Eon

10 years agoTmux is using C-b by default.
Christoph Lohmann [Thu, 22 Aug 2013 17:32:49 +0000 (19:32 +0200)]
Tmux is using C-b by default.

Thanks for noticing Fidel Barrera Cruz!

10 years agoCorrecting the bitmask value check.
Christoph Lohmann [Tue, 20 Aug 2013 16:18:48 +0000 (18:18 +0200)]
Correcting the bitmask value check.