Commit graph

34566 commits

Author SHA1 Message Date
YAMAMOTO Mitsuharu
df03dc8a4c * image.c (image_unget_x_image): Fix formatting. 2013-06-29 08:36:14 +09:00
Paul Eggert
ba3de9e6ab * image.c (x_from_xcolors): Remove unused local. 2013-06-27 22:48:53 -07:00
YAMAMOTO Mitsuharu
b8075603a4 Fix W32-specific part of last change. 2013-06-28 12:41:37 +09:00
YAMAMOTO Mitsuharu
04b66ce7c6 Fix typo in ChangeLog for last commit. 2013-06-28 11:44:19 +09:00
YAMAMOTO Mitsuharu
547c92696e Defer image data transfer between X client and server until actual display happens. 2013-06-28 11:37:23 +09:00
Paul Eggert
dae2f5ef41 Do not tickle glib SIGCHLD handling if Cygwin.
This mostly consists of undoing recent changes.
* callproc.c (Fcall_process):
* process.c (create_process):
Do not worry about catching SIGCHLD here, undoing previous change.
* nsterm.m (ns_term_init): Re-catch SIGCHLD, undoing previous change.
* process.c, process.h (catch_child_signal):
No longer extern if !NS_IMPL_GNUSTEP, undoing 06-22 change.
* process.c (catch_child_handler): Don't worry about being called
lazily and do not assume caller has blocked SIGCHLD, undoing
previous change.  Move first-time stuff back to
init_process_emacs, undoing 06-22 change.  If CYGWIN, do not
tickle glib, as that causes Cygwin bootstrap to fail.  Do not
set lib_child_handler if it's already initialized, which may
help avoid problems on GNUStep.
2013-06-27 07:47:52 -07:00
Paul Eggert
fa55d2aaa2 A more-conservative workaround for Cygwin SIGCHLD issues.
* callproc.c (Fcall_process):
* process.c (create_process):
Make sure SIGCHLD is caught before we fork,
since Emacs startup no arranges to catch SIGCHLD.
* process.c (lib_child_handler): Initialize to null, not to
dummy_handler.
(catch_child_signal): Allow self to be called lazily.
Do nothing if it's already been called.
Assume caller has blocked SIGCHLD (all callers do now).
* emacs.c (main): Do not catch SIGCHLD here; defer it until
just before it's really needed.
* nsterm.m (ns_term_init): No need to re-catch SIGCHLD here,
since it hasn't been caught yet.

Fixes: debbugs:14569
2013-06-23 17:31:31 -07:00
Lars Magne Ingebrigtsen
f3f9606c7a Implement :max-width/:max-height for (ImageMagic) images
* doc/lispref/display.texi (ImageMagick Images): Mention :max-width and
:max-height.

* lisp/net/shr.el (shr-rescale-image): Use the new
:max-width/:max-height functionality.

* src/image.c (compute_image_size): New function to implement
:max-width and :max-height.
(imagemagick_load_image): Use it.
2013-06-23 21:24:27 +02:00
Paul Eggert
c7041908b8 Try to avoid malloc SEGVs on Cygwin.
* callproc.c, process.h (block_child_signal, unblock_child_signal):
Now extern.
* emacs.c (main): Catch SIGCHLD just before initializing gfilenotify.
* process.c (catch_child_signal): Block SIGCHLD while futzing with
the SIGCHLD handler, since the code is not atomic and (due to glib)
signals may be arriving now.
* sysdep.c (init_signals): Do not catch child signals here;
'main' now does that later, at a safer time.

Fixes: debbugs:14569
2013-06-23 11:18:47 -07:00
Paul Eggert
0dfeed58d3 Clean up SIGCHLD handling a bit.
* process.c, process.h (catch_child_signal):
Now always extern, even if !NS_IMPL_GNUSTEP.
* process.c (catch_child_signal): Move glib tickler here from
init_process_emacs, so that it's done earlier in Emacs
initialization.  Also move the noninteractive && !initialized
check here from init_process_emacs.  This is all a bit cleaner for
GNUish platforms, and I hope it works around the Cygwin bug.
* sysdep.c (init_signals): Invoke catch_child_signal here, so
that glib signal handling is tickled before glib creates threads.

