project autoload extension
[emacsstuff.git] / cc-ide / cc-helper.el
index e25f2e2..66e32dc 100644 (file)
              (set-buffer cbuf)
              (save-excursion
                (goto-char (car template))
-               (concat "template <"
-                       (loop for arg in (c-parse-template-declaration)
-                             for sep = "" then ", "
-                             concat sep
-                             concat (progn
-                                      (buffer-substring-no-properties
-                                       (car arg) (if (c-move-to-initializer 
-                                                      (car arg) (cdr arg))
-                                                     (progn 
-                                                       (forward-char -1)
-                                                       (c-backward-syntactic-ws)
-                                                       (point))
-                                                   (cdr arg)))))
-                       ">"))))
-       do (insert "\n")))
+               (let ((args (c-parse-template-declaration)))
+                 (if args
+                     (concat "template <"
+                             (loop for arg in args
+                                   for sep = "" then ", "
+                                   concat sep
+                                   concat (progn
+                                            (buffer-substring-no-properties
+                                             (car arg) (if (c-move-to-initializer 
+                                                            (car arg) (cdr arg))
+                                                           (progn 
+                                                             (forward-char -1)
+                                                             (c-backward-syntactic-ws)
+                                                             (point))
+                                                         (cdr arg)))))
+                             ">\n")
+                   "")))))))
 
 (defun c-build-defun (&optional add-words no-kill)
   ;; build a function definition header for the current defun. if
           p1 p2 p3 c maxc fname)
       (set-buffer tbuf)
       (erase-buffer)
+      (c++-mode)
       (c-build-template-specs (aref state 0) cbuf)
       (if (aref state 1)
          (progn
-           (insert-buffer-substring cbuf (car (aref state 1)) (cdr (aref state 1)))
+           (save-excursion
+             (insert-buffer-substring cbuf (car (aref state 1)) (cdr (aref state 1)))
+             (insert " "))
            (if (not no-kill)
                (progn
-                 (beginning-of-line)
-                 (c-kill-special-keywords)
-                 (goto-char (point-max))))
-           (insert " ")))
+                 (c-kill-special-keywords)))))
       (if add-words
          (progn
-           (beginning-of-line)
-           (insert add-words " ")
-           (goto-char (point-max))))
+           (insert add-words " ")))
+      (goto-char (point-max))
       (setq p1 (point))
       (insert prefix)
       (if (> (length prefix) 0)