home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!channel1![rick.sheridan@channel1.com]
- From: "rick sheridan" <rick.sheridan@channel1.com>
- Newsgroups: gnu.emacs.help
- Subject: bc++ w/demacs #03
- Message-ID: <1992Aug29.1277.2640@channel1>
- Date: 29 Aug 92 21:46:42 EST
- Reply-To: "rick sheridan" <rick.sheridan@channel1.com>
- Distribution: gnu
- Organization: Channel 1 Communications
- Lines: 104
-
- ... Continued from previous message... Part 3 of 4
-
- (setq compilation-process nil)
- ;; Force mode line redisplay soon
- (set-buffer-modified-p (buffer-modified-p)))
- (if (and opoint (< opoint omax))
- (goto-char opoint))
- (set-buffer obuf)))))
-
- (defun kill-compilation ()
- "Kill the process made by the \\[compile] command."
- (interactive)
- (if compilation-process
- (interrupt-process compilation-process)))
-
- (defun kill-grep ()
- "Kill the process made by the \\[grep] command."
- (interactive)
- (if compilation-process
- (interrupt-process compilation-process)))
-
- (defun next-error (&optional argp)
- "Visit next compilation error message and corresponding source code.
- This operates on the output from the \\[compile] command.
- If all preparsed error messages have been processed,
- the error message buffer is checked for new ones.
- A non-nil argument (prefix arg, if interactive)
- means reparse the error message buffer and start at the first error."
- (interactive "P")
- (if (or (eq compilation-error-list t)
- argp)
- (progn (compilation-forget-errors)
- (setq compilation-parsing-end 1)))
- (if compilation-error-list
- nil
- (save-excursion
- (switch-to-buffer "*compilation*")
- (set-buffer-modified-p nil)
- (compilation-parse-errors)))
- (let ((next-error (car compilation-error-list)))
- (if (null next-error)
- (error (concat compilation-error-message
- (if (and compilation-process
- (eq (process-status compilation-process)
- 'run))
- " yet" ""))))
- (setq compilation-error-list (cdr compilation-error-list))
- (if (null (car (cdr next-error)))
- nil
- (switch-to-buffer (marker-buffer (car (cdr next-error))))
- (goto-char (car (cdr next-error)))
- (set-marker (car (cdr next-error)) nil))
- (let* ((pop-up-windows t)
- (w (display-buffer (marker-buffer (car next-error)))))
- (set-window-point w (car next-error))
- (set-window-start w (car next-error)))
- (set-marker (car next-error) nil)))
-
- ;; Set compilation-error-list to nil, and
- ;; unchain the markers that point to the error messages and their text,
- ;; so that they no longer slow down gap motion.
- ;; This would happen anyway at the next garbage collection,
- ;; but it is better to do it right away.
- (defun compilation-forget-errors ()
- (if (eq compilation-error-list t)
- (setq compilation-error-list nil))
- (while compilation-error-list
- (let ((next-error (car compilation-error-list)))
- (set-marker (car next-error) nil)
- (if (car (cdr next-error))
- (set-marker (car (cdr next-error)) nil)))
- (setq compilation-error-list (cdr compilation-error-list))))
-
- (defun compilation-parse-errors ()
- "Parse the current buffer as error messages.
- This makes a list of error descriptors, compilation-error-list.
- For each source-file, line-number pair in the buffer,
- the source file is read in, and the text location is saved in compilation-error-list.
- The function next-error, assigned to \\[next-error], takes the next error off the list
- and visits its location."
- (setq compilation-error-list nil)
- (message "Parsing error messages...")
- (let (text-buffer
- last-filename last-linenum)
- ;; Don't reparse messages already seen at last parse.
- (goto-char compilation-parsing-end)
- ;; Don't parse the first 4 lines as error messages.
- ;; This matters for grep.
- (if (bobp)
- (forward-line 4))
- (while (re-search-forward compilation-error-regexp nil t)
- (let (linenum filename
- error-marker text-marker)
- ;; Extract file name and line number from error message.
- (save-restriction
-
-
- Stay Tuned ... Continued in next message
-
- ---
- ■ PMDBM DEMO V1.5ß #0 ■ Evaluation Copy
- --
- Channel 1 (R) Cambridge, MA
-
-