]> code.delx.au - gnu-emacs/blobdiff - src/callint.c
(Command Loop Info, Adjusting Point): Remove @tindex.
[gnu-emacs] / src / callint.c
index da88693cd7882fa302f2d50c0ff9cb6cacc5c367..ae10e64e1de5f11b5e1a3e2c7ff15e61cf07c9bf 100644 (file)
@@ -1,6 +1,6 @@
 /* Call a Lisp function interactively.
-   Copyright (C) 1985, 86, 93, 94, 95, 1997, 2000, 02, 03, 2004
-   Free Software Foundation, Inc.
+   Copyright (C) 1985, 1986, 1993, 1994, 1995, 1997, 2000, 2002, 2003,
+                 2004, 2005, 2006 Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -16,8 +16,8 @@ GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with GNU Emacs; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA.  */
 
 
 #include <config.h>
@@ -98,6 +98,7 @@ e -- Parametrized event (i.e., one that's a list) that invoked this command.
      This skips events that are integers or symbols.
 f -- Existing file name.
 F -- Possibly nonexistent file name.
+G -- Possibly nonexistent file name, defaulting to just directory name.
 i -- Ignored, i.e. always nil.  Does not do I/O.
 k -- Key sequence (downcase the last event if needed to get a definition).
 K -- Key sequence to be redefined (do not downcase the last event).
@@ -265,7 +266,6 @@ If KEYS is omitted or nil, the return value of `this-command-keys' is used.  */)
   Lisp_Object *args, *visargs;
   unsigned char **argstrings;
   Lisp_Object fun;
-  Lisp_Object funcar;
   Lisp_Object specs;
   Lisp_Object filter_specs;
   Lisp_Object teml;
@@ -451,25 +451,25 @@ If KEYS is omitted or nil, the return value of `this-command-keys' is used.  */)
        string++;
       else if (*string == '@')
        {
-         Lisp_Object event;
+         Lisp_Object event, tem;
 
          event = (next_event < key_count
                   ? XVECTOR (keys)->contents[next_event]
                   : Qnil);
          if (EVENT_HAS_PARAMETERS (event)
-             && (event = XCDR (event), CONSP (event))
-             && (event = XCAR (event), CONSP (event))
-             && (event = XCAR (event), WINDOWP (event)))
+             && (tem = XCDR (event), CONSP (tem))
+             && (tem = XCAR (tem), CONSP (tem))
+             && (tem = XCAR (tem), WINDOWP (tem)))
            {
-             if (MINI_WINDOW_P (XWINDOW (event))
-                 && ! (minibuf_level > 0 && EQ (event, minibuf_window)))
+             if (MINI_WINDOW_P (XWINDOW (tem))
+                 && ! (minibuf_level > 0 && EQ (tem, minibuf_window)))
                error ("Attempt to select inactive minibuffer window");
 
              /* If the current buffer wants to clean up, let it.  */
              if (!NILP (Vmouse_leave_buffer_hook))
                call1 (Vrun_hooks, Qmouse_leave_buffer_hook);
 
-             Fselect_window (event, Qnil);
+             Fselect_window (tem, Qnil);
            }
          string++;
        }
@@ -606,6 +606,12 @@ If KEYS is omitted or nil, the return value of `this-command-keys' is used.  */)
                                     Qnil, Qnil, Qnil, Qnil, Qnil);
          break;
 
+       case 'G':               /* Possibly nonexistent file name,
+                                  default to directory alone. */
+         args[i] = Fread_file_name (build_string (callint_message),
+                                    Qnil, Qnil, Qnil, build_string (""), Qnil);
+         break;
+
        case 'i':               /* Ignore an argument -- Does not do I/O */
          varies[i] = -1;
          break;