X-Git-Url: https://git.hcoop.net/bpt/emacs.git/blobdiff_plain/8f50130c565eaf0ad7c49e4ad044c3291ecdfa71..663e2b3f88f9be61399e06dfc0b76700f90c6ca6:/src/callint.c diff --git a/src/callint.c b/src/callint.c index 444892ef9c..51d0a5fa2e 100644 --- a/src/callint.c +++ b/src/callint.c @@ -1,5 +1,5 @@ /* Call a Lisp function interactively. - Copyright (C) 1985-1986, 1993-1995, 1997, 2000-2011 + Copyright (C) 1985-1986, 1993-1995, 1997, 2000-2012 Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -22,12 +22,12 @@ along with GNU Emacs. If not, see . */ #include #include "lisp.h" +#include "character.h" #include "buffer.h" #include "commands.h" #include "keyboard.h" #include "window.h" #include "keymap.h" -#include "character.h" Lisp_Object Qminus, Qplus; Lisp_Object Qcall_interactively; @@ -97,7 +97,7 @@ r -- Region: point and mark as 2 numeric args, smallest first. Does no I/O. s -- Any string. Does not inherit the current input method. S -- Any symbol. U -- Mouse up event discarded by a previous k or K argument. -v -- Variable name: symbol that is user-variable-p. +v -- Variable name: symbol that is `custom-variable-p'. x -- Lisp expression read but not evaluated. X -- Lisp expression read and evaluated. z -- Coding system. @@ -205,7 +205,7 @@ fix_command (Lisp_Object input, Lisp_Object values) if (CONSP (elt)) { Lisp_Object presflag, carelt; - carelt = Fcar (elt); + carelt = XCAR (elt); /* If it is (if X Y), look at Y. */ if (EQ (carelt, Qif) && EQ (Fnthcdr (make_number (3), elt), Qnil)) @@ -274,8 +274,6 @@ invoke it. If KEYS is omitted or nil, the return value of ptrdiff_t i, nargs; int foo; - char prompt1[100]; - char *tem1; int arg_from_tty = 0; struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5; ptrdiff_t key_count; @@ -286,7 +284,7 @@ invoke it. If KEYS is omitted or nil, the return value of save_this_command = Vthis_command; save_this_original_command = Vthis_original_command; - save_real_this_command = real_this_command; + save_real_this_command = Vreal_this_command; save_last_command = KVAR (current_kboard, Vlast_command); if (NILP (keys)) @@ -297,7 +295,7 @@ invoke it. If KEYS is omitted or nil, the return value of key_count = ASIZE (keys); } - /* Save this now, since use of minibuffer will clobber it. */ + /* Save this now, since use of minibuffer will clobber it. */ prefix_arg = Vcurrent_prefix_arg; if (SYMBOLP (function)) @@ -312,7 +310,8 @@ invoke it. If KEYS is omitted or nil, the return value of The feature is not fully implemented. */ filter_specs = Qnil; - /* If k or K discard an up-event, save it here so it can be retrieved with U */ + /* If k or K discard an up-event, save it here so it can be retrieved with + U. */ up_event = Qnil; /* Set SPECS to the interactive form, or barf if not interactive. */ @@ -332,7 +331,7 @@ invoke it. If KEYS is omitted or nil, the return value of { /* Make a copy of string so that if a GC relocates specs, `string' will still be valid. */ - string = (char *) alloca (SBYTES (specs) + 1); + string = alloca (SBYTES (specs) + 1); memcpy (string, SSDATA (specs), SBYTES (specs) + 1); } else @@ -372,14 +371,14 @@ invoke it. If KEYS is omitted or nil, the return value of Vthis_command = save_this_command; Vthis_original_command = save_this_original_command; - real_this_command= save_real_this_command; + Vreal_this_command = save_real_this_command; KVAR (current_kboard, Vlast_command) = save_last_command; temporarily_switch_to_single_kboard (NULL); return unbind_to (speccount, apply1 (function, specs)); } - /* Here if function specifies a string to control parsing the defaults */ + /* Here if function specifies a string to control parsing the defaults. */ /* Set next_event to point to the first event with parameters. */ for (next_event = 0; next_event < key_count; next_event++) @@ -466,13 +465,13 @@ invoke it. If KEYS is omitted or nil, the return value of } if (min (MOST_POSITIVE_FIXNUM, - min (PTRDIFF_MAX, SIZE_MAX) / sizeof (Lisp_Object)) + min (PTRDIFF_MAX, SIZE_MAX) / word_size) < nargs) memory_full (SIZE_MAX); - args = (Lisp_Object *) alloca (nargs * sizeof (Lisp_Object)); - visargs = (Lisp_Object *) alloca (nargs * sizeof (Lisp_Object)); - varies = (signed char *) alloca (nargs); + args = alloca (nargs * sizeof *args); + visargs = alloca (nargs * sizeof *visargs); + varies = alloca (nargs * sizeof *varies); for (i = 0; i < nargs; i++) { @@ -491,13 +490,8 @@ invoke it. If KEYS is omitted or nil, the return value of tem = string; for (i = 1; *tem; i++) { - strncpy (prompt1, tem + 1, sizeof prompt1 - 1); - prompt1[sizeof prompt1 - 1] = 0; - tem1 = strchr (prompt1, '\n'); - if (tem1) *tem1 = 0; - - visargs[0] = build_string (prompt1); - if (strchr (prompt1, '%')) + visargs[0] = make_string (tem + 1, strcspn (tem + 1, "\n")); + if (strchr (SSDATA (visargs[0]), '%')) callint_message = Fformat (i, visargs); else callint_message = visargs[0]; @@ -755,7 +749,7 @@ invoke it. If KEYS is omitted or nil, the return value of break; case 'v': /* Variable name: symbol that is - user-variable-p. */ + custom-variable-p. */ args[i] = Fread_variable (callint_message, Qnil); visargs[i] = last_minibuf_string; break; @@ -848,7 +842,7 @@ invoke it. If KEYS is omitted or nil, the return value of Vthis_command = save_this_command; Vthis_original_command = save_this_original_command; - real_this_command= save_real_this_command; + Vreal_this_command = save_real_this_command; KVAR (current_kboard, Vlast_command) = save_last_command; { @@ -894,10 +888,11 @@ syms_of_callint (void) callint_message = Qnil; staticpro (&callint_message); - preserved_fns = pure_cons (intern_c_string ("region-beginning"), - pure_cons (intern_c_string ("region-end"), - pure_cons (intern_c_string ("point"), - pure_cons (intern_c_string ("mark"), Qnil)))); + preserved_fns = listn (CONSTYPE_PURE, 4, + intern_c_string ("region-beginning"), + intern_c_string ("region-end"), + intern_c_string ("point"), + intern_c_string ("mark")); DEFSYM (Qlist, "list"); DEFSYM (Qlet, "let"); @@ -952,7 +947,7 @@ may be set by the debugger as a reminder for itself. */); Vcommand_debug_status = Qnil; DEFVAR_LISP ("mark-even-if-inactive", Vmark_even_if_inactive, - doc: /* *Non-nil means you can use the mark even when inactive. + doc: /* Non-nil means you can use the mark even when inactive. This option makes a difference in Transient Mark mode. When the option is non-nil, deactivation of the mark turns off region highlighting, but commands that use the mark