aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
authorKaroly Lorentey2005-06-15 12:57:51 +0000
committerKaroly Lorentey2005-06-15 12:57:51 +0000
commitef85512e51f043d73788f00a2aed13cccde0682c (patch)
treefc1fa1378533250f260ef8eaa9a84ae882d9df84 /lisp/emacs-lisp
parent8736257554f49445f7b4402ac7a9436b38ce6452 (diff)
parentef88a9999004e6c26148c8d280d6a41f623d7249 (diff)
downloademacs-ef85512e51f043d73788f00a2aed13cccde0682c.tar.gz
emacs-ef85512e51f043d73788f00a2aed13cccde0682c.zip
Merged from miles@gnu.org--gnu-2005 (patch 80-82, 350-422)
Patches applied: * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-350 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-351 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-352 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-353 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-354 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-355 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-356 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-357 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-358 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-359 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-360 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-361 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-362 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-363 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-364 Remove "-face" suffix from widget faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-365 Remove "-face" suffix from custom faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-366 Remove "-face" suffix from change-log faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-367 Remove "-face" suffix from compilation faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-368 Remove "-face" suffix from diff-mode faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-369 lisp/longlines.el (longlines-visible-face): Face removed * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-370 Remove "-face" suffix from woman faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-371 Remove "-face" suffix from whitespace-highlight face * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-372 Remove "-face" suffix from ruler-mode faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-373 Remove "-face" suffix from show-paren faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-374 Remove "-face" suffix from log-view faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-375 Remove "-face" suffix from smerge faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-376 Remove "-face" suffix from show-tabs faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-377 Remove "-face" suffix from highlight-changes faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-378 Remove "-face" suffix from and downcase info faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-379 Remove "-face" suffix from pcvs faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-380 Update uses of renamed pcvs faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-381 Tweak ChangeLog * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-382 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-383 Remove "-face" suffix from strokes-char face * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-384 Remove "-face" suffix from compare-windows face * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-385 Remove "-face" suffix from calendar faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-386 Remove "-face" suffix from diary-button face * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-387 Remove "-face" suffix from testcover faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-388 Remove "-face" suffix from viper faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-389 Remove "-face" suffix from org faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-390 Remove "-face" suffix from sgml-namespace face * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-391 Remove "-face" suffix from table-cell face * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-392 Remove "-face" suffix from tex-mode faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-393 Remove "-face" suffix from texinfo-heading face * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-394 Remove "-face" suffix from flyspell faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-395 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-396 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-397 Remove "-face" suffix from gomoku faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-398 Remove "-face" suffix from mpuz faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-399 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-400 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-401 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-402 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-403 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-404 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-405 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-406 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-407 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-408 Remove "-face" suffix from Buffer-menu-buffer face * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-409 Remove "-face" suffix from antlr-mode faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-410 Remove "-face" suffix from ebrowse faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-411 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-412 Remove "-face" suffix from flymake faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-413 Remove "-face" suffix from idlwave faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-414 Remove "-face" suffix from sh-script faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-415 Remove "-face" suffix from vhdl-mode faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-416 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-417 Remove "-face" suffix from which-func face * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-418 Remove "-face" suffix from cperl-mode faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-419 Remove "-face" suffix from ld-script faces * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-420 Fix cperl-mode font-lock problem * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-421 Tweak which-func face * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-422 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-80 Merge from emacs--cvs-trunk--0 * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-81 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-82 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-350
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r--lisp/emacs-lisp/bindat.el7
-rw-r--r--lisp/emacs-lisp/byte-run.el46
-rw-r--r--lisp/emacs-lisp/debug.el82
-rw-r--r--lisp/emacs-lisp/derived.el10
-rw-r--r--lisp/emacs-lisp/easy-mmode.el81
-rw-r--r--lisp/emacs-lisp/edebug.el43
-rw-r--r--lisp/emacs-lisp/ewoc.el36
-rw-r--r--lisp/emacs-lisp/lisp-mode.el3
-rw-r--r--lisp/emacs-lisp/testcover.el18
9 files changed, 205 insertions, 121 deletions
diff --git a/lisp/emacs-lisp/bindat.el b/lisp/emacs-lisp/bindat.el
index d8b4b4f6c19..7ed01e4bdea 100644
--- a/lisp/emacs-lisp/bindat.el
+++ b/lisp/emacs-lisp/bindat.el
@@ -85,7 +85,7 @@
85;; (items u8) 85;; (items u8)
86;; (fill 3) 86;; (fill 3)
87;; (item repeat (items) 87;; (item repeat (items)
88;; ((struct data-spec))))) 88;; (struct data-spec))))
89;; 89;;
90;; 90;;
91;; A binary data representation may look like 91;; A binary data representation may look like
@@ -131,7 +131,7 @@
131;; | ( [FIELD] align LEN ) -- skip to next multiple of LEN bytes 131;; | ( [FIELD] align LEN ) -- skip to next multiple of LEN bytes
132;; | ( [FIELD] struct SPEC_NAME ) 132;; | ( [FIELD] struct SPEC_NAME )
133;; | ( [FIELD] union TAG_VAL (TAG SPEC)... [(t SPEC)] ) 133;; | ( [FIELD] union TAG_VAL (TAG SPEC)... [(t SPEC)] )
134;; | ( [FIELD] repeat COUNT SPEC ) 134;; | ( [FIELD] repeat COUNT ITEM... )
135 135
136;; -- In (eval EXPR), the value of the last field is available in 136;; -- In (eval EXPR), the value of the last field is available in
137;; the dynamically bound variable `last'. 137;; the dynamically bound variable `last'.
@@ -151,7 +151,8 @@
151;; -- Note: 32 bit values may be limited by emacs' INTEGER 151;; -- Note: 32 bit values may be limited by emacs' INTEGER
152;; implementation limits. 152;; implementation limits.
153;; 153;;
154;; -- Example: bits 2 will map bytes 0x1c 0x28 to list (2 3 7 11 13) 154;; -- Example: `bits 2' will unpack 0x28 0x1c to (2 3 4 11 13)
155;; and 0x1c 0x28 to (3 5 10 11 12).
155 156
156;; FIELD ::= ( eval EXPR ) -- use result as NAME 157;; FIELD ::= ( eval EXPR ) -- use result as NAME
157;; | NAME 158;; | NAME
diff --git a/lisp/emacs-lisp/byte-run.el b/lisp/emacs-lisp/byte-run.el
index 7fc01901cfe..d3def79c8fb 100644
--- a/lisp/emacs-lisp/byte-run.el
+++ b/lisp/emacs-lisp/byte-run.el
@@ -100,23 +100,23 @@ The return value of this function is not used."
100 (eval-and-compile 100 (eval-and-compile
101 (put ',name 'byte-optimizer 'byte-compile-inline-expand)))) 101 (put ',name 'byte-optimizer 'byte-compile-inline-expand))))
102 102
103(defun make-obsolete (function new &optional when) 103(defun make-obsolete (obsolete-name current-name &optional when)
104 "Make the byte-compiler warn that FUNCTION is obsolete. 104 "Make the byte-compiler warn that OBSOLETE-NAME is obsolete.
105The warning will say that NEW should be used instead. 105The warning will say that CURRENT-NAME should be used instead.
106If NEW is a string, that is the `use instead' message. 106If CURRENT-NAME is a string, that is the `use instead' message.
107If provided, WHEN should be a string indicating when the function 107If provided, WHEN should be a string indicating when the function
108was first made obsolete, for example a date or a release number." 108was first made obsolete, for example a date or a release number."
109 (interactive "aMake function obsolete: \nxObsoletion replacement: ") 109 (interactive "aMake function obsolete: \nxObsoletion replacement: ")
110 (let ((handler (get function 'byte-compile))) 110 (let ((handler (get obsolete-name 'byte-compile)))
111 (if (eq 'byte-compile-obsolete handler) 111 (if (eq 'byte-compile-obsolete handler)
112 (setq handler (nth 1 (get function 'byte-obsolete-info))) 112 (setq handler (nth 1 (get obsolete-name 'byte-obsolete-info)))
113 (put function 'byte-compile 'byte-compile-obsolete)) 113 (put obsolete-name 'byte-compile 'byte-compile-obsolete))
114 (put function 'byte-obsolete-info (list new handler when))) 114 (put obsolete-name 'byte-obsolete-info (list current-name handler when)))
115 function) 115 obsolete-name)
116 116
117(defmacro define-obsolete-function-alias (function new 117(defmacro define-obsolete-function-alias (obsolete-name current-name
118 &optional when docstring) 118 &optional when docstring)
119 "Set FUNCTION's function definition to NEW and mark it obsolete. 119 "Set OBSOLETE-NAME's function definition to CURRENT-NAME and mark it obsolete.
120 120
121\(define-obsolete-function-alias 'old-fun 'new-fun \"22.1\" \"old-fun's doc.\") 121\(define-obsolete-function-alias 'old-fun 'new-fun \"22.1\" \"old-fun's doc.\")
122 122
@@ -127,13 +127,13 @@ is equivalent to the following two lines of code:
127 127
128See the docstrings of `defalias' and `make-obsolete' for more details." 128See the docstrings of `defalias' and `make-obsolete' for more details."
129 `(progn 129 `(progn
130 (defalias ,function ,new ,docstring) 130 (defalias ,obsolete-name ,current-name ,docstring)
131 (make-obsolete ,function ,new ,when))) 131 (make-obsolete ,obsolete-name ,current-name ,when)))
132 132
133(defun make-obsolete-variable (variable new &optional when) 133(defun make-obsolete-variable (obsolete-name current-name &optional when)
134 "Make the byte-compiler warn that VARIABLE is obsolete. 134 "Make the byte-compiler warn that OBSOLETE-NAME is obsolete.
135The warning will say that NEW should be used instead. 135The warning will say that CURRENT-NAME should be used instead.
136If NEW is a string, that is the `use instead' message. 136If CURRENT-NAME is a string, that is the `use instead' message.
137If provided, WHEN should be a string indicating when the variable 137If provided, WHEN should be a string indicating when the variable
138was first made obsolete, for example a date or a release number." 138was first made obsolete, for example a date or a release number."
139 (interactive 139 (interactive
@@ -142,12 +142,12 @@ was first made obsolete, for example a date or a release number."
142 (if (equal str "") (error "")) 142 (if (equal str "") (error ""))
143 (intern str)) 143 (intern str))
144 (car (read-from-string (read-string "Obsoletion replacement: "))))) 144 (car (read-from-string (read-string "Obsoletion replacement: ")))))
145 (put variable 'byte-obsolete-variable (cons new when)) 145 (put obsolete-name 'byte-obsolete-variable (cons current-name when))
146 variable) 146 obsolete-name)
147 147
148(defmacro define-obsolete-variable-alias (variable new 148(defmacro define-obsolete-variable-alias (obsolete-name current-name
149 &optional when docstring) 149 &optional when docstring)
150 "Make VARIABLE a variable alias for NEW and mark it obsolete. 150 "Make OBSOLETE-NAME a variable alias for CURRENT-NAME and mark it obsolete.
151 151
152\(define-obsolete-variable-alias 'old-var 'new-var \"22.1\" \"old-var's doc.\") 152\(define-obsolete-variable-alias 'old-var 'new-var \"22.1\" \"old-var's doc.\")
153 153
@@ -159,8 +159,8 @@ is equivalent to the following two lines of code:
159See the docstrings of `defvaralias' and `make-obsolete-variable' or 159See the docstrings of `defvaralias' and `make-obsolete-variable' or
160Info node `(elisp)Variable Aliases' for more details." 160Info node `(elisp)Variable Aliases' for more details."
161 `(progn 161 `(progn
162 (defvaralias ,variable ,new ,docstring) 162 (defvaralias ,obsolete-name ,current-name ,docstring)
163 (make-obsolete-variable ,variable ,new ,when))) 163 (make-obsolete-variable ,obsolete-name ,current-name ,when)))
164 164
165(defmacro dont-compile (&rest body) 165(defmacro dont-compile (&rest body)
166 "Like `progn', but the body always runs interpreted (not compiled). 166 "Like `progn', but the body always runs interpreted (not compiled).
diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el
index 2149cba8720..0ee67355bf4 100644
--- a/lisp/emacs-lisp/debug.el
+++ b/lisp/emacs-lisp/debug.el
@@ -88,6 +88,8 @@ This is to optimize `debugger-make-xrefs'.")
88(defvar debugger-outer-standard-output) 88(defvar debugger-outer-standard-output)
89(defvar debugger-outer-inhibit-redisplay) 89(defvar debugger-outer-inhibit-redisplay)
90(defvar debugger-outer-cursor-in-echo-area) 90(defvar debugger-outer-cursor-in-echo-area)
91(defvar debugger-will-be-back nil
92 "Non-nil if we expect to get back in the debugger soon.")
91 93
92(defvar inhibit-debug-on-entry nil 94(defvar inhibit-debug-on-entry nil
93 "Non-nil means that debug-on-entry is disabled.") 95 "Non-nil means that debug-on-entry is disabled.")
@@ -97,6 +99,8 @@ This is to optimize `debugger-make-xrefs'.")
97This variable is used by `debugger-jump', `debugger-step-through', 99This variable is used by `debugger-jump', `debugger-step-through',
98and `debugger-reenable' to temporarily disable debug-on-entry.") 100and `debugger-reenable' to temporarily disable debug-on-entry.")
99 101
102(defvar inhibit-trace) ;Not yet implemented.
103
100;;;###autoload 104;;;###autoload
101(setq debugger 'debug) 105(setq debugger 'debug)
102;;;###autoload 106;;;###autoload
@@ -121,6 +125,7 @@ first will be printed into the backtrace buffer."
121 (get-buffer-create "*Backtrace*"))) 125 (get-buffer-create "*Backtrace*")))
122 (debugger-old-buffer (current-buffer)) 126 (debugger-old-buffer (current-buffer))
123 (debugger-step-after-exit nil) 127 (debugger-step-after-exit nil)
128 (debugger-will-be-back nil)
124 ;; Don't keep reading from an executing kbd macro! 129 ;; Don't keep reading from an executing kbd macro!
125 (executing-kbd-macro nil) 130 (executing-kbd-macro nil)
126 ;; Save the outer values of these vars for the `e' command 131 ;; Save the outer values of these vars for the `e' command
@@ -178,7 +183,7 @@ first will be printed into the backtrace buffer."
178 ;; Place an extra debug-on-exit for macro's. 183 ;; Place an extra debug-on-exit for macro's.
179 (when (eq 'lambda (car-safe (cadr (backtrace-frame 4)))) 184 (when (eq 'lambda (car-safe (cadr (backtrace-frame 4))))
180 (backtrace-debug 5 t))) 185 (backtrace-debug 5 t)))
181 (pop-to-buffer debugger-buffer) 186 (pop-to-buffer debugger-buffer)
182 (debugger-mode) 187 (debugger-mode)
183 (debugger-setup-buffer debugger-args) 188 (debugger-setup-buffer debugger-args)
184 (when noninteractive 189 (when noninteractive
@@ -210,12 +215,23 @@ first will be printed into the backtrace buffer."
210 ;; Still visible despite the save-window-excursion? Maybe it 215 ;; Still visible despite the save-window-excursion? Maybe it
211 ;; it's in a pop-up frame. It would be annoying to delete and 216 ;; it's in a pop-up frame. It would be annoying to delete and
212 ;; recreate it every time the debugger stops, so instead we'll 217 ;; recreate it every time the debugger stops, so instead we'll
213 ;; erase it and hide it but keep it alive. 218 ;; erase it (and maybe hide it) but keep it alive.
214 (with-current-buffer debugger-buffer 219 (with-current-buffer debugger-buffer
215 (erase-buffer) 220 (erase-buffer)
216 (fundamental-mode) 221 (fundamental-mode)
217 (with-selected-window (get-buffer-window debugger-buffer 0) 222 (with-selected-window (get-buffer-window debugger-buffer 0)
218 (bury-buffer))) 223 (when (and (window-dedicated-p (selected-window))
224 (not debugger-will-be-back))
225 ;; If the window is not dedicated, burying the buffer
226 ;; will mean that the frame created for it is left
227 ;; around showing some random buffer, and next time we
228 ;; pop to the debugger buffer we'll create yet
229 ;; another frame.
230 ;; If debugger-will-be-back is non-nil, the frame
231 ;; would need to be de-iconified anyway immediately
232 ;; after when we re-enter the debugger, so iconifying it
233 ;; here would cause flashing.
234 (bury-buffer))))
219 (kill-buffer debugger-buffer)) 235 (kill-buffer debugger-buffer))
220 (set-match-data debugger-outer-match-data))) 236 (set-match-data debugger-outer-match-data)))
221 ;; Put into effect the modified values of these variables 237 ;; Put into effect the modified values of these variables
@@ -307,7 +323,7 @@ That buffer should be current already."
307 (save-excursion 323 (save-excursion
308 (set-buffer (or buffer (current-buffer))) 324 (set-buffer (or buffer (current-buffer)))
309 (setq buffer (current-buffer)) 325 (setq buffer (current-buffer))
310 (let ((buffer-read-only nil) 326 (let ((inhibit-read-only t)
311 (old-end (point-min)) (new-end (point-min))) 327 (old-end (point-min)) (new-end (point-min)))
312 ;; If we saved an old backtrace, find the common part 328 ;; If we saved an old backtrace, find the common part
313 ;; between the new and the old. 329 ;; between the new and the old.
@@ -377,6 +393,7 @@ Enter another debugger on next entry to eval, apply or funcall."
377 (interactive) 393 (interactive)
378 (setq debugger-step-after-exit t) 394 (setq debugger-step-after-exit t)
379 (setq debugger-jumping-flag t) 395 (setq debugger-jumping-flag t)
396 (setq debugger-will-be-back t)
380 (add-hook 'post-command-hook 'debugger-reenable) 397 (add-hook 'post-command-hook 'debugger-reenable)
381 (message "Proceeding, will debug on next eval or call.") 398 (message "Proceeding, will debug on next eval or call.")
382 (exit-recursive-edit)) 399 (exit-recursive-edit))
@@ -387,6 +404,12 @@ Enter another debugger on next entry to eval, apply or funcall."
387 (unless debugger-may-continue 404 (unless debugger-may-continue
388 (error "Cannot continue")) 405 (error "Cannot continue"))
389 (message "Continuing.") 406 (message "Continuing.")
407 (save-excursion
408 ;; Check to see if we've flagged some frame for debug-on-exit, in which
409 ;; case we'll probably come back to the debugger soon.
410 (goto-char (point-min))
411 (if (re-search-forward "^\\* " nil t)
412 (setq debugger-will-be-back t)))
390 (exit-recursive-edit)) 413 (exit-recursive-edit))
391 414
392(defun debugger-return-value (val) 415(defun debugger-return-value (val)
@@ -397,6 +420,12 @@ will be used, such as in a debug on exit from a frame."
397 (setq debugger-value val) 420 (setq debugger-value val)
398 (princ "Returning " t) 421 (princ "Returning " t)
399 (prin1 debugger-value) 422 (prin1 debugger-value)
423 (save-excursion
424 ;; Check to see if we've flagged some frame for debug-on-exit, in which
425 ;; case we'll probably come back to the debugger soon.
426 (goto-char (point-min))
427 (if (re-search-forward "^\\* " nil t)
428 (setq debugger-will-be-back t)))
400 (exit-recursive-edit)) 429 (exit-recursive-edit))
401 430
402(defun debugger-jump () 431(defun debugger-jump ()
@@ -406,6 +435,7 @@ will be used, such as in a debug on exit from a frame."
406 (setq debugger-jumping-flag t) 435 (setq debugger-jumping-flag t)
407 (add-hook 'post-command-hook 'debugger-reenable) 436 (add-hook 'post-command-hook 'debugger-reenable)
408 (message "Continuing through this frame") 437 (message "Continuing through this frame")
438 (setq debugger-will-be-back t)
409 (exit-recursive-edit)) 439 (exit-recursive-edit))
410 440
411(defun debugger-reenable () 441(defun debugger-reenable ()
@@ -454,7 +484,7 @@ Applies to the frame whose line point is on in the backtrace."
454 (beginning-of-line) 484 (beginning-of-line)
455 (backtrace-debug (debugger-frame-number) t) 485 (backtrace-debug (debugger-frame-number) t)
456 (if (= (following-char) ? ) 486 (if (= (following-char) ? )
457 (let ((buffer-read-only nil)) 487 (let ((inhibit-read-only t))
458 (delete-char 1) 488 (delete-char 1)
459 (insert ?*))) 489 (insert ?*)))
460 (beginning-of-line)) 490 (beginning-of-line))
@@ -470,7 +500,7 @@ Applies to the frame whose line point is on in the backtrace."
470 (beginning-of-line) 500 (beginning-of-line)
471 (backtrace-debug (debugger-frame-number) nil) 501 (backtrace-debug (debugger-frame-number) nil)
472 (if (= (following-char) ?*) 502 (if (= (following-char) ?*)
473 (let ((buffer-read-only nil)) 503 (let ((inhibit-read-only t))
474 (delete-char 1) 504 (delete-char 1)
475 (insert ? ))) 505 (insert ? )))
476 (beginning-of-line)) 506 (beginning-of-line))
@@ -584,7 +614,7 @@ Applies to the frame whose line point is on in the backtrace."
584 (terpri)) 614 (terpri))
585 615
586 (with-current-buffer (get-buffer debugger-record-buffer) 616 (with-current-buffer (get-buffer debugger-record-buffer)
587 (message "%s" 617 (message "%s"
588 (buffer-substring (line-beginning-position 0) 618 (buffer-substring (line-beginning-position 0)
589 (line-end-position 0))))) 619 (line-end-position 0)))))
590 620
@@ -626,22 +656,29 @@ functions to break on entry."
626;;;###autoload 656;;;###autoload
627(defun debug-on-entry (function) 657(defun debug-on-entry (function)
628 "Request FUNCTION to invoke debugger each time it is called. 658 "Request FUNCTION to invoke debugger each time it is called.
629If you tell the debugger to continue, FUNCTION's execution proceeds. 659
630This works by modifying the definition of FUNCTION, 660When called interactively, prompt for FUNCTION in the minibuffer.
631which must be written in Lisp, not predefined. 661
662This works by modifying the definition of FUNCTION. If you tell the
663debugger to continue, FUNCTION's execution proceeds. If FUNCTION is a
664normal function or a macro written in Lisp, you can also step through
665its execution. FUNCTION can also be a primitive that is not a special
666form, in which case stepping is not possible. Break-on-entry for
667primitive functions only works when that function is called from Lisp.
668
632Use \\[cancel-debug-on-entry] to cancel the effect of this command. 669Use \\[cancel-debug-on-entry] to cancel the effect of this command.
633Redefining FUNCTION also cancels it." 670Redefining FUNCTION also cancels it."
634 (interactive "aDebug on entry (to function): ") 671 (interactive "aDebug on entry (to function): ")
635 (when (and (subrp (symbol-function function)) 672 (when (and (subrp (symbol-function function))
636 (eq (cdr (subr-arity (symbol-function function))) 'unevalled)) 673 (eq (cdr (subr-arity (symbol-function function))) 'unevalled))
637 (error "Function %s is a special form" function)) 674 (error "Function %s is a special form" function))
638 (if (or (symbolp (symbol-function function)) 675 (if (or (symbolp (symbol-function function))
639 (subrp (symbol-function function))) 676 (subrp (symbol-function function)))
640 ;; The function is built-in or aliased to another function. 677 ;; The function is built-in or aliased to another function.
641 ;; Create a wrapper in which we can add the debug call. 678 ;; Create a wrapper in which we can add the debug call.
642 (fset function `(lambda (&rest debug-on-entry-args) 679 (fset function `(lambda (&rest debug-on-entry-args)
643 ,(interactive-form (symbol-function function)) 680 ,(interactive-form (symbol-function function))
644 (apply ',(symbol-function function) 681 (apply ',(symbol-function function)
645 debug-on-entry-args))) 682 debug-on-entry-args)))
646 (when (eq (car-safe (symbol-function function)) 'autoload) 683 (when (eq (car-safe (symbol-function function)) 'autoload)
647 ;; The function is autoloaded. Load its real definition. 684 ;; The function is autoloaded. Load its real definition.
@@ -662,14 +699,19 @@ Redefining FUNCTION also cancels it."
662;;;###autoload 699;;;###autoload
663(defun cancel-debug-on-entry (&optional function) 700(defun cancel-debug-on-entry (&optional function)
664 "Undo effect of \\[debug-on-entry] on FUNCTION. 701 "Undo effect of \\[debug-on-entry] on FUNCTION.
665If argument is nil or an empty string, cancel for all functions." 702If FUNCTION is nil, cancel debug-on-entry for all functions.
703When called interactively, prompt for FUNCTION in the minibuffer.
704To specify a nil argument interactively, exit with an empty minibuffer."
666 (interactive 705 (interactive
667 (list (let ((name 706 (list (let ((name
668 (completing-read "Cancel debug on entry (to function): " 707 (completing-read
669 (mapcar 'symbol-name debug-function-list) 708 "Cancel debug on entry to function (default: all functions): "
670 nil t nil))) 709 (mapcar 'symbol-name debug-function-list) nil t)))
671 (if name (intern name))))) 710 (when name
672 (if (and function (not (string= function ""))) 711 (unless (string= name "")
712 (intern name))))))
713 (if (and function
714 (not (string= function ""))) ; Pre 22.1 compatibility test.
673 (progn 715 (progn
674 (let ((defn (debug-on-entry-1 function nil))) 716 (let ((defn (debug-on-entry-1 function nil)))
675 (condition-case nil 717 (condition-case nil
@@ -709,7 +751,7 @@ If argument is nil or an empty string, cancel for all functions."
709(defun debug-on-entry-1 (function flag) 751(defun debug-on-entry-1 (function flag)
710 (let* ((defn (symbol-function function)) 752 (let* ((defn (symbol-function function))
711 (tail defn)) 753 (tail defn))
712 (when (eq (car-safe tail) 'macro) 754 (when (eq (car-safe tail) 'macro)
713 (setq tail (cdr tail))) 755 (setq tail (cdr tail)))
714 (if (not (eq (car-safe tail) 'lambda)) 756 (if (not (eq (car-safe tail) 'lambda))
715 ;; Only signal an error when we try to set debug-on-entry. 757 ;; Only signal an error when we try to set debug-on-entry.
diff --git a/lisp/emacs-lisp/derived.el b/lisp/emacs-lisp/derived.el
index 5ba9c094355..943f052fc6d 100644
--- a/lisp/emacs-lisp/derived.el
+++ b/lisp/emacs-lisp/derived.el
@@ -1,5 +1,5 @@
1;;; derived.el --- allow inheritance of major modes 1;;; derived.el --- allow inheritance of major modes
2;;; (formerly mode-clone.el) 2;; (formerly mode-clone.el)
3 3
4;; Copyright (C) 1993, 1994, 1999, 2003 Free Software Foundation, Inc. 4;; Copyright (C) 1993, 1994, 1999, 2003 Free Software Foundation, Inc.
5 5
@@ -221,6 +221,12 @@ See Info node `(elisp)Derived Modes' for more details."
221 (get (quote ,parent) 'mode-class))) 221 (get (quote ,parent) 'mode-class)))
222 ; Set up maps and tables. 222 ; Set up maps and tables.
223 (unless (keymap-parent ,map) 223 (unless (keymap-parent ,map)
224 ;; It would probably be better to set the keymap's parent
225 ;; at the toplevel rather than inside the mode function,
226 ;; but this is not easy for at least the following reasons:
227 ;; - the parent (and its keymap) may not yet be loaded.
228 ;; - the parent's keymap name may be called something else
229 ;; than <parent>-mode-map.
224 (set-keymap-parent ,map (current-local-map))) 230 (set-keymap-parent ,map (current-local-map)))
225 ,(when declare-syntax 231 ,(when declare-syntax
226 `(let ((parent (char-table-parent ,syntax))) 232 `(let ((parent (char-table-parent ,syntax)))
@@ -440,5 +446,5 @@ Where the new table already has an entry, nothing is copied from the old one."
440 446
441(provide 'derived) 447(provide 'derived)
442 448
443;;; arch-tag: 630be248-47d1-4f02-afa0-8207de0ebea0 449;; arch-tag: 630be248-47d1-4f02-afa0-8207de0ebea0
444;;; derived.el ends here 450;;; derived.el ends here
diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el
index 188dc172e07..a342f8a5530 100644
--- a/lisp/emacs-lisp/easy-mmode.el
+++ b/lisp/emacs-lisp/easy-mmode.el
@@ -183,13 +183,18 @@ Use the command `%s' to change this variable." pretty-name mode))
183 183
184 (let ((curfile (or (and (boundp 'byte-compile-current-file) 184 (let ((curfile (or (and (boundp 'byte-compile-current-file)
185 byte-compile-current-file) 185 byte-compile-current-file)
186 load-file-name))) 186 load-file-name))
187 `(defcustom ,mode ,init-value 187 base-doc-string)
188 ,(format "Non-nil if %s is enabled. 188 (setq base-doc-string "Non-nil if %s is enabled.
189See the command `%s' for a description of this minor-mode. 189See the command `%s' for a description of this minor-mode.
190Setting this variable directly does not take effect; 190Setting this variable directly does not take effect;
191use either \\[customize] or the function `%s'." 191use either \\[customize] or the function `%s'.")
192 pretty-name mode mode) 192 (if (null body)
193 (setq base-doc-string "Non-nil if %s is enabled.
194See the command `%s' for a description of this minor-mode."))
195
196 `(defcustom ,mode ,init-value
197 ,(format base-doc-string pretty-name mode mode)
193 :set 'custom-set-minor-mode 198 :set 'custom-set-minor-mode
194 :initialize 'custom-initialize-default 199 :initialize 'custom-initialize-default
195 ,@group 200 ,@group
@@ -271,14 +276,26 @@ With zero or negative ARG turn mode off.
271TURN-ON is a function that will be called with no args in every buffer 276TURN-ON is a function that will be called with no args in every buffer
272 and that should try to turn MODE on if applicable for that buffer. 277 and that should try to turn MODE on if applicable for that buffer.
273KEYS is a list of CL-style keyword arguments: 278KEYS is a list of CL-style keyword arguments:
274:group to specify the custom group." 279:group to specify the custom group.
280
281If MODE's set-up depends on the major mode in effect when it was
282enabled, then disabling and reenabling MODE should make MODE work
283correctly with the current major mode. This is important to
284prevent problems with derived modes, that is, major modes that
285call another major mode in their body."
286
275 (let* ((global-mode-name (symbol-name global-mode)) 287 (let* ((global-mode-name (symbol-name global-mode))
276 (pretty-name (easy-mmode-pretty-mode-name mode)) 288 (pretty-name (easy-mmode-pretty-mode-name mode))
277 (pretty-global-name (easy-mmode-pretty-mode-name global-mode)) 289 (pretty-global-name (easy-mmode-pretty-mode-name global-mode))
278 (group nil) 290 (group nil)
279 (extra-args nil) 291 (extra-args nil)
280 (buffers (intern (concat global-mode-name "-buffers"))) 292 (MODE-buffers (intern (concat global-mode-name "-buffers")))
281 (cmmh (intern (concat global-mode-name "-cmmh")))) 293 (MODE-enable-in-buffers
294 (intern (concat global-mode-name "-enable-in-buffers")))
295 (MODE-check-buffers
296 (intern (concat global-mode-name "-check-buffers")))
297 (MODE-cmhh (intern (concat global-mode-name "-cmhh")))
298 (MODE-major-mode (intern (concat (symbol-name mode) "-major-mode"))))
282 299
283 ;; Check keys. 300 ;; Check keys.
284 (while (keywordp (car keys)) 301 (while (keywordp (car keys))
@@ -294,6 +311,8 @@ KEYS is a list of CL-style keyword arguments:
294 "-mode\\'" "" (symbol-name mode)))))) 311 "-mode\\'" "" (symbol-name mode))))))
295 312
296 `(progn 313 `(progn
314 (defvar ,MODE-major-mode nil)
315 (make-variable-buffer-local ',MODE-major-mode)
297 ;; The actual global minor-mode 316 ;; The actual global minor-mode
298 (define-minor-mode ,global-mode 317 (define-minor-mode ,global-mode
299 ,(format "Toggle %s in every buffer. 318 ,(format "Toggle %s in every buffer.
@@ -306,10 +325,13 @@ in which `%s' turns it on."
306 ;; Setup hook to handle future mode changes and new buffers. 325 ;; Setup hook to handle future mode changes and new buffers.
307 (if ,global-mode 326 (if ,global-mode
308 (progn 327 (progn
309 (add-hook 'after-change-major-mode-hook ',buffers) 328 (add-hook 'after-change-major-mode-hook
310 (add-hook 'change-major-mode-hook ',cmmh)) 329 ',MODE-enable-in-buffers)
311 (remove-hook 'after-change-major-mode-hook ',buffers) 330 (add-hook 'find-file-hook ',MODE-check-buffers)
312 (remove-hook 'change-major-mode-hook ',cmmh)) 331 (add-hook 'change-major-mode-hook ',MODE-cmhh))
332 (remove-hook 'after-change-major-mode-hook ',MODE-enable-in-buffers)
333 (remove-hook 'find-file-hook ',MODE-check-buffers)
334 (remove-hook 'change-major-mode-hook ',MODE-cmhh))
313 335
314 ;; Go through existing buffers. 336 ;; Go through existing buffers.
315 (dolist (buf (buffer-list)) 337 (dolist (buf (buffer-list))
@@ -321,22 +343,33 @@ in which `%s' turns it on."
321 :autoload-end 343 :autoload-end
322 344
323 ;; List of buffers left to process. 345 ;; List of buffers left to process.
324 (defvar ,buffers nil) 346 (defvar ,MODE-buffers nil)
325 347
326 ;; The function that calls TURN-ON in each buffer. 348 ;; The function that calls TURN-ON in each buffer.
327 (defun ,buffers () 349 (defun ,MODE-enable-in-buffers ()
328 (remove-hook 'post-command-hook ',buffers) 350 (dolist (buf ,MODE-buffers)
329 (while ,buffers 351 (when (buffer-live-p buf)
330 (let ((buf (pop ,buffers))) 352 (with-current-buffer buf
331 (when (buffer-live-p buf) 353 (if ,mode
332 (with-current-buffer buf (,turn-on)))))) 354 (unless (eq ,MODE-major-mode major-mode)
333 (put ',buffers 'definition-name ',global-mode) 355 (,mode -1)
356 (,turn-on)
357 (setq ,MODE-major-mode major-mode))
358 (,turn-on)
359 (setq ,MODE-major-mode major-mode))))))
360 (put ',MODE-enable-in-buffers 'definition-name ',global-mode)
361
362 (defun ,MODE-check-buffers ()
363 (,MODE-enable-in-buffers)
364 (setq ,MODE-buffers nil)
365 (remove-hook 'post-command-hook ',MODE-check-buffers))
366 (put ',MODE-check-buffers 'definition-name ',global-mode)
334 367
335 ;; The function that catches kill-all-local-variables. 368 ;; The function that catches kill-all-local-variables.
336 (defun ,cmmh () 369 (defun ,MODE-cmhh ()
337 (add-to-list ',buffers (current-buffer)) 370 (add-to-list ',MODE-buffers (current-buffer))
338 (add-hook 'post-command-hook ',buffers)) 371 (add-hook 'post-command-hook ',MODE-check-buffers))
339 (put ',cmmh 'definition-name ',global-mode)))) 372 (put ',MODE-cmhh 'definition-name ',global-mode))))
340 373
341;;; 374;;;
342;;; easy-mmode-defmap 375;;; easy-mmode-defmap
diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el
index 91ebda57001..54325c87b6d 100644
--- a/lisp/emacs-lisp/edebug.el
+++ b/lisp/emacs-lisp/edebug.el
@@ -80,7 +80,7 @@ using but only when you also use Edebug."
80 80
81;;;###autoload 81;;;###autoload
82(defcustom edebug-all-defs nil 82(defcustom edebug-all-defs nil
83 "*If non-nil, evaluation of any defining forms will instrument for Edebug. 83 "*If non-nil, evaluating defining forms instruments for Edebug.
84This applies to `eval-defun', `eval-region', `eval-buffer', and 84This applies to `eval-defun', `eval-region', `eval-buffer', and
85`eval-current-buffer'. `eval-region' is also called by 85`eval-current-buffer'. `eval-region' is also called by
86`eval-last-sexp', and `eval-print-last-sexp'. 86`eval-last-sexp', and `eval-print-last-sexp'.
@@ -141,10 +141,10 @@ it."
141 :group 'edebug) 141 :group 'edebug)
142 142
143(defcustom edebug-initial-mode 'step 143(defcustom edebug-initial-mode 'step
144 "*Initial execution mode for Edebug, if non-nil. If this variable 144 "*Initial execution mode for Edebug, if non-nil.
145is non-@code{nil}, it specifies the initial execution mode for Edebug 145If this variable is non-nil, it specifies the initial execution mode
146when it is first activated. Possible values are step, next, go, 146for Edebug when it is first activated. Possible values are step, next,
147Go-nonstop, trace, Trace-fast, continue, and Continue-fast." 147go, Go-nonstop, trace, Trace-fast, continue, and Continue-fast."
148 :type '(choice (const step) (const next) (const go) 148 :type '(choice (const step) (const next) (const go)
149 (const Go-nonstop) (const trace) 149 (const Go-nonstop) (const trace)
150 (const Trace-fast) (const continue) 150 (const Trace-fast) (const continue)
@@ -180,15 +180,15 @@ Use this with caution since it is not debugged."
180 180
181 181
182(defcustom edebug-print-length 50 182(defcustom edebug-print-length 50
183 "*Default value of `print-length' to use while printing results in Edebug." 183 "*Default value of `print-length' for printing results in Edebug."
184 :type 'integer 184 :type 'integer
185 :group 'edebug) 185 :group 'edebug)
186(defcustom edebug-print-level 50 186(defcustom edebug-print-level 50
187 "*Default value of `print-level' to use while printing results in Edebug." 187 "*Default value of `print-level' for printing results in Edebug."
188 :type 'integer 188 :type 'integer
189 :group 'edebug) 189 :group 'edebug)
190(defcustom edebug-print-circle t 190(defcustom edebug-print-circle t
191 "*Default value of `print-circle' to use while printing results in Edebug." 191 "*Default value of `print-circle' for printing results in Edebug."
192 :type 'boolean 192 :type 'boolean
193 :group 'edebug) 193 :group 'edebug)
194 194
@@ -3189,8 +3189,8 @@ The default is one second."
3189 3189
3190 3190
3191(defun edebug-modify-breakpoint (flag &optional condition temporary) 3191(defun edebug-modify-breakpoint (flag &optional condition temporary)
3192 "Modify the breakpoint for the form at point or after it according 3192 "Modify the breakpoint for the form at point or after it.
3193to FLAG: set if t, clear if nil. Then move to that point. 3193Set it if FLAG is non-nil, clear it otherwise. Then move to that point.
3194If CONDITION or TEMPORARY are non-nil, add those attributes to 3194If CONDITION or TEMPORARY are non-nil, add those attributes to
3195the breakpoint. " 3195the breakpoint. "
3196 (let ((edebug-stop-point (edebug-find-stop-point))) 3196 (let ((edebug-stop-point (edebug-find-stop-point)))
@@ -3729,12 +3729,13 @@ Print result in minibuffer."
3729 (eval-expression-print-format (car values)))))) 3729 (eval-expression-print-format (car values))))))
3730 3730
3731(defun edebug-eval-last-sexp () 3731(defun edebug-eval-last-sexp ()
3732 "Evaluate sexp before point in the outside environment; value in minibuffer." 3732 "Evaluate sexp before point in the outside environment.
3733Print value in minibuffer."
3733 (interactive) 3734 (interactive)
3734 (edebug-eval-expression (edebug-last-sexp))) 3735 (edebug-eval-expression (edebug-last-sexp)))
3735 3736
3736(defun edebug-eval-print-last-sexp () 3737(defun edebug-eval-print-last-sexp ()
3737 "Evaluate sexp before point in the outside environment; insert the value. 3738 "Evaluate sexp before point in outside environment; insert value.
3738This prints the value into current buffer." 3739This prints the value into current buffer."
3739 (interactive) 3740 (interactive)
3740 (let* ((edebug-form (edebug-last-sexp)) 3741 (let* ((edebug-form (edebug-last-sexp))
@@ -4014,20 +4015,19 @@ May only be called from within edebug-recursive-edit."
4014(defvar edebug-eval-mode-map nil 4015(defvar edebug-eval-mode-map nil
4015 "Keymap for Edebug Eval mode. Superset of Lisp Interaction mode.") 4016 "Keymap for Edebug Eval mode. Superset of Lisp Interaction mode.")
4016 4017
4017(if edebug-eval-mode-map 4018(unless edebug-eval-mode-map
4018 nil 4019 (setq edebug-eval-mode-map (make-sparse-keymap))
4019 (setq edebug-eval-mode-map (copy-keymap lisp-interaction-mode-map)) 4020 (set-keymap-parent edebug-eval-mode-map lisp-interaction-mode-map)
4020 4021
4021 (define-key edebug-eval-mode-map "\C-c\C-w" 'edebug-where) 4022 (define-key edebug-eval-mode-map "\C-c\C-w" 'edebug-where)
4022 (define-key edebug-eval-mode-map "\C-c\C-d" 'edebug-delete-eval-item) 4023 (define-key edebug-eval-mode-map "\C-c\C-d" 'edebug-delete-eval-item)
4023 (define-key edebug-eval-mode-map "\C-c\C-u" 'edebug-update-eval-list) 4024 (define-key edebug-eval-mode-map "\C-c\C-u" 'edebug-update-eval-list)
4024 (define-key edebug-eval-mode-map "\C-x\C-e" 'edebug-eval-last-sexp) 4025 (define-key edebug-eval-mode-map "\C-x\C-e" 'edebug-eval-last-sexp)
4025 (define-key edebug-eval-mode-map "\C-j" 'edebug-eval-print-last-sexp) 4026 (define-key edebug-eval-mode-map "\C-j" 'edebug-eval-print-last-sexp))
4026 )
4027 4027
4028(put 'edebug-eval-mode 'mode-class 'special) 4028(put 'edebug-eval-mode 'mode-class 'special)
4029 4029
4030(defun edebug-eval-mode () 4030(define-derived-mode edebug-eval-mode lisp-interaction-mode "Edebug Eval"
4031 "Mode for evaluation list buffer while in Edebug. 4031 "Mode for evaluation list buffer while in Edebug.
4032 4032
4033In addition to all Interactive Emacs Lisp commands there are local and 4033In addition to all Interactive Emacs Lisp commands there are local and
@@ -4039,12 +4039,7 @@ Eval list buffer commands:
4039\\{edebug-eval-mode-map} 4039\\{edebug-eval-mode-map}
4040 4040
4041Global commands prefixed by global-edebug-prefix: 4041Global commands prefixed by global-edebug-prefix:
4042\\{global-edebug-map} 4042\\{global-edebug-map}")
4043"
4044 (lisp-interaction-mode)
4045 (setq major-mode 'edebug-eval-mode)
4046 (setq mode-name "Edebug Eval")
4047 (use-local-map edebug-eval-mode-map))
4048 4043
4049;;; Interface with standard debugger. 4044;;; Interface with standard debugger.
4050 4045
diff --git a/lisp/emacs-lisp/ewoc.el b/lisp/emacs-lisp/ewoc.el
index a2cb4e9fe46..9f91dbab0e9 100644
--- a/lisp/emacs-lisp/ewoc.el
+++ b/lisp/emacs-lisp/ewoc.el
@@ -264,7 +264,7 @@ start position and the element DATA."
264 264
265(defun ewoc--delete-node-internal (ewoc node) 265(defun ewoc--delete-node-internal (ewoc node)
266 "Delete a data string from EWOC. 266 "Delete a data string from EWOC.
267Can not be used on the footer. Returns the wrapper that is deleted. 267Can not be used on the footer. Return the wrapper that is deleted.
268The start-marker in the wrapper is set to nil, so that it doesn't 268The start-marker in the wrapper is set to nil, so that it doesn't
269consume any more resources." 269consume any more resources."
270 (let ((dll (ewoc--dll ewoc)) 270 (let ((dll (ewoc--dll ewoc))
@@ -334,25 +334,27 @@ be inserted at the bottom of the ewoc."
334(defalias 'ewoc-data 'ewoc--node-data) 334(defalias 'ewoc-data 'ewoc--node-data)
335 335
336(defun ewoc-enter-first (ewoc data) 336(defun ewoc-enter-first (ewoc data)
337 "Enter DATA first in EWOC." 337 "Enter DATA first in EWOC.
338Return the new node."
338 (ewoc--set-buffer-bind-dll ewoc 339 (ewoc--set-buffer-bind-dll ewoc
339 (ewoc-enter-after ewoc (ewoc--node-nth dll 0) data))) 340 (ewoc-enter-after ewoc (ewoc--node-nth dll 0) data)))
340 341
341(defun ewoc-enter-last (ewoc data) 342(defun ewoc-enter-last (ewoc data)
342 "Enter DATA last in EWOC." 343 "Enter DATA last in EWOC.
344Return the new node."
343 (ewoc--set-buffer-bind-dll ewoc 345 (ewoc--set-buffer-bind-dll ewoc
344 (ewoc-enter-before ewoc (ewoc--node-nth dll -1) data))) 346 (ewoc-enter-before ewoc (ewoc--node-nth dll -1) data)))
345 347
346 348
347(defun ewoc-enter-after (ewoc node data) 349(defun ewoc-enter-after (ewoc node data)
348 "Enter a new element DATA after NODE in EWOC. 350 "Enter a new element DATA after NODE in EWOC.
349Returns the new NODE." 351Return the new node."
350 (ewoc--set-buffer-bind-dll ewoc 352 (ewoc--set-buffer-bind-dll ewoc
351 (ewoc-enter-before ewoc (ewoc--node-next dll node) data))) 353 (ewoc-enter-before ewoc (ewoc--node-next dll node) data)))
352 354
353(defun ewoc-enter-before (ewoc node data) 355(defun ewoc-enter-before (ewoc node data)
354 "Enter a new element DATA before NODE in EWOC. 356 "Enter a new element DATA before NODE in EWOC.
355Returns the new NODE." 357Return the new node."
356 (ewoc--set-buffer-bind-dll ewoc 358 (ewoc--set-buffer-bind-dll ewoc
357 (ewoc--node-enter-before 359 (ewoc--node-enter-before
358 node 360 node
@@ -362,15 +364,15 @@ Returns the new NODE."
362 (ewoc--node-start-marker node))))) 364 (ewoc--node-start-marker node)))))
363 365
364(defun ewoc-next (ewoc node) 366(defun ewoc-next (ewoc node)
365 "Get the next node. 367 "Return the node in EWOC that follows NODE.
366Returns nil if NODE is nil or the last element." 368Return nil if NODE is nil or the last element."
367 (when node 369 (when node
368 (ewoc--filter-hf-nodes 370 (ewoc--filter-hf-nodes
369 ewoc (ewoc--node-next (ewoc--dll ewoc) node)))) 371 ewoc (ewoc--node-next (ewoc--dll ewoc) node))))
370 372
371(defun ewoc-prev (ewoc node) 373(defun ewoc-prev (ewoc node)
372 "Get the previous node. 374 "Return the node in EWOC that precedes NODE.
373Returns nil if NODE is nil or the first element." 375Return nil if NODE is nil or the first element."
374 (when node 376 (when node
375 (ewoc--filter-hf-nodes 377 (ewoc--filter-hf-nodes
376 ewoc 378 ewoc
@@ -497,16 +499,16 @@ If the EWOC is empty, nil is returned."
497 best-guess))))))) 499 best-guess)))))))
498 500
499(defun ewoc-invalidate (ewoc &rest nodes) 501(defun ewoc-invalidate (ewoc &rest nodes)
500 "Refresh some elements. 502 "Call EWOC's pretty-printer for each element in NODES.
501The pretty-printer set for EWOC will be called for all NODES." 503Delete current text first, thus effecting a \"refresh\"."
502 (ewoc--set-buffer-bind-dll ewoc 504 (ewoc--set-buffer-bind-dll ewoc
503 (dolist (node nodes) 505 (dolist (node nodes)
504 (ewoc--refresh-node (ewoc--pretty-printer ewoc) node)))) 506 (ewoc--refresh-node (ewoc--pretty-printer ewoc) node))))
505 507
506(defun ewoc-goto-prev (ewoc arg) 508(defun ewoc-goto-prev (ewoc arg)
507 "Move point to the ARGth previous element. 509 "Move point to the ARGth previous element in EWOC.
508Don't move if we are at the first element, or if EWOC is empty. 510Don't move if we are at the first element, or if EWOC is empty.
509Returns the node we moved to." 511Return the node we moved to."
510 (ewoc--set-buffer-bind-dll-let* ewoc 512 (ewoc--set-buffer-bind-dll-let* ewoc
511 ((node (ewoc-locate ewoc (point)))) 513 ((node (ewoc-locate ewoc (point))))
512 (when node 514 (when node
@@ -522,8 +524,8 @@ Returns the node we moved to."
522 (ewoc-goto-node ewoc node)))) 524 (ewoc-goto-node ewoc node))))
523 525
524(defun ewoc-goto-next (ewoc arg) 526(defun ewoc-goto-next (ewoc arg)
525 "Move point to the ARGth next element. 527 "Move point to the ARGth next element in EWOC.
526Returns the node (or nil if we just passed the last node)." 528Return the node (or nil if we just passed the last node)."
527 (ewoc--set-buffer-bind-dll-let* ewoc 529 (ewoc--set-buffer-bind-dll-let* ewoc
528 ((node (ewoc-locate ewoc (point)))) 530 ((node (ewoc-locate ewoc (point))))
529 (while (and node (> arg 0)) 531 (while (and node (> arg 0))
@@ -535,7 +537,7 @@ Returns the node (or nil if we just passed the last node)."
535 (ewoc-goto-node ewoc node))) 537 (ewoc-goto-node ewoc node)))
536 538
537(defun ewoc-goto-node (ewoc node) 539(defun ewoc-goto-node (ewoc node)
538 "Move point to NODE." 540 "Move point to NODE in EWOC."
539 (ewoc--set-buffer-bind-dll ewoc 541 (ewoc--set-buffer-bind-dll ewoc
540 (goto-char (ewoc--node-start-marker node)) 542 (goto-char (ewoc--node-start-marker node))
541 (if goal-column (move-to-column goal-column)) 543 (if goal-column (move-to-column goal-column))
@@ -586,7 +588,7 @@ remaining arguments will be passed to PREDICATE."
586 588
587(defun ewoc-buffer (ewoc) 589(defun ewoc-buffer (ewoc)
588 "Return the buffer that is associated with EWOC. 590 "Return the buffer that is associated with EWOC.
589Returns nil if the buffer has been deleted." 591Return nil if the buffer has been deleted."
590 (let ((buf (ewoc--buffer ewoc))) 592 (let ((buf (ewoc--buffer ewoc)))
591 (when (buffer-name buf) buf))) 593 (when (buffer-name buf) buf)))
592 594
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el
index bb815481bf0..72924417109 100644
--- a/lisp/emacs-lisp/lisp-mode.el
+++ b/lisp/emacs-lisp/lisp-mode.el
@@ -129,6 +129,7 @@
129(put 'defmacro 'doc-string-elt 3) 129(put 'defmacro 'doc-string-elt 3)
130(put 'defmacro* 'doc-string-elt 3) 130(put 'defmacro* 'doc-string-elt 3)
131(put 'defsubst 'doc-string-elt 3) 131(put 'defsubst 'doc-string-elt 3)
132(put 'defstruct 'doc-string-elt 2)
132(put 'define-skeleton 'doc-string-elt 2) 133(put 'define-skeleton 'doc-string-elt 2)
133(put 'define-derived-mode 'doc-string-elt 4) 134(put 'define-derived-mode 'doc-string-elt 4)
134(put 'define-compilation-mode 'doc-string-elt 3) 135(put 'define-compilation-mode 'doc-string-elt 3)
@@ -194,7 +195,7 @@
194 (setq comment-start-skip "\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\);+ *") 195 (setq comment-start-skip "\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\);+ *")
195 (make-local-variable 'font-lock-comment-start-skip) 196 (make-local-variable 'font-lock-comment-start-skip)
196 ;; Font lock mode uses this only when it KNOWS a comment is starting. 197 ;; Font lock mode uses this only when it KNOWS a comment is starting.
197 (setq font-lock-comment-start-skip ";+ *") 198 (setq font-lock-comment-start-skip ";+ *")
198 (make-local-variable 'comment-add) 199 (make-local-variable 'comment-add)
199 (setq comment-add 1) ;default to `;;' in comment-region 200 (setq comment-add 1) ;default to `;;' in comment-region
200 (make-local-variable 'comment-column) 201 (make-local-variable 'comment-column)
diff --git a/lisp/emacs-lisp/testcover.el b/lisp/emacs-lisp/testcover.el
index f77b1a00e2c..6b87d06cb0e 100644
--- a/lisp/emacs-lisp/testcover.el
+++ b/lisp/emacs-lisp/testcover.el
@@ -1,6 +1,6 @@
1;;;; testcover.el -- Visual code-coverage tool 1;;;; testcover.el -- Visual code-coverage tool
2 2
3;; Copyright (C) 2002 Free Software Foundation, Inc. 3;; Copyright (C) 2002, 2005 Free Software Foundation, Inc.
4 4
5;; Author: Jonathan Yavner <jyavner@member.fsf.org> 5;; Author: Jonathan Yavner <jyavner@member.fsf.org>
6;; Maintainer: Jonathan Yavner <jyavner@member.fsf.org> 6;; Maintainer: Jonathan Yavner <jyavner@member.fsf.org>
@@ -150,15 +150,19 @@ call to one of the `testcover-1value-functions'."
1501-valued, no error if actually multi-valued." 1501-valued, no error if actually multi-valued."
151 :group 'testcover) 151 :group 'testcover)
152 152
153(defface testcover-nohits-face 153(defface testcover-nohits
154 '((t (:background "DeepPink2"))) 154 '((t (:background "DeepPink2")))
155 "Face for forms that had no hits during coverage test" 155 "Face for forms that had no hits during coverage test"
156 :group 'testcover) 156 :group 'testcover)
157;; backward-compatibility alias
158(put 'testcover-nohits-face 'face-alias 'testcover-nohits)
157 159
158(defface testcover-1value-face 160(defface testcover-1value
159 '((t (:background "Wheat2"))) 161 '((t (:background "Wheat2")))
160 "Face for forms that always produced the same value during coverage test" 162 "Face for forms that always produced the same value during coverage test"
161 :group 'testcover) 163 :group 'testcover)
164;; backward-compatibility alias
165(put 'testcover-1value-face 'face-alias 'testcover-1value)
162 166
163 167
164;;;========================================================================= 168;;;=========================================================================
@@ -477,8 +481,8 @@ same value during coverage testing."
477(defun testcover-mark (def) 481(defun testcover-mark (def)
478 "Marks one DEF (a function or macro symbol) to highlight its contained forms 482 "Marks one DEF (a function or macro symbol) to highlight its contained forms
479that did not get completely tested during coverage tests. 483that did not get completely tested during coverage tests.
480 A marking of testcover-nohits-face (default = red) indicates that the 484 A marking with the face `testcover-nohits' (default = red) indicates that the
481form was never evaluated. A marking of testcover-1value-face 485form was never evaluated. A marking using the `testcover-1value' face
482\(default = tan) indicates that the form always evaluated to the same value. 486\(default = tan) indicates that the form always evaluated to the same value.
483 The forms throw, error, and signal are not marked. They do not return and 487 The forms throw, error, and signal are not marked. They do not return and
484would always get a red mark. Some forms that always return the same 488would always get a red mark. Some forms that always return the same
@@ -506,8 +510,8 @@ eliminated by adding more test cases."
506 (setq ov (make-overlay (1- j) j)) 510 (setq ov (make-overlay (1- j) j))
507 (overlay-put ov 'face 511 (overlay-put ov 'face
508 (if (memq data '(unknown 1value)) 512 (if (memq data '(unknown 1value))
509 'testcover-nohits-face 513 'testcover-nohits
510 'testcover-1value-face)))) 514 'testcover-1value))))
511 (set-buffer-modified-p changed)))) 515 (set-buffer-modified-p changed))))
512 516
513(defun testcover-mark-all (&optional buffer) 517(defun testcover-mark-all (&optional buffer)