diff options
author | Jim Blandy <[email protected]> | 1992-01-09 05:06:34 +0000 |
---|---|---|
committer | Jim Blandy <[email protected]> | 1992-01-09 05:06:34 +0000 |
commit | 10a4c11f7e8d1bcb8448a7771850b95c7c46caba (patch) | |
tree | 7daac1a5fee21309d54e7cb53ac17e02b9fba11a | |
parent | e652a34a67f502767cd6e06800690438e4843a18 (diff) |
*** empty log message ***
-rw-r--r-- | etc/TUTORIAL | 24 | ||||
-rw-r--r-- | lisp/emacs-lisp/debug.el | 11 | ||||
-rw-r--r-- | lisp/gud.el | 40 | ||||
-rw-r--r-- | lisp/mail/mail-utils.el | 114 |
4 files changed, 109 insertions, 80 deletions
diff --git a/etc/TUTORIAL b/etc/TUTORIAL index db88bc3ed7..98e1243837 100644 --- a/etc/TUTORIAL +++ b/etc/TUTORIAL @@ -790,11 +790,11 @@ To get more information on the command, use C-h k instead of C-h c. >> Type C-h k Control-p. -This displays the documentation of the function, as well as its name, -in an Emacs window. When you are finished reading the output, type -C-x 1 to get rid of the help text. You do not have to do this right -away. You can do some editing based on the help text before you type -C-x 1. +This displays the documentation of the function, as well as its +name, in an Emacs window. When you are finished reading the +output, type C-x 1 to get rid of the help text. You do not have +to do this right away. You can do some editing while referring +to the help text and then type C-x 1. Here are some other useful C-h options: @@ -811,10 +811,16 @@ Here are some other useful C-h options: For some commands, Command Apropos will also list a one or two character sequence which has the same effect. ->> Type C-h a file<Return>. You will see a list of all M-x commands -with "file" in their names. You will also see commands -like C-x C-f and C-x C-w, listed beside the command names -find-file and write-file. +>> Type C-h a file<Return>. + +This displays in another window a list of all M-x commands with +"file" in their names. You will also see commands like C-x C-f +and C-x C-w, listed beside the command names find-file and +write-file. + +>> Type C-M-v to scroll the help window. Do this a few times. + +>> Type C-x 1 to delete the help window. CONCLUSION diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el index 1b4ebf8c3b..ff31feb68c 100644 --- a/lisp/emacs-lisp/debug.el +++ b/lisp/emacs-lisp/debug.el @@ -286,7 +286,16 @@ Redefining FUNCTION also does that." (defun cancel-debug-on-entry (&optional function) "Undo effect of \\[debug-on-entry] on FUNCTION. If argument is nil or an empty string, cancel for all functions." - (interactive "aCancel debug on entry (to function): ") + (interactive + (list (let ((name + (completing-read "Cancel debug on entry (to function): " + ;; Make an "alist" of the functions + ;; that now have debug on entry. + (mapcar 'list + (mapcar 'symbol-name + debug-function-list)) + nil t nil))) + (if name (intern name))))) (debugger-reenable) (if (and function (not (string= function ""))) (progn diff --git a/lisp/gud.el b/lisp/gud.el index aebcc68f4e..172781e0fe 100644 --- a/lisp/gud.el +++ b/lisp/gud.el @@ -1,5 +1,5 @@ ;; Grand Unified Debugger mode --- run gdb, sdb, dbx under Emacs control -;; @(#)gud.el 1.8 +;; @(#)gud.el 1.10 ;; This file is part of GNU Emacs. @@ -85,6 +85,24 @@ This association list has elements of the form ;; gud-<name>-file-visit ;; gud-<name>-set-break ;; +;; The job of the startup-command method is to fire up a copy of the debugger, +;; given an object file and source directory. +;; +;; The job of the marker-filter method is to detect file/line markers in +;; strings and set the global gud-last-frame to indicate what display +;; action (if any) should be triggered by the marker. Note that only +;; whetever the method *returns* is displayed in the buffer; thus, you +;; can filter the debugger's output, interpreting some and passing on +;; the rest. +;; +;; The job of the visit-file method is to visit and return the buffer indicated +;; by the car of gud-tag-frame. This may be a file name, a tag name, or +;; something else. +;; +;; The job of the gud-set-break method is to send the commands necessary +;; to set a breakpoint at a given line in a given source file. +;; +;; Debugger-specific information begins here: ;; ====================================================================== ;; gdb functions @@ -114,6 +132,7 @@ This association list has elements of the form (defun gud-gdb-set-break (proc f n) (gud-call "break %s:%d" f n)) +;;;###autoload (defun gdb (path) "Run gdb on program FILE in buffer *gud-FILE*. The directory containing FILE becomes the initial working directory @@ -162,6 +181,7 @@ and source-file directory for your debugger." (defun gud-sdb-set-break (proc f n) (gud-queue-send (format "e %s" f) (format "%d b" n))) +;;;###autoload (defun sdb (path) "Run sdb on program FILE in buffer *gud-FILE*. The directory containing FILE becomes the initial working directory @@ -207,6 +227,7 @@ and source-file directory for your debugger." (defun gud-dbx-set-break (proc f n) (gud-call "stop at \"%s\":%d" f n)) +;;;###autoload (defun dbx (path) "Run dbx on program FILE in buffer *gud-FILE*. The directory containing FILE becomes the initial working directory @@ -225,21 +246,9 @@ and source-file directory for your debugger." (run-hooks 'dbx-mode-hook) ) -;; The job of the debugger-startup method is to fire up a copy of the debugger, -;; given an object file and source directory. -;; -;; The job of the marker-filter method is to detect file/line markers in -;; strings and set the global gud-last-frame to indicate what display -;; action (if any) should be triggered by the marker -;; -;; The job of the visit-file method is to visit and return the buffer indicated -;; by the car of gud-tag-frame. This may be a file name, a tag name, or -;; something else. -;; -;; The job of the gud-set-break method is to send the commands necessary -;; to set a breakpoint at a given line in a given source file. ;; ;; End of debugger-specific information +;; (defvar gud-mode-map nil "Keymap for gud-mode.") @@ -519,3 +528,6 @@ It is for customization by you.") (switch-to-buffer current-gud-buffer) (goto-char (dot-max)) (insert-string comm))) + +;; gud.e ends here + diff --git a/lisp/mail/mail-utils.el b/lisp/mail/mail-utils.el index 320f096746..4f97f1d350 100644 --- a/lisp/mail/mail-utils.el +++ b/lisp/mail/mail-utils.el @@ -41,64 +41,66 @@ from START (inclusive) to END (exclusive)." "Delete comments and quoted strings in an address list ADDRESS. Also delete leading/trailing whitespace and replace FOO <BAR> with just BAR. Return a modified address list." - (if mail-use-rfc822 - (progn (require 'rfc822) - (mapconcat 'identity (rfc822-addresses address) ", ")) - (let (pos) - (string-match "\\`[ \t\n]*" address) - ;; strip surrounding whitespace - (setq address (substring address - (match-end 0) - (string-match "[ \t\n]*\\'" address - (match-end 0)))) + (if (null address) + nil + (if mail-use-rfc822 + (progn (require 'rfc822) + (mapconcat 'identity (rfc822-addresses address) ", ")) + (let (pos) + (string-match "\\`[ \t\n]*" address) + ;; strip surrounding whitespace + (setq address (substring address + (match-end 0) + (string-match "[ \t\n]*\\'" address + (match-end 0)))) - ;; Detect nested comments. - (if (string-match "[ \t]*(\\([^)\"\\]\\|\\\\.\\|\\\\\n\\)*(" address) - ;; Strip nested comments. - (save-excursion - (set-buffer (get-buffer-create " *temp*")) - (erase-buffer) - (insert address) - (set-syntax-table lisp-mode-syntax-table) - (goto-char 1) - (while (search-forward "(" nil t) - (forward-char -1) - (skip-chars-backward " \t") - (delete-region (point) - (save-excursion (forward-sexp 1) (point)))) - (setq address (buffer-string)) - (erase-buffer)) - ;; Strip non-nested comments an easier way. - (while (setq pos (string-match - ;; This doesn't hack rfc822 nested comments - ;; `(xyzzy (foo) whinge)' properly. Big deal. - "[ \t]*(\\([^)\"\\]\\|\\\\.\\|\\\\\n\\)*)" - address)) - (setq address - (mail-string-delete address - pos (match-end 0))))) + ;; Detect nested comments. + (if (string-match "[ \t]*(\\([^)\"\\]\\|\\\\.\\|\\\\\n\\)*(" address) + ;; Strip nested comments. + (save-excursion + (set-buffer (get-buffer-create " *temp*")) + (erase-buffer) + (insert address) + (set-syntax-table lisp-mode-syntax-table) + (goto-char 1) + (while (search-forward "(" nil t) + (forward-char -1) + (skip-chars-backward " \t") + (delete-region (point) + (save-excursion (forward-sexp 1) (point)))) + (setq address (buffer-string)) + (erase-buffer)) + ;; Strip non-nested comments an easier way. + (while (setq pos (string-match + ;; This doesn't hack rfc822 nested comments + ;; `(xyzzy (foo) whinge)' properly. Big deal. + "[ \t]*(\\([^)\"\\]\\|\\\\.\\|\\\\\n\\)*)" + address)) + (setq address + (mail-string-delete address + pos (match-end 0))))) - ;; strip `quoted' names (This is supposed to hack `"Foo Bar" <bar@host>') - (setq pos 0) - (while (setq pos (string-match - "[ \t]*\"\\([^\"\\]\\|\\\\.\\|\\\\\n\\)*\"[ \t\n]*" - address pos)) - ;; If the next thing is "@", we have "foo bar"@host. Leave it. - (if (and (> (length address) (match-end 0)) - (= (aref address (match-end 0)) ?@)) - (setq pos (match-end 0)) - (setq address - (mail-string-delete address - pos (match-end 0))))) - ;; Retain only part of address in <> delims, if there is such a thing. - (while (setq pos (string-match "\\(,\\|\\`\\)[^,]*<\\([^>,]*>\\)" - address)) - (let ((junk-beg (match-end 1)) - (junk-end (match-beginning 2)) - (close (match-end 0))) - (setq address (mail-string-delete address (1- close) close)) - (setq address (mail-string-delete address junk-beg junk-end)))) - address))) + ;; strip `quoted' names (This is supposed to hack `"Foo Bar" <bar@host>') + (setq pos 0) + (while (setq pos (string-match + "[ \t]*\"\\([^\"\\]\\|\\\\.\\|\\\\\n\\)*\"[ \t\n]*" + address pos)) + ;; If the next thing is "@", we have "foo bar"@host. Leave it. + (if (and (> (length address) (match-end 0)) + (= (aref address (match-end 0)) ?@)) + (setq pos (match-end 0)) + (setq address + (mail-string-delete address + pos (match-end 0))))) + ;; Retain only part of address in <> delims, if there is such a thing. + (while (setq pos (string-match "\\(,\\|\\`\\)[^,]*<\\([^>,]*>\\)" + address)) + (let ((junk-beg (match-end 1)) + (junk-end (match-beginning 2)) + (close (match-end 0))) + (setq address (mail-string-delete address (1- close) close)) + (setq address (mail-string-delete address junk-beg junk-end)))) + address)))) (or (and (boundp 'rmail-default-dont-reply-to-names) (not (null rmail-default-dont-reply-to-names))) |