summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/progmodes/cc-styles.el16
1 files changed, 13 insertions, 3 deletions
diff --git a/lisp/progmodes/cc-styles.el b/lisp/progmodes/cc-styles.el
index 08b5fae35f6..5d467e669f7 100644
--- a/lisp/progmodes/cc-styles.el
+++ b/lisp/progmodes/cc-styles.el
@@ -570,14 +570,24 @@ offset for that syntactic element. Optional ADD says to add SYMBOL to
;; variables first to the `cc-mode' style before instituting the new
;; style. Only do this once!
(or (assoc "cc-mode" c-style-alist)
- (progn
+ (let (copyfunc)
+ ;; use built-in copy-tree if its there.
+ (if (fboundp '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))))
(c-add-style "cc-mode"
(mapcar
(function
(lambda (var)
(let ((val (symbol-value var)))
- (cons var (if (atom val) val
- (copy-sequence val)))
+ (cons var (if (atom val)
+ val
+ (funcall copyfunc val)
+ ))
)))
'(c-backslash-column
c-basic-offset