*** empty log message ***
This commit is contained in:
parent
e652a34a67
commit
10a4c11f7e
4 changed files with 109 additions and 80 deletions
24
etc/TUTORIAL
24
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
|
||||
|
|
|
@ -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
|
||||
|
|
40
lisp/gud.el
40
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
|
||||
|
||||
|
|
|
@ -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)))
|
||||
|
|
Loading…
Add table
Reference in a new issue