diff options
| author | Joakim Verona | 2011-08-02 11:42:58 +0200 |
|---|---|---|
| committer | Joakim Verona | 2011-08-02 11:42:58 +0200 |
| commit | c040cbd945a3fde6324c73563dc2d11629ad3081 (patch) | |
| tree | 88cb76e2533cb211b0df151a31fab8e6ad24371e | |
| parent | e31c3c3f9c2118bf73f32a9573fefd01c9966bc2 (diff) | |
| parent | d90e2ea0eeccb7422fc7c8ab727a61c49c135e03 (diff) | |
| download | emacs-c040cbd945a3fde6324c73563dc2d11629ad3081.tar.gz emacs-c040cbd945a3fde6324c73563dc2d11629ad3081.zip | |
merge upstream + stray par fix
| -rw-r--r-- | lisp/ChangeLog | 14 | ||||
| -rw-r--r-- | lisp/emacs-lisp/package.el | 2 | ||||
| -rw-r--r-- | lisp/window.el | 24 | ||||
| -rw-r--r-- | lisp/xwidget.el | 27 | ||||
| -rw-r--r-- | src/ChangeLog | 9 | ||||
| -rw-r--r-- | src/xdisp.c | 44 |
6 files changed, 89 insertions, 31 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index ef85ffab8a4..791233439bb 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,17 @@ | |||
| 1 | 2011-08-01 Martin Rudalics <rudalics@gmx.at> | ||
| 2 | |||
| 3 | * window.el (display-buffer-in-window): Don't set dedicated status | ||
| 4 | of window here (Bug#9215). | ||
| 5 | (display-buffer-pop-up-window, display-buffer-pop-up-frame) | ||
| 6 | (display-buffer-pop-up-side-window) | ||
| 7 | (display-buffer-in-side-window): Set dedicated status of window | ||
| 8 | here. | ||
| 9 | |||
| 10 | 2011-08-01 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 11 | |||
| 12 | * emacs-lisp/package.el (package-generate-autoloads): Load autoloads | ||
| 13 | before binding generated-autoload-file. | ||
| 14 | |||
| 1 | 2011-08-01 Deniz Dogan <deniz@dogan.se> | 15 | 2011-08-01 Deniz Dogan <deniz@dogan.se> |
| 2 | 16 | ||
| 3 | * net/rcirc.el (rcirc-handler-333): Clarify docstring. | 17 | * net/rcirc.el (rcirc-handler-333): Clarify docstring. |
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index e42103a7a01..19e8375966b 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el | |||
| @@ -570,11 +570,11 @@ EXTRA-PROPERTIES is currently unused." | |||
| 570 | file) | 570 | file) |
| 571 | 571 | ||
| 572 | (defun package-generate-autoloads (name pkg-dir) | 572 | (defun package-generate-autoloads (name pkg-dir) |
| 573 | (require 'autoload) ;Load before we let-bind generated-autoload-file! | ||
| 573 | (let* ((auto-name (concat name "-autoloads.el")) | 574 | (let* ((auto-name (concat name "-autoloads.el")) |
| 574 | (ignore-name (concat name "-pkg.el")) | 575 | (ignore-name (concat name "-pkg.el")) |
| 575 | (generated-autoload-file (expand-file-name auto-name pkg-dir)) | 576 | (generated-autoload-file (expand-file-name auto-name pkg-dir)) |
| 576 | (version-control 'never)) | 577 | (version-control 'never)) |
| 577 | (require 'autoload) | ||
| 578 | (unless (fboundp 'autoload-ensure-default-file) | 578 | (unless (fboundp 'autoload-ensure-default-file) |
| 579 | (package-autoload-ensure-default-file generated-autoload-file)) | 579 | (package-autoload-ensure-default-file generated-autoload-file)) |
| 580 | (update-directory-autoloads pkg-dir))) | 580 | (update-directory-autoloads pkg-dir))) |
diff --git a/lisp/window.el b/lisp/window.el index 905db8dc9b6..215dbab7849 100644 --- a/lisp/window.el +++ b/lisp/window.el | |||
| @@ -4715,15 +4715,12 @@ documentation of `display-buffer-alist' for a description." | |||
| 4715 | (setq window (window-normalize-live-window window)) | 4715 | (setq window (window-normalize-live-window window)) |
| 4716 | (let* ((old-frame (selected-frame)) | 4716 | (let* ((old-frame (selected-frame)) |
| 4717 | (new-frame (window-frame window)) | 4717 | (new-frame (window-frame window)) |
| 4718 | (dedicate (cdr (assq 'dedicate specifiers))) | ||
| 4719 | (no-other-window (cdr (assq 'no-other-window specifiers)))) | 4718 | (no-other-window (cdr (assq 'no-other-window specifiers)))) |
| 4720 | ;; Show BUFFER in WINDOW. | 4719 | ;; Show BUFFER in WINDOW. |
| 4721 | (unless (eq buffer (window-buffer window)) | 4720 | (unless (eq buffer (window-buffer window)) |
| 4722 | ;; If we show another buffer in WINDOW, undedicate it first. | 4721 | ;; If we show another buffer in WINDOW, undedicate it first. |
| 4723 | (set-window-dedicated-p window nil)) | 4722 | (set-window-dedicated-p window nil)) |
| 4724 | (set-window-buffer window buffer) | 4723 | (set-window-buffer window buffer) |
| 4725 | (when dedicate | ||
| 4726 | (set-window-dedicated-p window dedicate)) | ||
| 4727 | (when no-other-window | 4724 | (when no-other-window |
| 4728 | (set-window-parameter window 'no-other-window t)) | 4725 | (set-window-parameter window 'no-other-window t)) |
| 4729 | (unless (or (eq old-frame new-frame) | 4726 | (unless (or (eq old-frame new-frame) |
| @@ -4965,7 +4962,7 @@ Return the new window, nil if it could not be created." | |||
| 4965 | (selected-window (selected-window)) | 4962 | (selected-window (selected-window)) |
| 4966 | root new new-parent) | 4963 | root new new-parent) |
| 4967 | 4964 | ||
| 4968 | ;; We are in an atomic window. | 4965 | ;; We are in an atomic window. |
| 4969 | (when (and (window-parameter window 'window-atom) (not nest)) | 4966 | (when (and (window-parameter window 'window-atom) (not nest)) |
| 4970 | ;; Split the root window. | 4967 | ;; Split the root window. |
| 4971 | (setq window (window-atom-root window))) | 4968 | (setq window (window-atom-root window))) |
| @@ -5059,6 +5056,10 @@ description." | |||
| 5059 | (setq display-buffer-window (cons window 'new-window)) | 5056 | (setq display-buffer-window (cons window 'new-window)) |
| 5060 | ;; Install BUFFER in the new window. | 5057 | ;; Install BUFFER in the new window. |
| 5061 | (display-buffer-in-window buffer window specifiers) | 5058 | (display-buffer-in-window buffer window specifiers) |
| 5059 | (let ((dedicate (cdr (assq 'dedicate specifiers)))) | ||
| 5060 | (when dedicate | ||
| 5061 | ;; Dedicate window to buffer. | ||
| 5062 | (set-window-dedicated-p window dedicate))) | ||
| 5062 | ;; Adjust sizes if asked for (for `fit-window-to-buffer' | 5063 | ;; Adjust sizes if asked for (for `fit-window-to-buffer' |
| 5063 | ;; and friends BUFFER must be already shown in the new | 5064 | ;; and friends BUFFER must be already shown in the new |
| 5064 | ;; window). | 5065 | ;; window). |
| @@ -5094,7 +5095,12 @@ documentation of `display-buffer-alist' for a description." | |||
| 5094 | (set-window-parameter | 5095 | (set-window-parameter |
| 5095 | window 'quit-restore (list 'new-frame buffer selected-window)) | 5096 | window 'quit-restore (list 'new-frame buffer selected-window)) |
| 5096 | (setq display-buffer-window (cons window 'new-frame)) | 5097 | (setq display-buffer-window (cons window 'new-frame)) |
| 5097 | (display-buffer-in-window buffer window specifiers)))))) | 5098 | (display-buffer-in-window buffer window specifiers) |
| 5099 | (let ((dedicate (cdr (assq 'dedicate specifiers)))) | ||
| 5100 | (when dedicate | ||
| 5101 | ;; Dedicate window to buffer. | ||
| 5102 | (set-window-dedicated-p window dedicate))) | ||
| 5103 | window))))) | ||
| 5098 | 5104 | ||
| 5099 | (defun display-buffer-pop-up-side-window (buffer side slot &optional specifiers) | 5105 | (defun display-buffer-pop-up-side-window (buffer side slot &optional specifiers) |
| 5100 | "Display BUFFER in a new window on SIDE of the selected frame. | 5106 | "Display BUFFER in a new window on SIDE of the selected frame. |
| @@ -5142,6 +5148,10 @@ failed." | |||
| 5142 | (setq display-buffer-window (cons window 'new-window)) | 5148 | (setq display-buffer-window (cons window 'new-window)) |
| 5143 | ;; Install BUFFER in new window. | 5149 | ;; Install BUFFER in new window. |
| 5144 | (display-buffer-in-window buffer window specifiers) | 5150 | (display-buffer-in-window buffer window specifiers) |
| 5151 | (let ((dedicate (cdr (assq 'dedicate specifiers)))) | ||
| 5152 | (when dedicate | ||
| 5153 | ;; Dedicate window to buffer. | ||
| 5154 | (set-window-dedicated-p window dedicate))) | ||
| 5145 | ;; Adjust sizes of new window if asked for. | 5155 | ;; Adjust sizes of new window if asked for. |
| 5146 | (display-buffer-set-height window specifiers) | 5156 | (display-buffer-set-height window specifiers) |
| 5147 | (display-buffer-set-width window specifiers) | 5157 | (display-buffer-set-width window specifiers) |
| @@ -5282,6 +5292,10 @@ SPECIFIERS must be a list of buffer display specifiers." | |||
| 5282 | (set-window-parameter window 'window-slot slot)) | 5292 | (set-window-parameter window 'window-slot slot)) |
| 5283 | ;; Install BUFFER in the window. | 5293 | ;; Install BUFFER in the window. |
| 5284 | (display-buffer-in-window buffer window specifiers) | 5294 | (display-buffer-in-window buffer window specifiers) |
| 5295 | (let ((dedicate (cdr (assq 'dedicate specifiers)))) | ||
| 5296 | (when dedicate | ||
| 5297 | ;; Dedicate window to buffer. | ||
| 5298 | (set-window-dedicated-p window dedicate))) | ||
| 5285 | (when new-window | 5299 | (when new-window |
| 5286 | ;; Adjust sizes if asked for (for `fit-window-to-buffer' and | 5300 | ;; Adjust sizes if asked for (for `fit-window-to-buffer' and |
| 5287 | ;; friends BUFFER must be already shown in the new window). | 5301 | ;; friends BUFFER must be already shown in the new window). |
diff --git a/lisp/xwidget.el b/lisp/xwidget.el index 5ca8fb58d69..0c6208f59ec 100644 --- a/lisp/xwidget.el +++ b/lisp/xwidget.el | |||
| @@ -5,7 +5,7 @@ | |||
| 5 | 5 | ||
| 6 | ;;TODO model after make-text-button instead! | 6 | ;;TODO model after make-text-button instead! |
| 7 | (defun xwidget-insert (pos type title width height) | 7 | (defun xwidget-insert (pos type title width height) |
| 8 | "Insert an xwidget at POS, given ID, TYPE, TITLE WIDTH and HEIGHT. | 8 | "Insert an xwidget at POS, given ID, TYPE, TITLE WIDTH and HEIGHT. |
| 9 | Return ID | 9 | Return ID |
| 10 | 10 | ||
| 11 | see xwidget.c for types suitable for TYPE. | 11 | see xwidget.c for types suitable for TYPE. |
| @@ -71,6 +71,17 @@ defaults to the string looking like a url around the cursor position." | |||
| 71 | (xwidget-webkit-goto-url url)))) | 71 | (xwidget-webkit-goto-url url)))) |
| 72 | 72 | ||
| 73 | 73 | ||
| 74 | ;;shims for adapting image mode code to the webkit browser window | ||
| 75 | (defun xwidget-image-display-size (spec &optional pixels frame) | ||
| 76 | (let ((xwi (xwidget-info (xwidget-at 1)))) | ||
| 77 | (cons (aref xwi 2) | ||
| 78 | (aref xwi 3)))) | ||
| 79 | |||
| 80 | (defmacro xwidget-image-mode-navigation-adaptor (fn) | ||
| 81 | `(lambda () (interactive) | ||
| 82 | (flet ((image-display-size (spec &optional pixels frame) (xwidget-image-display-size spec))) | ||
| 83 | (funcall ,fn)))) | ||
| 84 | |||
| 74 | 85 | ||
| 75 | ;;todo. | 86 | ;;todo. |
| 76 | ;; - check that the webkit support is compiled in | 87 | ;; - check that the webkit support is compiled in |
| @@ -84,8 +95,8 @@ defaults to the string looking like a url around the cursor position." | |||
| 84 | (define-key map [xwidget-event] 'xwidget-webkit-event-handler) | 95 | (define-key map [xwidget-event] 'xwidget-webkit-event-handler) |
| 85 | 96 | ||
| 86 | ;;similar to image mode bindings | 97 | ;;similar to image mode bindings |
| 87 | (define-key map (kbd "SPC") 'image-scroll-up) | 98 | (define-key map (kbd "SPC") (xwidget-image-mode-navigation-adaptor 'image-scroll-up)) |
| 88 | (define-key map (kbd "DEL") 'image-scroll-down) | 99 | (define-key map (kbd "DEL") (xwidget-image-mode-navigation-adaptor 'image-scroll-down)) |
| 89 | 100 | ||
| 90 | (define-key map [remap forward-char] (xwidget-image-mode-navigation-adaptor 'image-forward-hscroll)) | 101 | (define-key map [remap forward-char] (xwidget-image-mode-navigation-adaptor 'image-forward-hscroll)) |
| 91 | (define-key map [remap backward-char] (xwidget-image-mode-navigation-adaptor 'image-backward-hscroll)) | 102 | (define-key map [remap backward-char] (xwidget-image-mode-navigation-adaptor 'image-backward-hscroll)) |
| @@ -109,16 +120,6 @@ defaults to the string looking like a url around the cursor position." | |||
| 109 | 120 | ||
| 110 | "Keymap for `xwidget-webkit-mode'.") | 121 | "Keymap for `xwidget-webkit-mode'.") |
| 111 | 122 | ||
| 112 | (defun xwidget-image-display-size (spec &optional pixels frame) | ||
| 113 | (let ((xwi (xwidget-info (xwidget-at 1)))) | ||
| 114 | (cons (aref xwi 2) | ||
| 115 | (aref xwi 3)))) | ||
| 116 | |||
| 117 | (defmacro xwidget-image-mode-navigation-adaptor (fn) | ||
| 118 | `(lambda () (interactive) | ||
| 119 | (flet ((image-display-size (spec &optional pixels frame) (xwidget-image-display-size spec))) | ||
| 120 | (funcall ,fn)))) | ||
| 121 | ) | ||
| 122 | 123 | ||
| 123 | (defun xwidget-webkit-event-handler () | 124 | (defun xwidget-webkit-event-handler () |
| 124 | (interactive) | 125 | (interactive) |
diff --git a/src/ChangeLog b/src/ChangeLog index 623ccc6f4be..4e8217cdf5f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,12 @@ | |||
| 1 | 2011-08-01 Eli Zaretskii <eliz@gnu.org> | ||
| 2 | |||
| 3 | * xdisp.c (forward_to_next_line_start): Accept additional argument | ||
| 4 | BIDI_IT_PREV, and store into it the state of the bidi iterator had | ||
| 5 | on the newline. | ||
| 6 | (reseat_at_next_visible_line_start): Use the bidi iterator state | ||
| 7 | returned by forward_to_next_line_start to restore the state of | ||
| 8 | it->bidi_it after backing up to previous newline. (Bug#9212) | ||
| 9 | |||
| 1 | 2011-07-30 Andreas Schwab <schwab@linux-m68k.org> | 10 | 2011-07-30 Andreas Schwab <schwab@linux-m68k.org> |
| 2 | 11 | ||
| 3 | * regex.c (re_comp): Protoize. | 12 | * regex.c (re_comp): Protoize. |
diff --git a/src/xdisp.c b/src/xdisp.c index 14541eb9df0..22d353b840b 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -904,7 +904,7 @@ static void init_to_row_start (struct it *, struct window *, | |||
| 904 | static int init_to_row_end (struct it *, struct window *, | 904 | static int init_to_row_end (struct it *, struct window *, |
| 905 | struct glyph_row *); | 905 | struct glyph_row *); |
| 906 | static void back_to_previous_line_start (struct it *); | 906 | static void back_to_previous_line_start (struct it *); |
| 907 | static int forward_to_next_line_start (struct it *, int *); | 907 | static int forward_to_next_line_start (struct it *, int *, struct bidi_it *); |
| 908 | static struct text_pos string_pos_nchars_ahead (struct text_pos, | 908 | static struct text_pos string_pos_nchars_ahead (struct text_pos, |
| 909 | Lisp_Object, EMACS_INT); | 909 | Lisp_Object, EMACS_INT); |
| 910 | static struct text_pos string_pos (EMACS_INT, Lisp_Object); | 910 | static struct text_pos string_pos (EMACS_INT, Lisp_Object); |
| @@ -5529,6 +5529,9 @@ back_to_previous_line_start (struct it *it) | |||
| 5529 | continuously over the text). Otherwise, don't change the value | 5529 | continuously over the text). Otherwise, don't change the value |
| 5530 | of *SKIPPED_P. | 5530 | of *SKIPPED_P. |
| 5531 | 5531 | ||
| 5532 | If BIDI_IT_PREV is non-NULL, store into it the state of the bidi | ||
| 5533 | iterator on the newline, if it was found. | ||
| 5534 | |||
| 5532 | Newlines may come from buffer text, overlay strings, or strings | 5535 | Newlines may come from buffer text, overlay strings, or strings |
| 5533 | displayed via the `display' property. That's the reason we can't | 5536 | displayed via the `display' property. That's the reason we can't |
| 5534 | simply use find_next_newline_no_quit. | 5537 | simply use find_next_newline_no_quit. |
| @@ -5541,7 +5544,8 @@ back_to_previous_line_start (struct it *it) | |||
| 5541 | leads to wrong cursor motion. */ | 5544 | leads to wrong cursor motion. */ |
| 5542 | 5545 | ||
| 5543 | static int | 5546 | static int |
| 5544 | forward_to_next_line_start (struct it *it, int *skipped_p) | 5547 | forward_to_next_line_start (struct it *it, int *skipped_p, |
| 5548 | struct bidi_it *bidi_it_prev) | ||
| 5545 | { | 5549 | { |
| 5546 | EMACS_INT old_selective; | 5550 | EMACS_INT old_selective; |
| 5547 | int newline_found_p, n; | 5551 | int newline_found_p, n; |
| @@ -5553,6 +5557,8 @@ forward_to_next_line_start (struct it *it, int *skipped_p) | |||
| 5553 | && it->c == '\n' | 5557 | && it->c == '\n' |
| 5554 | && CHARPOS (it->position) == IT_CHARPOS (*it)) | 5558 | && CHARPOS (it->position) == IT_CHARPOS (*it)) |
| 5555 | { | 5559 | { |
| 5560 | if (it->bidi_p && bidi_it_prev) | ||
| 5561 | *bidi_it_prev = it->bidi_it; | ||
| 5556 | set_iterator_to_next (it, 0); | 5562 | set_iterator_to_next (it, 0); |
| 5557 | it->c = 0; | 5563 | it->c = 0; |
| 5558 | return 1; | 5564 | return 1; |
| @@ -5574,6 +5580,8 @@ forward_to_next_line_start (struct it *it, int *skipped_p) | |||
| 5574 | if (!get_next_display_element (it)) | 5580 | if (!get_next_display_element (it)) |
| 5575 | return 0; | 5581 | return 0; |
| 5576 | newline_found_p = it->what == IT_CHARACTER && it->c == '\n'; | 5582 | newline_found_p = it->what == IT_CHARACTER && it->c == '\n'; |
| 5583 | if (newline_found_p && it->bidi_p && bidi_it_prev) | ||
| 5584 | *bidi_it_prev = it->bidi_it; | ||
| 5577 | set_iterator_to_next (it, 0); | 5585 | set_iterator_to_next (it, 0); |
| 5578 | } | 5586 | } |
| 5579 | 5587 | ||
| @@ -5608,6 +5616,8 @@ forward_to_next_line_start (struct it *it, int *skipped_p) | |||
| 5608 | && !newline_found_p) | 5616 | && !newline_found_p) |
| 5609 | { | 5617 | { |
| 5610 | newline_found_p = ITERATOR_AT_END_OF_LINE_P (it); | 5618 | newline_found_p = ITERATOR_AT_END_OF_LINE_P (it); |
| 5619 | if (newline_found_p && it->bidi_p && bidi_it_prev) | ||
| 5620 | *bidi_it_prev = it->bidi_it; | ||
| 5611 | set_iterator_to_next (it, 0); | 5621 | set_iterator_to_next (it, 0); |
| 5612 | } | 5622 | } |
| 5613 | } | 5623 | } |
| @@ -5731,8 +5741,9 @@ static void | |||
| 5731 | reseat_at_next_visible_line_start (struct it *it, int on_newline_p) | 5741 | reseat_at_next_visible_line_start (struct it *it, int on_newline_p) |
| 5732 | { | 5742 | { |
| 5733 | int newline_found_p, skipped_p = 0; | 5743 | int newline_found_p, skipped_p = 0; |
| 5744 | struct bidi_it bidi_it_prev; | ||
| 5734 | 5745 | ||
| 5735 | newline_found_p = forward_to_next_line_start (it, &skipped_p); | 5746 | newline_found_p = forward_to_next_line_start (it, &skipped_p, &bidi_it_prev); |
| 5736 | 5747 | ||
| 5737 | /* Skip over lines that are invisible because they are indented | 5748 | /* Skip over lines that are invisible because they are indented |
| 5738 | more than the value of IT->selective. */ | 5749 | more than the value of IT->selective. */ |
| @@ -5743,7 +5754,8 @@ reseat_at_next_visible_line_start (struct it *it, int on_newline_p) | |||
| 5743 | { | 5754 | { |
| 5744 | xassert (IT_BYTEPOS (*it) == BEGV | 5755 | xassert (IT_BYTEPOS (*it) == BEGV |
| 5745 | || FETCH_BYTE (IT_BYTEPOS (*it) - 1) == '\n'); | 5756 | || FETCH_BYTE (IT_BYTEPOS (*it) - 1) == '\n'); |
| 5746 | newline_found_p = forward_to_next_line_start (it, &skipped_p); | 5757 | newline_found_p = |
| 5758 | forward_to_next_line_start (it, &skipped_p, &bidi_it_prev); | ||
| 5747 | } | 5759 | } |
| 5748 | 5760 | ||
| 5749 | /* Position on the newline if that's what's requested. */ | 5761 | /* Position on the newline if that's what's requested. */ |
| @@ -5759,11 +5771,14 @@ reseat_at_next_visible_line_start (struct it *it, int on_newline_p) | |||
| 5759 | --IT_STRING_BYTEPOS (*it); | 5771 | --IT_STRING_BYTEPOS (*it); |
| 5760 | } | 5772 | } |
| 5761 | else | 5773 | else |
| 5762 | /* Setting this flag will cause | 5774 | { |
| 5763 | bidi_move_to_visually_next not to advance, but | 5775 | /* We need to restore the bidi iterator to the state |
| 5764 | instead deliver the current character (newline), | 5776 | it had on the newline, and resync the IT's |
| 5765 | which is what the ON_NEWLINE_P flag wants. */ | 5777 | position with that. */ |
| 5766 | it->bidi_it.first_elt = 1; | 5778 | it->bidi_it = bidi_it_prev; |
| 5779 | IT_STRING_CHARPOS (*it) = it->bidi_it.charpos; | ||
| 5780 | IT_STRING_BYTEPOS (*it) = it->bidi_it.bytepos; | ||
| 5781 | } | ||
| 5767 | } | 5782 | } |
| 5768 | } | 5783 | } |
| 5769 | else if (IT_CHARPOS (*it) > BEGV) | 5784 | else if (IT_CHARPOS (*it) > BEGV) |
| @@ -5773,9 +5788,14 @@ reseat_at_next_visible_line_start (struct it *it, int on_newline_p) | |||
| 5773 | --IT_CHARPOS (*it); | 5788 | --IT_CHARPOS (*it); |
| 5774 | --IT_BYTEPOS (*it); | 5789 | --IT_BYTEPOS (*it); |
| 5775 | } | 5790 | } |
| 5776 | /* With bidi iteration, the call to `reseat' will cause | 5791 | else |
| 5777 | bidi_move_to_visually_next deliver the current character, | 5792 | { |
| 5778 | the newline, instead of advancing. */ | 5793 | /* We need to restore the bidi iterator to the state it |
| 5794 | had on the newline and resync IT with that. */ | ||
| 5795 | it->bidi_it = bidi_it_prev; | ||
| 5796 | IT_CHARPOS (*it) = it->bidi_it.charpos; | ||
| 5797 | IT_BYTEPOS (*it) = it->bidi_it.bytepos; | ||
| 5798 | } | ||
| 5779 | reseat (it, it->current.pos, 0); | 5799 | reseat (it, it->current.pos, 0); |
| 5780 | } | 5800 | } |
| 5781 | } | 5801 | } |