Fixes: debbugs:14569
2013-06-22 12:01:47 -07:00
Paul Eggert
f86852b4a3 * process.c (wait_reading_process_output): Avoid int overflow
when reading more than 2 GiB total from a process.
2013-06-22 09:43:39 -07:00
Paul Eggert
cbd6509c29 * process.c (create_process): Handle a couple more cases,
i.e., work even if new_argv and wait_child_setup[i] are cached.
Use Fcall_process's style for volatile vars.
2013-06-21 15:16:37 -07:00
Andreas Schwab
9de1114ad8 * process.c (create_process): Mark PROCESS volatile. 2013-06-21 23:27:17 +02:00
Paul Eggert
fbe9e0b9fb Use C99-style flexible array members if available.
This avoids some subtle aliasing issues, which typically
aren't a problem with GCC but may be a problem elsewhere.
* lib-src/ebrowse.c (struct member, struct alias, struct sym):
Use FLEXIBLE_ARRAY_MEMBER.
(add_sym, add_member, make_namespace, register_namespace_alias):
Use offsetof (struct, flex_array_member), not sizeof (struct), as
that ports better to pre-C99 non-GCC.
* src/alloc.c (sdata): New typedef, replacing the old struct sdata.
It is a struct if GC_CHECK_STRING_BYTES, a union otherwise.
In either case, it uses a flexible array member rather than
the old struct hack.  All uses changed.
(SDATA_NBYTES, sweep_strings) [!GC_CHECK_STRING_BYTES]:
Adjust to sdata reorganization.
* src/alloc.c (VBLOCK_BYTES_MIN, allocate_vectorlike, Fgarbage_collect):
Use offsetof (struct, flex_array_member), not sizeof (struct), as
that ports better to pre-C99 non-GCC.
* src/chartab.c (Fmake_char_table, make_sub_char_table, copy_char_table):
Use CHAR_TABLE_STANDARD_SLOTS rather than its definition,
as the latter has changed.
* src/conf_post.h (FLEXIBLE_ARRAY_MEMBER): Move here from w32.c,
and port better to pre-C99 GCC.
* src/image.c (struct xpm_cached_color):
* src/lisp.h (struct Lisp_Vector, struct Lisp_Bool_Vector)
(struct Lisp_Char_Table, struct Lisp_Sub_Char_Table):
Use FLEXIBLE_ARRAY_MEMBER.
* src/lisp.h (string_bytes) [GC_CHECK_STRING_BYTES]:
Move decl to top level so it gets checked against implementation.
(CHAR_TABLE_STANDARD_SLOTS): Adjust to struct Lisp_Char_Table change.
* src/w32.c (FLEXIBLE_ARRAY_MEMBER): Move to conf_post.h.
2013-06-21 13:11:44 -07:00
Paul Eggert
1fc7100890 * syntax.c: Integer cleanups.
(SYNTAX_FLAGS_COMMENT_STYLEC): Return a boolean, not 0-or-2.
All uses that need 0-or-2 changed to:
(SYNTAX_FLAGS_COMMENT_STYLEC2): New macro, with the same semantics
as the old SYNTAX_FLAGS_COMMENT_STYLEC.
(struct lisp_parse_state, syntax_prefix_flag_p, update_syntax_table)
(char_quoted, prev_char_comend_first, back_comment)
(Finternal_describe_syntax_value, skip_chars, skip_syntaxes)
(in_classes, forw_comment, scan_lists, scan_sexps_forward):
Use bool for boolean.
(update_syntax_table, skip_chars, skip_syntaxes):
Prefer int to unsigned when either will do.
(back_comment): Return boolean success flag, like forw_comment,
instead of positive-or-minus-1 (which might have overflowed int anyway).
Don't stuff ptrdiff_t into int.
(syntax_spec_code, syntax_code_spec): Now const.
(Fmatching_paren, scan_lists, scan_sexps_forward):
Use enum syntaxcode for syntax code.
(Fmatching_paren): Check that arg is a character, not just an integer.
(Fstring_to_syntax): Don't assume 0377 fits in enum syntaxcode.
(Finternal_describe_syntax_value): Omit no-longer-needed
comparison to 0.
(skip_chars): Use char, not unsigned char, when the distinction
doesn't matter.
(forw_comment, scan_lists): Prefer A |= B to A = A || B when B's cheap.
* bytecode.c (exec_byte_code):
* syntax.c (syntax_spec_code, Fchar_syntax)
(Finternal_describe_syntax_value, skip_chars, skip_syntaxes)
(init_syntax_once):
* syntax.h (SYNTAX_WITH_FLAGS):
Omit unnecessary casts.
2013-06-20 11:59:08 -07:00
Eli Zaretskii
b932cad712 Yet another attempt at fixing bugs #14602, 14630, 14669.
src/w32fns.c (w32_wnd_proc): Don't compute the header line and mode
 line dimensions here, to avoid race conditions with the main
 thread.
 src/w32term.c (w32_draw_window_cursor): Compute the header line and
 mode line dimensions here.
 <w32_system_caret_window, w32_system_caret_hdr_height>:
 <w32_system_caret_mode_height>: New variables.
 src/w32term.h: Declare them.
