comparison lispref/internals.texi @ 26165:cdd1c350aae9

Patches from rms.
author Gerd Moellmann <gerd@gnu.org>
date Mon, 25 Oct 1999 11:06:44 +0000
parents 467b88fab665
children cec11102bd84
comparison
equal deleted inserted replaced
26164:d39ec0a27081 26165:cdd1c350aae9
62 use it. This takes a substantial time, but since you need to start 62 use it. This takes a substantial time, but since you need to start
63 Emacs once a day at most---or once a week if you never log out---the 63 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
77 variables) in the file @file{etc/DOC} where they are stored, by calling 83 variables) in the file @file{etc/DOC} where they are stored, by calling
78 @code{Snarf-documentation} (@pxref{Accessing Documentation}). 84 @code{Snarf-documentation} (@pxref{Accessing Documentation}).
206 When marking is finished, all objects still unmarked are garbage. No 212 When marking is finished, all objects still unmarked are garbage. No
207 matter what the Lisp program or the user does, it is impossible to refer 213 matter what the Lisp program or the user does, it is impossible to refer
208 to them, since there is no longer a way to reach them. Their space 214 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.
217
218 ??? Maybe add something describing weak hash tables here?
211 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
215 the accessible strings so they occupy fewer 8k blocks; then it frees the 223 the accessible strings so they occupy fewer 8k blocks; then it frees the
431 Lisp_Object args_left; 439 Lisp_Object args_left;
432 struct gcpro gcpro1; 440 struct gcpro gcpro1;
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;
440 GCPRO1 (args_left); 448 GCPRO1 (args_left);
441 @end group 449 @end group
442 450
443 @group 451 @group
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
455 UNGCPRO; 463 UNGCPRO;
456 return val; 464 return val;
724 732
725 Buffers contain fields not directly accessible by the Lisp programmer. 733 Buffers contain fields not directly accessible by the Lisp programmer.
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
733 749 @item got
734 @item save_modified 750 This holds the character position of the gap in the buffer.
735 This field contains the time when the buffer was last saved, as an integer. 751
736 @xref{Buffer Modification}. 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.
800
801 @item intervals
802 Contains the interval tree which records the text properties of this
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
740 set when the file is written or read. Before writing the buffer into a 862 set when the file is written or read. Before writing the buffer into a
741 file, this field is compared to the modification time of the file to see 863 file, this field is compared to the modification time of the file to see
742 if the file has changed on disk. @xref{Buffer Modification}. 864 if the file has changed on disk. @xref{Buffer Modification}.
743 865
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
755 This field contains the syntax table for the buffer. @xref{Syntax Tables}. 888 The buffer name is a string that names the buffer. It is guaranteed to
756 889 be unique. @xref{Buffer Names}.
757 @item downcase_table 890
758 This field contains the conversion table for converting text to lower case. 891 @item filename
759 @xref{Case Tables}. 892 The name of the file visited in this buffer, or @code{nil}.
760 893
761 @item upcase_table 894 @item directory
762 This field contains the conversion table for converting text to upper case. 895 The directory for expanding relative file names.
763 @xref{Case Tables}. 896
764 897 @item save_length
765 @item case_canon_table 898 Length of the file this buffer is visiting, when last read or saved.
766 This field contains the conversion table for canonicalizing text for 899 This and other fields concerned with saving are not kept in the
767 case-folding search. @xref{Case Tables}. 900 @code{buffer_text} structure because indirect buffers are never saved.
768 901
769 @item case_eqv_table 902 @item auto_save_file_name
770 This field contains the equivalence table for case-folding search. 903 File name used for auto-saving this buffer. This is not in the
771 @xref{Case Tables}. 904 @code{buffer_text} because it's not used in indirect buffers at all.
772 905
773 @item display_table 906 @item read_only
774 This field contains the buffer's display table, or @code{nil} if it doesn't 907 Non-@code{nil} means this buffer is read-only.
775 have one. @xref{Display Tables}.
776
777 @item markers
778 This field contains the chain of all markers that currently point into
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
783 @item backed_up
784 This field is a flag that tells whether a backup file has been made
785 for the visited file of this buffer.
786 908
787 @item mark 909 @item mark
788 This field contains the mark for the buffer. The mark is a marker, 910 This field contains the mark for the buffer. The mark is a marker,
789 hence it is also included on the list @code{markers}. @xref{The Mark}. 911 hence it is also included on the list @code{markers}. @xref{The Mark}.
790
791 @item mark_active
792 This field is non-@code{nil} if the buffer's mark is active.
793 912
794 @item local_var_alist 913 @item local_var_alist
795 This field contains the association list describing the buffer-local 914 This field contains the association list describing the buffer-local
796 variable bindings of this buffer, not including the built-in 915 variable bindings of this buffer, not including the built-in
797 buffer-local bindings that have special slots in the buffer object. 916 buffer-local bindings that have special slots in the buffer object.
798 (Those slots are omitted from this table.) @xref{Buffer-Local 917 (Those slots are omitted from this table.) @xref{Buffer-Local
799 Variables}. 918 Variables}.
800 919
801 @item base_buffer 920 @item major_mode
802 This field holds the buffer's base buffer (if it is an indirect buffer), 921 Symbol naming the major mode of this buffer, e.g., @code{lisp-mode}.
803 or @code{nil}. 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.
804 933
805 @item keymap 934 @item keymap
806 This field holds the buffer's local keymap. @xref{Keymaps}. 935 This field holds the buffer's local keymap. @xref{Keymaps}.
807 936
808 @item overlay_center 937 @item abbrev_table
809 This field holds the current overlay center position. @xref{Overlays}. 938 This buffer's local abbrevs.
939
940 @item syntax_table
941 This field contains the syntax table for the buffer. @xref{Syntax Tables}.
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
961 @item downcase_table
962 This field contains the conversion table for converting text to lower case.
963 @xref{Case Tables}.
964
965 @item upcase_table
966 This field contains the conversion table for converting text to upper case.
967 @xref{Case Tables}.
968
969 @item case_canon_table
970 This field contains the conversion table for canonicalizing text for
971 case-folding search. @xref{Case Tables}.
972
973 @item case_eqv_table
974 This field contains the equivalence table for case-folding search.
975 @xref{Case Tables}.
976
977 @item truncate_lines
978 The value of @code{truncate-lines} in this buffer.
979
980 @item ctl_arrow
981 The value of @code{ctl-arrow} in this buffer.
982
983 @item selective_display
984 The value of @code{selective-display} in this buffer.
985
986 @item selective_display_ellipsis
987 The value of @code{selective-display-ellipsis} in this buffer.
988
989 @item minor_modes
990 An alist of the minor modes of this buffer.
991
992 @item overwrite_mode
993 The value of @code{overwrite_mode} in this buffer.
994
995 @item abbrev_mode
996 The value of @code{abbrev-mode} in this buffer.
997
998 @item display_table
999 This field contains the buffer's display table, or @code{nil} if it doesn't
1000 have one. @xref{Display Tables}.
1001
1002 @item save_modified
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
813 before the current overlay center position. They are sorted in order of 1011 before the current overlay center position. They are sorted in order of
814 decreasing end position. 1012 decreasing end position.
816 @item overlays_after 1014 @item overlays_after
817 This field holds a list of the overlays in this buffer that end after 1015 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
827 @appendixsubsec Window Internals 1082 @appendixsubsec Window Internals
828 @cindex internals, of window 1083 @cindex internals, of window
835 The frame that this window is on. 1090 The frame that this window is on.
836 1091
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
852 @item start
853 The position in the buffer that is the first character to be displayed
854 in the window.
855 1151
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
859 redisplay does if point is off the screen: instead of scrolling the 1155 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}.) 1205
878 1206 @item left_margin_width
879 @item height 1207 The width of the left margin in this window, or @code{nil} not to
880 The height of the window, measured in lines. 1208 specify it (in which case the buffer's value of @code{left-margin-width}
881 1209 is used.
882 @item width 1210
883 The width of the window, measured in columns. This width includes the 1211 @item right_margin_width
884 scroll bar and fringes, and/or the separator line on the right of the 1212 Likewise for the right margin.
885 window (if any). 1213
886 1214 @begin ignore
887 @item next 1215 @item last_mark_x
888 This is the window that is the next in the chain of siblings. It is 1216 @item last_mark_y
889 @code{nil} in a window that is the rightmost or bottommost of a group of 1217 ???Not used.
890 siblings. 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 1227
900 to a window's parent. 1228 @item window_end_vpos
901 1229 The window-relative vertical position of the line containing
902 Parent windows do not display buffers, and play little role in display 1230 @code{window_end_pos}.
903 except to shape their child windows. Emacs Lisp programs usually have 1231
904 no access to the parent windows; they operate on the windows at the 1232 @item window_end_valid
905 leaves of the tree, which actually display buffers. 1233 This field is set to a non-@code{nil} value if @code{window_end_pos} is truly
906 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.
917 1289
918 @item update_mode_line 1290 @item update_mode_line
928 1300
929 @item region_showing 1301 @item region_showing
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
936 @appendixsubsec Process Internals 1318 @appendixsubsec Process Internals
937 @cindex internals, of process 1319 @cindex internals, of process
1003 @code{nil}.) 1385 @code{nil}.)
1004 1386
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