diff options
| author | Karoly Lorentey | 2004-03-07 15:30:22 +0000 |
|---|---|---|
| committer | Karoly Lorentey | 2004-03-07 15:30:22 +0000 |
| commit | 54e81dc64794f315efdf418518a5e00f419cbcbd (patch) | |
| tree | 4c2dc33f0c1e697b810298ba5e9972341c0d4240 /src | |
| parent | 4388f1016b80bd33a75481b28352ae6c456e386a (diff) | |
| parent | ee96c8385cf436bf308665e5d6c8fb16c761e8e1 (diff) | |
| download | emacs-54e81dc64794f315efdf418518a5e00f419cbcbd.tar.gz emacs-54e81dc64794f315efdf418518a5e00f419cbcbd.zip | |
Merged in changes from CVS HEAD
Patches applied:
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-126
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-127
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-128
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-129
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-130
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-131
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-132
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-133
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-134
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-135
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-136
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-137
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-112
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 241 | ||||
| -rw-r--r-- | src/buffer.c | 5 | ||||
| -rw-r--r-- | src/doc.c | 2 | ||||
| -rw-r--r-- | src/editfns.c | 71 | ||||
| -rw-r--r-- | src/fringe.c | 25 | ||||
| -rw-r--r-- | src/indent.c | 12 | ||||
| -rw-r--r-- | src/makefile.w32-in | 15 | ||||
| -rw-r--r-- | src/s/sol2-6.h | 5 | ||||
| -rw-r--r-- | src/w32term.c | 2 | ||||
| -rw-r--r-- | src/window.c | 8 | ||||
| -rw-r--r-- | src/window.h | 3 | ||||
| -rw-r--r-- | src/xdisp.c | 245 | ||||
| -rw-r--r-- | src/xfns.c | 13 |
13 files changed, 459 insertions, 188 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index c1a63aab953..bb8ef04bc67 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,78 @@ | |||
| 1 | 2004-03-04 Richard M. Stallman <rms@gnu.org> | ||
| 2 | |||
| 3 | * s/sol2-6.h (LD_SWITCH_SYSTEM_TEMACS): New definition. | ||
| 4 | |||
| 5 | * window.c (Fdisplay_buffer): Doc fix. | ||
| 6 | |||
| 7 | * buffer.c (Fpop_to_buffer): Doc fix. | ||
| 8 | |||
| 9 | 2004-03-03 Kim F. Storm <storm@cua.dk> | ||
| 10 | |||
| 11 | * xdisp.c (display_line): Fix call to get_overlay_arrow_glyph_row. | ||
| 12 | |||
| 13 | 2004-03-02 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 14 | |||
| 15 | * editfns.c (Ftranslate_region): Lisp_Object/int mixup. | ||
| 16 | |||
| 17 | 2004-03-02 Richard M. Stallman <rms@gnu.org> | ||
| 18 | |||
| 19 | * indent.c (compute_motion): Save vpos in prev_vpos, like hpos etc. | ||
| 20 | |||
| 21 | 2004-03-02 Kenichi Handa <handa@m17n.org> | ||
| 22 | |||
| 23 | * doc.c (Fsubstitute_command_keys): Fix counding bytes. | ||
| 24 | |||
| 25 | 2004-03-02 Kim F. Storm <storm@cua.dk> | ||
| 26 | |||
| 27 | * window.h (struct window): New member overlay_arrow_bitmap. | ||
| 28 | |||
| 29 | * window.c (make_window): Initialize overlay_arrow_bitmap. | ||
| 30 | |||
| 31 | * xdisp.c (Voverlay_arrow_variable_list): New variable to properly | ||
| 32 | implement and integrate multiple overlay arrows with redisplay. | ||
| 33 | (syms_of_xdisp): DEFVAR_LISP and initialize it. | ||
| 34 | (last_arrow_position, last_arrow_string): Replace by properties. | ||
| 35 | (Qlast_arrow_position, Qlast_arrow_string) | ||
| 36 | (Qoverlay_arrow_string, Qoverlay_arrow_bitmap): New variables. | ||
| 37 | (syms_of_xdisp): Intern and staticpro them. | ||
| 38 | (overlay_arrow_string_or_property, update_overlay_arrows) | ||
| 39 | (overlay_arrow_in_current_buffer_p, overlay_arrows_changed_p) | ||
| 40 | (overlay_arrow_at_row): New functions for multiple overlay arrows. | ||
| 41 | (redisplay_internal): Use them instead of directly accessing | ||
| 42 | Voverlay_arrow_position etc. for multiple overlay arrows. | ||
| 43 | (mark_window_display_accurate): Use update_overlay_arrows. | ||
| 44 | (try_cursor_movement): Use overlay_arrow_in_current_buffer_p. | ||
| 45 | (try_window_id): Use overlay_arrows_changed_p. | ||
| 46 | (get_overlay_arrow_glyph_row): Add overlay_arrow_string arg. | ||
| 47 | (display_line): Use overlay_arrow_at_row to check multiple | ||
| 48 | overlay arrows, and get relevant overlay-arrow-string and | ||
| 49 | overlay-arrow-bitmap. Set w->overlay_arrow_bitmap accordingly. | ||
| 50 | (produce_image_glyph): Set pixel_width = 0 for fringe bitmap. | ||
| 51 | (syms_of_xdisp): Remove last_arrow_position and last_arrow_string. | ||
| 52 | |||
| 53 | * fringe.c (draw_fringe_bitmap): Use w->overlay_arrow_bitmap if set. | ||
| 54 | (update_window_fringes): Remove unused code. | ||
| 55 | |||
| 56 | 2004-03-01 Jason Rumney <jasonr@gnu.org> | ||
| 57 | |||
| 58 | * w32term.c (w32_read_socket): Fix last change to ButtonPress handling. | ||
| 59 | |||
| 60 | 2004-03-01 Juanma Barranquero <lektu@terra.es> | ||
| 61 | |||
| 62 | * fringe.c (Fdefine_fringe_bitmap): Fix typo in docstring. | ||
| 63 | |||
| 64 | * makefile.w32-in ($(BLD)/fringe.$(O)): Add dependencies. | ||
| 65 | |||
| 66 | 2004-03-01 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> | ||
| 67 | |||
| 68 | * xfns.c (Fx_display_color_cells): Use number of planes to calculate | ||
| 69 | how many colors can be displayed. | ||
| 70 | |||
| 71 | 2004-03-01 Kenichi Handa <handa@m17n.org> | ||
| 72 | |||
| 73 | * editfns.c (Ftranslate_region): Handle multibyte chars in TABLE | ||
| 74 | correctly. | ||
| 75 | |||
| 1 | 2004-02-28 Kim F. Storm <storm@cua.dk> | 76 | 2004-02-28 Kim F. Storm <storm@cua.dk> |
| 2 | 77 | ||
| 3 | * dispnew.c (update_window): Update header line also if there are | 78 | * dispnew.c (update_window): Update header line also if there are |
| @@ -11,11 +86,11 @@ | |||
| 11 | 86 | ||
| 12 | 2004-02-28 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> | 87 | 2004-02-28 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> |
| 13 | 88 | ||
| 14 | * xfns.c (x_window): Fixed indentation. | 89 | * xfns.c (x_window): Fix indentation. |
| 15 | 90 | ||
| 16 | * xterm.c (x_calc_absolute_position): Call x_real_positions | 91 | * xterm.c (x_calc_absolute_position): Call x_real_positions |
| 17 | to get WM window sizes and use those to calculate position. | 92 | to get WM window sizes and use those to calculate position. |
| 18 | (x_set_offset): Removed code commented out. | 93 | (x_set_offset): Remove code commented out. |
| 19 | 94 | ||
| 20 | 2004-02-28 Miles Bader <miles@gnu.org> | 95 | 2004-02-28 Miles Bader <miles@gnu.org> |
| 21 | 96 | ||
| @@ -39,7 +114,7 @@ | |||
| 39 | * keyboard.h (kbd_buffer_store_event_hold): Add prototype. | 114 | * keyboard.h (kbd_buffer_store_event_hold): Add prototype. |
| 40 | (gen_help_event): Fix prototype. | 115 | (gen_help_event): Fix prototype. |
| 41 | 116 | ||
| 42 | * macterm.c (XTread_socket): Remove bufp_r and | 117 | * macterm.c (XTread_socket): Remove bufp_r and |
| 43 | numcharsp args. Add hold_quit arg. | 118 | numcharsp args. Add hold_quit arg. |
| 44 | Rework to use just one, local, inev input_event. Store inev | 119 | Rework to use just one, local, inev input_event. Store inev |
| 45 | directly in fifo using kbd_buffer_store_event_hold. | 120 | directly in fifo using kbd_buffer_store_event_hold. |
| @@ -51,7 +126,7 @@ | |||
| 51 | initialize local hold_quit event to handle postponed quit event | 126 | initialize local hold_quit event to handle postponed quit event |
| 52 | (and store it if set by kbd_buffer_store_event_hold). | 127 | (and store it if set by kbd_buffer_store_event_hold). |
| 53 | 128 | ||
| 54 | * term.c (read_socket_hook): Fix arg list. | 129 | * term.c (read_socket_hook): Fix arg list. |
| 55 | 130 | ||
| 56 | * termhooks.h (read_socket_hook): Fix prototype. | 131 | * termhooks.h (read_socket_hook): Fix prototype. |
| 57 | 132 | ||
| @@ -73,9 +148,9 @@ | |||
| 73 | 148 | ||
| 74 | * xsmfns.c (x_session_check_input): Remove numchars arg. | 149 | * xsmfns.c (x_session_check_input): Remove numchars arg. |
| 75 | 150 | ||
| 76 | * xterm.c (x_focus_changed, x_detect_focus_change): Remove | 151 | * xterm.c (x_focus_changed, x_detect_focus_change): |
| 77 | numchars arg. Always store event into bufp arg. Return nothing. | 152 | Remove numchars arg. Always store event into bufp arg. |
| 78 | Callers changed accordingly. | 153 | Return nothing. Callers changed accordingly. |
| 79 | (glyph_rect): Simplify. | 154 | (glyph_rect): Simplify. |
| 80 | (STORE_KEYSYM_FOR_DEBUG): New macro. | 155 | (STORE_KEYSYM_FOR_DEBUG): New macro. |
| 81 | (SET_SAVED_MENU_EVENT): Use inev instead of bufp, etc. | 156 | (SET_SAVED_MENU_EVENT): Use inev instead of bufp, etc. |
| @@ -106,15 +181,14 @@ | |||
| 106 | * xterm.h (x_session_check_input): Fix prototype. | 181 | * xterm.h (x_session_check_input): Fix prototype. |
| 107 | 182 | ||
| 108 | 2004-02-26 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | 183 | 2004-02-26 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> |
| 109 | 184 | ||
| 110 | * s/darwin.h (LD_SWITCH_SYSTEM_TEMACS): Add `-framework | 185 | * s/darwin.h (LD_SWITCH_SYSTEM_TEMACS): Add `-framework QuickTime'. |
| 111 | QuickTime'. | 186 | |
| 112 | |||
| 113 | * dispextern.h [MAC_OSX]: Do not include Carbon/Carbon.h (now in | 187 | * dispextern.h [MAC_OSX]: Do not include Carbon/Carbon.h (now in |
| 114 | macgui.h). | 188 | macgui.h). |
| 115 | 189 | ||
| 116 | * emacs.c (main) [HAVE_CARBON]: Call init_xfns. | 190 | * emacs.c (main) [HAVE_CARBON]: Call init_xfns. |
| 117 | 191 | ||
| 118 | * macgui.h [MAC_OSX]: Include Carbon/Carbon.h. | 192 | * macgui.h [MAC_OSX]: Include Carbon/Carbon.h. |
| 119 | (mktime, DEBUG, Z, free, malloc, realloc, max, min) | 193 | (mktime, DEBUG, Z, free, malloc, realloc, max, min) |
| 120 | (init_process) [MAC_OSX] : Avoid conflicts with Carbon/Carbon.h. | 194 | (init_process) [MAC_OSX] : Avoid conflicts with Carbon/Carbon.h. |
| @@ -123,18 +197,16 @@ | |||
| 123 | (Bitmap): Remove typedef. | 197 | (Bitmap): Remove typedef. |
| 124 | (Pixmap): Change int to GWorldPtr. | 198 | (Pixmap): Change int to GWorldPtr. |
| 125 | 199 | ||
| 126 | * macmenu.c [MAC_OSX]: Do not include Carbon/Carbon.h (now in | 200 | * macmenu.c [MAC_OSX]: Don't include Carbon/Carbon.h (now in macgui.h). |
| 127 | macgui.h). | 201 | |
| 128 | 202 | * macterm.h [MAC_OSX]: Don't include Carbon/Carbon.h (now in macgui.h). | |
| 129 | * macterm.h [MAC_OSX]: Do not include Carbon/Carbon.h (now in | 203 | (RED16_FROM_ULONG, GREEN16_FROM_ULONG, BLUE16_FROM_ULONG): |
| 130 | macgui.h). | 204 | New #define to extract 16-bit depth color components from unsigned |
| 131 | (RED16_FROM_ULONG, GREEN16_FROM_ULONG, BLUE16_FROM_ULONG): New | ||
| 132 | #define to extract 16-bit depth color components from unsigned | ||
| 133 | long representation. | 205 | long representation. |
| 134 | (PIX_MASK_DRAW, PIX_MASK_RETAIN): New #define to represent pixel | 206 | (PIX_MASK_DRAW, PIX_MASK_RETAIN): New #define to represent pixel |
| 135 | colors used for masks. | 207 | colors used for masks. |
| 136 | (struct mac_display_info): Add color_p. Remove n_cbits. | 208 | (struct mac_display_info): Add color_p. Remove n_cbits. |
| 137 | 209 | ||
| 138 | * macfns.c: Include sys/types.h and sys/stat.h. | 210 | * macfns.c: Include sys/types.h and sys/stat.h. |
| 139 | [MAC_OSX]: Do not include Carbon/Carbon.h (now in macgui.h). | 211 | [MAC_OSX]: Do not include Carbon/Carbon.h (now in macgui.h). |
| 140 | Include QuickTime/QuickTime.h. | 212 | Include QuickTime/QuickTime.h. |
| @@ -145,11 +217,11 @@ | |||
| 145 | (ZPixmap): New #define for compatibility with xfns.c. | 217 | (ZPixmap): New #define for compatibility with xfns.c. |
| 146 | (XGetImage, XPutPixel, XGetPixel, XDestroyImage) | 218 | (XGetImage, XPutPixel, XGetPixel, XDestroyImage) |
| 147 | (x_create_x_image_and_pixmap, x_destroy_x_image, x_put_x_image) | 219 | (x_create_x_image_and_pixmap, x_destroy_x_image, x_put_x_image) |
| 148 | (find_image_fsspec, image_load_qt_1, image_load_quicktime): New | 220 | (find_image_fsspec, image_load_qt_1, image_load_quicktime): |
| 149 | functions. | 221 | New functions. |
| 150 | (four_corners_best, x_create_x_image_and_pixmap) | 222 | (four_corners_best, x_create_x_image_and_pixmap) |
| 151 | (x_destroy_x_image, unwind_create_frame, x_disable_image, | 223 | (x_destroy_x_image, unwind_create_frame, x_disable_image) |
| 152 | (x_edge_detection, init_color_table, colors_in_color_table, | 224 | (x_edge_detection, init_color_table, colors_in_color_table) |
| 153 | (lookup_rgb_color, lookup_pixel_color, postprocess_image) | 225 | (lookup_rgb_color, lookup_pixel_color, postprocess_image) |
| 154 | (x_put_x_image, slurp_file, xbm_scan, xbm_load, xbm_load_image) | 226 | (x_put_x_image, slurp_file, xbm_scan, xbm_load, xbm_load_image) |
| 155 | (xbm_image_p, xbm_read_bitmap_data, xbm_file_p, x_to_xcolors) | 227 | (xbm_image_p, xbm_read_bitmap_data, xbm_file_p, x_to_xcolors) |
| @@ -168,14 +240,13 @@ | |||
| 168 | (enum pbm_keyword_index, pbm_format, enum png_keyword_index) | 240 | (enum pbm_keyword_index, pbm_format, enum png_keyword_index) |
| 169 | (png_format, png_image_p, enum jpeg_keyword_index, jpeg_format) | 241 | (png_format, png_image_p, enum jpeg_keyword_index, jpeg_format) |
| 170 | (jpeg_image_p, enum tiff_keyword_index, tiff_format, tiff_image_p) | 242 | (jpeg_image_p, enum tiff_keyword_index, tiff_format, tiff_image_p) |
| 171 | (enum gif_keyword_index, gif_format, gif_image_p): Sync with | 243 | (enum gif_keyword_index, gif_format, gif_image_p): Sync with xfns.c. |
| 172 | xfns.c. | ||
| 173 | (x_make_gc): Sync with xfns.c. Enclose unused `border_tile' with | 244 | (x_make_gc): Sync with xfns.c. Enclose unused `border_tile' with |
| 174 | #if 0. | 245 | #if 0. |
| 175 | (x_free_gcs): Sync with xfns.c. Enclose unused `border_tile' with | 246 | (x_free_gcs): Sync with xfns.c. Enclose unused `border_tile' with |
| 176 | #if 0. Free white_relief.gc and black_relief.gc. | 247 | #if 0. Free white_relief.gc and black_relief.gc. |
| 177 | (unwind_create_frame, x_emboss, x_laplace, x_edge_detection): New | 248 | (unwind_create_frame, x_emboss, x_laplace, x_edge_detection): |
| 178 | functions (from xfns.c). | 249 | New functions (from xfns.c). |
| 179 | (Fx_create_frame): Record unwind_create_frame. | 250 | (Fx_create_frame): Record unwind_create_frame. |
| 180 | (Fxw_display_color_p): Use dpyinfo->color_p. | 251 | (Fxw_display_color_p): Use dpyinfo->color_p. |
| 181 | (Fx_display_grayscale_p, Fx_display_planes): Don't use | 252 | (Fx_display_grayscale_p, Fx_display_planes): Don't use |
| @@ -187,14 +258,13 @@ | |||
| 187 | (Fimage_size, Fimage_mask_p, four_corners_best, image_background) | 258 | (Fimage_size, Fimage_mask_p, four_corners_best, image_background) |
| 188 | (x_clear_image_1, postprocess_image, slurp_file, xbm_load_image) | 259 | (x_clear_image_1, postprocess_image, slurp_file, xbm_load_image) |
| 189 | (xbm_file_p, x_to_xcolors, x_from_xcolors, x_detect_edges) | 260 | (xbm_file_p, x_to_xcolors, x_from_xcolors, x_detect_edges) |
| 190 | (image_background_transparent): New function (from xfns.c). Use | 261 | (image_background_transparent): New function (from xfns.c). |
| 191 | PIX_MASK_DRAW/PIX_MASK_RETAIN. | 262 | Use PIX_MASK_DRAW/PIX_MASK_RETAIN. |
| 192 | (image_load_quicktime): Add declaration. | 263 | (image_load_quicktime): Add declaration. |
| 193 | [MAC_OSX] (image_load_quartz2d): Likewise. | 264 | [MAC_OSX] (image_load_quartz2d): Likewise. |
| 194 | [MAC_OSX] (CGImageCreateWithPNGDataProviderProcType): New typedef. | 265 | [MAC_OSX] (CGImageCreateWithPNGDataProviderProcType): New typedef. |
| 195 | [MAC_OSX] (MyCGImageCreateWithPNGDataProvider): New variable. | 266 | [MAC_OSX] (MyCGImageCreateWithPNGDataProvider): New variable. |
| 196 | [MAC_OSX] (init_image_func_pointer, image_load_quartz2d): New | 267 | [MAC_OSX] (init_image_func_pointer, image_load_quartz2d): New funs. |
| 197 | functions. | ||
| 198 | (xbm_load_image_from_file, x_laplace_read_row) | 268 | (xbm_load_image_from_file, x_laplace_read_row) |
| 199 | (x_laplace_write_row, pbm_read_file): Remove functions. | 269 | (x_laplace_write_row, pbm_read_file): Remove functions. |
| 200 | [HAVE_XPM] (enum xpm_keyword_index, xpm_format, xpm_image_p) | 270 | [HAVE_XPM] (enum xpm_keyword_index, xpm_format, xpm_image_p) |
| @@ -203,23 +273,22 @@ | |||
| 203 | (lookup_rgb_color): Don't lookup color table. Just do gamma | 273 | (lookup_rgb_color): Don't lookup color table. Just do gamma |
| 204 | correction. | 274 | correction. |
| 205 | (COLOR_INTENSITY): New #define (from xfns.c). | 275 | (COLOR_INTENSITY): New #define (from xfns.c). |
| 206 | (x_disable_image): New function (from xfns.c). Use | 276 | (x_disable_image): New function (from xfns.c). |
| 207 | PIX_MASK_DRAW/PIX_MASK_RETAIN. | 277 | Use PIX_MASK_DRAW/PIX_MASK_RETAIN. |
| 208 | (x_build_heuristic_mask): Sync with xfns.c. Use | 278 | (x_build_heuristic_mask): Sync with xfns.c. |
| 209 | PIX_MASK_DRAW/PIX_MASK_RETAIN. | 279 | Use PIX_MASK_DRAW/PIX_MASK_RETAIN. |
| 210 | (HAVE_PBM): Remove #ifdef. | 280 | (HAVE_PBM): Remove #ifdef. |
| 211 | (pbm_load): Sync with xfns.c. Set img->width and img->height | 281 | (pbm_load): Sync with xfns.c. Set img->width and img->height |
| 212 | before IMAGE_BACKGROUND. | 282 | before IMAGE_BACKGROUND. |
| 213 | (png_image_p, png_load): Don't enclose declarations with #if | 283 | (png_image_p, png_load): Don't enclose declarations with #if HAVE_PNG. |
| 214 | HAVE_PNG. | ||
| 215 | (Qpng, enum png_keyword_index, png_format, png_type, png_image_p): | 284 | (Qpng, enum png_keyword_index, png_format, png_type, png_image_p): |
| 216 | Don't enclose with #if HAVE_PNG. | 285 | Don't enclose with #if HAVE_PNG. |
| 217 | [!HAVE_PNG] (png_load) [MAC_OSX]: Use image_load_quartz2d if a | 286 | [!HAVE_PNG] (png_load) [MAC_OSX]: Use image_load_quartz2d if a |
| 218 | symbol _CGImageCreateWithPNGDataProvider is defined. Otherwise | 287 | symbol _CGImageCreateWithPNGDataProvider is defined. |
| 219 | use image_load_quicktime. | 288 | Otherwise use image_load_quicktime. |
| 220 | [!HAVE_PNG] (png_load) [!MAC_OSX]: Use image_load_quicktime. | 289 | [!HAVE_PNG] (png_load) [!MAC_OSX]: Use image_load_quicktime. |
| 221 | [HAVE_PNG] (png_load): Sync with xfns.c. Use | 290 | [HAVE_PNG] (png_load): Sync with xfns.c. |
| 222 | PIX_MASK_DRAW/PIX_MASK_RETAIN. | 291 | Use PIX_MASK_DRAW/PIX_MASK_RETAIN. |
| 223 | (jpeg_image_p, jpeg_load): Don't enclose declarations with #if | 292 | (jpeg_image_p, jpeg_load): Don't enclose declarations with #if |
| 224 | HAVE_JPEG. | 293 | HAVE_JPEG. |
| 225 | (Qjpeg, enum jpeg_keyword_index, jpeg_format, jpeg_type) | 294 | (Qjpeg, enum jpeg_keyword_index, jpeg_format, jpeg_type) |
| @@ -232,11 +301,10 @@ | |||
| 232 | (Qtiff, enum tiff_keyword_index, tiff_format, tiff_type) | 301 | (Qtiff, enum tiff_keyword_index, tiff_format, tiff_type) |
| 233 | (tiff_image_p): Don't enclose with #if HAVE_TIFF. | 302 | (tiff_image_p): Don't enclose with #if HAVE_TIFF. |
| 234 | [!HAVE_TIFF] (tiff_load): Use image_load_quicktime. | 303 | [!HAVE_TIFF] (tiff_load): Use image_load_quicktime. |
| 235 | [HAVE_TIFF] (tiff_error_handler, tiff_warning_handler): New | 304 | [HAVE_TIFF] (tiff_error_handler, tiff_warning_handler): |
| 236 | functions (from xfns.c). | 305 | New functions (from xfns.c). |
| 237 | [HAVE_TIFF] (tiff_load): Sync with xfns.c. | 306 | [HAVE_TIFF] (tiff_load): Sync with xfns.c. |
| 238 | (gif_image_p, gif_load): Don't enclose declarations with #if | 307 | (gif_image_p, gif_load): Don't enclose declarations with #if HAVE_GIF. |
| 239 | HAVE_GIF. | ||
| 240 | (Qgif, enum gif_keyword_index, gif_format, gif_type, gif_image_p): | 308 | (Qgif, enum gif_keyword_index, gif_format, gif_type, gif_image_p): |
| 241 | Don't enclose with #if HAVE_GIF. | 309 | Don't enclose with #if HAVE_GIF. |
| 242 | [!HAVE_GIF] (gif_load): Use Quicktime Movie Toolbox if it is | 310 | [!HAVE_GIF] (gif_load): Use Quicktime Movie Toolbox if it is |
| @@ -253,12 +321,11 @@ | |||
| 253 | image types. Remove #if HAVE_JPEG, HAVE_TIFF, HAVE_GIF, and | 321 | image types. Remove #if HAVE_JPEG, HAVE_TIFF, HAVE_GIF, and |
| 254 | HAVE_PNG. Add defsubr for Simage_size and Simage_mask_p. | 322 | HAVE_PNG. Add defsubr for Simage_size and Simage_mask_p. |
| 255 | (init_xfns): Remove #if HAVE_JPEG, HAVE_TIFF, HAVE_GIF, and | 323 | (init_xfns): Remove #if HAVE_JPEG, HAVE_TIFF, HAVE_GIF, and |
| 256 | HAVE_PNG. Call EnterMovies to support animated gifs. Call | 324 | HAVE_PNG. Call EnterMovies to support animated gifs. |
| 257 | init_image_func_pointer to bind a symbol | 325 | Call init_image_func_pointer to bind a symbol |
| 258 | _CGImageCreateWithPNGDataProvider if it is defined. | 326 | _CGImageCreateWithPNGDataProvider if it is defined. |
| 259 | 327 | ||
| 260 | * macterm.c [MAC_OSX]: Do not include Carbon/Carbon.h (now in | 328 | * macterm.c [MAC_OSX]: Don't include Carbon/Carbon.h (now in macgui.h). |
| 261 | macgui.h). | ||
| 262 | (x_draw_bar_cursor): Sync declaration with xterm.c. | 329 | (x_draw_bar_cursor): Sync declaration with xterm.c. |
| 263 | (XFreePixmap, mac_draw_rectangle_to_pixmap, mac_copy_area) | 330 | (XFreePixmap, mac_draw_rectangle_to_pixmap, mac_copy_area) |
| 264 | (mac_copy_area_to_pixmap): Implementation with GWorld (offscreen | 331 | (mac_copy_area_to_pixmap): Implementation with GWorld (offscreen |
| @@ -266,16 +333,16 @@ | |||
| 266 | (mac_set_forecolor, mac_set_backcolor): Use RED16_FROM_ULONG etc. | 333 | (mac_set_forecolor, mac_set_backcolor): Use RED16_FROM_ULONG etc. |
| 267 | (mac_draw_line_to_pixmap, XCreatePixmap) | 334 | (mac_draw_line_to_pixmap, XCreatePixmap) |
| 268 | (XCreatePixmapFromBitmapData, mac_fill_rectangle_to_pixmap) | 335 | (XCreatePixmapFromBitmapData, mac_fill_rectangle_to_pixmap) |
| 269 | (mac_copy_area_with_mask, mac_copy_area_with_mask_to_pixmap): New | 336 | (mac_copy_area_with_mask, mac_copy_area_with_mask_to_pixmap): |
| 270 | functions. | 337 | New functions. |
| 271 | (mac_draw_bitmap) [TARGET_API_MAC_CARBON]: Use | 338 | (mac_draw_bitmap) [TARGET_API_MAC_CARBON]: |
| 272 | GetPortBitMapForCopyBits instead of the cast to Bitmap *. Cast | 339 | Use GetPortBitMapForCopyBits instead of the cast to Bitmap *. |
| 273 | bits to char *. | 340 | Cast bits to char *. |
| 274 | (reflect_byte): New function (from w32fns.c). | 341 | (reflect_byte): New function (from w32fns.c). |
| 275 | (mac_create_bitmap_from_bitmap_data): Use it and don't stuff bits | 342 | (mac_create_bitmap_from_bitmap_data): Use it and don't stuff bits |
| 276 | due to byte alignment. | 343 | due to byte alignment. |
| 277 | (mac_scroll_area) [TARGET_API_MAC_CARBON]: Use | 344 | (mac_scroll_area) [TARGET_API_MAC_CARBON]: |
| 278 | GetPortBitMapForCopyBits instead of the cast to Bitmap *. | 345 | Use GetPortBitMapForCopyBits instead of the cast to Bitmap *. |
| 279 | (XSetForeground): Remove static (now used in macfns.c). | 346 | (XSetForeground): Remove static (now used in macfns.c). |
| 280 | (HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New #define (from w32term.c). | 347 | (HIGHLIGHT_COLOR_DARK_BOOST_LIMIT): New #define (from w32term.c). |
| 281 | (mac_alloc_lighter_color, x_destroy_window): Sync with w32term.c. | 348 | (mac_alloc_lighter_color, x_destroy_window): Sync with w32term.c. |
| @@ -293,18 +360,16 @@ | |||
| 293 | (x_free_frame_resources): New funcion (from xterm.c). | 360 | (x_free_frame_resources): New funcion (from xterm.c). |
| 294 | (XTread_socket): Call handle_tool_bar_click if mouse up/down event | 361 | (XTread_socket): Call handle_tool_bar_click if mouse up/down event |
| 295 | occurs in tool bar area. | 362 | occurs in tool bar area. |
| 296 | (mac_initialize_display_info): Remove dpyinfo->n_cbits. Set | 363 | (mac_initialize_display_info): Remove dpyinfo->n_cbits. |
| 297 | dpyinfo->color_p. Determine dpyinfo->n_planes using HasDepth. | 364 | Set dpyinfo->color_p. Determine dpyinfo->n_planes using HasDepth. |
| 298 | Initialize image cache. | 365 | Initialize image cache. |
| 299 | (stricmp, wildstrieq, mac_font_pattern_match, mac_font_match): | 366 | (stricmp, wildstrieq, mac_font_pattern_match, mac_font_match): |
| 300 | Enclose unused functions with #if 0. | 367 | Enclose unused functions with #if 0. |
| 301 | (Qbig5, Qcn_gb, Qsjis, Qeuc_kr): New variables. | 368 | (Qbig5, Qcn_gb, Qsjis, Qeuc_kr): New variables. |
| 302 | (decode_mac_font_name): New function to apply code conversions | 369 | (decode_mac_font_name): New function to apply code conversions |
| 303 | from a mac font name to an XLFD font name according to its script | 370 | from a mac font name to an XLFD font name according to its script code. |
| 304 | code. | ||
| 305 | (x_font_name_to_mac_font_name): Apply code conversion from an XLFD | 371 | (x_font_name_to_mac_font_name): Apply code conversion from an XLFD |
| 306 | font name to a mac font name according to REGISTRY and ENCODING | 372 | font name to a mac font name according to REGISTRY and ENCODING fields. |
| 307 | fields. | ||
| 308 | (init_font_name_table) [TARGET_API_MAC_CARBON]: Don't use a font | 373 | (init_font_name_table) [TARGET_API_MAC_CARBON]: Don't use a font |
| 309 | whose name starts with `.'. | 374 | whose name starts with `.'. |
| 310 | (init_font_name_table): Use decode_mac_font_name. Add both | 375 | (init_font_name_table): Use decode_mac_font_name. Add both |
| @@ -345,7 +410,7 @@ | |||
| 345 | * xfns.c (lookup_image): Remove xassert(!interrupt_input_blocked); | 410 | * xfns.c (lookup_image): Remove xassert(!interrupt_input_blocked); |
| 346 | BLOCK_INPUT can be nested, so it doesn't make much sense. | 411 | BLOCK_INPUT can be nested, so it doesn't make much sense. |
| 347 | 412 | ||
| 348 | 2004-02-24 Michael Mauger <mmaug@yahoo.com> | 413 | 2004-02-24 Michael Mauger <mmaug@yahoo.com> |
| 349 | 414 | ||
| 350 | * w32fns.c (slurp_file, xbm_scan, xbm_load_image) | 415 | * w32fns.c (slurp_file, xbm_scan, xbm_load_image) |
| 351 | (xbm_read_bitmap_data): Use unsigned char for image data. | 416 | (xbm_read_bitmap_data): Use unsigned char for image data. |
| @@ -363,8 +428,8 @@ | |||
| 363 | 428 | ||
| 364 | * emacs.c (USAGE1): Split into two halves. | 429 | * emacs.c (USAGE1): Split into two halves. |
| 365 | (USAGE2): Second half of the old USAGE1. | 430 | (USAGE2): Second half of the old USAGE1. |
| 366 | (USAGE3): Renamed from USAGE2. | 431 | (USAGE3): Rename from USAGE2. |
| 367 | (USAGE4): Renamed from USAGE3. | 432 | (USAGE4): Rename from USAGE3. |
| 368 | 433 | ||
| 369 | 2004-02-21 Juri Linkov <juri@jurta.org> | 434 | 2004-02-21 Juri Linkov <juri@jurta.org> |
| 370 | 435 | ||
| @@ -387,8 +452,8 @@ | |||
| 387 | in one call to read_socket_hook. Value is 8. | 452 | in one call to read_socket_hook. Value is 8. |
| 388 | (read_avail_input): Separate and rework handling of read_socket_hook | 453 | (read_avail_input): Separate and rework handling of read_socket_hook |
| 389 | and non-read_socket_hook cases. Use smaller input_event buffer | 454 | and non-read_socket_hook cases. Use smaller input_event buffer |
| 390 | in read_socket_hook case, and repeat if full buffer is read. Use | 455 | in read_socket_hook case, and repeat if full buffer is read. |
| 391 | new local variable 'discard' to skip input after C-g. | 456 | Use new local variable 'discard' to skip input after C-g. |
| 392 | In non-read_socket_hook case, just use a single input_event, and | 457 | In non-read_socket_hook case, just use a single input_event, and |
| 393 | call kbd_buffer_store_event on the fly for each character. | 458 | call kbd_buffer_store_event on the fly for each character. |
| 394 | 459 | ||
| @@ -595,7 +660,7 @@ | |||
| 595 | Add prototypes. | 660 | Add prototypes. |
| 596 | 661 | ||
| 597 | * macterm.c (mac_draw_bitmap): Add overlay_p arg. | 662 | * macterm.c (mac_draw_bitmap): Add overlay_p arg. |
| 598 | (x_draw_fringe_bitmap): Handle overlayed fringe bitmaps; | 663 | (x_draw_fringe_bitmap): Handle overlayed fringe bitmaps; |
| 599 | thanks to YAMAMOTO Mitsuharu for advice on how to do this. | 664 | thanks to YAMAMOTO Mitsuharu for advice on how to do this. |
| 600 | Use cursor color for displaying cursor in fringe. | 665 | Use cursor color for displaying cursor in fringe. |
| 601 | (x_redisplay_interface): Add null handlers for | 666 | (x_redisplay_interface): Add null handlers for |
| @@ -756,7 +821,7 @@ | |||
| 756 | 821 | ||
| 757 | * makefile.w32-in, w32fns.c: Add `default-printer-name' function. | 822 | * makefile.w32-in, w32fns.c: Add `default-printer-name' function. |
| 758 | 823 | ||
| 759 | 2004-01-27 Steven Tamm <steventamm@mac.com> | 824 | 2004-01-27 Steven Tamm <steventamm@mac.com> |
| 760 | 825 | ||
| 761 | * unexmacosx.c (unexec_copy): Do not copy more than was | 826 | * unexmacosx.c (unexec_copy): Do not copy more than was |
| 762 | requested to prevent overwriting during unexec. | 827 | requested to prevent overwriting during unexec. |
| @@ -767,7 +832,7 @@ | |||
| 767 | 832 | ||
| 768 | * process.h: Add extern to synch_process_termsig. | 833 | * process.h: Add extern to synch_process_termsig. |
| 769 | 834 | ||
| 770 | 2004-01-27 Steven Tamm <steventamm@mac.com> | 835 | 2004-01-27 Steven Tamm <steventamm@mac.com> |
| 771 | 836 | ||
| 772 | * macterm.c (make_mac_frame, make_mac_terminal_frame): | 837 | * macterm.c (make_mac_frame, make_mac_terminal_frame): |
| 773 | Move setting of scroll bars from make_mac_frame to | 838 | Move setting of scroll bars from make_mac_frame to |
| @@ -884,7 +949,7 @@ | |||
| 884 | 949 | ||
| 885 | * buffer.h (struct buffer): New member indicate_buffer_boundaries. | 950 | * buffer.h (struct buffer): New member indicate_buffer_boundaries. |
| 886 | 951 | ||
| 887 | * buffer.c (init_buffer_once): Set buffer_defaults and | 952 | * buffer.c (init_buffer_once): Set buffer_defaults and |
| 888 | buffer_local_flags for indicate_buffer_boundaries. | 953 | buffer_local_flags for indicate_buffer_boundaries. |
| 889 | (syms_of_buffer): Defvar_per_buffer it, and defvar_lisp_nopro | 954 | (syms_of_buffer): Defvar_per_buffer it, and defvar_lisp_nopro |
| 890 | default- variable for it. | 955 | default- variable for it. |
| @@ -1095,7 +1160,7 @@ | |||
| 1095 | to the definition of `signal' in the Elisp manual. | 1160 | to the definition of `signal' in the Elisp manual. |
| 1096 | * eval.c (Fsignal): Ditto. | 1161 | * eval.c (Fsignal): Ditto. |
| 1097 | 1162 | ||
| 1098 | 2003-12-29 James Clark <jjc@jclark.com> (tiny change) | 1163 | 2003-12-29 James Clark <jjc@jclark.com> (tiny change) |
| 1099 | 1164 | ||
| 1100 | * fns.c (internal_equal): Return t for two NaN arguments. | 1165 | * fns.c (internal_equal): Return t for two NaN arguments. |
| 1101 | 1166 | ||
| @@ -1221,7 +1286,7 @@ | |||
| 1221 | 1286 | ||
| 1222 | * minibuf.c (Fcompleting_read): Undo previous change. | 1287 | * minibuf.c (Fcompleting_read): Undo previous change. |
| 1223 | 1288 | ||
| 1224 | 2003-12-25 Lars Hansen <larsh@math.ku.dk> | 1289 | 2003-12-25 Lars Hansen <larsh@math.ku.dk> |
| 1225 | 1290 | ||
| 1226 | * dired.c (Fdirectory_files, Fdirectory_files_and_attributes): | 1291 | * dired.c (Fdirectory_files, Fdirectory_files_and_attributes): |
| 1227 | Arguments GCPRO'ed in call to file name handler. | 1292 | Arguments GCPRO'ed in call to file name handler. |
| @@ -1410,7 +1475,7 @@ | |||
| 1410 | * xdisp.c (note_mode_line_or_margin_highlight): Adapt to new | 1475 | * xdisp.c (note_mode_line_or_margin_highlight): Adapt to new |
| 1411 | mode_line_string and marginal_area_string parameters. | 1476 | mode_line_string and marginal_area_string parameters. |
| 1412 | 1477 | ||
| 1413 | 2003-11-22 Lars Hansen <larsh@math.ku.dk> | 1478 | 2003-11-22 Lars Hansen <larsh@math.ku.dk> |
| 1414 | 1479 | ||
| 1415 | * w32.c (struct the_group, getgrgid): Add. | 1480 | * w32.c (struct the_group, getgrgid): Add. |
| 1416 | * mac.c (struct my_group, getgrgid): Add. | 1481 | * mac.c (struct my_group, getgrgid): Add. |
| @@ -1504,7 +1569,7 @@ | |||
| 1504 | * frame.c (store_frame_param): | 1569 | * frame.c (store_frame_param): |
| 1505 | * fontset.c (Fset_fontset_font): | 1570 | * fontset.c (Fset_fontset_font): |
| 1506 | * emacs.c (shut_down_emacs): | 1571 | * emacs.c (shut_down_emacs): |
| 1507 | * ccl.c (ccl_driver): Remove period at end of error message. | 1572 | * ccl.c (ccl_driver): Remove period at end of error message. |
| 1508 | 1573 | ||
| 1509 | * config.in: Regenerate. | 1574 | * config.in: Regenerate. |
| 1510 | 1575 | ||
| @@ -1809,7 +1874,7 @@ | |||
| 1809 | Set BUF_INTERVALS (buffer)->up_obj when appropriate. | 1874 | Set BUF_INTERVALS (buffer)->up_obj when appropriate. |
| 1810 | Handle over_used when splitting UNDER. | 1875 | Handle over_used when splitting UNDER. |
| 1811 | 1876 | ||
| 1812 | 2003-09-30 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | 1877 | 2003-09-30 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> |
| 1813 | 1878 | ||
| 1814 | * regex.c (regex_compile): Free the stack when returning from function. | 1879 | * regex.c (regex_compile): Free the stack when returning from function. |
| 1815 | 1880 | ||
| @@ -2064,7 +2129,7 @@ | |||
| 2064 | 2129 | ||
| 2065 | * w32term.c (w32_read_socket): Fix WM_MOUSEWHEEL assignment. | 2130 | * w32term.c (w32_read_socket): Fix WM_MOUSEWHEEL assignment. |
| 2066 | 2131 | ||
| 2067 | 2003-08-26 Terje Rosten <terjeros@phys.ntnu.no> | 2132 | 2003-08-26 Terje Rosten <terjeros@phys.ntnu.no> |
| 2068 | 2133 | ||
| 2069 | * xfns.c (Vgtk_version_string): New variable. | 2134 | * xfns.c (Vgtk_version_string): New variable. |
| 2070 | (syms_of_xfns): DEFVAR_LISP it. Provide gtk. | 2135 | (syms_of_xfns): DEFVAR_LISP it. Provide gtk. |
| @@ -3358,11 +3423,11 @@ | |||
| 3358 | (draw_fringe_bitmap): Rework to handle per-window fringes and new | 3423 | (draw_fringe_bitmap): Rework to handle per-window fringes and new |
| 3359 | fringe vs. display margin position. | 3424 | fringe vs. display margin position. |
| 3360 | (hscroll_window_tree): Use window_box_width instead of window_box. | 3425 | (hscroll_window_tree): Use window_box_width instead of window_box. |
| 3361 | (redisplay_window): Adapt to per-window scroll bars. | 3426 | (redisplay_window): Adapt to per-window scroll bars. |
| 3362 | (draw_glyphs): Rework to handle per-window fringes and scroll | 3427 | (draw_glyphs): Rework to handle per-window fringes and scroll |
| 3363 | bars, and new fringe vs. display margin position. | 3428 | bars, and new fringe vs. display margin position. |
| 3364 | Use WINDOW_LEFT_EDGE_X, WINDOW_TOTAL_WIDTH, and window_box_left. | 3429 | Use WINDOW_LEFT_EDGE_X, WINDOW_TOTAL_WIDTH, and window_box_left. |
| 3365 | (x_clear_end_of_line): Adapt to per-window fringes and scroll | 3430 | (x_clear_end_of_line): Adapt to per-window fringes and scroll |
| 3366 | bars, and new fringe vs. display margin position. Fix bug which | 3431 | bars, and new fringe vs. display margin position. Fix bug which |
| 3367 | increased total width of full_width rows by width of scroll bars | 3432 | increased total width of full_width rows by width of scroll bars |
| 3368 | although window's total width already includes that. | 3433 | although window's total width already includes that. |
| @@ -4429,7 +4494,7 @@ | |||
| 4429 | (w32_draw_window_cursor): New W32-specific functions for RIF. | 4494 | (w32_draw_window_cursor): New W32-specific functions for RIF. |
| 4430 | (w32_redisplay_interface): Add new members. | 4495 | (w32_redisplay_interface): Add new members. |
| 4431 | 4496 | ||
| 4432 | * w32gui.h (No_Cursor): Define as 0 for W32. | 4497 | * w32gui.h (No_Cursor): Define as 0 for W32. |
| 4433 | (XRectangle): Add X compatible rectangle type. | 4498 | (XRectangle): Add X compatible rectangle type. |
| 4434 | (NativeRectangle): Declare as RECT for W32. | 4499 | (NativeRectangle): Declare as RECT for W32. |
| 4435 | (CONVERT_TO_XRECT, CONVERT_FROM_XRECT, STORE_NATIVE_RECT): New macros. | 4500 | (CONVERT_TO_XRECT, CONVERT_FROM_XRECT, STORE_NATIVE_RECT): New macros. |
| @@ -5517,7 +5582,7 @@ | |||
| 5517 | 5582 | ||
| 5518 | * lisp.h: Declare Vx_resource_name extern. | 5583 | * lisp.h: Declare Vx_resource_name extern. |
| 5519 | 5584 | ||
| 5520 | * keyboard.c (kbd_buffer_get_event): Check MENU_BAR_ACTIVATE_EVENT | 5585 | * keyboard.c (kbd_buffer_get_event): Check MENU_BAR_ACTIVATE_EVENT |
| 5521 | for USE_GTK. | 5586 | for USE_GTK. |
| 5522 | (make_lispy_event): Check MENU_BAR_EVENT for USE_GTK. | 5587 | (make_lispy_event): Check MENU_BAR_EVENT for USE_GTK. |
| 5523 | 5588 | ||
| @@ -5904,12 +5969,12 @@ | |||
| 5904 | Its primary purpose at this time is to initialize the global variable | 5969 | Its primary purpose at this time is to initialize the global variable |
| 5905 | track_mouse_event_fn. | 5970 | track_mouse_event_fn. |
| 5906 | 5971 | ||
| 5907 | * w32fns.c (w32_wnd_proc): Remove initialization of | 5972 | * w32fns.c (w32_wnd_proc): Remove initialization of |
| 5908 | track_mouse_event_fn from the handler for the WM_SETFOCUS message. | 5973 | track_mouse_event_fn from the handler for the WM_SETFOCUS message. |
| 5909 | 5974 | ||
| 5910 | * w32fns.c (syms_of_w32fns): Call globals_of_w32fns. | 5975 | * w32fns.c (syms_of_w32fns): Call globals_of_w32fns. |
| 5911 | 5976 | ||
| 5912 | * w32menu.c (globals_of_w32menu): New function. Used to | 5977 | * w32menu.c (globals_of_w32menu): New function. Used to |
| 5913 | initialize those global variables that must always be initialized | 5978 | initialize those global variables that must always be initialized |
| 5914 | on startup even when the global variable initialized is non zero. | 5979 | on startup even when the global variable initialized is non zero. |
| 5915 | Its primary purpose at this time is to initialize the global | 5980 | Its primary purpose at this time is to initialize the global |
| @@ -11096,7 +11161,7 @@ | |||
| 11096 | 11161 | ||
| 11097 | 2001-12-03 Pavel Jan,Am(Bk <Pavel@Janik.cz> | 11162 | 2001-12-03 Pavel Jan,Am(Bk <Pavel@Janik.cz> |
| 11098 | 11163 | ||
| 11099 | * xdisp.c (syms_of_xdisp): Make `tool-bar-button-relief` an option. | 11164 | * xdisp.c (syms_of_xdisp): Make `tool-bar-button-relief' an option. |
| 11100 | 11165 | ||
| 11101 | 2001-12-02 Pavel Jan,Am(Bk <Pavel@Janik.cz> | 11166 | 2001-12-02 Pavel Jan,Am(Bk <Pavel@Janik.cz> |
| 11102 | 11167 | ||
diff --git a/src/buffer.c b/src/buffer.c index ad1dde93da7..27b12845c50 100644 --- a/src/buffer.c +++ b/src/buffer.c | |||
| @@ -1675,8 +1675,9 @@ DEFUN ("pop-to-buffer", Fpop_to_buffer, Spop_to_buffer, 1, 3, 0, | |||
| 1675 | doc: /* Select buffer BUFFER in some window, preferably a different one. | 1675 | doc: /* Select buffer BUFFER in some window, preferably a different one. |
| 1676 | If BUFFER is nil, then some other buffer is chosen. | 1676 | If BUFFER is nil, then some other buffer is chosen. |
| 1677 | If `pop-up-windows' is non-nil, windows can be split to do this. | 1677 | If `pop-up-windows' is non-nil, windows can be split to do this. |
| 1678 | If optional second arg OTHER-WINDOW is non-nil, insist on finding another | 1678 | If optional second arg OTHER-WINDOW is nil, insist on finding another |
| 1679 | window even if BUFFER is already visible in the selected window. | 1679 | window even if BUFFER is already visible in the selected window, |
| 1680 | and ignore `same-window-regexps' and `same-window-buffer-names'. | ||
| 1680 | This uses the function `display-buffer' as a subroutine; see the documentation | 1681 | This uses the function `display-buffer' as a subroutine; see the documentation |
| 1681 | of `display-buffer' for additional customization information. | 1682 | of `display-buffer' for additional customization information. |
| 1682 | 1683 | ||
| @@ -821,7 +821,7 @@ thus, \\=\\=\\=\\= puts \\=\\= into the output, and \\=\\=\\=\\[ puts \\=\\[ int | |||
| 821 | start = strp; | 821 | start = strp; |
| 822 | start_idx = start - SDATA (string); | 822 | start_idx = start - SDATA (string); |
| 823 | 823 | ||
| 824 | while ((strp - SDATA (string) < SCHARS (string)) | 824 | while ((strp - SDATA (string) < SBYTES (string)) |
| 825 | && *strp != '}' && *strp != '>') | 825 | && *strp != '}' && *strp != '>') |
| 826 | strp++; | 826 | strp++; |
| 827 | 827 | ||
diff --git a/src/editfns.c b/src/editfns.c index 9a1ce81f316..51435af0bb2 100644 --- a/src/editfns.c +++ b/src/editfns.c | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* Lisp functions pertaining to editing. | 1 | /* Lisp functions pertaining to editing. |
| 2 | Copyright (C) 1985,86,87,89,93,94,95,96,97,98, 1999, 2000, 2001, 02, 2003 | 2 | Copyright (C) 1985,86,87,89,93,94,95,96,97,98,1999,2000,01,02,03,2004 |
| 3 | Free Software Foundation, Inc. | 3 | Free Software Foundation, Inc. |
| 4 | 4 | ||
| 5 | This file is part of GNU Emacs. | 5 | This file is part of GNU Emacs. |
| @@ -2741,85 +2741,84 @@ DEFUN ("translate-region", Ftranslate_region, Stranslate_region, 3, 3, 0, | |||
| 2741 | doc: /* From START to END, translate characters according to TABLE. | 2741 | doc: /* From START to END, translate characters according to TABLE. |
| 2742 | TABLE is a string; the Nth character in it is the mapping | 2742 | TABLE is a string; the Nth character in it is the mapping |
| 2743 | for the character with code N. | 2743 | for the character with code N. |
| 2744 | This function does not alter multibyte characters. | ||
| 2745 | It returns the number of characters changed. */) | 2744 | It returns the number of characters changed. */) |
| 2746 | (start, end, table) | 2745 | (start, end, table) |
| 2747 | Lisp_Object start; | 2746 | Lisp_Object start; |
| 2748 | Lisp_Object end; | 2747 | Lisp_Object end; |
| 2749 | register Lisp_Object table; | 2748 | register Lisp_Object table; |
| 2750 | { | 2749 | { |
| 2751 | register int pos_byte, stop; /* Limits of the region. */ | ||
| 2752 | register unsigned char *tt; /* Trans table. */ | 2750 | register unsigned char *tt; /* Trans table. */ |
| 2753 | register int nc; /* New character. */ | 2751 | register int nc; /* New character. */ |
| 2754 | int cnt; /* Number of changes made. */ | 2752 | int cnt; /* Number of changes made. */ |
| 2755 | int size; /* Size of translate table. */ | 2753 | int size; /* Size of translate table. */ |
| 2756 | int pos; | 2754 | int pos, pos_byte; |
| 2757 | int multibyte = !NILP (current_buffer->enable_multibyte_characters); | 2755 | int multibyte = !NILP (current_buffer->enable_multibyte_characters); |
| 2756 | int string_multibyte; | ||
| 2758 | 2757 | ||
| 2759 | validate_region (&start, &end); | 2758 | validate_region (&start, &end); |
| 2760 | CHECK_STRING (table); | 2759 | CHECK_STRING (table); |
| 2761 | 2760 | ||
| 2762 | size = SBYTES (table); | 2761 | if (multibyte != (SCHARS (table) < SBYTES (table))) |
| 2762 | table = (multibyte | ||
| 2763 | ? string_make_multibyte (table) | ||
| 2764 | : string_make_unibyte (table)); | ||
| 2765 | string_multibyte = SCHARS (table) < SBYTES (table); | ||
| 2766 | |||
| 2767 | size = SCHARS (table); | ||
| 2763 | tt = SDATA (table); | 2768 | tt = SDATA (table); |
| 2764 | 2769 | ||
| 2765 | pos_byte = CHAR_TO_BYTE (XINT (start)); | ||
| 2766 | stop = CHAR_TO_BYTE (XINT (end)); | ||
| 2767 | modify_region (current_buffer, XINT (start), XINT (end)); | ||
| 2768 | pos = XINT (start); | 2770 | pos = XINT (start); |
| 2771 | pos_byte = CHAR_TO_BYTE (pos); | ||
| 2772 | modify_region (current_buffer, pos, XINT (end)); | ||
| 2769 | 2773 | ||
| 2770 | cnt = 0; | 2774 | cnt = 0; |
| 2771 | for (; pos_byte < stop; ) | 2775 | for (; pos < XINT (end); ) |
| 2772 | { | 2776 | { |
| 2773 | register unsigned char *p = BYTE_POS_ADDR (pos_byte); | 2777 | register unsigned char *p = BYTE_POS_ADDR (pos_byte); |
| 2774 | int len; | 2778 | unsigned char *str; |
| 2779 | int len, str_len; | ||
| 2775 | int oc; | 2780 | int oc; |
| 2776 | int pos_byte_next; | ||
| 2777 | 2781 | ||
| 2778 | if (multibyte) | 2782 | if (multibyte) |
| 2779 | oc = STRING_CHAR_AND_LENGTH (p, stop - pos_byte, len); | 2783 | oc = STRING_CHAR_AND_LENGTH (p, MAX_MULTIBYTE_LENGTH, len); |
| 2780 | else | 2784 | else |
| 2781 | oc = *p, len = 1; | 2785 | oc = *p, len = 1; |
| 2782 | pos_byte_next = pos_byte + len; | 2786 | if (oc < size) |
| 2783 | if (oc < size && len == 1) | ||
| 2784 | { | 2787 | { |
| 2785 | nc = tt[oc]; | 2788 | if (string_multibyte) |
| 2789 | { | ||
| 2790 | str = tt + string_char_to_byte (table, oc); | ||
| 2791 | nc = STRING_CHAR_AND_LENGTH (str, MAX_MULTIBYTE_LENGTH, str_len); | ||
| 2792 | } | ||
| 2793 | else | ||
| 2794 | { | ||
| 2795 | str = tt + oc; | ||
| 2796 | nc = tt[oc], str_len = 1; | ||
| 2797 | } | ||
| 2786 | if (nc != oc) | 2798 | if (nc != oc) |
| 2787 | { | 2799 | { |
| 2788 | /* Take care of the case where the new character | 2800 | if (len != str_len) |
| 2789 | combines with neighboring bytes. */ | ||
| 2790 | if (!ASCII_BYTE_P (nc) | ||
| 2791 | && (CHAR_HEAD_P (nc) | ||
| 2792 | ? ! CHAR_HEAD_P (FETCH_BYTE (pos_byte + 1)) | ||
| 2793 | : (pos_byte > BEG_BYTE | ||
| 2794 | && ! ASCII_BYTE_P (FETCH_BYTE (pos_byte - 1))))) | ||
| 2795 | { | 2801 | { |
| 2796 | Lisp_Object string; | 2802 | Lisp_Object string; |
| 2797 | 2803 | ||
| 2798 | string = make_multibyte_string (tt + oc, 1, 1); | ||
| 2799 | /* This is less efficient, because it moves the gap, | 2804 | /* This is less efficient, because it moves the gap, |
| 2800 | but it handles combining correctly. */ | 2805 | but it should multibyte characters correctly. */ |
| 2801 | replace_range (pos, pos + 1, string, | 2806 | string = make_multibyte_string (str, 1, str_len); |
| 2802 | 1, 0, 1); | 2807 | replace_range (pos, pos + 1, string, 1, 0, 1); |
| 2803 | pos_byte_next = CHAR_TO_BYTE (pos); | 2808 | len = str_len; |
| 2804 | if (pos_byte_next > pos_byte) | ||
| 2805 | /* Before combining happened. We should not | ||
| 2806 | increment POS. So, to cancel the later | ||
| 2807 | increment of POS, we decrease it now. */ | ||
| 2808 | pos--; | ||
| 2809 | else | ||
| 2810 | INC_POS (pos_byte_next); | ||
| 2811 | } | 2809 | } |
| 2812 | else | 2810 | else |
| 2813 | { | 2811 | { |
| 2814 | record_change (pos, 1); | 2812 | record_change (pos, 1); |
| 2815 | *p = nc; | 2813 | while (str_len-- > 0) |
| 2814 | *p++ = *str++; | ||
| 2816 | signal_after_change (pos, 1, 1); | 2815 | signal_after_change (pos, 1, 1); |
| 2817 | update_compositions (pos, pos + 1, CHECK_BORDER); | 2816 | update_compositions (pos, pos + 1, CHECK_BORDER); |
| 2818 | } | 2817 | } |
| 2819 | ++cnt; | 2818 | ++cnt; |
| 2820 | } | 2819 | } |
| 2821 | } | 2820 | } |
| 2822 | pos_byte = pos_byte_next; | 2821 | pos_byte += len; |
| 2823 | pos++; | 2822 | pos++; |
| 2824 | } | 2823 | } |
| 2825 | 2824 | ||
diff --git a/src/fringe.c b/src/fringe.c index b14668e8d7e..48a644707c6 100644 --- a/src/fringe.c +++ b/src/fringe.c | |||
| @@ -637,7 +637,10 @@ draw_fringe_bitmap (w, row, left_p) | |||
| 637 | draw_fringe_bitmap_1 (w, row, left_p, overlay, NO_FRINGE_BITMAP); | 637 | draw_fringe_bitmap_1 (w, row, left_p, overlay, NO_FRINGE_BITMAP); |
| 638 | 638 | ||
| 639 | if (left_p && row->overlay_arrow_p) | 639 | if (left_p && row->overlay_arrow_p) |
| 640 | draw_fringe_bitmap_1 (w, row, 1, 1, OVERLAY_ARROW_BITMAP); | 640 | draw_fringe_bitmap_1 (w, row, 1, 1, |
| 641 | (w->overlay_arrow_bitmap | ||
| 642 | ? w->overlay_arrow_bitmap | ||
| 643 | : OVERLAY_ARROW_BITMAP)); | ||
| 641 | } | 644 | } |
| 642 | 645 | ||
| 643 | 646 | ||
| @@ -738,7 +741,7 @@ update_window_fringes (w, force_p) | |||
| 738 | { | 741 | { |
| 739 | unsigned indicate_bob_p, indicate_top_line_p; | 742 | unsigned indicate_bob_p, indicate_top_line_p; |
| 740 | unsigned indicate_eob_p, indicate_bottom_line_p; | 743 | unsigned indicate_eob_p, indicate_bottom_line_p; |
| 741 | 744 | ||
| 742 | row = w->desired_matrix->rows + rn; | 745 | row = w->desired_matrix->rows + rn; |
| 743 | if (!row->enabled_p) | 746 | if (!row->enabled_p) |
| 744 | row = w->current_matrix->rows + rn; | 747 | row = w->current_matrix->rows + rn; |
| @@ -747,7 +750,7 @@ update_window_fringes (w, force_p) | |||
| 747 | indicate_top_line_p = row->indicate_top_line_p; | 750 | indicate_top_line_p = row->indicate_top_line_p; |
| 748 | indicate_eob_p = row->indicate_eob_p; | 751 | indicate_eob_p = row->indicate_eob_p; |
| 749 | indicate_bottom_line_p = row->indicate_bottom_line_p; | 752 | indicate_bottom_line_p = row->indicate_bottom_line_p; |
| 750 | 753 | ||
| 751 | row->indicate_bob_p = row->indicate_top_line_p = 0; | 754 | row->indicate_bob_p = row->indicate_top_line_p = 0; |
| 752 | row->indicate_eob_p = row->indicate_bottom_line_p = 0; | 755 | row->indicate_eob_p = row->indicate_bottom_line_p = 0; |
| 753 | 756 | ||
| @@ -800,10 +803,6 @@ update_window_fringes (w, force_p) | |||
| 800 | left = row->left_user_fringe_bitmap; | 803 | left = row->left_user_fringe_bitmap; |
| 801 | left_face_id = row->left_user_fringe_face_id; | 804 | left_face_id = row->left_user_fringe_face_id; |
| 802 | } | 805 | } |
| 803 | #if 0 /* this is now done via an overlay */ | ||
| 804 | else if (row->overlay_arrow_p) | ||
| 805 | left = OVERLAY_ARROW_BITMAP; | ||
| 806 | #endif | ||
| 807 | else if (row->indicate_bob_p && boundary_pos <= 0) | 806 | else if (row->indicate_bob_p && boundary_pos <= 0) |
| 808 | left = ((row->indicate_eob_p && boundary_pos < 0) | 807 | left = ((row->indicate_eob_p && boundary_pos < 0) |
| 809 | ? LEFT_BRACKET_BITMAP : TOP_LEFT_ANGLE_BITMAP); | 808 | ? LEFT_BRACKET_BITMAP : TOP_LEFT_ANGLE_BITMAP); |
| @@ -882,7 +881,7 @@ update_window_fringes (w, force_p) | |||
| 882 | } | 881 | } |
| 883 | 882 | ||
| 884 | 883 | ||
| 885 | /* Compute actual fringe widths for frame F. | 884 | /* Compute actual fringe widths for frame F. |
| 886 | 885 | ||
| 887 | If REDRAW is 1, redraw F if the fringe settings was actually | 886 | If REDRAW is 1, redraw F if the fringe settings was actually |
| 888 | modified and F is visible. | 887 | modified and F is visible. |
| @@ -1099,7 +1098,7 @@ DEFUN ("define-fringe-bitmap", Fdefine_fringe_bitmap, Sdefine_fringe_bitmap, | |||
| 1099 | BITS is either a string or a vector of integers. | 1098 | BITS is either a string or a vector of integers. |
| 1100 | HEIGHT is height of bitmap. If HEIGHT is nil, use length of BITS. | 1099 | HEIGHT is height of bitmap. If HEIGHT is nil, use length of BITS. |
| 1101 | WIDTH must be an integer between 1 and 16, or nil which defaults to 8. | 1100 | WIDTH must be an integer between 1 and 16, or nil which defaults to 8. |
| 1102 | Optional forth arg ALIGN may be one of `top', `center', or `bottom', | 1101 | Optional fourth arg ALIGN may be one of `top', `center', or `bottom', |
| 1103 | indicating the positioning of the bitmap relative to the rows where it | 1102 | indicating the positioning of the bitmap relative to the rows where it |
| 1104 | is used; the default is to center the bitmap. Fourth arg may also be a | 1103 | is used; the default is to center the bitmap. Fourth arg may also be a |
| 1105 | list (ALIGN PERIODIC) where PERIODIC non-nil specifies that the bitmap | 1104 | list (ALIGN PERIODIC) where PERIODIC non-nil specifies that the bitmap |
| @@ -1133,7 +1132,7 @@ Return new bitmap number, or nil of no more free bitmap slots. */) | |||
| 1133 | fill2 = fb.height - h - fill1; | 1132 | fill2 = fb.height - h - fill1; |
| 1134 | } | 1133 | } |
| 1135 | } | 1134 | } |
| 1136 | 1135 | ||
| 1137 | if (NILP (width)) | 1136 | if (NILP (width)) |
| 1138 | fb.width = 8; | 1137 | fb.width = 8; |
| 1139 | else | 1138 | else |
| @@ -1220,7 +1219,7 @@ Return new bitmap number, or nil of no more free bitmap slots. */) | |||
| 1220 | 1219 | ||
| 1221 | DEFUN ("set-fringe-bitmap-face", Fset_fringe_bitmap_face, Sset_fringe_bitmap_face, | 1220 | DEFUN ("set-fringe-bitmap-face", Fset_fringe_bitmap_face, Sset_fringe_bitmap_face, |
| 1222 | 1, 2, 0, | 1221 | 1, 2, 0, |
| 1223 | doc: /* Set face for fringe bitmap FRINGE-ID to FACE. | 1222 | doc: /* Set face for fringe bitmap FRINGE-ID to FACE. |
| 1224 | If FACE is nil, reset face to default fringe face. */) | 1223 | If FACE is nil, reset face to default fringe face. */) |
| 1225 | (fringe_id, face) | 1224 | (fringe_id, face) |
| 1226 | Lisp_Object fringe_id, face; | 1225 | Lisp_Object fringe_id, face; |
| @@ -1247,7 +1246,7 @@ If FACE is nil, reset face to default fringe face. */) | |||
| 1247 | 1246 | ||
| 1248 | DEFUN ("fringe-bitmaps-at-pos", Ffringe_bitmaps_at_pos, Sfringe_bitmaps_at_pos, | 1247 | DEFUN ("fringe-bitmaps-at-pos", Ffringe_bitmaps_at_pos, Sfringe_bitmaps_at_pos, |
| 1249 | 0, 2, 0, | 1248 | 0, 2, 0, |
| 1250 | doc: /* Return fringe bitmaps of row containing position POS in window WINDOW. | 1249 | doc: /* Return fringe bitmaps of row containing position POS in window WINDOW. |
| 1251 | If WINDOW is nil, use selected window. If POS is nil, use value of point | 1250 | If WINDOW is nil, use selected window. If POS is nil, use value of point |
| 1252 | in that window. Return value is a cons (LEFT . RIGHT) where LEFT and RIGHT | 1251 | in that window. Return value is a cons (LEFT . RIGHT) where LEFT and RIGHT |
| 1253 | are the fringe bitmap numbers for the bitmaps in the left and right fringe, | 1252 | are the fringe bitmap numbers for the bitmaps in the left and right fringe, |
| @@ -1349,7 +1348,7 @@ w32_reset_fringes () | |||
| 1349 | { | 1348 | { |
| 1350 | /* Destroy row bitmaps. */ | 1349 | /* Destroy row bitmaps. */ |
| 1351 | int bt; | 1350 | int bt; |
| 1352 | 1351 | ||
| 1353 | for (bt = NO_FRINGE_BITMAP + 1; bt < max_used_fringe_bitmap; bt++) | 1352 | for (bt = NO_FRINGE_BITMAP + 1; bt < max_used_fringe_bitmap; bt++) |
| 1354 | rif->destroy_fringe_bitmap (bt); | 1353 | rif->destroy_fringe_bitmap (bt); |
| 1355 | } | 1354 | } |
diff --git a/src/indent.c b/src/indent.c index 1b3e5847510..32efcbd0cc7 100644 --- a/src/indent.c +++ b/src/indent.c | |||
| @@ -1199,7 +1199,6 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width, | |||
| 1199 | = (INTEGERP (current_buffer->selective_display) | 1199 | = (INTEGERP (current_buffer->selective_display) |
| 1200 | ? XINT (current_buffer->selective_display) | 1200 | ? XINT (current_buffer->selective_display) |
| 1201 | : !NILP (current_buffer->selective_display) ? -1 : 0); | 1201 | : !NILP (current_buffer->selective_display) ? -1 : 0); |
| 1202 | int prev_hpos = 0; | ||
| 1203 | int selective_rlen | 1202 | int selective_rlen |
| 1204 | = (selective && dp && VECTORP (DISP_INVIS_VECTOR (dp)) | 1203 | = (selective && dp && VECTORP (DISP_INVIS_VECTOR (dp)) |
| 1205 | ? XVECTOR (DISP_INVIS_VECTOR (dp))->size : 0); | 1204 | ? XVECTOR (DISP_INVIS_VECTOR (dp))->size : 0); |
| @@ -1227,6 +1226,8 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width, | |||
| 1227 | int wide_column_end_hpos = 0; | 1226 | int wide_column_end_hpos = 0; |
| 1228 | int prev_pos; /* Previous buffer position. */ | 1227 | int prev_pos; /* Previous buffer position. */ |
| 1229 | int prev_pos_byte; /* Previous buffer position. */ | 1228 | int prev_pos_byte; /* Previous buffer position. */ |
| 1229 | int prev_hpos = 0; | ||
| 1230 | int prev_vpos = 0; | ||
| 1230 | int contin_hpos; /* HPOS of last column of continued line. */ | 1231 | int contin_hpos; /* HPOS of last column of continued line. */ |
| 1231 | int prev_tab_offset; /* Previous tab offset. */ | 1232 | int prev_tab_offset; /* Previous tab offset. */ |
| 1232 | 1233 | ||
| @@ -1275,6 +1276,7 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width, | |||
| 1275 | pos = prev_pos; | 1276 | pos = prev_pos; |
| 1276 | pos_byte = prev_pos_byte; | 1277 | pos_byte = prev_pos_byte; |
| 1277 | hpos = prev_hpos; | 1278 | hpos = prev_hpos; |
| 1279 | vpos = prev_vpos; | ||
| 1278 | tab_offset = prev_tab_offset; | 1280 | tab_offset = prev_tab_offset; |
| 1279 | } | 1281 | } |
| 1280 | break; | 1282 | break; |
| @@ -1384,6 +1386,7 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width, | |||
| 1384 | if (pos >= next_boundary) | 1386 | if (pos >= next_boundary) |
| 1385 | next_boundary = pos + 1; | 1387 | next_boundary = pos + 1; |
| 1386 | prev_hpos = width; | 1388 | prev_hpos = width; |
| 1389 | prev_vpos = vpos; | ||
| 1387 | prev_tab_offset = tab_offset; | 1390 | prev_tab_offset = tab_offset; |
| 1388 | } | 1391 | } |
| 1389 | } | 1392 | } |
| @@ -1416,6 +1419,7 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width, | |||
| 1416 | pos = prev_pos; | 1419 | pos = prev_pos; |
| 1417 | pos_byte = prev_pos_byte; | 1420 | pos_byte = prev_pos_byte; |
| 1418 | hpos = prev_hpos; | 1421 | hpos = prev_hpos; |
| 1422 | vpos = prev_vpos; | ||
| 1419 | tab_offset = prev_tab_offset; | 1423 | tab_offset = prev_tab_offset; |
| 1420 | 1424 | ||
| 1421 | /* NOTE on contin_hpos, hpos, and prev_hpos. | 1425 | /* NOTE on contin_hpos, hpos, and prev_hpos. |
| @@ -1436,10 +1440,6 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width, | |||
| 1436 | hpos = contin_hpos; | 1440 | hpos = contin_hpos; |
| 1437 | vpos = vpos - 1; | 1441 | vpos = vpos - 1; |
| 1438 | } | 1442 | } |
| 1439 | else if (c == '\n') | ||
| 1440 | /* If previous character is NEWLINE, | ||
| 1441 | set VPOS back to previous line */ | ||
| 1442 | vpos = vpos - 1; | ||
| 1443 | break; | 1443 | break; |
| 1444 | } | 1444 | } |
| 1445 | 1445 | ||
| @@ -1457,6 +1457,7 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width, | |||
| 1457 | pos = prev_pos; | 1457 | pos = prev_pos; |
| 1458 | pos_byte = prev_pos_byte; | 1458 | pos_byte = prev_pos_byte; |
| 1459 | hpos = prev_hpos; | 1459 | hpos = prev_hpos; |
| 1460 | vpos = prev_vpos; | ||
| 1460 | tab_offset = prev_tab_offset; | 1461 | tab_offset = prev_tab_offset; |
| 1461 | } | 1462 | } |
| 1462 | break; | 1463 | break; |
| @@ -1465,6 +1466,7 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width, | |||
| 1465 | break; | 1466 | break; |
| 1466 | 1467 | ||
| 1467 | prev_hpos = hpos; | 1468 | prev_hpos = hpos; |
| 1469 | prev_vpos = vpos; | ||
| 1468 | prev_pos = pos; | 1470 | prev_pos = pos; |
| 1469 | prev_pos_byte = pos_byte; | 1471 | prev_pos_byte = pos_byte; |
| 1470 | wide_column_end_hpos = 0; | 1472 | wide_column_end_hpos = 0; |
diff --git a/src/makefile.w32-in b/src/makefile.w32-in index 1007e3940b0..0c153b185d8 100644 --- a/src/makefile.w32-in +++ b/src/makefile.w32-in | |||
| @@ -723,6 +723,21 @@ $(BLD)/frame.$(O) : \ | |||
| 723 | $(SRC)/w32term.h \ | 723 | $(SRC)/w32term.h \ |
| 724 | $(SRC)/window.h | 724 | $(SRC)/window.h |
| 725 | 725 | ||
| 726 | $(BLD)/fringe.$(O) : \ | ||
| 727 | $(SRC)/fringe.c \ | ||
| 728 | $(EMACS_ROOT)/src/s/ms-w32.h \ | ||
| 729 | $(EMACS_ROOT)/src/m/intel386.h \ | ||
| 730 | $(EMACS_ROOT)/src/config.h \ | ||
| 731 | $(SRC)/atimer.h \ | ||
| 732 | $(SRC)/blockinput.h \ | ||
| 733 | $(SRC)/buffer.h \ | ||
| 734 | $(SRC)/dispextern.h \ | ||
| 735 | $(SRC)/frame.h \ | ||
| 736 | $(SRC)/systime.h \ | ||
| 737 | $(SRC)/w32bdf.h \ | ||
| 738 | $(SRC)/w32gui.h \ | ||
| 739 | $(SRC)/window.h | ||
| 740 | |||
| 726 | $(BLD)/gmalloc.$(O) : \ | 741 | $(BLD)/gmalloc.$(O) : \ |
| 727 | $(SRC)/gmalloc.c \ | 742 | $(SRC)/gmalloc.c \ |
| 728 | $(EMACS_ROOT)/src/s/ms-w32.h \ | 743 | $(EMACS_ROOT)/src/s/ms-w32.h \ |
diff --git a/src/s/sol2-6.h b/src/s/sol2-6.h index a43443e48c2..3ba9ed1f5bd 100644 --- a/src/s/sol2-6.h +++ b/src/s/sol2-6.h | |||
| @@ -7,5 +7,10 @@ | |||
| 7 | #define UNEXEC unexsol.o | 7 | #define UNEXEC unexsol.o |
| 8 | #endif | 8 | #endif |
| 9 | 9 | ||
| 10 | /* "Dennis McRitchie" <dmcr@Princeton.EDU> reported failures | ||
| 11 | with GNU ld without this. */ | ||
| 12 | |||
| 13 | #define LD_SWITCH_SYSTEM_TEMACS -znocombreloc | ||
| 14 | |||
| 10 | /* arch-tag: 71ea3857-89dc-4395-9623-77964e6ed3ca | 15 | /* arch-tag: 71ea3857-89dc-4395-9623-77964e6ed3ca |
| 11 | (do not change this comment) */ | 16 | (do not change this comment) */ |
diff --git a/src/w32term.c b/src/w32term.c index c59dabc27b0..41c188a2414 100644 --- a/src/w32term.c +++ b/src/w32term.c | |||
| @@ -4394,7 +4394,7 @@ w32_read_socket (sd, expected, hold_quit) | |||
| 4394 | 4394 | ||
| 4395 | if (tool_bar_p | 4395 | if (tool_bar_p |
| 4396 | || (dpyinfo->w32_focus_frame | 4396 | || (dpyinfo->w32_focus_frame |
| 4397 | && f == dpyinfo->w32_focus_frame)) | 4397 | && f != dpyinfo->w32_focus_frame)) |
| 4398 | inev.kind = NO_EVENT; | 4398 | inev.kind = NO_EVENT; |
| 4399 | } | 4399 | } |
| 4400 | 4400 | ||
diff --git a/src/window.c b/src/window.c index 7419239752a..0192aa4edf6 100644 --- a/src/window.c +++ b/src/window.c | |||
| @@ -281,6 +281,7 @@ make_window () | |||
| 281 | p->fringes_outside_margins = Qnil; | 281 | p->fringes_outside_margins = Qnil; |
| 282 | p->scroll_bar_width = Qnil; | 282 | p->scroll_bar_width = Qnil; |
| 283 | p->vertical_scroll_bar_type = Qt; | 283 | p->vertical_scroll_bar_type = Qt; |
| 284 | p->overlay_arrow_bitmap = 0; | ||
| 284 | 285 | ||
| 285 | Vwindow_list = Qnil; | 286 | Vwindow_list = Qnil; |
| 286 | return val; | 287 | return val; |
| @@ -3269,9 +3270,10 @@ Returns the window displaying BUFFER. | |||
| 3269 | If `display-buffer-reuse-frames' is non-nil, and another frame is currently | 3270 | If `display-buffer-reuse-frames' is non-nil, and another frame is currently |
| 3270 | displaying BUFFER, then simply raise that frame. | 3271 | displaying BUFFER, then simply raise that frame. |
| 3271 | 3272 | ||
| 3272 | The variables `special-display-buffer-names', `special-display-regexps', | 3273 | The variables `special-display-buffer-names', |
| 3273 | `same-window-buffer-names', and `same-window-regexps' customize how certain | 3274 | `special-display-regexps', `same-window-buffer-names', and |
| 3274 | buffer names are handled. | 3275 | `same-window-regexps' customize how certain buffer names are handled. |
| 3276 | The latter two take effect only if NOT-THIS-WINDOW is t. | ||
| 3275 | 3277 | ||
| 3276 | If optional argument FRAME is `visible', search all visible frames. | 3278 | If optional argument FRAME is `visible', search all visible frames. |
| 3277 | If FRAME is 0, search all visible and iconified frames. | 3279 | If FRAME is 0, search all visible and iconified frames. |
diff --git a/src/window.h b/src/window.h index f45ca39bb93..ef81da43b4d 100644 --- a/src/window.h +++ b/src/window.h | |||
| @@ -254,6 +254,9 @@ struct window | |||
| 254 | /* This is handy for undrawing the cursor. */ | 254 | /* This is handy for undrawing the cursor. */ |
| 255 | int phys_cursor_ascent, phys_cursor_height; | 255 | int phys_cursor_ascent, phys_cursor_height; |
| 256 | 256 | ||
| 257 | /* Alternate overlay-arrow-bitmap in this window. */ | ||
| 258 | int overlay_arrow_bitmap; | ||
| 259 | |||
| 257 | /* Non-zero means the cursor is currently displayed. This can be | 260 | /* Non-zero means the cursor is currently displayed. This can be |
| 258 | set to zero by functions overpainting the cursor image. */ | 261 | set to zero by functions overpainting the cursor image. */ |
| 259 | unsigned phys_cursor_on_p : 1; | 262 | unsigned phys_cursor_on_p : 1; |
diff --git a/src/xdisp.c b/src/xdisp.c index 67f21446320..bb7ce740a63 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -403,6 +403,13 @@ int multiple_frames; | |||
| 403 | 403 | ||
| 404 | Lisp_Object Vglobal_mode_string; | 404 | Lisp_Object Vglobal_mode_string; |
| 405 | 405 | ||
| 406 | |||
| 407 | /* List of variables (symbols) which hold markers for overlay arrows. | ||
| 408 | The symbols on this list are examined during redisplay to determine | ||
| 409 | where to display overlay arrows. */ | ||
| 410 | |||
| 411 | Lisp_Object Voverlay_arrow_variable_list; | ||
| 412 | |||
| 406 | /* Marker for where to display an arrow on top of the buffer text. */ | 413 | /* Marker for where to display an arrow on top of the buffer text. */ |
| 407 | 414 | ||
| 408 | Lisp_Object Voverlay_arrow_position; | 415 | Lisp_Object Voverlay_arrow_position; |
| @@ -411,11 +418,17 @@ Lisp_Object Voverlay_arrow_position; | |||
| 411 | 418 | ||
| 412 | Lisp_Object Voverlay_arrow_string; | 419 | Lisp_Object Voverlay_arrow_string; |
| 413 | 420 | ||
| 414 | /* Values of those variables at last redisplay. However, if | 421 | /* Values of those variables at last redisplay are stored as |
| 415 | Voverlay_arrow_position is a marker, last_arrow_position is its | 422 | properties on `overlay-arrow-position' symbol. However, if |
| 423 | Voverlay_arrow_position is a marker, last-arrow-position is its | ||
| 416 | numerical position. */ | 424 | numerical position. */ |
| 417 | 425 | ||
| 418 | static Lisp_Object last_arrow_position, last_arrow_string; | 426 | Lisp_Object Qlast_arrow_position, Qlast_arrow_string; |
| 427 | |||
| 428 | /* Alternative overlay-arrow-string and overlay-arrow-bitmap | ||
| 429 | properties on a symbol in overlay-arrow-variable-list. */ | ||
| 430 | |||
| 431 | Lisp_Object Qoverlay_arrow_string, Qoverlay_arrow_bitmap; | ||
| 419 | 432 | ||
| 420 | /* Like mode-line-format, but for the title bar on a visible frame. */ | 433 | /* Like mode-line-format, but for the title bar on a visible frame. */ |
| 421 | 434 | ||
| @@ -828,7 +841,8 @@ static struct text_pos display_prop_end P_ ((struct it *, Lisp_Object, | |||
| 828 | static int compute_window_start_on_continuation_line P_ ((struct window *)); | 841 | static int compute_window_start_on_continuation_line P_ ((struct window *)); |
| 829 | static Lisp_Object safe_eval_handler P_ ((Lisp_Object)); | 842 | static Lisp_Object safe_eval_handler P_ ((Lisp_Object)); |
| 830 | static void insert_left_trunc_glyphs P_ ((struct it *)); | 843 | static void insert_left_trunc_glyphs P_ ((struct it *)); |
| 831 | static struct glyph_row *get_overlay_arrow_glyph_row P_ ((struct window *)); | 844 | static struct glyph_row *get_overlay_arrow_glyph_row P_ ((struct window *, |
| 845 | Lisp_Object)); | ||
| 832 | static void extend_face_to_end_of_line P_ ((struct it *)); | 846 | static void extend_face_to_end_of_line P_ ((struct it *)); |
| 833 | static int append_space P_ ((struct it *, int)); | 847 | static int append_space P_ ((struct it *, int)); |
| 834 | static int make_cursor_line_fully_visible P_ ((struct window *)); | 848 | static int make_cursor_line_fully_visible P_ ((struct window *)); |
| @@ -9316,6 +9330,153 @@ redisplay () | |||
| 9316 | } | 9330 | } |
| 9317 | 9331 | ||
| 9318 | 9332 | ||
| 9333 | static Lisp_Object | ||
| 9334 | overlay_arrow_string_or_property (var, pbitmap) | ||
| 9335 | Lisp_Object var; | ||
| 9336 | int *pbitmap; | ||
| 9337 | { | ||
| 9338 | Lisp_Object pstr = Fget (var, Qoverlay_arrow_string); | ||
| 9339 | Lisp_Object bitmap; | ||
| 9340 | |||
| 9341 | if (pbitmap) | ||
| 9342 | { | ||
| 9343 | *pbitmap = 0; | ||
| 9344 | if (bitmap = Fget (var, Qoverlay_arrow_bitmap), INTEGERP (bitmap)) | ||
| 9345 | *pbitmap = XINT (bitmap); | ||
| 9346 | } | ||
| 9347 | |||
| 9348 | if (!NILP (pstr)) | ||
| 9349 | return pstr; | ||
| 9350 | return Voverlay_arrow_string; | ||
| 9351 | } | ||
| 9352 | |||
| 9353 | /* Return 1 if there are any overlay-arrows in current_buffer. */ | ||
| 9354 | static int | ||
| 9355 | overlay_arrow_in_current_buffer_p () | ||
| 9356 | { | ||
| 9357 | Lisp_Object vlist; | ||
| 9358 | |||
| 9359 | for (vlist = Voverlay_arrow_variable_list; | ||
| 9360 | CONSP (vlist); | ||
| 9361 | vlist = XCDR (vlist)) | ||
| 9362 | { | ||
| 9363 | Lisp_Object var = XCAR (vlist); | ||
| 9364 | Lisp_Object val; | ||
| 9365 | |||
| 9366 | if (!SYMBOLP (var)) | ||
| 9367 | continue; | ||
| 9368 | val = find_symbol_value (var); | ||
| 9369 | if (MARKERP (val) | ||
| 9370 | && current_buffer == XMARKER (val)->buffer) | ||
| 9371 | return 1; | ||
| 9372 | } | ||
| 9373 | return 0; | ||
| 9374 | } | ||
| 9375 | |||
| 9376 | |||
| 9377 | /* Return 1 if any overlay_arrows have moved or overlay-arrow-string | ||
| 9378 | has changed. */ | ||
| 9379 | |||
| 9380 | static int | ||
| 9381 | overlay_arrows_changed_p () | ||
| 9382 | { | ||
| 9383 | Lisp_Object vlist; | ||
| 9384 | |||
| 9385 | for (vlist = Voverlay_arrow_variable_list; | ||
| 9386 | CONSP (vlist); | ||
| 9387 | vlist = XCDR (vlist)) | ||
| 9388 | { | ||
| 9389 | Lisp_Object var = XCAR (vlist); | ||
| 9390 | Lisp_Object val, pstr; | ||
| 9391 | |||
| 9392 | if (!SYMBOLP (var)) | ||
| 9393 | continue; | ||
| 9394 | val = find_symbol_value (var); | ||
| 9395 | if (!MARKERP (val)) | ||
| 9396 | continue; | ||
| 9397 | if (! EQ (COERCE_MARKER (val), | ||
| 9398 | Fget (var, Qlast_arrow_position)) | ||
| 9399 | || ! (pstr = overlay_arrow_string_or_property (var, 0), | ||
| 9400 | EQ (pstr, Fget (var, Qlast_arrow_string)))) | ||
| 9401 | return 1; | ||
| 9402 | } | ||
| 9403 | return 0; | ||
| 9404 | } | ||
| 9405 | |||
| 9406 | /* Mark overlay arrows to be updated on next redisplay. */ | ||
| 9407 | |||
| 9408 | static void | ||
| 9409 | update_overlay_arrows (up_to_date) | ||
| 9410 | int up_to_date; | ||
| 9411 | { | ||
| 9412 | Lisp_Object vlist; | ||
| 9413 | |||
| 9414 | for (vlist = Voverlay_arrow_variable_list; | ||
| 9415 | CONSP (vlist); | ||
| 9416 | vlist = XCDR (vlist)) | ||
| 9417 | { | ||
| 9418 | Lisp_Object var = XCAR (vlist); | ||
| 9419 | |||
| 9420 | if (!SYMBOLP (var)) | ||
| 9421 | continue; | ||
| 9422 | |||
| 9423 | if (up_to_date) | ||
| 9424 | { | ||
| 9425 | Lisp_Object val = find_symbol_value (var); | ||
| 9426 | Fput (var, Qlast_arrow_position, | ||
| 9427 | COERCE_MARKER (val)); | ||
| 9428 | Fput (var, Qlast_arrow_string, | ||
| 9429 | overlay_arrow_string_or_property (var, 0)); | ||
| 9430 | } | ||
| 9431 | else if (up_to_date < 0 | ||
| 9432 | || !NILP (Fget (var, Qlast_arrow_position))) | ||
| 9433 | { | ||
| 9434 | Fput (var, Qlast_arrow_position, Qt); | ||
| 9435 | Fput (var, Qlast_arrow_string, Qt); | ||
| 9436 | } | ||
| 9437 | } | ||
| 9438 | } | ||
| 9439 | |||
| 9440 | |||
| 9441 | /* Return overlay arrow string at row, or nil. */ | ||
| 9442 | |||
| 9443 | static Lisp_Object | ||
| 9444 | overlay_arrow_at_row (f, row, pbitmap) | ||
| 9445 | struct frame *f; | ||
| 9446 | struct glyph_row *row; | ||
| 9447 | int *pbitmap; | ||
| 9448 | { | ||
| 9449 | Lisp_Object vlist; | ||
| 9450 | |||
| 9451 | for (vlist = Voverlay_arrow_variable_list; | ||
| 9452 | CONSP (vlist); | ||
| 9453 | vlist = XCDR (vlist)) | ||
| 9454 | { | ||
| 9455 | Lisp_Object var = XCAR (vlist); | ||
| 9456 | Lisp_Object val; | ||
| 9457 | |||
| 9458 | if (!SYMBOLP (var)) | ||
| 9459 | continue; | ||
| 9460 | |||
| 9461 | val = find_symbol_value (var); | ||
| 9462 | |||
| 9463 | if (MARKERP (val) | ||
| 9464 | && current_buffer == XMARKER (val)->buffer | ||
| 9465 | && (MATRIX_ROW_START_CHARPOS (row) == marker_position (val))) | ||
| 9466 | { | ||
| 9467 | val = overlay_arrow_string_or_property (var, pbitmap); | ||
| 9468 | if (FRAME_WINDOW_P (f)) | ||
| 9469 | return Qt; | ||
| 9470 | else if (STRINGP (val)) | ||
| 9471 | return val; | ||
| 9472 | break; | ||
| 9473 | } | ||
| 9474 | } | ||
| 9475 | |||
| 9476 | *pbitmap = 0; | ||
| 9477 | return Qnil; | ||
| 9478 | } | ||
| 9479 | |||
| 9319 | /* Return 1 if point moved out of or into a composition. Otherwise | 9480 | /* Return 1 if point moved out of or into a composition. Otherwise |
| 9320 | return 0. PREV_BUF and PREV_PT are the last point buffer and | 9481 | return 0. PREV_BUF and PREV_PT are the last point buffer and |
| 9321 | position. BUF and PT are the current point buffer and position. */ | 9482 | position. BUF and PT are the current point buffer and position. */ |
| @@ -9595,8 +9756,7 @@ redisplay_internal (preserve_echo_area) | |||
| 9595 | 9756 | ||
| 9596 | /* If specs for an arrow have changed, do thorough redisplay | 9757 | /* If specs for an arrow have changed, do thorough redisplay |
| 9597 | to ensure we remove any arrow that should no longer exist. */ | 9758 | to ensure we remove any arrow that should no longer exist. */ |
| 9598 | if (! EQ (COERCE_MARKER (Voverlay_arrow_position), last_arrow_position) | 9759 | if (overlay_arrows_changed_p ()) |
| 9599 | || ! EQ (Voverlay_arrow_string, last_arrow_string)) | ||
| 9600 | consider_all_windows_p = windows_or_buffers_changed = 1; | 9760 | consider_all_windows_p = windows_or_buffers_changed = 1; |
| 9601 | 9761 | ||
| 9602 | /* Normally the message* functions will have already displayed and | 9762 | /* Normally the message* functions will have already displayed and |
| @@ -10056,11 +10216,7 @@ redisplay_internal (preserve_echo_area) | |||
| 10056 | CHARPOS (this_line_start_pos) = 0; | 10216 | CHARPOS (this_line_start_pos) = 0; |
| 10057 | 10217 | ||
| 10058 | /* Let the overlay arrow be updated the next time. */ | 10218 | /* Let the overlay arrow be updated the next time. */ |
| 10059 | if (!NILP (last_arrow_position)) | 10219 | update_overlay_arrows (0); |
| 10060 | { | ||
| 10061 | last_arrow_position = Qt; | ||
| 10062 | last_arrow_string = Qt; | ||
| 10063 | } | ||
| 10064 | 10220 | ||
| 10065 | /* If we pause after scrolling, some rows in the current | 10221 | /* If we pause after scrolling, some rows in the current |
| 10066 | matrices of some windows are not valid. */ | 10222 | matrices of some windows are not valid. */ |
| @@ -10076,8 +10232,8 @@ redisplay_internal (preserve_echo_area) | |||
| 10076 | consider_all_windows_p is set. */ | 10232 | consider_all_windows_p is set. */ |
| 10077 | mark_window_display_accurate_1 (w, 1); | 10233 | mark_window_display_accurate_1 (w, 1); |
| 10078 | 10234 | ||
| 10079 | last_arrow_position = COERCE_MARKER (Voverlay_arrow_position); | 10235 | /* Say overlay arrows are up to date. */ |
| 10080 | last_arrow_string = Voverlay_arrow_string; | 10236 | update_overlay_arrows (1); |
| 10081 | 10237 | ||
| 10082 | if (FRAME_DISPLAY (sf)->frame_up_to_date_hook != 0) | 10238 | if (FRAME_DISPLAY (sf)->frame_up_to_date_hook != 0) |
| 10083 | FRAME_DISPLAY (sf)->frame_up_to_date_hook (sf); | 10239 | FRAME_DISPLAY (sf)->frame_up_to_date_hook (sf); |
| @@ -10273,16 +10429,14 @@ mark_window_display_accurate (window, accurate_p) | |||
| 10273 | 10429 | ||
| 10274 | if (accurate_p) | 10430 | if (accurate_p) |
| 10275 | { | 10431 | { |
| 10276 | last_arrow_position = COERCE_MARKER (Voverlay_arrow_position); | 10432 | update_overlay_arrows (1); |
| 10277 | last_arrow_string = Voverlay_arrow_string; | ||
| 10278 | } | 10433 | } |
| 10279 | else | 10434 | else |
| 10280 | { | 10435 | { |
| 10281 | /* Force a thorough redisplay the next time by setting | 10436 | /* Force a thorough redisplay the next time by setting |
| 10282 | last_arrow_position and last_arrow_string to t, which is | 10437 | last_arrow_position and last_arrow_string to t, which is |
| 10283 | unequal to any useful value of Voverlay_arrow_... */ | 10438 | unequal to any useful value of Voverlay_arrow_... */ |
| 10284 | last_arrow_position = Qt; | 10439 | update_overlay_arrows (-1); |
| 10285 | last_arrow_string = Qt; | ||
| 10286 | } | 10440 | } |
| 10287 | } | 10441 | } |
| 10288 | 10442 | ||
| @@ -11033,8 +11187,7 @@ try_cursor_movement (window, startp, scroll_step) | |||
| 11033 | && INTEGERP (w->window_end_vpos) | 11187 | && INTEGERP (w->window_end_vpos) |
| 11034 | && XFASTINT (w->window_end_vpos) < w->current_matrix->nrows | 11188 | && XFASTINT (w->window_end_vpos) < w->current_matrix->nrows |
| 11035 | && (FRAME_WINDOW_P (f) | 11189 | && (FRAME_WINDOW_P (f) |
| 11036 | || !MARKERP (Voverlay_arrow_position) | 11190 | || !overlay_arrow_in_current_buffer_p ())) |
| 11037 | || current_buffer != XMARKER (Voverlay_arrow_position)->buffer)) | ||
| 11038 | { | 11191 | { |
| 11039 | int this_scroll_margin; | 11192 | int this_scroll_margin; |
| 11040 | struct glyph_row *row = NULL; | 11193 | struct glyph_row *row = NULL; |
| @@ -12786,8 +12939,7 @@ try_window_id (w) | |||
| 12786 | GIVE_UP (10); | 12939 | GIVE_UP (10); |
| 12787 | 12940 | ||
| 12788 | /* Can use this if overlay arrow position and or string have changed. */ | 12941 | /* Can use this if overlay arrow position and or string have changed. */ |
| 12789 | if (!EQ (last_arrow_position, COERCE_MARKER (Voverlay_arrow_position)) | 12942 | if (overlay_arrows_changed_p ()) |
| 12790 | || !EQ (last_arrow_string, Voverlay_arrow_string)) | ||
| 12791 | GIVE_UP (12); | 12943 | GIVE_UP (12); |
| 12792 | 12944 | ||
| 12793 | 12945 | ||
| @@ -13724,14 +13876,15 @@ usage: (trace-to-stderr STRING &rest OBJECTS) */) | |||
| 13724 | arrow. Only used for non-window-redisplay windows. */ | 13876 | arrow. Only used for non-window-redisplay windows. */ |
| 13725 | 13877 | ||
| 13726 | static struct glyph_row * | 13878 | static struct glyph_row * |
| 13727 | get_overlay_arrow_glyph_row (w) | 13879 | get_overlay_arrow_glyph_row (w, overlay_arrow_string) |
| 13728 | struct window *w; | 13880 | struct window *w; |
| 13881 | Lisp_Object overlay_arrow_string; | ||
| 13729 | { | 13882 | { |
| 13730 | struct frame *f = XFRAME (WINDOW_FRAME (w)); | 13883 | struct frame *f = XFRAME (WINDOW_FRAME (w)); |
| 13731 | struct buffer *buffer = XBUFFER (w->buffer); | 13884 | struct buffer *buffer = XBUFFER (w->buffer); |
| 13732 | struct buffer *old = current_buffer; | 13885 | struct buffer *old = current_buffer; |
| 13733 | const unsigned char *arrow_string = SDATA (Voverlay_arrow_string); | 13886 | const unsigned char *arrow_string = SDATA (overlay_arrow_string); |
| 13734 | int arrow_len = SCHARS (Voverlay_arrow_string); | 13887 | int arrow_len = SCHARS (overlay_arrow_string); |
| 13735 | const unsigned char *arrow_end = arrow_string + arrow_len; | 13888 | const unsigned char *arrow_end = arrow_string + arrow_len; |
| 13736 | const unsigned char *p; | 13889 | const unsigned char *p; |
| 13737 | struct it it; | 13890 | struct it it; |
| @@ -13758,7 +13911,7 @@ get_overlay_arrow_glyph_row (w) | |||
| 13758 | 13911 | ||
| 13759 | /* Get its face. */ | 13912 | /* Get its face. */ |
| 13760 | ilisp = make_number (p - arrow_string); | 13913 | ilisp = make_number (p - arrow_string); |
| 13761 | face = Fget_text_property (ilisp, Qface, Voverlay_arrow_string); | 13914 | face = Fget_text_property (ilisp, Qface, overlay_arrow_string); |
| 13762 | it.face_id = compute_char_face (f, it.c, face); | 13915 | it.face_id = compute_char_face (f, it.c, face); |
| 13763 | 13916 | ||
| 13764 | /* Compute its width, get its glyphs. */ | 13917 | /* Compute its width, get its glyphs. */ |
| @@ -14197,6 +14350,8 @@ display_line (it) | |||
| 14197 | struct it *it; | 14350 | struct it *it; |
| 14198 | { | 14351 | { |
| 14199 | struct glyph_row *row = it->glyph_row; | 14352 | struct glyph_row *row = it->glyph_row; |
| 14353 | int overlay_arrow_bitmap; | ||
| 14354 | Lisp_Object overlay_arrow_string; | ||
| 14200 | 14355 | ||
| 14201 | /* We always start displaying at hpos zero even if hscrolled. */ | 14356 | /* We always start displaying at hpos zero even if hscrolled. */ |
| 14202 | xassert (it->hpos == 0 && it->current_x == 0); | 14357 | xassert (it->hpos == 0 && it->current_x == 0); |
| @@ -14592,17 +14747,16 @@ display_line (it) | |||
| 14592 | mark this glyph row as the one containing the overlay arrow. | 14747 | mark this glyph row as the one containing the overlay arrow. |
| 14593 | This is clearly a mess with variable size fonts. It would be | 14748 | This is clearly a mess with variable size fonts. It would be |
| 14594 | better to let it be displayed like cursors under X. */ | 14749 | better to let it be displayed like cursors under X. */ |
| 14595 | if (MARKERP (Voverlay_arrow_position) | 14750 | if (! overlay_arrow_seen |
| 14596 | && current_buffer == XMARKER (Voverlay_arrow_position)->buffer | 14751 | && (overlay_arrow_string |
| 14597 | && (MATRIX_ROW_START_CHARPOS (row) | 14752 | = overlay_arrow_at_row (it->f, row, &overlay_arrow_bitmap), |
| 14598 | == marker_position (Voverlay_arrow_position)) | 14753 | !NILP (overlay_arrow_string))) |
| 14599 | && STRINGP (Voverlay_arrow_string) | ||
| 14600 | && ! overlay_arrow_seen) | ||
| 14601 | { | 14754 | { |
| 14602 | /* Overlay arrow in window redisplay is a fringe bitmap. */ | 14755 | /* Overlay arrow in window redisplay is a fringe bitmap. */ |
| 14603 | if (!FRAME_WINDOW_P (it->f)) | 14756 | if (!FRAME_WINDOW_P (it->f)) |
| 14604 | { | 14757 | { |
| 14605 | struct glyph_row *arrow_row = get_overlay_arrow_glyph_row (it->w); | 14758 | struct glyph_row *arrow_row |
| 14759 | = get_overlay_arrow_glyph_row (it->w, overlay_arrow_string); | ||
| 14606 | struct glyph *glyph = arrow_row->glyphs[TEXT_AREA]; | 14760 | struct glyph *glyph = arrow_row->glyphs[TEXT_AREA]; |
| 14607 | struct glyph *arrow_end = glyph + arrow_row->used[TEXT_AREA]; | 14761 | struct glyph *arrow_end = glyph + arrow_row->used[TEXT_AREA]; |
| 14608 | struct glyph *p = row->glyphs[TEXT_AREA]; | 14762 | struct glyph *p = row->glyphs[TEXT_AREA]; |
| @@ -14626,6 +14780,7 @@ display_line (it) | |||
| 14626 | } | 14780 | } |
| 14627 | 14781 | ||
| 14628 | overlay_arrow_seen = 1; | 14782 | overlay_arrow_seen = 1; |
| 14783 | it->w->overlay_arrow_bitmap = overlay_arrow_bitmap; | ||
| 14629 | row->overlay_arrow_p = 1; | 14784 | row->overlay_arrow_p = 1; |
| 14630 | } | 14785 | } |
| 14631 | 14786 | ||
| @@ -17707,6 +17862,9 @@ produce_image_glyph (it) | |||
| 17707 | if (it->image_id < 0) | 17862 | if (it->image_id < 0) |
| 17708 | { | 17863 | { |
| 17709 | /* Fringe bitmap. */ | 17864 | /* Fringe bitmap. */ |
| 17865 | it->ascent = it->phys_ascent = 0; | ||
| 17866 | it->descent = it->phys_descent = 0; | ||
| 17867 | it->pixel_width = 0; | ||
| 17710 | it->nglyphs = 0; | 17868 | it->nglyphs = 0; |
| 17711 | return; | 17869 | return; |
| 17712 | } | 17870 | } |
| @@ -21433,10 +21591,15 @@ syms_of_xdisp () | |||
| 21433 | list_of_error = Fcons (intern ("error"), Qnil); | 21591 | list_of_error = Fcons (intern ("error"), Qnil); |
| 21434 | staticpro (&list_of_error); | 21592 | staticpro (&list_of_error); |
| 21435 | 21593 | ||
| 21436 | last_arrow_position = Qnil; | 21594 | Qlast_arrow_position = intern ("last-arrow-position"); |
| 21437 | last_arrow_string = Qnil; | 21595 | staticpro (&Qlast_arrow_position); |
| 21438 | staticpro (&last_arrow_position); | 21596 | Qlast_arrow_string = intern ("last-arrow-string"); |
| 21439 | staticpro (&last_arrow_string); | 21597 | staticpro (&Qlast_arrow_string); |
| 21598 | |||
| 21599 | Qoverlay_arrow_string = intern ("overlay-arrow-string"); | ||
| 21600 | staticpro (&Qoverlay_arrow_string); | ||
| 21601 | Qoverlay_arrow_bitmap = intern ("overlay-arrow-bitmap"); | ||
| 21602 | staticpro (&Qoverlay_arrow_bitmap); | ||
| 21440 | 21603 | ||
| 21441 | echo_buffer[0] = echo_buffer[1] = Qnil; | 21604 | echo_buffer[0] = echo_buffer[1] = Qnil; |
| 21442 | staticpro (&echo_buffer[0]); | 21605 | staticpro (&echo_buffer[0]); |
| @@ -21500,9 +21663,17 @@ See also `overlay-arrow-string'. */); | |||
| 21500 | Voverlay_arrow_position = Qnil; | 21663 | Voverlay_arrow_position = Qnil; |
| 21501 | 21664 | ||
| 21502 | DEFVAR_LISP ("overlay-arrow-string", &Voverlay_arrow_string, | 21665 | DEFVAR_LISP ("overlay-arrow-string", &Voverlay_arrow_string, |
| 21503 | doc: /* String to display as an arrow. See also `overlay-arrow-position'. */); | 21666 | doc: /* String to display as an arrow in non-window frames. |
| 21667 | See also `overlay-arrow-position'. */); | ||
| 21504 | Voverlay_arrow_string = Qnil; | 21668 | Voverlay_arrow_string = Qnil; |
| 21505 | 21669 | ||
| 21670 | DEFVAR_LISP ("overlay-arrow-variable-list", &Voverlay_arrow_variable_list, | ||
| 21671 | doc: /* List of variables (symbols) which hold markers for overlay arrows. | ||
| 21672 | The symbols on this list are examined during redisplay to determine | ||
| 21673 | where to display overlay arrows. */); | ||
| 21674 | Voverlay_arrow_variable_list | ||
| 21675 | = Fcons (intern ("overlay-arrow-position"), Qnil); | ||
| 21676 | |||
| 21506 | DEFVAR_INT ("scroll-step", &scroll_step, | 21677 | DEFVAR_INT ("scroll-step", &scroll_step, |
| 21507 | doc: /* *The number of lines to try scrolling a window by when point moves out. | 21678 | doc: /* *The number of lines to try scrolling a window by when point moves out. |
| 21508 | If that fails to bring point back on frame, point is centered instead. | 21679 | If that fails to bring point back on frame, point is centered instead. |
diff --git a/src/xfns.c b/src/xfns.c index 9f21cc98502..b2b16defdbd 100644 --- a/src/xfns.c +++ b/src/xfns.c | |||
| @@ -3762,8 +3762,17 @@ If omitted or nil, that stands for the selected frame's display. */) | |||
| 3762 | { | 3762 | { |
| 3763 | struct x_display_info *dpyinfo = check_x_display_info (display); | 3763 | struct x_display_info *dpyinfo = check_x_display_info (display); |
| 3764 | 3764 | ||
| 3765 | return make_number (DisplayCells (dpyinfo->display, | 3765 | int nr_planes = DisplayPlanes (dpyinfo->display, |
| 3766 | XScreenNumberOfScreen (dpyinfo->screen))); | 3766 | XScreenNumberOfScreen (dpyinfo->screen)); |
| 3767 | |||
| 3768 | /* Truncate nr_planes to 24 to avoid integer overflow. | ||
| 3769 | Some displays says 32, but only 24 bits are actually significant. | ||
| 3770 | There are only very few and rare video cards that have more than | ||
| 3771 | 24 significant bits. Also 24 bits is more than 16 million colors, | ||
| 3772 | it "should be enough for everyone". */ | ||
| 3773 | if (nr_planes > 24) nr_planes = 24; | ||
| 3774 | |||
| 3775 | return make_number (1 << nr_planes); | ||
| 3767 | } | 3776 | } |
| 3768 | 3777 | ||
| 3769 | DEFUN ("x-server-max-request-size", Fx_server_max_request_size, | 3778 | DEFUN ("x-server-max-request-size", Fx_server_max_request_size, |