2013-06-20 20:36:24 +03:00
Paul Eggert
5013fc0876 * alloc.c (die): Move "assertion failed" string here ...
* lisp.h (eassert): ... from here.  Also, suppress evaluation of
COND when SUPPRESS_CHECKING.  This shrinks the executable text
size by 0.8% to 2.2% when configured with --enable-checking,
depending on optimization flags (GCC 4.8.1 x86-64).
2013-06-20 07:47:46 -07:00
Paul Eggert
89561f72e5 Add log2 support and make log10 obsolete for consistency.
* configure.ac (log2): Check for this function.
* doc/lispref/numbers.texi (Math Functions): Remove obsolete function log10.
* lisp/subr.el (log10): Move here from C code, and declare as obsolete.
All uses of (log10 X) replaced with (log X 10).
* src/floatfns.c (Flog) [HAVE_LOG2]: Use log2 if available and if the
base is 2; this is more accurate.
(Flog10): Move to Lisp (marked obsolete there).
2013-06-20 07:15:42 -07:00
Paul Eggert
33cbd259d6 * floatfns.c: Add commentary re C99 and C11. 2013-06-19 18:19:43 -07:00
Juanma Barranquero
4f40506961 Fix typos in ChangeLogs. 2013-06-19 22:10:57 +02:00
Juanma Barranquero
983aeb9aff src/sound.c: Silence some warnings.
(string_default): Move to !WINDOWSNT section.
(Fplay_sound_internal) [WINDOWSNT]: Remove i_result to avoid warning.
2013-06-19 16:20:26 +02:00
Paul Eggert
bbc51b1565 * sound.c: Integer cleanups.
Remove unnecessary forward decls.
(struct sound_device): The 'file' member is now a Lisp_Object, not
a char *, so that we needn't invoke alloca on a huge size.
(Fplay_sound_internal): Adjust to this.
(string_default): New function.
(vox_open, vox_init, alsa_open, alsa_configure, alsa_init):
Use it to adjust to the struct sound_device change.
(parse_sound, wav_init, au_init, alsa_init): Use bool for booleans.
(be2hs) [0]: Remove.
2013-06-19 00:36:20 -07:00
Paul Eggert
178ba3e6f5 * syntax.c (skip_chars): Don't use uninitialized storage
when searching a multibyte buffer for characters that are not in a
unibyte string that contains non-ASCII characters.
2013-06-18 22:45:35 -07:00
Jan Djärv
69f60cdc23 * process.c: Include xgselect.h if HAVE_GLIB. Include glib.h
if HAVE_GLIB && ! WINDOWSNT.

