all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "João Távora" <joaotavora@gmail.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: jporterbugs@gmail.com, 66041@debbugs.gnu.org
Subject: bug#66041: 30.0.50; Should 'flymake-note-echo' inherit from 'compilation-info'?
Date: Mon, 18 Sep 2023 16:31:45 +0100	[thread overview]
Message-ID: <CALDnm50vDDiqfni01oTEVsSfwAffbkDXBt9m8KWeAqtLi3ix1w@mail.gmail.com> (raw)
In-Reply-To: <83sf7beemv.fsf@gnu.org>

On Mon, Sep 18, 2023 at 3:32 PM Eli Zaretskii <eliz@gnu.org> wrote:
>
> > From: João Távora <joaotavora@gmail.com>
> > Date: Mon, 18 Sep 2023 13:52:06 +0100
> > Cc: jporterbugs@gmail.com, 66041@debbugs.gnu.org
> >
> > On Mon, Sep 18, 2023 at 12:42 PM Eli Zaretskii <eliz@gnu.org> wrote:
> > >
> > > You have there two overlays, each one with a before-string, and each
> > > string has its first character propertized with (cursor t).  So Emacs
> > > picks up one of the two overlay strings to place the cursor, and it
> > > just happens to be not the one you wanted.
> >
> > Yes, something like that.  Skimming the code, I think I meant for only
> > one overlay, not two, to be the end-of-line overlay containing the two
> > strings.  But this was tricky to implement and I probably missed an
> > edge case.  There is a FIXME there, have to investigate.
> >
> > Anyway, since I have your interest, any suggestions on how you would
> > implement this? Knowing that this feature is upposed to display
> > multiple pieces of relatively short cursor-unreachable text visually
> > after the end -of-line (the text being the diagnostic text, naturally).
>
> I guess you want the cursor on the first character of the
> overlay-string that is displayed first (leftmost)?  Are you asking how
> to implement this when there are more than one overlay at EOB?

Yes, a direct answer to that question would be nice to know, too.

> > Currently I'm placing them exactly between (line-end-position) and the
> > character after that.  There is a link between this eol overlay and
> > the origin diagnostic.  If you delete the latter, the former should
> > be recalculated asap, i.e. it should ideally not wait another 1s or two
> > before Flymake re-contacts the backend for up-to-date info.
>
> This seems to hint that you are talking about something different, so
> maybe I misunderstand what you mean by "implement this" above?

By my question, I just meant that I'm interested in hearing
what approach you would take to solve this problem.  Let me
write a bit more.

The idea is to have multiple bits of diagnostic text displayed
after the end-of-line each related to a source overlay contained
within that line.  The idea of the feature is that source overlay
and eol text are linked.  If the source overlay is deleted, the
end-of-line should disappear.

It's similar to what happens with a simple 'after-string' overlay
property, but with the 'after-string' skipping over all characters
until the end of line.

Currently, I'm doing this with a single "end-of-line" overlay placed
as I explained properly (modulo bugs like this one, of course, since
I intended a single overlay but unexpectedly got two).  It's this
second end-of-line overlay which has an 'after-string' property. I use
after change functions to control the value of this property, so that
if a source overlays gets destroyed, the corresponding text in value
is deleted (and eventually also

But I could probably use multiple end-of-line overlays, with a
one-to-one correspondence to the source overlays.  I've tried that too
but abandoned it for difficulty in placing the cursor (similar problem
to this one).

And I think I tried an overlay modification hook instead of buffer after
change functions and abandoned it too for some reason.  Maybe the
modification hook isn't called at all when the overlay is completely
deleted?

Or, conceivably, it could be done without end-of-line overlays at all,
if somehow a 'eol-string' property similar to 'after-string' was
implemented in the C code.  But I would prefer a Lisp solution, of
course.

So, in summary, there is a fair bit of design space for this feature
(which exists in VS code, btw) and I wanted to know your thoughts
on these possibilities and my decisions.

João





  reply	other threads:[~2023-09-18 15:31 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-17  4:42 bug#66041: 30.0.50; Should 'flymake-note-echo' inherit from 'compilation-info'? Jim Porter
2023-09-17 21:22 ` João Távora
2023-09-17 21:54   ` Jim Porter
2023-09-17 22:15     ` João Távora
2023-09-18  4:36       ` Jim Porter
2023-09-18 10:44       ` Eli Zaretskii
2023-09-18 10:46         ` João Távora
2023-09-18 11:42           ` Eli Zaretskii
2023-09-18 12:52             ` João Távora
2023-09-18 14:32               ` Eli Zaretskii
2023-09-18 15:31                 ` João Távora [this message]
2023-09-18 17:29                   ` Eli Zaretskii
2023-09-18 18:55                     ` João Távora
2023-09-18 17:44               ` Jim Porter
2023-09-18 18:49                 ` João Távora
2023-09-18 19:00                   ` Jim Porter
2023-09-21 21:40                   ` João Távora
2023-09-24  3:38                     ` Jim Porter
2023-09-24  8:18                       ` João Távora
2023-09-25  8:59                         ` João Távora
2023-09-25 10:32                           ` Eli Zaretskii
2023-09-25 11:46                             ` João Távora
2023-09-25 12:08                               ` Eli Zaretskii
2023-09-25 12:12                                 ` João Távora
2023-09-25 12:49                                   ` Eli Zaretskii
2023-09-25 13:52                                     ` João Távora
2023-09-25 14:19                                       ` Eli Zaretskii
2023-09-25 16:55                                         ` João Távora
2023-09-25 17:23                                           ` Eli Zaretskii
2023-09-25 18:23                                             ` João Távora
2023-09-25 20:55                                               ` Jim Porter

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=CALDnm50vDDiqfni01oTEVsSfwAffbkDXBt9m8KWeAqtLi3ix1w@mail.gmail.com \
    --to=joaotavora@gmail.com \
    --cc=66041@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    --cc=jporterbugs@gmail.com \
    /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.