Mercurial > emacs
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 |