Fixes: debbugs:14654
2013-06-18 20:41:48 +02:00
Paul Eggert
0d6224d432 * conf_post.h: Add comments for INLINE, EXTERN_INLINE, etc. 2013-06-18 11:36:13 -07:00
Paul Eggert
5ebb1ee6c9 Spelling fixes. 2013-06-18 10:15:25 -07:00
Kenichi Handa
f7e3f7cd3f src/ChangeLog: Add bug ID to the previous change. 2013-06-18 23:54:48 +09:00
Kenichi Handa
de86fd6193 merge emacs 2013-06-18 23:49:59 +09:00
Kenichi Handa
3c542890fe font.c (Ffont_spec): Signal an error for an invalid font name. 2013-06-18 23:45:08 +09:00
Juanma Barranquero
a020afb989 lisp/ChangeLog, src/ChangeLog: Rotate changelogs. 2013-06-18 13:17:50 +02:00
Paul Eggert
9349e5f767 Porting fixes for merged specpdl and backtrace stacks.
In particular this ports to 32-bit sparc Sun cc.
* eval.c (init_eval_once, grow_specpdl): Allocate a specbinding
array with a dummy element at specpdl[-1], so that its address can
be taken portably.
(unbind_to): Do not copy the binding; not needed, now that we
copy old_value in the one place where the copy is needed.
* fileio.c (Fwrite_region): Use ptrdiff_t, not int, for specpdl count.
* lisp.h (BITS_PER_PTRDIFF_T): Remove; no longer needed.
(union specbinding): Rename from struct specbinding.  Redo layout
to avoid the need for 'ptrdiff_t nargs : BITS_PER_PTRDIFF_T - 1;',
which is not portable.  With Sun C 5.12 32-bit sparc, the
declaration causes nargs to be an unsigned bitfield, a behavior
that the C standard allows; but Emacs wants nargs to be signed.
The overall type is now a union of structures rather than a
structure of union of structures, and the 'kind' member is now a
bitfield, so that the overall type doesn't grow.  All uses changed.
* process.c (Fmake_serial_process): Remove unnecessary initialization.

Fixes: debbugs:14643
2013-06-18 00:42:37 -07:00
Paul Eggert
ec6ecaad44 * frame.c (x_report_frame_params): Cast parent_desc to uintptr_t.
Needed if HAVE_NTGUI.  Reported by Juanma Barranquero.
2013-06-17 14:12:21 -07:00
Paul Eggert
0a4df6a50e * nsfont.m (ns_registry_to_script): Parenthesize while expression. 2013-06-17 14:10:31 -07:00
Eli Zaretskii
7bfe8dbcc2 src/ChangeLog: Rearrange the last 2 entries in correct order. 2013-06-17 19:30:40 +03:00
Eli Zaretskii
ca46332555 Possible fix for bug #14630, which continues bug #14062.
src/w32fns.c (w32_wnd_proc): Don't call WINDOW_HEADER_LINE_HEIGHT
 unless we know that the window w's frame is a frame object.
2013-06-17 19:28:47 +03:00
Lars Magne Ingebrigtsen
708e05f6d1 Implement new function `add-face-text-property'
* doc/lispref/text.texi (Changing Properties): Document `add-face-text-property'.

* src/textprop.c (property_set_type): New enum.
(add_properties): Allow appending/prepending text properties.
(add_text_properties_1): Factored out of Fadd_text_properties.
(Fadd_text_properties): Moved all the code into
add_text_properties_1.
(Fadd_face_text_property): New function that calls
add_text_properties_1.
2013-06-17 17:28:22 +02:00
Paul Eggert
84575e67fc Use functions, not macros, for XINT etc.
In lisp.h, prefer functions to function-like macros, and
constants to object-like macros, when either will do.  This:
 . simplifies use, as there's no more need to worry about
   arguments' side effects being evaluated multiple times.
 . makes the code easier to debug on some platforms.
