Take account of fringe background extension in scroll_run_hook.
* w32term.c (w32_draw_fringe_bitmap): Rename local vars `left' and
`width' to `bar_area_x' and `bar_area_width', respectively.
(x_scroll_run): Take account of fringe background extension.
* xterm.c (x_draw_fringe_bitmap) [USE_TOOLKIT_SCROLL_BARS]: Rename
local vars `left' and `width' to `bar_area_x' and
`bar_area_width', respectively.
(x_scroll_run) [USE_TOOLKIT_SCROLL_BARS]: Take account of fringe
background extension.
Eli Zaretskii [Mon, 9 May 2011 09:59:23 +0000 (05:59 -0400)]
Backport revisions 2011-04-24T05:30:24Z!eggert@cs.ucla.edu..2011-04-25T19:40:22Z!eggert@cs.ucla.edu (inclusive) from trunk (bug#8623)
The next log entry shows the actual changes by Paul Eggert.
Fix a problem with aliasing and vector headers.
GCC 4.6.0 optimizes based on type-based alias analysis. For
example, if b is of type struct buffer * and v of type struct
Lisp_Vector *, then gcc -O2 was incorrectly assuming that &b->size
!= &v->size, and therefore "v->size = 1; b->size = 2; return
v->size;" must therefore return 1. This assumption is incorrect
for Emacs, since it type-puns struct Lisp_Vector * with many other
types. To fix this problem, this patch adds a new type struct
vector_header that documents the constraints on layout of vectors
and pseudovectors, and helps optimizing compilers not get fooled
by Emacs's type punning. It also adds the macros XSETTYPED_PVECTYPE
XSETTYPED_PSEUDOVECTOR, TYPED_PSEUDOVECTORP, for similar reasons.
src/lisp.h (XVECTOR_SIZE): New convenience macro. All previous uses of
XVECTOR (foo)->size replaced to use this macro, to avoid the hassle
of writing XVECTOR (foo)->header.size.
src/lisp.h: Say "vectorlike header" rather than "vector header.
(struct vectorlike_header): Rename from struct vector_header.
(XVECTORLIKE_HEADER_SIZE): Renamed from XVECTOR_HEADER_SIZE.
All uses changed.
(XVECTOR_HEADER_SIZE): New macro, for use in XSETPSEUDOVECTOR.
(XSETTYPED_PVECTYPE): New macro, specifying the name of the size
member.
(XSETPVECTYPE): Rewrite in terms of new macro.
(XSETPVECTYPESIZE): New macro, specifying both type and size.
This is a bit clearer, and further avoids the possibility of
undesirable aliasing.
(XSETTYPED_PSEUDOVECTOR): New macro, specifying the size.
(XSETPSEUDOVECTOR): Rewrite in terms of XSETTYPED_PSEUDOVECTOR
and XVECTOR_HEADER_SIZE.
(XSETSUBR): Rewrite in terms of XSETTYPED_PSEUDOVECTOR and XSIZE,
since Lisp_Subr is a special case (no "next" field).
(ASIZE): Rewrite in terms of XVECTOR_SIZE.
(struct vector_header): New type.
(TYPED_PSEUDOVECTORP): New macro, also specifying the C type of the
object, to help avoid aliasing.
(PSEUDOVECTORP): Rewrite in terms of TYPED_PSEUDOVECTORP.
(SUBRP): Likewise, since Lisp_Subr is a special case.
src/lisp.h (struct Lisp_Vector, struct Lisp_Char_Table):
(struct Lisp_Sub_Char_Table, struct Lisp_Bool_Vector):
(struct Lisp_Hash_Table): Combine first two members into a single
struct vector_header member. All uses of "size" and "next" members
changed to be "header.size" and "header.next".
src/buffer.h (struct buffer): Likewise.
src/font.h (struct font_spec, struct font_entity, struct font): Likewise.
src/frame.h (struct frame): Likewise.
src/process.h (struct Lisp_Process): Likewise.
src/termhooks.h (struct terminal): Likewise.
src/window.c (struct save_window_data, struct saved_window): Likewise.
src/window.h (struct window): Likewise.
src/alloc.c (allocate_buffer, Fmake_bool_vector, allocate_pseudovector):
Use XSETPVECTYPESIZE, not XSETPVECTYPE, to avoid aliasing problems.
src/buffer.c (init_buffer_once): Likewise.
src/lread.c (defsubr): Use XSETTYPED_PVECTYPE, since Lisp_Subr is a
special case.
src/process.c (Fformat_network_address): Use local var for size,
for brevity.
src/fns.c (vector): Remove; this old hack is no longer needed.
src/bytecode.c (exec_byte_code): Don't use XVECTOR before CHECK_VECTOR.
Stefan Monnier [Fri, 6 May 2011 14:32:26 +0000 (11:32 -0300)]
* lispref/modes.texi (Region to Refontify): Rename from "Region to Fontify".
(Multiline Font Lock):
* lispref/vol2.texi (Top):
* lispref/vol1.texi (Top):
* lispref/elisp.texi (Top): Update menu accordingly.
Eli Zaretskii [Fri, 29 Apr 2011 14:23:44 +0000 (17:23 +0300)]
Allow the Windows build to use upto 2GB of heap.
src/w32heap.c (allocate_heap) [USE_LISP_UNION_TYPE || USE_LSB_TAG]:
New version that can reserve upto 2GB of heap space.
etc/NEWS: Mention the new feature.
Michael Albinus [Mon, 25 Apr 2011 17:58:27 +0000 (19:58 +0200)]
* net/tramp.el (tramp-process-actions): Add POS argument. Delete
region between POS and (pos).
(tramp-do-copy-or-rename-file-out-of-band): Use `nil' position in
`tramp-process-actions' call.
(tramp-maybe-open-connection): Call `tramp-process-actions' with pos.
* net/tramp-smb.el (tramp-smb-maybe-open-connection): Use `nil'
position in `tramp-process-actions' call.
Backport 2011-04-04T22:08:01Z!lekktu@gmail.com and 2011-04-04T22:33:12Z!lekktu@gmail.com from trunk.
* help-fns.el (describe-variable): Complete all variables having
documentation, including keywords.
http://lists.gnu.org/archive/html/emacs-devel/2011-04/msg00112.html
Stefan Monnier [Mon, 21 Mar 2011 15:30:01 +0000 (11:30 -0400)]
* doc/lispref/minibuf.texi (Basic Completion): Be a bit more precise about the
valid kinds of completion tables.
(Programmed Completion): Remove obsolete text about lambda expressions
not being valid completion tables.
Chong Yidong [Sat, 19 Mar 2011 16:42:53 +0000 (12:42 -0400)]
Backport fix for Bug#8219 from trunk.
* buffer.h (BUF_BEGV, BUF_BEGV_BYTE, BUF_ZV, BUF_ZV_BYTE, BUF_PT)
(BUF_PT_BYTE): Rewrite to handle indirect buffers (Bug#8219).
These macros can no longer be used for assignment.
* buffer.c (Fget_buffer_create, Fmake_indirect_buffer): Assign
struct members directly, instead of using BUF_BEGV etc.
(record_buffer_markers, fetch_buffer_markers): New functions for
recording and fetching special buffer markers.
(set_buffer_internal_1, set_buffer_temp): Use them.
* lread.c (unreadchar): Use SET_BUF_PT_BOTH.
* insdel.c (adjust_point): Use SET_BUF_PT_BOTH.
* intervals.c (temp_set_point_both): Use SET_BUF_PT_BOTH.
(get_local_map): Use SET_BUF_BEGV_BOTH and SET_BUF_ZV_BOTH.
* xdisp.c (hscroll_window_tree):
(reconsider_clip_changes): Use PT instead of BUF_PT.
Eli Zaretskii [Sat, 19 Mar 2011 09:30:56 +0000 (11:30 +0200)]
Fix emerge.el on MS-Windows and MS-DOS.
lisp/emerge.el (emerge-metachars): Separate value for ms-dos and
windows-nt systems.
(emerge-protect-metachars): Quote correctly for ms-dos and
windows-nt systems.
Glenn Morris [Sun, 13 Mar 2011 22:36:47 +0000 (18:36 -0400)]
Backport 2011-03-06T01:42:13Z!rgm@gnu.org from trunk.
* configure.in (FREETYPE_LIBS): Actually set it to something.
* configure.in: Don't zero-out FONTCONFIG_CFLAGS and
FONTCONFIG_LIBS when building with XFT (doing so is incorrect, as
Emacs directly uses fontconfig, and breaks building when using a
strict linker).
Michael Albinus [Sat, 12 Mar 2011 13:26:19 +0000 (14:26 +0100)]
* net/tramp.el (tramp-progress-reporter-update): Use
`tramp-compat-funcall'.
(tramp-handle-start-file-process): Use `tramp-compat-process-get'.
(tramp-handle-insert-file-contents): Make `file-remote-p' call
compatible.
(tramp-open-connection-setup-interactive-shell): Use
`tramp-compat-process-put'.
* net/tramp-compat.el (tramp-compat-process-get)
(tramp-compat-process-put): New defuns.
Eli Zaretskii [Fri, 11 Mar 2011 12:19:08 +0000 (14:19 +0200)]
Fix comparisons of file ownership on MS-Windows for the Administrator user.
lisp/files.el (file-ownership-preserved-p): Pass `integer' as an
explicit 2nd argument to `file-attributes'. If the file's owner
is the Administrators group on Windows, and the current user is
Administrator, consider that a match.
lisp/server.el (server-ensure-safe-dir): Consider server directory
safe on MS-Windows if its owner is the Administrators group while
the current Emacs user is Administrator. Use `=' to compare
numerical UIDs, since they could be integers or floats.