Roberto E. Vargas Caballero [Tue, 29 Apr 2014 07:58:55 +0000 (09:58 +0200)]
Fix displaying control code
Control code are never displayed. It is not important if graphic
charset is displayed or not.
Roberto E. Vargas Caballero [Tue, 29 Apr 2014 06:58:10 +0000 (08:58 +0200)]
Remove ATTR_GFX and tselcs
ATTR_GFX was used long time ago to detect when terminal was in
graphic mode. Today graphic mode is implemented using a charset
pointer, so ATTR_GFX is not needed anymore because graphic
condition can be detected directly checking if current charset
is GRAPHICS C0.
noname [Mon, 28 Apr 2014 22:35:22 +0000 (02:35 +0400)]
Do not save cursor in tresize.
This patch fixes the bug introduced in
8f11e1cd034ff28ca47bb4955505db7fa8016ba8
To reproduce the bug:
1. Save cursor: printf '\e[s'
2. Load cursor: printf '\e[u'
3. Resize st window.
4. Load cursor again: printf '\e[u'
noname [Sun, 27 Apr 2014 11:16:41 +0000 (15:16 +0400)]
Simplify selected().
noname [Sun, 27 Apr 2014 11:39:53 +0000 (15:39 +0400)]
Do not export chscale and cwscale.
noname [Sun, 27 Apr 2014 22:41:17 +0000 (02:41 +0400)]
Simplify xunloadfonts.
noname [Sun, 27 Apr 2014 11:40:23 +0000 (15:40 +0400)]
Remove one indentation level in getsel().
noname [Sun, 27 Apr 2014 11:40:01 +0000 (15:40 +0400)]
Remove unused dump() function.
noname [Sun, 27 Apr 2014 11:39:47 +0000 (15:39 +0400)]
Add missing function prototypes.
noname [Sun, 27 Apr 2014 11:39:39 +0000 (15:39 +0400)]
Use MODBIT in xseturgency.
noname [Sun, 27 Apr 2014 11:39:29 +0000 (15:39 +0400)]
Compute ena_sel as one expression.
Roberto E. Vargas Caballero [Sun, 27 Apr 2014 08:25:15 +0000 (10:25 +0200)]
Simplify expressions in tputc()
Roberto E. Vargas Caballero [Sat, 26 Apr 2014 07:30:53 +0000 (09:30 +0200)]
Fix misplaced break
This misplaced break was causing an incorrect fall through
from DSR to DECSTBM.
Roberto E. Vargas Caballero [Sat, 26 Apr 2014 07:24:04 +0000 (09:24 +0200)]
Create a function for DEC test
Almost of the sequences execute their action in a separate function,
which is good because helps to read the full set of sequences
faster.
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.
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.
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.
Markus Teich [Sat, 26 Apr 2014 21:50:37 +0000 (23:50 +0200)]
add break;s for last cases in switch statements
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.
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.
noname [Fri, 25 Apr 2014 14:27:48 +0000 (18:27 +0400)]
s/DSC/DCS/ DCS stands for DEVICE CONTROL STRING
noname [Fri, 25 Apr 2014 14:27:26 +0000 (18:27 +0400)]
Use xwrite instead of write.
noname [Fri, 25 Apr 2014 14:27:15 +0000 (18:27 +0400)]
Remove unnecessary break
noname [Fri, 25 Apr 2014 14:26:43 +0000 (18:26 +0400)]
Comment fix.
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.
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.
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);
noname [Wed, 23 Apr 2014 19:12:29 +0000 (23:12 +0400)]
Use BETWEEN macro in xsetcolorname and fix style.
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.
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.
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.
noname [Sun, 20 Apr 2014 13:26:39 +0000 (17:26 +0400)]
Style fixes in tscrollup.
noname [Sun, 20 Apr 2014 13:26:50 +0000 (17:26 +0400)]
Do not set dirty flag twice 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.
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.
noname [Tue, 22 Apr 2014 17:59:48 +0000 (21:59 +0400)]
Make xrealloc and xstrdup style consistent.
noname [Tue, 22 Apr 2014 17:59:39 +0000 (21:59 +0400)]
Use BETWEEN in tsetchar.
noname [Tue, 22 Apr 2014 17:59:32 +0000 (21:59 +0400)]
Use uint and uchar instead of unsigned int and unsigned char.
noname [Tue, 22 Apr 2014 17:59:21 +0000 (21:59 +0400)]
Remove argument names from function prototypes.
noname [Tue, 22 Apr 2014 17:59:14 +0000 (21:59 +0400)]
Style fix in tdumpsel.
noname [Tue, 22 Apr 2014 17:59:01 +0000 (21:59 +0400)]
Use BETWEEN in tinsertblankline and tdeleteline.
Christoph Lohmann [Tue, 22 Apr 2014 17:22:58 +0000 (19:22 +0200)]
It's 2014 now.
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.
noname@inventati.org [Sun, 20 Apr 2014 11:41:40 +0000 (15:41 +0400)]
misplaced parenthesis in LEN 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).
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.
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.
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.
Roberto E. Vargas Caballero [Tue, 15 Apr 2014 06:11:47 +0000 (08:11 +0200)]
Merge remote-tracking branch 'origin/master' into omaster
Christoph Lohmann [Fri, 11 Apr 2014 16:11:25 +0000 (18:11 +0200)]
Removing two unnecessary gettimeofday().
Toaster Toaster [Mon, 7 Apr 2014 17:53:59 +0000 (10:53 -0700)]
Increment XSync consistency
This patch cleans up a style inconsistency.
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
Christoph Lohmann [Sat, 5 Apr 2014 18:40:11 +0000 (20:40 +0200)]
0.5 release.
Christoph Lohmann [Sat, 5 Apr 2014 18:39:46 +0000 (20:39 +0200)]
Updating the TODO in preparating for 0.5.
Christoph Lohmann [Sat, 5 Apr 2014 18:34:57 +0000 (20:34 +0200)]
There is no need for a full dirt redraw.
Christoph Lohmann [Wed, 2 Apr 2014 07:26:28 +0000 (09:26 +0200)]
Fixing a compiler warning with the assignment.
Rafa Garcia Gallego [Wed, 26 Mar 2014 22:58:27 +0000 (23:58 +0100)]
Fix segfault when pressing PrintScr without a selection
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.
Roberto E. Vargas Caballero [Mon, 10 Mar 2014 14:16:26 +0000 (15:16 +0100)]
Merge branch 'master' of ssh://suckless.org/gitrepos/st
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.
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.
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
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.
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.
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.
Christoph Lohmann [Sat, 1 Mar 2014 08:22:57 +0000 (09:22 +0100)]
Style matters.
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.
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>
Roberto E. Vargas Caballero [Tue, 4 Feb 2014 10:46:45 +0000 (11:46 +0100)]
Merge remote-tracking branch 'origin/master'
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.
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.
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.
Roberto E. Vargas Caballero [Fri, 31 Jan 2014 15:54:58 +0000 (16:54 +0100)]
Make Shift+Home equal to CLS in ascii mode
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.
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>
Eric Pruitt [Sun, 19 Jan 2014 16:48:35 +0000 (10:48 -0600)]
Use character scaling in XCopyArea
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>
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>
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...
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.
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.
Mark Edgar [Sun, 20 Oct 2013 17:16:33 +0000 (19:16 +0200)]
Replace alignment tabs with spaces.
Mark Edgar [Sun, 20 Oct 2013 16:18:00 +0000 (18:18 +0200)]
Fix comments in config.def.h to match field names.
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
Eric Pruitt [Wed, 11 Dec 2013 13:10:08 +0000 (07:10 -0600)]
Set _NET_WM_PID attribute
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.
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.
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!!!!
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.
Carlos J. Torres [Fri, 22 Nov 2013 15:45:48 +0000 (10:45 -0500)]
add _NET_WM_NAME
Mark Edgar [Sat, 19 Oct 2013 13:13:13 +0000 (15:13 +0200)]
Simplify logic in kmap().
Mark Edgar [Sat, 19 Oct 2013 12:56:40 +0000 (14:56 +0200)]
Simplify logic in match().
Roberto E. Vargas Caballero [Mon, 28 Oct 2013 18:18:24 +0000 (19:18 +0100)]
Merge remote-tracking branch 'origin/master' into omaster
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>
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
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).
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().
Mark Edgar [Sat, 5 Oct 2013 09:45:44 +0000 (11:45 +0200)]
Avoid buffer overrun in kpress() and remove limit on shortcut strings.
Mark Edgar [Sat, 5 Oct 2013 09:45:17 +0000 (11:45 +0200)]
Simplify Mod1 logic in kpress(), eliminating locals and a memcpy.
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.