[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#26694: preview-at-point fails on very long lines with "End of buffer
From: |
Mosè Giordano |
Subject: |
bug#26694: preview-at-point fails on very long lines with "End of buffer" |
Date: |
Sun, 28 May 2017 17:58:10 +0200 |
Hi Keita,
2017-05-28 15:12 GMT+02:00 Ikumi Keita <address@hidden>:
> I looked into this problem and would like to share my thoughts about
> this.
Thanks! As I said, mine was more a workaround rather than a real fix,
I'm happy someone else is addressing the issue :-)
> (1) Some problems of the essentially same origin still remain.
> (a) Open Frank's sample file and enable TeX-source-correlate-mode.
> (b) Put the region over "$x$".
> (c) Type C-c C-p C-r. "End of buffer" error again. C-c C-r gives
> the same error, too.
>
> Here is the relavant codes Mosè modified in tex-buf.el:
> (when TeX-source-correlate-mode
> (let ((line-col (with-current-buffer orig-buffer
> (cons (TeX-line-number-at-pos)
> (current-column)))))
> (goto-char (point-min))
> (forward-line (1- (abs (- header-offset (car line-col)))))
> (forward-char (cdr line-col))))
> It is this `forward-char' that raises the error. The number
> returned by `(current-column)' is not correct when, in original
> buffer, the region starts in the middle of a line and the point is
> on the first line of the region. If a relatively small region has
> no newline in it and is put on the rightward enough of a very long
> line, the returned value is too large for `forward-char'.
>
> (2) We can find a function `TeX-region-update-point', which does a
> similar job but without adjustment of the column. I suppose we can
> unify them.
>
> Considering that, in addition to (1) and (2), update of the position of
> the point in _region_.tex is only necessary when we invoke viewer, call
> to `TeX-region-update-point' can be summarized in `TeX-command' with
> test of `(string= name "View")'.
>
> I made a tentative patch along these idea and attached it to this
> message. I stopped using `current-column' and use difference betewwn
> point and max{beginning of line, beginning of region}.
I like your approach! In addition, this doesn't need changing the
arguments of `TeX-region-create', that's what I wanted to avoid.
> (3) It seems that the feature of forward and inverse search for region
> file is not mature yet. If I understand correctly, it works only
> with evince, atril and pdf-tools as viewer, right?
Evince and Atril yes (see release notes for AUCTeX 11.89), I don't
know about pdf-tools but it's possible.
> The other
> viewers in `TeX-view-program-list-builtin' receive the file name and
> line number with "%b" and "%n" expanders, but these are not expanded
> to suitable value when using region file.
> Maybe we should add other expanders which work even with region
> file.
Other expanders? Why not adapting the existing ones? Anyway, I'm not
sure that inverse search would work with other viewers.
> (4) Using `current-column' might not be suitable even when we use evince
> or atril. The function `TeX-evince-sync-view-1' passes required
> parameters to the viewers like this:
> (list :struct :int32 (TeX-line-number-at-pos)
> :int32 (1+ (current-column)))
> Most of CJK letters count as occuping 2 columns, so the column
> number is not equal to the number of the characters counting from
> the beginning of a line. (I don't know what is the correct
> "column" parameters for evince and atril (number of letters?
> bytes in UTF8? or other?), so don't know how we should change this
> part.)
I don't know, sorry.
Bye,
Mosè