From: Keith David Bershatsky <esq@lawlist.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: John Wiegley <jwiegley@gmail.com>,
Marcin Borkowski <mbork@mbork.pl>,
22873@debbugs.gnu.org, Richard Stallman <rms@gnu.org>
Subject: bug#22873: Can we support multiple cursors?
Date: Sun, 13 Aug 2017 20:20:10 -0700 [thread overview]
Message-ID: <m2378u4yz9.wl%esq@lawlist.com> (raw)
In-Reply-To: <m2oaayavh1.wl%esq@lawlist.com>
I read through the comments in xdisp.c that immediately precede move_it_to and I also looked at all of it uses within xdisp.c, but I am still unclear how to limit move_it_to the it.last_visible_y. I got the impression that if I put it.last_visible_y as an argument of move_it_to, that `it` would move to that location instead of POS if POS cannot be found. I'd like the function mc_x_y_hpos_vpos to return valid coordinates if POSINT is on the visible window, or -1 for all four coordinates if it is not visible. I'm calling mc_x_y_hpos_vpos late in the redisplay cycle and the START/END arguments "should be" correct. I am unclear as why the Y and VPOS were sometimes out of bounds in a few corner cases (e.g., when I compiled a tex document that had errors in the LaTeX code) -- my best guess i
s that START/END may have been wrong because another window was opened displaying the tex compile messages.
I was pretty sure that I could substitute window_box_height for window-body-height (with a non-nil PIXELWISE argument), and that is why I phrased that previous comment with a degree of uncertainty. Based on your comment, I now feel better about using window_box_height. I was unaware that my usage of move_it_to may have been incorrect, so that is why I was trying to come up with new ways to workaround coordinates that were out of bounds. If we can fix mc_x_y_hpos_vpos, then there would be no need to perform additional subsequent checks to see whether the values were correct.
Drawing and erasing fake cursors is done by temporarily hijacking w->phys_cursor and then calling either erase_phys_cursor or draw_window_cursor.
Today, I added "if (it.current_y >= it.last_visible_y) ... goto done"
Lisp_Object
mc_x_y_hpos_vpos (struct window *w, EMACS_INT posint, EMACS_INT start, EMACS_INT end)
{
struct it it;
void *itdata = bidi_shelve_cache ();
struct text_pos pt;
int x, y, hpos, vpos;
if (posint >= start
&& posint <= end)
{
SET_TEXT_POS_FROM_MARKER (pt, w->start);
start_display (&it, w, pt);
move_it_to (&it, posint, -1, -1, -1, MOVE_TO_POS);
if (it.current_y >= it.last_visible_y)
{
bidi_unshelve_cache (itdata, false);
goto done;
}
x = it.current_x;
y = it.current_y;
hpos = it.hpos;
vpos = it.vpos;
bidi_unshelve_cache (itdata, false);
}
else
{
done:
x = -1;
y = -1;
hpos = -1;
vpos = -1;
}
return
listn (CONSTYPE_HEAP, 4, make_number (x), make_number (y), make_number (hpos), make_number (vpos));
}
next prev parent reply other threads:[~2017-08-14 3:20 UTC|newest]
Thread overview: 83+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-01 18:44 bug#22873: 25.1.50; Feature Request -- Multiple Cursors (built-in support) Keith David Bershatsky
2016-03-03 6:30 ` bug#22873: Can we support multiple Cursors? John Wiegley
2016-03-03 6:30 ` John Wiegley
2016-03-03 6:54 ` bug#22873: " Marcin Borkowski
2016-03-03 6:54 ` Marcin Borkowski
2016-03-03 11:20 ` bug#22873: " Richard Stallman
2016-03-03 11:20 ` Richard Stallman
2016-03-03 15:05 ` Marcin Borkowski
2016-03-04 9:19 ` Richard Stallman
2016-03-04 14:59 ` Stefan Monnier
2016-03-04 22:18 ` Magnar Sveen
2016-03-05 2:16 ` Stefan Monnier
2016-03-05 13:00 ` Richard Stallman
2016-03-06 4:47 ` John Wiegley
2016-03-06 20:30 ` Clément Pit--Claudel
2016-03-08 4:53 ` Stefan Monnier
2016-03-06 20:33 ` Clément Pit--Claudel
2016-03-08 4:55 ` Stefan Monnier
2016-03-05 12:58 ` Richard Stallman
2016-03-04 9:19 ` Richard Stallman
2016-03-03 15:05 ` Marcin Borkowski
2016-03-04 23:16 ` Keith David Bershatsky
2016-03-05 6:59 ` Marcin Borkowski
2016-03-09 6:50 ` Keith David Bershatsky
2016-03-09 6:27 ` Keith David Bershatsky
2016-03-09 6:45 ` Keith David Bershatsky
2016-03-09 16:03 ` Eli Zaretskii
2016-03-09 18:30 ` Keith David Bershatsky
2016-03-11 7:18 ` Keith David Bershatsky
2016-03-14 18:35 ` Keith David Bershatsky
2016-03-14 18:49 ` Eli Zaretskii
2016-03-14 22:38 ` Keith David Bershatsky
2016-03-16 8:00 ` Keith David Bershatsky
2016-03-18 4:00 ` Keith David Bershatsky
2016-03-26 23:58 ` John Wiegley
2016-03-29 3:45 ` Keith David Bershatsky
2016-03-29 14:58 ` Eli Zaretskii
2016-03-29 17:26 ` Keith David Bershatsky
2017-06-25 22:09 ` Keith David Bershatsky
2017-07-30 17:39 ` Keith David Bershatsky
2017-08-11 0:00 ` bug#22873: Can we support multiple cursors? Keith David Bershatsky
2017-08-13 18:19 ` Keith David Bershatsky
2017-08-13 18:36 ` Eli Zaretskii
2017-08-14 3:20 ` Keith David Bershatsky [this message]
2017-08-14 15:01 ` Eli Zaretskii
2017-08-14 20:35 ` Keith David Bershatsky
2017-12-27 17:13 ` bug#22873: #22873 (multiple fake cursors); and, #17684 (crosshairs) Keith David Bershatsky
2017-12-27 23:55 ` John Wiegley
2017-12-28 1:20 ` bug#22873: #22873 (multiple fake cursors) Keith David Bershatsky
2017-12-28 1:26 ` Keith David Bershatsky
2018-07-17 19:09 ` bug#22873: #22873 (multiple fake cursors); and, #17684 (crosshairs) Keith David Bershatsky
2018-08-29 6:39 ` Keith David Bershatsky
2019-05-03 0:48 ` Keith David Bershatsky
2019-05-06 18:39 ` Keith David Bershatsky
2019-05-28 8:31 ` Keith David Bershatsky
2019-06-02 7:29 ` Keith David Bershatsky
2019-07-16 19:28 ` Keith David Bershatsky
2019-07-23 6:01 ` Keith David Bershatsky
2019-08-23 5:19 ` Keith David Bershatsky
2019-10-17 21:08 ` bug#22873: #22873 (multiple fake cursors); and, #17684 (crosshairs / fill-column) Keith David Bershatsky
2020-03-04 9:03 ` Keith David Bershatsky
-- strict thread matches above, loose matches on Subject: below --
2014-06-03 20:36 bug#17684: 24.4.50; Feature Request -- Vertical Lines to the Left of and Through Characters Keith David Bershatsky
2018-07-09 5:28 ` bug#17684: #22873 (multiple fake cursors); and, #17684 (crosshairs) Keith David Bershatsky
2018-11-11 3:36 ` Keith David Bershatsky
2018-11-11 16:51 ` Keith David Bershatsky
2018-11-21 4:53 ` bug#17684: #22873 (multiple fake cursors); and, #17684 (crosshairs / fill-column) Keith David Bershatsky
2018-12-14 7:11 ` Keith David Bershatsky
2019-04-09 4:03 ` bug#17684: #22873 (multiple fake cursors); and, #17684 (crosshairs) Keith David Bershatsky
2019-04-21 5:15 ` Keith David Bershatsky
2019-04-29 1:21 ` Keith David Bershatsky
2019-06-08 23:44 ` Keith David Bershatsky
2019-06-16 8:07 ` Keith David Bershatsky
2019-06-24 2:25 ` Keith David Bershatsky
2019-06-30 5:42 ` Keith David Bershatsky
2019-07-31 19:39 ` Keith David Bershatsky
2019-10-18 1:12 ` bug#17684: #22873 (multiple fake cursors); and, #17684 (crosshairs / fill-column) Keith David Bershatsky
2019-11-18 6:58 ` Keith David Bershatsky
2020-01-27 7:39 ` Keith David Bershatsky
2020-05-02 20:50 ` Keith David Bershatsky
2020-10-01 3:00 ` bug#17684: bug#22873: " Lars Ingebrigtsen
2020-10-01 3:54 ` Keith David Bershatsky
2020-10-01 16:21 ` Lars Ingebrigtsen
2020-10-01 17:00 ` Drew Adams
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m2378u4yz9.wl%esq@lawlist.com \
--to=esq@lawlist.com \
--cc=22873@debbugs.gnu.org \
--cc=eliz@gnu.org \
--cc=jwiegley@gmail.com \
--cc=mbork@mbork.pl \
--cc=rms@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.