]> git.pld-linux.org Git - packages/tf.git/blame - tf-50b6-multistatus.patch
- spaces->tabs
[packages/tf.git] / tf-50b6-multistatus.patch
CommitLineData
c47a3bf1 1diff -ur tf-50b6/src/globals.h tf-50b6-patch/src/globals.h
2--- tf-50b6/src/globals.h Wed Jul 21 02:19:41 2004
3+++ tf-50b6-patch/src/globals.h Thu Aug 5 14:27:52 2004
4@@ -223,6 +223,7 @@
5 #define status_attr getattrvar(VAR_stat_attr)
6 #define status_fields getstdvar(VAR_stat_fields)
7 #define status_pad getstdvar(VAR_stat_pad)
8+#define status_height getintvar(VAR_stat_height)
9 #define sub getintvar(VAR_sub)
10 #define tabsize getintvar(VAR_tabsize)
11 #define telopt getintvar(VAR_telopt)
12diff -ur tf-50b6/src/main.c tf-50b6-patch/src/main.c
13--- tf-50b6/src/main.c Thu Jul 29 19:37:19 2004
14+++ tf-50b6-patch/src/main.c Thu Aug 5 14:27:52 2004
15@@ -49,7 +49,7 @@
16 #endif
17 "TinyFugue version 5.0 beta 6";
18
19-const char mods[] = "";
20+const char mods[] = "With multistatus line written by Someone [Minor changes by Karol Lassak (ingwar@ingwar.eu.org)]";
21
22 const char copyright[] =
23 "Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2003, 2004 Ken Keys (hawkeye@tcp.com)";
24Only in tf-50b6-patch/src: main.c.orig
25diff -ur tf-50b6/src/output.c tf-50b6-patch/src/output.c
26--- tf-50b6/src/output.c Fri Jul 30 21:21:02 2004
27+++ tf-50b6-patch/src/output.c Thu Aug 5 14:27:53 2004
28@@ -15,6 +15,8 @@
29 * Handles all screen-related phenomena.
30 *****************************************************************/
31
32+#define MAX_STATUS_HEIGHT 5
33+
34 #define TERM_vt100 1
35 #define TERM_vt220 2
36 #define TERM_ansi 3
37@@ -388,7 +390,7 @@
38 lines = ((str = getvar("LINES"))) ? atoi(str) : 0;
39 columns = ((str = getvar("COLUMNS"))) ? atoi(str) : 0;
40 if (lines <= 0 || columns <= 0) get_window_size();
41- ystatus = lines - isize;
42+ ystatus = lines - isize - (status_height - 1);
43 top_margin = 1;
44 bottom_margin = lines;
45
46@@ -396,8 +398,8 @@
47 old_ix = -1;
48
49 init_term();
50- Stringninit(status_line, columns);
51- check_charattrs(status_line, columns, 0, __FILE__, __LINE__);
52+ Stringninit(status_line, columns * MAX_STATUS_HEIGHT);
53+ check_charattrs(status_line, columns * MAX_STATUS_HEIGHT, 0, __FILE__, __LINE__);
54 ch_attr(&special_var[VAR_hiliteattr]);
55 ch_attr(&special_var[VAR_alert_attr]);
56 ch_attr(&special_var[VAR_stat_attr]);
57@@ -688,7 +690,7 @@
58 } else {
59 prompt = fgprompt();
60 if (isize > lines - 3) set_var_by_id(VAR_isize, lines - 3);
61- ystatus = lines - isize;
62+ ystatus = lines - isize - (status_height - 1);
63 #if 0
64 outcount = ystatus - 1;
65 #endif
66@@ -699,7 +701,7 @@
67 }
68 update_status_line(NULL);
69 ix = iendx = oy = 1;
70- iy = iendy = istarty = ystatus + 1;
71+ iy = iendy = istarty = ystatus + status_height;
72 ipos();
73 #endif
74 }
75@@ -1317,9 +1319,9 @@
76 inlist(field, status_field_list, status_field_list->tail);
77 }
78
79- if (width > columns) {
80- eprintf("status_fields: status width (%d) is wider than screen (%d)",
81- width, columns);
82+ if (width > columns * status_height) {
83+ eprintf("status_fields: status width (%d) is wider than screen * status height (%d * %d)",
84+ width, columns, status_height);
85 }
86
87 /* update new fields */
88@@ -1411,21 +1413,21 @@
89 {
90 int column;
91 if (field->column >= 0)
92- return (field->column > columns) ? columns : field->column;
93+ return (field->column > columns * status_height) ? columns * status_height : field->column;
94 column = field->column +
95- ((status_left + status_right > columns) ?
96- status_left + status_right : columns);
97- return (column > columns) ? columns : column;
98+ ((status_left + status_right > columns * status_height) ?
99+ status_left + status_right : columns * status_height);
100+ return (column > columns * status_height) ? columns * status_height : column;
101 }
102
103 static int status_width(StatusField *field, int start)
104 {
105 int width;
106- if (start >= columns) return 0;
107- width = (field->width == 0) ? columns - status_right - status_left :
108+ if (start >= columns * status_height) return 0;
109+ width = (field->width == 0) ? columns * status_height - status_right - status_left :
110 (field->width > 0) ? field->width : -field->width;
111- if (width > columns - start)
112- width = columns - start;
113+ if (width > columns * status_height - start)
114+ width = columns * status_height - start;
115 if (width < 0)
116 width = 0;
117 return width;
118@@ -1583,8 +1585,8 @@
119 continue;
120 }
121 if (internal >= 0 && field->internal != internal) continue;
122- column = status_field_column(field);
123- if (column >= columns) /* doesn't fit, nor will any later fields */
124+ column = status_field_column(field);
125+ if (column >= columns * status_height) /* doesn't fit, nor will any later fields */
126 break;
127 count++;
128 width = format_status_field(field);
129@@ -1593,17 +1595,17 @@
130 column >= alert_pos + alert_len)
131 {
132 /* no overlap with alert */
133- xy(column + 1, ystatus);
134+ xy((column + 1) % columns, ystatus + (column / columns));
135 hwrite(CS(status_line), column, width, 0);
136 } else {
137 if (column < alert_pos) {
138 /* field starts left of alert */
139- xy(column + 1, ystatus);
140+ xy((column + 1) % columns, ystatus + (column / columns));
141 hwrite(CS(status_line), column, alert_pos - column, 0);
142 }
143 if (column + width >= alert_pos) {
144 /* field ends right of alert */
145- xy(alert_pos + alert_len + 1, ystatus);
146+ xy((alert_pos + alert_len + 1) % columns, ystatus + (column / columns));
147 hwrite(CS(status_line), alert_pos + alert_len,
148 column + width - (alert_pos + alert_len), 0);
149 }
150@@ -1625,12 +1627,12 @@
151 for (node = status_field_list->head; node; node = node->next) {
152 field = (StatusField*)node->datum;
153
154- if ((column = status_field_column(field)) >= columns)
155+ if ((column = status_field_column(field)) >= columns * status_height)
156 break;
157 width = format_status_field(field);
158 }
159
160- for (column += width; column < columns; column++) {
161+ for (column += width; column < columns * status_height; column++) {
162 status_line->data[column] = true_status_pad;
163 status_line->charattrs[column] = status_attr;
164 }
165@@ -1638,23 +1640,33 @@
166
167 int display_status_line(void)
168 {
169+ int i;
170 if (screen_mode < 1) return 0;
171
172 if (!alert_len) {
173 /* no overlap with alert */
174- xy(1, ystatus);
175- hwrite(CS(status_line), 0, columns, 0);
176+ for (i = 0; i < status_height; i++) {
177+ xy(1, ystatus + i);
178+ hwrite(CS(status_line), (columns * i), columns, 0);
179+ }
180 } else {
181 /* overlap with alert (this could happen in ch_status_attr()) */
182- if (alert_pos > 0) {
183- xy(1, ystatus);
184- hwrite(CS(status_line), 0, alert_pos, 0);
185- }
186- if (alert_pos + alert_len < columns) {
187- xy(alert_pos + alert_len + 1, ystatus);
188- hwrite(CS(status_line), alert_pos + alert_len,
189- columns - (alert_pos + alert_len), 0);
190- }
191+ for (i = 0; i < status_height; i++) {
192+ if (!i) {
193+ if (alert_pos > 0) {
194+ xy(1, ystatus);
195+ hwrite(CS(status_line), 0, alert_pos, 0);
196+ }
197+ if (alert_pos + alert_len < columns) {
198+ xy(alert_pos + alert_len + 1, ystatus);
199+ hwrite(CS(status_line), alert_pos + alert_len,
200+ columns - (alert_pos + alert_len), 0);
201+ }
202+ } else {
203+ xy(1, ystatus + i);
204+ hwrite(CS(status_line), (columns * i), columns, 0);
205+ }
206+ }
207 }
208
209 bufflush();
210@@ -1747,9 +1759,9 @@
211 {
212 int need_redraw;
213
214- if (status_line->len < columns)
215- Stringnadd(status_line, '?', columns - status_line->len);
216- Stringtrunc(status_line, columns);
217+ if (status_line->len < columns * status_height)
218+ Stringnadd(status_line, '?', columns * status_height - status_line->len);
219+ Stringtrunc(status_line, columns * status_height);
220
221 if (screen_mode < 0) { /* e.g., called by init_variables() */
222 need_redraw = 0;
223@@ -1763,6 +1775,11 @@
224 #ifdef SCREEN
225 } else if (var == &special_var[VAR_isize]) { /* %isize changed */
226 need_redraw = 1;
227+ } else if (var == &special_var[VAR_stat_height]) { /* %status_height changed */
228+ if (status_height > MAX_STATUS_HEIGHT) {
229+ set_var_by_id(VAR_stat_height, MAX_STATUS_HEIGHT);
230+ }
231+ need_redraw = 1;
232 } else { /* SIGWINCH */
233 /* Set ystatus to the top of the area fix_screen() must erase. */
234 /* ystatus = 1; */
235@@ -1858,9 +1875,9 @@
236 static void clear_input_window(void)
237 {
238 /* only called in visual mode */
239- clear_lines(ystatus + 1, lines);
240+ clear_lines(ystatus + status_height, lines);
241 ix = iendx = 1;
242- iy = iendy = istarty = ystatus + 1;
243+ iy = iendy = istarty = ystatus + status_height;
244 ipos();
245 }
246
247@@ -1878,14 +1895,14 @@
248 static void scroll_input(int n)
249 {
250 if (n > isize) {
251- clear_lines(ystatus + 1, lines);
252- iendy = ystatus + 1;
253+ clear_lines(ystatus + status_height, lines);
254+ iendy = ystatus + status_height;
255 } else if (delete_line) {
256- xy(1, ystatus + 1);
257+ xy(1, ystatus + status_height);
258 for (iendy = lines + 1; iendy > lines - n + 1; iendy--)
259 tp(delete_line);
260 } else if (has_scroll_region) {
261- setscroll(ystatus + 1, lines);
262+ setscroll(ystatus + status_height, lines);
263 xy(1, lines);
264 crnl(n); /* DON'T: cy += n; */
265 iendy = lines - n + 1;
266@@ -2049,7 +2066,7 @@
267 }
268 } else if (scroll && !clearfull) {
269 scroll_input(1);
270- if (istarty > ystatus + 1) istarty--;
271+ if (istarty > ystatus + status_height) istarty--;
272 } else {
273 clear_input_window();
274 }
275@@ -2292,7 +2309,7 @@
276 ioutall(place - (ix - 1) - (iy - lines - 1) * Wrap);
277 iy = lines;
278 ipos();
279- } else if ((iy < ystatus + 1) || (iy > lines)) {
280+ } else if ((iy < ystatus + status_height) || (iy > lines)) {
281 logical_refresh();
282 } else {
283 ipos();
284Only in tf-50b6-patch/src: output.c.orig
285diff -ur tf-50b6/src/varlist.h tf-50b6-patch/src/varlist.h
286--- tf-50b6/src/varlist.h Mon Jul 26 10:30:56 2004
287+++ tf-50b6-patch/src/varlist.h Thu Aug 5 14:27:53 2004
288@@ -128,6 +128,7 @@
289 varstr (VAR_sprefix, "sprefix", NULL, NULL)
290 varstr (VAR_stat_attr, "status_attr", NULL, ch_status_attr)
291 varstr (VAR_stat_fields,"status_fields",NULL, ch_status_fields)
292+varint (VAR_stat_height,"status_height",1, ch_visual)
293 varstr (VAR_stat_pad, "status_pad", "_", update_status_line)
294 varstr (VAR_stint_clock,"status_int_clock",NULL, ch_status_int)
295 varstr (VAR_stint_more, "status_int_more",NULL, ch_status_int)
This page took 0.149852 seconds and 4 git commands to generate.