emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: coccinelle patch suggestion


From: Stefan Monnier
Subject: Re: coccinelle patch suggestion
Date: Mon, 02 Jul 2012 14:12:13 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.1.50 (gnu/linux)

> What do you think of the appended?

I think it's going in the right direction.  I do wonder/worry about
handling dependencies: for the current globals.h, there's no real
problem since if the vars in it can be pretty much only missing or
extraneous but can't be incorrect (they *very* rarely change type), but
it's slightly less rare to change the type of a DEFUN'd function
(i.e. adding/removing arguments).


        Stefan


> It builds for me on x86-64 Fedora 16.
> I didn't try any other platforms; there could be hiccups I suppose.

> The one wrinkle is that this makes some functions non-static.

> Tom

> b/lib-src/ChangeLog:
> 2012-06-29  Tom Tromey  <address@hidden>

>       * make-docfile.c (enum global_type) <FUNCTION>: New constant.
>       (struct global) <value>: New field.
>       (add_global): Add 'value' argument.
>       (compare_globals): Sort functions at the end.
>       (close_emacs_globals): New function.
>       (write_globals): Handle functions.
>       (scan_c_file): Call add_global for DEFUN.

> b/src/ChangeLog:
> 2012-06-29  Tom Tromey  <address@hidden>

>       * window.c (Fset_window_margins, Fset_window_fringes)
>       (Fset_window_scroll_bars, Fset_window_vscroll): No longer static.
>       * textprop.c (Fprevious_property_change): No longer static.
>       * syntax.c (Fsyntax_table_p): No longer static.
>       * process.c (Fget_process, Fprocess_datagram_address): No longer
>       static.
>       * keymap.c (Flookup_key, Fcopy_keymap): No longer static.
>       * keyboard.c (Fcommand_execute): No longer static.
>       Remove EXFUN.
>       * insdel.c (Fcombine_after_change_execute): No longer static.
>       * image.c (Finit_image_library): No longer static.
>       * fileio.c (Fmake_symbolic_link): No longer static.
>       * eval.c (Ffetch_bytecode): No longer static.
>       * editfns.c (Fuser_full_name): No longer static.
>       * doc.c: (Fdocumentation_property, Fsnarf_documentation): No
>       longer static.
>       * buffer.c (Fset_buffer_major_mode, Fdelete_overlay): No longer
>       static.
>       * dired.c (Ffile_attributes): No longer static.
>       * composite.c (Fcomposition_get_gstring): No longer static.
>       * callproc.c (Fgetenv_internal): No longer static.

>       * ccl.h: Remove EXFUNs.
>       * buffer.h: Remove EXFUNs.
>       * dispextern.h: Remove EXFUNs.
>       * intervals.h: Remove EXFUNs.
>       * fontset.h: Remove EXFUN.
>       * font.h: Remove EXFUNs.
>       * dosfns.c (system_process_attributes): Remove EXFUN.
>       * keymap.h: Remove EXFUNs.
>       * lisp.h: Remove EXFUNs.
>       * w32term.h: Remove EXFUNs.
>       * window.h: Remove EXFUNs.
>       * xsettings.h: Remove EXFUN.
>       * xterm.h: Remove EXFUN.

> diff --git a/lib-src/make-docfile.c b/lib-src/make-docfile.c
> index 8156db9..2a5f028 100644
> --- a/lib-src/make-docfile.c
> +++ b/lib-src/make-docfile.c
> @@ -564,6 +564,7 @@ write_c_args (FILE *out, char *func, char *buf, int 
> minargs, int maxargs)
>  /* The types of globals.  */
>  enum global_type
>  {
> +  FUNCTION,
>    EMACS_INTEGER,
>    BOOLEAN,
>    LISP_OBJECT,
> @@ -575,6 +576,7 @@ struct global
>  {
>    enum global_type type;
>    char *name;
> +  int value;
>  };
 
>  /* All the variable names we saw while scanning C sources in `-g'
> @@ -584,7 +586,7 @@ int num_globals_allocated;
>  struct global *globals;
 
>  static void
> -add_global (enum global_type type, char *name)
> +add_global (enum global_type type, char *name, int value)
>  {
>    /* Ignore the one non-symbol that can occur.  */
>    if (strcmp (name, "..."))
> @@ -605,6 +607,7 @@ add_global (enum global_type type, char *name)
 
>        globals[num_globals - 1].type = type;
>        globals[num_globals - 1].name = name;
> +      globals[num_globals - 1].value = value;
>      }
>  }
 
> @@ -613,13 +616,29 @@ compare_globals (const void *a, const void *b)
>  {
>    const struct global *ga = a;
>    const struct global *gb = b;
> +
> +  if (ga->type == FUNCTION)
> +    {
> +      if (gb->type != FUNCTION)
> +     return 1;
> +    }
> +  else if (gb->type == FUNCTION)
> +    return -1;
> +
>    return strcmp (ga->name, gb->name);
>  }
 
>  static void
> +close_emacs_globals (void)
> +{
> +  fprintf (outfile, "};\n");
> +  fprintf (outfile, "extern struct emacs_globals globals;\n");
> +}
> +
> +static void
>  write_globals (void)
>  {
> -  int i;
> +  int i, seen_defun = 0;
>    qsort (globals, num_globals, sizeof (struct global), compare_globals);
>    for (i = 0; i < num_globals; ++i)
>      {
> @@ -636,20 +655,49 @@ write_globals (void)
>       case LISP_OBJECT:
>         type = "Lisp_Object";
>         break;
> +     case FUNCTION:
> +       if (!seen_defun)
> +         {
> +           close_emacs_globals ();
> +           fprintf (outfile, "\n");
> +           seen_defun = 1;
> +         }
> +       break;
>       default:
>         fatal ("not a recognized DEFVAR_", 0);
>       }
 
> -      fprintf (outfile, "  %s f_%s;\n", type, globals[i].name);
> -      fprintf (outfile, "#define %s globals.f_%s\n",
> -            globals[i].name, globals[i].name);
> +      if (globals[i].type != FUNCTION)
> +     {
> +       fprintf (outfile, "  %s f_%s;\n", type, globals[i].name);
> +       fprintf (outfile, "#define %s globals.f_%s\n",
> +                globals[i].name, globals[i].name);
> +     }
> +      else
> +     {
> +       /* It would be nice to have a cleaner way to deal with these
> +          special hacks.  */
> +       if (strcmp (globals[i].name, "Fthrow") == 0
> +           || strcmp (globals[i].name, "Ftop_level") == 0
> +           || strcmp (globals[i].name, "Fkill_emacs") == 0)
> +         fprintf (outfile, "_Noreturn ");
> +       fprintf (outfile, "EXFUN (%s, ", globals[i].name);
> +       if (globals[i].value == -1)
> +         fprintf (outfile, "MANY");
> +       else if (globals[i].value == -2)
> +         fprintf (outfile, "UNEVALLED");
> +       else
> +         fprintf (outfile, "%d", globals[i].value);
> +       fprintf (outfile, ");\n");
> +     }
> +
>        while (i + 1 < num_globals
>            && !strcmp (globals[i].name, globals[i + 1].name))
>       ++i;
>      }
 
> -  fprintf (outfile, "};\n");
> -  fprintf (outfile, "extern struct emacs_globals globals;\n");
> +  if (!seen_defun)
> +    close_emacs_globals ();
>  }
 
>  
> @@ -699,6 +747,7 @@ scan_c_file (char *filename, const char *mode)
>        int defvarperbufferflag = 0;
>        int defvarflag = 0;
>        enum global_type type = INVALID;
> +      char *name;
 
>        if (c != '\n' && c != '\r')
>       {
> @@ -764,8 +813,9 @@ scan_c_file (char *filename, const char *mode)
>       }
>        else continue;
 
> -      if (generate_globals && (!defvarflag || defvarperbufferflag
> -                            || type == INVALID))
> +      if (generate_globals
> +       && (!defvarflag || defvarperbufferflag || type == INVALID)
> +       && !defunflag)
>       continue;
 
>        while (c != '(')
> @@ -784,7 +834,6 @@ scan_c_file (char *filename, const char *mode)
>        if (generate_globals)
>       {
>         int i = 0;
> -       char *name;
 
>         /* Skip "," and whitespace.  */
>         do
> @@ -805,8 +854,12 @@ scan_c_file (char *filename, const char *mode)
 
>         name = xmalloc (i + 1);
>         memcpy (name, input_buffer, i + 1);
> -       add_global (type, name);
> -       continue;
> +
> +       if (!defunflag)
> +         {
> +           add_global (type, name, 0);
> +           continue;
> +         }
>       }
 
