• Stefan Monnier's avatar
    Add pre-redisplay-function and rectangular region · 3472b6c6
    Stefan Monnier authored
    * lisp/rect.el: Use lexical-binding.  Add new rectangular region support.
    (rectangle-mark): New command.
    (rectangle--region): New var.
    (deactivate-mark-hook): Reset rectangle--region.
    (rectangle--extract-region, rectangle--insert-for-yank)
    (rectangle--highlight-for-redisplay)
    (rectangle--unhighlight-for-redisplay): New functions.
    (region-extract-function, redisplay-unhighlight-region-function)
    (redisplay-highlight-region-function): Use them to handle
    rectangular region.
    * lisp/simple.el (region-extract-function): New var.
    (delete-backward-char, delete-forward-char, deactivate-mark): Use it.
    (kill-new, kill-append): Remove obsolete `yank-handler' argument.
    (kill-region): Replace obsolete `yank-handler' arg with `region'.
    (copy-region-as-kill, kill-ring-save): Add `region' argument.
    (redisplay-unhighlight-region-function)
    (redisplay-highlight-region-function): New vars.
    (redisplay--update-region-highlight): New function.
    (pre-redisplay-function): Use it.
    (exchange-point-and-mark): Don't deactivate the mark before
    reactivate-it anyway.
    * lisp/comint.el (comint-kill-region): Remove yank-handler argument.
    * lisp/delsel.el (delete-backward-char, backward-delete-char-untabify)
    (delete-char): Remove property, since it's now part of their
    default behavior.
    (self-insert-iso): Remove property since this command doesn't exist.
    
    * src/xdisp.c (prepare_menu_bars): Call Vpre_redisplay_function.
    (syms_of_xdisp): Declare pre-redisplay-function.
    (markpos_of_region): Remove function.
    (init_iterator, compute_stop_pos, handle_face_prop)
    (face_before_or_after_it_pos, reseat_to_string)
    (get_next_display_element, window_buffer_changed)
    (redisplay_internal, try_cursor_movement, redisplay_window)
    (try_window_reusing_current_matrix, try_window_id, display_line)
    (note_mode_line_or_margin_highlight, note_mouse_highlight)
    (display_string, mouse_face_from_buffer_pos): Remove region handling.
    * src/window.h (struct window): Remove field `region_showing'.
    * src/dispextern.h (struct it): Remove region_beg/end_charpos.
    (face_at_buffer_position, face_for_overlay_string)
    (face_at_string_position): Update prototypes.
    * src/xfaces.c (face_at_buffer_position, face_for_overlay_string)
    (face_at_string_position): Remove `region_beg' and `region_end' args.
    * src/fontset.c (Finternal_char_font):
    * src/font.c (font_at, font_range): Adjust calls accordingly.
    * src/insdel.c (Qregion_extract_function): New var.
    (syms_of_insdel): Initialize it.
    (prepare_to_modify_buffer_1): Use it.
    3472b6c6
rect.el 20.8 KB