Mercurial > emacs
changeset 16879:b020aae1fa01
(mantemp-insert-cxx-syntax): Recognize non-class templates.
(mantemp-make-mantemps-buffer): Simplify message.
(mantemp-make-mantemps-region): Simplify message.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sun, 19 Jan 1997 00:48:00 +0000 |
parents | ffc3290d43bf |
children | 40ea37a6dc40 |
files | lisp/progmodes/mantemp.el |
diffstat | 1 files changed, 20 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/progmodes/mantemp.el Sun Jan 19 00:47:24 1997 +0000 +++ b/lisp/progmodes/mantemp.el Sun Jan 19 00:48:00 1997 +0000 @@ -47,8 +47,8 @@ ;; turn this output into manual template instantiations, copy from the ;; first name of an objective file (here this is AFile.o) to right ;; after the very last `'' of the output. Put this in a buffer and -;; call mantemp-make-mantemps-buffer with the point in the buffer. -;; You can also use mantemp-make-mantemps-region directly on the +;; call `mantemp-make-mantemps-buffer' with the point in the buffer. +;; You can also use `mantemp-make-mantemps-region' directly on the ;; region if the output is already in Emacs. ;; ;; The resulting buffer yields (connect the three output lines above @@ -67,6 +67,17 @@ ;; which can be included in your C++ program. However, its probably ;; better to include the necessary header files in the buffer and ;; compile it as a stand alone implementation file. +;; +;; Sometimes, an uninstantiated template may cause a message like the +;; following +;; +;; main.cc:66: invalid use of undefined type +;; `struct valarray<double,arrayminusopclass<double,c_array<double> > >' +;; +;; Follow the same procedure as above and the line is changed to +;; +;; template struct valarray<double, +;; arrayminusopclass<double,c_array<double> > >; ;; g++ does not output the templates that are needed by the ;; uninstantiated templates. Therefore you will often get new error @@ -139,7 +150,9 @@ (while (re-search-forward "^.+" nil t) (progn (beginning-of-line) - (insert "template class "))) + (if (looking-at "struct[\\t ]+\\|class[\\t ]+") + (insert "template ") + (insert "template class ")))) (goto-char (point-min)) (message "Inserting 'template' for functions") (while (re-search-forward @@ -167,12 +180,12 @@ See the commentary in file mantemp.el for an example of use." (interactive) (mantemp-make-mantemps) - (message "mantemp-make-mantemps-buffer is done")) + (message "Done")) (defun mantemp-make-mantemps-region () "Make manual template instantiations from g++ error messages in the region. -This function does the same as -'mantemp-make-mantemps-buffer' but operates on the region." +This function does the same thing as `mantemp-make-mantemps-buffer', +but operates on the region." (interactive) (let ((cur-buf (current-buffer)) (mantemp-buffer (generate-new-buffer "*mantemp*"))) @@ -186,7 +199,7 @@ (set-buffer cur-buf) (yank) (kill-buffer mantemp-buffer)) - (message "mantemp-make-mantemps-region is done")) + (message "Done")) (provide 'mantemp)