Mercurial > hg > xemacs-beta
diff src/callint.c @ 223:2c611d1463a6 r20-4b10
Import from CVS: tag r20-4b10
author | cvs |
---|---|
date | Mon, 13 Aug 2007 10:10:54 +0200 |
parents | 3d6bfa290dbd |
children | 0e522484dd2a |
line wrap: on
line diff
--- a/src/callint.c Mon Aug 13 10:10:03 2007 +0200 +++ b/src/callint.c Mon Aug 13 10:10:54 2007 +0200 @@ -145,16 +145,25 @@ return Qnil; } -/* Quotify EXPR: if EXPR is constant, return it. - If EXPR is not constant, return (quote EXPR). */ -static Lisp_Object -quotify_arg (Lisp_Object expr) +/* Originally, this was just a function -- but `custom' used a + garden-variety version, so why not make it a subr? */ +/* #### Move it to another file! */ +DEFUN ("quote-maybe", Fquote_maybe, 1, 1, 0, /* +Quote EXPR iff it is not self quoting. +*/ + (expr)) { - return (INTP (expr) || - CHARP (expr) || - STRINGP (expr) || - NILP (expr) || - EQ (Qt, expr)) ? expr : Fcons (Qquote, Fcons (expr, Qnil)); + return ((NILP (expr) + || EQ (expr, Qt) + || INTP (expr) + || FLOATP (expr) + || CHARP (expr) + || STRINGP (expr) + || VECTORP (expr) + || KEYWORDP (expr) + || BIT_VECTORP (expr) + || (CONSP (expr) && EQ(XCAR (expr), Qlambda))) + ? expr : list2 (Qquote, expr)); } /* Modify EXPR by quotifying each element (except the first). */ @@ -166,7 +175,7 @@ for (tail = expr; CONSP (tail); tail = ptr->cdr) { ptr = XCONS (tail); - ptr->car = quotify_arg (ptr->car); + ptr->car = Fquote_maybe (ptr->car); } return expr; } @@ -909,7 +918,7 @@ if (!NILP (varies[argnum])) visargs[argnum] = list1 (varies[argnum]); else - visargs[argnum] = quotify_arg (args[argnum]); + visargs[argnum] = Fquote_maybe (args[argnum]); } Vcommand_history = Fcons (Fcons (args[-1], Flist (argcount, visargs)), Vcommand_history); @@ -984,6 +993,7 @@ #endif DEFSUBR (Finteractive); + DEFSUBR (Fquote_maybe); DEFSUBR (Fcall_interactively); DEFSUBR (Fprefix_numeric_value); }