|
|
1.1 ! root 1: (setq rcs-cmuedit- ! 2: "$Header: /usr/lib/lisp/cmuedit.l,v 1.1 83/01/29 18:33:36 jkf Exp $") ! 3: ! 4: (eval-when (compile load eval) (load 'cmumacs) (load 'cmufncs)) ! 5: ! 6: (declare (special c2 c3 tem nopr %changes)) ! 7: ! 8: (dv editsfns ! 9: ((declare ! 10: (special |#1| ! 11: |#2| ! 12: |#3| ! 13: $%dotflg ! 14: %lookdpth ! 15: %prevfn% ! 16: atm ! 17: autop ! 18: com ! 19: com0 ! 20: coms ! 21: copyflg ! 22: editcomsl ! 23: editracefn ! 24: %%w ! 25: findflag ! 26: l ! 27: l0 ! 28: lastail ! 29: lastp1 ! 30: lastp2 ! 31: lastword ! 32: lcflg ! 33: marklst ! 34: maxlevel ! 35: maxloop ! 36: mess ! 37: noprint ! 38: oldprompt ! 39: readbuf ! 40: %%x ! 41: toflg ! 42: topflg ! 43: undolst ! 44: undolst1 ! 45: unfind ! 46: upfindflg ! 47: usermacros ! 48: findarg ! 49: commentflg ! 50: changed)) ! 51: |##| ! 52: editfns ! 53: editf ! 54: editv ! 55: editp ! 56: edite ! 57: editl ! 58: editl0 ! 59: edval ! 60: editread ! 61: (declare (*expr editracefn)) ! 62: editcom ! 63: editcoma ! 64: editcoml ! 65: editmac ! 66: editcoms ! 67: edith ! 68: edit!undo ! 69: undoeditcom ! 70: editsmash ! 71: editnconc ! 72: editdsubst ! 73: edit1f ! 74: edit2f ! 75: edit4e ! 76: editqf ! 77: edit4f ! 78: editfpat ! 79: edit4f1 ! 80: editfindp ! 81: editbf ! 82: editbf1 ! 83: editnth ! 84: bpnt0 ! 85: bpnt ! 86: editri ! 87: editro ! 88: editli ! 89: editlo ! 90: editbi ! 91: editbo ! 92: editdefault ! 93: edup ! 94: edit*l ! 95: edit* ! 96: edor ! 97: errcom ! 98: edrpt ! 99: edloc ! 100: edlocl ! 101: edit: ! 102: editmbd ! 103: editxtr ! 104: editelt ! 105: editcont ! 106: editsw ! 107: editmv ! 108: editto ! 109: editbelow ! 110: editran ! 111: edit!0 ! 112: editrepack ! 113: editmakefn ! 114: usermacros ! 115: editracefn ! 116: lastword ! 117: maxlevel ! 118: maxloop ! 119: editcomsl ! 120: autop ! 121: upfindflg)) ! 122: ! 123: (declare ! 124: (special |#1| ! 125: |#2| ! 126: |#3| ! 127: $%dotflg ! 128: %lookdpth ! 129: %prevfn% ! 130: atm ! 131: autop ! 132: com ! 133: com0 ! 134: coms ! 135: copyflg ! 136: editcomsl ! 137: editracefn ! 138: %%w ! 139: findflag ! 140: l ! 141: l0 ! 142: lastail ! 143: lastp1 ! 144: lastp2 ! 145: lastword ! 146: lcflg ! 147: marklst ! 148: maxlevel ! 149: maxloop ! 150: mess ! 151: noprint ! 152: oldprompt ! 153: readbuf ! 154: %%x ! 155: toflg ! 156: topflg ! 157: undolst ! 158: undolst1 ! 159: unfind ! 160: upfindflg ! 161: usermacros ! 162: findarg ! 163: commentflg ! 164: changed)) ! 165: (declare (special c nopr)) ; LWE 1/11/80 Hacks for new compiler. ! 166: (def |##| ! 167: (nlambda (coms) ! 168: ((lambda (l undolst1) (editcoms coms)) l nil))) ! 169: ! 170: (def editfns ! 171: (nlambda (x) ! 172: (prog (y) ! 173: (setq y (eval (car x))) ! 174: l1 (cond ! 175: (y (print (car y)) ! 176: (eval ! 177: (list 'errset ! 178: (cons 'editf (cons (car y) (cdr x))))) ! 179: (setq y (cdr y)) ! 180: (go l1)))))) ! 181: ! 182: (def editf ! 183: (nlambda (x) ! 184: (prog (y fn changed) ! 185: (cond ! 186: ((null x) ! 187: (print '=) ! 188: (prin1 lastword) ! 189: (setq x (ncons lastword)))) ! 190: (cond ((symbolp (car x)) ! 191: (setq fn (car x)) ! 192: (cond ((*** setq y (get fn 'trace)) (setq fn (cdr y)))) ! 193: (cond ((setq y (getd fn)) ! 194: (edite y (cdr x) (car x)) ! 195: (cond ! 196: (changed ! 197: (*** cond ! 198: ((eq (car x) fn) ! 199: (*** move property to front) ! 200: (remprop (car x) (car y)) ! 201: (putprop (car x) (cadr y) (car y))) ! 202: ((setq y (cdr (get fn 'funtype))) ! 203: (*** move the *right* property of the ! 204: original word to the front) ! 205: (setq fn (get (car x) y)) ! 206: (remprop (car x) y) ! 207: (putprop (car x) fn y))))) ! 208: (return (setq lastword (car x)))) ! 209: ((and (boundp fn) (dtpr (cdr y))) (go l1)))) ! 210: ((dtpr (car x)) (go l1))) ! 211: (print (car x)) ! 212: (princ '" not editable") ! 213: (err nil) ! 214: l1 (print '=editv) ! 215: (return (eval (cons 'editv x)))))) ! 216: ! 217: (def editv ! 218: (nlambda (x) ! 219: (prog (y) ! 220: (cond ! 221: ((null x) ! 222: (print '=) ! 223: (prin1 lastword) ! 224: (setq x (ncons lastword)))) ! 225: (cond ((dtpr (car x)) (edite (eval (car x)) (cdr x) nil) (return t)) ! 226: ((and (symbolp (car x)) ! 227: (boundp (car x)) ! 228: (setq y (eval (car x)))) ! 229: (edite y (cdr x) (car x)) ! 230: (return (setq lastword (car x)))) ! 231: (t (print (car x)) (princ '" not editable") (err nil)))))) ! 232: ! 233: (def editp ! 234: (nlambda (x) ! 235: (cond ! 236: ((null x) (print '=) (prin1 lastword) (setq x (ncons lastword)))) ! 237: (cond ((dtpr (car x)) (print '=editv) (eval (cons 'editv x))) ! 238: ((symbolp (car x)) ! 239: (edite (plist (car x)) (cdr x) (car x)) ! 240: (setq lastword (car x))) ! 241: (t (print (car x)) (princ '" not editable") (err nil))))) ! 242: ! 243: (def edite ! 244: (lambda (expr coms atm) ! 245: (cond ((atom expr) (print expr) (princ '" not editable") (err nil)) ! 246: (t (car (last (editl (ncons expr) coms atm nil nil))))))) ! 247: ! 248: (def editl ! 249: (lambda (l coms atm marklst mess) ! 250: (prog (com lastail undolst undolst1 findflag lcflg unfind lastp1 lastp2 readbuf l0 com0 oldprompt upfindflg noprint findarg) ! 251: (makunbound 'findarg) ! 252: (setq upfindflg t) ! 253: (cond ((dtpr (setq l (catch (eval '(editl0)) edit-abort))) ! 254: (return l)) ! 255: (t (err nil)))))) ! 256: ! 257: (def editl0 ! 258: (lambda nil ! 259: (prog nil ! 260: (cond ! 261: (coms ! 262: (cond ((eq (car coms) 'start) ! 263: (setq readbuf (append (cdr coms) (list nil))) ! 264: (setq coms nil) ! 265: (*** don 't quit if command fails)) ! 266: (t (editcoms (append coms (list 'ok))) (return l))))) ! 267: (cond ! 268: ((or (null coms) (eq (car coms) 'start)) ! 269: (print (or mess 'edit)))) ! 270: (cond ! 271: ((or (eq (car l) ! 272: (car ! 273: (last ! 274: (car ! 275: (cond ((setq com ! 276: (get 'edit 'lastvalue))) ! 277: (t '((nil)))))))) ! 278: (and atm ! 279: (eq (car l) ! 280: (car ! 281: (last ! 282: (car ! 283: (cond ((setq com ! 284: (get atm 'edit-save))) ! 285: (t '((nil)))))))))) ! 286: (setq l (car com)) ! 287: (setq marklst (cadr com)) ! 288: (setq undolst (caddr com)) ! 289: (cond ((car undolst) (setq undolst (cons nil undolst)))) ! 290: (setq unfind (cdddr com)))) ! 291: (*** setq ! 292: oldprompt ! 293: (cons (sub1 (stkcount 'editl0 (add1 (spdlpt)) 0)) ! 294: (prompt 35))) ! 295: ct (setq noprint t) ! 296: (setq findflag nil) ! 297: a (setq undolst1 nil) ! 298: (cond ! 299: ((and autop (null readbuf) (not noprint)) (bpnt (list 0 autop)))) ! 300: (setq com (editread)) ! 301: (setq l0 l) ! 302: (setq com0 (cond ((atom com) com) (t (car com)))) ! 303: (cond ! 304: ((dtpr ! 305: (prog1 (errset (editcom com t)) ! 306: (cond ! 307: (undolst1 (setq undolst1 ! 308: (cons com0 (cons l0 undolst1))) ! 309: (setq undolst (cons undolst1 undolst)))))) ! 310: (go a))) ! 311: (setq readbuf nil) ! 312: (cond (coms (err nil))) ! 313: (terpri) ! 314: (cond (com (prin1 com) (princ '" ?") (terpri))) ! 315: (go ct)))) ! 316: ! 317: (def edval ! 318: (lambda (%%x) ! 319: (errset (eval %%x)))) ! 320: ! 321: (def editread ! 322: (lambda nil ! 323: (prog (x) ! 324: (cond ! 325: ((null readbuf) ! 326: (prog nil ! 327: l1 (terpri) ! 328: (princ '|#|) ! 329: (*** cond ! 330: ((neq (car oldprompt) 0) (princ (car oldprompt)))) ! 331: (*** prompt 35) ! 332: (cond ! 333: ((atom (setq readbuf (errset (lineread)))) ! 334: (terpri) ! 335: (go l1))) ! 336: (setq readbuf (car readbuf))))) ! 337: (setq x (car readbuf)) ! 338: (setq readbuf (cdr readbuf)) ! 339: (return x)))) ! 340: ! 341: (declare (*expr editracefn)) ! 342: ! 343: (def editcom ! 344: (lambda (c topflg) ! 345: (setq com c) ! 346: (cond (editracefn (editracefn c))) ! 347: (cond (findflag ! 348: (cond ((eq findflag 'bf) (setq findflag nil) (editbf c nil)) ! 349: (t (setq findflag nil) (editqf c)))) ! 350: ((numberp c) (setq l (edit1f c l)) (setq noprint nil)) ! 351: ((atom c) (editcoma c (null topflg))) ! 352: (t (editcoml c (null topflg)))) ! 353: (car l))) ! 354: ! 355: (def editcoma ! 356: (lambda (c copyflg) ! 357: (prog (tem nopr) ! 358: (selectq c ! 359: (help (setq nopr t) ! 360: (eval (cons 'help readbuf)) ! 361: (setq readbuf nil) ! 362: (*** inserted dec 78 by don cohen)) ! 363: (!0 (edit!0)) ! 364: (!nx ! 365: (setq l ! 366: ((lambda (l) ! 367: (prog (uf) ! 368: (setq uf l) ! 369: lp (cond ((or (null (setq l (cdr l))) ! 370: (null (cdr l))) ! 371: (err nil)) ! 372: ((or (null ! 373: (setq tem ! 374: (memq (car l) ! 375: (cadr ! 376: l)))) ! 377: (null (cdr tem))) ! 378: (go lp))) ! 379: (edit* 1) ! 380: (setq unfind uf) ! 381: (return l))) ! 382: l))) ! 383: (!undo (edit!undo t t nil)) ! 384: (? (bpnt0 (car l) 64) (setq nopr t)) ! 385: (?? (edith undolst) (setq nopr t)) ! 386: (bk (edit* -1)) ! 387: (delete (setq c '(delete)) (edit: ': nil nil)) ! 388: (mark (setq marklst (cons l marklst)) (setq nopr t)) ! 389: (nex ! 390: (setq l ! 391: ((lambda (l) (editbelow '_ 1) (edit* 1) l) ! 392: l))) ! 393: ((f bf) ! 394: (cond ((null topflg) (setq findflag c)) ! 395: (t (setq findarg ! 396: (cond ((or readbuf ! 397: (not ! 398: (boundp 'findarg))) ! 399: (editread)) ! 400: (t findarg))) ! 401: (selectq c ! 402: (f (editqf findarg)) ! 403: (bf (editbf findarg nil)) ! 404: (err nil))))) ! 405: (nil (setq nopr t)) ! 406: (autop nil) ! 407: (nx (edit* 1)) ! 408: (ok (cond ! 409: (atm (cond ! 410: ((and (dtpr undolst) (car undolst)) ! 411: (setq changed t) ! 412: (*** bound in editf) ! 413: (mark!changed atm))) ! 414: (remprop atm 'edit-save))) ! 415: (putprop 'edit ! 416: (cons (last l) (cons marklst (cons undolst l))) ! 417: 'lastvalue) ! 418: (throw l edit-abort) ! 419: (*** prompt (cdr oldprompt)) ! 420: (*** retfrom 'editl0 l)) ! 421: (p (bpnt0 (car l) 2) (setq nopr t)) ! 422: (pp (bpnt0 (car l) nil) (setq nopr t)) ! 423: (pp* ((lambda (commentflg) (bpnt0 (car l) nil)) t) ! 424: (setq nopr t)) ! 425: (repack (editrepack)) ! 426: (save (cond ! 427: (atm (cond ! 428: ((and (dtpr undolst) (car undolst)) ! 429: (mark!changed atm))) ! 430: (putprop 'edit ! 431: (putprop atm ! 432: (cons l ! 433: (cons marklst ! 434: (cons undolst ! 435: unfind))) ! 436: 'edit-save) ! 437: 'lastvalue))) ! 438: (*** prompt (cdr oldprompt)) ! 439: (*** retfrom 'editl0 l) ! 440: (throw l edit-abort)) ! 441: (stop (*** prompt (cdr oldprompt)) ! 442: (*** spreval ! 443: (stksrch 'editl0 (spdlpt) nil) ! 444: '(err nil)) ! 445: (throw nil edit-abort)) ! 446: (test (setq undolst (cons nil undolst)) (setq nopr t)) ! 447: (tty: (setq com com0) ! 448: (setq l (editl l nil atm nil 'tty:))) ! 449: (unblock (cond ((setq tem (memq nil undolst)) ! 450: (editsmash tem (ncons nil) (cdr tem))) ! 451: (t (terpri) (princ '"not blocked"))) ! 452: (setq nopr t)) ! 453: (undo (edit!undo topflg nil (cond (readbuf (editread))))) ! 454: (up (edup)) ! 455: (/ ! 456: (cond (unfind (setq c l) ! 457: (setq l unfind) ! 458: (and (cdr c) (setq unfind c))) ! 459: (t (err nil)))) ! 460: (/p ! 461: (cond ((and lastp1 (neq lastp1 l)) (setq l lastp1)) ! 462: ((and lastp2 (neq lastp2 l)) (setq l lastp2)) ! 463: (t (err nil)))) ! 464: (^ (and (cdr l) (setq unfind l)) (setq l (last l))) ! 465: (_ ! 466: (cond (marklst (and (cdr l) (setq unfind l)) ! 467: (setq l (car marklst))) ! 468: (t (err nil)))) ! 469: (__ ! 470: (cond (marklst ! 471: (and (cdr l) ! 472: (setq unfind l) ! 473: (setq l (car marklst)) ! 474: (setq marklst (cdr marklst)))) ! 475: (t (err nil)))) ! 476: (tl (top-level) (setq nopr t)) ! 477: (cond ((null (setq tem (editmac c usermacros nil))) ! 478: (editdefault c) ! 479: (setq nopr noprint)) ! 480: (t (editcoms (copy (cdr tem))) (setq nopr noprint)))) ! 481: (setq noprint nopr)))) ! 482: ! 483: (def editcoml ! 484: (lambda (c copyflg) ! 485: (prog (c2 c3 tem nopr) ! 486: lp (cond ((dtpr (cdr c)) ! 487: (setq c2 (cadr c)) ! 488: (cond ((dtpr (cddr c)) (setq c3 (caddr c))) ! 489: (t (setq c3 nil)))) ! 490: (t (setq c2 (setq c3 nil)))) ! 491: (cond ((and lcflg ! 492: (selectq c2 ! 493: ((to thru through) ! 494: (cond ! 495: ((null (cddr c)) ! 496: (setq c3 -1) ! 497: (setq c2 'thru))) ! 498: t) ! 499: nil)) ! 500: (editto (car c) c3 c2) ! 501: (return nil)) ! 502: ((numberp (car c)) ! 503: (edit2f (car c) (cdr c)) ! 504: (setq noprint nil) ! 505: (return nil)) ! 506: ((eq c2 '::) ! 507: (editcont (car c) (cddr c)) ! 508: (setq noprint nil) ! 509: (return nil))) ! 510: (selectq (car c) ! 511: ((a b :) (edit: (car c) nil (cdr c))) ! 512: (below (editbelow c2 (cond ((cddr c) c3) (t 1)))) ! 513: (bf (editbf c2 c3)) ! 514: (bi ! 515: (editbi c2 ! 516: (cond ((cddr c) c3) (t c2)) ! 517: (and (cdr c) (car l)))) ! 518: (bind (prog (|#1| |#2| |#3|) ! 519: (editcoms (cdr c))) ! 520: (setq nopr noprint)) ! 521: (bk (edit* (minus c2))) ! 522: (bo (editbo c2 (and (cdr c) (car l)))) ! 523: (change (editran c '((to) (edit: : |#1| |#3|)))) ! 524: (coms (prog nil ! 525: l1 (cond ! 526: ((setq c (cdr c)) ! 527: (editcom (setq com (eval (car c))) nil) ! 528: (go l1)))) ! 529: (setq nopr noprint)) ! 530: (comsq (editcoms (cdr c)) (setq nopr noprint)) ! 531: (copy ! 532: (editran c '((to) (editmv |#1| (car |#3|) (cdr |#3|) t)))) ! 533: (cp (editmv nil (cadr c) (cddr c) t)) ! 534: (delete (editran c '(nil (edit: : |#1| nil)))) ! 535: (e (setq tem (eval c2)) ! 536: (cond ((null (cddr c)) (print tem))) ! 537: (setq nopr t)) ! 538: (embed (editran c '((in with) (editmbd |#1| |#3|)))) ! 539: (extract (editran c '((from) (editxtr |#3| |#1|)))) ! 540: (f (edit4f c2 c3)) ! 541: (f= (edit4f (cons '== c2) c3)) ! 542: (fs ! 543: (prog nil ! 544: l1 (cond ! 545: ((setq c (cdr c)) ! 546: (editqf (setq com (car c))) ! 547: (go l1))))) ! 548: (help (eval c) ! 549: (setq nopr t) ! 550: (*** inserted dec 78 by don cohen)) ! 551: (i (setq c ! 552: (cons (cond ((atom c2) c2) (t (eval c2))) ! 553: (mapcar (function ! 554: (lambda (x) ! 555: (cond (topflg (print ! 556: (setq x ! 557: (eval ! 558: x))) ! 559: x) ! 560: (t (eval x))))) ! 561: (cddr c)))) ! 562: (setq copyflg nil) ! 563: (go lp)) ! 564: (if (cond ((and (dtpr (setq tem (edval c2))) (car tem)) ! 565: (cond ((cdr c) (editcoms c3)))) ! 566: ((and (cddr c) (cdddr c)) (editcoms (cadddr c))) ! 567: (t (err nil))) ! 568: (setq nopr noprint)) ! 569: (insert ! 570: (editran c '((before after for) (edit: |#2| |#3| |#1|)))) ! 571: (lc (edloc (cdr c))) ! 572: (lcl (edlocl (cdr c))) ! 573: (li (editli c2 (and (cdr c) (car l)))) ! 574: (lo (editlo c2 (and (cdr c) (car l)))) ! 575: ((lp lpq) ! 576: (edrpt (cdr c) (eq (car c) 'lpq)) ! 577: (setq nopr noprint)) ! 578: (m (cond ((atom c2) ! 579: (cond ((setq tem (editmac c2 usermacros nil)) ! 580: (rplacd tem (cddr c))) ! 581: (t ! 582: (setq usermacros ! 583: (cons (cons c2 ! 584: (cons nil (cddr c))) ! 585: usermacros))))) ! 586: (t ! 587: (cond ((setq tem ! 588: (editmac (car c2) usermacros t)) ! 589: (rplaca tem (caddr c)) ! 590: (rplacd tem (cdddr c))) ! 591: (t (nconc editcomsl (ncons (car c2))) ! 592: (mark!changed 'editcomsl) ! 593: (setq usermacros ! 594: (cons (cons (car c2) (cddr c)) ! 595: usermacros)))))) ! 596: (mark!changed 'usermacros) ! 597: (setq nopr t)) ! 598: (makefn ! 599: (cond ((or (null c2) (null c3) (null (cdddr c))) ! 600: (err nil)) ! 601: (t ! 602: (editmakefn c2 ! 603: c3 ! 604: (cadddr c) ! 605: (cond ((null (cddddr c)) (cadddr c)) ! 606: (t (car (cddddr c)))))))) ! 607: (mbd (editmbd nil (cdr c))) ! 608: (move ! 609: (editran c ! 610: '((to) (editmv |#1| (car |#3|) (cdr |#3|) nil)))) ! 611: (mv (editmv nil (cadr c) (cddr c) nil)) ! 612: (n (cond ((atom (car l)) (err nil))) ! 613: (editnconc (car l) ! 614: (cond (copyflg (copy (cdr c))) ! 615: (t (append (cdr c) nil))))) ! 616: (nex ! 617: (setq l ! 618: ((lambda (l) ! 619: (editbelow c2 (cond ((cddr c) c3) (t 1))) ! 620: (edit* 1) ! 621: l) ! 622: l))) ! 623: (nth ! 624: (cond ! 625: ((neq (setq tem (editnth (car l) c2)) (car l)) ! 626: (setq l (cons tem l))))) ! 627: (nx (edit* c2)) ! 628: (orf (edit4f (cons '*any* (cdr c)) 'n)) ! 629: (orr (edor (cdr c)) (setq nopr noprint)) ! 630: (p (cond ! 631: ((neq lastp1 l) (setq lastp2 lastp1) (setq lastp1 l))) ! 632: (bpnt (cdr c)) ! 633: (setq nopr t)) ! 634: (r ((lambda (l) ! 635: (edit4f c2 t) ! 636: (setq unfind l) ! 637: (setq c2 ! 638: (cond ((and (atom c2) ! 639: upfindflg ! 640: (dtpr (car l))) ! 641: (caar l)) ! 642: (t (car l))))) ! 643: (ncons (car l))) ! 644: (editdsubst c3 c2 (car l))) ! 645: (repack (edloc (cdr c)) (editrepack)) ! 646: (replace (editran c '((with by) (edit: : |#1| |#3|)))) ! 647: (ri (editri c2 c3 (and (cdr c) (cddr c) (car l)))) ! 648: (ro (editro c2 (and (cdr c) (car l)))) ! 649: (s (set c2 ! 650: (cond ((null c2) (err nil)) ! 651: (t ((lambda (l) (edloc (cddr c))) l)))) ! 652: (setq nopr t)) ! 653: (second (edloc (append (cdr c) (cdr c)))) ! 654: (surround (editran c '((with in) (editmbd |#1| |#3|)))) ! 655: (sw (editsw (cadr c) (caddr c))) ! 656: (third (edloc (append (cdr c) (cdr c) (cdr c)))) ! 657: ((thru to) (editto nil c2 (car c))) ! 658: (undo (edit!undo topflg nil c2)) ! 659: (xtr (editxtr nil (cdr c))) ! 660: (_ ! 661: (setq l ! 662: ((lambda (l) ! 663: (prog (uf) ! 664: (setq uf l) ! 665: (setq c2 (editfpat c2)) ! 666: lp (cond ((cond ((and (atom c2) ! 667: (dtpr (car l))) ! 668: (eq c2 (caar l))) ! 669: ((eq (car c2) ! 670: 'if) ! 671: (cond ((atom ! 672: (setq tem ! 673: (edval ! 674: (cadr ! 675: c2)))) ! 676: nil) ! 677: (t tem))) ! 678: (t ! 679: (edit4e c2 ! 680: (cond ((eq (car ! 681: c2) ! 682: '@) ! 683: (caar ! 684: l)) ! 685: (t ! 686: (car ! 687: l)))))) ! 688: (setq unfind uf) ! 689: (return l)) ! 690: ((setq l (cdr l)) (go lp))) ! 691: (err nil))) ! 692: l))) ! 693: (cond ((null (setq tem (editmac (car c) usermacros t))) ! 694: (editdefault c) ! 695: (setq nopr noprint)) ! 696: ((not (atom (setq c3 (car tem)))) ! 697: (editcoms (subpair c3 (cdr c) (cdr tem))) ! 698: (setq nopr noprint)) ! 699: (t (editcoms (subst (cdr c) c3 (cdr tem))) ! 700: (setq nopr noprint)))) ! 701: (setq noprint nopr)))) ! 702: ! 703: (def editmac ! 704: (lambda (c lst flg) ! 705: (prog (x y) ! 706: lp (cond ((null lst) (return nil)) ! 707: ((eq c (car (setq x (car lst)))) ! 708: (setq y (cdr x)) ! 709: (cond ((cond (flg (car y)) (t (null (car y)))) (return y))))) ! 710: (setq lst (cdr lst)) ! 711: (go lp)))) ! 712: ! 713: (def editcoms ! 714: (lambda (coms) ! 715: (prog nil ! 716: l1 (cond ((atom coms) (return (car l)))) ! 717: (editcom (car coms) nil) ! 718: (setq coms (cdr coms)) ! 719: (go l1)))) ! 720: ! 721: (def edith ! 722: (lambda (lst) ! 723: (prog nil ! 724: (terpri) ! 725: l1 (cond ((null lst) (return nil)) ! 726: ((null (car lst)) (prin1 'block) (go l2)) ! 727: ((null (caar lst)) (go l3)) ! 728: ((numberp (caar lst)) ! 729: (prin1 (list (caar lst) '--)) ! 730: (go l2))) ! 731: (prin1 (caar lst)) ! 732: l2 (princ '" ") ! 733: l3 (setq lst (cdr lst)) ! 734: (go l1)))) ! 735: ! 736: (def edit!undo ! 737: (lambda (printflg !undoflg undop) ! 738: (prog (lst flg) ! 739: (setq lst undolst) ! 740: lp (cond ((or (null lst) (null (car lst))) (go out))) ! 741: (cond ((null undop) ! 742: (selectq (caar lst) ! 743: ((nil !undo unblock) (go lp1)) ! 744: (undo (cond ((null !undoflg) (go lp1)))) ! 745: nil)) ! 746: ((neq undop (caar lst)) (go lp1))) ! 747: (undoeditcom (car lst) printflg) ! 748: (cond ((null !undoflg) (return nil))) ! 749: (setq flg t) ! 750: lp1 (setq lst (cdr lst)) ! 751: (go lp) ! 752: out (cond (flg (return nil)) ! 753: ((and lst (cdr lst)) (print 'blocked)) ! 754: (t (terpri) (princ '"nothing saved")))))) ! 755: ! 756: (def undoeditcom ! 757: (lambda (x flg) ! 758: (prog (c) ! 759: (cond ((atom x) (err nil)) ! 760: ((neq (car (last l)) (car (last (cadr x)))) ! 761: (terpri) ! 762: (princ '"different expression") ! 763: (setq com nil) ! 764: (err nil))) ! 765: (setq c (car x)) ! 766: (setq l (cadr x)) ! 767: (prog (y z) ! 768: (setq y (cdr x)) ! 769: l1 (cond ! 770: ((setq y (cdr y)) ! 771: (setq z (car y)) ! 772: (cond ((eq (car z) 'r) ! 773: ((lambda (l) ! 774: (editcom (list 'r ! 775: (cadr z) ! 776: (caddr z)) ! 777: nil)) ! 778: (cadddr z))) ! 779: (t (editsmash (car z) (cadr z) (cddr z)))) ! 780: (go l1)))) ! 781: (editsmash x nil (cons (car x) (cdr x))) ! 782: (and flg ! 783: (setq flg ! 784: (cond ((not (numberp c)) c) (t (cons c '(--))))) ! 785: (print flg) ! 786: (princ 'undone)) ! 787: (return t)))) ! 788: ! 789: (def editsmash ! 790: (lambda (old a d) ! 791: (cond ((atom old) (err nil))) ! 792: (setq undolst1 (cons (cons old (cons (car old) (cdr old))) undolst1)) ! 793: (rplaca old a) ! 794: (rplacd old d))) ! 795: ! 796: (def editnconc ! 797: (lambda (x y) ! 798: (prog (tem) ! 799: (return ! 800: (cond ((null x) y) ! 801: ((atom x) (err nil)) ! 802: (t (editsmash (setq tem (last x)) (car tem) y) x)))))) ! 803: ! 804: (def editdsubst ! 805: (lambda (x y z) ! 806: (prog nil ! 807: lp (cond ((atom z) (return nil)) ! 808: ((cond ((symbolp y) ! 809: (or (eq y (car z)) ! 810: (and (stringp (car z)) (eqstr y (car z))))) ! 811: (t (equal y (car z)))) ! 812: (editsmash z (copy x) (cdr z))) ! 813: (t (editdsubst x y (car z)))) ! 814: (cond ! 815: ((and y (eq y (cdr z))) ! 816: (editsmash z (car z) (copy x)) ! 817: (return nil))) ! 818: (setq z (cdr z)) ! 819: (go lp)))) ! 820: ! 821: (def edit1f ! 822: (lambda (c l) ! 823: (cond ((eq c 0) (cond ((null (cdr l)) (err nil)) (t (cdr l)))) ! 824: ((atom (car l)) (err nil)) ! 825: ((> c 0) ! 826: (cond ((> c (length (car l))) (err nil)) ! 827: (t (cons (car (setq lastail (Cnth (car l) c))) l)))) ! 828: ((> (minus c) (length (car l))) (err nil)) ! 829: (t ! 830: (cons (car ! 831: (setq lastail ! 832: (Cnth (car l) (+ (length (car l)) (add1 c))))) ! 833: l))))) ! 834: ! 835: (def edit2f ! 836: (lambda (n x) ! 837: (prog (cl) ! 838: (setq cl (car l)) ! 839: (cond ((atom cl) (err nil)) ! 840: (copyflg (setq x (copy x))) ! 841: (t (setq x (append x nil)))) ! 842: (cond ((> n 0) ! 843: (cond ((> n (length cl)) (err nil)) ! 844: ((null x) (go delete)) ! 845: (t (go replace)))) ! 846: ((or (eq n 0) (null x) (> (minus n) (length cl))) (err nil)) ! 847: (t (cond ((neq n -1) (setq cl (Cnth cl (minus n))))) ! 848: (editsmash cl (car x) (cons (car cl) (cdr cl))) ! 849: (cond ! 850: ((cdr x) ! 851: (editsmash cl (car cl) (nconc (cdr x) (cdr cl))))) ! 852: (return nil))) ! 853: delete ! 854: (cond ((eq n 1) ! 855: (or (dtpr (cdr cl)) (err nil)) ! 856: (editsmash cl (cadr cl) (cddr cl))) ! 857: (t (setq cl (Cnth cl (sub1 n))) ! 858: (editsmash cl (car cl) (cddr cl)))) ! 859: (return nil) ! 860: replace ! 861: (cond ((neq n 1) (setq cl (Cnth cl n)))) ! 862: (editsmash cl (car x) (cdr cl)) ! 863: (cond ((cdr x) (editsmash cl (car cl) (nconc (cdr x) (cdr cl)))))))) ! 864: ! 865: (def edit4e ! 866: (lambda (pat y) ! 867: (cond ((eq pat y) t) ! 868: ((atom pat) ! 869: (or (eq pat '&) ! 870: (equal pat y) ! 871: (and (stringp y) (stringp pat) (eqstr pat y)))) ! 872: ((eq (car pat) '*any*) ! 873: (prog nil ! 874: lp (cond ((null (setq pat (cdr pat))) (return nil)) ! 875: ((edit4e (car pat) y) (return t))) ! 876: (go lp))) ! 877: ((and (eq (car pat) '@) (atom y)) ! 878: (prog (z) ! 879: (setq pat (cdr pat)) ! 880: (setq z (explodec y)) ! 881: lp (cond ((eq (car pat) '@) ! 882: (*** freelist z) ! 883: (print '=) ! 884: (prin1 y) ! 885: (return t)) ! 886: ((null z) (return nil)) ! 887: ((neq (car pat) (car z)) ! 888: (*** freelist z) ! 889: (return nil))) ! 890: (setq pat (cdr pat)) ! 891: (setq z (cdr z)) ! 892: (go lp))) ! 893: ((eq (car pat) '--) ! 894: (or (null (setq pat (cdr pat))) ! 895: (prog nil ! 896: lp (cond ((edit4e pat y) (return t)) ! 897: ((atom y) (return nil))) ! 898: (setq y (cdr y)) ! 899: (go lp)))) ! 900: ((eq (car pat) '==) (eq (cdr pat) y)) ! 901: ((atom y) nil) ! 902: ((edit4e (car pat) (car y)) (edit4e (cdr pat) (cdr y)))))) ! 903: ! 904: (def editqf ! 905: (lambda (pat) ! 906: (prog (q1) ! 907: (cond ((and (dtpr (car l)) ! 908: (dtpr (setq q1 (cdar l))) ! 909: (setq q1 (memq pat q1))) ! 910: (setq l ! 911: (cons (cond (upfindflg q1) ! 912: (t (setq lastail q1) (car q1))) ! 913: l))) ! 914: (t (edit4f pat 'n)))))) ! 915: ! 916: (def edit4f ! 917: (lambda (pat %%x) ! 918: (prog (ll x %%w) ! 919: (setq %%w (ncons nil)) ! 920: (setq com pat) ! 921: (setq pat (editfpat pat)) ! 922: (setq ll l) ! 923: (cond ! 924: ((eq %%x 'n) ! 925: (setq %%x 1) ! 926: (cond ((atom (car l)) (go lp1)) ! 927: ((and (atom (caar l)) upfindflg) ! 928: (setq ll (cons (caar l) l)) ! 929: (go lp1)) ! 930: (t (setq ll (cons (caar l) l)))))) ! 931: (cond ((and %%x (not (numberp %%x))) (setq %%x 1))) ! 932: (cond ! 933: ((and (edit4e (cond ((and (dtpr pat) (eq (car pat) ':::)) ! 934: (cdr pat)) ! 935: (t pat)) ! 936: (car ll)) ! 937: (or (null %%x) (eq (setq %%x (sub1 %%x)) 0))) ! 938: (return (setq l ll)))) ! 939: (setq x (car ll)) ! 940: lp (cond ((edit4f1 pat x maxlevel) ! 941: (and (cdr l) (setq unfind l)) ! 942: (return ! 943: (car ! 944: (setq l ! 945: (nconc (car %%w) ! 946: (cond ((eq (cadr %%w) (car ll)) (cdr ll)) ! 947: (t ll))))))) ! 948: ((null %%x) (err nil))) ! 949: lp1 (setq x (car ll)) ! 950: (cond ((null (setq ll (cdr ll))) (err nil)) ! 951: ((and (setq x (memq x (car ll))) (dtpr (setq x (cdr x)))) ! 952: (go lp))) ! 953: (go lp1)))) ! 954: ! 955: (def editfpat ! 956: (lambda (pat) ! 957: (cond ((dtpr pat) ! 958: (cond ((or (eq (car pat) '==) (eq (car pat) '@)) pat) ! 959: (t (mapcar (function editfpat) pat)))) ! 960: ((eq (nthchar pat -1) '@) (cons '@ (explodec pat))) ! 961: (t pat)))) ! 962: ! 963: (def edit4f1 ! 964: (lambda (pat x lvl) ! 965: (prog nil ! 966: lp (cond ((not (> lvl 0)) ! 967: (terpri) ! 968: (princ '"maxlevel exceeded") ! 969: (return nil)) ! 970: ((atom x) (return nil)) ! 971: ((and (dtpr pat) ! 972: (eq (car pat) ':::) ! 973: (edit4e (cdr pat) x) ! 974: (or (null %%x) (eq (setq %%x (sub1 %%x)) 0)))) ! 975: ((and (or (atom pat) (neq (car pat) ':::)) ! 976: (edit4e pat (car x)) ! 977: (or (null %%x) (eq (setq %%x (sub1 %%x)) 0))) ! 978: (cond ! 979: ((or (null upfindflg) (dtpr (car x))) ! 980: (setq lastail x) ! 981: (setq x (car x))))) ! 982: ((and pat ! 983: (eq pat (cdr x)) ! 984: (or (null %%x) (eq (setq %%x (sub1 %%x)) 0))) ! 985: (setq x (cdr x))) ! 986: ((and %%x ! 987: (dtpr (car x)) ! 988: (edit4f1 pat (car x) (sub1 lvl)) ! 989: (eq %%x 0)) ! 990: (setq x (car x))) ! 991: (t (setq x (cdr x)) (setq lvl (sub1 lvl)) (go lp))) ! 992: (cond ((and %%w (neq x (cadr %%w))) (tconc %%w x))) ! 993: (return (or %%w t))))) ! 994: ! 995: (def editfindp ! 996: (lambda (x pat flg) ! 997: (prog (%%x lastail %%w) ! 998: (setq %%x 1) ! 999: (and (null flg) (setq pat (editfpat pat))) ! 1000: (return (or (edit4e pat x) (edit4f1 pat x maxlevel)))))) ! 1001: ! 1002: (def editbf ! 1003: (lambda (pat n) ! 1004: (prog (ll x y %%w) ! 1005: (setq ll l) ! 1006: (setq %%w (ncons nil)) ! 1007: (setq com pat) ! 1008: (setq pat (editfpat pat)) ! 1009: (cond ((and (null n) (cdr ll)) (go lp1))) ! 1010: lp (cond ! 1011: ((editbf1 pat (car ll) maxlevel y) ! 1012: (setq unfind l) ! 1013: (return ! 1014: (car ! 1015: (setq l ! 1016: (nconc (car %%w) ! 1017: (cond ((eq (car ll) (cadr %%w)) (cdr ll)) ! 1018: (t ll)))))))) ! 1019: lp1 (setq x (car ll)) ! 1020: (cond ((null (setq ll (cdr ll))) (err nil)) ! 1021: ((or (setq y (memq x (car ll))) (setq y (tailp x (car ll)))) ! 1022: (go lp))) ! 1023: (go lp1)))) ! 1024: ! 1025: (def editbf1 ! 1026: (lambda (pat x lvl tail) ! 1027: (prog (y) ! 1028: lp (cond ((not (> lvl 0)) ! 1029: (terpri) ! 1030: (princ '"maxlevel exceeded") ! 1031: (return nil)) ! 1032: ((eq tail x) ! 1033: (return ! 1034: (cond ! 1035: ((edit4e (cond ((and (dtpr pat) ! 1036: (eq (car pat) ':::)) ! 1037: (cdr pat)) ! 1038: (t pat)) ! 1039: x) ! 1040: (tconc %%w x)))))) ! 1041: (setq y x) ! 1042: lp1 (cond ! 1043: ((null (or (eq (cdr y) tail) (atom (cdr y)))) ! 1044: (setq y (cdr y)) ! 1045: (go lp1))) ! 1046: (setq tail y) ! 1047: (cond ((and (dtpr (car tail)) ! 1048: (editbf1 pat (car tail) (sub1 lvl) nil)) ! 1049: (setq tail (car tail))) ! 1050: ((and (dtpr pat) ! 1051: (eq (car pat) ':::) ! 1052: (edit4e (cdr pat) tail))) ! 1053: ((and (or (atom pat) (neq (car pat) ':::)) ! 1054: (edit4e pat (car tail))) ! 1055: (cond ! 1056: ((or (null upfindflg) (dtpr (car tail))) ! 1057: (setq lastail tail) ! 1058: (setq tail (car tail))))) ! 1059: ((and pat (eq pat (cdr tail))) (setq x (cdr x))) ! 1060: (t (setq lvl (sub1 lvl)) (go lp))) ! 1061: (cond ((neq tail (cadr %%w)) (tconc %%w tail))) ! 1062: (return %%w)))) ! 1063: ! 1064: (def editnth ! 1065: (lambda (x n) ! 1066: (cond ((atom x) (err nil)) ! 1067: ((not (numberp n)) ! 1068: (or (memq n x) (memq (setq n (editelt n (ncons x))) x) (tailp n x))) ! 1069: ((eq n 0) (err nil)) ! 1070: ((null ! 1071: (setq n ! 1072: (cond ! 1073: ((or (not (minusp n)) ! 1074: (> (setq n (plus (length x) n 1)) 0)) ! 1075: (Cnth x n))))) ! 1076: (err nil)) ! 1077: (t n)))) ! 1078: ! 1079: (def bpnt0 ! 1080: (lambda (y n) ! 1081: (cond ((neq lastp1 l) (setq lastp2 lastp1) (setq lastp1 l))) ! 1082: (cond (n (setq $%dotflg (tailp (car l) (cadr l))) ! 1083: (setq %prevfn% '" ") ! 1084: (printlev y n)) ! 1085: (t (terpri) (*** sprint y 1) ($prpr y) (terpri))))) ! 1086: ! 1087: (def bpnt ! 1088: (lambda (x) ! 1089: (prog (y n) ! 1090: (cond ((eq (car x) 0) ! 1091: (setq y (car l)) ! 1092: (setq $%dotflg (tailp (car l) (cadr l)))) ! 1093: (t (setq y (car (editnth (car l) (car x)))))) ! 1094: (cond ((null (cdr x)) (setq n 2)) ! 1095: ((not (numberp (setq n (cadr x)))) (err nil)) ! 1096: ((minusp n) (err nil))) ! 1097: (setq %prevfn% '" ") ! 1098: (return (printlev y n))))) ! 1099: ! 1100: (def editri ! 1101: (lambda (m n x) ! 1102: (prog (a b) ! 1103: (setq a (editnth x m)) ! 1104: (setq b (editnth (car a) n)) ! 1105: (cond ((or (null a) (null b)) (err nil))) ! 1106: (editsmash a (car a) (editnconc (cdr b) (cdr a))) ! 1107: (editsmash b (car b) nil)))) ! 1108: ! 1109: (def editro ! 1110: (lambda (n x) ! 1111: (setq x (editnth x n)) ! 1112: (cond ((or (null x) (atom (car x))) (err nil))) ! 1113: (editsmash (setq n (last (car x))) (car n) (cdr x)) ! 1114: (editsmash x (car x) nil))) ! 1115: ! 1116: (def editli ! 1117: (lambda (n x) ! 1118: (setq x (editnth x n)) ! 1119: (cond ((null x) (err nil))) ! 1120: (editsmash x (cons (car x) (cdr x)) nil))) ! 1121: ! 1122: (def editlo ! 1123: (lambda (n x) ! 1124: (setq x (editnth x n)) ! 1125: (cond ((or (null x) (atom (car x))) (err nil))) ! 1126: (editsmash x (caar x) (cdar x)))) ! 1127: ! 1128: (def editbi ! 1129: (lambda (m n x) ! 1130: (prog (a b) ! 1131: (setq b (cdr (setq a (editnth x n)))) ! 1132: (setq x (editnth x m)) ! 1133: (cond ((and a (not (> (length a) (length x)))) ! 1134: (editsmash a (car a) nil) ! 1135: (editsmash x (cons (car x) (cdr x)) b)) ! 1136: (t (err nil)))))) ! 1137: ! 1138: (def editbo ! 1139: (lambda (n x) ! 1140: (setq x (editnth x n)) ! 1141: (cond ((atom (car x)) (err nil))) ! 1142: (editsmash x (caar x) (editnconc (cdar x) (cdr x))))) ! 1143: ! 1144: (def editdefault ! 1145: (lambda (editx) ! 1146: (prog nil ! 1147: (cond (lcflg ! 1148: (return ! 1149: (cond ((eq lcflg t) (editqf editx)) ! 1150: (t (editcom (list lcflg editx) topflg))))) ! 1151: ((null topflg) (err nil)) ! 1152: ((memq editx editcomsl) ! 1153: (cond (readbuf (setq editx (cons editx readbuf)) ! 1154: (setq readbuf nil)) ! 1155: (t (err nil)))) ! 1156: (t (err nil))) ! 1157: (return (editcom (setq com editx) topflg))))) ! 1158: ! 1159: (def edup ! 1160: (lambda nil ! 1161: (prog (c-exp l1 x y) ! 1162: (setq c-exp (car l)) ! 1163: lp (cond ((null (setq l1 (cdr l))) (err nil)) ! 1164: ((tailp c-exp (car l1)) (return nil)) ! 1165: ((not (setq x (memq c-exp (car l1)))) (err nil)) ! 1166: ((or (eq x lastail) (not (setq y (memq c-exp (cdr x)))))) ! 1167: ((and (eq c-exp (car lastail)) (tailp lastail y)) ! 1168: (setq x lastail)) ! 1169: (t (terpri) ! 1170: (princ c-exp) ! 1171: (princ '"- location uncertain"))) ! 1172: (cond ((eq x (car l1)) (setq l l1)) (t (setq l (cons x l1)))) ! 1173: (return nil)))) ! 1174: ! 1175: (def edit*l ! 1176: (lambda (l) ! 1177: (edup) ! 1178: (length (car l)))) ! 1179: ! 1180: (def edit* ! 1181: (lambda (n) ! 1182: (car ! 1183: (setq l ! 1184: ((lambda (com l m) ! 1185: (cond ((not (> m n)) (err nil))) ! 1186: (edit!0) ! 1187: (edit1f (difference n m) l)) ! 1188: nil ! 1189: l ! 1190: (edit*l l)))))) ! 1191: ! 1192: (def edor ! 1193: (lambda (coms) ! 1194: (prog nil ! 1195: lp (cond ((null coms) (err nil)) ! 1196: ((dtpr ! 1197: (errset ! 1198: (setq l ! 1199: ((lambda (l) ! 1200: (cond ((atom (car coms)) ! 1201: (editcom (car coms) nil)) ! 1202: (t (editcoms (car coms)))) ! 1203: l) ! 1204: l)))) ! 1205: (return (car l)))) ! 1206: (setq coms (cdr coms)) ! 1207: (go lp)))) ! 1208: ! 1209: (def errcom ! 1210: (lambda (coms) ! 1211: (errset (editcoms coms)))) ! 1212: ! 1213: (def edrpt ! 1214: (lambda (edrx quiet) ! 1215: (prog (edrl edrptcnt) ! 1216: (setq edrl l) ! 1217: (setq edrptcnt 0) ! 1218: lp (cond ((> edrptcnt maxloop) ! 1219: (terpri) ! 1220: (princ '"maxloop exceeded")) ! 1221: ((dtpr (errcom edrx)) ! 1222: (setq edrl l) ! 1223: (setq edrptcnt (add1 edrptcnt)) ! 1224: (go lp)) ! 1225: ((null quiet) (print edrptcnt) (princ 'occurrences))) ! 1226: (setq l edrl)))) ! 1227: ! 1228: (def edloc ! 1229: (lambda (edx) ! 1230: (prog (oldl oldf lcflg edl) ! 1231: (setq oldl l) ! 1232: (setq oldf unfind) ! 1233: (setq lcflg t) ! 1234: (cond ((atom edx) (editcom edx nil)) ! 1235: ((and (null (cdr edx)) (atom (car edx))) ! 1236: (editcom (car edx) nil)) ! 1237: (t (go lp))) ! 1238: (setq unfind oldl) ! 1239: (return (car l)) ! 1240: lp (setq edl l) ! 1241: (cond ((dtpr (errcom edx)) (setq unfind oldl) (return (car l)))) ! 1242: (cond ((equal edl l) (setq l oldl) (setq unfind oldf) (err nil))) ! 1243: (go lp)))) ! 1244: ! 1245: (def edlocl ! 1246: (lambda (coms) ! 1247: (car ! 1248: (setq l ! 1249: (nconc ((lambda (l unfind) (edloc coms) l) (ncons (car l)) nil) ! 1250: (cdr l)))))) ! 1251: ! 1252: (def edit: ! 1253: (lambda (type lc x) ! 1254: (prog (toflg l0) ! 1255: (setq l0 l) ! 1256: (setq x ! 1257: (mapcar (function ! 1258: (lambda (x) ! 1259: (cond ((and (dtpr x) ! 1260: (eq (car x) '|##|)) ! 1261: ((lambda (l undolst1) ! 1262: (copy (editcoms (cdr x)))) ! 1263: l ! 1264: nil)) ! 1265: (t x)))) ! 1266: x)) ! 1267: (cond ! 1268: (lc (cond ((eq (car lc) 'here) (setq lc (cdr lc)))) ! 1269: (edloc lc))) ! 1270: (edup) ! 1271: (cond ((eq l0 l) (setq lc nil))) ! 1272: (selectq type ! 1273: ((b before) (edit2f -1 x)) ! 1274: ((a after) ! 1275: (cond ((cdar l) (edit2f -2 x)) ! 1276: (t (editcoml (cons 'n x) copyflg)))) ! 1277: ((: for) ! 1278: (cond ((or x (cdar l)) (edit2f 1 x)) ! 1279: ((memq (car l) (cadr l)) ! 1280: (edup) ! 1281: (edit2f 1 (ncons nil))) ! 1282: (t (editcoms '(0 (nth -2) (2))))) ! 1283: (return (cond ((null lc) l)))) ! 1284: (err nil)) ! 1285: (return nil)))) ! 1286: ! 1287: (def editmbd ! 1288: (lambda (lc x) ! 1289: (prog (y toflg) ! 1290: (cond (lc (edloc lc))) ! 1291: (edup) ! 1292: (setq y (cond (toflg (caar l)) (t (ncons (caar l))))) ! 1293: (edit2f 1 ! 1294: (ncons ! 1295: (cond ((or (atom (car x)) (cdr x)) (append x y)) ! 1296: (t (lsubst y '* (car x)))))) ! 1297: (setq l ! 1298: (cons (caar l) ! 1299: (cond ((tailp (car l) (cadr l)) (cdr l)) (t l)))) ! 1300: (return (cond ((null lc) l)))))) ! 1301: ! 1302: (def editxtr ! 1303: (lambda (lc x) ! 1304: (prog (toflg) ! 1305: (cond (lc (edloc lc))) ! 1306: ((lambda (l unfind) ! 1307: (edloc x) ! 1308: (setq x ! 1309: (cond ((tailp (car l) (cadr l)) (caar l)) ! 1310: (t (car l))))) ! 1311: (ncons (cond ((tailp (car l) (cadr l)) (caar l)) (t (car l)))) ! 1312: nil) ! 1313: (edup) ! 1314: (edit2f 1 (cond (toflg (append x nil)) (t (ncons x)))) ! 1315: (and (null toflg) ! 1316: (dtpr (caar l)) ! 1317: (setq l ! 1318: (cons (caar l) ! 1319: (cond ((tailp (car l) (cadr l)) (cdr l)) (t l)))))))) ! 1320: ! 1321: (def editelt ! 1322: (lambda (lc l) ! 1323: (prog (y) ! 1324: (edloc lc) ! 1325: lp (setq y l) ! 1326: (cond ((cdr (setq l (cdr l))) (go lp))) ! 1327: (return (car y))))) ! 1328: ! 1329: (def editcont ! 1330: (lambda (lc1 %%x) ! 1331: (setq l ! 1332: ((lambda (l) ! 1333: (prog nil ! 1334: (setq lc1 (editfpat lc1)) ! 1335: lp (cond ((null (edit4f lc1 'n)) (err nil)) ! 1336: ((atom (errset (edlocl %%x))) (go lp))) ! 1337: lp1 (cond ((null (setq l (cdr l))) (err nil)) ! 1338: ((cond ((atom lc1) (eq lc1 (caar l))) ! 1339: ((eq (car lc1) '@) ! 1340: (edit4e lc1 (caar l))) ! 1341: (t (edit4e lc1 (car l)))) ! 1342: (return l))) ! 1343: (go lp1))) ! 1344: l)))) ! 1345: ! 1346: (def editsw ! 1347: (lambda (m n) ! 1348: (prog (y z tem) ! 1349: (setq y (editnth (car l) m)) ! 1350: (setq z (editnth (car l) n)) ! 1351: (setq tem (car y)) ! 1352: (editsmash y (car z) (cdr y)) ! 1353: (editsmash z tem (cdr z))))) ! 1354: ! 1355: (def editmv ! 1356: (lambda (lc op x cp) ! 1357: (prog (l0 l1 z toflg) ! 1358: (setq l0 l) ! 1359: (and lc (edloc lc)) ! 1360: (cond ((eq op 'here) ! 1361: (cond ((null lc) (edloc x) (setq x nil))) ! 1362: (setq op ':)) ! 1363: ((eq (car x) 'here) ! 1364: (cond ((null lc) (edloc (cdr x)) (setq x nil)) ! 1365: (t (setq x (cdr x)))))) ! 1366: (edup) ! 1367: (setq l1 l) ! 1368: (setq z (cond (cp (copy (caar l))) (t (caar l)))) ! 1369: (setq l l0) ! 1370: (and x (edloc x)) ! 1371: (cond ((eq op 'after) (setq op 'a)) ! 1372: ((eq op 'before) (setq op 'b))) ! 1373: (editcoml (cond (toflg (cons op (append z nil))) (t (list op z))) ! 1374: nil) ! 1375: (prog (l) ! 1376: (setq l l1) ! 1377: (cond ((not cp) (editcoms '(1 delete))) ! 1378: (toflg (editcoml '(bo 1) nil)))) ! 1379: (return ! 1380: (cond ((null lc) (setq unfind l1) l) ! 1381: ((null x) (setq unfind l1) l0) ! 1382: (t (setq unfind l) l0)))))) ! 1383: ! 1384: (def editto ! 1385: (lambda (lc1 lc2 flg) ! 1386: (setq l ! 1387: ((lambda (l) ! 1388: (cond (lc1 (edloc lc1) (edup))) ! 1389: (editbi 1 ! 1390: (cond ((and (numberp lc1) ! 1391: (numberp lc2) ! 1392: (> lc2 lc1)) ! 1393: (difference (add1 lc2) lc1)) ! 1394: (t lc2)) ! 1395: (car l)) ! 1396: (cond ! 1397: ((and (eq flg 'to) (cdaar l)) ! 1398: (editri 1 -2 (car l)))) ! 1399: (editcom 1 nil) ! 1400: l) ! 1401: l)) ! 1402: (setq toflg t))) ! 1403: ! 1404: (def editbelow ! 1405: (lambda (place depth) ! 1406: (cond ((minusp (setq depth (eval depth))) (err nil))) ! 1407: (prog (n1 n2) ! 1408: (setq n1 ! 1409: (length ! 1410: ((lambda (l lcflg) (editcom place nil) l) l '_))) ! 1411: (setq n2 (length l)) ! 1412: (cond ((< n2 (+ n1 depth)) (err nil))) ! 1413: (setq unfind l) ! 1414: (setq l (Cnth l (difference (add1 n2) n1 depth)))))) ! 1415: ! 1416: (def editran ! 1417: (lambda (c def) ! 1418: (setq l ! 1419: (or ((lambda (l) ! 1420: (prog (z w) ! 1421: (cond ((null def) (err nil)) ! 1422: ((null (setq z (car def))) (go out))) ! 1423: lp (cond ((null z) (err nil)) ! 1424: ((null (setq w (memq (car z) c))) ! 1425: (setq z (cdr z)) ! 1426: (go lp))) ! 1427: out (setq z ! 1428: (apply (car (setq def (cadr def))) ! 1429: (prog (|#1| |#2| |#3|) ! 1430: (setq |#1| (cdr ! 1431: (ldiff c w))) ! 1432: (setq |#2| (car z)) ! 1433: (setq |#3| (cdr w)) ! 1434: (return ! 1435: (mapcar (function ! 1436: (lambda (x) ! 1437: (cond ((atom ! 1438: x) ! 1439: (selectq x ! 1440: (|#1| ! 1441: |#1|) ! 1442: (|#2| ! 1443: |#2|) ! 1444: (|#3| ! 1445: |#3|) ! 1446: x)) ! 1447: (t ! 1448: (eval ! 1449: x))))) ! 1450: (cdr def)))))) ! 1451: (return ! 1452: (cond ((null z) (setq unfind l) nil) (t z))))) ! 1453: l) ! 1454: l)))) ! 1455: ! 1456: (def edit!0 ! 1457: (lambda nil ! 1458: (cond ((null (cdr l)) (err nil))) ! 1459: (prog nil ! 1460: lp (setq l (cdr l)) ! 1461: (cond ((tailp (car l) (cadr l)) (go lp)))))) ! 1462: ! 1463: (def editrepack ! 1464: (lambda nil ! 1465: (cond ((dtpr (car l)) (setq l (edit1f 1 l)))) ! 1466: (edit: ': nil (ncons (readlist (edite (explode (car l)) nil nil)))))) ! 1467: ! 1468: (def editmakefn ! 1469: (lambda (ex args n m) ! 1470: (editbi n m (car l)) ! 1471: (edloc n) ! 1472: (editbelow '/ 1) ! 1473: (mapc (function (lambda (x y) (editdsubst x y (car l)))) args (cdr ex)) ! 1474: (putprop (car ex) (cons 'lambda (cons args (car l))) 'expr) ! 1475: (mark!changed (car ex)) ! 1476: (edup) ! 1477: (edit2f 1 (ncons ex)))) ! 1478: ! 1479: (dv usermacros nil) ! 1480: ! 1481: (dv editracefn nil) ! 1482: ! 1483: (dv lastword editsfns) ! 1484: ! 1485: (dv maxlevel 192) ! 1486: ! 1487: (dv maxloop 24) ! 1488: ! 1489: (dv editcomsl ! 1490: (: a ! 1491: b ! 1492: below ! 1493: bf ! 1494: bi ! 1495: bind ! 1496: bk ! 1497: bo ! 1498: change ! 1499: coms ! 1500: comsq ! 1501: copy ! 1502: cp ! 1503: delete ! 1504: e ! 1505: embed ! 1506: extract ! 1507: f ! 1508: f= ! 1509: fs ! 1510: help ! 1511: i ! 1512: if ! 1513: insert ! 1514: lc ! 1515: lcl ! 1516: li ! 1517: lo ! 1518: lp ! 1519: lpq ! 1520: m ! 1521: makefn ! 1522: mbd ! 1523: move ! 1524: mv ! 1525: n ! 1526: nex ! 1527: nth ! 1528: nx ! 1529: orf ! 1530: orr ! 1531: p ! 1532: r ! 1533: repack ! 1534: replace ! 1535: ri ! 1536: ro ! 1537: s ! 1538: second ! 1539: surround ! 1540: sw ! 1541: third ! 1542: thru ! 1543: to ! 1544: undo ! 1545: xtr ! 1546: _)) ! 1547: ! 1548: (dv autop 2) ! 1549: ! 1550: (dv upfindflg t)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.