diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 62 | ||||
| -rw-r--r-- | src/Makefile.in | 10 | ||||
| -rw-r--r-- | src/alloc.c | 14 | ||||
| -rw-r--r-- | src/indent.c | 3 | ||||
| -rw-r--r-- | src/keyboard.c | 21 | ||||
| -rw-r--r-- | src/lread.c | 5 | ||||
| -rw-r--r-- | src/nsterm.m | 8 | ||||
| -rw-r--r-- | src/s/cygwin.h | 7 | ||||
| -rw-r--r-- | src/w32.c | 10 | ||||
| -rw-r--r-- | src/window.c | 2 | ||||
| -rw-r--r-- | src/xdisp.c | 10 |
11 files changed, 115 insertions, 37 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 18a3d4545e3..6d2ed01bafc 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,55 @@ | |||
| 1 | 2012-04-14 Atsuo Ohki <ohki@gssm.otsuka.tsukuba.ac.jp> (tiny change) | ||
| 2 | |||
| 3 | * lread.c (lisp_file_lexically_bound_p): | ||
| 4 | Fix hang at ";-*-\n" (bug#11238). | ||
| 5 | |||
| 6 | 2012-04-14 Eli Zaretskii <eliz@gnu.org> | ||
| 7 | |||
| 8 | * xdisp.c (find_last_unchanged_at_beg_row): Don't consider a row | ||
| 9 | "unchanged" if its end.pos is beyond ZV. (Bug#11199) | ||
| 10 | |||
| 11 | 2012-04-14 Jan Djärv <jan.h.d@swipnet.se> | ||
| 12 | |||
| 13 | * nsterm.m (constrainFrameRect): Always constrain when there is only | ||
| 14 | one screen (Bug#10962). | ||
| 15 | |||
| 16 | 2012-04-13 Ken Brown <kbrown@cornell.edu> | ||
| 17 | |||
| 18 | * s/cygwin.h (PTY_OPEN): Don't try to close a bogus file descriptor. | ||
| 19 | |||
| 20 | 2012-04-13 Reuben Thomas <rrt@sc3d.org> | ||
| 21 | |||
| 22 | * indent.c (Fmove_to_column): Change interactive spec (Bug#739). | ||
| 23 | |||
| 24 | 2012-04-11 Daniel Colascione <dancol@dancol.org> | ||
| 25 | |||
| 26 | * s/cygwin.h: The vfork the #define in cygwin.h was protecting | ||
| 27 | against is gone. It's better to use vfork now so that when Cygwin | ||
| 28 | gains a new, working vfork, we use it automatically (bug#10398). | ||
| 29 | |||
| 30 | 2012-04-11 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 31 | |||
| 32 | * window.c (save_window_save): Obey window-point-insertion-type. | ||
| 33 | |||
| 34 | 2012-04-11 Glenn Morris <rgm@gnu.org> | ||
| 35 | |||
| 36 | * Makefile.in (GNUSTEP_CFLAGS): Rename from C_SWITCH_X_SYSTEM. | ||
| 37 | |||
| 38 | 2012-04-11 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 39 | |||
| 40 | * alloc.c (lisp_align_malloc): Remove unneeded prototype. | ||
| 41 | |||
| 42 | 2012-04-10 "Jason S. Cornez" <jcornez@ravenpack.com> (tiny change) | ||
| 43 | |||
| 44 | * keyboard.c: Override inhibit-quit after the third C-g (bug#6585). | ||
| 45 | (force_quit_count): New var. | ||
| 46 | (handle_interrupt): Use it. | ||
| 47 | |||
| 48 | 2012-04-10 Juanma Barranquero <lekktu@gmail.com> | ||
| 49 | |||
| 50 | * w32.c (w32_delayed_load): Record the full path of the library | ||
| 51 | being loaded (bug#10424). | ||
| 52 | |||
| 1 | 2012-04-09 Glenn Morris <rgm@gnu.org> | 53 | 2012-04-09 Glenn Morris <rgm@gnu.org> |
| 2 | 54 | ||
| 3 | * doc.c (Fsnarf_documentation): Check variables, functions are bound, | 55 | * doc.c (Fsnarf_documentation): Check variables, functions are bound, |
| @@ -12,8 +64,8 @@ | |||
| 12 | * process.h: Add integer `gnutls_handshakes_tried' member to | 64 | * process.h: Add integer `gnutls_handshakes_tried' member to |
| 13 | process struct. | 65 | process struct. |
| 14 | 66 | ||
| 15 | * gnutls.h: Add `GNUTLS_EMACS_HANDSHAKES_LIMIT' upper limit. Add | 67 | * gnutls.h: Add `GNUTLS_EMACS_HANDSHAKES_LIMIT' upper limit. |
| 16 | convenience `GNUTLS_LOG2i' macro. | 68 | Add convenience `GNUTLS_LOG2i' macro. |
| 17 | 69 | ||
| 18 | * gnutls.c (gnutls_log_function2i): Convenience log function. | 70 | * gnutls.c (gnutls_log_function2i): Convenience log function. |
| 19 | (emacs_gnutls_read): Use new log functions, | 71 | (emacs_gnutls_read): Use new log functions, |
| @@ -99,8 +151,8 @@ | |||
| 99 | (xml_cleanup_parser): New function, export for fn_xmlCleanupParser. | 151 | (xml_cleanup_parser): New function, export for fn_xmlCleanupParser. |
| 100 | Calls xmlCleanupParser only if libxml2 was loaded (or statically | 152 | Calls xmlCleanupParser only if libxml2 was loaded (or statically |
| 101 | linked in). | 153 | linked in). |
| 102 | (Flibxml_parse_html_region, Flibxml_parse_xml_region): Call | 154 | (Flibxml_parse_html_region, Flibxml_parse_xml_region): |
| 103 | init_libxml2_functions before calling libxml2 functions. | 155 | Call init_libxml2_functions before calling libxml2 functions. |
| 104 | (syms_of_xml) <Qlibxml2_dll>: DEFSYM it. | 156 | (syms_of_xml) <Qlibxml2_dll>: DEFSYM it. |
| 105 | 157 | ||
| 106 | * emacs.c: Don't include libxml/parser.h. | 158 | * emacs.c: Don't include libxml/parser.h. |
| @@ -9723,7 +9775,7 @@ See ChangeLog.11 for earlier changes. | |||
| 9723 | ;; coding: utf-8 | 9775 | ;; coding: utf-8 |
| 9724 | ;; End: | 9776 | ;; End: |
| 9725 | 9777 | ||
| 9726 | Copyright (C) 2011-2012 Free Software Foundation, Inc. | 9778 | Copyright (C) 2011-2012 Free Software Foundation, Inc. |
| 9727 | 9779 | ||
| 9728 | This file is part of GNU Emacs. | 9780 | This file is part of GNU Emacs. |
| 9729 | 9781 | ||
diff --git a/src/Makefile.in b/src/Makefile.in index 466a091cde9..e8b68040c44 100644 --- a/src/Makefile.in +++ b/src/Makefile.in | |||
| @@ -75,16 +75,13 @@ C_SWITCH_MACHINE=@C_SWITCH_MACHINE@ | |||
| 75 | ## System-specific CFLAGS. | 75 | ## System-specific CFLAGS. |
| 76 | C_SWITCH_SYSTEM=@C_SWITCH_SYSTEM@ | 76 | C_SWITCH_SYSTEM=@C_SWITCH_SYSTEM@ |
| 77 | 77 | ||
| 78 | ## Currently only set if NS_IMPL_GNUSTEP. | 78 | GNUSTEP_CFLAGS=@GNUSTEP_CFLAGS@ |
| 79 | ## C_SWITCH_X_SITE may override this. | ||
| 80 | C_SWITCH_X_SYSTEM=@C_SWITCH_X_SYSTEM@ | ||
| 81 | 79 | ||
| 82 | ## Define C_SWITCH_X_SITE to contain any special flags your compiler | 80 | ## Define C_SWITCH_X_SITE to contain any special flags your compiler |
| 83 | ## may need to deal with X Windows. For instance, if you've defined | 81 | ## may need to deal with X Windows. For instance, if you've defined |
| 84 | ## HAVE_X_WINDOWS and your X include files aren't in a place that your | 82 | ## HAVE_X_WINDOWS and your X include files aren't in a place that your |
| 85 | ## compiler can find on its own, you might want to add "-I/..." or | 83 | ## compiler can find on its own, you might want to add "-I/..." or |
| 86 | ## something similar. This is normally set by configure. | 84 | ## something similar. This is normally set by configure. |
| 87 | ## This is used before C_SWITCH_X_SYSTEM and may override it. | ||
| 88 | C_SWITCH_X_SITE=@C_SWITCH_X_SITE@ | 85 | C_SWITCH_X_SITE=@C_SWITCH_X_SITE@ |
| 89 | 86 | ||
| 90 | ## Define LD_SWITCH_X_SITE to contain any special flags your loader | 87 | ## Define LD_SWITCH_X_SITE to contain any special flags your loader |
| @@ -308,14 +305,11 @@ MKDEPDIR=@MKDEPDIR@ | |||
| 308 | ## -DHAVE_CONFIG_H is needed for some other files to take advantage of | 305 | ## -DHAVE_CONFIG_H is needed for some other files to take advantage of |
| 309 | ## the information in `config.h'. | 306 | ## the information in `config.h'. |
| 310 | ## | 307 | ## |
| 311 | ## C_SWITCH_X_SITE must come before C_SWITCH_X_SYSTEM | ||
| 312 | ## since it may have -I options that should override those. | ||
| 313 | ## | ||
| 314 | ## FIXME? MYCPPFLAGS only referenced in etc/DEBUG. | 308 | ## FIXME? MYCPPFLAGS only referenced in etc/DEBUG. |
| 315 | ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(MYCPPFLAGS) -I. -I$(srcdir) \ | 309 | ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(MYCPPFLAGS) -I. -I$(srcdir) \ |
| 316 | -I$(lib) -I$(srcdir)/../lib \ | 310 | -I$(lib) -I$(srcdir)/../lib \ |
| 317 | $(C_SWITCH_MACHINE) $(C_SWITCH_SYSTEM) $(C_SWITCH_X_SITE) \ | 311 | $(C_SWITCH_MACHINE) $(C_SWITCH_SYSTEM) $(C_SWITCH_X_SITE) \ |
| 318 | $(C_SWITCH_X_SYSTEM) $(CFLAGS_SOUND) $(RSVG_CFLAGS) $(IMAGEMAGICK_CFLAGS) \ | 312 | $(GNUSTEP_CFLAGS) $(CFLAGS_SOUND) $(RSVG_CFLAGS) $(IMAGEMAGICK_CFLAGS) \ |
| 319 | $(LIBXML2_CFLAGS) $(DBUS_CFLAGS) \ | 313 | $(LIBXML2_CFLAGS) $(DBUS_CFLAGS) \ |
| 320 | $(WEBKIT_CFLAGS) $(CLUTTER_CFLAGS) \ | 314 | $(WEBKIT_CFLAGS) $(CLUTTER_CFLAGS) \ |
| 321 | $(SETTINGS_CFLAGS) $(FREETYPE_CFLAGS) $(FONTCONFIG_CFLAGS) \ | 315 | $(SETTINGS_CFLAGS) $(FREETYPE_CFLAGS) $(FONTCONFIG_CFLAGS) \ |
diff --git a/src/alloc.c b/src/alloc.c index 16b004fc0e9..314438ba9f1 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -296,7 +296,6 @@ enum mem_type | |||
| 296 | MEM_TYPE_VECTORLIKE | 296 | MEM_TYPE_VECTORLIKE |
| 297 | }; | 297 | }; |
| 298 | 298 | ||
| 299 | static POINTER_TYPE *lisp_align_malloc (size_t, enum mem_type); | ||
| 300 | static POINTER_TYPE *lisp_malloc (size_t, enum mem_type); | 299 | static POINTER_TYPE *lisp_malloc (size_t, enum mem_type); |
| 301 | 300 | ||
| 302 | 301 | ||
| @@ -938,9 +937,10 @@ lisp_free (POINTER_TYPE *block) | |||
| 938 | MALLOC_UNBLOCK_INPUT; | 937 | MALLOC_UNBLOCK_INPUT; |
| 939 | } | 938 | } |
| 940 | 939 | ||
| 941 | /* Allocation of aligned blocks of memory to store Lisp data. */ | 940 | /***** Allocation of aligned blocks of memory to store Lisp data. *****/ |
| 942 | /* The entry point is lisp_align_malloc which returns blocks of at most */ | 941 | |
| 943 | /* BLOCK_BYTES and guarantees they are aligned on a BLOCK_ALIGN boundary. */ | 942 | /* The entry point is lisp_align_malloc which returns blocks of at most |
| 943 | BLOCK_BYTES and guarantees they are aligned on a BLOCK_ALIGN boundary. */ | ||
| 944 | 944 | ||
| 945 | /* Use posix_memalloc if the system has it and we're using the system's | 945 | /* Use posix_memalloc if the system has it and we're using the system's |
| 946 | malloc (because our gmalloc.c routines don't have posix_memalign although | 946 | malloc (because our gmalloc.c routines don't have posix_memalign although |
| @@ -1099,7 +1099,7 @@ lisp_align_malloc (size_t nbytes, enum mem_type type) | |||
| 1099 | #endif | 1099 | #endif |
| 1100 | 1100 | ||
| 1101 | /* Initialize the blocks and put them on the free list. | 1101 | /* Initialize the blocks and put them on the free list. |
| 1102 | Is `base' was not properly aligned, we can't use the last block. */ | 1102 | If `base' was not properly aligned, we can't use the last block. */ |
| 1103 | for (i = 0; i < (aligned ? ABLOCKS_SIZE : ABLOCKS_SIZE - 1); i++) | 1103 | for (i = 0; i < (aligned ? ABLOCKS_SIZE : ABLOCKS_SIZE - 1); i++) |
| 1104 | { | 1104 | { |
| 1105 | abase->blocks[i].abase = abase; | 1105 | abase->blocks[i].abase = abase; |
| @@ -1146,8 +1146,8 @@ lisp_align_free (POINTER_TYPE *block) | |||
| 1146 | ablock->x.next_free = free_ablock; | 1146 | ablock->x.next_free = free_ablock; |
| 1147 | free_ablock = ablock; | 1147 | free_ablock = ablock; |
| 1148 | /* Update busy count. */ | 1148 | /* Update busy count. */ |
| 1149 | ABLOCKS_BUSY (abase) = | 1149 | ABLOCKS_BUSY (abase) |
| 1150 | (struct ablocks *) (-2 + (intptr_t) ABLOCKS_BUSY (abase)); | 1150 | = (struct ablocks *) (-2 + (intptr_t) ABLOCKS_BUSY (abase)); |
| 1151 | 1151 | ||
| 1152 | if (2 > (intptr_t) ABLOCKS_BUSY (abase)) | 1152 | if (2 > (intptr_t) ABLOCKS_BUSY (abase)) |
| 1153 | { /* All the blocks are free. */ | 1153 | { /* All the blocks are free. */ |
diff --git a/src/indent.c b/src/indent.c index 1531d2ffde8..280607f7ecb 100644 --- a/src/indent.c +++ b/src/indent.c | |||
| @@ -956,7 +956,8 @@ indented_beyond_p (EMACS_INT pos, EMACS_INT pos_byte, EMACS_INT column) | |||
| 956 | return val >= column; | 956 | return val >= column; |
| 957 | } | 957 | } |
| 958 | 958 | ||
| 959 | DEFUN ("move-to-column", Fmove_to_column, Smove_to_column, 1, 2, "p", | 959 | DEFUN ("move-to-column", Fmove_to_column, Smove_to_column, 1, 2, |
| 960 | "NMove to column: ", | ||
| 960 | doc: /* Move point to column COLUMN in the current line. | 961 | doc: /* Move point to column COLUMN in the current line. |
| 961 | Interactively, COLUMN is the value of prefix numeric argument. | 962 | Interactively, COLUMN is the value of prefix numeric argument. |
| 962 | The column of a character is calculated by adding together the widths | 963 | The column of a character is calculated by adding together the widths |
diff --git a/src/keyboard.c b/src/keyboard.c index 66d76563518..133b28234a8 100644 --- a/src/keyboard.c +++ b/src/keyboard.c | |||
| @@ -10229,7 +10229,7 @@ DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector, | |||
| 10229 | 10229 | ||
| 10230 | memset (keybuf, 0, sizeof keybuf); | 10230 | memset (keybuf, 0, sizeof keybuf); |
| 10231 | GCPRO1 (keybuf[0]); | 10231 | GCPRO1 (keybuf[0]); |
| 10232 | gcpro1.nvars = (sizeof keybuf/sizeof (keybuf[0])); | 10232 | gcpro1.nvars = (sizeof keybuf / sizeof (keybuf[0])); |
| 10233 | 10233 | ||
| 10234 | if (NILP (continue_echo)) | 10234 | if (NILP (continue_echo)) |
| 10235 | { | 10235 | { |
| @@ -10243,7 +10243,7 @@ DEFUN ("read-key-sequence-vector", Fread_key_sequence_vector, | |||
| 10243 | cancel_hourglass (); | 10243 | cancel_hourglass (); |
| 10244 | #endif | 10244 | #endif |
| 10245 | 10245 | ||
| 10246 | i = read_key_sequence (keybuf, (sizeof keybuf/sizeof (keybuf[0])), | 10246 | i = read_key_sequence (keybuf, (sizeof keybuf / sizeof (keybuf[0])), |
| 10247 | prompt, ! NILP (dont_downcase_last), | 10247 | prompt, ! NILP (dont_downcase_last), |
| 10248 | ! NILP (can_return_switch_frame), 0); | 10248 | ! NILP (can_return_switch_frame), 0); |
| 10249 | 10249 | ||
| @@ -10934,6 +10934,11 @@ interrupt_signal (int signalnum) /* If we don't have an argument, some */ | |||
| 10934 | errno = old_errno; | 10934 | errno = old_errno; |
| 10935 | } | 10935 | } |
| 10936 | 10936 | ||
| 10937 | /* If Emacs is stuck because `inhibit-quit' is true, then keep track | ||
| 10938 | of the number of times C-g has been requested. If C-g is pressed | ||
| 10939 | enough times, then quit anyway. See bug#6585. */ | ||
| 10940 | static int force_quit_count; | ||
| 10941 | |||
| 10937 | /* This routine is called at interrupt level in response to C-g. | 10942 | /* This routine is called at interrupt level in response to C-g. |
| 10938 | 10943 | ||
| 10939 | It is called from the SIGINT handler or kbd_buffer_store_event. | 10944 | It is called from the SIGINT handler or kbd_buffer_store_event. |
| @@ -11052,8 +11057,16 @@ handle_interrupt (void) | |||
| 11052 | UNGCPRO; | 11057 | UNGCPRO; |
| 11053 | } | 11058 | } |
| 11054 | else | 11059 | else |
| 11055 | /* Else request quit when it's safe */ | 11060 | { /* Else request quit when it's safe. */ |
| 11056 | Vquit_flag = Qt; | 11061 | if (NILP (Vquit_flag)) |
| 11062 | force_quit_count = 0; | ||
| 11063 | if (++force_quit_count == 3) | ||
| 11064 | { | ||
| 11065 | immediate_quit = 1; | ||
| 11066 | Vinhibit_quit = Qnil; | ||
| 11067 | } | ||
| 11068 | Vquit_flag = Qt; | ||
| 11069 | } | ||
| 11057 | } | 11070 | } |
| 11058 | 11071 | ||
| 11059 | /* TODO: The longjmp in this call throws the NS event loop integration off, | 11072 | /* TODO: The longjmp in this call throws the NS event loop integration off, |
diff --git a/src/lread.c b/src/lread.c index bfb37b4fc89..50465fd01e8 100644 --- a/src/lread.c +++ b/src/lread.c | |||
| @@ -839,7 +839,7 @@ lisp_file_lexically_bound_p (Lisp_Object readcharfun) | |||
| 839 | } | 839 | } |
| 840 | 840 | ||
| 841 | /* Stop scanning if no colon was found before end marker. */ | 841 | /* Stop scanning if no colon was found before end marker. */ |
| 842 | if (!in_file_vars) | 842 | if (!in_file_vars || ch == '\n' || ch == EOF) |
| 843 | break; | 843 | break; |
| 844 | 844 | ||
| 845 | while (i > 0 && (var[i - 1] == ' ' || var[i - 1] == '\t')) | 845 | while (i > 0 && (var[i - 1] == ' ' || var[i - 1] == '\t')) |
| @@ -863,8 +863,7 @@ lisp_file_lexically_bound_p (Lisp_Object readcharfun) | |||
| 863 | ch = READCHAR; | 863 | ch = READCHAR; |
| 864 | } | 864 | } |
| 865 | if (! in_file_vars) | 865 | if (! in_file_vars) |
| 866 | /* The value was terminated by an end-marker, which | 866 | /* The value was terminated by an end-marker, which remove. */ |
| 867 | remove. */ | ||
| 868 | i -= 3; | 867 | i -= 3; |
| 869 | while (i > 0 && (val[i - 1] == ' ' || val[i - 1] == '\t')) | 868 | while (i > 0 && (val[i - 1] == ' ' || val[i - 1] == '\t')) |
| 870 | i--; | 869 | i--; |
diff --git a/src/nsterm.m b/src/nsterm.m index a45792fd645..7cbaf991311 100644 --- a/src/nsterm.m +++ b/src/nsterm.m | |||
| @@ -6038,11 +6038,15 @@ ns_term_shutdown (int sig) | |||
| 6038 | restrict the height to just one monitor. So we override this. */ | 6038 | restrict the height to just one monitor. So we override this. */ |
| 6039 | - (NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(NSScreen *)screen | 6039 | - (NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(NSScreen *)screen |
| 6040 | { | 6040 | { |
| 6041 | /* When making the frame visible for the first time, we want to | 6041 | /* When making the frame visible for the first time or if there is just |
| 6042 | constrain. Other times not. */ | 6042 | one screen, we want to constrain. Other times not. */ |
| 6043 | NSUInteger nr_screens = [[NSScreen screens] count]; | ||
| 6043 | struct frame *f = ((EmacsView *)[self delegate])->emacsframe; | 6044 | struct frame *f = ((EmacsView *)[self delegate])->emacsframe; |
| 6044 | NSTRACE (constrainFrameRect); | 6045 | NSTRACE (constrainFrameRect); |
| 6045 | 6046 | ||
| 6047 | if (nr_screens == 1) | ||
| 6048 | return [super constrainFrameRect:frameRect toScreen:screen]; | ||
| 6049 | |||
| 6046 | if (f->output_data.ns->dont_constrain | 6050 | if (f->output_data.ns->dont_constrain |
| 6047 | || ns_menu_bar_should_be_hidden ()) | 6051 | || ns_menu_bar_should_be_hidden ()) |
| 6048 | return frameRect; | 6052 | return frameRect; |
diff --git a/src/s/cygwin.h b/src/s/cygwin.h index 9a371829eaa..f8c656e8ebc 100644 --- a/src/s/cygwin.h +++ b/src/s/cygwin.h | |||
| @@ -58,7 +58,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | |||
| 58 | if (-1 == openpty (&fd, &dummy, pty_name, 0, 0)) \ | 58 | if (-1 == openpty (&fd, &dummy, pty_name, 0, 0)) \ |
| 59 | fd = -1; \ | 59 | fd = -1; \ |
| 60 | sigsetmask (mask); \ | 60 | sigsetmask (mask); \ |
| 61 | emacs_close (dummy); \ | 61 | if (fd >= 0) \ |
| 62 | emacs_close (dummy); \ | ||
| 62 | } \ | 63 | } \ |
| 63 | while (0) | 64 | while (0) |
| 64 | 65 | ||
| @@ -81,10 +82,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | |||
| 81 | 82 | ||
| 82 | #define HAVE_SOCKETS | 83 | #define HAVE_SOCKETS |
| 83 | 84 | ||
| 84 | /* vfork() interacts badly with setsid(), causing ptys to fail to | ||
| 85 | change their controlling terminal */ | ||
| 86 | #define vfork fork | ||
| 87 | |||
| 88 | /* This should work (at least when compiling with gcc). But I have no way | 85 | /* This should work (at least when compiling with gcc). But I have no way |
| 89 | or intention to verify or even test it. If you encounter a problem with | 86 | or intention to verify or even test it. If you encounter a problem with |
| 90 | it, feel free to change this setting, but please add a comment here about | 87 | it, feel free to change this setting, but please add a comment here about |
| @@ -5816,7 +5816,15 @@ w32_delayed_load (Lisp_Object libraries, Lisp_Object library_id) | |||
| 5816 | CHECK_STRING_CAR (dlls); | 5816 | CHECK_STRING_CAR (dlls); |
| 5817 | if ((library_dll = LoadLibrary (SDATA (XCAR (dlls))))) | 5817 | if ((library_dll = LoadLibrary (SDATA (XCAR (dlls))))) |
| 5818 | { | 5818 | { |
| 5819 | found = XCAR (dlls); | 5819 | char name[MAX_PATH]; |
| 5820 | DWORD len; | ||
| 5821 | |||
| 5822 | len = GetModuleFileNameA (library_dll, name, sizeof (name)); | ||
| 5823 | found = Fcons (XCAR (dlls), | ||
| 5824 | (len > 0) | ||
| 5825 | /* Possibly truncated */ | ||
| 5826 | ? make_specified_string (name, -1, len, 1) | ||
| 5827 | : Qnil); | ||
| 5820 | break; | 5828 | break; |
| 5821 | } | 5829 | } |
| 5822 | } | 5830 | } |
diff --git a/src/window.c b/src/window.c index 484cc825fb8..710e496fe88 100644 --- a/src/window.c +++ b/src/window.c | |||
| @@ -5950,6 +5950,8 @@ save_window_save (Lisp_Object window, struct Lisp_Vector *vector, int i) | |||
| 5950 | } | 5950 | } |
| 5951 | else | 5951 | else |
| 5952 | p->pointm = Fcopy_marker (w->pointm, Qnil); | 5952 | p->pointm = Fcopy_marker (w->pointm, Qnil); |
| 5953 | XMARKER (p->pointm)->insertion_type | ||
| 5954 | = !NILP (Vwindow_point_insertion_type); | ||
| 5953 | 5955 | ||
| 5954 | p->start = Fcopy_marker (w->start, Qnil); | 5956 | p->start = Fcopy_marker (w->start, Qnil); |
| 5955 | p->start_at_line_beg = w->start_at_line_beg; | 5957 | p->start_at_line_beg = w->start_at_line_beg; |
diff --git a/src/xdisp.c b/src/xdisp.c index 2e83671007c..2025eda79a7 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -16681,7 +16681,15 @@ find_last_unchanged_at_beg_row (struct window *w) | |||
| 16681 | continued. */ | 16681 | continued. */ |
| 16682 | && !(MATRIX_ROW_END_CHARPOS (row) == first_changed_pos | 16682 | && !(MATRIX_ROW_END_CHARPOS (row) == first_changed_pos |
| 16683 | && (row->continued_p | 16683 | && (row->continued_p |
| 16684 | || row->exact_window_width_line_p))) | 16684 | || row->exact_window_width_line_p)) |
| 16685 | /* If ROW->end is beyond ZV, then ROW->end is outdated and | ||
| 16686 | needs to be recomputed, so don't consider this row as | ||
| 16687 | unchanged. This happens when the last line was | ||
| 16688 | bidi-reordered and was killed immediately before this | ||
| 16689 | redisplay cycle. In that case, ROW->end stores the | ||
| 16690 | buffer position of the first visual-order character of | ||
| 16691 | the killed text, which is now beyond ZV. */ | ||
| 16692 | && CHARPOS (row->end.pos) <= ZV) | ||
| 16685 | row_found = row; | 16693 | row_found = row; |
| 16686 | 16694 | ||
| 16687 | /* Stop if last visible row. */ | 16695 | /* Stop if last visible row. */ |