diff options
Diffstat (limited to 'st.c')
| -rw-r--r-- | st.c | 60 |
1 files changed, 46 insertions, 14 deletions
| @@ -89,15 +89,19 @@ char *argv0; | |||
| 89 | #define VT102ID "\033[?6c" | 89 | #define VT102ID "\033[?6c" |
| 90 | 90 | ||
| 91 | enum glyph_attribute { | 91 | enum glyph_attribute { |
| 92 | ATTR_NULL = 0, | 92 | ATTR_NULL = 0, |
| 93 | ATTR_REVERSE = 1, | 93 | ATTR_BOLD = 1, |
| 94 | ATTR_UNDERLINE = 2, | 94 | ATTR_FAINT = 2, |
| 95 | ATTR_BOLD = 4, | 95 | ATTR_ITALIC = 4, |
| 96 | ATTR_ITALIC = 8, | 96 | ATTR_UNDERLINE = 8, |
| 97 | ATTR_BLINK = 16, | 97 | ATTR_BLINK = 16, |
| 98 | ATTR_WRAP = 32, | 98 | ATTR_FASTBLINK = 32, |
| 99 | ATTR_WIDE = 64, | 99 | ATTR_REVERSE = 64, |
| 100 | ATTR_WDUMMY = 128, | 100 | ATTR_INVISIBLE = 128, |
| 101 | ATTR_STRUCK = 256, | ||
| 102 | ATTR_WRAP = 512, | ||
| 103 | ATTR_WIDE = 1024, | ||
| 104 | ATTR_WDUMMY = 2048, | ||
| 101 | }; | 105 | }; |
| 102 | 106 | ||
| 103 | enum cursor_movement { | 107 | enum cursor_movement { |
| @@ -1681,15 +1685,25 @@ tsetattr(int *attr, int l) { | |||
| 1681 | for(i = 0; i < l; i++) { | 1685 | for(i = 0; i < l; i++) { |
| 1682 | switch(attr[i]) { | 1686 | switch(attr[i]) { |
| 1683 | case 0: | 1687 | case 0: |
| 1684 | term.c.attr.mode &= ~(ATTR_REVERSE | ATTR_UNDERLINE \ | 1688 | term.c.attr.mode &= ~( |
| 1685 | | ATTR_BOLD | ATTR_ITALIC \ | 1689 | ATTR_BOLD | |
| 1686 | | ATTR_BLINK); | 1690 | ATTR_FAINT | |
| 1691 | ATTR_ITALIC | | ||
| 1692 | ATTR_UNDERLINE | | ||
| 1693 | ATTR_BLINK | | ||
| 1694 | ATTR_FASTBLINK | | ||
| 1695 | ATTR_REVERSE | | ||
| 1696 | ATTR_INVISIBLE | | ||
| 1697 | ATTR_STRUCK ); | ||
| 1687 | term.c.attr.fg = defaultfg; | 1698 | term.c.attr.fg = defaultfg; |
| 1688 | term.c.attr.bg = defaultbg; | 1699 | term.c.attr.bg = defaultbg; |
| 1689 | break; | 1700 | break; |
| 1690 | case 1: | 1701 | case 1: |
| 1691 | term.c.attr.mode |= ATTR_BOLD; | 1702 | term.c.attr.mode |= ATTR_BOLD; |
| 1692 | break; | 1703 | break; |
| 1704 | case 2: | ||
| 1705 | term.c.attr.mode |= ATTR_FAINT; | ||
| 1706 | break; | ||
| 1693 | case 3: | 1707 | case 3: |
| 1694 | term.c.attr.mode |= ATTR_ITALIC; | 1708 | term.c.attr.mode |= ATTR_ITALIC; |
| 1695 | break; | 1709 | break; |
| @@ -1697,16 +1711,26 @@ tsetattr(int *attr, int l) { | |||
| 1697 | term.c.attr.mode |= ATTR_UNDERLINE; | 1711 | term.c.attr.mode |= ATTR_UNDERLINE; |
| 1698 | break; | 1712 | break; |
| 1699 | case 5: /* slow blink */ | 1713 | case 5: /* slow blink */ |
| 1700 | case 6: /* rapid blink */ | ||
| 1701 | term.c.attr.mode |= ATTR_BLINK; | 1714 | term.c.attr.mode |= ATTR_BLINK; |
| 1702 | break; | 1715 | break; |
| 1716 | case 6: /* rapid blink */ | ||
| 1717 | term.c.attr.mode |= ATTR_FASTBLINK; | ||
| 1718 | break; | ||
| 1703 | case 7: | 1719 | case 7: |
| 1704 | term.c.attr.mode |= ATTR_REVERSE; | 1720 | term.c.attr.mode |= ATTR_REVERSE; |
| 1705 | break; | 1721 | break; |
| 1722 | case 8: | ||
| 1723 | term.c.attr.mode |= ATTR_INVISIBLE; | ||
| 1724 | break; | ||
| 1725 | case 9: | ||
| 1726 | term.c.attr.mode |= ATTR_STRUCK; | ||
| 1727 | break; | ||
| 1706 | case 21: | 1728 | case 21: |
| 1707 | case 22: | ||
| 1708 | term.c.attr.mode &= ~ATTR_BOLD; | 1729 | term.c.attr.mode &= ~ATTR_BOLD; |
| 1709 | break; | 1730 | break; |
| 1731 | case 22: | ||
| 1732 | term.c.attr.mode &= ~ATTR_FAINT; | ||
| 1733 | break; | ||
| 1710 | case 23: | 1734 | case 23: |
| 1711 | term.c.attr.mode &= ~ATTR_ITALIC; | 1735 | term.c.attr.mode &= ~ATTR_ITALIC; |
| 1712 | break; | 1736 | break; |
| @@ -1714,12 +1738,20 @@ tsetattr(int *attr, int l) { | |||
| 1714 | term.c.attr.mode &= ~ATTR_UNDERLINE; | 1738 | term.c.attr.mode &= ~ATTR_UNDERLINE; |
| 1715 | break; | 1739 | break; |
| 1716 | case 25: | 1740 | case 25: |
| 1717 | case 26: | ||
| 1718 | term.c.attr.mode &= ~ATTR_BLINK; | 1741 | term.c.attr.mode &= ~ATTR_BLINK; |
| 1719 | break; | 1742 | break; |
| 1743 | case 26: | ||
| 1744 | term.c.attr.mode &= ~ATTR_FASTBLINK; | ||
| 1745 | break; | ||
| 1720 | case 27: | 1746 | case 27: |
| 1721 | term.c.attr.mode &= ~ATTR_REVERSE; | 1747 | term.c.attr.mode &= ~ATTR_REVERSE; |
| 1722 | break; | 1748 | break; |
| 1749 | case 28: | ||
| 1750 | term.c.attr.mode &= ~ATTR_INVISIBLE; | ||
| 1751 | break; | ||
| 1752 | case 29: | ||
| 1753 | term.c.attr.mode &= ~ATTR_STRUCK; | ||
| 1754 | break; | ||
| 1723 | case 38: | 1755 | case 38: |
| 1724 | if ((idx = tdefcolor(attr, &i, l)) >= 0) | 1756 | if ((idx = tdefcolor(attr, &i, l)) >= 0) |
| 1725 | term.c.attr.fg = idx; | 1757 | term.c.attr.fg = idx; |
