diff options
author | Miles Bader <miles@gnu.org> | 2005-03-03 10:35:22 +0000 |
---|---|---|
committer | Miles Bader <miles@gnu.org> | 2005-03-03 10:35:22 +0000 |
commit | dedb5504d3464bd50b6c591d36791c5535af68c1 (patch) | |
tree | 83ce1054c597d5e7c0d9be5dffd1d08dae2e330c /lisp/emacs-lisp | |
parent | c638e2237cd90a294ed01ae2d29a51e25887bd43 (diff) | |
parent | 139c65cf7b6b0bce5f4cd6e45f450ff4f02d5421 (diff) | |
download | emacs-dedb5504d3464bd50b6c591d36791c5535af68c1.tar.gz emacs-dedb5504d3464bd50b6c591d36791c5535af68c1.tar.bz2 emacs-dedb5504d3464bd50b6c591d36791c5535af68c1.zip |
Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-21
Merge from emacs--cvs-trunk--0
Patches applied:
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0 (patch 129-149)
- Update from CVS
- Merge from gnus--rel--5.10
- (make-text-button): Default button type if not specified
- quick-install-emacs: Use mkdir --verbose only when requested
* miles@gnu.org--gnu-2005/gnus--rel--5.10 (patch 31-33)
- Merge from emacs--cvs-trunk--0
- Update from CVS
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r-- | lisp/emacs-lisp/copyright.el | 37 | ||||
-rw-r--r-- | lisp/emacs-lisp/debug.el | 146 | ||||
-rw-r--r-- | lisp/emacs-lisp/re-builder.el | 8 | ||||
-rw-r--r-- | lisp/emacs-lisp/trace.el | 86 |
4 files changed, 156 insertions, 121 deletions
diff --git a/lisp/emacs-lisp/copyright.el b/lisp/emacs-lisp/copyright.el index a79e53b7dd4..a37dfac9e9a 100644 --- a/lisp/emacs-lisp/copyright.el +++ b/lisp/emacs-lisp/copyright.el @@ -1,6 +1,6 @@ ;;; copyright.el --- update the copyright notice in current buffer -;; Copyright (C) 1991, 92, 93, 94, 95, 1998, 2001, 2003, 2004 +;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1998, 2001, 2003, 2004, 2005 ;; Free Software Foundation, Inc. ;; Author: Daniel Pfeiffer <occitan@esperanto.org> @@ -176,6 +176,41 @@ version \\([0-9]+\\), or (at" ;;;###autoload +(defun copyright-fix-years () + "Convert 2 digit years to 4 digit years. +Uses heuristic: year >= 50 means 19xx, < 50 means 20xx." + (interactive) + (widen) + (goto-char (point-min)) + (if (re-search-forward copyright-regexp (+ (point) copyright-limit) t) + (let ((s (match-beginning 2)) (e (make-marker)) + last) + (set-marker e (1+ (match-end 2))) + (goto-char s) + (while (and (< (point) (marker-position e)) + (re-search-forward "\\([^0-9]\\)\\([0-9]+\\)[^0-9]" + (marker-position e) t)) + (let ((p (point)) + (sep (match-string 1)) + (year (string-to-number (match-string 2)))) + (goto-char (1+ (match-beginning 0))) + (unless (= (char-syntax (string-to-char sep)) ?\s) + (insert " ")) + (if (< year 100) + (insert (if (>= year 50) "19" "20"))) + (goto-char p) + (setq last p))) + (when last + (goto-char last) + (let ((fill-prefix " ")) + (fill-region s last)) + ) + (set-marker e nil) + (copyright-update nil t)) + (message "No copyright message") + (goto-char (point-min)))) + +;;;###autoload (define-skeleton copyright "Insert a copyright by $ORGANIZATION notice at cursor." "Company: " diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el index a84a7aca52c..b637ead05ee 100644 --- a/lisp/emacs-lisp/debug.el +++ b/lisp/emacs-lisp/debug.el @@ -1,6 +1,7 @@ ;;; debug.el --- debuggers and related commands for Emacs -;; Copyright (C) 1985, 1986, 1994, 2001, 2003 Free Software Foundation, Inc. +;; Copyright (C) 1985, 1986, 1994, 2001, 2003, 2005 +;; Free Software Foundation, Inc. ;; Maintainer: FSF ;; Keywords: lisp, tools, maint @@ -24,7 +25,7 @@ ;;; Commentary: -;; This is a major mode documented in the Emacs manual. +;; This is a major mode documented in the Emacs Lisp manual. ;;; Code: @@ -92,6 +93,13 @@ This is to optimize `debugger-make-xrefs'.") (defvar debugger-outer-inhibit-redisplay) (defvar debugger-outer-cursor-in-echo-area) +(defvar inhibit-debug-on-entry nil) + +;; When you change this, you may also need to change the number of +;; frames that the debugger skips. +(defconst debug-entry-code '(if inhibit-debug-on-entry nil (debug 'debug)) + "Code added to a function to cause it to call the debugger upon entry.") + ;;;###autoload (setq debugger 'debug) ;;;###autoload @@ -146,6 +154,8 @@ first will be printed into the backtrace buffer." (setq overriding-terminal-local-map nil) ;; Don't let these magic variables affect the debugger itself. (let ((last-command nil) this-command track-mouse + (inhibit-trace t) + (inhibit-debug-on-entry t) unread-command-events unread-post-input-method-events last-input-event last-command-event last-nonmenu-event @@ -184,12 +194,12 @@ first will be printed into the backtrace buffer." (message "%s" (buffer-string)) (kill-emacs)) (if (eq (car debugger-args) 'debug) - ;; Skip the frames for backtrace-debug, byte-code, and debug. - (backtrace-debug 3 t)) + ;; Skip the frames for backtrace-debug, byte-code, + ;; and debug-entry-code. + (backtrace-debug 4 t)) (debugger-reenable) (message "") - (let ((inhibit-trace t) - (standard-output nil) + (let ((standard-output nil) (buffer-read-only t)) (message "") ;; Make sure we unbind buffer-read-only in the right buffer. @@ -197,15 +207,16 @@ first will be printed into the backtrace buffer." (recursive-edit))))) ;; Kill or at least neuter the backtrace buffer, so that users ;; don't try to execute debugger commands in an invalid context. - (if (get-buffer-window debugger-buffer 'visible) + (if (get-buffer-window debugger-buffer 0) ;; Still visible despite the save-window-excursion? Maybe it ;; it's in a pop-up frame. It would be annoying to delete and ;; recreate it every time the debugger stops, so instead we'll - ;; erase it but leave it visible. - (save-excursion - (set-buffer debugger-buffer) + ;; erase it and hide it but keep it alive. + (with-current-buffer debugger-buffer (erase-buffer) - (fundamental-mode)) + (fundamental-mode) + (with-selected-window (get-buffer-window debugger-buffer 0) + (bury-buffer))) (kill-buffer debugger-buffer)) (set-match-data debugger-outer-match-data))) ;; Put into effect the modified values of these variables @@ -248,7 +259,9 @@ That buffer should be current already." (delete-region (point) (progn (search-forward "\n debug(") - (forward-line 1) + (forward-line (if (eq (car debugger-args) 'debug) + 2 ; Remove debug-entry-code frame. + 1)) (point))) (insert "Debugger entered") ;; lambda is for debug-on-call when a function call is next. @@ -421,14 +434,13 @@ will be used, such as in a debug on exit from a frame." (count 0)) (while (not (eq (cadr (backtrace-frame count)) 'debug)) (setq count (1+ count))) + ;; Skip debug-entry-code frame. + (when (member '(debug (quote debug)) (cdr (backtrace-frame (1+ count)))) + (setq count (1+ count))) (goto-char (point-min)) - (if (or (equal (buffer-substring (point) (+ (point) 6)) - "Signal") - (equal (buffer-substring (point) (+ (point) 6)) - "Return")) - (progn - (search-forward ":") - (forward-sexp 1))) + (when (looking-at "Debugger entered--\\(Lisp error\\|returning value\\):") + (goto-char (match-end 0)) + (forward-sexp 1)) (forward-line 1) (while (progn (forward-char 2) @@ -474,8 +486,6 @@ Applies to the frame whose line point is on in the backtrace." (insert ? ))) (beginning-of-line)) - - (put 'debugger-env-macro 'lisp-indent-function 0) (defmacro debugger-env-macro (&rest body) "Run BODY in original environment." @@ -543,29 +553,26 @@ Applies to the frame whose line point is on in the backtrace." 'read-expression-history))) (debugger-env-macro (eval-expression exp))) -(defvar debugger-mode-map nil) -(unless debugger-mode-map - (let ((loop ? )) - (setq debugger-mode-map (make-keymap)) - (set-keymap-parent debugger-mode-map button-buffer-map) - (suppress-keymap debugger-mode-map) - (define-key debugger-mode-map "-" 'negative-argument) - (define-key debugger-mode-map "b" 'debugger-frame) - (define-key debugger-mode-map "c" 'debugger-continue) - (define-key debugger-mode-map "j" 'debugger-jump) - (define-key debugger-mode-map "r" 'debugger-return-value) - (define-key debugger-mode-map "u" 'debugger-frame-clear) - (define-key debugger-mode-map "d" 'debugger-step-through) - (define-key debugger-mode-map "l" 'debugger-list-functions) - (define-key debugger-mode-map "h" 'describe-mode) - (define-key debugger-mode-map "q" 'top-level) - (define-key debugger-mode-map "e" 'debugger-eval-expression) - (define-key debugger-mode-map " " 'next-line) - (define-key debugger-mode-map "R" 'debugger-record-expression) - (define-key debugger-mode-map "\C-m" 'help-follow) - (define-key debugger-mode-map [mouse-2] 'push-button) - )) - +(defvar debugger-mode-map + (let ((map (make-keymap))) + (set-keymap-parent map button-buffer-map) + (suppress-keymap map) + (define-key map "-" 'negative-argument) + (define-key map "b" 'debugger-frame) + (define-key map "c" 'debugger-continue) + (define-key map "j" 'debugger-jump) + (define-key map "r" 'debugger-return-value) + (define-key map "u" 'debugger-frame-clear) + (define-key map "d" 'debugger-step-through) + (define-key map "l" 'debugger-list-functions) + (define-key map "h" 'describe-mode) + (define-key map "q" 'top-level) + (define-key map "e" 'debugger-eval-expression) + (define-key map " " 'next-line) + (define-key map "R" 'debugger-record-expression) + (define-key map "\C-m" 'help-follow) + (define-key map [mouse-2] 'push-button) + map)) (defcustom debugger-record-buffer "*Debugger-record*" "*Buffer name for expression values, for \\[debugger-record-expression]." @@ -616,7 +623,7 @@ Complete list of commands: (setq truncate-lines t) (set-syntax-table emacs-lisp-mode-syntax-table) (use-local-map debugger-mode-map) - (run-hooks 'debugger-mode-hook)) + (run-mode-hooks 'debugger-mode-hook)) ;;;###autoload (defun debug-on-entry (function) @@ -699,39 +706,40 @@ If argument is nil or an empty string, cancel for all functions." (debug-on-entry-1 function (cdr defn) flag) (or (eq (car defn) 'lambda) (error "%s not user-defined Lisp function" function)) - (let ((tail (cddr defn))) + (let ((tail (cdr defn))) ;; Skip the docstring. - (if (stringp (car tail)) (setq tail (cdr tail))) + (when (and (stringp (cadr tail)) (cddr tail)) + (setq tail (cdr tail))) ;; Skip the interactive form. - (if (eq 'interactive (car-safe (car tail))) (setq tail (cdr tail))) - (unless (eq flag (equal (car tail) '(debug 'debug))) + (when (eq 'interactive (car-safe (cadr tail))) + (setq tail (cdr tail))) + (unless (eq flag (equal (cadr tail) debug-entry-code)) ;; Add/remove debug statement as needed. - (if (not flag) - (progn (setcar tail (cadr tail)) - (setcdr tail (cddr tail))) - (setcdr tail (cons (car tail) (cdr tail))) - (setcar tail '(debug 'debug)))) + (if flag + (setcdr tail (cons debug-entry-code (cdr tail))) + (setcdr tail (cddr tail)))) defn)))) (defun debugger-list-functions () "Display a list of all the functions now set to debug on entry." (interactive) - (with-output-to-temp-buffer "*Help*" - (if (null debug-function-list) - (princ "No debug-on-entry functions now\n") - (princ "Functions set to debug on entry:\n\n") - (let ((list debug-function-list)) - (while list - (prin1 (car list)) - (terpri) - (setq list (cdr list)))) - (princ "Note: if you have redefined a function, then it may no longer\n") - (princ "be set to debug on entry, even if it is in the list.")) - (save-excursion - (set-buffer standard-output) - (help-mode)))) + (require 'help-mode) + (help-setup-xref '(debugger-list-functions) (interactive-p)) + (with-output-to-temp-buffer (help-buffer) + (with-current-buffer standard-output + (if (null debug-function-list) + (princ "No debug-on-entry functions now\n") + (princ "Functions set to debug on entry:\n\n") + (dolist (fun debug-function-list) + (make-text-button (point) (progn (prin1 fun) (point)) + 'type 'help-function + 'help-args (list fun)) + (terpri)) + (terpri) + (princ "Note: if you have redefined a function, then it may no longer\n") + (princ "be set to debug on entry, even if it is in the list."))))) (provide 'debug) -;;; arch-tag: b6ec7047-f801-4103-9c63-d69322db9d3b +;; arch-tag: b6ec7047-f801-4103-9c63-d69322db9d3b ;;; debug.el ends here diff --git a/lisp/emacs-lisp/re-builder.el b/lisp/emacs-lisp/re-builder.el index 019a45213c8..d26a0ae5f38 100644 --- a/lisp/emacs-lisp/re-builder.el +++ b/lisp/emacs-lisp/re-builder.el @@ -327,10 +327,16 @@ Except for Lisp syntax this is the same as `reb-regexp'.") "Return binding for SYMBOL in the RE Builder target buffer." `(with-current-buffer reb-target-buffer ,symbol)) +;;; This is to help people find this in Apropos. +;;;###autoload +(defun regexp-builder () + "Alias for `re-builder': Construct a regexp interactively." + (interactive) + (re-builder)) ;;;###autoload (defun re-builder () - "Call up the RE Builder for the current window." + "Construct a regexp interactively." (interactive) (if (and (string= (buffer-name) reb-buffer) diff --git a/lisp/emacs-lisp/trace.el b/lisp/emacs-lisp/trace.el index a6ff9b15286..e3d3e9e645e 100644 --- a/lisp/emacs-lisp/trace.el +++ b/lisp/emacs-lisp/trace.el @@ -1,6 +1,6 @@ ;;; trace.el --- tracing facility for Emacs Lisp functions -;; Copyright (C) 1993 Free Software Foundation, Inc. +;; Copyright (C) 1993, 1998, 2000, 2005 Free Software Foundation, Inc. ;; Author: Hans Chalupsky <hans@cs.buffalo.edu> ;; Maintainer: FSF @@ -175,6 +175,9 @@ ;; Used to separate new trace output from previous traced runs: (defvar trace-separator (format "%s\n" (make-string 70 ?=))) +(defvar inhibit-trace nil + "If non-nil, all tracing is temporarily inhibited.") + (defun trace-entry-message (function level argument-bindings) ;; Generates a string that describes that FUNCTION has been entered at ;; trace LEVEL with ARGUMENT-BINDINGS. @@ -183,14 +186,13 @@ (if (> level 1) " " "") level function - (mapconcat (function - (lambda (binding) - (concat - (symbol-name (ad-arg-binding-field binding 'name)) - "=" - ;; do this so we'll see strings: - (prin1-to-string - (ad-arg-binding-field binding 'value))))) + (mapconcat (lambda (binding) + (concat + (symbol-name (ad-arg-binding-field binding 'name)) + "=" + ;; do this so we'll see strings: + (prin1-to-string + (ad-arg-binding-field binding 'value)))) argument-bindings " "))) @@ -211,43 +213,27 @@ ;; (quietly if BACKGROUND is t). (ad-make-advice trace-advice-name nil t - (cond (background - `(advice - lambda () - (let ((trace-level (1+ trace-level)) - (trace-buffer (get-buffer-create ,buffer))) - (save-excursion - (set-buffer trace-buffer) - (goto-char (point-max)) - ;; Insert a separator from previous trace output: - (if (= trace-level 1) (insert trace-separator)) - (insert - (trace-entry-message - ',function trace-level ad-arg-bindings))) - ad-do-it - (save-excursion - (set-buffer trace-buffer) - (goto-char (point-max)) - (insert - (trace-exit-message - ',function trace-level ad-return-value)))))) - (t `(advice - lambda () - (let ((trace-level (1+ trace-level)) - (trace-buffer (get-buffer-create ,buffer))) - (pop-to-buffer trace-buffer) - (goto-char (point-max)) - ;; Insert a separator from previous trace output: - (if (= trace-level 1) (insert trace-separator)) - (insert - (trace-entry-message - ',function trace-level ad-arg-bindings)) - ad-do-it - (pop-to-buffer trace-buffer) - (goto-char (point-max)) - (insert - (trace-exit-message - ',function trace-level ad-return-value)))))))) + `(advice + lambda () + (let ((trace-level (1+ trace-level)) + (trace-buffer (get-buffer-create ,buffer))) + (unless inhibit-trace + (with-current-buffer trace-buffer + ,(unless background '(pop-to-buffer trace-buffer)) + (goto-char (point-max)) + ;; Insert a separator from previous trace output: + (if (= trace-level 1) (insert trace-separator)) + (insert + (trace-entry-message + ',function trace-level ad-arg-bindings)))) + ad-do-it + (unless inhibit-trace + (with-current-buffer trace-buffer + ,(unless background '(pop-to-buffer trace-buffer)) + (goto-char (point-max)) + (insert + (trace-exit-message + ',function trace-level ad-return-value)))))))) (defun trace-function-internal (function buffer background) ;; Adds trace advice for FUNCTION and activates it. @@ -297,9 +283,9 @@ activated only if the advice of FUNCTION is currently active. If FUNCTION was not traced this is a noop." (interactive (list (ad-read-advised-function "Untrace function: " 'trace-is-traced))) - (cond ((trace-is-traced function) - (ad-remove-advice function 'around trace-advice-name) - (ad-update function)))) + (when (trace-is-traced function) + (ad-remove-advice function 'around trace-advice-name) + (ad-update function))) (defun untrace-all () "Untraces all currently traced functions." @@ -309,5 +295,5 @@ was not traced this is a noop." (provide 'trace) -;;; arch-tag: cfd170a7-4932-4331-8c8b-b7151942e5a1 +;; arch-tag: cfd170a7-4932-4331-8c8b-b7151942e5a1 ;;; trace.el ends here |