diff options
| author | Gerd Moellmann | 2000-04-10 13:35:34 +0000 |
|---|---|---|
| committer | Gerd Moellmann | 2000-04-10 13:35:34 +0000 |
| commit | 86b5834669d941bb8a40192f74c39f75eb63423e (patch) | |
| tree | 2e2ab5e34a18c3a2347a0e83c2aa1b145b07ea50 | |
| parent | 01fae1df89555e7cc9f68366f0c667808387f10f (diff) | |
| download | emacs-86b5834669d941bb8a40192f74c39f75eb63423e.tar.gz emacs-86b5834669d941bb8a40192f74c39f75eb63423e.zip | |
(ebrowse-read): Skip forward over white
space before testing for end of buffer.
(ebrowse-load): Removed.
(ebrowse-revert-tree-buffer-from-file): Rewritten.
(ebrowse-create-tree-buffer): Rewritten.
(ebrowse-tree-mode): Read tree from buffer.
| -rw-r--r-- | lisp/progmodes/ebrowse.el | 145 |
1 files changed, 59 insertions, 86 deletions
diff --git a/lisp/progmodes/ebrowse.el b/lisp/progmodes/ebrowse.el index e28fb67747e..478b9a07184 100644 --- a/lisp/progmodes/ebrowse.el +++ b/lisp/progmodes/ebrowse.el | |||
| @@ -916,7 +916,7 @@ and TREE is a list of `ebrowse-ts' structures forming the class tree." | |||
| 916 | ;; Read Lisp objects. Temporarily increase `gc-cons-threshold' to | 916 | ;; Read Lisp objects. Temporarily increase `gc-cons-threshold' to |
| 917 | ;; prevent a GC that would not free any memory. | 917 | ;; prevent a GC that would not free any memory. |
| 918 | (let ((gc-cons-threshold 2000000)) | 918 | (let ((gc-cons-threshold 2000000)) |
| 919 | (while (not (eobp)) | 919 | (while (not (progn (skip-chars-forward " \t\n\r") (eobp))) |
| 920 | (let* ((root (read (current-buffer))) | 920 | (let* ((root (read (current-buffer))) |
| 921 | (old-root (ebrowse-class-in-tree root tree))) | 921 | (old-root (ebrowse-class-in-tree root tree))) |
| 922 | (ebrowse-show-progress "Reading data" (null tree)) | 922 | (ebrowse-show-progress "Reading data" (null tree)) |
| @@ -927,89 +927,39 @@ and TREE is a list of `ebrowse-ts' structures forming the class tree." | |||
| 927 | (list header tree))) | 927 | (list header tree))) |
| 928 | 928 | ||
| 929 | 929 | ||
| 930 | ;;;###autoload | ||
| 931 | (defun ebrowse-load (file &optional switch) | ||
| 932 | "Load an Ebrowse file FILE into memory and make a tree buffer. | ||
| 933 | Optional SWITCH non-nil means switch to the tree buffer afterwards. | ||
| 934 | This function is normally called from a `find-file-hook'. | ||
| 935 | Value is the tree buffer created." | ||
| 936 | (let (tree | ||
| 937 | header | ||
| 938 | (buffer (get-file-buffer file)) | ||
| 939 | tree-buffer) | ||
| 940 | (if buffer | ||
| 941 | (multiple-value-setq (header tree) | ||
| 942 | (ebrowse-read)) | ||
| 943 | (save-excursion | ||
| 944 | ;; Since find-file hooks may be involved, we must visit the | ||
| 945 | ;; file in a way that these hooks are not called. | ||
| 946 | (set-buffer (create-file-buffer file)) | ||
| 947 | (erase-buffer) | ||
| 948 | (insert-file file) | ||
| 949 | (set-buffer-modified-p nil) | ||
| 950 | (unwind-protect | ||
| 951 | (multiple-value-setq (header tree) | ||
| 952 | (ebrowse-read)) | ||
| 953 | (kill-buffer (current-buffer))))) | ||
| 954 | (when tree | ||
| 955 | (message "Sorting. Please be patient...") | ||
| 956 | (setf tree (ebrowse-sort-tree-list tree)) | ||
| 957 | ;; Create tree buffer | ||
| 958 | (setf tree-buffer | ||
| 959 | (ebrowse-create-tree-buffer tree file header | ||
| 960 | (ebrowse-build-tree-obarray tree) | ||
| 961 | switch buffer)) | ||
| 962 | (message nil) | ||
| 963 | tree-buffer))) | ||
| 964 | |||
| 965 | |||
| 966 | (defun ebrowse-revert-tree-buffer-from-file (ignore-auto-save noconfirm) | 930 | (defun ebrowse-revert-tree-buffer-from-file (ignore-auto-save noconfirm) |
| 967 | "Function installed as `revert-buffer-function' in tree buffers. | 931 | "Function installed as `revert-buffer-function' in tree buffers. |
| 968 | See that variable's documentation for the meaning of IGNORE-AUTO-SAVE and | 932 | See that variable's documentation for the meaning of IGNORE-AUTO-SAVE and |
| 969 | NOCONFIRM." | 933 | NOCONFIRM." |
| 970 | (interactive) | 934 | (when (or noconfirm (yes-or-no-p "Revert tree from disk? ")) |
| 971 | (when (or noconfirm | 935 | (loop for member-buffer in (ebrowse-same-tree-member-buffer-list) |
| 972 | (yes-or-no-p "Revert tree from disk? ")) | 936 | do (kill-buffer member-buffer)) |
| 973 | (let ((ebrowse-file (or buffer-file-name ebrowse--tags-file-name))) | 937 | (erase-buffer) |
| 974 | (loop for member-buffer in (ebrowse-same-tree-member-buffer-list) | 938 | (insert-file (or buffer-file-name ebrowse--tags-file-name)) |
| 975 | do (kill-buffer member-buffer)) | 939 | (ebrowse-tree-mode) |
| 976 | (kill-buffer (current-buffer)) | 940 | (current-buffer))) |
| 977 | (switch-to-buffer (ebrowse-load ebrowse-file))))) | ||
| 978 | |||
| 979 | 941 | ||
| 980 | (defun ebrowse-create-tree-buffer (tree tags-file header obarray pop | 942 | |
| 981 | &optional find-file-buffer) | 943 | (defun ebrowse-create-tree-buffer (tree tags-file header obarray pop) |
| 982 | "Create a new tree buffer for tree TREE. | 944 | "Create a new tree buffer for tree TREE. |
| 983 | The tree was loaded from file TAGS-FILE. | 945 | The tree was loaded from file TAGS-FILE. |
| 984 | HEADER is the header structure of the file. | 946 | HEADER is the header structure of the file. |
| 985 | OBARRAY is an obarray with a symbol for each class in the tree. | 947 | OBARRAY is an obarray with a symbol for each class in the tree. |
| 986 | POP non-nil means popup the buffer up at the end. | 948 | POP non-nil means popup the buffer up at the end. |
| 987 | FIND-FILE-BUFFER, if non-nil, is the buffer from which the Lisp data | ||
| 988 | was read. | ||
| 989 | Return the buffer created." | 949 | Return the buffer created." |
| 990 | (let (name) | 950 | (let ((name ebrowse-tree-buffer-name)) |
| 991 | (cond (find-file-buffer | 951 | (set-buffer (get-buffer-create name)) |
| 992 | (set-buffer find-file-buffer) | ||
| 993 | (erase-buffer) | ||
| 994 | (setq name (ebrowse-frozen-tree-buffer-name tags-file)) | ||
| 995 | (ebrowse-rename-buffer name)) | ||
| 996 | (t | ||
| 997 | (setq name ebrowse-tree-buffer-name) | ||
| 998 | (set-buffer (get-buffer-create name)))) | ||
| 999 | ;; Switch to tree mode and initialize buffer local variables. | ||
| 1000 | (ebrowse-tree-mode) | 952 | (ebrowse-tree-mode) |
| 1001 | (setf ebrowse--tree tree | 953 | (setq ebrowse--tree tree |
| 1002 | ebrowse--tags-file-name tags-file | 954 | ebrowse--tags-file-name tags-file |
| 1003 | ebrowse--tree-obarray obarray | 955 | ebrowse--tree-obarray obarray |
| 1004 | ebrowse--header header | 956 | ebrowse--header header |
| 1005 | ebrowse--frozen-flag (not (null find-file-buffer))) | 957 | ebrowse--frozen-flag nil) |
| 1006 | ;; Switch or pop to the tree buffer; display the tree and return the | ||
| 1007 | ;; buffer. | ||
| 1008 | (case pop | ||
| 1009 | (switch (switch-to-buffer name)) | ||
| 1010 | (pop (pop-to-buffer name))) | ||
| 1011 | (ebrowse-redraw-tree) | 958 | (ebrowse-redraw-tree) |
| 1012 | (set-buffer-modified-p nil) | 959 | (set-buffer-modified-p nil) |
| 960 | (case pop | ||
| 961 | (switch (switch-to-buffer name)) | ||
| 962 | (pop (pop-to-buffer name))) | ||
| 1013 | (current-buffer))) | 963 | (current-buffer))) |
| 1014 | 964 | ||
| 1015 | 965 | ||
| @@ -1177,22 +1127,35 @@ E.g.\\[save-buffer] writes the tree to the file it was loaded from. | |||
| 1177 | 1127 | ||
| 1178 | Tree mode key bindings: | 1128 | Tree mode key bindings: |
| 1179 | \\{ebrowse-tree-mode-map}" | 1129 | \\{ebrowse-tree-mode-map}" |
| 1180 | (kill-all-local-variables) | 1130 | (interactive) |
| 1181 | (mapcar 'make-local-variable | ||
| 1182 | '(ebrowse--tags-file-name | ||
| 1183 | ebrowse--indentation | ||
| 1184 | ebrowse--tree | ||
| 1185 | ebrowse--header | ||
| 1186 | ebrowse--show-file-names-flag | ||
| 1187 | ebrowse--frozen-flag | ||
| 1188 | ebrowse--tree-obarray | ||
| 1189 | ebrowse--mode-strings | ||
| 1190 | revert-buffer-function)) | ||
| 1191 | (use-local-map ebrowse-tree-mode-map) | ||
| 1192 | (let* ((props (text-properties-at | 1131 | (let* ((props (text-properties-at |
| 1193 | 0 | 1132 | 0 |
| 1194 | (car (default-value 'mode-line-buffer-identification)))) | 1133 | (car (default-value 'mode-line-buffer-identification)))) |
| 1195 | (ident (apply #'propertize "C++ Tree" props))) | 1134 | (ident (apply #'propertize "C++ Tree" props)) |
| 1135 | header tree buffer-read-only) | ||
| 1136 | |||
| 1137 | (kill-all-local-variables) | ||
| 1138 | (use-local-map ebrowse-tree-mode-map) | ||
| 1139 | |||
| 1140 | (unless (zerop (buffer-size)) | ||
| 1141 | (goto-char (point-min)) | ||
| 1142 | (multiple-value-setq (header tree) (ebrowse-read)) | ||
| 1143 | (message "Sorting. Please be patient...") | ||
| 1144 | (setq tree (ebrowse-sort-tree-list tree)) | ||
| 1145 | (erase-buffer) | ||
| 1146 | (message nil)) | ||
| 1147 | |||
| 1148 | (mapcar 'make-local-variable | ||
| 1149 | '(ebrowse--tags-file-name | ||
| 1150 | ebrowse--indentation | ||
| 1151 | ebrowse--tree | ||
| 1152 | ebrowse--header | ||
| 1153 | ebrowse--show-file-names-flag | ||
| 1154 | ebrowse--frozen-flag | ||
| 1155 | ebrowse--tree-obarray | ||
| 1156 | ebrowse--mode-strings | ||
| 1157 | revert-buffer-function)) | ||
| 1158 | |||
| 1196 | (setf ebrowse--show-file-names-flag nil | 1159 | (setf ebrowse--show-file-names-flag nil |
| 1197 | ebrowse--tree-obarray (make-vector 127 0) | 1160 | ebrowse--tree-obarray (make-vector 127 0) |
| 1198 | ebrowse--frozen-flag nil | 1161 | ebrowse--frozen-flag nil |
| @@ -1202,10 +1165,20 @@ Tree mode key bindings: | |||
| 1202 | buffer-read-only t | 1165 | buffer-read-only t |
| 1203 | selective-display t | 1166 | selective-display t |
| 1204 | selective-display-ellipses t | 1167 | selective-display-ellipses t |
| 1205 | revert-buffer-function 'ebrowse-revert-tree-buffer-from-file)) | 1168 | revert-buffer-function 'ebrowse-revert-tree-buffer-from-file |
| 1206 | (add-hook 'local-write-file-hooks 'ebrowse-write-file-hook-fn) | 1169 | ebrowse--header header |
| 1207 | (modify-syntax-entry ?_ (char-to-string (char-syntax ?a))) | 1170 | ebrowse--tree tree |
| 1208 | (run-hooks 'ebrowse-tree-mode-hook)) | 1171 | ebrowse--tags-file-name (buffer-file-name) |
| 1172 | ebrowse--tree-obarray (and tree (ebrowse-build-tree-obarray tree)) | ||
| 1173 | ebrowse--frozen-flag nil) | ||
| 1174 | |||
| 1175 | (add-hook 'local-write-file-hooks 'ebrowse-write-file-hook-fn) | ||
| 1176 | (modify-syntax-entry ?_ (char-to-string (char-syntax ?a))) | ||
| 1177 | (when tree | ||
| 1178 | (ebrowse-redraw-tree) | ||
| 1179 | (set-buffer-modified-p nil)) | ||
| 1180 | (run-hooks 'ebrowse-tree-mode-hook))) | ||
| 1181 | |||
| 1209 | 1182 | ||
| 1210 | 1183 | ||
| 1211 | (defun ebrowse-update-tree-buffer-mode-line () | 1184 | (defun ebrowse-update-tree-buffer-mode-line () |