|
|
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.