>        /* DEFVAR_LISP ("name", addr, "doc")
> @@ -814,7 +867,7 @@ scan_c_file (char *filename, const char *mode)
>        DEFVAR_LISP ("name", addr, doc: /\* doc *\/)  */
 
>        if (defunflag)
> -     commas = 5;
> +     commas = generate_globals ? 4 : 5;
>        else if (defvarperbufferflag)
>       commas = 3;
>        else if (defvarflag)
> @@ -841,7 +894,12 @@ scan_c_file (char *filename, const char *mode)
>                   scanned = fscanf (infile, "%d", &minargs);
>                 else /* Pick up maxargs.  */
>                   if (c == 'M' || c == 'U') /* MANY || UNEVALLED */
> -                   maxargs = -1;
> +                   {
> +                     if (generate_globals)
> +                       maxargs = (c == 'M') ? -1 : -2;
> +                     else
> +                       maxargs = -1;
> +                   }
>                   else
>                     scanned = fscanf (infile, "%d", &maxargs);
>                 if (scanned < 0)
> @@ -854,6 +912,12 @@ scan_c_file (char *filename, const char *mode)
>         c = getc (infile);
>       }
 
> +      if (generate_globals)
> +     {
> +       add_global (FUNCTION, name, maxargs);
> +       continue;
> +     }
> +
>        while (c == ' ' || c == '\n' || c == '\r' || c == '\t')
>       c = getc (infile);
 
> diff --git a/src/buffer.c b/src/buffer.c
> index 89a4e26..936f1a7 100644
> --- a/src/buffer.c
> +++ b/src/buffer.c
> @@ -107,8 +107,6 @@ static char 
> buffer_permanent_local_flags[MAX_PER_BUFFER_VARS];
 
>  int last_per_buffer_idx;
 
> -static Lisp_Object Fset_buffer_major_mode (Lisp_Object);
> -static Lisp_Object Fdelete_overlay (Lisp_Object);
>  static void call_overlay_mod_hooks (Lisp_Object list, Lisp_Object overlay,
>                                      int after, Lisp_Object arg1,
>                                      Lisp_Object arg2, Lisp_Object arg3);
> diff --git a/src/buffer.h b/src/buffer.h
> index b1ace46..a12406d 100644
> --- a/src/buffer.h
> +++ b/src/buffer.h
> @@ -909,11 +909,6 @@ extern void mmap_set_vars (int);
>        }                                                                      
> \
>    } while (0)
 
> -EXFUN (Fbuffer_live_p, 1);
> -EXFUN (Fbuffer_name, 1);
> -EXFUN (Fnext_overlay_change, 1);
> -EXFUN (Fbuffer_local_value, 2);
> -
>  extern Lisp_Object Qbefore_change_functions;
>  extern Lisp_Object Qafter_change_functions;
>  extern Lisp_Object Qfirst_change_hook;
> diff --git a/src/callproc.c b/src/callproc.c
> index 804af1e..7078099 100644
> --- a/src/callproc.c
> +++ b/src/callproc.c
> @@ -97,8 +97,6 @@ int synch_process_retcode;
>  /* Nonzero if this is termination due to exit.  */
>  static int call_process_exited;
 
