|
|
1.1 root 1: /* Interface definitions for display code.
2: Copyright (C) 1985, 1990 Free Software Foundation, Inc.
3:
4: This file is part of GNU Emacs.
5:
6: GNU Emacs is free software; you can redistribute it and/or modify
7: it under the terms of the GNU General Public License as published by
8: the Free Software Foundation; either version 1, or (at your option)
9: any later version.
10:
11: GNU Emacs is distributed in the hope that it will be useful,
12: but WITHOUT ANY WARRANTY; without even the implied warranty of
13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14: GNU General Public License for more details.
15:
16: You should have received a copy of the GNU General Public License
17: along with GNU Emacs; see the file COPYING. If not, write to
18: the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
19:
20:
21: /* Nonzero means do not assume anything about current
22: contents of actual terminal screen */
23:
24: extern int screen_garbaged;
25:
26: /* Desired terminal cursor position (to show position of point),
27: origin zero. */
28:
29: extern int cursor_hpos, cursor_vpos;
30:
31: /* Nonzero means last display completed
32: and cursor is really at cursor_hpos, cursor_vpos.
33: Zero means it was preempted. */
34:
35: extern int display_completed;
36:
37: /* Nonzero while trying to read keyboard input at main program level. */
38:
39: extern int waiting_for_input;
40:
41: struct matrix
42: {
43: /* Height of this matrix. */
44: int height;
45: /* Width of this matrix. */
46: int width;
47: /* Vector of used widths of lines, indexed by vertical position. */
48: int *used;
49: /* Vector of line contents.
50: m->contents[V][H] is the character at position V, H.
51: Note that ->contents[...][screen_width] is always 0
52: and so is ->contents[...][-1]. */
53: unsigned char **contents;
54: /* Long vector from which the line contents are taken. */
55: unsigned char *total_contents;
56: /* Vector indicating, for each line, whether it is highlighted. */
57: char *highlight;
58: /* Vector indicating, for each line, whether its contents mean anything. */
59: char *enable;
60: };
61:
62: /* Current screen contents. */
63: extern struct matrix *current_screen;
64: /* Screen contents to be displayed. */
65: extern struct matrix *new_screen;
66: /* Temporary buffer for screen contents. */
67: extern struct matrix *temp_screen;
68:
69: /* Get ready to display on screen line VPOS at column HPOS
70: and return the string where the text of that line is stored. */
71:
72: unsigned char *get_display_line ();
73:
74: /* Buffer used by `message' for formatting a message, and by print.c. */
75: extern char *message_buf;
76:
77: /* Nonzero means message_buf is being used by print. */
78: extern int message_buf_print;
79:
80: /* Message to display instead of minibuffer contents
81: This is what the functions error and message make,
82: and command echoing uses it as well.
83: It overrides the minibuf_prompt as well as the buffer. */
84: extern char *echo_area_contents;
85:
86: /* All costs measured in characters.
87: So no cost can exceed the area of a screen, measured in characters.
88: This should not be more than million.
89: Meanwhile, we can add lots of millions together without overflow. */
90:
91: #define INFINITY 1000000
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.