From 474a797e4c69df527c0ae9687790b221876bcd96 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Sun, 19 Jan 1997 00:48:00 +0000 Subject: [PATCH] (mantemp-insert-cxx-syntax): Recognize non-class templates. (mantemp-make-mantemps-buffer): Simplify message. (mantemp-make-mantemps-region): Simplify message. --- lisp/progmodes/mantemp.el | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/lisp/progmodes/mantemp.el b/lisp/progmodes/mantemp.el index 16fc9b14e76..6c1ca3af27d 100644 --- a/lisp/progmodes/mantemp.el +++ b/lisp/progmodes/mantemp.el @@ -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 > >' +;; +;; Follow the same procedure as above and the line is changed to +;; +;; template struct valarray > >; ;; g++ does not output the templates that are needed by the ;; uninstantiated templates. Therefore you will often get new error @@ -139,7 +150,9 @@ the lines." (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 @@ should otherwise be empty. 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 @@ This function does the same as (set-buffer cur-buf) (yank) (kill-buffer mantemp-buffer)) - (message "mantemp-make-mantemps-region is done")) + (message "Done")) (provide 'mantemp) -- 2.39.2