Mercurial > hg > xemacs
comparison shared/repl-comment.el @ 0:107d592c5f4a
DICE versions, used by pers/common, recursive, I think/hope
| author | Henry S. Thompson <ht@inf.ed.ac.uk> |
|---|---|
| date | Mon, 08 Feb 2021 11:44:37 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:107d592c5f4a |
|---|---|
| 1 ;; Universal (?) replace comment in function | |
| 2 | |
| 3 ;; Last edited: Thu Oct 7 09:39:50 1993 | |
| 4 (defun repl-comment (fn comment) | |
| 5 "replace/install as FN's comment COMMENT, no matter what emacs/compiler" | |
| 6 (let ((defn (symbol-function fn))) | |
| 7 (if (consp defn) | |
| 8 (if (eq (car defn) 'autoload) | |
| 9 (progn (load-library (car (cdr defn))) | |
| 10 (if (equal defn (symbol-function fn)) | |
| 11 (error "autoloading didn't help define %s" fn) | |
| 12 (repl-comment fn comment))) | |
| 13 ;; either symbolic or old byte-compiler | |
| 14 (if (eq (car defn) 'lambda) | |
| 15 (if (stringp (car (cdr (cdr defn)))) | |
| 16 (rplaca (cdr (cdr defn)) | |
| 17 comment) | |
| 18 (rplacd (cdr defn) | |
| 19 (cons comment | |
| 20 (cdr (cdr defn))))) | |
| 21 (error "can't diagnose defn %s" defn))) | |
| 22 ;; array or not | |
| 23 (if (compiled-function-p defn) | |
| 24 (fset fn (if (fboundp 'compiled-function-arglist) | |
| 25 (progn (make-byte-code | |
| 26 (compiled-function-arglist defn) | |
| 27 (compiled-function-instructions defn) | |
| 28 (compiled-function-constants defn) | |
| 29 (compiled-function-stack-depth defn) | |
| 30 comment | |
| 31 (compiled-function-interactive defn)) defn) | |
| 32 (repl-byte fn (list (cons 4 comment))))) | |
| 33 (error "unrecognised defn %s" defn))))) | |
| 34 | |
| 35 (defun repl-byte (fn alist) | |
| 36 "compute a new byte-code defn for FN, replacing | |
| 37 elements using ALIST, which is interpreted as (index . newbit). | |
| 38 Elements are 0: arglist 1: byte-codes 2: symbols 3: stack-depth 4: comment" | |
| 39 (let | |
| 40 ((defn (symbol-function fn))) | |
| 41 (let ((ln (if (sequencep defn) | |
| 42 (length defn) | |
| 43 ;; hack otherwise | |
| 44 6)) | |
| 45 (i 0) | |
| 46 new entry) | |
| 47 (apply (function make-byte-code) | |
| 48 (progn (while (< i ln) | |
| 49 (setq new | |
| 50 (cons | |
| 51 (if (setq entry (assoc i alist)) | |
| 52 (cdr entry) | |
| 53 (aref defn i)) | |
| 54 new)) | |
| 55 (setq i (1+ i))) | |
| 56 (nreverse new)))))) | |
| 57 | |
| 58 | |
| 59 (provide 'repl-comment) |