> -static Lisp_Object Fgetenv_internal (Lisp_Object, Lisp_Object);
> -
>  static Lisp_Object
>  call_process_kill (Lisp_Object fdpid)
>  {
> diff --git a/src/ccl.h b/src/ccl.h
> index f55b295..7113917 100644
> --- a/src/ccl.h
> +++ b/src/ccl.h
> @@ -1,6 +1,6 @@
>  /* Header for CCL (Code Conversion Language) interpreter.
>     Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
> -     2005, 2006, 2007, 2008, 2009, 2010, 2011
> +     2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
>       National Institute of Advanced Industrial Science and Technology (AIST)
>       Registration Number H14PRO021
>     Copyright (C) 2003
> @@ -101,8 +101,6 @@ extern void ccl_driver (struct ccl_program *, int *, int 
> *, int, int,
 
>  extern Lisp_Object Qccl, Qcclp;
 
> -EXFUN (Fccl_program_p, 1);
> -
>  #define CHECK_CCL_PROGRAM(x)                 \
>    do {                                               \
>      if (NILP (Fccl_program_p (x)))           \
> diff --git a/src/composite.c b/src/composite.c
> index 79942ac..6c24bc8 100644
> --- a/src/composite.c
> +++ b/src/composite.c
> @@ -158,9 +158,6 @@ static Lisp_Object Qauto_composition_function;
>     auto-compositions.  */
>  #define MAX_AUTO_COMPOSITION_LOOKBACK 3
 
> -static Lisp_Object Fcomposition_get_gstring (Lisp_Object, Lisp_Object,
> -                                          Lisp_Object, Lisp_Object);
> -
>  /* Temporary variable used in macros COMPOSITION_XXX.  */
>  Lisp_Object composition_temp;
 
> diff --git a/src/dired.c b/src/dired.c
> index b319072..48d3da1 100644
> --- a/src/dired.c
> +++ b/src/dired.c
> @@ -88,7 +88,6 @@ static Lisp_Object Qfile_attributes;
>  static Lisp_Object Qfile_attributes_lessp;
 
>  static ptrdiff_t scmp (const char *, const char *, ptrdiff_t);
> -static Lisp_Object Ffile_attributes (Lisp_Object, Lisp_Object);
>  
>  #ifdef WINDOWSNT
>  Lisp_Object
> diff --git a/src/dispextern.h b/src/dispextern.h
> index c7adc4d..4672d10 100644
> --- a/src/dispextern.h
> +++ b/src/dispextern.h
> @@ -3244,7 +3244,6 @@ void x_implicitly_set_name (struct frame *, 
> Lisp_Object, Lisp_Object);
 
>  extern Lisp_Object tip_frame;
>  extern Window tip_window;
> -EXFUN (Fx_hide_tip, 0);
>  extern void start_hourglass (void);
>  extern void cancel_hourglass (void);
>  extern int hourglass_shown_p;
> @@ -3356,8 +3355,6 @@ extern void produce_special_glyphs (struct it *, enum 
> display_element_type);
>  extern int tty_capable_p (struct tty_display_info *, unsigned, unsigned 
> long, unsigned long);
>  extern void set_tty_color_mode (struct tty_display_info *, struct frame *);
>  extern struct terminal *get_named_tty (const char *);
> -EXFUN (Ftty_type, 1);
> -EXFUN (Fcontrolling_tty_p, 1);
>  extern void create_tty_output (struct frame *);
>  extern struct terminal *init_tty (const char *, const char *, int);
>  extern void tty_append_glyph (struct it *);
> diff --git a/src/doc.c b/src/doc.c
> index cbfeb06..6c532e3 100644
> --- a/src/doc.c
> +++ b/src/doc.c
> @@ -42,9 +42,6 @@ static char *get_doc_string_buffer;
>  static ptrdiff_t get_doc_string_buffer_size;
 
>  static unsigned char *read_bytecode_pointer;
> -static Lisp_Object Fdocumentation_property (Lisp_Object, Lisp_Object,
> -                                         Lisp_Object);
> -static Lisp_Object Fsnarf_documentation (Lisp_Object);
 
>  /* readchar in lread.c calls back here to fetch the next byte.
>     If UNREADFLAG is 1, we unread a byte.  */
> diff --git a/src/dosfns.c b/src/dosfns.c
> index 11d2258..a952215 100644
> --- a/src/dosfns.c
> +++ b/src/dosfns.c
> @@ -540,7 +540,6 @@ system_process_attributes (Lisp_Object pid)
>        int i;
>        Lisp_Object cmd_str, decoded_cmd, tem;
>        double pmem;
> -      EXFUN (Fget_internal_run_time, 0);
>  #ifndef SYSTEM_MALLOC
>        extern unsigned long ret_lim_data ();
>  #endif
> diff --git a/src/editfns.c b/src/editfns.c
> index 4c3b80b..8812ed9 100644
> --- a/src/editfns.c
> +++ b/src/editfns.c
> @@ -79,7 +79,6 @@ static int tm_diff (struct tm *, struct tm *);
>  static void update_buffer_properties (ptrdiff_t, ptrdiff_t);
 
>  static Lisp_Object Qbuffer_access_fontify_functions;
> -static Lisp_Object Fuser_full_name (Lisp_Object);
 
>  /* Symbol for the text property used to mark fields.  */
 
> diff --git a/src/eval.c b/src/eval.c
> index bff9974..906adb8 100644
> --- a/src/eval.c
> +++ b/src/eval.c
> @@ -133,7 +133,6 @@ Lisp_Object inhibit_lisp_code;
>  static Lisp_Object funcall_lambda (Lisp_Object, ptrdiff_t, Lisp_Object *);
>  static int interactive_p (int);
>  static Lisp_Object apply_lambda (Lisp_Object fun, Lisp_Object args);
> -static Lisp_Object Ffetch_bytecode (Lisp_Object);
>  
>  void
>  init_eval_once (void)
> diff --git a/src/fileio.c b/src/fileio.c
> index 824a921..9429570 100644
> --- a/src/fileio.c
> +++ b/src/fileio.c
> @@ -148,7 +148,6 @@ Lisp_Object Qfile_name_history;
 
>  static Lisp_Object Qcar_less_than_car;
 
> -static Lisp_Object Fmake_symbolic_link (Lisp_Object, Lisp_Object, 
> Lisp_Object);
>  static int a_write (int, Lisp_Object, ptrdiff_t, ptrdiff_t,
>                      Lisp_Object *, struct coding_system *);
>  static int e_write (int, Lisp_Object, ptrdiff_t, ptrdiff_t,
> diff --git a/src/font.h b/src/font.h
> index b058be6..adb2566 100644
> --- a/src/font.h
> +++ b/src/font.h
> @@ -734,13 +734,8 @@ struct font_data_list
>    struct font_data_list *next;
>  };
 
> -EXFUN (Ffont_spec, MANY);
>  extern Lisp_Object copy_font_spec (Lisp_Object);
>  extern Lisp_Object merge_font_spec (Lisp_Object, Lisp_Object);
> -EXFUN (Ffont_get, 2);
> -EXFUN (Ffont_put, 3);
> -EXFUN (Flist_fonts, 4);
> -EXFUN (Ffont_xlfd_name, 2);
 
>  extern Lisp_Object font_make_entity (void);
>  extern Lisp_Object font_make_object (int, Lisp_Object, int);
> diff --git a/src/fontset.h b/src/fontset.h
> index 6d6ad5d..3eb8d63 100644
> --- a/src/fontset.h
> +++ b/src/fontset.h
> @@ -39,7 +39,6 @@ extern Lisp_Object font_for_char (struct face *, int, int, 
> Lisp_Object);
>  extern int make_fontset_for_ascii_face (FRAME_PTR, int, struct face *);
>  extern int fontset_from_font (Lisp_Object);
>  extern int fs_query_fontset (Lisp_Object, int);
> -EXFUN (Fquery_fontset, 2);
>  extern Lisp_Object list_fontsets (struct frame *, Lisp_Object, int);
 
>  extern Lisp_Object Qlatin;
> diff --git a/src/image.c b/src/image.c
> index 9b1c7f1..d67faff 100644
> --- a/src/image.c
> +++ b/src/image.c
> @@ -138,7 +138,6 @@ static unsigned long lookup_rgb_color (struct frame *f, 
> int r, int g, int b);
>  static void free_color_table (void);
>  static unsigned long *colors_in_color_table (int *n);
>  #endif
> -static Lisp_Object Finit_image_library (Lisp_Object, Lisp_Object);
 
>  /* Code to deal with bitmaps.  Bitmaps are referenced by their bitmap
>     id, which is just an int that this section returns.  Bitmaps are
> diff --git a/src/insdel.c b/src/insdel.c
> index 060f83f..2074916 100644
> --- a/src/insdel.c
> +++ b/src/insdel.c
> @@ -41,8 +41,6 @@ static void insert_from_buffer_1 (struct buffer *buf,
>  static void gap_left (ptrdiff_t charpos, ptrdiff_t bytepos, int newgap);
>  static void gap_right (ptrdiff_t charpos, ptrdiff_t bytepos);
 
> -static Lisp_Object Fcombine_after_change_execute (void);
> -
>  /* List of elements of the form (BEG-UNCHANGED END-UNCHANGED CHANGE-AMOUNT)
>     describing changes which happened while combine_after_change_calls
>     was nonzero.  We use this to decide how to call them
> diff --git a/src/intervals.h b/src/intervals.h
> index 6a2a8c9..8d2ee83 100644
> --- a/src/intervals.h
> +++ b/src/intervals.h
> @@ -308,16 +308,6 @@ extern Lisp_Object Qinvisible, Qintangible;
>  /* Sticky properties.  */
>  extern Lisp_Object Qfront_sticky, Qrear_nonsticky;
 
> -EXFUN (Fget_char_property, 3);
> -EXFUN (Fget_text_property, 3);
> -EXFUN (Ftext_properties_at, 2);
> -EXFUN (Fnext_property_change, 3);
> -EXFUN (Fadd_text_properties, 4);
> -EXFUN (Fset_text_properties, 4);
> -EXFUN (Fremove_text_properties, 4);
> -EXFUN (Fremove_list_of_text_properties, 4);
> -EXFUN (Ftext_property_any, 5);
> -EXFUN (Fprevious_single_char_property_change, 4);
>  extern Lisp_Object copy_text_properties (Lisp_Object, Lisp_Object,
>                                           Lisp_Object, Lisp_Object,
>                                           Lisp_Object, Lisp_Object);
> diff --git a/src/keyboard.c b/src/keyboard.c
> index fccef03..65b7d53 100644
> --- a/src/keyboard.c
> +++ b/src/keyboard.c
> @@ -459,8 +459,6 @@ static void interrupt_signal (int signalnum);
>  #ifdef SIGIO
>  static void input_available_signal (int signo);
>  #endif
> -static Lisp_Object (Fcommand_execute) (Lisp_Object, Lisp_Object, Lisp_Object,
> -                                    Lisp_Object);
>  static void handle_interrupt (void);
>  static _Noreturn void quit_throw_to_read_char (int);
>  static void process_special_events (void);
> @@ -1324,7 +1322,6 @@ cancel_hourglass_unwind (Lisp_Object arg)
>  /* FIXME: This is wrong rather than test window-system, we should call
>     a new set-selection, which will then dispatch to x-set-selection, or
>     tty-set-selection, or w32-set-selection, ...  */
> -EXFUN (Fwindow_system, 1);
 
>  Lisp_Object
>  command_loop_1 (void)
> diff --git a/src/keymap.c b/src/keymap.c
> index 6c59a4a..db4d5d1 100644
> --- a/src/keymap.c
> +++ b/src/keymap.c
> @@ -92,7 +92,6 @@ static Lisp_Object where_is_cache;
>  /* Which keymaps are reverse-stored in the cache.  */
>  static Lisp_Object where_is_cache_keymaps;
 
> -static Lisp_Object Flookup_key (Lisp_Object, Lisp_Object, Lisp_Object);
>  static Lisp_Object store_in_keymap (Lisp_Object, Lisp_Object, Lisp_Object);
 
>  static Lisp_Object define_as_prefix (Lisp_Object, Lisp_Object);
> @@ -956,8 +955,6 @@ store_in_keymap (Lisp_Object keymap, register Lisp_Object 
> idx, Lisp_Object def)
>    return def;
>  }
 
