0 Members and 1 Guest are viewing this topic.
(defun VovKaFicator (Func UsedVars) (or GenVarName (defun GenVarName (VarName UsedVars /) (if (assoc VarName UsedVars) UsedVars (cons (cons VarName (read (substr (vl-filename-mktemp "_" "\\") 2))) UsedVars) ) ) ) (cond ((null Func) nil) ((= (car Func) 'QUOTE) Func) ((listp (car Func)) (cons (VovKaFicator (car Func) UsedVars) (VovKaFicator (cdr Func) UsedVars)) ) ((= (car Func) 'DEFUN) (cons (car Func) (cons (cond ((cdr (assoc (cadr Func) UsedVars))) ((cadr Func)) ) (VovKaFicator (cddr Func) (progn (foreach v (vl-remove '/ (caddr Func)) (setq UsedVars (GenVarName v UsedVars)) ) UsedVars ) ) ) ) ) ((= (car Func) 'LAMBDA) (foreach v (vl-remove '/ (cadr Func)) (setq UsedVars (GenVarName v UsedVars))) (cons (car Func) (VovKaFicator (cdr Func) UsedVars)) ) ((assoc (car Func) UsedVars) (cons (cdr (assoc (car Func) UsedVars)) (VovKaFicator (cdr Func) UsedVars)) ) (t (cons (car Func) (VovKaFicator (cdr Func) UsedVars))) ))(setq testfunc (quote (defun test (arg1 DoNotRename / var1 var2 var3 test *error*) (defun *error* (msg) (princ msg)) (defun test (arg3) arg3) (setq var1 (strcat arg1 (setq var2 (strcat DoNotRename "_" arg1)))) (setq var3 (strcat (vl-princ-to-string (mapcar (function (lambda (e) (test e))) '(1 var1 3)) ) var1 ((lambda (str1 / str2 var1) (setq str2 (strcat arg1 (setq var1 DoNotRename))) (strcat str1 str2 var2) ) var1 ) var2 ) ) ) ))(prin1 (VovKaFicator testfunc '((*ERROR* . *ERROR*) (var3 . guesswhat) (DoNotRename . DoNotRename)) ))
Recursive... much...