aboutsummaryrefslogtreecommitdiff
path: root/st.c
diff options
context:
space:
mode:
authorDevin J. Pohly <djpohly@gmail.com>2018-02-24 15:32:48 -0600
committerDevin J. Pohly <djpohly@gmail.com>2018-02-25 21:56:26 -0600
commita3beb626d2dae9d4d0883c7c8cb6ba58b0609105 (patch)
tree2b375342df7c33c98ab070ee38b40bbb0da4acf1 /st.c
parenta5dc1b46976b2252f9d7bb68f126c4b0f351dd1a (diff)
downloadst-a3beb626d2dae9d4d0883c7c8cb6ba58b0609105.tar.gz
st-a3beb626d2dae9d4d0883c7c8cb6ba58b0609105.tar.bz2
st-a3beb626d2dae9d4d0883c7c8cb6ba58b0609105.zip
Remove x.c dependency on term
The xinit function only needs to the rows/cols, so pass those in rather than accessing term directly. With a bit of arithmetic, we are able to avoid the need for term.row and term.col in x2col, y2row, and xdrawglyphfontspecs as well, completing the removal. Term is now fully internal to st.c. Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
Diffstat (limited to 'st.c')
-rw-r--r--st.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/st.c b/st.c
index 4bf6378..da832ed 100644
--- a/st.c
+++ b/st.c
@@ -95,6 +95,26 @@ enum escape_state {
ESC_DCS =128,
};
+/* Internal representation of the screen */
+typedef struct {
+ int row; /* nb row */
+ int col; /* nb col */
+ Line *line; /* screen */
+ Line *alt; /* alternate screen */
+ int *dirty; /* dirtyness of lines */
+ TCursor c; /* cursor */
+ int ocx; /* old cursor col */
+ int ocy; /* old cursor row */
+ int top; /* top scroll limit */
+ int bot; /* bottom scroll limit */
+ int mode; /* terminal mode flags */
+ int esc; /* escape state flags */
+ char trantbl[4]; /* charset table translation */
+ int charset; /* current charset */
+ int icharset; /* selected charset for sequence */
+ int *tabs;
+} Term;
+
/* CSI Escape sequence structs */
/* ESC '[' [[ [<priv>] <arg> [;]] <mode> [<mode>]] */
typedef struct {
@@ -181,11 +201,11 @@ static char *base64dec(const char *);
static ssize_t xwrite(int, const char *, size_t);
/* Globals */
-Term term;
int cmdfd;
pid_t pid;
int oldbutton = 3; /* button event on startup: 3 = release */
+static Term term;
static Selection sel;
static CSIEscape csiescseq;
static STREscape strescseq;