1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-03 18:41:25 -08:00
Commit graph

33448 commits

Author SHA1 Message Date
Paul Eggert
eddb36a7d5 * emacs.c (main): Convert three 'signal' calls to 'sigaction' calls.
Problem introduced when merging patches.  Noted by Eli Zaretskii in
<http://bugs.gnu.org/12327#67>.
2012-09-07 01:55:03 -07:00
Paul Eggert
1a4f1e9b48 More signal-handler cleanup.
* configure.ac (FLOAT_CHECK_DOMAIN): Comment fix (Bug#12327).
* src/floatfns.c: Comment fix.
* src/lisp.h (force_auto_save_soon): Declare regardless of SIGDANGER.
SIGDANGER might not be in scope so "#ifdef SIGDANGER" is not right,
and anyway the declaration is harmless even if SIGDANGER is not defined.
* src/syssignal.h (SIGIO): Also #undef if (! defined FIONREAD ||
defined BROKEN_FIONREAD).  systty.h formerly did this, but other
source files not surprisingly expected syssignal.h to define, or
not define, SIGIO, and it's cleaner to do it that way, for consistency.
Include <sys/ioctl.h>, for FIONREAD.
* src/systty.h (SIGIO): Do not #undef here; it's now syssignal.h's job.
This eliminates a problem whereby other files mysteriously had
to include "syssignal.h" before including "systty.h" if they
wanted to use "#ifdef SIGIO".
2012-09-07 01:46:44 -07:00
Eli Zaretskii
3e6d6928bd MS-Windows followup for 2012-09-07T01:27:44Z!eggert@cs.ucla.edu, signal-handler cleanup.
src/w32proc.c (sigaction): New function, emulates Posix 'sigaction'.
 src/w32.c (sigemptyset): Empty the set.
 (sigsetmask, sigmask, sigblock, sigunblock): Remove unused functions.

 nt/inc/ms-w32.h (struct sigaction): Declare sa_handler __cdecl.

Fixes: debbugs:12327
2012-09-07 11:20:07 +03:00
Eli Zaretskii
bc8000ff70 Fix compilation failure under ENABLE_CHECKING.
src/alloc.c [ENABLE_CHECKING]: Include signal.h, since we need SIGABRT.

Fixes: debbugs:12327
2012-09-07 10:24:08 +03:00
Dmitry Antipov
b4fa72f279 * alloc.c (mark_buffer): Revert unsafe marking optimization.
(mark_object): Likewise for frame objects.
2012-09-07 11:05:56 +04:00
Paul Eggert
30730c93a0 * syssignal.h (handle_on_main_thread): Always declare,
even if FORWARD_SIGNAL_TO_MAIN_THREAD is not defined.
This ports to platforms without HAVE_PTHREAD.
2012-09-06 23:47:30 -07:00
Paul Eggert
2fe282993c Signal-handler cleanup.
Emacs's signal handlers were written in the old 4.2BSD style with
sigblock and sigmask and so forth, and this led to some
inefficiencies and confusion.  Rewrite these to use
pthread_sigmask etc. without copying signal sets around.  Also,
get rid of the confusing macros 'SIGNAL_THREAD_CHECK' and
'signal', and instead use functions that do not attempt to take
over the system name space.  This patch causes Emacs's text
segment to shrink by 0.7% on my platform, Fedora 17 x86-64.
* configure.ac (PTY_OPEN, PTY_TTY_NAME_SPRINTF):
Adjust to syssignal.h changes.
(SIGNAL_H_AB): Remove; no longer needed.
* src/alloc.c, src/emacsgtkfixed.c, src/nsfns.m, src/widget.c, src/xmenu.c:
Do not include <signal.h> or "syssignal.h", as these
modules do not use signals.
* src/atimer.c, src/callproc.c, src/data.c, src/dispnew.c, src/emacs.c:
* src/floatfns.c, src/gtkutil.c, src/keyboard.c, src/process.c, src/sound.c:
* src/sysdep.c, src/term.c, src/xterm.c:
Do not include <signal.h>, as "syssignal.h" does that for us now.
* src/atimer.c (sigmask_atimers): New function.
(block_atimers, unblock_atimers): New functions,
replacing the old macros BLOCK_ATIMERS and UNBLOCK_ATIMERS.
All uses replaced.
* src/conf_post.h [SIGNAL_H_AHB]: Do not include <signal.h>;
no longer needed here.
* src/emacs.c (main): Inspect existing signal handler with sigaction,
so that there's	no need to block and unblock SIGHUP.
* src/sysdep.c (struct save_signal): New member 'action', replacing
old member 'handler'.
(save_signal_handlers, restore_signal_handlers):
Use sigaction instead of 'signal' to save and restore.
(get_set_sighandler, set_sighandler) [!WINDOWSNT]:
New function.  All users of 'signal' modified to use set_sighandler
if they're writeonly, and to use sys_signal if they're read+write.
(emacs_sigaction_init, forwarded_signal): New functions.
(sys_signal): Remove.  All uses replaced by calls to sigaction
and emacs_sigaction_init, or by direct calls to 'signal'.
(sys_sigmask) [!__GNUC__]: Remove; no longer needed.
(sys_sigblock, sys_sigunblock, sys_sigsetmask): Remove;
all uses replaced by pthread_sigmask etc. calls.
* src/syssignal.h: Include <signal.h>.
(emacs_sigaction_init, forwarded_signal): New decls.
(SIGMASKTYPE): Remove.  All uses replaced by its definiens, sigset_t.
(SIGEMPTYMASK): Remove; all uses replaced by its definiens, empty_mask.
(sigmask, sys_sigmask): Remove; no longer needed.
(sigpause): Remove.  All uses replaced by its definiens, sigsuspend.
(sigblock, sigunblock, sigfree):
(sigsetmask) [!defined sigsetmask]:
Remove.  All uses replaced by pthread_sigmask.
(signal): Remove.  Its remaining uses (with SIG_DFL and SIG_IGN)
no longer need to be replaced, and its typical old uses
are now done via emacs_sigaction_init and sigaction.
(sys_sigblock, sys_sigunblock, sys_sigsetmask): Remove decls.
(sys_sigdel): Remove; unused.
(NSIG): Remove a FIXME; the code's fine.  Remove an unnecessary ifdef.