However, when using gcc -O0, keep using function-like macros
for a few critical operations, for performance reasons.
This sort of thing isn't needed with gcc -Og, but -Og
is a GCC 4.8 feature and isn't widely-enough available yet.
Also, move functions from lisp.h to individual modules when possible.
From a suggestion by Andreas Schwab in <http://bugs.gnu.org/11935#68>.
* alloc.c (XFLOAT_INIT, set_symbol_name):
* buffer.c (CHECK_OVERLAY):
* chartab.c (CHECK_CHAR_TABLE, set_char_table_ascii)
(set_char_table_parent):
* coding.c (CHECK_NATNUM_CAR, CHECK_NATNUM_CDR):
* data.c (BOOLFWDP, INTFWDP, KBOARD_OBJFWDP, OBJFWDP, XBOOLFWD)
(XKBOARD_OBJFWD, XINTFWD, XOBJFWD, CHECK_SUBR, set_blv_found)
(blv_value, set_blv_value, set_blv_where, set_blv_defcell)
(set_blv_valcell):
* emacs.c (setlocale) [!HAVE_SETLOCALE]:
* eval.c (specpdl_symbol, specpdl_old_value, specpdl_where)
(specpdl_arg, specpdl_func, backtrace_function, backtrace_nargs)
(backtrace_args, backtrace_debug_on_exit):
* floatfns.c (CHECK_FLOAT):
* fns.c (CHECK_HASH_TABLE, CHECK_LIST_END)
(set_hash_key_and_value, set_hash_next, set_hash_next_slot)
(set_hash_hash, set_hash_hash_slot, set_hash_index)
(set_hash_index_slot):
* keymap.c (CHECK_VECTOR_OR_CHAR_TABLE):
* marker.c (CHECK_MARKER):
* textprop.c (CHECK_STRING_OR_BUFFER):
* window.c (CHECK_WINDOW_CONFIGURATION):
Move here from lisp.h, and make these functions static rather than
extern inline.
* buffer.c (Qoverlayp):
* data.c (Qsubrp):
* fns.c (Qhash_table_p):
* window.c (Qwindow_configuration_p):
Now static.
* lisp.h: Remove the abovementioned defns and decls.

