diff options
| author | Gerd Moellmann | 1999-10-25 11:06:44 +0000 |
|---|---|---|
| committer | Gerd Moellmann | 1999-10-25 11:06:44 +0000 |
| commit | 95260b26882cb3d52c1fb572ebc720ae676776b7 (patch) | |
| tree | 2174ef75fd289d6459c587f74bc9e40527c1cac8 | |
| parent | 7539e11fca07e5837010aaae18eaaefc7e51cf52 (diff) | |
| download | emacs-95260b26882cb3d52c1fb572ebc720ae676776b7.tar.gz emacs-95260b26882cb3d52c1fb572ebc720ae676776b7.zip | |
Patches from rms.
| -rw-r--r-- | lispref/internals.texi | 574 |
1 files changed, 489 insertions, 85 deletions
diff --git a/lispref/internals.texi b/lispref/internals.texi index 0df7f9ec509..3409c4503b8 100644 --- a/lispref/internals.texi +++ b/lispref/internals.texi | |||
| @@ -64,13 +64,19 @@ Emacs once a day at most---or once a week if you never log out---the | |||
| 64 | extra time is not too severe a problem. | 64 | extra time is not too severe a problem. |
| 65 | 65 | ||
| 66 | @cindex @file{site-load.el} | 66 | @cindex @file{site-load.el} |
| 67 | |||
| 67 | You can specify additional files to preload by writing a library named | 68 | You can specify additional files to preload by writing a library named |
| 68 | @file{site-load.el} that loads them. You may need to increase the value | 69 | @file{site-load.el} that loads them. You may need to add a definition |
| 69 | of @code{PURESIZE}, in @file{src/puresize.h}, to make room for the | 70 | |
| 70 | additional data. (Try adding increments of 20000 until it is big | 71 | @example |
| 71 | enough.) However, the advantage of preloading additional files | 72 | #define SITELOAD_PURESIZE_EXTRA @var{n} |
| 72 | decreases as machines get faster. On modern machines, it is usually not | 73 | @end example |
| 73 | advisable. | 74 | |
| 75 | @noindent | ||
| 76 | to make @var{n} added bytes of pure space to hold the additional files. | ||
| 77 | (Try adding increments of 20000 until it is big enough.) However, the | ||
| 78 | advantage of preloading additional files decreases as machines get | ||
| 79 | faster. On modern machines, it is usually not advisable. | ||
| 74 | 80 | ||
| 75 | After @file{loadup.el} reads @file{site-load.el}, it finds the | 81 | After @file{loadup.el} reads @file{site-load.el}, it finds the |
| 76 | documentation strings for primitive and preloaded functions (and | 82 | documentation strings for primitive and preloaded functions (and |
| @@ -209,6 +215,8 @@ to them, since there is no longer a way to reach them. Their space | |||
| 209 | might as well be reused, since no one will miss them. The second | 215 | might as well be reused, since no one will miss them. The second |
| 210 | (``sweep'') phase of the garbage collector arranges to reuse them. | 216 | (``sweep'') phase of the garbage collector arranges to reuse them. |
| 211 | 217 | ||
| 218 | ??? Maybe add something describing weak hash tables here? | ||
| 219 | |||
| 212 | @cindex free list | 220 | @cindex free list |
| 213 | The sweep phase puts unused cons cells onto a @dfn{free list} | 221 | The sweep phase puts unused cons cells onto a @dfn{free list} |
| 214 | for future allocation; likewise for symbols and markers. It compacts | 222 | for future allocation; likewise for symbols and markers. It compacts |
| @@ -433,7 +441,7 @@ If all args return nil, return nil.") | |||
| 433 | @end group | 441 | @end group |
| 434 | 442 | ||
| 435 | @group | 443 | @group |
| 436 | if (NULL (args)) | 444 | if (NILP (args)) |
| 437 | return Qnil; | 445 | return Qnil; |
| 438 | 446 | ||
| 439 | args_left = args; | 447 | args_left = args; |
| @@ -444,11 +452,11 @@ If all args return nil, return nil.") | |||
| 444 | do | 452 | do |
| 445 | @{ | 453 | @{ |
| 446 | val = Feval (Fcar (args_left)); | 454 | val = Feval (Fcar (args_left)); |
| 447 | if (!NULL (val)) | 455 | if (!NILP (val)) |
| 448 | break; | 456 | break; |
| 449 | args_left = Fcdr (args_left); | 457 | args_left = Fcdr (args_left); |
| 450 | @} | 458 | @} |
| 451 | while (!NULL (args_left)); | 459 | while (!NILP (args_left)); |
| 452 | @end group | 460 | @end group |
| 453 | 461 | ||
| 454 | @group | 462 | @group |
| @@ -726,14 +734,128 @@ explicitly using a suitable predicate (@pxref{Type Predicates}). | |||
| 726 | We describe them here, naming them by the names used in the C code. | 734 | We describe them here, naming them by the names used in the C code. |
| 727 | Many are accessible indirectly in Lisp programs via Lisp primitives. | 735 | Many are accessible indirectly in Lisp programs via Lisp primitives. |
| 728 | 736 | ||
| 737 | Two structures are used to represent buffers in C. The | ||
| 738 | @code{buffer_text} structure contains fields describing the text of a | ||
| 739 | buffer; the @code{buffer} structure holds other fields. In the case | ||
| 740 | of indirect buffers, two or more @code{buffer} structures reference | ||
| 741 | the same @code{buffer_text} structure. | ||
| 742 | |||
| 743 | Here is a list of the @code{struct buffer_text} fields: | ||
| 744 | |||
| 729 | @table @code | 745 | @table @code |
| 730 | @item name | 746 | @item beg |
| 731 | The buffer name is a string that names the buffer. It is guaranteed to | 747 | This field contains the Actual address of the buffer contents. |
| 732 | be unique. @xref{Buffer Names}. | 748 | |
| 749 | @item got | ||
| 750 | This holds the character position of the gap in the buffer. | ||
| 751 | |||
| 752 | @item z | ||
| 753 | This field contains the character position of the end of the buffer | ||
| 754 | text. | ||
| 755 | |||
| 756 | @item gpt_byte | ||
| 757 | Contains the byte position of the gap. | ||
| 758 | |||
| 759 | @item z_byte | ||
| 760 | Holds the byte position of the end of the buffer text. | ||
| 761 | |||
| 762 | @item gap_size | ||
| 763 | Contains the size of buffer's gap. | ||
| 764 | |||
| 765 | @item modiff | ||
| 766 | This field counts buffer-modification events for this buffer. It is | ||
| 767 | incremented for each such event, and never otherwise changed. | ||
| 768 | |||
| 769 | @item save_modiff | ||
| 770 | Contains the previous value of @code{modiff}, as of the last time a | ||
| 771 | buffer was visited or saved in a file. | ||
| 772 | |||
| 773 | @item overlay_modiff | ||
| 774 | Counts modifications to overlays analogous to @code{modiff}. | ||
| 775 | |||
| 776 | @item beg_unchanged | ||
| 777 | Holds the number of characters at the start of the text that are known | ||
| 778 | to be unchanged since the last redisplay that finished. | ||
| 779 | |||
| 780 | @item end_unchanged | ||
| 781 | Holds the number of characters at the end of the text that are known to | ||
| 782 | be unchanged since the last redisplay that finished. | ||
| 783 | |||
| 784 | @item unchanged_modified | ||
| 785 | Contains the value of @code{modiff} at the time of the last redisplay | ||
| 786 | that finished. If this value matches @code{modiff}, | ||
| 787 | @code{beg_unchanged} and @code{end_unchanged} contain no useful | ||
| 788 | information. | ||
| 789 | |||
| 790 | @item overlay_unchanged_modified | ||
| 791 | Contains the value of @code{overlay_modiff} at the time of the last | ||
| 792 | redisplay that finished. If this value matches @code{overlay_modiff}, | ||
| 793 | @code{beg_unchanged} and @code{end_unchanged} contain no useful | ||
| 794 | information. | ||
| 795 | |||
| 796 | @item markers | ||
| 797 | The markers that refer to this buffer. This is actually a single | ||
| 798 | marker, and successive elements in its marker @code{chain} are the other | ||
| 799 | markers referring to this buffer text. | ||
| 733 | 800 | ||
| 734 | @item save_modified | 801 | @item intervals |
| 735 | This field contains the time when the buffer was last saved, as an integer. | 802 | Contains the interval tree which records the text properties of this |
| 736 | @xref{Buffer Modification}. | 803 | buffer. |
| 804 | @end table | ||
| 805 | |||
| 806 | The fields of @code{struct buffer} are: | ||
| 807 | |||
| 808 | @table @code | ||
| 809 | @item next | ||
| 810 | Points to the next buffer, in the chain of all buffers including killed | ||
| 811 | buffers. This chain is used only for garbage collection, in order to | ||
| 812 | collect killed buffers properly. Note that vectors, and most kinds of | ||
| 813 | objects allocated as vectors, are all on one chain, but buffers are on a | ||
| 814 | separate chain of their own. | ||
| 815 | |||
| 816 | @item own_text | ||
| 817 | This is a @code{struct buffer_text} structure. In an ordinary buffer, | ||
| 818 | it holds the buffer contents. In indirect buffers, this field is not | ||
| 819 | used. | ||
| 820 | |||
| 821 | @item text | ||
| 822 | This points to the @code{buffer_text} structure that is used for this | ||
| 823 | buffer. In an ordinary buffer, this is the @code{own_text} field above. | ||
| 824 | In an indirect buffer, this is the @code{own_text} field of the base | ||
| 825 | buffer. | ||
| 826 | |||
| 827 | @item pt | ||
| 828 | Contains the character position of point in a buffer. | ||
| 829 | |||
| 830 | @item pt_byte | ||
| 831 | Contains the byte position of point in a buffer. | ||
| 832 | |||
| 833 | @item begv | ||
| 834 | This field contains the character position of the beginning of the | ||
| 835 | accessible range of text in the buffer. | ||
| 836 | |||
| 837 | @item begv_byte | ||
| 838 | This field contains the byte position of the beginning of the | ||
| 839 | accessible range of text in the buffer. | ||
| 840 | |||
| 841 | @item zv | ||
| 842 | This field contains the character position of the end of the | ||
| 843 | accessible range of text in the buffer. | ||
| 844 | |||
| 845 | @item zv_byte | ||
| 846 | This field contains the byte position of the end of the | ||
| 847 | accessible range of text in the buffer. | ||
| 848 | |||
| 849 | @item base_buffer | ||
| 850 | In an indirect buffer, this points to the base buffer. In an ordinary | ||
| 851 | buffer, it is null. | ||
| 852 | |||
| 853 | @item local_var_flags | ||
| 854 | This field contains flags indicating that certain variables are local in | ||
| 855 | this buffer. Such variables are declared in the C code using | ||
| 856 | @code{DEFVAR_PER_BUFFER}, and their buffer-local bindings are stored in | ||
| 857 | fields in the buffer structure itself. (Some of these fields are | ||
| 858 | described in this table.) | ||
| 737 | 859 | ||
| 738 | @item modtime | 860 | @item modtime |
| 739 | This field contains the modification time of the visited file. It is | 861 | This field contains the modification time of the visited file. It is |
| @@ -744,16 +866,98 @@ if the file has changed on disk. @xref{Buffer Modification}. | |||
| 744 | @item auto_save_modified | 866 | @item auto_save_modified |
| 745 | This field contains the time when the buffer was last auto-saved. | 867 | This field contains the time when the buffer was last auto-saved. |
| 746 | 868 | ||
| 869 | @item auto_save_failure_time | ||
| 870 | The time at which we detected a failure to auto-save, or -1 if we didn't | ||
| 871 | have a failure. | ||
| 872 | |||
| 747 | @item last_window_start | 873 | @item last_window_start |
| 748 | This field contains the @code{window-start} position in the buffer as of | 874 | This field contains the @code{window-start} position in the buffer as of |
| 749 | the last time the buffer was displayed in a window. | 875 | the last time the buffer was displayed in a window. |
| 750 | 876 | ||
| 877 | @item clip_changed | ||
| 878 | This flag is set when narrowing changes in a buffer. | ||
| 879 | |||
| 880 | @item prevent_redisplay_optimizations_p | ||
| 881 | A flag indicating the redisplay optiomizations should not be used | ||
| 882 | to display this buffer. | ||
| 883 | |||
| 751 | @item undo_list | 884 | @item undo_list |
| 752 | This field points to the buffer's undo list. @xref{Undo}. | 885 | This field points to the buffer's undo list. @xref{Undo}. |
| 753 | 886 | ||
| 754 | @item syntax_table_v | 887 | @item name |
| 888 | The buffer name is a string that names the buffer. It is guaranteed to | ||
| 889 | be unique. @xref{Buffer Names}. | ||
| 890 | |||
| 891 | @item filename | ||
| 892 | The name of the file visited in this buffer, or @code{nil}. | ||
| 893 | |||
| 894 | @item directory | ||
| 895 | The directory for expanding relative file names. | ||
| 896 | |||
| 897 | @item save_length | ||
| 898 | Length of the file this buffer is visiting, when last read or saved. | ||
| 899 | This and other fields concerned with saving are not kept in the | ||
| 900 | @code{buffer_text} structure because indirect buffers are never saved. | ||
| 901 | |||
| 902 | @item auto_save_file_name | ||
| 903 | File name used for auto-saving this buffer. This is not in the | ||
| 904 | @code{buffer_text} because it's not used in indirect buffers at all. | ||
| 905 | |||
| 906 | @item read_only | ||
| 907 | Non-@code{nil} means this buffer is read-only. | ||
| 908 | |||
| 909 | @item mark | ||
| 910 | This field contains the mark for the buffer. The mark is a marker, | ||
| 911 | hence it is also included on the list @code{markers}. @xref{The Mark}. | ||
| 912 | |||
| 913 | @item local_var_alist | ||
| 914 | This field contains the association list describing the buffer-local | ||
| 915 | variable bindings of this buffer, not including the built-in | ||
| 916 | buffer-local bindings that have special slots in the buffer object. | ||
| 917 | (Those slots are omitted from this table.) @xref{Buffer-Local | ||
| 918 | Variables}. | ||
| 919 | |||
| 920 | @item major_mode | ||
| 921 | Symbol naming the major mode of this buffer, e.g., @code{lisp-mode}. | ||
| 922 | |||
| 923 | @item mode_name | ||
| 924 | Pretty name of major mode, e.g., @code{"Lisp"}. | ||
| 925 | |||
| 926 | @item mode_line_format | ||
| 927 | Mode line element that controls the format of the mode line. If this | ||
| 928 | is @code{nil}, no mode line will be displayed. | ||
| 929 | |||
| 930 | @item header_line_format | ||
| 931 | This field is analoguous to @code{mode_line_format} for the mode | ||
| 932 | line displayed at the top of windows. | ||
| 933 | |||
| 934 | @item keymap | ||
| 935 | This field holds the buffer's local keymap. @xref{Keymaps}. | ||
| 936 | |||
| 937 | @item abbrev_table | ||
| 938 | This buffer's local abbrevs. | ||
| 939 | |||
| 940 | @item syntax_table | ||
| 755 | This field contains the syntax table for the buffer. @xref{Syntax Tables}. | 941 | This field contains the syntax table for the buffer. @xref{Syntax Tables}. |
| 756 | 942 | ||
| 943 | @item category_table | ||
| 944 | This field contains the category table for the buffer. | ||
| 945 | |||
| 946 | @item case_fold_search | ||
| 947 | The value of @code{case-fold-search} in this buffer. | ||
| 948 | |||
| 949 | @item tab_width | ||
| 950 | The value of @code{tab-width} in this buffer. | ||
| 951 | |||
| 952 | @item fill_column | ||
| 953 | The value of @code{fill-column} in this buffer. | ||
| 954 | |||
| 955 | @item left_margin | ||
| 956 | The value of @code{left-margin} in this buffer. | ||
| 957 | |||
| 958 | @item auto_fill_function | ||
| 959 | The value of @code{auto-fill-function} in this buffer. | ||
| 960 | |||
| 757 | @item downcase_table | 961 | @item downcase_table |
| 758 | This field contains the conversion table for converting text to lower case. | 962 | This field contains the conversion table for converting text to lower case. |
| 759 | @xref{Case Tables}. | 963 | @xref{Case Tables}. |
| @@ -770,43 +974,37 @@ case-folding search. @xref{Case Tables}. | |||
| 770 | This field contains the equivalence table for case-folding search. | 974 | This field contains the equivalence table for case-folding search. |
| 771 | @xref{Case Tables}. | 975 | @xref{Case Tables}. |
| 772 | 976 | ||
| 773 | @item display_table | 977 | @item truncate_lines |
| 774 | This field contains the buffer's display table, or @code{nil} if it doesn't | 978 | The value of @code{truncate-lines} in this buffer. |
| 775 | have one. @xref{Display Tables}. | ||
| 776 | 979 | ||
| 777 | @item markers | 980 | @item ctl_arrow |
| 778 | This field contains the chain of all markers that currently point into | 981 | The value of @code{ctl-arrow} in this buffer. |
| 779 | the buffer. Deletion of text in the buffer, and motion of the buffer's | ||
| 780 | gap, must check each of these markers and perhaps update it. | ||
| 781 | @xref{Markers}. | ||
| 782 | 982 | ||
| 783 | @item backed_up | 983 | @item selective_display |
| 784 | This field is a flag that tells whether a backup file has been made | 984 | The value of @code{selective-display} in this buffer. |
| 785 | for the visited file of this buffer. | ||
| 786 | 985 | ||
| 787 | @item mark | 986 | @item selective_display_ellipsis |
| 788 | This field contains the mark for the buffer. The mark is a marker, | 987 | The value of @code{selective-display-ellipsis} in this buffer. |
| 789 | hence it is also included on the list @code{markers}. @xref{The Mark}. | ||
| 790 | 988 | ||
| 791 | @item mark_active | 989 | @item minor_modes |
| 792 | This field is non-@code{nil} if the buffer's mark is active. | 990 | An alist of the minor modes of this buffer. |
| 793 | 991 | ||
| 794 | @item local_var_alist | 992 | @item overwrite_mode |
| 795 | This field contains the association list describing the buffer-local | 993 | The value of @code{overwrite_mode} in this buffer. |
| 796 | variable bindings of this buffer, not including the built-in | ||
| 797 | buffer-local bindings that have special slots in the buffer object. | ||
| 798 | (Those slots are omitted from this table.) @xref{Buffer-Local | ||
| 799 | Variables}. | ||
| 800 | 994 | ||
| 801 | @item base_buffer | 995 | @item abbrev_mode |
| 802 | This field holds the buffer's base buffer (if it is an indirect buffer), | 996 | The value of @code{abbrev-mode} in this buffer. |
| 803 | or @code{nil}. | ||
| 804 | 997 | ||
| 805 | @item keymap | 998 | @item display_table |
| 806 | This field holds the buffer's local keymap. @xref{Keymaps}. | 999 | This field contains the buffer's display table, or @code{nil} if it doesn't |
| 1000 | have one. @xref{Display Tables}. | ||
| 807 | 1001 | ||
| 808 | @item overlay_center | 1002 | @item save_modified |
| 809 | This field holds the current overlay center position. @xref{Overlays}. | 1003 | This field contains the time when the buffer was last saved, as an integer. |
| 1004 | @xref{Buffer Modification}. | ||
| 1005 | |||
| 1006 | @item mark_active | ||
| 1007 | This field is non-@code{nil} if the buffer's mark is active. | ||
| 810 | 1008 | ||
| 811 | @item overlays_before | 1009 | @item overlays_before |
| 812 | This field holds a list of the overlays in this buffer that end at or | 1010 | This field holds a list of the overlays in this buffer that end at or |
| @@ -818,9 +1016,66 @@ This field holds a list of the overlays in this buffer that end after | |||
| 818 | the current overlay center position. They are sorted in order of | 1016 | the current overlay center position. They are sorted in order of |
| 819 | increasing beginning position. | 1017 | increasing beginning position. |
| 820 | 1018 | ||
| 1019 | @item overlay_center | ||
| 1020 | This field holds the current overlay center position. @xref{Overlays}. | ||
| 1021 | |||
| 821 | @item enable_multibyte_characters | 1022 | @item enable_multibyte_characters |
| 822 | This field holds the buffer's local value of | 1023 | This field holds the buffer's local value of |
| 823 | @code{enable-multibyte-characters}---either @code{t} or @code{nil}. | 1024 | @code{enable-multibyte-characters}---either @code{t} or @code{nil}. |
| 1025 | |||
| 1026 | @item buffer_file_coding_system | ||
| 1027 | The value of @code{buffer-file-coding-system} in this buffer. | ||
| 1028 | |||
| 1029 | @item file_format | ||
| 1030 | The value of @code{buffer-file-format} in this buffer. | ||
| 1031 | |||
| 1032 | @item pt_marker | ||
| 1033 | In an indirect buffer, or a buffer that is the base of an indirect | ||
| 1034 | buffer, this holds a marker that records point for this buffer when the | ||
| 1035 | buffer is not current. | ||
| 1036 | |||
| 1037 | @item begv_marker | ||
| 1038 | In an indirect buffer, or a buffer that is the base of an indirect | ||
| 1039 | buffer, this holds a marker that records @code{begv} for this buffer | ||
| 1040 | when the buffer is not current. | ||
| 1041 | |||
| 1042 | @item zv_marker | ||
| 1043 | In an indirect buffer, or a buffer that is the base of an indirect | ||
| 1044 | buffer, this holds a marker that records @code{zv} for this buffer when | ||
| 1045 | the buffer is not current. | ||
| 1046 | |||
| 1047 | @item file_truename | ||
| 1048 | The truename of the visited file, or @code{nil}. | ||
| 1049 | |||
| 1050 | @item invisibility_spec | ||
| 1051 | The value of @code{buffer-invisibility-spec} in this buffer. | ||
| 1052 | |||
| 1053 | @item last_selected_window | ||
| 1054 | This is the last window that was selected with this buffer in it, or @code{nil} | ||
| 1055 | if that window no longer displays this buffer. | ||
| 1056 | |||
| 1057 | @item display_count | ||
| 1058 | This field is incremented each time the buffer is displayed in a window. | ||
| 1059 | |||
| 1060 | @item left_margin_width | ||
| 1061 | The value of @code{left-margin-width} in this buffer. | ||
| 1062 | |||
| 1063 | @item right_margin_width | ||
| 1064 | The value of @code{right-margin-width} in this buffer. | ||
| 1065 | |||
| 1066 | @item indicate_empty_lines | ||
| 1067 | Non-@code{nil} means indicate empty lines (lines with no text) with a | ||
| 1068 | small bitmap in the fringe, when using a window system that can do it. | ||
| 1069 | |||
| 1070 | @item display_time | ||
| 1071 | This holds a time stamp that is updated each time this buffer is | ||
| 1072 | displayed in a window. | ||
| 1073 | |||
| 1074 | @item scroll_up_aggressively | ||
| 1075 | The value of @code{scroll-up-aggressively} in this buffer. | ||
| 1076 | |||
| 1077 | @item scroll_down_aggressively | ||
| 1078 | The value of @code{scroll-down-aggressively} in this buffer. | ||
| 824 | @end table | 1079 | @end table |
| 825 | 1080 | ||
| 826 | @node Window Internals | 1081 | @node Window Internals |
| @@ -837,22 +1092,63 @@ The frame that this window is on. | |||
| 837 | @item mini_p | 1092 | @item mini_p |
| 838 | Non-@code{nil} if this window is a minibuffer window. | 1093 | Non-@code{nil} if this window is a minibuffer window. |
| 839 | 1094 | ||
| 1095 | @item parent | ||
| 1096 | Internally, Emacs arranges windows in a tree; each group of siblings has | ||
| 1097 | a parent window whose area includes all the siblings. This field points | ||
| 1098 | to a window's parent. | ||
| 1099 | |||
| 1100 | Parent windows do not display buffers, and play little role in display | ||
| 1101 | except to shape their child windows. Emacs Lisp programs usually have | ||
| 1102 | no access to the parent windows; they operate on the windows at the | ||
| 1103 | leaves of the tree, which actually display buffers. | ||
| 1104 | |||
| 1105 | The following four fields also describe the window tree structure. | ||
| 1106 | |||
| 1107 | @item hchild | ||
| 1108 | In a window subdivided horizontally by child windows, the leftmost child. | ||
| 1109 | Otherwise, @code{nil}. | ||
| 1110 | |||
| 1111 | @item vchild | ||
| 1112 | In a window subdivided vertically by child windows, the topmost child. | ||
| 1113 | Otherwise, @code{nil}. | ||
| 1114 | |||
| 1115 | @item next | ||
| 1116 | The next sibling of this window. It is @code{nil} in a window that is | ||
| 1117 | the rightmost or bottommost of a group of siblings. | ||
| 1118 | |||
| 1119 | @item prev | ||
| 1120 | The previous sibling of this window. It is @code{nil} in a window that | ||
| 1121 | is the leftmost or topmost of a group of siblings. | ||
| 1122 | |||
| 1123 | @item left | ||
| 1124 | This is the left-hand edge of the window, measured in columns. (The | ||
| 1125 | leftmost column on the screen is @w{column 0}.) | ||
| 1126 | |||
| 1127 | @item top | ||
| 1128 | This is the top edge of the window, measured in lines. (The top line on | ||
| 1129 | the screen is @w{line 0}.) | ||
| 1130 | |||
| 1131 | @item height | ||
| 1132 | The height of the window, measured in lines. | ||
| 1133 | |||
| 1134 | @item width | ||
| 1135 | The width of the window, measured in columns. This width includes the | ||
| 1136 | scroll bar and fringes, and/or the separator line on the right of the | ||
| 1137 | window (if any). | ||
| 1138 | |||
| 840 | @item buffer | 1139 | @item buffer |
| 841 | The buffer that the window is displaying. This may change often during | 1140 | The buffer that the window is displaying. This may change often during |
| 842 | the life of the window. | 1141 | the life of the window. |
| 843 | 1142 | ||
| 844 | @item dedicated | 1143 | @item start |
| 845 | Non-@code{nil} if this window is dedicated to its buffer. | 1144 | The position in the buffer that is the first character to be displayed |
| 1145 | in the window. | ||
| 846 | 1146 | ||
| 847 | @item pointm | 1147 | @item pointm |
| 848 | @cindex window point internals | 1148 | @cindex window point internals |
| 849 | This is the value of point in the current buffer when this window is | 1149 | This is the value of point in the current buffer when this window is |
| 850 | selected; when it is not selected, it retains its previous value. | 1150 | selected; when it is not selected, it retains its previous value. |
| 851 | 1151 | ||
| 852 | @item start | ||
| 853 | The position in the buffer that is the first character to be displayed | ||
| 854 | in the window. | ||
| 855 | |||
| 856 | @item force_start | 1152 | @item force_start |
| 857 | If this flag is non-@code{nil}, it says that the window has been | 1153 | If this flag is non-@code{nil}, it says that the window has been |
| 858 | scrolled explicitly by the Lisp program. This affects what the next | 1154 | scrolled explicitly by the Lisp program. This affects what the next |
| @@ -860,57 +1156,133 @@ redisplay does if point is off the screen: instead of scrolling the | |||
| 860 | window to show the text around point, it moves point to a location that | 1156 | window to show the text around point, it moves point to a location that |
| 861 | is on the screen. | 1157 | is on the screen. |
| 862 | 1158 | ||
| 1159 | @item optional_new_start | ||
| 1160 | Set to a non-@code{nil} value when we have explicitly changed the value of | ||
| 1161 | @code{start}, but don't want the next redisplay to be obliged to use the | ||
| 1162 | new value. | ||
| 1163 | |||
| 1164 | @item frozen_window_start_p | ||
| 1165 | This field is set temporarily to 1 to indicate to redisplay that | ||
| 1166 | @code{start} of this window should not be changed, even if point | ||
| 1167 | gets invisible. | ||
| 1168 | |||
| 1169 | @item start_at_line_beg | ||
| 1170 | Non-@code{nil} means current value of @code{start} was the beginning of a line | ||
| 1171 | when it was chosen. | ||
| 1172 | |||
| 1173 | @item too_small_ok | ||
| 1174 | Non-@code{nil} means don't delete this window for becoming ``too small''. | ||
| 1175 | |||
| 1176 | @item height_fixed_p | ||
| 1177 | This field is temporarily set to 1 to fix the height of the selected | ||
| 1178 | window when the echo area is resized. | ||
| 1179 | |||
| 1180 | @item use_time | ||
| 1181 | This is the last time that the window was selected. The function | ||
| 1182 | @code{get-lru-window} uses this field. | ||
| 1183 | |||
| 1184 | @item sequence_number | ||
| 1185 | A unique number assigned to this window when it was created. | ||
| 1186 | |||
| 863 | @item last_modified | 1187 | @item last_modified |
| 864 | The @code{modified} field of the window's buffer, as of the last time | 1188 | The @code{modiff} field of the window's buffer, as of the last time |
| 865 | a redisplay completed in this window. | 1189 | a redisplay completed in this window. |
| 866 | 1190 | ||
| 1191 | @item last_overlay_modified | ||
| 1192 | The @code{overlay_modiff} field of the window's buffer, as of the last | ||
| 1193 | time a redisplay completed in this window. | ||
| 1194 | |||
| 867 | @item last_point | 1195 | @item last_point |
| 868 | The buffer's value of point, as of the last time | 1196 | The buffer's value of point, as of the last time a redisplay completed |
| 869 | a redisplay completed in this window. | 1197 | in this window. |
| 870 | 1198 | ||
| 871 | @item left | 1199 | @item last_had_star |
| 872 | This is the left-hand edge of the window, measured in columns. (The | 1200 | A non-@code{nil} value means the window's buffer was ``modified'' when the |
| 873 | leftmost column on the screen is @w{column 0}.) | 1201 | window was last updated. |
| 874 | 1202 | ||
| 875 | @item top | 1203 | @item vertical_scroll_bar |
| 876 | This is the top edge of the window, measured in lines. (The top line on | 1204 | This window's vertical scroll bar. |
| 877 | the screen is @w{line 0}.) | ||
| 878 | 1205 | ||
| 879 | @item height | 1206 | @item left_margin_width |
| 880 | The height of the window, measured in lines. | 1207 | The width of the left margin in this window, or @code{nil} not to |
| 1208 | specify it (in which case the buffer's value of @code{left-margin-width} | ||
| 1209 | is used. | ||
| 881 | 1210 | ||
| 882 | @item width | 1211 | @item right_margin_width |
| 883 | The width of the window, measured in columns. This width includes the | 1212 | Likewise for the right margin. |
| 884 | scroll bar and fringes, and/or the separator line on the right of the | ||
| 885 | window (if any). | ||
| 886 | 1213 | ||
| 887 | @item next | 1214 | @begin ignore |
| 888 | This is the window that is the next in the chain of siblings. It is | 1215 | @item last_mark_x |
| 889 | @code{nil} in a window that is the rightmost or bottommost of a group of | 1216 | @item last_mark_y |
| 890 | siblings. | 1217 | ???Not used. |
| 1218 | @end ignore | ||
| 891 | 1219 | ||
| 892 | @item prev | 1220 | @item window_end_pos |
| 893 | This is the window that is the previous in the chain of siblings. It is | 1221 | This is computed as @code{z} minus the buffer position of the last glyph |
| 894 | @code{nil} in a window that is the leftmost or topmost of a group of | 1222 | in the current matrix of the window. The value is only valid if |
| 895 | siblings. | 1223 | @code{window_end_valid} is not @code{nil}. |
| 896 | 1224 | ||
| 897 | @item parent | 1225 | @item window_end_bytepos |
| 898 | Internally, Emacs arranges windows in a tree; each group of siblings has | 1226 | The byte position corresponding to @code{window_end_pos}. |
| 899 | a parent window whose area includes all the siblings. This field points | ||
| 900 | to a window's parent. | ||
| 901 | 1227 | ||
| 902 | Parent windows do not display buffers, and play little role in display | 1228 | @item window_end_vpos |
| 903 | except to shape their child windows. Emacs Lisp programs usually have | 1229 | The window-relative vertical position of the line containing |
| 904 | no access to the parent windows; they operate on the windows at the | 1230 | @code{window_end_pos}. |
| 905 | leaves of the tree, which actually display buffers. | ||
| 906 | 1231 | ||
| 1232 | @item window_end_valid | ||
| 1233 | This field is set to a non-@code{nil} value if @code{window_end_pos} is truly | ||
| 1234 | valid. This is @code{nil} if nontrivial redisplay is preempted since in that | ||
| 1235 | case the display that @code{window_end_pos} was computed for did not get | ||
| 1236 | onto the screen. | ||
| 1237 | |||
| 1238 | @item redisplay_end_trigger | ||
| 1239 | If redisplay in this window goes beyond this buffer position, it runs | ||
| 1240 | run the @code{redisplay-end-trigger-hook}. | ||
| 1241 | |||
| 1242 | @begin ignore | ||
| 1243 | @item orig_height | ||
| 1244 | @item orig_top | ||
| 1245 | ??? Are temporary storage areas. | ||
| 1246 | @end ignore | ||
| 1247 | |||
| 1248 | @item cursor | ||
| 1249 | A structure describing where the cursor is in this window. | ||
| 1250 | |||
| 1251 | @item last_cursor | ||
| 1252 | The value of @code{cursor} as of the last redisplay that finished. | ||
| 1253 | |||
| 1254 | @item phys_cursor | ||
| 1255 | A structure describing where the cursor of this window physically is. | ||
| 1256 | |||
| 1257 | @item phys_cursor_type | ||
| 1258 | The type of cursor that was last displayed on this window. | ||
| 1259 | |||
| 1260 | @item phys_cursor_on_p | ||
| 1261 | This field is non-zero if the cursor is physically on. | ||
| 1262 | |||
| 1263 | @item cursor_off_p | ||
| 1264 | Non-zero means the cursor in this window is logically on. | ||
| 1265 | |||
| 1266 | @item last_cursor_off_p | ||
| 1267 | This field contains the value of @code{cursor_off_p} as of the time of | ||
| 1268 | the last redisplay. | ||
| 1269 | |||
| 1270 | @item must_be_updated_p | ||
| 1271 | This is set to 1 during redisplay when this window must be updated. | ||
| 1272 | |||
| 1273 | @item pseudo_window_p | ||
| 1274 | A non-zero value of this field means this is a window that is not | ||
| 1275 | part of the normal window tree. | ||
| 1276 | |||
| 907 | @item hscroll | 1277 | @item hscroll |
| 908 | This is the number of columns that the display in the window is scrolled | 1278 | This is the number of columns that the display in the window is scrolled |
| 909 | horizontally to the left. Normally, this is 0. | 1279 | horizontally to the left. Normally, this is 0. |
| 910 | 1280 | ||
| 911 | @item use_time | 1281 | @item vscroll |
| 912 | This is the last time that the window was selected. The function | 1282 | Vertical scroll amount, in pixels. Normally, this is 0. |
| 913 | @code{get-lru-window} uses this field. | 1283 | |
| 1284 | @item dedicated | ||
| 1285 | Non-@code{nil} if this window is dedicated to its buffer. | ||
| 914 | 1286 | ||
| 915 | @item display_table | 1287 | @item display_table |
| 916 | The window's display table, or @code{nil} if none is specified for it. | 1288 | The window's display table, or @code{nil} if none is specified for it. |
| @@ -930,6 +1302,16 @@ The position in the buffer for which the line number is known, or | |||
| 930 | If the region (or part of it) is highlighted in this window, this field | 1302 | If the region (or part of it) is highlighted in this window, this field |
| 931 | holds the mark position that made one end of that region. Otherwise, | 1303 | holds the mark position that made one end of that region. Otherwise, |
| 932 | this field is @code{nil}. | 1304 | this field is @code{nil}. |
| 1305 | |||
| 1306 | @item column_number_displayed | ||
| 1307 | The column number currently displayed in this window's mode line, or @code{nil} | ||
| 1308 | if column numbers are not being displayed. | ||
| 1309 | |||
| 1310 | @item current_matrix | ||
| 1311 | A glyph matrix describing the current display of this window. | ||
| 1312 | |||
| 1313 | @item desired_matrix | ||
| 1314 | A glyph matrix describing the desired display of this window. | ||
| 933 | @end table | 1315 | @end table |
| 934 | 1316 | ||
| 935 | @node Process Internals | 1317 | @node Process Internals |
| @@ -1005,4 +1387,26 @@ some systems, there is no need to record this, so the value is | |||
| 1005 | @item tty_name | 1387 | @item tty_name |
| 1006 | The name of the terminal that the subprocess is using, | 1388 | The name of the terminal that the subprocess is using, |
| 1007 | or @code{nil} if it is using pipes. | 1389 | or @code{nil} if it is using pipes. |
| 1390 | |||
| 1391 | @item decode_coding_system | ||
| 1392 | Coding-system for decoding the input from this process. | ||
| 1393 | |||
| 1394 | @item decoding_buf | ||
| 1395 | A working buffer for decoding. | ||
| 1396 | |||
| 1397 | @item decoding_carryover | ||
| 1398 | Size of carryover in decoding. | ||
| 1399 | |||
| 1400 | @item encode_coding_system | ||
| 1401 | Coding-system for encoding the output to this process. | ||
| 1402 | |||
| 1403 | @item encoding_buf | ||
| 1404 | A working buffer for enecoding. | ||
| 1405 | |||
| 1406 | @item encoding_carryover | ||
| 1407 | Size of carryover in encoding. | ||
| 1408 | |||
| 1409 | @item inherit_coding_system_flag | ||
| 1410 | Flag to set @code{coding-system} of the process buffer from the | ||
| 1411 | coding system used to decode process output. | ||
| 1008 | @end table | 1412 | @end table |