Fixes: debbugs:12327
2012-09-06 18:27:44 -07:00
Eli Zaretskii
0216c1289b Fix bug #12327 with SIGCHLD handling on Windows and some other systems.
src/process.c (CAN_HANDLE_MULTIPLE_CHILDREN): Fix a typo that broke
 SIGCHLD handling on systems that don't have WNOHANG.
2012-09-06 19:42:48 +03:00
Dmitry Antipov
c752cfa916 Explicitly mark buffer_defaults and buffer_local_symbols.
* alloc.c (Fgarbage_collect): Mark buffer_defaults and
mark_local_symbols here.
(mark_object): If GC_CHECK_MARKED_OBJECTS, simplify checking
since special buffers aren't marked here any more.
(allocate_buffer): Chain new buffer with all_buffers here...
* buffer.c (Fget_buffer_create, Fmake_indirect_buffer): ...and
not here.
(Vbuffer_defaults, Vbuffer_local_symbols): Remove.
(syms_of_buffer): Remove staticpro of the above.
(init_buffer_once): Set names for buffer_defaults and
buffer_local_symbols.
2012-09-06 13:15:44 +04:00
Paul Eggert
a864ef1457 Use bool for booleans in font-related modules.
* font.c (font_intern_prop, font_style_to_value)
(font_style_symbolic, font_parse_xlfd, font_parse_fcname)
(generate_otf_features, font_check_otf_features, font_check_otf)
(font_match_p, font_list_entities, font_at):
* fontset.c (fontset_id_valid_p, reorder_font_vector
(fontset_find_font, Fset_fontset_font)
(face_suitable_for_char_p) [0]:
* ftfont.c (fc_initialized, ftfont_get_open_type_spec)
(ftfont_open, ftfont_text_extents, ftfont_check_otf):
(m17n_flt_initialized, ftfont_shape_by_flt):
* ftxfont.c (ftxfont_draw_bitmap, ftxfont_draw):
* nsfont.m (nsfont_draw):
* w32font.c (w32font_draw):
* w32term.c (x_draw_glyphless_glyph_string_foreground):
Use bool for booleans.
* font.h: Adjust to above API changes.
(struct font, struct font_driver, struct font_driver_list):
Use bool for booleans.
(struct font): Remove useless member encoding_type.
All users removed.
* fontset.c, xftfont.c: Omit unnecessary static decls.
2012-09-06 01:04:49 -07:00
Dmitry Antipov
0699fc18a5 * alloc.c (mark_object): Revert window marking code
since it's unsafe for the Fset_window_configuration.
2012-09-06 11:10:25 +04:00
Paul Eggert
20ef56dbc8 Fix race conditions with signal handlers and errno.
Be more systematic about preserving errno whenever a signal
handler returns, even if it's not in the main thread.  Do this by
renaming signal handlers to distinguish between signal delivery
and signal handling.  All uses changed.
* atimer.c (deliver_alarm_signal): Rename from alarm_signal_handler.
* data.c (deliver_arith_signal): Rename from arith_error.
* dispnew.c (deliver_window_change_signal): Rename from
window_change_signal.
* emacs.c (deliver_error_signal): Rename from fatal_error_signal.
(deliver_danger_signal) [SIGDANGER]: Rename from memory_warning_signal.
* keyboard.c (deliver_input_available_signal): Rename from
input_available_signal.
(deliver_user_signal): Rename from handle_user_signal.
(deliver_interrupt_signal): Rename from interrupt_signal.
* process.c (deliver_pipe_signal): Rename from send_process_trap.
(deliver_child_signal): Rename from sigchld_handler.
* atimer.c (handle_alarm_signal):
* data.c (handle_arith_signal):
* dispnew.c (handle_window_change_signal):
* emacs.c (handle_fatal_signal, handle_danger_signal):
* keyboard.c (handle_input_available_signal):
* keyboard.c (handle_user_signal, handle_interrupt_signal):
* process.c (handle_pipe_signal, handle_child_signal):
New functions, with the actual signal-handling code taken from the
original respective signal handlers, sans the sporadic attempts to
preserve errno, since that's now done by handle_on_main_thread.
* atimer.c (alarm_signal_handler): Remove unnecessary decl.
* emacs.c, floatfns.c, lisp.h: Remove unused FLOAT_CATCH_SIGKILL cruft.
* emacs.c (main_thread) [FORWARD_SIGNAL_TO_MAIN_THREAD]:
Move to sysdep.c.
(main) [FORWARD_SIGNAL_TO_MAIN_THREAD]:
Move initialization of main_thread to sysdep.c's init_signals.
* process.c (waitpid) [!WNOHANG]: #define to wait; that's good enough for
our usage, and simplifies the mainline code.
(record_child_status_change): New static function, as a helper
for handle_child_signal, and with most of the old child handler's
contents.
(CAN_HANDLE_MULTIPLE_CHILDREN): New constant.
(handle_child_signal): Use the above.
* sysdep.c (main_thread) [FORWARD_SIGNAL_TO_MAIN_THREAD]:
Moved here from emacs.c.
(init_signals) [FORWARD_SIGNAL_TO_MAIN_THREAD]: Initialize it;
code moved here from emacs.c's main function.
* sysdep.c, syssignal.h (handle_on_main_thread): New function,
replacing the old SIGNAL_THREAD_CHECK.  All uses changed.  This
lets callers save and restore errno properly.
2012-09-05 14:33:53 -07:00
Dmitry Antipov
e3ccf108a9 Remove redundant or unused things here and there.
* lisp.h (CYCLE_CHECK, CHAR_TABLE_TRANSLATE): Remove.
* conf_post.h (RE_TRANSLATE): Use char_table_translate.
* editfns.c (Fcompare_buffer_substrings): Likewise.
* frame.h (struct terminal, struct font_driver_list):
Remove redundant declarations.
* window.h (Qleft, Qright): Likewise.
2012-09-05 21:05:32 +04:00
Dmitry Antipov
697e1e393c Do not mark objects from deleted buffers, windows and frames.
* alloc.c (mark_buffer): Mark just the buffer if it is dead.
(mark_object): Likewise for windows and frames.
2012-09-05 19:34:45 +04:00
Dmitry Antipov
c1ca42cae6 * alloc.c (valid_lisp_object_p): Treat killed buffers,
buffer_defaults and buffer_local_symbols as valid objects.
Return special value to denote them.
2012-09-05 16:55:03 +04:00
Paul Eggert
f75d7a913d * fileio.c, filelock.c, floatfns.c, fns.c: Use bool for boolean.
* fileio.c (auto_saving, auto_save_error_occurred, make_temp_name)
(Fexpand_file_name, barf_or_query_if_file_exists, Fcopy_file)
(file_name_absolute_p, Fsubstitute_in_file_name):
(check_executable, check_writable, Ffile_accessible_directory_p)
(Fset_file_selinux_context, Fdefault_file_modes)
(Finsert_file_contents, choose_write_coding_system)
(Fwrite_region, build_annotations, a_write, e_write)
(Fdo_auto_save):
* filelock.c (boot_time_initialized, get_boot_time)
(get_boot_time_1, lock_file_1, within_one_second):
* floatfns.c (in_float):
* fns.c (concat, internal_equal, Frequire, base64_encode_1)
(base64_decode_1, cmpfn_eql, cmpfn_user_defined)
(sweep_weak_table, sweep_weak_hash_tables, secure_hash):
* lisp.h (struct Lisp_Hash_Table.cmpfn):
* window.c (compare_window_configurations):
Use bool for booleans.
* fileio.c (auto_saving_dir_umask, auto_saving_mode_bits)
(Fdefault_file_modes): Now mode_t, not int, for modes.
(Fdo_auto_save): Set a boolean to 1 rather than using ++.
(internal_delete_file): Now returns void, not a (boolean) int,
since nobody was looking at the return value.
* lisp.h, window.h: Adjust to above API changes.
2012-09-05 00:18:46 -07:00
Paul Eggert
014d93beef * xdisp.c (set_message): Simplify and reindent last change. 2012-09-04 20:37:32 -07:00
Juanma Barranquero
776f29e171 src/makefile.w32-in ($(BLD)/sysdep.$(O)): Update dependencies. 2012-09-05 02:30:14 +02:00
Lars Ingebrigtsen
7f7e0167cf Implement `debug-on-message'.
This allows tracking down what piece of code is outputting stuff in
the echo area.

* eval.c (call_debugger): Make the function non-static so that we
can call it from set_message.

* xdisp.c (set_message): Implement the new variable `debug-on-message'.
(syms_of_xdisp): Defvar it and `inhibit-debug-on-message'.
2012-09-04 23:21:00 +02:00
Paul Eggert
cf29dd84d2 Give more-useful info on a fatal error (Bug#12328).
* doc/emacs/trouble.texi (Crashing): New section, documenting this.
* etc/NEWS: Document the change.
* src/alloc.c [ENABLE_CHECKING]: Do not include <execinfo.h>.
(die) [ENABLE_CHECKING]: Call fatal_error_backtrace instead
of doing the work ourselves.
* src/emacs.c (fatal_error_signal): Let fatal_error_backtrace
do most of the work.
(fatal_error_backtrace): New function, taken from the guts
of the old fatal_error_signal, but with a new option to output
a backtrace.
(shut_down_emacs) [!DOS_NT]: Use strsignal to give more-useful
info about the signal than just its number.
* src/lisp.h (fatal_error_backtrace, emacs_backtrace): New decls.
* src/sysdep.c: Include <execinfo.h>
(emacs_backtrace): New function, taken partly from the previous
code of the 'die' function.
(emacs_abort): Call fatal_error_backtrace rather than abort.
2012-09-04 11:29:04 -07:00
Stefan Monnier
972debf2e7 Macro-expand interpreted code during load.
* src/lread.c (readevalloop): Call internal-macroexpand-for-load to perform
eager (load-time) macro-expansion.
* src/lisp.mk (lisp): Add macroexp.
* lisp/loadup.el: Load macroexp.  Remove hack.
* lisp/emacs-lisp/macroexp.el (macroexp--eval-if-compile): New function.
(macroexp--expand-all): Use it to get better warnings.
(macroexp--backtrace, macroexp--trim-backtrace-frame)
(internal-macroexpand-for-load): New functions.
(macroexp--pending-eager-loads): New var.
(emacs-startup-hook): New hack to replace one in loadup.el.
* lisp/emacs-lisp/cl-macs.el (cl--compiler-macro-list*)
(cl--compiler-macro-cXXr): Move to top, before they can be used.
(cl-psetf): Simplify.
(cl-defstruct): Add indent rule.
2012-09-04 13:40:25 -04:00
Paul Eggert
1088b9226e Simplify redefinition of 'abort' (Bug#12316).
Do not try to redefine the 'abort' function.  Instead, redo
the code so that it calls 'emacs_abort' rather than 'abort'.
This removes the need for the NO_ABORT configure-time macro
and makes it easier to change the abort code to do a backtrace.
* configure.ac (NO_ABRT): Remove.
* admin/CPP-DEFINES (NO_ABORT): Remove.
* nt/inc/ms-w32.h (w32_abort) [HAVE_NTGUI]: Remove.
* src/.gdbinit: Just stop at emacs_abort, not at w32_abort or abort.
* src/emacs.c (abort) [!DOS_NT && !NO_ABORT]:
Remove; sysdep.c's emacs_abort now takes its place.
* src/lisp.h (emacs_abort): New decl.  All calls from Emacs code to
'abort' changed to use 'emacs_abort'.
* src/msdos.c (dos_abort) [defined abort]: Remove; not used.
(abort) [!defined abort]: Rename to ...
(emacs_abort): ... new name.
* src/sysdep.c (emacs_abort) [!HAVE_NTGUI]: New function, taking
the place of the old 'abort' in emacs.c.
* src/w32.c, src/w32fns.c (abort): Do not #undef.
* src/w32.c (emacs_abort): Rename from w32_abort.
2012-09-04 10:34:54 -07:00
Eli Zaretskii
30934d334e Fix display of Arabic diacriticals on Windows, per bug #11860.
src/w32uniscribe.c (uniscribe_shape): Reverse the sign of
 offsets[j].dv, since the y axis of the screen coordinates points
 down, while the y axis of the font definition coordinates points
 up.  This fixes display of Arabic diacritics such as KASRA and
 KASRATAN.
2012-09-04 20:15:45 +03:00
Paul Eggert
af26b72c11 Be more systematic about _setjmp vs setjmp.
* alloc.c (test_setjmp, mark_stack):
* image.c (PNG_LONGJMP) [PNG_LIBPNG_VER < 10500]:
(PNG_JMPBUF) [! (PNG_LIBPNG_VER < 10500)]:
(png_load, my_error_exit, jpeg_load):
* process.c (send_process_trap, send_process):
Uniformly prefer _setjmp and _longjmp to setjmp and longjmp.
The underscored versions are up to 30x faster on some hosts.
Formerly, the code used setjmp+longjmp sometimes and
_setjmp+_longjmp at other times, with no particular reason to
prefer setjmp+longjmp.
2012-09-03 23:34:19 -07:00
Paul Eggert
d42f4f0fb3 Revert changes prompted only by gcc -Wjump-misses-init. 2012-09-03 12:36:09 -07:00
Paul Eggert
26d4541d4c Fix minor problems found by static checking.
* buffer.c (Fdelete_all_overlays): Return nil.
* doc.c (Fsubstitute_command_keys):
* regex.c (WEAK_ALIAS):
* xdisp.c (redisplay_internal):
Move initialization down, to pacify GCC 4.7.1 -Wjump-misses-init.
2012-09-03 02:22:43 -07:00
Martin Rudalics
c5e28e3927 New macro with-temp-buffer-window and related fixes.
* buffer.c (Fdelete_all_overlays): New function.

* window.el (temp-buffer-window-setup-hook)
(temp-buffer-window-show-hook): New hooks.
(temp-buffer-window-setup, temp-buffer-window-show)
(with-temp-buffer-window): New functions.
(fit-window-to-buffer): Remove unused optional argument
OVERRIDE.
(special-display-popup-frame): Make sure the window used shows
BUFFER.

* help.el (temp-buffer-resize-mode): Fix doc-string.
(resize-temp-buffer-window): New optional argument WINDOW.

* files.el (recover-file, save-buffers-kill-emacs):
* dired.el (dired-mark-pop-up): Use with-temp-buffer-window.
2012-09-03 10:54:25 +02:00
Chong Yidong
3eab3ca987 * gtkutil.c: Add extern decl for Qxft. 2012-09-03 16:13:33 +08:00
Paul Eggert
1882aa3878 * emacs.c, eval.c: Use bool for boolean.
* emacs.c (initialized, inhibit_window_system, running_asynch_code):
(malloc_using_checking) [DOUG_LEA_MALLOC]:
(display_arg) [HAVE_X_WINDOWS || HAVE_NS]:
(noninteractive, no_site_lisp, fatal_error_in_progress, argmatch)
(main, decode_env_path, Fdaemon_initialized):
* eval.c (call_debugger, Finteractive_p, interactive_p):
(unwind_to_catch, Fsignal, wants_debugger, skip_debugger)
(maybe_call_debugger, Fbacktrace):
* process.c (read_process_output, exec_sentinel):
Use bool for booleans.
* emacs.c (shut_down_emacs): Omit unused boolean argument NO_X.
All callers changed.
* eval.c (interactive_p): Omit always-true boolean argument
EXCLUDE_SUBRS_P.  All callers changed.
* dispextern.h, lisp.h: Reflect above API changes.
* firstfile.c (dummy): Use the address of 'main', whose signature
won't change, instead of the address of 'initialize', whose
signature just changed from int to bool.
* lisp.h (fatal_error_in_progress): New decl of boolean, moved here ...
* msdos.c (fatal_error_in_progress): ... from here.
* xdisp.c (redisplaying_p): Now a boolean.  Set it to 1 instead
of incrementing it.
(redisplay_internal, unwind_redisplay): Simply clear
REDISPLAYING_P when unwinding, instead of saving its previous,
always-false value and then restoring it.
2012-09-02 10:10:35 -07:00
Paul Eggert
a411ac43d3 Clean up some extern decls.
Mostly, this hoists extern decls out of .c files and into .h files.
That way, we're more likely to catch errors if the interfaces change.
* alloc.c [USE_GTK]: Include "gtkutil.h" so that we need not
declare xg_mark_data.
* dispextern.h (x_frame_parm_handlers):
* font.h (Qxft):
* lisp.h (Qlexical_binding, Qinternal_interpreter_environment)
(Qextra_light, Qlight, Qsemi_light, Qsemi_bold, Qbold, Qextra_bold)
(Qultra_bold, Qoblique, Qitalic):
Move extern decl here from .c file.
* alloc.c (xg_mark_data) [USE_GTK]:
* doc.c (Qclosure):
* eval.c (Qlexical_binding):
* fns.c (time) [!HAVE_UNISTD_H]:
* gtkutil.c (Qxft, Qnormal, Qextra_light, Qlight, Qsemi_light)
(Qsemi_bold, Qbold, Qextra_bold, Qultra_bold, Qoblique, Qitalic):
* image.c (Vlibrary_cache, QCloaded_from) [HAVE_NTGUI]:
* lread.c (Qinternal_interpreter_environment):
* minibuf.c (Qbuffer):
* process.c (QCfamily, QCfilter):
* widget.c (free_frame_faces):
* xfaces.c (free_frame_menubar) [USE_X_TOOLKIT]:
* xfont.c (x_clear_errors):
* xterm.c (x_frame_parm_handlers):
Remove now-redundant extern decls.
* keyboard.c, keyboard.h (ignore_mouse_drag_p) [USE_GTK || HAVE_NS]:
* xfaces.c (Qultra_light, Qreverse_oblique, Qreverse_italic):
Now static.
* xfaces.c: Remove unnecessary static decls.
* xterm.c (updating_frame): Remove decl of nonexistent object.
2012-09-02 09:56:31 -07:00
Paul Eggert
c04889f8e3 * Makefile.in (gl-stamp): Don't scan $(SOME_MACHINE_OBJECTS)
when building globals.h, as the objects that are not built on
this host are not needed to compile C files on this host.
2012-09-02 07:26:47 -07:00
Jan Djärv
8b33967313 Prototype for x_wm_set_size_hint restored.
* frame.h: Add missing prototype for x_wm_set_size_hint.

* gtkutil.h: Remove prototype for x_wm_set_size_hint.
2012-09-02 12:53:46 +02:00
Paul Eggert
a08d4ba773 * doc.c, editfns.c, insdel.c, intervals.c: Use bool for boolean.
* doc.c (read_bytecode_char, get_doc_string, reread_doc_file)
(Fdocumentation, Fdocumentation_property, Fsnarf_documentation)
(Fsubstitute_command_keys):
* editfns.c (region_limit, find_field, Fconstrain_to_field)
(save_excursion_save, save_excursion_restore)
(disassemble_lisp_time, decode_time_components, emacs_nmemftime)
(format_time_string, general_insert_function)
(make_buffer_string, make_buffer_string_both)
(Fsubst_char_in_region, Ftranslate_region_internal, Fformat):
* insdel.c (check_markers, gap_left, adjust_markers_for_insert)
(copy_text, insert_1, insert_1_both, insert_from_string)
(insert_from_string_before_markers, insert_from_string_1)
(insert_from_buffer, insert_from_buffer_1, replace_range)
(replace_range_2, del_range_1, del_range_byte, del_range_both)
(del_range_2, modify_region):
* intervals.c (intervals_equal, balance_possible_root_interval)
(adjust_intervals_for_insertion, merge_properties_sticky)
(graft_intervals_into_buffer, lookup_char_property)
(adjust_for_invis_intang, set_point_both)
(get_property_and_range, compare_string_intervals)
(set_intervals_multibyte_1, set_intervals_multibyte):
* keyboard.c (decode_timer):
Use bool for boolean.
* intervals.h, lisp.h, systime.h: Reflect above API changes.
* editfns.c (struct info): Use 1-bit unsigned bitfields for booleans.
2012-09-02 00:10:10 -07:00
Chong Yidong
48c948de78 * keymap.c (push_key_description): Print M-TAB as C-M-i.
Fixes: debbugs:11758
2012-09-02 11:50:29 +08:00
Juanma Barranquero
6c49a40bba src/makefile.w32-in: Update dependencies.
(CCL_H, W32FONT_H): New macros.
(ATIMER_H, FONT_H, $(BLD)/alloc.$(O), $(BLD)/callproc.$(O))
($(BLD)/editfns.$(O), $(BLD)/ccl.$(O), $(BLD)/chartab.$(O))
($(BLD)/coding.$(O), $(BLD)/sysdep.$(O), $(BLD)/fontset.$(O))
($(BLD)/sysdep.$(O), $(BLD)/w32fns.$(O), $(BLD)/keyboard.$(O))
($(BLD)/w32term.$(O), $(BLD)/w32menu.$(O), $(BLD)/process.$(O))
($(BLD)/w32font.$(O), $(BLD)/w32uniscribe.$(O)): Update.
2012-09-02 04:22:33 +02:00
Eli Zaretskii
7e510e2844 Further fix for bug #11860 with Arabic display on Windows.
src/w32uniscribe.c (uniscribe_shape): Handle correctly the case of
 more than one grapheme cluster passed to the shaper: compute the
 offset adjustment values separately for each cluster.
2012-09-01 16:54:27 +03:00
Eli Zaretskii
f18cbb28c2 Remove conflict markers and fix entries for 2012-09-01T06:38:52Z!dancol@dancol.org. 2012-09-01 15:23:50 +03:00
Eli Zaretskii
4dfbd23866 Fix last changes related to w32 and Cygwin.
src/image.c: Restore mistakenly removed inclusion of w32.h.  Without
 it, GCC doesn't see prototypes of w32_delayed_load, and complains
 about implicit conversions from integer to pointer.
2012-09-01 12:29:17 +03:00
Daniel Colascione
86571ae075 Prevent crash if w32 used before it's initialized 2012-09-01 00:22:10 -08:00
Daniel Colascione
0a850e9a4e Merge from cygw32 branch 2012-09-01 00:01:36 -08:00
Daniel Colascione
17a2cbbd76 Refactor window-system configuration
This change streamlines the window system selection code in
configure.in and moves many common function declarations from
window-specific headers to frame.h.  It introduces a new TERM_HEADER
macro in config.h: we set this macro to the right header to use for
the window system for which we're compiling Emacs and have source
files include it indirectly.  This way, we don't have to teach every
file about every window system.
2012-08-31 22:38:52 -08:00
Paul Eggert
3363421789 * sysdep.c (seed_random): Fix typo: HAV_LRAND48 -> HAVE_LRAND48.
This fixes a bug on old systems that do not have the 'random' function.
2012-08-31 18:13:50 -07:00
Paul Eggert
0e23ef9dde Better seed support for (random).
* doc/lispref/numbers.texi (Random Numbers): Document new behavior of
the calls (random) and (random STRING).
* etc/NEWS: Document new behavior of (random), (random "string").
* lisp/play/5x5.el, lisp/play/animate.el, lisp/play/cookie1.el:
* lisp/play/dissociate.el, lisp/play/doctor.el, lisp/play/dunnet.el:
* lisp/play/gomoku.el, lisp/play/landmark.el, lisp/play/mpuz.el:
* lisp/play/tetris.el, lisp/play/zone.el:
* lisp/calc/calc-comb.el (math-init-random-base):
* lisp/play/blackbox.el (bb-init-board):
* lisp/play/life.el (life):
* lisp/server.el (server-use-tcp):
* lisp/type-break.el (type-break):
Remove unnecessary call to (random t).
* lisp/net/sasl.el (sasl-unique-id-function):
Change (random t) to (random), now that the latter is more random.
* lisp/play/life.el (life-initialized): Remove no-longer-needed var.
* lisp/gnus/gnus-sync.el (gnus-sync-lesync-setup):
* lisp/gnus/message.el (message-canlock-generate, message-unique-id):
Change (random t) to (random), now that the latter is more random.
* lisp/org/org-id.el (org-id-uuid):
Change (random t) to (random), now that the latter is more random.
* src/emacs.c (main): Call init_random.
* src/fns.c (Frandom): Set the seed from a string argument, if given.
Remove long-obsolete Gentzel cruft.
* src/lisp.h, src/sysdep.c (seed_random): Now takes address and size, not long.
(init_random): New function.
2012-08-31 18:04:26 -07:00
Dmitry Antipov
c650a5dec6 Remove mark_ttys function and fix tty_display_info initialization.
* lisp.h (mark_ttys): Remove prototype.
* alloc.c (Fgarbage_collect): Remove redundant (and the only) call
to mark_ttys because all possible values of 'top_frame' slot are
the frames which are reachable from Vframe_list.
* term.c (mark_ttys): Remove.
(init_tty): Safely initialize 'top_frame' slot with Qnil.
2012-08-31 14:53:19 +04:00
Dmitry Antipov
4e0f64791b Change struct frame bitfields from unsigned char to unsigned.
* frame.h (struct frame): Change type of 'display_preempted',
'visible', 'iconified', 'has_minibuffer', 'wants_modeline',
'auto_raise', 'auto_lower', 'no_split', 'explicit_name',
'window_sizes_changed', 'mouse_moved' and 'pointer_invisible'
bitfields from unsigned char to unsigned.
2012-08-31 08:40:52 +04:00
Dmitry Antipov
8b96a52c54 Remove unused member of struct x_output and struct w32_output.
* xterm.h (struct x_output): Remove unused field 'needs_exposure'.
* w32term.h (struct w32_output): Likewise.
2012-08-31 08:14:59 +04:00
Jan Djärv
b4444c8ad0 * gtkutil.c (x_wm_set_size_hint): Use 1 col for base_width so it
does not become zero.

Fixes: debbugs:12234
2012-08-30 18:07:44 +02:00
Paul Eggert
b98521dbff * dispnew.c (update_frame_1): Pacify gcc -Wstrict-overflow
for GCC 4.7.1 x86-64.
2012-08-30 08:07:00 -07:00
Glenn Morris
31d024384c init_lread fix for bug#12302
* src/lread.c (init_lread): For out-of-tree builds, only add the
source directory's site-lisp dir to the load-path if it exists,
consistent with in-tree builds.
2012-08-29 20:47:33 -04:00
Jan Djärv
7f8941d8b2 Improve NS dialogs. Add close button, remove ugly casts.
* nsmenu.m (initWithContentRect:styleMask:backing:defer:): Initialize
button_values to NULL. Call setStykeMask so dialogs get a close button.
(windowShouldClose:): Set window_closed.
(dealloc): New member, free button_values.
(process_dialog:): Make member function. Remove window argument,
replace window with self. Count buttons and allocate and store values
in button_values.
(addButton:value:row:): value is int with the name tag.  Call setTag
with tag. Remove return self, declare return value as void.
(addString:row:): Remove return self, declare return value as void.
(addSplit): Remove return self, declare return value as void.
(clicked:): Remove return self, declare return value as void.
Set dialog_return to button_values[seltag]. Code formatting change.
(initFromContents:isQuestion:): Adjust call to process_dialog.
Code formatting change.
(timeout_handler:): Set timer_fired to YES.
(runDialogAt:): Set timer_fired to NO.
Handle click on close button as quit.

* nsterm.h (EmacsDialogPanel): Make timer_fired BOOL.
Add window_closed and button_values.  Add void as return value for
add(Button|String|Split).  addButton takes int instead of Lisp_Object.
Add process_dialog as new member.
2012-08-28 18:05:17 +02:00