* configure.ac (WARN_CFLAGS): Remove -Wbad-function-cast,
as it generates bogus warnings about reasonable casts of calls.
* alloc.c (gdb_make_enums_visible) [USE_LSB_TAG]:
Remove enum lsb_bits; no longer needed.
(allocate_misc, free_misc): Don't use XMISCTYPE as an lvalue.
* buffer.c (Qoverlap):
* data.c (Qsubrp):
* fns.c (Qhash_table_p):
Now extern, so lisp.h can use these symbols.
* dispextern.h: Include character.h, for MAX_CHAR etc.
(GLYPH, GLYPH_CHAR, GLYPH_FACE, SET_GLYPH_CHAR, SET_GLYPH_FACE)
(SET_GLYPH, GLYPH_CODE_CHAR, GLYPH_CODE_FACE)
(SET_GLYPH_FROM_GLYPH_CODE, GLYPH_MODE_LINE_FACE, GLYPH_CHAR_VALID_P)
(GLYPH_CODE_P): Move here from lisp.h.
(GLYPH_CHAR, GLYPH_FACE, GLYPH_CODE_CHAR, GLYPH_CODE_FACE)
(GLYPH_CHAR_VALID_P, GLYPH_CODE_P): Now functions, not macros.
(GLYPH_MODE_LINE_FACE): Now enums, not macros.
* eval.c (Fautoload): Cast XUNTAG output to intptr_t, since
XUNTAG now returns void *.
* lisp.h (lisp_h_XLI, lisp_h_XIL, lisp_h_CHECK_LIST_CONS)
(lisp_h_CHECK_NUMBER CHECK_SYMBOL, lisp_h_CHECK_TYPE)
(lisp_h_CONSP, lisp_h_EQ, lisp_h_FLOATP, lisp_h_INTEGERP)
(lisp_h_MARKERP, lisp_h_MISCP, lisp_h_NILP)
(lisp_h_SET_SYMBOL_VAL, lisp_h_SYMBOL_CONSTANT_P)
(lisp_h_SYMBOL_VAL, lisp_h_SYMBOLP, lisp_h_VECTORLIKEP)
(lisp_h_XCAR, lisp_h_XCDR, lisp_h_XCONS, lisp_h_XHASH)
(lisp_h_XPNTR, lisp_h_XSYMBOL):
New macros, renamed from their sans-lisp_h_ counterparts.
(XLI, XIL, CHECK_LIST_CONS, CHECK_NUMBER CHECK_SYMBOL)
(CHECK_TYPE, CONSP, EQ, FLOATP, INTEGERP, MARKERP)
(MISCP, NILP, SET_SYMBOL_VAL, SYMBOL_CONSTANT_P, SYMBOL_VAL, SYMBOLP)
(VECTORLIKEP, XCAR, XCDR, XCONS, XHASH, XPNTR, XSYMBOL):
If compiling via GCC without optimization, define these as macros
in addition to inline functions.
To disable this, compile with -DINLINING=0.
(LISP_MACRO_DEFUN, LISP_MACRO_DEFUN_VOID): New macros.
(check_cons_list) [!GC_CHECK_CONS_LIST]: Likewise.
(make_number, XFASTINT, XINT, XTYPE, XUNTAG): Likewise, but
hand-optimize only in the USE_LSB_TAG case, as GNUish hosts do that.
(INTMASK, VALMASK): Now macros, since static values cannot be
accessed from extern inline functions.
(VALMASK): Also a constant, for benefit of old GDB.
(LISP_INT_TAG_P): Remove; no longer needed as the only caller
is INTEGERP, which can fold it in.
(XLI, XIL, XHASH, XTYPE,XINT, XFASTINT, XUINT)
(make_number, XPNTR, XUNTAG, EQ, XCONS, XVECTOR, XSTRING, XSYMBOL)
(XFLOAT, XPROCESS, XWINDOW, XTERMINAL, XSUBR, XBUFFER, XCHAR_TABLE)
(XSUB_CHAR_TABLE, XBOOL_VECTOR, make_lisp_ptr, CHECK_TYPE)
(CHECK_STRING_OR_BUFFER, XCAR, XCDR, XSETCAR, XSETCDR, CAR, CDR)
(CAR_SAFE, CDR_SAFE, STRING_MULTIBYTE, SDATA, SSDATA, SREF, SSET)
(SCHARS, STRING_BYTES, SBYTES, STRING_SET_CHARS, STRING_COPYIN, AREF)
(ASIZE, ASET, CHAR_TABLE_REF_ASCII, CHAR_TABLE_REF)
(CHAR_TABLE_SET, CHAR_TABLE_EXTRA_SLOTS, SYMBOL_VAL, SYMBOL_ALIAS)
(SYMBOL_BLV, SYMBOL_FWD, SET_SYMBOL_VAL, SET_SYMBOL_ALIAS)
(SET_SYMBOL_BLV, SET_SYMBOL_FWD, SYMBOL_NAME, SYMBOL_INTERNED_P)
(SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P, SYMBOL_CONSTANT_P)
(XHASH_TABLE, HASH_TABLE_P, CHECK_HASH_TABLE, HASH_KEY, HASH_VALUE)
(HASH_NEXT, HASH_HASH, HASH_INDEX, HASH_TABLE_SIZE)
(XMISC, XMISCANY, XMARKER, XOVERLAY, XSAVE_VALUE, XFWDTYPE)
(XINTFWD, XBOOLFWD, XOBJFWD, XBUFFER_OBJFWD, XKBOARD_OBJFWD)
(XFLOAT_DATA, XFLOAT_INIT, NILP, NUMBERP, NATNUMP)
(RANGED_INTEGERP, CONSP, FLOATP, MISCP, STRINGP, SYMBOLP)
(INTEGERP, VECTORLIKEP, VECTORP, OVERLAYP)
(MARKERP, SAVE_VALUEP, AUTOLOADP, INTFWDP, BOOLFWDP, OBJFWDP)
(BUFFER_OBJFWDP, KBOARD_OBJFWDP, PSEUDOVECTOR_TYPEP)
(PSEUDOVECTORP, WINDOW_CONFIGURATIONP, PROCESSP, WINDOWP)
(TERMINALP, SUBRP, COMPILEDP, BUFFERP, CHAR_TABLE_P)
(SUB_CHAR_TABLE_P, BOOL_VECTOR_P, FRAMEP, IMAGEP, ARRAYP)
(CHECK_LIST, CHECK_LIST_CONS, CHECK_LIST_END, CHECK_STRING)
(CHECK_STRING_CAR, CHECK_CONS, CHECK_SYMBOL, CHECK_CHAR_TABLE)
(CHECK_VECTOR, CHECK_VECTOR_OR_STRING, CHECK_ARRAY)
(CHECK_VECTOR_OR_CHAR_TABLE, CHECK_BUFFER, CHECK_WINDOW)
(CHECK_WINDOW_CONFIGURATION, CHECK_PROCESS, CHECK_SUBR)
(CHECK_NUMBER, CHECK_NATNUM, CHECK_MARKER, XFLOATINT)
(CHECK_FLOAT, CHECK_NUMBER_OR_FLOAT, CHECK_OVERLAY)
(CHECK_NUMBER_CAR, CHECK_NUMBER_CDR, CHECK_NATNUM_CAR)
(CHECK_NATNUM_CDR, FUNCTIONP, SPECPDL_INDEX, LOADHIST_ATTACH)
Now functions.
(check_cons_list) [!GC_CHECK_CONS_LIST]: New empty function.
(LISP_MAKE_RVALUE, TYPEMASK): Remove; no longer needed.
(VALMASK): Define in one place rather than in two, merging the
USE_LSB_TAG parts; this is simpler.
(aref_addr, gc_aset, MOST_POSITIVE_FIXNUM, MOST_NEGATIVE_FIXNUM)
(max, min, struct Lisp_String, UNSIGNED_CMP, ASCII_CHAR_P):
Move up, to avoid use before definition.
Also include "globals.h" earlier, for the same reason.
(make_natnum): New function.
(XUNTAG): Now returns void *, not intptr_t, as this means fewer casts.
(union Lisp_Fwd, BOOLFWDP, BOOL_VECTOR_P, BUFFER_OBJFWDP, BUFFERP)
(CHAR_TABLE_P, CHAR_TABLE_REF_ASCII, CONSP, FLOATP, INTEGERP, INTFWDP)
(KBOARD_OBJFWDP, MARKERP, MISCP, NILP, OBJFWDP, OVERLAYP, PROCESSP)
(PSEUDOVECTORP, SAVE_VALUEP, STRINGP, SUB_CHAR_TABLE_P, SUBRP, SYMBOLP)
(VECTORLIKEP, WINDOWP, Qoverlayp, char_table_ref, char_table_set)
(char_table_translate, Qarrayp, Qbufferp, Qbuffer_or_string_p)
(Qchar_table_p, Qconsp, Qfloatp, Qintegerp, Qlambda, Qlistp, Qmarkerp)
(Qnil, Qnumberp, Qsubrp, Qstringp, Qsymbolp, Qvectorp)
(Qvector_or_char_table_p, Qwholenump, Ffboundp, wrong_type_argument)
(initialized, Qhash_table_p, extract_float, Qprocessp, Qwindowp)
(Qwindow_configuration_p, Qimage): New forward declarations.
(XSETFASTINT): Simplify by rewriting in terms of make_natnum.
(STRING_COPYIN): Remove; unused.
(XCAR_AS_LVALUE, XCDR_AS_LVALUE): Remove these macros, replacing with ...
(xcar_addr, xcdr_addr): New functions.  All uses changed.
(IEEE_FLOATING_POINT): Now a constant, not a macro.
(GLYPH, GLYPH_CHAR, GLYPH_FACE, SET_GLYPH_CHAR, SET_GLYPH_FACE)
(SET_GLYPH, GLYPH_CODE_CHAR, GLYPH_CODE_FACE)
(SET_GLYPH_FROM_GLYPH_CODE, GLYPH_MODE_LINE_FACE, GLYPH_CHAR_VALID_P)
(GLYPH_CODE_P): Move to dispextern.h, to avoid define-before-use.
(TYPE_RANGED_INTEGERP): Simplify.
(Qsubrp, Qhash_table_p, Qoverlayp): New extern decls.
(setlocale, fixup_locale, synchronize_system_messages_locale)
(synchronize_system_time_locale) [!HAVE_SETLOCALE]:
Now empty functions, not macros.
(functionp): Return bool, not int.
* window.c (Qwindow_configuration_p): Now extern,
so window.h can use it.
* window.h (Qwindowp): Move decl back to lisp.h.
2013-06-16 23:03:19 -07:00
Eli Zaretskii
9583ec36c4 Fix bug #14567 with jumpy scrolling of tall images.
src/xdisp.c (Fline_pixel_height): New function, required for solving
 bug #14567.

 lisp/simple.el (line-move-partial): Don't jump to the next screen
 line as soon as it becomes visible.  Instead, continue enlarging
 the vscroll until the portion of a tall screen line that's left on
 display is about the height of the frame's default font.
