1. 11 Apr, 2011 3 commits
    • Paul Eggert's avatar
      Declare Lisp_Object Q* variables to be 'static' if not exproted. · 955cbe7b
      Paul Eggert authored
      This makes it easier for human readers (and static analyzers)
      to see whether these variables are used from other modules.
      * alloc.c, buffer.c, bytecode.c, callint.c, casetab.c, category.c:
      * ccl.c, character.c, charset.c, cmds.c, coding.c, composite.c:
      * data.c, dbusbind.c, dired.c, editfns.c, eval.c, fileio.c, fns.c:
      * font.c, frame.c, fringe.c, ftfont.c, image.c, keyboard.c, keymap.c:
      * lread.c, macros.c, minibuf.c, print.c, process.c, search.c:
      * sound.c, syntax.c, textprop.c, window.c, xdisp.c, xfaces.c, xfns.c:
      * xmenu.c, xselect.c:
      Declare Q* vars static if they are not used in other modules.
      * ccl.h, character.h, charset.h, coding.h, composite.h, font.h:
      * frame.h, intervals.h, keyboard.h, lisp.h, process.h, syntax.h:
      Remove decls of unexported vars.
      * keyboard.h (EVENT_HEAD_UNMODIFIED): Remove now-unused macro.
    • Paul Eggert's avatar
      * lisp.h (DEFINE_FUNC): Make sname 'static'. · 95c82688
      Paul Eggert authored
    • Paul Eggert's avatar
      Make Emacs functions such as Fatom 'static' by default. · 16a97296
      Paul Eggert authored
      This makes it easier for human readers (and static analyzers)
      to see whether these functions can be called from other modules.
      DEFUN now defines a static function.  To make the function external
      so that it can be used in other C modules, use the new macro DEFUE.
      * lisp.h (DEFINE_FUNC): New macro, with the old contents of DEFUN.
      (DEFUN): Rewrite in terms of DEFINE_FUNC.  It now generates a
      static function definition.  Use DEFUE if you want an extern one.
      (DEFUE, INFUN): New macros.
      (Funibyte_char_to_multibyte, Fsyntax_table_p, Finit_image_library):
      (Feval_region, Fbacktrace, Ffetch_bytecode, Fswitch_to_buffer):
      (Ffile_executable_p, Fmake_symbolic_link, Fcommand_execute):
      (Fget_process, Fdocumentation_property, Fbyte_code, Ffile_attributes):
      Remove decls, since these functions are now static.
      (Funintern, Fget_internal_run_time): New decls, since these functions
      were already external.
      * alloc.c, buffer.c, callint.c, callproc.c, casefiddle.c, casetab.c:
      * ccl.c, character.c, chartab.c, cmds.c, coding.c, data.c, dispnew.c:
      * doc.c, editfns.c, emacs.c, eval.c, fileio.c, filelock.c, floatfns.c:
      * fns.c, font.c, fontset.c, frame.c, image.c, indent.c:
      * keyboard.c, keymap.c, lread.c:
      * macros.c, marker.c, menu.c, minibuf.c, print.c, process.c, search.c:
      * syntax.c, term.c, terminal.c, textprop.c, undo.c:
      * window.c, xdisp.c, xfaces.c, xfns.c, xmenu.c, xsettings.c:
      Mark functions with DEFUE instead of DEFUN,
      if they are used in other modules.
      * buffer.c (Fset_buffer_major_mode, Fdelete_overlay): New forward
      decls for now-static functions.
      * buffer.h (Fdelete_overlay): Remove decl.
      * callproc.c (Fgetenv_internal): Mark as internal.
      * composite.c (Fremove_list_of_text_properties): Remove decl.
      (Fcomposition_get_gstring): New forward static decl.
      * composite.h (Fcomposite_get_gstring): Remove decl.
      * dired.c (Ffile_attributes): New forward static decl.
      * doc.c (Fdocumntation_property): New forward static decl.
      * eval.c (Ffetch_bytecode): New forward static decl.
      (Funintern): Remove extern decl; now in .h file where it belongs.
      * fileio.c (Fmake_symbolic_link): New forward static decl.
      * image.c (Finit_image_library): New forward static decl.
      * insdel.c (Fcombine_after_change_execute): Make forward decl static.
      * intervals.h (Fprevious_property_change):
      (Fremove_list_of_text_properties): Remove decls.
      * keyboard.c (Fthis_command_keys): Remove decl.
      (Fcommand_execute): New forward static decl.
      * keymap.c (Flookup_key): New forward static decl.
      (Fcopy_keymap): Now static.
      * keymap.h (Flookup_key): Remove decl.
      * process.c (Fget_process): New forward static decl.
      (Fprocess_datagram_address): Mark as internal.
      * syntax.c (Fsyntax_table_p): New forward static decl.
      (skip_chars): Remove duplicate decl.
      * textprop.c (Fprevious_property_change): New forward static decl.
      * window.c (Fset_window_fringes, Fset_window_scroll_bars):
      Now internal.
      (Fset_window_margins, Fset_window_vscroll): New forward static decls.
      * window.h (Fset_window_vscroll, Fset_window_margins): Remove decls.
  2. 09 Apr, 2011 1 commit
    • Eli Zaretskii's avatar
      Replace some uses of `int' with EMACS_INT. · a53e2e89
      Eli Zaretskii authored
       src/search.c (string_match_1, fast_string_match)
       (fast_c_string_match_ignore_case, fast_string_match_ignore_case)
       (scan_buffer, find_next_newline_no_quit)
       (find_before_next_newline, search_command, Freplace_match)
       (Fmatch_data): Make some `int' variables be EMACS_INT.
       src/xdisp.c (display_count_lines): 3rd argument and return value now
       EMACS_INT.  All callers changed.
       (pint2hrstr): Last argument is now EMACS_INT.
       src/coding.c (detect_coding_utf_8, detect_coding_emacs_mule)
       (detect_coding_iso_2022, detect_coding_sjis, detect_coding_big5)
       (detect_coding_ccl, detect_coding_charset, decode_coding_utf_8)
       (decode_coding_utf_16, decode_coding_emacs_mule)
       (decode_coding_iso_2022, decode_coding_sjis, decode_coding_big5)
       (decode_coding_ccl, decode_coding_charset)
       <consumed_chars, consumed_chars_base>: Declare EMACS_INT.
       (decode_coding_iso_2022, decode_coding_emacs_mule)
       (decode_coding_sjis, decode_coding_big5, decode_coding_charset)
       <char_offset, last_offset>: Declare EMACS_INT.
       (encode_coding_utf_8, encode_coding_utf_16)
       (encode_coding_emacs_mule, encode_invocation_designation)
       (encode_designation_at_bol, encode_coding_iso_2022)
       (encode_coding_sjis, encode_coding_big5, encode_coding_ccl)
       (encode_coding_raw_text, encode_coding_charset) <produced_chars>:
       Declare EMACS_INT.
       (ASSURE_DESTINATION): Declare more_bytes EMACS_INT.
       (encode_invocation_designation): Last argument P_NCHARS is now
       (decode_eol): Declare pos_byte, pos, and pos_end EMACS_INT.
       (produce_chars): from_nchars and to_nchars are now EMACS_INT.
       src/coding.h (struct coding_system) <head_ascii>: Declare EMACS_INT.
       All users changed.
       src/ccl.c (Fccl_execute_on_string): Declare some variables
  3. 08 Apr, 2011 1 commit
    • Chong Yidong's avatar
      Remove internal_with_output_to_temp_buffer, replacing sole user with Lisp. · cbb59342
      Chong Yidong authored
      * lisp/help.el (help-form-show): New function, to be called from C.
      Put help-form output in a buffer named differently than *Help*.
      * src/keyboard.c (read_char): Call Lisp function help-form-show,
      instead of using internal_with_output_to_temp_buffer.
      (Qhelp_form_show): New var.
      * src/lisp.h (internal_with_output_to_temp_buffer): Remove prototype.
      * src/print.c (internal_with_output_to_temp_buffer): Function deleted.
  4. 07 Apr, 2011 2 commits
    • Paul Eggert's avatar
    • Paul Eggert's avatar
      error: Print 32- and 64-bit integers portably (Bug#8435). · 5fdb398c
      Paul Eggert authored
      Without this change, on typical 64-bit hosts error ("...%d...", N)
      was used to print both 32- and 64-bit integers N, which relied on
      undefined behavior.
      * lisp.h, src/m/amdx86-64.h, src/m/ia64.h, src/m/ibms390x.h (pEd):
      New macro.
      * lisp.h (error, verror): Mark as printf-like functions.
      * eval.c (verror): Use vsnprintf, not doprnt, to do the real work.
      Report overflow in size calculations when allocating printf buffer.
      Do not truncate output string at its first null byte.
      * xdisp.c (vmessage): Use vsnprintf, not doprnt, to do the real work.
      Truncate the output at a character boundary, since vsnprintf does not
      do that.
      * charset.c (check_iso_charset_parameter): Convert internal
      character to string before calling 'error', since %c now has the
      printf meaning.
      * coding.c (Fdecode_sjis_char, Fdecode_big5_char): Avoid int
      overflow when computing char to be passed to 'error'.  Do not
      pass Lisp_Object to 'error'; pass the integer instead.
      * nsfns.m (Fns_do_applescript): Use int, not long, since it's
      formatted with plain %d.
  5. 06 Apr, 2011 2 commits
  6. 05 Apr, 2011 1 commit
  7. 01 Apr, 2011 2 commits
  8. 28 Mar, 2011 2 commits
    • Juanma Barranquero's avatar
      src/*.c: Remove some additional unused parameters. · 461c2ab9
      Juanma Barranquero authored
      * lisp.h (multibyte_char_to_unibyte):
      * character.c (multibyte_char_to_unibyte): Remove parameter `rev_tbl',
        unused since 2002-03-01T01:16:34Z!handa@m17n.org and 2008-02-01T16:01:31Z!miles@gnu.org.
      * character.h (CHAR_TO_BYTE8):
      * cmds.c (internal_self_insert):
      * editfns.c (general_insert_function):
      * keymap.c (push_key_description):
      * search.c (Freplace_match):
      * xdisp.c (message_dolog, set_message_1): All callers changed.
      * coding.c (encode_designation_at_bol): Remove parameter `charbuf_end',
        unused since 2002-03-01T01:17:24Z!handa@m17n.org and 2008-02-01T16:01:31Z!miles@gnu.org.
        All callers changed.
    • Stefan Monnier's avatar
      Don't reset post-command-hook to nil upon error. · f6d62986
      Stefan Monnier authored
      * src/eval.c (enum run_hooks_condition): Remove.
      (funcall_nil, funcall_not): New functions.
      (run_hook_with_args): Call each function through a `funcall' argument.
      Remove `cond' argument, now redundant.
      (Frun_hooks, Frun_hook_with_args, Frun_hook_with_args_until_success)
      (Frun_hook_with_args_until_failure): Adjust accordingly.
      (run_hook_wrapped_funcall, Frun_hook_wrapped): New functions.
      * src/keyboard.c (safe_run_hook_funcall): New function.
      (safe_run_hooks_1, safe_run_hooks_error, safe_run_hooks): On error,
      don't set the hook to nil, but remove the offending function instead.
      (Qcommand_hook_internal): Remove, unused.
      (syms_of_keyboard): Don't initialize Qcommand_hook_internal nor define
      * doc/lispref/commands.texi (Command Overview): post-command-hook is not reset
      to nil any more.
  9. 27 Mar, 2011 2 commits
  10. 22 Mar, 2011 1 commit
  11. 18 Mar, 2011 1 commit
  12. 16 Mar, 2011 4 commits
    • Paul Eggert's avatar
      * lisp.h (debug_output_compilation_hack): Add decl here, to avoid · f08b802a
      Paul Eggert authored
      warning when compiling print.c.
    • Stefan Monnier's avatar
      Remove bytecomp- prefix, plus misc changes. · ca105506
      Stefan Monnier authored
      * lisp/emacs-lisp/byte-opt.el (byte-compile-inline-expand): Make it work to
      inline lexbind interpreted functions into lexbind code.
      (bytedecomp-bytes): Not a dynamic var any more.
      (disassemble-offset): Get the bytes via an argument instead.
      (byte-decompile-bytecode-1): Use push.
      * lisp/emacs-lisp/bytecomp.el: Remove the bytecomp- prefix now that we use
      (byte-compile-outbuffer): Rename from bytecomp-outbuffer.
      * lisp/emacs-lisp/cl-macs.el (load-time-value):
      * lisp/emacs-lisp/cl.el (cl-compiling-file): Adjust to new name.
      * lisp/emacs-lisp/pcase.el (pcase-mutually-exclusive-predicates):
      Add byte-code-function-p.
      (pcase--u1): Remove left-over code from early development.
      Fix case of variable shadowing in guards and predicates.
      (pcase--u1): Add a new `let' pattern.
      * src/image.c (parse_image_spec): Use Ffunctionp.
      * src/lisp.h: Declare Ffunctionp.
    • Paul Eggert's avatar
      * alloc.c (mark_backtrace): Move decl from here ... · 8b2c52e9
      Paul Eggert authored
      * lisp.h: ... to here, so that it can be checked.
    • Paul Eggert's avatar
  13. 15 Mar, 2011 6 commits
  14. 14 Mar, 2011 4 commits
    • Paul Eggert's avatar
      * fns.c (get_random, seed_random): Move extern decls from here ... · a884fdcc
      Paul Eggert authored
      * lisp.h: ... to here, so that they can be checked.
    • Juanma Barranquero's avatar
      src/w32*.c: Clean up extern declarations. · 7684e57b
      Juanma Barranquero authored
      * w32select.c: Don't #include "keyboard.h".
        (run_protected): Add extern declaration for  waiting_for_input.
      * lisp.h (VWindow_system, Qfile_name_history):
      * keyboard.h (lispy_function_keys) [WINDOWSNT]:
      * w32term.h (w32_system_caret_hwnd, w32_system_caret_height)
        (w32_system_caret_x, w32_system_caret_y): Declare extern.
      * w32.c (Qlocal, noninteractive1, inhibit_window_system):
      * w32console.c (detect_input_pending, read_input_pending)
      * w32fns.c (quit_char, lispy_function_keys, Qtooltip)
        (w32_system_caret_hwnd, w32_system_caret_height, w32_system_caret_x)
        (w32_system_caret_y, Qfile_name_history):
      * w32font.c (w32font_driver, QCantialias, QCotf, QClang):
      * w32inevt.c (reinvoke_input_signal, lispy_function_keys):
      * w32menu.c (Qmenu_bar, QCtoggle, QCradio, Qoverriding_local_map)
        (Qoverriding_terminal_local_map, Qmenu_bar_update_hook):
      * w32proc.c (Qlocal, report_file_error):
      * w32term.c (Vwindow_system, updating_frame):
      * w32uniscribe.c (initialized, uniscribe_font_driver):
        Remove unneeded extern declarations.
    • Paul Eggert's avatar
      * lisp.h (force_auto_save_soon): New decl. · 4752793e
      Paul Eggert authored
    • Paul Eggert's avatar
  15. 10 Mar, 2011 2 commits
    • Paul Eggert's avatar
      * alloc.c (mark_fringe_data): Move decl from here ... · 524c7aa6
      Paul Eggert authored
      * lisp.h (mark_fringe_data) [HAVE_WINDOW_SYSTEM]: ... to here,
      to check its interface.
      (init_fringe_once): Do not declare unless HAVE_WINDOW_SYSTEM.
    • Paul Eggert's avatar
      * lisp.h (GCPRO1_VAR, UNGCPRO_VAR): New macros, · 7e3ab302
      Paul Eggert authored
      so that the caller can use some name other than gcpro1.
      (GCPRO1, UNGCPRO): Reimplement in terms of the new macros.
      (Fx_create_frame, x_create_tip_frame, Fx_show_tip):
      (Fx_backspace_delete_keys_p): Rename locals to avoid shadowing.
      Some of these renamings use the new GCPRO1_VAR and UNGCPRO_VAR
  16. 09 Mar, 2011 1 commit
  17. 06 Mar, 2011 2 commits
    • Paul Eggert's avatar
      * xdisp.c (display_line): Mark variables that gcc -Wuninitialized cannot · dba65498
      Paul Eggert authored
      deduce are never used uninitialized.
      * lisp.h (IF_LINT): New macro, copied from ../lib-src/emacsclient.c
      which in turn is copied from coreutils.
    • Paul Eggert's avatar
      current_column: Now returns EMACS_INT, fixing some iftc. · 7831777b
      Paul Eggert authored
      * bytecode.c (Fbyte_code): Don't cast current_column () to int.
      * cmds.c (internal_self_insert): Likewise.
      * indent.c (Fcurrent_column): Likewise.
      * keymap.c (describe_command): Likewise.
      * minibuf.c (read_minibuf): Likewise.
      * indent.c (Fcurrent_indentation): Don't cast position_indentation ()
      to int.
      * xdisp.c (redisplay_internal, redisplay_window, decode_mode_spec):
      * cmds.c (internal_self_insert): Declare locals to be EMACS_INT,
      not int or double, if they might contain a column number.
      * indent.c (current_column, Findent_to, indented_beyond_p):
      (compute_motion, vmotion): Likewise.
      * keymap.c (describe_command): Likewise.
      * xdisp.c (pint2str): Likewise.
      * indent.c (last_known_column): Now EMACS_INT, not int.
      * minibuf.c (minibuf_prompt_width): Likewise.
      * indent.c (current_column, current_column_1, position_indentation):
      Return EMACS_INT, not double.
      * lisp.h (current_column): Likewise.
      * indent.c (indented_beyond_p): Last arg is now EMACS_INT, not double.
      All callers changed.
      * lisp.h (indented_beyond_p): Likewise.
  18. 25 Feb, 2011 1 commit
    • Stefan Monnier's avatar
      Get rid of funvec. · 876c194c
      Stefan Monnier authored
      * lisp/emacs-lisp/bytecomp.el (byte-compile-lapcode): Handle new form of
      (byte-compile-close-variables, displaying-byte-compile-warnings):
      Add edebug spec.
      (byte-compile-toplevel-file-form): New fun, split out of
      (byte-compile-from-buffer): Use it to avoid applying cconv
      multiple times.
      (byte-compile): Only strip `function' if it's present.
      (byte-compile-lambda): Add `reserved-csts' argument.
      Use new lexenv arg of byte-compile-top-level.
      (byte-compile-reserved-constants): New var.
      (byte-compile-constants-vector): Obey it.
      (byte-compile-constants-vector): Handle new `byte-constant' form.
      (byte-compile-top-level): Add args `lexenv' and `reserved-csts'.
      (byte-compile-form): Don't check callargs here.
      (byte-compile-normal-call): Do it here instead.
      (byte-compile-resolve-unknown-constant): Remove, unused.
      (byte-compile-make-closure): Use `make-byte-code' rather than `curry',
      putting the environment into the "constant" pool.
      (byte-compile-get-closed-var): Use special byte-constant.
      * lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): Handle new
      intermediate special form `internal-make-vector'.
      (byte-optimize-lapcode): Handle new form of `byte-constant'.
      * lisp/help-fns.el (describe-function-1): Don't handle funvecs.
      * lisp/emacs-lisp/macroexp.el (macroexpand-all-1): Only convert quote to
      function if the content is a lambda expression, not if it's a closure.
      * emacs-lisp/eieio-come.el: Remove.
      * lisp/emacs-lisp/eieio.el: Don't require eieio-comp.
      (defmethod): Do a bit more work to find the body and wrap it into
      a function before passing it to eieio-defmethod.
      (eieio-defmethod): New arg `code' for it.
      * lisp/emacs-lisp/debug.el (debugger-setup-buffer): Don't hide things in
      debugger backtrace.
      * lisp/emacs-lisp/cl-extra.el (cl-macroexpand-all): Use backquotes, and be
      more careful when quoting a function value.
      * lisp/emacs-lisp/cconv.el (cconv-freevars): Accept defvar/defconst.
      (cconv-closure-convert-rec): Catch stray `internal-make-closure'.
      * lisp/Makefile.in (COMPILE_FIRST): Compile pcase and cconv early.
      * src/eval.c (Qcurry): Remove.
      (funcall_funvec): Remove.
      (funcall_lambda): Move new byte-code handling to reduce impact.
      Treat all args as lexical in the case of lexbind.
      (Fcurry): Remove.
      * src/data.c (Qfunction_vector): Remove.
      (Ffunvecp): Remove.
      * src/lread.c (read1): Revert to calling make_byte_code here.
      (read_vector): Don't call make_byte_code any more.
      * src/lisp.h (enum pvec_type): Rename back to PVEC_COMPILED.
      (XSETCOMPILED): Rename back from XSETFUNVEC.
      (FUNVEC_SIZE): Remove.
      (COMPILEDP): Rename back from FUNVECP.
      * src/fns.c (Felt): Remove unexplained FUNVEC check.
      * src/doc.c (Fdocumentation): Don't handle funvec.
      * src/alloc.c (make_funvec, Ffunvec): Remove.
      * doc/lispref/vol2.texi (Top):
      * doc/lispref/vol1.texi (Top):
      * doc/lispref/objects.texi (Programming Types, Funvec Type, Type Predicates):
      * doc/lispref/functions.texi (Functions, What Is a Function, FunctionCurrying):
      * doc/lispref/elisp.texi (Top): Remove mentions of funvec and curry.
  19. 18 Feb, 2011 1 commit
    • Stefan Monnier's avatar
      Don't GC-scan stack data redundantly. · b286858c
      Stefan Monnier authored
      * src/alloc.c (Fgarbage_collect): When using stack scanning, don't
      redundantly scan byte-code stacks, catchlist, and handlerlist.
      * src/bytecode.c (BYTE_MAINTAIN_TOP): New macros.
      (struct byte_stack): Only define `top' and `bottom' if used.
      (mark_byte_stack): Only define if used.
      is not set.
      (Fbyte_code): Don't set `bottom' unless BYTE_MAINTAIN_TOP is set.
      * src/lisp.h (BYTE_MARK_STACK): New macro.
      (mark_byte_stack): Only declare if BYTE_MARK_STACK is set.
      * src/term.c (OUTPUT_IF): Use OUTPUT.
  20. 17 Feb, 2011 1 commit
    • Stefan Monnier's avatar
      Various compiler bug-fixes. MPC seems to run correctly now. · b38b1ec0
      Stefan Monnier authored
      * lisp/files.el (lexical-binding): Add a safe-local-variable property.
      * lisp/emacs-lisp/byte-opt.el (byte-inline-lapcode): Check how many elements
      are added to the stack.
      (byte-compile-splice-in-already-compiled-code): Don't touch lexical nor
      byte-compile-depth now that byte-inline-lapcode does it for us.
      (byte-compile-inline-expand): Don't inline dynbind byte code into
      lexbind code, since it has to be done differently.
      * lisp/emacs-lisp/bytecomp.el (byte-compile-arglist-warn):
      Correctly extract arglist from `closure's.
      (byte-compile-cl-warn): Compiler-macros are run earlier now.
      (byte-compile-top-level): Bind byte-compile-lexical-environment to nil,
      except for lambdas.
      (byte-compile-form): Don't run the compiler-macro expander here.
      (byte-compile-let): Merge with byte-compile-let*.
      Don't preserve-body-value if the body's value was discarded.
      * lisp/emacs-lisp/cconv.el (cconv--set-diff, cconv--set-diff-map)
      (cconv--map-diff, cconv--map-diff-elem, cconv--map-diff-set): New funs.
      (cconv--env-var): New constant.
      (cconv-closure-convert-rec): Use it and use them.  Fix a typo that
      ended up forgetting to remove entries from lmenvs in `let'.
      For `lambda' use the outer `fvrs' when building the closure and don't
      forget to remove `vars' from the `emvrs' and `lmenvs' of the body.
      * lisp/emacs-lisp/cl-macs.el (cl-byte-compile-block): Disable optimization
      in lexbind, because it needs a different implementation.
      * src/bytecode.c (exec_byte_code): Fix handling of &rest.
      * src/eval.c (Vinternal_interpreter_environment): Remove.
      (syms_of_eval): Do declare Vinternal_interpreter_environment as
      a global lisp var, but unintern it to hide it.
      * src/data.c (Finteractive_form): Understand `closure's.