unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Juri Linkov <juri@jurta.org>
Cc: 5809@debbugs.gnu.org
Subject: bug#5809: 23.1.94; cross-reference by anchor yields in accurate position
Date: Sun, 04 Apr 2010 15:12:11 +0300	[thread overview]
Message-ID: <83sk7bzaas.fsf@gnu.org> (raw)
In-Reply-To: <87bpdzzdfu.fsf@mail.jurta.org>

> From: Juri Linkov <juri@jurta.org>
> Cc: monnier@iro.umontreal.ca,  5809@debbugs.gnu.org
> Date: Sun, 04 Apr 2010 14:07:28 +0300
> 
> >> There are still a problem.  I can't find a way to move the cursor
> >> inside the overlay's after-string and click links inside it.
> >> Any suggestions?
> >
> > Does it work to change the character of the overlay string on which
> > you put the `cursor' property?  (You will need to redefine C-f, C-b,
> > and friends for that.)
> 
> Sorry, I don't understand what do you mean.  Could you modify the example
> you recently sent to emacs-devel:
> 
>     (let ((pos (goto-char (point-max))))
>       (insert "foobar")
>       (overlay-put
> 	(make-overlay (+ pos 2) (+ pos 3))
> 	'after-string (propertize "-" 'cursor t)))
> 
> to allow the cursor to move inside 'after-string and to not jump over it?

Compare the results of evaluating the two forms below:

    (let ((pos (goto-char (point-max))))
      (insert "foobar")
      (overlay-put
	(make-overlay (+ pos 2) (+ pos 3))
	'after-string (concat "1" (propertize "2" 'cursor t) "34")))


    (let ((pos (goto-char (point-max))))
      (insert "foobar")
      (overlay-put
	(make-overlay (+ pos 2) (+ pos 3))
	'after-string (concat "12" (propertize "3" 'cursor t) "4")))

Both display "foo1234bar", with "1234" coming from the `after-string'
overlay.

When you type C-f on the second `o' in "foo", the cursor will be
displayed on `2' with the first form and on `3' with the second.  More
generally, the cursor will be displayed on the character in "1234"
which you propertize with a non-nil `cursor' property.

What I meant in my suggestion is to move the property from one
character to another of the `after-string' when the user types C-f
with cursor on the overlay.  E.g., if the cursor is on `2' and I type
C-f, modify the `after-string' from

     (concat "1" (propertize "2" 'cursor t) "34")
to
     (concat "12" (propertize "3" 'cursor t) "4")

Then it will appear as if the cursor moved inside the `after-string'.






  reply	other threads:[~2010-04-04 12:12 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-31  9:58 bug#5809: 23.1.94; cross-reference by anchor yields in accurate position Eli Zaretskii
2010-03-31 11:17 ` Eli Zaretskii
2010-03-31 15:08 ` Juri Linkov
2010-03-31 15:55   ` Eli Zaretskii
2010-04-01 18:06     ` Juri Linkov
2010-04-01 18:13       ` Eli Zaretskii
2010-04-01 18:30         ` Juri Linkov
2010-04-01 20:22           ` Eli Zaretskii
2010-04-01 20:49             ` Eli Zaretskii
2010-04-01 21:10               ` Juri Linkov
2010-04-01 22:16               ` Stefan Monnier
2010-04-02  7:07                 ` Eli Zaretskii
2010-04-02 14:17                   ` Drew Adams
2010-04-02 14:39                     ` Eli Zaretskii
2010-04-02 15:26                       ` Drew Adams
2010-04-04 20:39                         ` Drew Adams
2010-04-04 20:47                           ` Eli Zaretskii
2010-04-04 22:51                             ` Drew Adams
2010-04-04 23:58                               ` Juri Linkov
2010-04-05  7:01                                 ` Drew Adams
2010-04-05 16:42                                   ` Juri Linkov
2010-04-05 20:11                                     ` Stefan Monnier
2010-04-05 23:17                                       ` Drew Adams
2010-04-06  5:49                                         ` Drew Adams
2010-04-06 17:46                                           ` Drew Adams
2010-04-05 16:45                               ` Juri Linkov
2010-04-05 17:12                                 ` Drew Adams
2010-04-05 21:55                                 ` Eli Zaretskii
2010-04-05  6:38                   ` Drew Adams
2010-04-02 16:14                 ` Juri Linkov
2010-04-02 16:31                   ` Drew Adams
2010-04-02 17:41                   ` Eli Zaretskii
2010-04-02 18:01                   ` Stefan Monnier
2010-04-02 23:11                     ` Juri Linkov
2010-04-03 22:04                       ` Juri Linkov
2010-04-04  6:12                         ` Eli Zaretskii
2010-04-04 11:07                           ` Juri Linkov
2010-04-04 12:12                             ` Eli Zaretskii [this message]
2010-04-04 23:51                               ` Juri Linkov
2010-04-05  5:26                                 ` Eli Zaretskii
2010-04-04 14:31                         ` Stefan Monnier
2010-04-04 23:52                           ` Juri Linkov
2010-04-05  2:06                             ` Stefan Monnier
2010-04-05 16:50                               ` Juri Linkov
2010-04-05 20:09                                 ` Stefan Monnier
2010-04-05 22:17                                   ` Juri Linkov
2010-04-01 21:09             ` Juri Linkov
2010-04-02 18:03               ` Stefan Monnier
2010-04-25 18:28 ` Chong Yidong

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

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=83sk7bzaas.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=5809@debbugs.gnu.org \
    --cc=juri@jurta.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 public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).