2013-06-15 12:34:20 +03:00
Paul Eggert
210272cebb * fns.c (Fcopy_sequence): Simplify XTYPE calculation. 2013-06-15 00:41:42 -07:00
Stefan Monnier
de0503df97 * lisp/subr.el (with-eval-after-load): New macro.
(eval-after-load): Allow form to be a function.
take advantage of lexical-binding.
(do-after-load-evaluation): Use dolist and adjust to new format.
* lisp/simple.el (bad-packages-alist): Use dolist and with-eval-after-load.
* doc/lispref/loading.texi (Hooks for Loading): Document with-eval-after-load
instead of eval-after-load.  Don't document after-load-alist.
* src/lread.c (syms_of_lread):
* src/fns.c (Fprovide): Adjust to new format of after-load-alist.
2013-06-13 18:24:52 -04:00
Kelly Dean
afbfe14326 * src/fileio.c (Fdo_auto_save): Trap errors in auto-save-hook (tiny change)
Fixes: debbugs:14479
2013-06-12 22:13:05 -07:00
Xue Fuqiao
d177e21300 * src/fileio.c (expand_file_name): Doc fix. 2013-06-12 09:12:59 +08:00
Paul Eggert
f7394b1235 Tickle glib by waiting for Emacs itself, not for process 0.
* process.c (init_process_emacs) [HAVE_GLIB && !WINDOWSNT]:
Wait for self, not for 0.  This can't hurt on GNU or similar
system, and may help with Cygwin.