> -static Lisp_Object Fcopy_keymap (Lisp_Object);
> -
>  static Lisp_Object
>  copy_keymap_item (Lisp_Object elt)
>  {
> diff --git a/src/keymap.h b/src/keymap.h
> index d9334cd..5ed70c6 100644
> --- a/src/keymap.h
> +++ b/src/keymap.h
> @@ -34,19 +34,9 @@ extern Lisp_Object Qkeymap, Qmenu_bar;
>  extern Lisp_Object Qremap;
>  extern Lisp_Object Qmenu_item;
>  extern Lisp_Object current_global_map;
> -EXFUN (Fmake_sparse_keymap, 1);
> -EXFUN (Fkeymap_prompt, 1);
> -EXFUN (Fdefine_key, 3);
> -EXFUN (Fcommand_remapping, 3);
> -EXFUN (Fkey_binding, 4);
> -EXFUN (Fkey_description, 2);
>  extern char *push_key_description (EMACS_INT, char *, int);
> -EXFUN (Fsingle_key_description, 2);
> -EXFUN (Fwhere_is_internal, 5);
> -EXFUN (Fcurrent_active_maps, 2);
>  extern Lisp_Object access_keymap (Lisp_Object, Lisp_Object, int, int, int);
>  extern Lisp_Object get_keymap (Lisp_Object, int, int);
> -EXFUN (Fset_keymap_parent, 2);
>  extern void describe_map_tree (Lisp_Object, int, Lisp_Object, Lisp_Object,
>                             const char *, int, int, int, int);
>  extern ptrdiff_t current_minor_maps (Lisp_Object **, Lisp_Object **);
> diff --git a/src/lisp.h b/src/lisp.h
> index cac5370..ed7b69a 100644
> --- a/src/lisp.h
> +++ b/src/lisp.h
> @@ -2308,56 +2308,12 @@ extern Lisp_Object Qinteger;
 
>  extern Lisp_Object Qfont_spec, Qfont_entity, Qfont_object;
 
> -EXFUN (Finteractive_form, 1);
> -EXFUN (Fbyteorder, 0);
> -
>  /* Defined in frame.c */
>  extern Lisp_Object Qframep;
 
>  /* Defined in data.c */
> -EXFUN (Fcar, 1);
> -EXFUN (Fcar_safe, 1);
> -EXFUN (Fcdr, 1);
> -EXFUN (Fcdr_safe, 1);
> -EXFUN (Fsetcar, 2);
> -EXFUN (Fsetcdr, 2);
> -EXFUN (Fboundp, 1);
> -EXFUN (Ffboundp, 1);
> -EXFUN (Fsymbol_function, 1);
> -EXFUN (Fsymbol_name, 1);
>  extern Lisp_Object indirect_function (Lisp_Object);
> -EXFUN (Findirect_function, 2);
> -EXFUN (Ffset, 2);
> -EXFUN (Fsymbol_value, 1);
>  extern Lisp_Object find_symbol_value (Lisp_Object);
> -EXFUN (Fset, 2);
> -EXFUN (Fdefault_value, 1);
> -EXFUN (Fset_default, 2);
> -EXFUN (Fdefault_boundp, 1);
> -EXFUN (Fmake_local_variable, 1);
> -EXFUN (Flocal_variable_p, 2);
> -
> -EXFUN (Faref, 2);
> -EXFUN (Faset, 3);
> -
> -EXFUN (Fstring_to_number, 2);
> -EXFUN (Fnumber_to_string, 1);
> -EXFUN (Fgtr, 2);
> -EXFUN (Flss, 2);
> -EXFUN (Fgeq, 2);
> -EXFUN (Fleq, 2);
> -EXFUN (Fzerop, 1);
> -EXFUN (Fplus, MANY);
> -EXFUN (Fminus, MANY);
> -EXFUN (Ftimes, MANY);
> -EXFUN (Fquo, MANY);
> -EXFUN (Frem, 2);
> -EXFUN (Fmax, MANY);
> -EXFUN (Fmin, MANY);
> -
> -EXFUN (Fadd1, 1);
> -EXFUN (Fsub1, 1);
> -EXFUN (Fmake_variable_buffer_local, 1);
 
>  /* Convert the integer I to an Emacs representation, either the integer
>     itself, or a cons of two or three integers, or if all else fails a float.
> @@ -2399,22 +2355,11 @@ extern void init_data (void);
>  extern void swap_in_global_binding (struct Lisp_Symbol *);
 
>  /* Defined in cmds.c */
> -EXFUN (Fend_of_line, 1);
> -EXFUN (Fforward_char, 1);
> -EXFUN (Fforward_line, 1);
>  extern void syms_of_cmds (void);
>  extern void keys_of_cmds (void);
 
>  /* Defined in coding.c */
>  extern Lisp_Object Qcharset;
> -EXFUN (Fcoding_system_p, 1);
> -EXFUN (Fcoding_system_base, 1);
> -EXFUN (Fcoding_system_eol_type, 1);
> -EXFUN (Fcheck_coding_system, 1);
> -EXFUN (Fread_coding_system, 2);
> -EXFUN (Fread_non_nil_coding_system, 1);
> -EXFUN (Ffind_operation_coding_system, MANY);
> -EXFUN (Fdecode_coding_string, 4);
>  extern Lisp_Object detect_coding_system (const unsigned char *, ptrdiff_t,
>                                           ptrdiff_t, int, int, Lisp_Object);
>  extern void init_coding (void);
> @@ -2422,8 +2367,6 @@ extern void init_coding_once (void);
>  extern void syms_of_coding (void);
 
>  /* Defined in character.c */
> -EXFUN (Fchar_width, 1);
> -EXFUN (Fstring, MANY);
>  extern ptrdiff_t chars_in_text (const unsigned char *, ptrdiff_t);
>  extern ptrdiff_t multibyte_chars_in_text (const unsigned char *, ptrdiff_t);
>  extern int multibyte_char_to_unibyte (int);
> @@ -2442,9 +2385,6 @@ struct charset;
>  extern void syms_of_composite (void);
 
>  /* Defined in syntax.c */
> -EXFUN (Fforward_word, 1);
> -EXFUN (Fskip_chars_forward, 2);
> -EXFUN (Fskip_chars_backward, 2);
>  extern void init_syntax_once (void);
>  extern void syms_of_syntax (void);
 
> @@ -2467,46 +2407,10 @@ ptrdiff_t hash_put (struct Lisp_Hash_Table *, 
> Lisp_Object, Lisp_Object,
>                   EMACS_UINT);
>  void init_weak_hash_tables (void);
>  extern void init_fns (void);
> -EXFUN (Fmake_hash_table, MANY);
> -EXFUN (Fgethash, 3);
> -EXFUN (Fputhash, 3);
> -EXFUN (Fremhash, 2);
> -
> -EXFUN (Fidentity, 1);
> -EXFUN (Flength, 1);
> -EXFUN (Fappend, MANY);
> -EXFUN (Fconcat, MANY);
> -EXFUN (Fvconcat, MANY);
> -EXFUN (Fcopy_sequence, 1);
> -EXFUN (Fstring_make_multibyte, 1);
> -EXFUN (Fstring_make_unibyte, 1);
> -EXFUN (Fstring_as_multibyte, 1);
> -EXFUN (Fstring_as_unibyte, 1);
> -EXFUN (Fstring_to_multibyte, 1);
> -EXFUN (Fsubstring, 3);
> +
>  extern Lisp_Object substring_both (Lisp_Object, ptrdiff_t, ptrdiff_t,
>                                  ptrdiff_t, ptrdiff_t);
> -EXFUN (Fnth, 2);
> -EXFUN (Fnthcdr, 2);
> -EXFUN (Fmemq, 2);
> -EXFUN (Fassq, 2);
> -EXFUN (Fassoc, 2);
> -EXFUN (Felt, 2);
> -EXFUN (Fmember, 2);
> -EXFUN (Frassq, 2);
> -EXFUN (Fdelq, 2);
> -EXFUN (Fdelete, 2);
> -EXFUN (Fsort, 2);
> -EXFUN (Freverse, 1);
> -EXFUN (Fnreverse, 1);
> -EXFUN (Fget, 2);
> -EXFUN (Fput, 3);
> -EXFUN (Fequal, 2);
> -EXFUN (Fnconc, MANY);
> -EXFUN (Fmapcar, 2);
> -EXFUN (Fmapconcat, 3);
>  extern Lisp_Object do_yes_or_no_p (Lisp_Object);
> -EXFUN (Fprovide, 2);
>  extern Lisp_Object concat2 (Lisp_Object, Lisp_Object);
>  extern Lisp_Object concat3 (Lisp_Object, Lisp_Object, Lisp_Object);
>  extern Lisp_Object nconc2 (Lisp_Object, Lisp_Object);
> @@ -2517,20 +2421,10 @@ extern ptrdiff_t string_char_to_byte (Lisp_Object, 
> ptrdiff_t);
>  extern ptrdiff_t string_byte_to_char (Lisp_Object, ptrdiff_t);
>  extern Lisp_Object string_to_multibyte (Lisp_Object);
>  extern Lisp_Object string_make_unibyte (Lisp_Object);
> -EXFUN (Fcopy_alist, 1);
> -EXFUN (Fplist_get, 2);
> -EXFUN (Fplist_put, 3);
> -EXFUN (Fplist_member, 2);
> -EXFUN (Frassoc, 2);
> -EXFUN (Fstring_equal, 2);
> -EXFUN (Fcompare_strings, 7);
> -EXFUN (Fstring_lessp, 2);
>  extern void syms_of_fns (void);
 
>  /* Defined in floatfns.c */
>  extern double extract_float (Lisp_Object);
> -EXFUN (Ffloat, 1);
> -EXFUN (Ftruncate, 2);
>  extern void init_floatfns (void);
>  extern void syms_of_floatfns (void);
>  extern Lisp_Object fmod_float (Lisp_Object x, Lisp_Object y);
> @@ -2603,11 +2497,7 @@ _Noreturn void __executable_start (void);
>  #endif
>  extern Lisp_Object selected_frame;
>  extern Lisp_Object Vwindow_system;
> -EXFUN (Fding, 1);
> -EXFUN (Fredraw_frame, 1);
>  void duration_to_sec_usec (double, int *, int *);
> -EXFUN (Fsleep_for, 2);
> -EXFUN (Fredisplay, 1);
>  extern Lisp_Object sit_for (Lisp_Object, int, int);
>  extern void init_display (void);
>  extern void syms_of_display (void);
> @@ -2684,22 +2574,14 @@ extern void refill_memory_reserve (void);
>  #endif
>  extern const char *pending_malloc_warning;
>  extern Lisp_Object *stack_base;
> -EXFUN (Fcons, 2);
>  extern Lisp_Object list1 (Lisp_Object);
>  extern Lisp_Object list2 (Lisp_Object, Lisp_Object);
>  extern Lisp_Object list3 (Lisp_Object, Lisp_Object, Lisp_Object);
>  extern Lisp_Object list4 (Lisp_Object, Lisp_Object, Lisp_Object, 
> Lisp_Object);
>  extern Lisp_Object list5 (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object,
>                         Lisp_Object);
> -EXFUN (Flist, MANY);
> -EXFUN (Fmake_list, 2);
>  extern Lisp_Object allocate_misc (void);
> -EXFUN (Fmake_vector, 2);
> -EXFUN (Fvector, MANY);
> -EXFUN (Fmake_symbol, 1);
> -EXFUN (Fmake_marker, 0);
>  extern _Noreturn void string_overflow (void);
> -EXFUN (Fmake_string, 2);
>  extern Lisp_Object make_string (const char *, ptrdiff_t);
>  extern Lisp_Object make_unibyte_string (const char *, ptrdiff_t);
>  extern Lisp_Object make_multibyte_string (const char *, ptrdiff_t, 
> ptrdiff_t);
> @@ -2709,7 +2591,6 @@ extern Lisp_Object make_uninit_multibyte_string 
> (EMACS_INT, EMACS_INT);
>  extern Lisp_Object make_string_from_bytes (const char *, ptrdiff_t, 
> ptrdiff_t);
>  extern Lisp_Object make_specified_string (const char *,
>                                         ptrdiff_t, ptrdiff_t, int);
> -EXFUN (Fpurecopy, 1);
>  extern Lisp_Object make_pure_string (const char *, ptrdiff_t, ptrdiff_t, 
> int);
>  extern Lisp_Object make_pure_c_string (const char *data);
 
> @@ -2723,10 +2604,7 @@ build_string (const char *str)
>  }
 
