Commit graph

13193 commits

Author SHA1 Message Date
Glenn Morris
830e46e61b Merge from emacs-24; up to 2012-12-11T18:52:31Z!monnier@iro.umontreal.ca 2013-01-24 20:41:39 -08:00
Dmitry Antipov
fd3ceb0999 * nsfont.m (ns_escape_name, ns_unescape_name, ns_registry_to_script):
Avoid redundant calls to strlen.
2013-01-24 09:56:31 +04:00
Dmitry Antipov
edfa7fa092 Drop async_visible and async_iconified fields of struct frame.
This is possible because async input is gone; for details, see
http://lists.gnu.org/archive/html/emacs-devel/2012-12/msg00734.html.
* frame.h (struct frame): Remove async_visible and async_iconified
members, convert garbaged to unsigned bitfield.  Adjust comments.
(FRAME_SAMPLE_VISIBILITY): Remove.  Adjust all users.
(SET_FRAME_VISIBLE, SET_FRAME_ICONIFIED): New macros.
* frame.c, gtkutil.c, term.c, w32fns.c, window.c, xdisp.c:
Consistently use SET_FRAME_VISIBLE, SET_FRAME_ICONIFIED,
FRAME_VISIBLE_P and FRAME_ICONIFIED_P macros where appropriate.
* w32term.c: Ditto.
(w32_read_socket): Save iconified state to generate DEICONIFY_EVENT
properly.  Likewise for obscured.
* xterm.c: Ditto.
(handle_one_xevent): Save visible state go generate ICONIFY_EVENT
properly.
* nsterm.m: Ditto.
(windowDidDeminiaturize): Generate DEICONIFY_EVENT.
2013-01-24 09:41:28 +04:00
Dmitry Antipov
5ad86e34d8 * src/insdel.c (prepare_to_modify_buffer): Revert last change as suggested
in http://lists.gnu.org/archive/html/emacs-devel/2013-01/msg00555.html.
* lisp/doc-view.el (doc-view-display): Force mode line update until
all document is converted.  Suggested by Stefan Monnier (Bug#13164).
2013-01-24 07:34:20 +04:00
Stefan Monnier
b09cca6ace * src/xdisp.c (message2, message2_nolog): Remove functions.
(message3, message3_nolog): Extract nbytes and multibyteness directly
from the string.  Change all callers.
(message3_nolog): Don't set message_enable_multibyte since set_message
will reset it anyway.
(message1, message1_nolog): Use message3.
(vmessage): Use a stack allocated buffer rather than f->message_buf.
(with_echo_area_buffer): Remove last two arguments.  Update all callers.
(set_message): Drop all but the second arg, which has to be a string.
(set_message_1): Simplify now that we know that a1 is NULL and the
second arg is a string.
* src/frame.h (struct frame): Remove `message_buf' field.
Use glyphs_initialized_p instead.
(FRAME_MESSAGE_BUF): Remove macro.
* src/w16select.c (Fw16_set_clipboard_data): Prefer message3 to message2.
* src/lisp.h (message2, message2_nolog): Remove declarations.
(message3, message3_nolog): Update declarations.
* src/keyboard.c (read_char_minibuf_menu_text)
(read_char_minibuf_menu_width): Remove vars.
(read_char_minibuf_menu_prompt): Rewrite the menu's construction so as
to correctly handle multibyte strings.
* src/frame.c (delete_frame): Don't free message_buf any more.
* src/editfns.c (message_text, message_length): Remove vars.
(Fmessage_box): Don't copy the Lisp string's bytes any longer.
* src/fileio.c (auto_save_error): Use message3 instead of message2.
* src/dispnew.c (adjust_frame_message_buffer): Remove function.
2013-01-23 15:07:28 -05:00
Eli Zaretskii
54ab1c5acf Fix dimensions of maximized frame on MS-Windows.
src/w32term.c (w32fullscreen_hook): Account correctly for the screen
 real estate used for the tool bar, the menu bar, and scroll bar.
2013-01-23 18:52:05 +02:00
Eli Zaretskii
6d2851de77 Fix bug #13515 with processing DBCS file names on MS-Windows.
src/w32.c (max_filename_mbslen): New function.
 (normalize_filename, readdir): Use it to detect locales where ANSI
 encoding of file names uses a double-byte character set (DBCS).
 If a DBCS encoding is used, advance by characters using
 CharNextExA, instead of incrementing a 'char *' pointer.  Use
 _mbslwr instead of _strlwr.
2013-01-23 18:11:04 +02:00
Dmitry Antipov
6c27465b76 * insdel.c (prepare_to_modify_buffer): Force redisplay if
hidden buffer is prepared to modification (Bug#13164).
2013-01-23 18:49:54 +04:00
Eli Zaretskii
81abbb9544 Fix bug #13065 with file selector dialog on Windows 7.
src/w32heap.c (allocate_heap) [!_WIN64]: Decrease the initial
 request of memory reservation to 1.7GB.
2013-01-22 15:30:17 +02:00
Dmitry Antipov
9d93ce29bd * window.h (struct window): Change window_end_valid member from
Lisp_Object to a bitfield.  Adjust comments.
(wset_window_end_valid): Remove.
* window.c (adjust_window_count): Clear window_end_valid.
(Fwindow_end): Adjust user.  Remove ancient #if 0 code.
(Fwindow_line_height, set_window_buffer, Frecenter)
(Fsplit_window_internal, Fdelete_other_windows_internal)
(Fset_window_fringes, Fset_window_scroll_bars): Adjust users.
* dispnew.c (adjust_glyph_matrix, clear_window_matrices): Likewise.
* xdisp.c (check_window_end, reconsider_clip_changes)
(redisplay_internal, mark_window_display_accurate_1, redisplay_window)
(try_window, try_window_reusing_current_matrix, note_mouse_highlight)
(find_first_unchanged_at_end_row, try_window_id): Likewise.
2013-01-22 15:48:00 +04:00
Dmitry Antipov
1dcb8ea263 * xdisp.c (mark_window_display_accurate): Simplify the loop
assuming that the only one of vchild, hchild or buffer window
slots is non-nil.  Call mark_window_display_accurate_1 for
the leaf windows only.
(mark_window_display_accurate_1): Always assume leaf window.
Adjust comment.
2013-01-22 15:41:21 +04:00
Paul Eggert
593a5f2efd * emacs.c (Qkill_emacs_hook): Now static. 2013-01-21 23:48:59 -08:00
Paul Eggert
b41b8a7eff * fileio.c (Finsert_file_contents): Simplify.
Remove unnecessary assignments and tests.
2013-01-21 22:10:20 -08:00
Eli Zaretskii
84e5ed96b0 Another minor fix in acl_set_file on Windows.
src/w32.c (acl_set_file): Don't test for errors unless
 set_file_security returns FALSE.  Avoids spurious errors when
 saving files.
2013-01-21 20:00:19 +02:00
Dmitry Antipov
2ef88fd45c * fileio.c (Finsert_file_contents): Revert code introduced at
2013-01-18 in favor of the simpler and generally better fix.
Save stack space by removing 'buffer' and reusing 'read_buf'
where appropriate.
2013-01-21 21:01:09 +04:00
Andreas Schwab
ba14c607ba Fixes: debbugs:13505
* src/coding.c (detect_coding_iso_2022): Move back mis-reordered code
at check_extra_latin label.
2013-01-20 23:59:47 +01:00
Paul Eggert
d7a0a7c9bd * lisp.h (eabs): Define unconditionally.
The old "#if !defined (eabs)" was an unnecessary revenant of back
when this macro was called "abs".  Document 'eabs' better.

Fixes: debbugs:13419
2013-01-19 14:33:29 -08:00
Glenn Morris
795e7a5b32 Merge from emacs-24; up to 2012-12-11T09:51:12Z!dmantipov@yandex.ru 2013-01-19 12:38:13 -08:00
Eli Zaretskii
59ac2d1316 Fix crashes with lots of overlays.
src/editfns.c (get_pos_property): Use SAFE_ALLOCA_LISP, to avoid
 segfault when there are lots of overlays.
 src/buffer.c (sort_overlays): Use SAFE_NALLOCA, to avoid segfault
 when there are lots of overlays.  See
 http://lists.gnu.org/archive/html/emacs-devel/2013-01/msg00421.html
 for the details and a way to reproduce.
2013-01-19 22:04:33 +02:00
Paul Eggert
3a955a1f86 * fileio.c: Use O_APPEND to append.
This corresponds better to the natural interpretation of "append",
and avoids the need to open the output file twice, or to invoke
lseek when APPEND is neither nil nor a number.
This relies on POSIX 1003.1-1988 or later, which is OK nowadays.
(Fwrite_region): Simplify.  Use O_APPEND instead of opening the
file possibly twice, and lseeking to its end; this avoids the
need to lseek on non-regular files.  Do not use O_EXCL and O_TRUNC
at the same time: the combination is never needed and apparently
it doesn't work with DOS_NT.
2013-01-19 10:58:40 -08:00
Paul Eggert
21cd50b803 Fix size bug on DOS_NT introduced by CIFS workaround.
* fileio.c (Fwrite_region): Use O_BINARY in checking code, too.

Fixes: debbugs:13149
2013-01-19 04:29:10 -08:00
Paul Eggert
b3fbb3956c Allow floating-point file offsets.
Problem reported by Vitalie Spinu in
<http://lists.gnu.org/archive/html/emacs-devel/2013-01/msg00411.html>.
* doc/lispref/files.texi (Reading from Files, Writing to Files):
Say that file offsets can be numbers, not just integers.
* src/fileio.c (emacs_lseek): Remove.
(file_offset): New function.
(Finsert_file_contents, Fwrite_region): Use it.
2013-01-19 01:59:51 -08:00
Chong Yidong
73c1421878 * emacs.c (Fkill_emacs): Set waiting_for_input to 0 to avoid aborting on Fsignal.
Fixes: debbugs:13289
2013-01-19 16:49:17 +08:00
Eli Zaretskii
76e9f7b9a1 Make 'fstat' on MS-Windows behave more like 'stat' and 'lstat'.
src/w32.c (fstat): Return owner and group like 'stat' and 'lstat' do.
2013-01-19 09:32:36 +02:00
Eli Zaretskii
6a9465f387 Minor fix in acl_set_file.
src/w32.c (acl_set_file): Treat ERROR_ACCESS_DENIED from
 set_file_security as failure due to insufficient privileges.
 Reported by Fabrice Popineau <fabrice.popineau@supelec.fr>.
2013-01-19 09:13:19 +02:00
Paul Eggert
9fe43ff672 Work around bug in CIFS and vboxsf file systems.
The bug was observed on Ubuntu operating inside a virtual machine,
editing files mounted via CIFS or vboxsf from the MS Windows 7 host.
The workaround introduces a race condition on non-buggy hosts,
but it's an unlikely race and anyway there's a nearly identical
nearby race that can't be fixed.
* fileio.c (valid_timestamp_file_system, timestamp_file_system):
New static vars.
(Fwrite_region): Test for file system time stamp bug.
(init_fileio): New function.
* lisp.h (init_fileio): Declare it.
* emacs.c (main): Call it.

Fixes: debbugs:13149
2013-01-18 20:44:34 -08:00
Paul Eggert
fa705c9927 * fileio.c (Finsert_file_contents): Simplify new diagnostic
and make it more consistent with other stat-failure diagnostics.
2013-01-18 16:40:07 -08:00
Dmitry Antipov
e07469fa51 Fix crash when inserting data from non-regular files. See
http://lists.gnu.org/archive/html/emacs-devel/2013-01/msg00406.html
for the error description produced by valgrind.
* fileio.c (read_non_regular): Rename to read_contents.
Free Lisp_Save_Value object used to pass parameters.
(read_non_regular_quit): Rename to read_contents_quit.
(Finsert_file_contents): Redesign internal file reading loop to adjust
gap and end positions after each read and so help make_gap to work
properly.  Do not signal an I/O error too early and so do not leave
not yet decoded characters in a buffer, which was the reason of
redisplay crash.  Use list2 to build return value.  Adjust comments.
2013-01-18 10:32:12 +04:00
Paul Eggert
6772211202 Close a race when statting and reading files.
* fileio.c (Finsert_file_contents): Use open+fstat, not stat+open.
This avoids a race if the file is renamed between stat and open.
This race is not the problem originally noted in Bug#13149;
see <http://bugs.gnu.org/13149#73> and later messages in the thread.
2013-01-17 21:12:08 -08:00
Dmitry Antipov
468afbacea * lisp.h (toplevel): Add comment about using Lisp_Save_Value
objects, related functions and macros.
(make_save_value): Adjust prototype.
(make_save_pointer): New prototype.
(SAFE_NALLOCA): Fix indentation.  Use make_save_pointer.
(SAFE_ALLOCA_LISP): Adjust make_save_value usage.
* alloc.c (format_save_value): Rename to make_save_value.
(make_save_pointer): New function.
(record_xmalloc): Use make_save_pointer.
* dired.c, editfns.c, fileio.c, font.c, gtkutil.c, lread.c:
* nsmenu.m, nsterm.m, xfns.c, xmenu.c, xselect.c, keymap.c:
Change users of make_save_value to make_save_pointer.
Likewise for format_save_value and make_save_value.
2013-01-17 10:29:40 +04:00
Dmitry Antipov
0e70695aa4 * buffer.h (NARROWED, BUF_NARROWED): Drop unused macros.
(DECODE_POSITION, BUFFER_CHECK_INDIRECTION): Fix indentation.
* buffer.c (toplevel, syms_of_buffer): Drop old commented-out
debugging stubs.
2013-01-17 09:52:13 +04:00
Glenn Morris
085d34c46a * src/fns.c (Frandom): Doc fix. 2013-01-16 21:05:16 -05:00
Paul Eggert
963ea40fe9 * src/alloc.c (free_save_value): Now static. 2013-01-15 13:38:58 -08:00
Dmitry Antipov
3346c1d0a8 * keymap.c (map_keymap_internal): Use format_save_value.
(map_keymap_char_table_item): Adjust accordingly.
* fileio.c (non_regular_fd, non_regular_inserted)
(non_regular_nbytes): Remove.
(Finsert_file_contents): Convert trytry to ptrdiff_t.  Use
format_save_value to pass parameters to read_non_regular.
(read_non_regular): Use XSAVE_ macros to extract parameters.
Adjust comment.
* xmenu.c (xmenu_show) [!USE_X_TOOLKIT && !USE_GTK]: Use
format_save_value.
(pop_down_menu) [!USE_X_TOOLKIT && !USE_GTK]: Adjust user.
2013-01-15 14:14:31 +04:00
Dmitry Antipov
2b30549c49 * src/lisp.h (XSAVE_POINTER, XSAVE_INTEGER): Change to allow extraction
from any Lisp_Save_Value slot.  Add type checking.
* src/alloc.c, src/dired.c, src/editfns.c, src/fileio.c, src/ftfont.c:
* src/gtkutil.c, src/keymap.c, src/lread.c, src/nsterm.h, src/nsmenu.c:
* src/xfns.c, src/xmenu.c, src/xselect.c: All users changed.
* admin/coccinelle/xsave.cocci: Semantic patch to adjust users of
XSAVE_POINTER and XSAVE_INTEGER macros.
2013-01-15 13:22:25 +04:00
Dmitry Antipov
1b971ac155 Some convenient bits to deal with Lisp_Save_Values.
* lisp.h (XSAVE_OBJECT): New macro to extract saved objects.
(allocate_misc): Remove prototype.
(format_save_value): New prototype.
* alloc.c (allocate_misc): Revert back to static.
(format_save_value): New function to build Lisp_Save_Value
object with the specified internal structure.
(make_save_value): Reimplement using format_save_value.
* editfns.c (save_excursion_save): Use format_save_value.
(save_excursion_restore): Use XSAVE_OBJECT.
2013-01-15 12:38:07 +04:00
Paul Eggert
c50cf2eac4 Avoid needless casts with XSAVE_POINTER.
* alloc.c (mark_object) [GC_MARK_STACK]:
* dired.c (directory_files_internal_unwind):
* fileio.c (do_auto_save_unwind):
* gtkutil.c (pop_down_dialog):
* keymap.c (map_keymap_char_table_item):
* lread.c (load_unwind):
* nsmenu.m (pop_down_menu):
* print.c (print_object) [GC_MARK_STACK]:
* xfns.c (clean_up_file_dialog):
* xmenu.c (cleanup_widget_value_tree):
Omit casts between XSAVE_POINTER and a pointer type.
2013-01-14 09:46:14 -08:00
Dmitry Antipov
9d5a1260b6 Fix compilation with GC_MARK_STACK == GC_USE_GCPROS_AS_BEFORE.
* eval.c (eval_sub): Protect `form' from being GCed before its
car and cdr becomes protected with the backtrace entry.
2013-01-14 15:07:50 +04:00
Dmitry Antipov
73ebd38f16 Make Lisp_Save_Value more versatile storage for up to four objects.
* lisp.h (toplevel): Enumeration to describe types of saved objects.
(struct Lisp_Save_Value): New layout.  Adjust comments.
(XSAVE_POINTER): New macro.
(XSAVE_INTEGER): Likewise.
(allocate_misc): Add prototype.
(free_misc): Likewise.
* alloc.c (allocate_misc): Now global.
(free_misc): Likewise.  Adjust comment.
(make_save_value): Use new Lisp_Save_Value layout.  Adjust comment.
(free_save_value): Likewise.
(mark_object): Likewise.
* editfns.c (save_excursion_save): Pack everything within
Lisp_Save_Value and so avoid xmalloc.
(save_excursion_restore): Adjust to match new layout.  Use free_misc
because we do not allocate extra memory any more.  Add eassert.
* print.c (print_object): New code to print Lisp_Save_Value.  Do not
rely on valid_lisp_object_p if !GC_MARK_STACK.  Adjust comments.
* dired.c, fileio.c, font.c, ftfont.c, gtkutil.c, keymap.c,
* lread.c, nsmenu.m, nsterm.h, xfns.c, xmenu.c, xselect.c:
Use XSAVE_POINTER and XSAVE_INTEGER where appropriate.
2013-01-14 13:55:21 +04:00
Glenn Morris
c0511b5769 Merge from emacs-24; up to 2012-12-10T20:27:33Z!eggert@cs.ucla.edu 2013-01-13 12:03:01 -08:00
Glenn Morris
0b59090ba3 ChangeLog whitespace trivia 2013-01-13 11:58:02 -08:00
Jan Djärv
2e7a189249 Fix spelling error. 2013-01-13 20:36:05 +01:00
Jan Djärv
b826986f36 * nsfont.m (LCD_SMOOTHING_MARGIN): New define.
(nsfont_draw): Remove disabling of LCD smoothing.
(ns_glyph_metrics): Add LCD_SMOOTHING_MARGIN to bearings to fix
Bug#11484 with LCD smooting on.
2013-01-13 15:29:22 +01:00
Glenn Morris
f5e9cbd447 ChangeLog fix (no need to merge to trunk) 2013-01-12 11:31:25 -08:00
Jan Djärv
b86195e669 Add tiny change. 2013-01-11 06:10:11 +01:00
Jan Djärv
616763d517 Make scroll-bar-adjust-thumb-portion customizable, adjust documentation.
* lisp/cus-start.el (all): Add scroll-bar-adjust-thumb-portion.

* src/xterm.c (syms_of_xterm): Adjust documentation for
scroll-bar-adjust-thumb-portion.
2013-01-11 06:09:30 +01:00
Jan Djärv
ec782c5f13 Introduce scroll-bar-adjust-thumb-portion.
* xterm.c (scroll-bar-adjust-thumb-portion): New variable to
determine whether scroll bar thumb size should be adjusted or
not. Use variable for MOTIF.

* gtkutil.c (scroll-bar-adjust-thumb-portion): Use variable for
GTK.
2013-01-11 05:57:45 +01:00
Jan Djärv
eac4d08fb1 * nsterm.m (keyDown:): Set processingCompose to NO if an emacs key
event is generated.
(doCommandBySelector:): Set processingCompose to NO.
2013-01-13 13:08:31 +01:00
Jan Djärv
7bc916b48d * nsfont.m (ns_findfonts): Add block/unblock_input calls.
Remove check for fkeys count > zero, block/unblock fixes the real bug.
(nsfont_list_family): Add block/unblock_input calls.
(nsfont_open): Move block_input earlier.  Add unblock_input before early
return.
(nsfont_draw): Add block/unblock_input calls.
2013-01-13 13:05:17 +01:00
Paul Eggert
bdc9b756cd * indent.c (Fvertical_motion): Remove now-incorrect GCPROs
for old_charpos and old_bytepos.
2013-01-11 22:15:12 -08:00