]> code.delx.au - gnu-emacs/commitdiff
(c-copy-tree): New function.
authorRichard M. Stallman <rms@gnu.org>
Tue, 17 Feb 1998 07:26:46 +0000 (07:26 +0000)
committerRichard M. Stallman <rms@gnu.org>
Tue, 17 Feb 1998 07:26:46 +0000 (07:26 +0000)
(c-initialize-builtin-style): Use c-copy-tree.

lisp/progmodes/cc-styles.el

index 0e8b124752040a090b8220cc5555c42161f3a990..6001207544cc48dbedb94fc93cde00d3f8e87169 100644 (file)
@@ -584,26 +584,13 @@ offset for that syntactic element.  Optional ADD says to add SYMBOL to
   (c-initialize-cc-mode t)
   (or (assoc "cc-mode" c-style-alist)
       (assoc "user" c-style-alist)
-      (let (copyfunc)
-       ;; use built-in copy-tree if its there.
-       (if (and (fboundp 'copy-tree)
-                (functionp (symbol-function 'copy-tree)))
-           (setq copyfunc (symbol-function 'copy-tree))
-         (setq copyfunc (lambda (tree)
-                          (if (consp tree)
-                              (cons (funcall copyfunc (car tree))
-                                    (funcall copyfunc (cdr tree)))
-                            tree))))
+      (progn
        (c-add-style "user"
                     (mapcar
                      (function
                       (lambda (var)
                         (let ((val (symbol-value var)))
-                          (cons var (if (atom val)
-                                        val
-                                      (funcall copyfunc val)
-                                      ))
-                          )))
+                          (cons var (c-copy-tree val)))))
                      '(c-backslash-column
                        c-basic-offset
                        c-cleanup-list
@@ -622,6 +609,15 @@ offset for that syntactic element.  Optional ADD says to add SYMBOL to
   (if c-style-variables-are-local-p
       (c-make-styles-buffer-local)))
 
+(defun c-copy-tree (tree)
+  (if (consp tree)
+      (if (consp (cdr tree))
+         (cons (c-copy-tree (car tree))
+               (cons (c-copy-tree (cadr tree))
+                     (c-copy-tree (cddr tree))))
+       (cons (c-copy-tree (car tree))
+             (c-copy-tree (cdr tree))))
+    tree))
 
 (defun c-make-styles-buffer-local (&optional this-buf-only-p)
   "Make all CC Mode style variables buffer local.