Fixes: debbugs:14569
2013-06-11 11:34:06 -07:00
Juanma Barranquero
fa6bc6fd50 Fix typos.
* lisp/replace.el (query-replace, occur-read-regexp-defaults-function)
  (replace-search):
* lisp/subr.el (declare-function, number-sequence, local-set-key)
  (substitute-key-definition, locate-user-emacs-file)
  (with-silent-modifications, split-string, eval-after-load):
  Fix typos, remove unneeded backslashes and reflow some docstrings.
2013-06-11 18:51:12 +02:00
Paul Eggert
05e3e4125d * keyboard.c: Don't use PROP (...) as an lvalue.
(parse_tool_bar_item) [!USE_GTK && !HAVE_NS]:
Use set_prop (A, B), not PROP (A) = B.
2013-06-10 21:15:49 -07:00
Juanma Barranquero
e7b41c4c9a Fix ChangeLog typos and whitespace. 2013-06-10 16:58:52 +02:00
Eli Zaretskii
17dd30979f Minor cleanup in last commit in get_it_property.
src/xdisp.c (get_it_property): Use it->window instead of generating
 a Lisp object from it->w.
2013-06-10 07:36:06 +03:00
Eli Zaretskii
ad257d4f6c Fix current-bidi-paragraph-direction wrt window pointer.
src/xdisp.c (compute_display_string_pos): When W is NULL, use the current
 buffer as the object to pass to get-char-property.
 (Fcurrent_bidi_paragraph_direction): Assign NULL to the window
 pointer member of the bidi iterator, since no window is pertinent
 to this function.
2013-06-09 19:49:07 +03:00
Eli Zaretskii
52fab9c9b8 Fix bug #14575 with window-specific overlays with line-prefix or wrap-prefix.
src/xdisp.c (get_it_property): If it->object is a buffer, pass to
 get-char-property the window that is being rendered, instead of
 the buffer, to support window-specific overlays.
2013-06-09 19:37:22 +03:00
Eli Zaretskii
5bf97bfc67 Fix bug #14575 with window-specific overlays with display props.
src/bidi.c (bidi_fetch_char): Accept additional argument, the window
 being displayed, and pass it to compute_display_string_pos.
 (bidi_level_of_next_char, bidi_resolve_explicit_1)
 (bidi_paragraph_init): All callers changed.
 src/xdisp.c (init_from_display_pos, init_iterator)
 (handle_single_display_spec, next_overlay_string)
 (get_overlay_strings_1, reseat_1, reseat_to_string)
 (push_prefix_prop, Fcurrent_bidi_paragraph_direction): Set
 bidi_it.w member from it->w.
 (compute_display_string_pos): Accept additional argument, the
 window being displayed, and pass it to Fget_char_property.
 src/dispextern.h (struct bidi_it): New member w, the window being
 displayed.
 (compute_display_string_pos): Adjust prototype.
2013-06-08 21:28:36 +03:00