>  extern Lisp_Object pure_cons (Lisp_Object, Lisp_Object);
> -EXFUN (Fgarbage_collect, 0);
>  extern void make_byte_code (struct Lisp_Vector *);
> -EXFUN (Fmake_byte_code, MANY);
> -EXFUN (Fmake_bool_vector, 2);
>  extern Lisp_Object Qchar_table_extra_slots;
>  extern struct Lisp_Vector *allocate_vector (EMACS_INT);
>  extern struct Lisp_Vector *allocate_pseudovector (int memlen, int lisplen, 
> int tag);
> @@ -2763,12 +2641,6 @@ extern void r_alloc_inhibit_buffer_relocation (int);
>  #endif
 
>  /* Defined in chartab.c */
> -EXFUN (Fmake_char_table, 2);
> -EXFUN (Fset_char_table_parent, 2);
> -EXFUN (Fchar_table_extra_slot, 2);
> -EXFUN (Fset_char_table_extra_slot, 3);
> -EXFUN (Fset_char_table_range, 3);
> -EXFUN (Foptimize_char_table, 2);
>  extern Lisp_Object copy_char_table (Lisp_Object);
>  extern Lisp_Object char_table_ref (Lisp_Object, int);
>  extern Lisp_Object char_table_ref_and_range (Lisp_Object, int,
> @@ -2790,11 +2662,6 @@ extern void syms_of_chartab (void);
>  /* Defined in print.c */
>  extern Lisp_Object Vprin1_to_string_buffer;
>  extern void debug_print (Lisp_Object) EXTERNALLY_VISIBLE;
> -EXFUN (Fprin1, 2);
> -EXFUN (Fprin1_to_string, 2);
> -EXFUN (Fterpri, 1);
> -EXFUN (Fprint, 2);
> -EXFUN (Ferror_message_string, 1);
>  extern Lisp_Object Qstandard_output;
>  extern Lisp_Object Qexternal_debugging_output;
>  extern void temp_output_buffer_setup (const char *);
> @@ -2824,15 +2691,6 @@ extern ptrdiff_t evxprintf (char **, ptrdiff_t *, char 
> const *, ptrdiff_t,
>  /* Defined in lread.c.  */
>  extern Lisp_Object Qvariable_documentation, Qstandard_input;
>  extern Lisp_Object Qbackquote, Qcomma, Qcomma_at, Qcomma_dot, Qfunction;
> -EXFUN (Fread, 1);
> -EXFUN (Fread_from_string, 3);
> -EXFUN (Fintern, 2);
> -EXFUN (Fintern_soft, 2);
> -EXFUN (Funintern, 2);
> -EXFUN (Fload, 5);
> -EXFUN (Fget_load_suffixes, 0);
> -EXFUN (Fread_char, 3);
> -EXFUN (Fread_event, 3);
>  extern Lisp_Object check_obarray (Lisp_Object);
>  extern Lisp_Object intern (const char *);
>  extern Lisp_Object intern_c_string (const char *);
> @@ -2872,17 +2730,10 @@ extern struct handler *handlerlist;
 
>     should no longer be used.  */
>  extern Lisp_Object Vrun_hooks;
> -EXFUN (Frun_hooks, MANY);
> -EXFUN (Frun_hook_with_args, MANY);
> -EXFUN (Frun_hook_with_args_until_failure, MANY);
>  extern void run_hook_with_args_2 (Lisp_Object, Lisp_Object, Lisp_Object);
>  extern Lisp_Object run_hook_with_args (ptrdiff_t nargs, Lisp_Object *args,
>                                      Lisp_Object (*funcall)
>                                      (ptrdiff_t nargs, Lisp_Object *args));
> -EXFUN (Fprogn, UNEVALLED);
> -EXFUN (Finteractive_p, 0);
> -_Noreturn EXFUN (Fthrow, 2);
> -EXFUN (Fsignal, 2);
>  extern _Noreturn void xsignal (Lisp_Object, Lisp_Object);
>  extern _Noreturn void xsignal0 (Lisp_Object);
>  extern _Noreturn void xsignal1 (Lisp_Object, Lisp_Object);
> @@ -2890,12 +2741,7 @@ extern _Noreturn void xsignal2 (Lisp_Object, 
> Lisp_Object, Lisp_Object);
>  extern _Noreturn void xsignal3 (Lisp_Object, Lisp_Object, Lisp_Object,
>                               Lisp_Object);
>  extern _Noreturn void signal_error (const char *, Lisp_Object);
> -EXFUN (Fcommandp, 2);
> -EXFUN (Ffunctionp, 1);
> -EXFUN (Feval, 2);
>  extern Lisp_Object eval_sub (Lisp_Object form);
> -EXFUN (Fapply, MANY);
> -EXFUN (Ffuncall, MANY);
>  extern Lisp_Object apply1 (Lisp_Object, Lisp_Object);
>  extern Lisp_Object call0 (Lisp_Object);
>  extern Lisp_Object call1 (Lisp_Object, Lisp_Object);
> @@ -2905,7 +2751,6 @@ extern Lisp_Object call4 (Lisp_Object, Lisp_Object, 
> Lisp_Object, Lisp_Object, Li
>  extern Lisp_Object call5 (Lisp_Object, Lisp_Object, Lisp_Object, 
> Lisp_Object, Lisp_Object, Lisp_Object);
>  extern Lisp_Object call6 (Lisp_Object, Lisp_Object, Lisp_Object, 
> Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
>  extern Lisp_Object call7 (Lisp_Object, Lisp_Object, Lisp_Object, 
> Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
> -EXFUN (Fdo_auto_save, 2);
>  extern Lisp_Object internal_catch (Lisp_Object, Lisp_Object (*) 
> (Lisp_Object), Lisp_Object);
>  extern Lisp_Object internal_lisp_condition_case (Lisp_Object, Lisp_Object, 
> Lisp_Object);
>  extern Lisp_Object internal_condition_case (Lisp_Object (*) (void), 
> Lisp_Object, Lisp_Object (*) (Lisp_Object));
> @@ -2932,57 +2777,24 @@ extern void syms_of_eval (void);
 
>  /* Defined in editfns.c */
>  extern Lisp_Object Qfield;
> -EXFUN (Fcurrent_message, 0);
> -EXFUN (Fgoto_char, 1);
> -EXFUN (Fpoint_max_marker, 0);
> -EXFUN (Fpoint, 0);
> -EXFUN (Fpoint_marker, 0);
> -EXFUN (Fline_beginning_position, 1);
> -EXFUN (Fline_end_position, 1);
> -EXFUN (Ffollowing_char, 0);
> -EXFUN (Fprevious_char, 0);
> -EXFUN (Fchar_after, 1);
> -EXFUN (Finsert, MANY);
> -EXFUN (Finsert_char, 3);
>  extern void insert1 (Lisp_Object);
> -EXFUN (Feolp, 0);
> -EXFUN (Feobp, 0);
> -EXFUN (Fbolp, 0);
> -EXFUN (Fbobp, 0);
> -EXFUN (Fformat, MANY);
> -EXFUN (Fmessage, MANY);
>  extern Lisp_Object format2 (const char *, Lisp_Object, Lisp_Object);
> -EXFUN (Fbuffer_substring, 2);
> -EXFUN (Fbuffer_string, 0);
>  extern Lisp_Object save_excursion_save (void);
>  extern Lisp_Object save_restriction_save (void);
>  extern Lisp_Object save_excursion_restore (Lisp_Object);
>  extern Lisp_Object save_restriction_restore (Lisp_Object);
> -EXFUN (Fchar_to_string, 1);
> -EXFUN (Fdelete_region, 2);
> -EXFUN (Fnarrow_to_region, 2);
> -EXFUN (Fwiden, 0);
> -EXFUN (Fuser_login_name, 1);
> -EXFUN (Fsystem_name, 0);
>  extern _Noreturn void time_overflow (void);
> -EXFUN (Fcurrent_time, 0);
> -EXFUN (Fget_internal_run_time, 0);
>  extern Lisp_Object make_buffer_string (ptrdiff_t, ptrdiff_t, int);
>  extern Lisp_Object make_buffer_string_both (ptrdiff_t, ptrdiff_t, ptrdiff_t,
>                                           ptrdiff_t, int);
>  extern void init_editfns (void);
>  const char *get_system_name (void);
>  extern void syms_of_editfns (void);
> -EXFUN (Fconstrain_to_field, 5);
> -EXFUN (Ffield_end, 3);
>  extern void set_time_zone_rule (const char *);
 
>  /* Defined in buffer.c */
>  extern int mouse_face_overlay_overlaps (Lisp_Object);
>  extern _Noreturn void nsberror (Lisp_Object);
> -EXFUN (Fset_buffer_multibyte, 1);
> -EXFUN (Foverlay_start, 1);
> -EXFUN (Foverlay_end, 1);
>  extern void adjust_overlays_for_insert (ptrdiff_t, ptrdiff_t);
>  extern void adjust_overlays_for_delete (ptrdiff_t, ptrdiff_t);
>  extern void fix_start_end_in_overlays (ptrdiff_t, ptrdiff_t);
> @@ -2990,27 +2802,11 @@ extern void report_overlay_modification (Lisp_Object, 
> Lisp_Object, int,
>                                           Lisp_Object, Lisp_Object, 
> Lisp_Object);
>  extern int overlay_touches_p (ptrdiff_t);
>  extern Lisp_Object Vbuffer_alist;
> -EXFUN (Fget_buffer, 1);
> -EXFUN (Fget_buffer_create, 1);
> -EXFUN (Fgenerate_new_buffer_name, 2);
> -EXFUN (Fset_buffer, 1);
>  extern Lisp_Object set_buffer_if_live (Lisp_Object);
> -EXFUN (Fbarf_if_buffer_read_only, 0);
> -EXFUN (Fcurrent_buffer, 0);
> -EXFUN (Fother_buffer, 3);
>  extern Lisp_Object other_buffer_safely (Lisp_Object);
> -EXFUN (Foverlay_get, 2);
> -EXFUN (Fbuffer_modified_p, 1);
> -EXFUN (Fset_buffer_modified_p, 1);
> -EXFUN (Fkill_buffer, 1);
> -EXFUN (Fkill_all_local_variables, 0);
> -EXFUN (Fbuffer_enable_undo, 1);
> -EXFUN (Ferase_buffer, 0);
>  extern Lisp_Object Qpriority, Qwindow, Qbefore_string, Qafter_string;
>  extern Lisp_Object get_truename_buffer (Lisp_Object);
>  extern struct buffer *all_buffers;
> -EXFUN (Fprevious_overlay_change, 1);
> -EXFUN (Fbuffer_file_name, 1);
>  extern void init_buffer_once (void);
>  extern void init_buffer (void);
>  extern void syms_of_buffer (void);
> @@ -3018,10 +2814,6 @@ extern void keys_of_buffer (void);
 
>  /* Defined in marker.c */
 
> -EXFUN (Fmarker_position, 1);
> -EXFUN (Fmarker_buffer, 1);
> -EXFUN (Fcopy_marker, 2);
> -EXFUN (Fset_marker, 3);
>  extern ptrdiff_t marker_position (Lisp_Object);
>  extern ptrdiff_t marker_byte_position (Lisp_Object);
>  extern void clear_charpos_cache (struct buffer *);
> @@ -3042,24 +2834,7 @@ extern Lisp_Object Qfile_exists_p;
>  extern Lisp_Object Qfile_directory_p;
>  extern Lisp_Object Qinsert_file_contents;
>  extern Lisp_Object Qfile_name_history;
> -EXFUN (Ffind_file_name_handler, 2);
> -EXFUN (Ffile_name_as_directory, 1);
> -EXFUN (Fexpand_file_name, 2);
> -EXFUN (Ffile_name_nondirectory, 1);
> -EXFUN (Fsubstitute_in_file_name, 1);
> -EXFUN (Ffile_symlink_p, 1);
> -EXFUN (Fverify_visited_file_modtime, 1);
> -EXFUN (Ffile_exists_p, 1);
> -EXFUN (Ffile_name_absolute_p, 1);
> -EXFUN (Fdirectory_file_name, 1);
> -EXFUN (Ffile_name_directory, 1);
>  extern Lisp_Object expand_and_dir_to_file (Lisp_Object, Lisp_Object);
> -EXFUN (Ffile_accessible_directory_p, 1);
> -EXFUN (Funhandled_file_name_directory, 1);
> -EXFUN (Ffile_directory_p, 1);
> -EXFUN (Fwrite_region, 7);
> -EXFUN (Ffile_readable_p, 1);
> -EXFUN (Fread_file_name, 6);
>  extern Lisp_Object close_file_unwind (Lisp_Object);
>  extern Lisp_Object restore_point_unwind (Lisp_Object);
>  extern _Noreturn void report_file_error (const char *, Lisp_Object);
> @@ -3070,12 +2845,7 @@ extern Lisp_Object Qdelete_file;
 
>  /* Defined in search.c */
>  extern void shrink_regexp_cache (void);
> -EXFUN (Fstring_match, 3);
>  extern void restore_search_regs (void);
> -EXFUN (Fmatch_data, 3);
> -EXFUN (Fset_match_data, 2);
> -EXFUN (Fmatch_beginning, 1);
> -EXFUN (Fmatch_end, 1);
>  extern void record_unwind_save_match_data (void);
>  struct re_registers;
>  extern struct re_pattern_buffer *compile_pattern (Lisp_Object,
> @@ -3101,14 +2871,6 @@ extern void clear_regexp_cache (void);
>  extern Lisp_Object Qcompletion_ignore_case;
>  extern Lisp_Object Vminibuffer_list;
>  extern Lisp_Object last_minibuf_string;
> -EXFUN (Fcompleting_read, 8);
> -EXFUN (Fread_from_minibuffer, 7);
> -EXFUN (Fread_variable, 2);
> -EXFUN (Fread_buffer, 3);
> -EXFUN (Fread_minibuffer, 2);
> -EXFUN (Feval_minibuffer, 2);
> -EXFUN (Fread_string, 5);
> -EXFUN (Fassoc_string, 3);
>  extern Lisp_Object get_minibuffer (EMACS_INT);
>  extern void init_minibuf_once (void);
>  extern void syms_of_minibuf (void);
> @@ -3118,24 +2880,16 @@ extern void syms_of_minibuf (void);
>  extern Lisp_Object Qminus, Qplus;
>  extern Lisp_Object Qwhen;
>  extern Lisp_Object Qcall_interactively, Qmouse_leave_buffer_hook;
> -EXFUN (Fprefix_numeric_value, 1);
>  extern void syms_of_callint (void);
 
>  /* Defined in casefiddle.c */
 
>  extern Lisp_Object Qidentity;
> -EXFUN (Fdowncase, 1);
> -EXFUN (Fupcase, 1);
> -EXFUN (Fupcase_region, 2);
> -EXFUN (Fupcase_initials, 1);
> -EXFUN (Fupcase_initials_region, 2);
>  extern void syms_of_casefiddle (void);
>  extern void keys_of_casefiddle (void);
 
>  /* Defined in casetab.c */
 
> -EXFUN (Fset_case_table, 1);
> -EXFUN (Fset_standard_case_table, 1);
>  extern void init_casetab_once (void);
>  extern void syms_of_casetab (void);
 
> @@ -3148,16 +2902,9 @@ extern Lisp_Object Qdisabled, QCfilter;
>  extern Lisp_Object Qup, Qdown, Qbottom;
>  extern Lisp_Object Qtop;
>  extern int input_pending;
> -EXFUN (Fdiscard_input, 0);
> -EXFUN (Frecursive_edit, 0);
> -_Noreturn EXFUN (Ftop_level, 0);
>  extern Lisp_Object menu_bar_items (Lisp_Object);
>  extern Lisp_Object tool_bar_items (Lisp_Object, int *);
>  extern void discard_mouse_events (void);
> -EXFUN (Fevent_convert_list, 1);
> -EXFUN (Fread_key_sequence, 5);
> -EXFUN (Fset_input_interrupt_mode, 1);
> -EXFUN (Fset_input_mode, 4);
>  extern Lisp_Object pending_funcalls;
>  extern int detect_input_pending (void);
>  extern int detect_input_pending_ignore_squeezables (void);
> @@ -3175,9 +2922,6 @@ extern void syms_of_keyboard (void);
>  extern void keys_of_keyboard (void);
 
>  /* Defined in indent.c */
> -EXFUN (Fvertical_motion, 2);
> -EXFUN (Findent_to, 2);
> -EXFUN (Fmove_to_column, 2);
>  extern ptrdiff_t current_column (void);
>  extern void invalidate_current_column (void);
>  extern int indented_beyond_p (ptrdiff_t, ptrdiff_t, EMACS_INT);
> @@ -3195,14 +2939,6 @@ extern Lisp_Object do_switch_frame (Lisp_Object, int, 
> int, Lisp_Object);
>  extern Lisp_Object get_frame_param (struct frame *, Lisp_Object);
>  #endif
>  extern Lisp_Object frame_buffer_predicate (Lisp_Object);
> -EXFUN (Fselect_frame, 2);
> -EXFUN (Fselected_frame, 0);
> -EXFUN (Fmake_frame_visible, 1);
> -EXFUN (Ficonify_frame, 1);
> -EXFUN (Fframe_parameter, 2);
> -EXFUN (Fmodify_frame_parameters, 2);
> -EXFUN (Fraise_frame, 1);
> -EXFUN (Fredirect_frame_focus, 2);
>  extern void frames_discard_buffer (Lisp_Object);
>  extern void syms_of_frame (void);
 
> @@ -3219,7 +2955,6 @@ extern Lisp_Object Qfile_name_handler_alist;
>  extern void fatal_error_signal (int);
>  #endif
>  extern Lisp_Object Qkill_emacs;
> -_Noreturn EXFUN (Fkill_emacs, 1);
>  #if HAVE_SETLOCALE
>  void fixup_locale (void);
>  void synchronize_system_messages_locale (void);
> @@ -3249,10 +2984,6 @@ extern int running_asynch_code;
 
>  /* Defined in process.c.  */
>  extern Lisp_Object QCtype, Qlocal;
> -EXFUN (Fget_buffer_process, 1);
> -EXFUN (Fprocess_status, 1);
> -EXFUN (Fkill_process, 2);
> -EXFUN (Fwaiting_for_user_input_p, 0);
>  extern Lisp_Object Qprocessp;
>  extern void kill_buffer_processes (Lisp_Object);
>  extern int wait_reading_process_output (intmax_t, int, int, int,
> @@ -3278,7 +3009,6 @@ extern void init_process (void);
>  extern void syms_of_process (void);
>  extern void setup_process_coding_systems (Lisp_Object);
 
> -EXFUN (Fcall_process, MANY);
>  #ifndef DOS_NT
>   _Noreturn
>  #endif
> @@ -3290,7 +3020,6 @@ extern void syms_of_callproc (void);
 
>  /* Defined in doc.c */
>  extern Lisp_Object Qfunction_documentation;
> -EXFUN (Fsubstitute_command_keys, 1);
>  extern Lisp_Object read_doc_string (Lisp_Object);
>  extern Lisp_Object get_doc_string (Lisp_Object, int, int);
>  extern void syms_of_doc (void);
> @@ -3309,15 +3038,12 @@ extern Lisp_Object exec_byte_code (Lisp_Object, 
> Lisp_Object, Lisp_Object,
 
>  /* Defined in macros.c */
>  extern Lisp_Object Qexecute_kbd_macro;
> -EXFUN (Fexecute_kbd_macro, 3);
> -EXFUN (Fcancel_kbd_macro_events, 0);
>  extern void init_macros (void);
>  extern void syms_of_macros (void);
 
>  /* Defined in undo.c */
>  extern Lisp_Object Qapply;
>  extern Lisp_Object Qinhibit_read_only;
> -EXFUN (Fundo_boundary, 0);
>  extern void truncate_undo_list (struct buffer *);
>  extern void record_marker_adjustment (Lisp_Object, ptrdiff_t);
>  extern void record_insert (ptrdiff_t, ptrdiff_t);
> @@ -3334,21 +3060,12 @@ extern Lisp_Object Qinsert_in_front_hooks, 
> Qinsert_behind_hooks;
>  extern Lisp_Object Qfront_sticky, Qrear_nonsticky;
>  extern Lisp_Object Qminibuffer_prompt;
 
> -EXFUN (Fnext_single_property_change, 4);
> -EXFUN (Fnext_single_char_property_change, 4);
> -EXFUN (Fprevious_single_property_change, 4);
> -EXFUN (Fget_text_property, 3);
> -EXFUN (Fput_text_property, 5);
> -EXFUN (Fprevious_char_property_change, 2);
> -EXFUN (Fnext_char_property_change, 2);
>  extern void report_interval_modification (Lisp_Object, Lisp_Object);
 
>  /* Defined in menu.c */
>  extern void syms_of_menu (void);
 
>  /* Defined in xmenu.c */
> -EXFUN (Fx_popup_menu, 2);
> -EXFUN (Fx_popup_dialog, 3);
>  extern void syms_of_xmenu (void);
 
>  /* Defined in termchar.h */
> @@ -3385,7 +3102,6 @@ extern ptrdiff_t emacs_write (int, const char *, 
> ptrdiff_t);
>  enum { READLINK_BUFSIZE = 1024 };
>  extern char *emacs_readlink (const char *, char [READLINK_BUFSIZE]);
 
> -EXFUN (Funlock_buffer, 0);
>  extern void unlock_all_files (void);
>  extern void lock_file (Lisp_Object);
>  extern void unlock_file (Lisp_Object);
> @@ -3419,8 +3135,6 @@ extern _Noreturn void fatal (const char *msgid, ...)
>    ATTRIBUTE_FORMAT_PRINTF (1, 2);
 
>  /* Defined in terminal.c */
> -EXFUN (Fframe_terminal, 1);
> -EXFUN (Fdelete_terminal, 2);
>  extern void syms_of_terminal (void);
 
>  /* Defined in font.c */
> @@ -3433,8 +3147,6 @@ extern void syms_of_fontset (void);
 
>  /* Defined in xfns.c, w32fns.c, or macfns.c */
>  extern Lisp_Object Qfont_param;
> -EXFUN (Fxw_display_color_p, 1);
> -EXFUN (Fx_focus_frame, 1);
>  #endif
 
>  /* Defined in xfaces.c */
> @@ -3447,8 +3159,6 @@ extern Lisp_Object QCfamily, QCweight, QCslant;
>  extern Lisp_Object QCheight, QCname, QCwidth, QCforeground, QCbackground;
>  extern Lisp_Object Vface_alternative_font_family_alist;
>  extern Lisp_Object Vface_alternative_font_registry_alist;
> -EXFUN (Fclear_face_cache, 1);
> -EXFUN (Fx_load_color_file, 1);
>  extern void syms_of_xfaces (void);
 
>  #ifdef HAVE_X_WINDOWS
> @@ -3470,11 +3180,6 @@ extern void syms_of_xterm (void);
>  extern char *x_get_keysym_name (int);
>  #endif /* HAVE_WINDOW_SYSTEM */
 
> -#ifdef MSDOS
> -/* Defined in msdos.c */
> -EXFUN (Fmsdos_downcase_filename, 1);
> -#endif
> -
>  #ifdef HAVE_LIBXML2
>  /* Defined in xml.c */
>  extern void syms_of_xml (void);
> diff --git a/src/nsterm.h b/src/nsterm.h
> index 9158b78..80d25d6 100644
> --- a/src/nsterm.h
> +++ b/src/nsterm.h
> @@ -707,8 +707,6 @@ extern void ns_term_shutdown (int sig);
>  #define NS_DUMPGLYPH_MOUSEFACE          3
 
 
> -EXFUN (Fx_display_grayscale_p, 1);
> -EXFUN (Fx_display_planes, 1);
 
>  /* In nsfont, called from fontset.c */
>  extern void nsfont_make_fontset_for_font (Lisp_Object name,
> diff --git a/src/process.c b/src/process.c
> index de7fc14..b30e87c 100644
> --- a/src/process.c
> +++ b/src/process.c
> @@ -249,7 +249,6 @@ static int process_output_skip;
>  #define process_output_delay_count 0
>  #endif
 
> -static Lisp_Object Fget_process (Lisp_Object);
>  static void create_process (Lisp_Object, char **, Lisp_Object);
>  #ifdef SIGIO
>  static int keyboard_bit_set (SELECT_TYPE *);
> @@ -1089,10 +1088,6 @@ DEFUN ("process-query-on-exit-flag",
>    return (XPROCESS (process)->kill_without_query ? Qnil : Qt);
>  }
 
> -#ifdef DATAGRAM_SOCKETS
> -static Lisp_Object Fprocess_datagram_address (Lisp_Object);
> -#endif
> -
>  DEFUN ("process-contact", Fprocess_contact, Sprocess_contact,
>         1, 2, 0,
>         doc: /* Return the contact info of PROCESS; t for a real child.
> diff --git a/src/syntax.c b/src/syntax.c
> index 1ad6683..e7e68e2 100644
> --- a/src/syntax.c
> +++ b/src/syntax.c
> @@ -143,7 +143,6 @@ static ptrdiff_t find_start_begv;
>  static EMACS_INT find_start_modiff;
 
 
> -static Lisp_Object Fsyntax_table_p (Lisp_Object);
>  static Lisp_Object skip_chars (int, Lisp_Object, Lisp_Object, int);
>  static Lisp_Object skip_syntaxes (int, Lisp_Object, Lisp_Object);
>  static Lisp_Object scan_lists (EMACS_INT, EMACS_INT, EMACS_INT, int);
> diff --git a/src/textprop.c b/src/textprop.c
> index fb58f8e..4562cc0 100644
> --- a/src/textprop.c
> +++ b/src/textprop.c
> @@ -72,9 +72,6 @@ Lisp_Object Qfront_sticky, Qrear_nonsticky;
>  static Lisp_Object interval_insert_behind_hooks;
>  static Lisp_Object interval_insert_in_front_hooks;
 
> -static Lisp_Object Fprevious_property_change (Lisp_Object, Lisp_Object,
> -                                           Lisp_Object);
> -
 
>  /* Signal a `text-read-only' error.  This function makes it easier
>     to capture that error in GDB by putting a breakpoint on it.  */
> diff --git a/src/w32term.h b/src/w32term.h
> index 68e62b2..4fdf560 100644
> --- a/src/w32term.h
> +++ b/src/w32term.h
> @@ -688,9 +688,6 @@ struct face;
>  XGCValues *XCreateGC (void *, Window, unsigned long, XGCValues *);
>  struct frame * check_x_frame (Lisp_Object);
 
> -EXFUN (Fx_display_color_p, 1);
> -EXFUN (Fx_display_grayscale_p, 1);
> -
>  typedef DWORD (WINAPI * ClipboardSequence_Proc) (void);
>  typedef BOOL (WINAPI * AppendMenuW_Proc) (
>      IN HMENU,
> diff --git a/src/window.c b/src/window.c
> index 9d78a3e..dc8539f 100644
> --- a/src/window.c
> +++ b/src/window.c
> @@ -2873,13 +2873,6 @@ adjust_window_margins (struct window *w)
>    return 1;
>  }
>  
> -static Lisp_Object Fset_window_margins (Lisp_Object, Lisp_Object, 
> Lisp_Object);
> -static Lisp_Object Fset_window_fringes (Lisp_Object, Lisp_Object, 
> Lisp_Object,
> -                                     Lisp_Object);
> -static Lisp_Object Fset_window_scroll_bars (Lisp_Object, Lisp_Object,
> -                                         Lisp_Object, Lisp_Object);
> -static Lisp_Object Fset_window_vscroll (Lisp_Object, Lisp_Object, 
> Lisp_Object);
> -
>  /* The following three routines are needed for running a window's
>     configuration change hook.  */
>  static void
> diff --git a/src/window.h b/src/window.h
> index 50bd713..fd4f755 100644
> --- a/src/window.h
> +++ b/src/window.h
> @@ -814,14 +814,9 @@ extern Lisp_Object Vmouse_window;
 
>  extern Lisp_Object Vmouse_event;
 
> -EXFUN (Fnext_window, 3);
> -EXFUN (Fselect_window, 2);
> -EXFUN (Fset_window_buffer, 3);
> -EXFUN (Fset_window_point, 2);
>  extern Lisp_Object make_window (void);
>  extern Lisp_Object window_from_coordinates (struct frame *, int, int,
>                                              enum window_part *, int);
> -EXFUN (Fwindow_dedicated_p, 1);
>  extern void resize_frame_windows (struct frame *, int, int);
>  extern void delete_all_child_windows (Lisp_Object);
>  extern void freeze_window_starts (struct frame *, int);
> @@ -892,21 +887,10 @@ struct glyph *get_phys_cursor_glyph (struct window *w);
>  extern Lisp_Object Qwindowp, Qwindow_live_p;
>  extern Lisp_Object Vwindow_list;
 
> -EXFUN (Fwindow_buffer, 1);
> -EXFUN (Fget_buffer_window, 2);
> -EXFUN (Fwindow_minibuffer_p, 1);
> -EXFUN (Fselected_window, 0);
> -EXFUN (Fframe_root_window, 1);
> -EXFUN (Fframe_first_window, 1);
> -EXFUN (Fset_frame_selected_window, 3);
> -EXFUN (Fset_window_configuration, 1);
> -EXFUN (Fcurrent_window_configuration, 1);
>  extern int compare_window_configurations (Lisp_Object, Lisp_Object, int);
> -EXFUN (Fpos_visible_in_window_p, 3);
>  extern void mark_window_cursors_off (struct window *);
>  extern int window_internal_height (struct window *);
>  extern int window_body_cols (struct window *w);
> -EXFUN (Frecenter, 1);
>  extern void temp_output_buffer_show (Lisp_Object);
>  extern void replace_buffer_in_windows (Lisp_Object);
>  extern void replace_buffer_in_windows_safely (Lisp_Object);
> diff --git a/src/xsettings.h b/src/xsettings.h
> index d6b0c09..10dc7ef 100644
> --- a/src/xsettings.h
> +++ b/src/xsettings.h
> @@ -20,8 +20,6 @@ along with GNU Emacs.  If not, see 
> <http://www.gnu.org/licenses/>.  */
>  #ifndef XSETTINGS_H
>  #define XSETTINGS_H
 
> -EXFUN (Ftool_bar_get_system_style, 0);
> -
>  extern void xsettings_initialize (struct x_display_info *dpyinfo);
>  extern void xft_settings_event (struct x_display_info *dpyinfo,
>                                  XEvent *);
> diff --git a/src/xterm.h b/src/xterm.h
> index 68e0372..573d8bf 100644
> --- a/src/xterm.h
> +++ b/src/xterm.h
> @@ -937,7 +937,6 @@ void x_handle_property_notify (XPropertyEvent *);
>  /* From xfns.c.  */
 
>  struct frame *check_x_frame (Lisp_Object);
> -EXFUN (Fx_display_grayscale_p, 1);
>  extern void x_free_gcs (struct frame *);
 
>  /* From xrdb.c.  */



reply via email to

[Prev in Thread] Current Thread [Next in Thread]