unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* finger-pointer curser as default for mouse-face text
@ 2004-10-17 19:27 Drew Adams
  2004-10-18 11:19 ` Kim F. Storm
                   ` (2 more replies)
  0 siblings, 3 replies; 91+ messages in thread
From: Drew Adams @ 2004-10-17 19:27 UTC (permalink / raw)


Silly comment, I know, but this has been bugging me, so I guess I'll get it
off my chest.

The default mouse pointer for mouse-face text is now an index-finger
pointing hand. That pointer is commonly used by Web browsers to indicate
that the pointer is over a hyperlink or an action button, so that's
presumably the reason it is now used in Emacs for the same thing.

However, in common Web browsers, the mouse button to activate such a link or
button is mouse-1, not mouse-2. What bugs me is that the index-finger
pointer suggests to me to use mouse-1, because the index finger (wired, in
my head, to mouse-1) is the one doing the pointing.

I know, I must be nuts, but I still fall for this subliminal suggestion, and
I try to click with mouse-1!  Brain dead, I guess - time for a vacation.

Anyway, I'm _not_ suggesting we use a pointer graphic with the middle finger
:-)! But I wonder if anyone else thinks we should choose a different default
pointer because of this possible confusion. No, I don't have an alternative
pointer in mind.

 - Drew

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-17 19:27 Drew Adams
@ 2004-10-18 11:19 ` Kim F. Storm
  2004-10-18 13:59 ` Richard Stallman
  2004-12-07 13:16 ` Per Abrahamsen
  2 siblings, 0 replies; 91+ messages in thread
From: Kim F. Storm @ 2004-10-18 11:19 UTC (permalink / raw)
  Cc: emacs-devel

"Drew Adams" <drew.adams@oracle.com> writes:

> I know, I must be nuts, but I still fall for this subliminal suggestion, and
> I try to click with mouse-1!  Brain dead, I guess - time for a vacation.

Try this patch  (just proof of concept -- it should at least be
user customizable).

*** mouse.el	17 Oct 2004 00:11:15 +0200	1.250
--- mouse.el	18 Oct 2004 13:16:54 +0200	
***************
*** 864,869 ****
--- 864,874 ----
  			 (or end-point
  			     (= (window-start start-window)
  				start-window-start)))
+ 		(if (and (eq fun 'mouse-set-point)
+ 			 (not end-point)
+ 			 (consp event)
+ 			 (get-char-property start-point 'mouse-face))
+ 		    (setcar event 'mouse-2))
  		(setq unread-command-events
  		      (cons event unread-command-events)))))
  	(delete-overlay mouse-drag-overlay)))))


-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-17 19:27 Drew Adams
  2004-10-18 11:19 ` Kim F. Storm
@ 2004-10-18 13:59 ` Richard Stallman
  2004-12-07 13:16 ` Per Abrahamsen
  2 siblings, 0 replies; 91+ messages in thread
From: Richard Stallman @ 2004-10-18 13:59 UTC (permalink / raw)
  Cc: emacs-devel

    However, in common Web browsers, the mouse button to activate such a link or
    button is mouse-1, not mouse-2. What bugs me is that the index-finger
    pointer suggests to me to use mouse-1, because the index finger (wired, in
    my head, to mouse-1) is the one doing the pointing.

Mouse-1 can't do that.  Mouse-1 in Emacs is a general Emacs command
that is meanigful anywhere in the buffer.

Anyway, this is not the time to change features.

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
       [not found] <DNEMKBNJBGPAOPIJOOICAEKKCAAA.drew.adams@oracle.com>
@ 2004-10-19  9:04 ` Kim F. Storm
  2004-10-19 15:31   ` Lennart Borgman
                     ` (3 more replies)
  0 siblings, 4 replies; 91+ messages in thread
From: Kim F. Storm @ 2004-10-19  9:04 UTC (permalink / raw)
  Cc: Richard Stallman, emacs-devel

"Drew Adams" <drew.adams@oracle.com> writes:

> I see what you're saying. You've made it possible to follow links (and click
> buttons) using mouse-1 (in addition to using mouse-2).
>
> I really must not have made myself clear. RMS had the same misunderstanding
> as you.

Well, common user interface practice is that clicking mouse-1 on a
link follows that link.

>
> My point was not that using mouse-2 is not good. I think mouse-2 should
> remain the way to click links and buttons in Emacs, don't you? 

While I find this discussion of which pointer to use "amusing", IMO
using mouse-2 is a serious flaw in the emacs user interface. 

For example, on my notebook, the touchpad doesn't have mouse-2, so
I'm forced to click two mouse buttons which are really not designed to
support that (it's scary EVERY time I need to do so).


>                                                                We want to be
> able to use mouse-1 to select text inside a link, without accidentally
> clicking the link.

Most other applications manage just fine to allow a user to use
mouse-1 for both setting the point, marking a region, and following a
link.

My patch to mouse-drag-region-1 was a sample of how to do use mouse-1
in addition to mouse-2 to following links in emacs too.

The only real problem is how to mark text in the middle of a link -- 
but IMO that's a much less frequent operation that following the link.

And with my patch, you can actually still DRAG to mark, it's only the
single click that doesn't just set the mark, but follows the link as
well.  I don't see ANY problem with that.

At least, we could make it a user option:

(defcustom mouse-1-click-follows-link nil
  "Non-nil means that clicking mouse-1 on a link follows the link.
If value is `always', follow implicit links too (this means that
mouse-2 has a specific binding in the current buffer).
Otherwise, only follow links which have the mouse-face property.

To set point in a link, either drag the mouse (which sets the region),
or double-click in the link."
  :type '(choice ...))

[Of course, my patch need more work to do this, but it is still a
proof of concept].

>
> My point was that the pointer graphic is a hand with a pointing index finger
> (finger-1), and that it would be good to change this default pointer
> graphic. That's all.

I see your point, but I disagree the hand pointer is a bad choice -- it clearly
identifies the link as a link.

>
> I'd prefer to see a graphic that doesn't point with finger-1, because that
> pointer is commonly used in Web browsers (and some other applications) where
> you use mouse-1 to click links. The mental association between that pointer
> and mouse-1 is pretty strong by now (at least for me): the pointer makes me
> want to click mouse-1 (which is incorrect).

Why is that incorrect?  My point is that your perception is correct -- it 
is emacs that's too restrictive here.


>> *** mouse.el	17 Oct 2004 00:11:15 +0200	1.250
>> --- mouse.el	18 Oct 2004 13:16:54 +0200
>> ***************
>> *** 864,869 ****
>> --- 864,874 ----
>>   			 (or end-point
>>   			     (= (window-start start-window)
>>   				start-window-start)))
>> + 		(if (and (eq fun 'mouse-set-point)
>> + 			 (not end-point)
>> + 			 (consp event)
>> + 			 (get-char-property start-point 'mouse-face))
>> + 		    (setcar event 'mouse-2))
>>   		(setq unread-command-events
>>   		      (cons event unread-command-events)))))
>>   	(delete-overlay mouse-drag-overlay)))))

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-19  9:04 ` finger-pointer curser as default for mouse-face text Kim F. Storm
@ 2004-10-19 15:31   ` Lennart Borgman
  2004-10-19 16:12   ` Drew Adams
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 91+ messages in thread
From: Lennart Borgman @ 2004-10-19 15:31 UTC (permalink / raw)
  Cc: Richard Stallman, emacs-devel

----- Original Message ----- 
From: "Kim F. Storm" <storm@cua.dk>


: Well, common user interface practice is that clicking mouse-1 on a
: link follows that link.
:
: I see your point, but I disagree the hand pointer is a bad choice -- it
clearly
: identifies the link as a link.

I support these points. Whether one likes it or not I think it is good to
follow common user interface practice if it is not too hard. I believe that
is one of the keys to success.

- Lennart

^ permalink raw reply	[flat|nested] 91+ messages in thread

* RE: finger-pointer curser as default for mouse-face text
  2004-10-19  9:04 ` finger-pointer curser as default for mouse-face text Kim F. Storm
  2004-10-19 15:31   ` Lennart Borgman
@ 2004-10-19 16:12   ` Drew Adams
  2004-10-21 13:56   ` Richard Stallman
  2004-10-21 14:09   ` David Kastrup
  3 siblings, 0 replies; 91+ messages in thread
From: Drew Adams @ 2004-10-19 16:12 UTC (permalink / raw)
  Cc: Richard Stallman, emacs-devel

Kim, you convinced me (at least).

On mouse-face links, users can get by with other ways to select text, as you
mention (drag, use keyboard etc.), so we could use mouse-1 for link & button
clicks (as a user option).

My only gripe was that the finger-1 pointer graphic didn't fit the
mouse-2-click behavior, so if we changed to mouse-1, that would be fine.

BTW, isn't the behavior you propose what we have already in Customize
buffers?


-----Original Message-----From: Kim F. Storm
using mouse-2 is a serious flaw in the emacs user interface.
For example, on my notebook, the touchpad doesn't have mouse-2, so
I'm forced to click two mouse buttons

Most other applications manage just fine to allow a user to use mouse-1 for
both setting the point, marking a region, and following a link.

My patch to mouse-drag-region-1 was a sample of how to do use mouse-1
in addition to mouse-2 to following links in emacs too. The only real
problem is how to mark text in the middle of a link -- but IMO that's a much
less frequent operation that following the link.

And with my patch, you can actually still DRAG to mark, it's only the
single click that doesn't just set the mark, but follows the link as
well.  I don't see ANY problem with that. At least, we could make it a user
option

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-19  9:04 ` finger-pointer curser as default for mouse-face text Kim F. Storm
  2004-10-19 15:31   ` Lennart Borgman
  2004-10-19 16:12   ` Drew Adams
@ 2004-10-21 13:56   ` Richard Stallman
  2004-10-21 14:47     ` Kim F. Storm
  2004-10-21 14:09   ` David Kastrup
  3 siblings, 1 reply; 91+ messages in thread
From: Richard Stallman @ 2004-10-21 13:56 UTC (permalink / raw)
  Cc: drew.adams, emacs-devel

    Most other applications manage just fine to allow a user to use
    mouse-1 for both setting the point, marking a region, and following a
    link.

How do they do this?  Could you describe the behavior pattern
of Mouse-1 in those applications?

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-19  9:04 ` finger-pointer curser as default for mouse-face text Kim F. Storm
                     ` (2 preceding siblings ...)
  2004-10-21 13:56   ` Richard Stallman
@ 2004-10-21 14:09   ` David Kastrup
  2004-10-21 14:42     ` Kim F. Storm
  3 siblings, 1 reply; 91+ messages in thread
From: David Kastrup @ 2004-10-21 14:09 UTC (permalink / raw)
  Cc: Richard Stallman, Drew Adams, emacs-devel

storm@cua.dk (Kim F. Storm) writes:

> "Drew Adams" <drew.adams@oracle.com> writes:
>
>> I see what you're saying. You've made it possible to follow links (and click
>> buttons) using mouse-1 (in addition to using mouse-2).
>>
>> I really must not have made myself clear. RMS had the same misunderstanding
>> as you.
>
> Well, common user interface practice is that clicking mouse-1 on a
> link follows that link.
>
>>
>> My point was not that using mouse-2 is not good. I think mouse-2 should
>> remain the way to click links and buttons in Emacs, don't you? 
>
> While I find this discussion of which pointer to use "amusing", IMO
> using mouse-2 is a serious flaw in the emacs user interface. 

In Gnus, I get buttons displayed like
[attachment image.jpg]

I can click with the middle button to execute a default operation.
What I do more frequently is click with the left button, then press a
key like "o" to indicate the action.  Most (but I don't think all)
actions can be selected with a context menu on the right mouse button,
but that also means that I have to use a mouse-based file dialog,
which is far more inconvenient.  It is also much faster for me to type
a single letter than to drag the mouse cursor to the right menu entry.

If clicking mouse-1 on the button would launch the default action,
this would be far more inconvenient for me.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-21 14:09   ` David Kastrup
@ 2004-10-21 14:42     ` Kim F. Storm
  2004-10-21 15:21       ` David Kastrup
  0 siblings, 1 reply; 91+ messages in thread
From: Kim F. Storm @ 2004-10-21 14:42 UTC (permalink / raw)
  Cc: Richard Stallman, Drew Adams, emacs-devel

David Kastrup <dak@gnu.org> writes:

> In Gnus, I get buttons displayed like
> [attachment image.jpg]
>
> I can click with the middle button to execute a default operation.
> What I do more frequently is click with the left button, then press a
> key like "o" to indicate the action.  Most (but I don't think all)
> actions can be selected with a context menu on the right mouse button,
> but that also means that I have to use a mouse-based file dialog,
> which is far more inconvenient.  It is also much faster for me to type
> a single letter than to drag the mouse cursor to the right menu entry.
>
> If clicking mouse-1 on the button would launch the default action,
> this would be far more inconvenient for me.

I see the problem.  Maybe mouse-2 could set the point ?

Anyways, nobody would force you to use the mouse-1-follows-link feature.

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-21 13:56   ` Richard Stallman
@ 2004-10-21 14:47     ` Kim F. Storm
  2004-10-21 16:03       ` Lennart Borgman
  2004-10-23  4:48       ` Richard Stallman
  0 siblings, 2 replies; 91+ messages in thread
From: Kim F. Storm @ 2004-10-21 14:47 UTC (permalink / raw)
  Cc: drew.adams, emacs-devel

Richard Stallman <rms@gnu.org> writes:

>     Most other applications manage just fine to allow a user to use
>     mouse-1 for both setting the point, marking a region, and following a
>     link.
>
> How do they do this?  Could you describe the behavior pattern
> of Mouse-1 in those applications?

If you click mouse-1 outside a link, it moves the cursor.

If you click on a link, it follows the link.

If you drag inside or over a link behaviour varies with the
application, but my suggestion for emacs is that it highlights the
text and sets point at the end of the drag.

What you typically cannot do directly is set the mouse in the
middle of a link.  Typically you would use mouse-3 (right mouse)
to get a context menu for the link, and then cancel the menu.

Maybe in our case, if we enable this feature (as a user option)
clicking mouse-2 on a link should just set point there?

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-21 14:42     ` Kim F. Storm
@ 2004-10-21 15:21       ` David Kastrup
  2004-10-21 19:55         ` Kim F. Storm
  0 siblings, 1 reply; 91+ messages in thread
From: David Kastrup @ 2004-10-21 15:21 UTC (permalink / raw)
  Cc: Richard Stallman, Drew Adams, emacs-devel

storm@cua.dk (Kim F. Storm) writes:

> David Kastrup <dak@gnu.org> writes:
>
>> In Gnus, I get buttons displayed like
>> [attachment image.jpg]
>>
>> I can click with the middle button to execute a default operation.
>> What I do more frequently is click with the left button, then press a
>> key like "o" to indicate the action.  Most (but I don't think all)
>> actions can be selected with a context menu on the right mouse button,
>> but that also means that I have to use a mouse-based file dialog,
>> which is far more inconvenient.  It is also much faster for me to type
>> a single letter than to drag the mouse cursor to the right menu entry.
>>
>> If clicking mouse-1 on the button would launch the default action,
>> this would be far more inconvenient for me.
>
> I see the problem.  Maybe mouse-2 could set the point ?

Basically you propose that we interchange button-1 and button-2 on
active text areas.  If I take packages like preview-latex, we can
click on formula images in it.  Mouse button 2 gets you the source
text, but you can also just mark it by dragging mouse-1, or by
clicking mouse-1 on the image, and mouse-3 behind it.

Your proposal would mean that I have to click mouse-2 and mouse-3
around the area for marking, or drag mouse-1.

> Anyways, nobody would force you to use the mouse-1-follows-link
> feature.

That's never a good argument.  If we want to introduce a new feature,
we want to make it as good as possible instead of claiming it is the
user's fault anyway if he chooses to activate it.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-21 14:47     ` Kim F. Storm
@ 2004-10-21 16:03       ` Lennart Borgman
  2004-10-23  4:48       ` Richard Stallman
  1 sibling, 0 replies; 91+ messages in thread
From: Lennart Borgman @ 2004-10-21 16:03 UTC (permalink / raw)
  Cc: drew.adams, emacs-devel

----- Original Message ----- 
From: "Kim F. Storm" <storm@cua.dk>


: Richard Stallman <rms@gnu.org> writes:
:
: >     Most other applications manage just fine to allow a user to use
: >     mouse-1 for both setting the point, marking a region, and following
a
: >     link.
: >
: > How do they do this?  Could you describe the behavior pattern
: > of Mouse-1 in those applications?
:
: If you click mouse-1 outside a link, it moves the cursor.
:
: If you click on a link, it follows the link.
:
: If you drag inside or over a link behaviour varies with the
: application, but my suggestion for emacs is that it highlights the
: text and sets point at the end of the drag.

This is the behaviour of the most common web browsers (like Firefox). I
think most other applications have tried to mimic this behaviour and I
believe that is good. Consistent behaviour across applications as far as
possible without sacrificing too much is what most users seems to want.

Firefox does not allow selecting by dragging inside a normal link (an
a-tag), since this is preserved for dragging the link. In Emacs there is
currently no need to drag a link as far as I know so Emacs could allow
selecting by dragging inside a link too.


Some further points about mouse use: I mostly use the keyboard and in Emacs
I mostly found that I do not like the mouse behaviour or that it is
inconsistent. Maybe it is because I am still using 21.3.1 or maybe it is
because I am running Emacs on ms windows, I do not know?

Here is how it works in Emacs Info for me:

* For link at the top:
If i click with left button it follows the link. If I click with right
button nothing happens. I can't drag inside a top link.

* For a link on the page:
If I click with with left button point moves. If I click with right button
region is selected selected and highlighted (even though I started with
bin/emacs.exe -q --no-site-file??).


I would be glad for more consistent behaviour both within Emacs and between
Emacs and the most common applications.


- Lennart

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-21 15:21       ` David Kastrup
@ 2004-10-21 19:55         ` Kim F. Storm
  2004-10-21 20:09           ` Drew Adams
  0 siblings, 1 reply; 91+ messages in thread
From: Kim F. Storm @ 2004-10-21 19:55 UTC (permalink / raw)
  Cc: Richard Stallman, Drew Adams, emacs-devel

David Kastrup <dak@gnu.org> writes:

> storm@cua.dk (Kim F. Storm) writes:
>
>> David Kastrup <dak@gnu.org> writes:
>>
>>> In Gnus, I get buttons displayed like
>>> [attachment image.jpg]
>>>
>>> I can click with the middle button to execute a default operation.
>>> What I do more frequently is click with the left button, then press a
>>> key like "o" to indicate the action.  Most (but I don't think all)
>>> actions can be selected with a context menu on the right mouse button,
>>> but that also means that I have to use a mouse-based file dialog,
>>> which is far more inconvenient.  It is also much faster for me to type
>>> a single letter than to drag the mouse cursor to the right menu entry.
>>>
>>> If clicking mouse-1 on the button would launch the default action,
>>> this would be far more inconvenient for me.
>>

In the case of gnus attachments, you can click mouse-1 to THE RIGHT of
the button and still be able to use the key bindings.

Alternatively, you can drag mouse-1 in the link to set point there.

>> I see the problem.  Maybe mouse-2 could set the point ?

I generally want to avoid messing with mouse-2 or mouse-3 -- as the
major deviation from common GUI standards only affects mouse-1.

The major problem with mouse-2 is when you only have a two-button mouse
(can you even get a laptop with three mouse buttons).

Sure, I also have a three-button mouse -- but the middle button is
on a mouse wheel which is also awkward to click.

I have been using my little hack for a few days now, and I absolutely
love it.  No more messing with clicking both mouse-buttons or mouse
wheel to follow a link.  I still have to find

>
> Basically you propose that we interchange button-1 and button-2 on
> active text areas.  

I didn't propose it -- it was just an idea...  It's obviously not
a good idea in general.

>> Anyways, nobody would force you to use the mouse-1-follows-link
>> feature.
>
> That's never a good argument.  If we want to introduce a new feature,
> we want to make it as good as possible instead of claiming it is the
> user's fault anyway if he chooses to activate it.

Sure.  We need to find a way to DTRT in cases where mouse-1 is needed.

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 91+ messages in thread

* RE: finger-pointer curser as default for mouse-face text
  2004-10-21 19:55         ` Kim F. Storm
@ 2004-10-21 20:09           ` Drew Adams
  2004-10-21 21:45             ` Stefan Monnier
  0 siblings, 1 reply; 91+ messages in thread
From: Drew Adams @ 2004-10-21 20:09 UTC (permalink / raw)
  Cc: Richard Stallman, emacs-devel

What about using keyboard modifiers with mouse-1 on an active area (link,
button) to do what mouse-1 would normally do on an inactive area (e.g.
mouse-drag-region)?

The following are not defined by default, at least in most Emacs modes:
C-M-mouse-1, C-S-mouse-1, M-S-mouse-1.


-----Original Message-----From: Kim F. Storm
In the case of gnus attachments, you can click mouse-1 to THE RIGHT of
the button and still be able to use the key bindings. Alternatively, you can
drag mouse-1 in the link to set point there.

I generally want to avoid messing with mouse-2 or mouse-3 -- as the
major deviation from common GUI standards only affects mouse-1. The major
problem with mouse-2 is when you only have a two-button mouse...

Sure.  We need to find a way to DTRT in cases where mouse-1 is needed.

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-21 20:09           ` Drew Adams
@ 2004-10-21 21:45             ` Stefan Monnier
  2004-10-21 22:09               ` David Kastrup
  0 siblings, 1 reply; 91+ messages in thread
From: Stefan Monnier @ 2004-10-21 21:45 UTC (permalink / raw)
  Cc: emacs-devel, Richard Stallman, Kim F. Storm

> What about using keyboard modifiers with mouse-1 on an active area (link,
> button) to do what mouse-1 would normally do on an inactive area (e.g.
> mouse-drag-region)?

> The following are not defined by default, at least in most Emacs modes:
> C-M-mouse-1, C-S-mouse-1, M-S-mouse-1.

I think the effort required to remember such bindings, coupled with the fact
that they'd only be used on relatively rare occasions, makes me think it's
a bad idea.
Especially since in all likely hood, after setting point in the middle of
a button, you're going to do something with the keyboard rather than with
the mouse, which makes me think that using the keyboard to move to that spot
would work just as well.


        Stefan

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-21 21:45             ` Stefan Monnier
@ 2004-10-21 22:09               ` David Kastrup
  2004-10-22  9:10                 ` Kim F. Storm
  0 siblings, 1 reply; 91+ messages in thread
From: David Kastrup @ 2004-10-21 22:09 UTC (permalink / raw)
  Cc: emacs-devel, Richard Stallman, Drew Adams, Kim F. Storm

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> What about using keyboard modifiers with mouse-1 on an active area (link,
>> button) to do what mouse-1 would normally do on an inactive area (e.g.
>> mouse-drag-region)?
>
>> The following are not defined by default, at least in most Emacs modes:
>> C-M-mouse-1, C-S-mouse-1, M-S-mouse-1.
>
> I think the effort required to remember such bindings, coupled with the fact
> that they'd only be used on relatively rare occasions, makes me think it's
> a bad idea.
> Especially since in all likely hood, after setting point in the middle of
> a button, you're going to do something with the keyboard rather than with
> the mouse, which makes me think that using the keyboard to move to that spot
> would work just as well.

Ah, but if you use cursor-left or cursor-right to move onto a preview,
the preview opens up into normal text (some sort of special
auto-reveal action).  So in the particular case of preview-latex, it
is not an alternative to click just before or after a preview and then
move onto it using forward-char or backward-char.

I am not claiming that this is the ultimate reason or whatever, I am
just pointing out that in this case it would be problematic.

In addition, we have to be aware that clickable fields are usually
implemented with keymaps.  And that means that there is no way to
magically change all buttons in all applications: it is a convention
rather than an API.  If we want to change to a different convention,
we first need to define an API where the current convention is
accessible to outside packages, then wait for a few releases with the
old convention in place, and then try changing the default and weather
the inconsistency storm from packages that have not yet adhered to the
API telling it what mouse buttons to use.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-21 22:09               ` David Kastrup
@ 2004-10-22  9:10                 ` Kim F. Storm
  2004-10-22 12:45                   ` David Kastrup
  0 siblings, 1 reply; 91+ messages in thread
From: Kim F. Storm @ 2004-10-22  9:10 UTC (permalink / raw)
  Cc: emacs-devel, Stefan Monnier, Drew Adams, Richard Stallman

David Kastrup <dak@gnu.org> writes:

> I am not claiming that this is the ultimate reason or whatever, I am
> just pointing out that in this case it would be problematic.

My mouse-1 patch only sets in with links that have mouse-face.

Why do preview-latex images need to have mouse-face property ?
Images can have mouse-2 bindings even without that.

>
> In addition, we have to be aware that clickable fields are usually
> implemented with keymaps.  And that means that there is no way to
> magically change all buttons in all applications: it is a convention
> rather than an API.  If we want to change to a different convention,
> we first need to define an API where the current convention is
> accessible to outside packages, then wait for a few releases with the
> old convention in place, and then try changing the default and weather
> the inconsistency storm from packages that have not yet adhered to the
> API telling it what mouse buttons to use.

If mouse-1 has a non-standard binding on a link, my patch obeys that
binding.

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-22  9:10                 ` Kim F. Storm
@ 2004-10-22 12:45                   ` David Kastrup
  2004-10-22 15:03                     ` Kim F. Storm
  0 siblings, 1 reply; 91+ messages in thread
From: David Kastrup @ 2004-10-22 12:45 UTC (permalink / raw)
  Cc: emacs-devel, Stefan Monnier, Drew Adams, Richard Stallman

storm@cua.dk (Kim F. Storm) writes:

> David Kastrup <dak@gnu.org> writes:
>
>> I am not claiming that this is the ultimate reason or whatever, I am
>> just pointing out that in this case it would be problematic.
>
> My mouse-1 patch only sets in with links that have mouse-face.
>
> Why do preview-latex images need to have mouse-face property ?
> Images can have mouse-2 bindings even without that.

But the mouse-face property is the normal way to indicate that using
mouse-2 will do something different from pasting.

>> In addition, we have to be aware that clickable fields are usually
>> implemented with keymaps.  And that means that there is no way to
>> magically change all buttons in all applications: it is a
>> convention rather than an API.  If we want to change to a different
>> convention, we first need to define an API where the current
>> convention is accessible to outside packages, then wait for a few
>> releases with the old convention in place, and then try changing
>> the default and weather the inconsistency storm from packages that
>> have not yet adhered to the API telling it what mouse buttons to
>> use.
>
> If mouse-1 has a non-standard binding on a link, my patch obeys that
> binding.

So what?  preview-latex images don't have a non-standard binding for
mouse-1.  So I am citing it as an example that will cause trouble and
requires a migration plan instead of a sudden change.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-22 12:45                   ` David Kastrup
@ 2004-10-22 15:03                     ` Kim F. Storm
  2004-10-22 15:56                       ` David Kastrup
  0 siblings, 1 reply; 91+ messages in thread
From: Kim F. Storm @ 2004-10-22 15:03 UTC (permalink / raw)
  Cc: emacs-devel, Stefan Monnier, Drew Adams, Richard Stallman

David Kastrup <dak@gnu.org> writes:

>> Why do preview-latex images need to have mouse-face property ?
>> Images can have mouse-2 bindings even without that.
>
> But the mouse-face property is the normal way to indicate that using
> mouse-2 will do something different from pasting.

What visible effect do you get for an image when moving the mouse over it?

You can also change the mouse pointer shape.

>
>>> In addition, we have to be aware that clickable fields are usually
>>> implemented with keymaps.  And that means that there is no way to
>>> magically change all buttons in all applications: it is a
>>> convention rather than an API.  If we want to change to a different
>>> convention, we first need to define an API where the current
>>> convention is accessible to outside packages, then wait for a few
>>> releases with the old convention in place, and then try changing
>>> the default and weather the inconsistency storm from packages that
>>> have not yet adhered to the API telling it what mouse buttons to
>>> use.
>>
>> If mouse-1 has a non-standard binding on a link, my patch obeys that
>> binding.
>
> So what?  preview-latex images don't have a non-standard binding for
> mouse-1.  So I am citing it as an example that will cause trouble and
> requires a migration plan instead of a sudden change.

It was one way to avoid the mouse-1 remapping (by trivial code rewrite).

I have little hope of finding a perfect solution (i.e. one which works
for everything without anything having to adapt to some kind of method
to fine-tune the behaviour in specific cases).  Maybe it's ok if it
works in 95% of all cases (and the remaning 5% must be tweaked a
little to work).

Link on images may be special anyway -- so perhaps I shouldn't remap
over an image.  

Maybe it should be mode specific, i.e. only do this if buffer is in
some known major mode (e.g. info, help, gnus summary, custom).

e.g.

(put 'help-mode 'map-links t)
(put 'info-mode 'map-links t)

could later be enhanced to support:

(put 'preview-latex-mode 'map-links 'text-only)

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-22 15:03                     ` Kim F. Storm
@ 2004-10-22 15:56                       ` David Kastrup
  0 siblings, 0 replies; 91+ messages in thread
From: David Kastrup @ 2004-10-22 15:56 UTC (permalink / raw)
  Cc: emacs-devel, Stefan Monnier, Drew Adams, Richard Stallman

storm@cua.dk (Kim F. Storm) writes:

> David Kastrup <dak@gnu.org> writes:
>
>>> Why do preview-latex images need to have mouse-face property ?
>>> Images can have mouse-2 bindings even without that.
>>
>> But the mouse-face property is the normal way to indicate that using
>> mouse-2 will do something different from pasting.
>
> What visible effect do you get for an image when moving the mouse
> over it?

Transparent areas of the image turn green (or whatever your highlight
color is).  preview-latex explicitly places a transparent border
around images to achieve that effect.  Even if the image is not
transparent, some part of the line spacing usually turns green.

> You can also change the mouse pointer shape.

But that's not the "traditional way" since it was not available for as
long.  And it's beside the point, anyway, since it does not provide
any better idea about when to interchange mouse-1 and mouse-2.

>> So what?  preview-latex images don't have a non-standard binding
>> for mouse-1.  So I am citing it as an example that will cause
>> trouble and requires a migration plan instead of a sudden change.
>
> It was one way to avoid the mouse-1 remapping (by trivial code
> rewrite).
>
> I have little hope of finding a perfect solution (i.e. one which
> works for everything without anything having to adapt to some kind
> of method to fine-tune the behaviour in specific cases).  Maybe it's
> ok if it works in 95% of all cases (and the remaning 5% must be
> tweaked a little to work).

Sure.  That's why I say we need a migration plan.  Providing an
option, and then at some time making that option a default is not a
migration plan.  We need to define what an application needs to do in
order to get consistent behavior both with and without that option,
and we need to get the message out.  And then, at one time, people can
hope to turn this option on and off according to their preferences
without expecting to get something completely inconsistent.  And when
we arrive at that stage, it might make sense switching the default of
the option.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-21 14:47     ` Kim F. Storm
  2004-10-21 16:03       ` Lennart Borgman
@ 2004-10-23  4:48       ` Richard Stallman
  2004-10-24 12:42         ` Kim F. Storm
  1 sibling, 1 reply; 91+ messages in thread
From: Richard Stallman @ 2004-10-23  4:48 UTC (permalink / raw)
  Cc: drew.adams, emacs-devel

    What you typically cannot do directly is set the mouse in the
    middle of a link.  Typically you would use mouse-3 (right mouse)
    to get a context menu for the link, and then cancel the menu.

Mouse-3 in Emacs does not move point; if you cancel the menu,
it won't do anything, so point won't move.

Maybe it is good enough to be able to drag the mouse into the area
and then release it and ignore the mark setting that it made.

This is the sort of change for which we need to conduct a poll of the
users.

    Maybe in our case, if we enable this feature (as a user option)
    clicking mouse-2 on a link should just set point there?

That sounds rather strange and backwards.

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-23  4:48       ` Richard Stallman
@ 2004-10-24 12:42         ` Kim F. Storm
  2004-10-24 12:59           ` Lennart Borgman
                             ` (3 more replies)
  0 siblings, 4 replies; 91+ messages in thread
From: Kim F. Storm @ 2004-10-24 12:42 UTC (permalink / raw)
  Cc: drew.adams, emacs-devel

Richard Stallman <rms@gnu.org> writes:

> Maybe it is good enough to be able to drag the mouse into the area
> and then release it and ignore the mark setting that it made.
>
> This is the sort of change for which we need to conduct a poll of the
> users.

I found a simpler solution which works really well, as it provides the
fallback directly on mouse-1 itself:

Measure the time between the mouse-1 down event and the up event, and
if it less than 300 ms (configurable), follow the link, else do what
mouse-1 normally does.

So a "fast" click follows the link, a slightly slower click sets the
point (or whatever mouse-1 does).  Dragging the mouse also inhibits
following the link.

Here is a patch:

Index: mouse.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/mouse.el,v
retrieving revision 1.251
diff -c -r1.251 mouse.el
*** mouse.el	18 Oct 2004 09:29:26 -0000	1.251
--- mouse.el	24 Oct 2004 12:38:38 -0000
***************
*** 48,53 ****
--- 48,66 ----
    :type 'boolean
    :group 'mouse)
  
+ (defcustom mouse-1-click-follows-link 300
+   "Non-nil means that clicking mouse-1 on a link follows the link.
+ This is only done for links which have the mouse-face property.
+ 
+ If value is an integer, it specifies the maximum duration in
+ milli-seconds of the mouse-1 click to be recognized as a mouse-2 click.
+ If the time between pressing and releasing the mouse button is
+ longer, the normal mouse-1 action, e.g.  set point, is performed."
+   :version "21.4"
+   :type '(choice (const :tag "Disabled" nil)
+                  (number :tag "Max. click time" :value 300)
+                  (other :tag "Enabled" t)))
+ 
  \f
  ;; Provide a mode-specific menu on a mouse button.
  
***************
*** 877,882 ****
--- 890,905 ----
  			 (or end-point
  			     (= (window-start start-window)
  				start-window-start)))
+ 		(if (and mouse-1-click-follows-link
+ 			 (not end-point)
+ 			 (consp event)
+ 			 (get-char-property start-point 'mouse-face)
+ 			 (or (not (integerp mouse-1-click-follows-link))
+ 			     (let ((t0 (posn-timestamp (event-start start-event)))
+ 				   (t1 (posn-timestamp (event-end event))))
+ 			       (and (integerp t0) (integerp t1)
+ 				    (<= (- t1 t0) mouse-1-click-follows-link)))))
+ 		    (setcar event 'mouse-2))
  		(setq unread-command-events
  		      (cons event unread-command-events)))))
  	(delete-overlay mouse-drag-overlay)))))


-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-24 12:42         ` Kim F. Storm
@ 2004-10-24 12:59           ` Lennart Borgman
  2004-10-24 19:40             ` Kim F. Storm
  2004-10-25 13:13             ` Richard Stallman
  2004-10-24 13:10           ` David Kastrup
                             ` (2 subsequent siblings)
  3 siblings, 2 replies; 91+ messages in thread
From: Lennart Borgman @ 2004-10-24 12:59 UTC (permalink / raw)
  Cc: drew.adams, emacs-devel

----- Original Message ----- 
From: "Kim F. Storm" <storm@cua.dk>

: Measure the time between the mouse-1 down event and the up event, and
: if it less than 300 ms (configurable), follow the link, else do what
: mouse-1 normally does.

On ms windows this is again a setting in the registry.

- Lennart

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-24 12:42         ` Kim F. Storm
  2004-10-24 12:59           ` Lennart Borgman
@ 2004-10-24 13:10           ` David Kastrup
  2004-10-24 19:59             ` Kim F. Storm
  2004-10-24 22:31           ` Stefan
  2004-10-25 13:13           ` Richard Stallman
  3 siblings, 1 reply; 91+ messages in thread
From: David Kastrup @ 2004-10-24 13:10 UTC (permalink / raw)
  Cc: rms, drew.adams, emacs-devel

storm@cua.dk (Kim F. Storm) writes:

> Richard Stallman <rms@gnu.org> writes:
>
>> Maybe it is good enough to be able to drag the mouse into the area
>> and then release it and ignore the mark setting that it made.
>>
>> This is the sort of change for which we need to conduct a poll of the
>> users.
>
> I found a simpler solution which works really well, as it provides the
> fallback directly on mouse-1 itself:
>
> Measure the time between the mouse-1 down event and the up event, and
> if it less than 300 ms (configurable), follow the link, else do what
> mouse-1 normally does.
>
> So a "fast" click follows the link, a slightly slower click sets the
> point (or whatever mouse-1 does).  Dragging the mouse also inhibits
> following the link.

Actually, for me this is somewhat backward: I use a touchpad, and
setting the cursor is naturally done by tapping (which is short),
while following a link currently is done by pressing both mouse keys
together (which by necessity is longer).  Since setting the cursor is
usually followed by typing ahead soon, one wants to continue fast
(because you continue at the point at which you usually look).
Whereas if you follow the link, you are waiting for something to
happen.

So I'd very much prefer making the long press follow the link, even
though a long press is more likely to get interpreted as a drag
instead.

Perhaps the sign of that variable can be used for specifying whether
the long or the short duration means following the link?  Positive
means longer than given duration, negative means shorter?

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-24 12:59           ` Lennart Borgman
@ 2004-10-24 19:40             ` Kim F. Storm
  2004-10-24 20:06               ` Lennart Borgman
  2004-10-25 13:13             ` Richard Stallman
  1 sibling, 1 reply; 91+ messages in thread
From: Kim F. Storm @ 2004-10-24 19:40 UTC (permalink / raw)
  Cc: rms, drew.adams, emacs-devel

"Lennart Borgman" <lennart.borgman.073@student.lu.se> writes:

> ----- Original Message ----- 
> From: "Kim F. Storm" <storm@cua.dk>
>
> : Measure the time between the mouse-1 down event and the up event, and
> : if it less than 300 ms (configurable), follow the link, else do what
> : mouse-1 normally does.
>
> On ms windows this is again a setting in the registry.

Which?  What do you refer to by "again"?

Do you say that on windoze, you have a similar function (mouse click
behaviour depends on how how you hold down the mouse button)?

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-24 13:10           ` David Kastrup
@ 2004-10-24 19:59             ` Kim F. Storm
  2004-10-26  9:04               ` Richard Stallman
  0 siblings, 1 reply; 91+ messages in thread
From: Kim F. Storm @ 2004-10-24 19:59 UTC (permalink / raw)
  Cc: rms, drew.adams, emacs-devel

David Kastrup <dak@gnu.org> writes:

> storm@cua.dk (Kim F. Storm) writes:
>
>> So a "fast" click follows the link, a slightly slower click sets the
>> point (or whatever mouse-1 does).  Dragging the mouse also inhibits
>> following the link.
>
> Actually, for me this is somewhat backward: I use a touchpad, and
> setting the cursor is naturally done by tapping (which is short),
> while following a link currently is done by pressing both mouse keys
> together (which by necessity is longer).  Since setting the cursor is
> usually followed by typing ahead soon, one wants to continue fast
> (because you continue at the point at which you usually look).
> Whereas if you follow the link, you are waiting for something to
> happen.

Normally, I would not expect a user to type anything in the middle of
a link, but YMMV.

> So I'd very much prefer making the long press follow the link, even
> though a long press is more likely to get interpreted as a drag
> instead.
>
> Perhaps the sign of that variable can be used for specifying whether
> the long or the short duration means following the link?  Positive
> means longer than given duration, negative means shorter?

Like this:

Index: mouse.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/mouse.el,v
retrieving revision 1.251
diff -c -r1.251 mouse.el
*** mouse.el	18 Oct 2004 09:29:26 -0000	1.251
--- mouse.el	24 Oct 2004 19:06:25 -0000
***************
*** 48,53 ****
--- 48,72 ----
    :type 'boolean
    :group 'mouse)
  
+ (defcustom mouse-1-click-follows-link 300
+   "Non-nil means that clicking mouse-1 on a link follows the link.
+ This is only done for links which have the mouse-face property.
+ 
+ If value is an positive integer, it specifies the maximum duration in
+ milli-seconds of the mouse-1 click to be recognized as a mouse-2 click.
+ If the time between pressing and releasing the mouse button is
+ longer, the normal mouse-1 action (typically set point) is performed.
+ 
+ If value is an negative integer, its absolute value specifies the
+ minimum duration in milli-seconds of the mouse-1 click to be recognized
+ as a mouse-2 click.  If the time between pressing and releasing the
+ mouse button is longer, the normal mouse-1 action is performed."
+   :version "21.4"
+   :type '(choice (const :tag "Disabled" nil)
+                  (number :tag "Click time limit" :value 300)
+                  (other :tag "Enabled" t))
+   :group 'mouse)
+ 
  \f
  ;; Provide a mode-specific menu on a mouse button.
  
***************
*** 877,882 ****
--- 896,914 ----
  			 (or end-point
  			     (= (window-start start-window)
  				start-window-start)))
+ 		(if (and mouse-1-click-follows-link
+ 			 (not end-point)
+ 			 (consp event)
+ 			 (get-char-property start-point 'mouse-face)
+ 			 (or (not (integerp mouse-1-click-follows-link))
+ 			     (let ((t0 (posn-timestamp (event-start start-event)))
+ 				   (t1 (posn-timestamp (event-end event))))
+ 			       (and (integerp t0) (integerp t1)
+ 				    (if (> mouse-1-click-follows-link 0)
+ 					(<= (- t1 t0) mouse-1-click-follows-link)
+ 				      (< (- t0 t1) mouse-1-click-follows-link))))))
+ 
+ 		    (setcar event 'mouse-2))
  		(setq unread-command-events
  		      (cons event unread-command-events)))))
  	(delete-overlay mouse-drag-overlay)))))

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-24 19:40             ` Kim F. Storm
@ 2004-10-24 20:06               ` Lennart Borgman
  0 siblings, 0 replies; 91+ messages in thread
From: Lennart Borgman @ 2004-10-24 20:06 UTC (permalink / raw)
  Cc: rms, drew.adams, emacs-devel

----- Original Message ----- 
From: "Kim F. Storm" <storm@cua.dk>


: "Lennart Borgman" <lennart.borgman.073@student.lu.se> writes:
: 
: > ----- Original Message ----- 
: > From: "Kim F. Storm" <storm@cua.dk>
: >
: > : Measure the time between the mouse-1 down event and the up event, and
: > : if it less than 300 ms (configurable), follow the link, else do what
: > : mouse-1 normally does.
: >
: > On ms windows this is again a setting in the registry.
: 
: Do you say that on windoze, you have a similar function (mouse click
: behaviour depends on how how you hold down the mouse button)?

(red face). No Sorry. I was thinking about double clicking. 

- Lennart

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-24 12:42         ` Kim F. Storm
  2004-10-24 12:59           ` Lennart Borgman
  2004-10-24 13:10           ` David Kastrup
@ 2004-10-24 22:31           ` Stefan
  2004-10-25  7:22             ` David Kastrup
  2004-10-25  8:31             ` Kim F. Storm
  2004-10-25 13:13           ` Richard Stallman
  3 siblings, 2 replies; 91+ messages in thread
From: Stefan @ 2004-10-24 22:31 UTC (permalink / raw)
  Cc: rms, drew.adams, emacs-devel

> I found a simpler solution which works really well, as it provides the
> fallback directly on mouse-1 itself:

> Measure the time between the mouse-1 down event and the up event, and
> if it less than 300 ms (configurable), follow the link, else do what
> mouse-1 normally does.

Sounds like a terrible idea to me.  Working with X11-over-DSL means that
timing is rather unreliable.  Same thing with heavy-swapping (as happens
when a I do `tla star-merge' :-( ).

And even if the timing could be measured accurately, I don't find the "hold
the mouse button longer" to be intuitive at all for "move point".

I think we're trying to squeeze too much info in those events.  I'm quite
happy with the distinction between click and drag but I don't think we
should go further than that.


        Stefan


PS: David, could you explain exactly what's the problem with Kim's suggested
    patch and latex-preview?  What is the behavior of latex-preview in the
    case of mouse-1 and in the case of mouse-2?  Is mouse-face applied to
    the actual text or just to the (before|after)-string?

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-24 22:31           ` Stefan
@ 2004-10-25  7:22             ` David Kastrup
  2004-10-25 11:47               ` Stefan
  2004-10-26  9:05               ` Richard Stallman
  2004-10-25  8:31             ` Kim F. Storm
  1 sibling, 2 replies; 91+ messages in thread
From: David Kastrup @ 2004-10-25  7:22 UTC (permalink / raw)
  Cc: emacs-devel, rms, drew.adams, Kim F. Storm

Stefan <monnier@iro.umontreal.ca> writes:

> PS: David, could you explain exactly what's the problem with Kim's suggested
>     patch and latex-preview?

It's not like I hadn't done this already.

> What is the behavior of latex-preview in the case of mouse-1 and in
> the case of mouse-2?  Is mouse-face applied to the actual text or
> just to the (before|after)-string?

The behavior of preview-latex when clicking with mouse-1 on a preview
image is to simply set point on the image (i.e., the behavior is just
the default, and preview-latex does not tamper with it).  You will
often need to do this to cut and paste the text passage that is hidden
by the image, for example, it you are doing a mathematical derivation
and start with the source text of the last equation in order to derive
the next one.  When clicking with mouse-2 on the image, the image is
replaced by the underlying text.  The image has a mouse-face that is
visible indication that you can mouse-2 the image.

Clicking outside the image and then using the cursor keys to get on
the image is not feasible instead: it will uncover the image
automatically with the default settings.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-24 22:31           ` Stefan
  2004-10-25  7:22             ` David Kastrup
@ 2004-10-25  8:31             ` Kim F. Storm
  2004-10-25 10:01               ` David Kastrup
  2004-10-26  9:05               ` Richard Stallman
  1 sibling, 2 replies; 91+ messages in thread
From: Kim F. Storm @ 2004-10-25  8:31 UTC (permalink / raw)
  Cc: rms, drew.adams, emacs-devel

Stefan <monnier@iro.umontreal.ca> writes:

>> I found a simpler solution which works really well, as it provides the
>> fallback directly on mouse-1 itself:
>
>> Measure the time between the mouse-1 down event and the up event, and
>> if it less than 300 ms (configurable), follow the link, else do what
>> mouse-1 normally does.
>
> Sounds like a terrible idea to me.  Working with X11-over-DSL means that
> timing is rather unreliable.  Same thing with heavy-swapping (as happens
> when a I do `tla star-merge' :-( ).

True, but the worst thing that can happen (if you use a positive
value) is that the click sets the point rather than follows the link
-- so if things are slow, just click again (and hope for the best) or
use mouse-2.

I don't think that's terrible at all.

And you can always set the variable to t, meaning that you will need
to drag to set point.

And on a local system, it works really well!!!

>
> And even if the timing could be measured accurately, I don't find the "hold
> the mouse button longer" to be intuitive at all for "move point".

Press harder to make the glue stick :-)

Personally I find "drag to set point" much less intuitive which is why
I'm looking for a better solution.

> I think we're trying to squeeze too much info in those events.  I'm quite
> happy with the distinction between click and drag but I don't think we
> should go further than that.

We are trying to find a simple(!) way to let mouse-1 do its normal thing
in the rare situation (except for David :-) where the user wants to set
point in the middle of a link.

Providing the "long click" as a user option is trivial (it is 3 lines
of code and it is already done), and personally, I find it quite
intuitive.

Whether we want to turn it on by default (with or without timeout) is
another matter.

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-25  8:31             ` Kim F. Storm
@ 2004-10-25 10:01               ` David Kastrup
  2004-10-25 12:32                 ` Kim F. Storm
  2004-10-26  9:05               ` Richard Stallman
  1 sibling, 1 reply; 91+ messages in thread
From: David Kastrup @ 2004-10-25 10:01 UTC (permalink / raw)
  Cc: emacs-devel, Stefan, drew.adams, rms

storm@cua.dk (Kim F. Storm) writes:

> Stefan <monnier@iro.umontreal.ca> writes:
>
>>> I found a simpler solution which works really well, as it provides the
>>> fallback directly on mouse-1 itself:
>>
>>> Measure the time between the mouse-1 down event and the up event, and
>>> if it less than 300 ms (configurable), follow the link, else do what
>>> mouse-1 normally does.
>>
>> Sounds like a terrible idea to me.  Working with X11-over-DSL means that
>> timing is rather unreliable.  Same thing with heavy-swapping (as happens
>> when a I do `tla star-merge' :-( ).
>
> True, but the worst thing that can happen (if you use a positive
> value) is that the click sets the point rather than follows the link
> -- so if things are slow, just click again (and hope for the best)
> or use mouse-2.

Whether the system load delays the click or the release event more
can't be guessed in advance, regardless of the settings.  In either
case, you can get the two confused either way.  Which can mean that
the link gets followed where the intent was to set point.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-25  7:22             ` David Kastrup
@ 2004-10-25 11:47               ` Stefan
  2004-10-25 12:51                 ` David Kastrup
  2004-10-26  9:05               ` Richard Stallman
  1 sibling, 1 reply; 91+ messages in thread
From: Stefan @ 2004-10-25 11:47 UTC (permalink / raw)
  Cc: emacs-devel, rms, drew.adams, Kim F. Storm

>> What is the behavior of latex-preview in the case of mouse-1 and in
>> the case of mouse-2?  Is mouse-face applied to the actual text or
>> just to the (before|after)-string?

> The behavior of preview-latex when clicking with mouse-1 on a preview
> image is to simply set point on the image (i.e., the behavior is just
> the default, and preview-latex does not tamper with it).  You will
> often need to do this to cut and paste the text passage that is hidden
> by the image, for example, it you are doing a mathematical derivation
> and start with the source text of the last equation in order to derive
> the next one.  When clicking with mouse-2 on the image, the image is
> replaced by the underlying text.  The image has a mouse-face that is
> visible indication that you can mouse-2 the image.

So it's the image (which is placed on a before-string) which has the
`mouse-face', not the buffer's text, right?  So Kim's patch won't interfere
since Kim's patch checks (get-char-property (point) 'mouse-face) which
should return nil in your case.

Have you tried his patch or were you just "running it in your head"
(like I usually do myself)?


        Stefan

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-25 10:01               ` David Kastrup
@ 2004-10-25 12:32                 ` Kim F. Storm
  0 siblings, 0 replies; 91+ messages in thread
From: Kim F. Storm @ 2004-10-25 12:32 UTC (permalink / raw)
  Cc: emacs-devel, Stefan, drew.adams, rms

David Kastrup <dak@gnu.org> writes:

> storm@cua.dk (Kim F. Storm) writes:
>
>> True, but the worst thing that can happen (if you use a positive
>> value) is that the click sets the point rather than follows the link
>> -- so if things are slow, just click again (and hope for the best)
>> or use mouse-2.
>
> Whether the system load delays the click or the release event more
> can't be guessed in advance, regardless of the settings.  In either
> case, you can get the two confused either way.  Which can mean that
> the link gets followed where the intent was to set point.

Hm, true, but at least on X, the timestamps are recorded by the X
server, so it's not depending on emacs getting any cycles to process
the clicks.

I still believe that it will work _satisfactory_ in practice.  But the
doc string could mention the potential problem.

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-25 11:47               ` Stefan
@ 2004-10-25 12:51                 ` David Kastrup
  2004-10-25 13:50                   ` Stefan Monnier
  0 siblings, 1 reply; 91+ messages in thread
From: David Kastrup @ 2004-10-25 12:51 UTC (permalink / raw)
  Cc: emacs-devel, rms, drew.adams, Kim F. Storm

Stefan <monnier@iro.umontreal.ca> writes:

>>> What is the behavior of latex-preview in the case of mouse-1 and in
>>> the case of mouse-2?  Is mouse-face applied to the actual text or
>>> just to the (before|after)-string?
>
>> The behavior of preview-latex when clicking with mouse-1 on a preview
>> image is to simply set point on the image (i.e., the behavior is just
>> the default, and preview-latex does not tamper with it).  You will
>> often need to do this to cut and paste the text passage that is hidden
>> by the image, for example, it you are doing a mathematical derivation
>> and start with the source text of the last equation in order to derive
>> the next one.  When clicking with mouse-2 on the image, the image is
>> replaced by the underlying text.  The image has a mouse-face that is
>> visible indication that you can mouse-2 the image.
>
> So it's the image (which is placed on a before-string)

No insinuations, please.  If the image were placed on a before-string,
you could not move point to it in the first place.  The image is
placed in the display property of the text (actually, the display
property of an overlay, and this overlay has the mouse-face).

> which has the `mouse-face', not the buffer's text, right?

Wrong.

> So Kim's patch won't interfere since Kim's patch checks
> (get-char-property (point) 'mouse-face) which should return nil in
> your case.

Shouldn't.

> Have you tried his patch or were you just "running it in your head"
> (like I usually do myself)?

It does not actually matter since I merely cited preview-latex as one
case that would appear not to fit the assumptions behind Kim's patch.
Whether or not an inconsistency in behavior might perchance render the
patch inoperative in this case by shere luck does not change the basic
premise: we need a proper migration strategy to do something like
that.  preview-latex itself is not much of a problem: it is under my
control and I can make it cope if it is the only application in the
world that gets in trouble with such a change.  But I have no reason
to believe that.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-24 12:42         ` Kim F. Storm
                             ` (2 preceding siblings ...)
  2004-10-24 22:31           ` Stefan
@ 2004-10-25 13:13           ` Richard Stallman
  3 siblings, 0 replies; 91+ messages in thread
From: Richard Stallman @ 2004-10-25 13:13 UTC (permalink / raw)
  Cc: drew.adams, emacs-devel

    Measure the time between the mouse-1 down event and the up event, and
    if it less than 300 ms (configurable), follow the link, else do what
    mouse-1 normally does.

That could be a very good solution.  If the user gets distracted and
holds the button down too long, nothing bad happens, so he can easily
try again.  I like it!

However, what about double-clicking?  I think that won't be easy to do.
The user will have to hold the first click longer, then quickly
click again.

We could solve this problem by waiting for double-click-time before
following the link.  Could you give that a try and see if the behavior
is still ok?

    So I'd very much prefer making the long press follow the link, even
    though a long press is more likely to get interpreted as a drag
    instead.

That seems more convenient, since it does not get in the way of double
clicks, and it follows the principle that you do more to get a bigger
action.  However, it has the drawback that beginners just clicking
around won't know to try it.  They might try an ordinary click, see it
doesn't follow the link, and give up.

So maybe the short click, on a link, should display a message saying
"Hold the button down for .3 seconds to follow the link".

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-24 12:59           ` Lennart Borgman
  2004-10-24 19:40             ` Kim F. Storm
@ 2004-10-25 13:13             ` Richard Stallman
  1 sibling, 0 replies; 91+ messages in thread
From: Richard Stallman @ 2004-10-25 13:13 UTC (permalink / raw)
  Cc: emacs-devel, drew.adams, storm

    : Measure the time between the mouse-1 down event and the up event, and
    : if it less than 300 ms (configurable), follow the link, else do what
    : mouse-1 normally does.

    On ms windows this is again a setting in the registry.

I am not quite sure what "this" refers to here.  What is the
setting in the registry, and what does its value normally mean?
Does MS Windows have this feature?

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-25 12:51                 ` David Kastrup
@ 2004-10-25 13:50                   ` Stefan Monnier
  2004-10-25 14:52                     ` Ralf Angeli
  0 siblings, 1 reply; 91+ messages in thread
From: Stefan Monnier @ 2004-10-25 13:50 UTC (permalink / raw)
  Cc: emacs-devel, rms, drew.adams, Kim F. Storm

>>>> What is the behavior of latex-preview in the case of mouse-1 and in
>>>> the case of mouse-2?  Is mouse-face applied to the actual text or
>>>> just to the (before|after)-string?
[...]
>> So it's the image (which is placed on a before-string)
> No insinuations, please.

I could only "insinuate" since you did not reply to my original question "Is
mouse-face applied to the actual text or just to the (before|after)-string?"

> The image is placed in the display property of the text (actually, the
> display property of an overlay, and this overlay has the mouse-face).

Thanks.

> It does not actually matter since I merely cited preview-latex as one
> case that would appear not to fit the assumptions behind Kim's patch.

I quite understand this part.
It's clear that Kim's patch can introduce undesired behavior.
The question is how often such undesired behavior happens in practice.

I suspect that the number of packages where moving point into a piece of
text with the `mouse-face' property does anything more than move point
(while left-clicking only moves point) is extremely small.  `preview-latex'
is very much unusual in this respect.

So I think the migration path should be to apply Kim's patch and provide
a way for a package maintainer to override it in those rare cases where
it interferes (e.g. it could check some text property
"dont-remap-mouse-1-to-mouse-2").


        Stefan

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-25 13:50                   ` Stefan Monnier
@ 2004-10-25 14:52                     ` Ralf Angeli
  2004-10-25 15:08                       ` Stefan Monnier
  0 siblings, 1 reply; 91+ messages in thread
From: Ralf Angeli @ 2004-10-25 14:52 UTC (permalink / raw)


* Stefan Monnier (2004-10-25) writes:

> I quite understand this part.
> It's clear that Kim's patch can introduce undesired behavior.
> The question is how often such undesired behavior happens in practice.
>
> I suspect that the number of packages where moving point into a piece of
> text with the `mouse-face' property does anything more than move point

With tex-fold.el (part of AUCTeX) there is another package which
reveals text which is hidden by a display property if point is moved
horizontally into the respective area.

> (while left-clicking only moves point)

In tex-fold.el left-clicking currently will reveal the folded text.
(Similar to preview-latex there is an overlay on the text with
'mouse-face set.)  The reactions to mouse clicks will be synchronized
with preview-latex in the future.  What actions will be triggered by
mouse-1 and mouse-2 will be subject to discussion.

> is extremely small.  `preview-latex'
> is very much unusual in this respect.

Well, there is preview-latex and tex-fold.el.  And Talcum
(<URL:http://talcum.sarovar.org/>) reveals text on cursor movement as
well.  I didn't check how it behaves with regard to mouse clicks,
though.

-- 
Ralf

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-25 14:52                     ` Ralf Angeli
@ 2004-10-25 15:08                       ` Stefan Monnier
  2004-10-25 15:18                         ` David Kastrup
  0 siblings, 1 reply; 91+ messages in thread
From: Stefan Monnier @ 2004-10-25 15:08 UTC (permalink / raw)


>> (while left-clicking only moves point)
> In tex-fold.el left-clicking currently will reveal the folded text.

So it's not the same problem as with preview-latex.  The problem with
preview-latex is that the mouse-1 click seems to be the only easy way to
place the cursor on the image without "unfolding" it.

tex-fold.el is more traditional in this respect and Kims' patch is just
annoying (you have to use the keyboard to move point into the area), whereas
for preview-latex using the keyboard is not really an option it seems.


        Stefan

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-25 15:08                       ` Stefan Monnier
@ 2004-10-25 15:18                         ` David Kastrup
  2004-10-25 15:35                           ` Stefan Monnier
  0 siblings, 1 reply; 91+ messages in thread
From: David Kastrup @ 2004-10-25 15:18 UTC (permalink / raw)
  Cc: emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>>> (while left-clicking only moves point)
>> In tex-fold.el left-clicking currently will reveal the folded text.
>
> So it's not the same problem as with preview-latex.  The problem with
> preview-latex is that the mouse-1 click seems to be the only easy way to
> place the cursor on the image without "unfolding" it.
>
> tex-fold.el is more traditional in this respect and Kims' patch is
> just annoying (you have to use the keyboard to move point into the
> area), whereas for preview-latex using the keyboard is not really an
> option it seems.

preview-latex is a bit difficile: you can use the keyboard for moving
onto the preview itself, _except_ for cursor left/right: that will
trigger the autoreveal.  Similarly, using isearch will trigger it.
Basically there are movements where the guessed intent would be
"uncover", and others where it isn't.  The proposal of Kim (click
to the side, then move to it) falls in the "isn't" category usually.
When marking formulas and stuff, you usually will tend to use vertical
motion commands if you are just using the keyboard, and those won't
uncover things.

It is, of course, an illogical interface to start with, but it happens
to be convenient for normal usage patterns.  And I don't like the
"don't click on it if you just want to position the cursor" idea.

If the time stamps for the clicks indeed come from the X server, then
Kim's timed scheme would probably not be very susceptible to system
load/traffic congestion effects.  After all, we have the same problem
with recognizing double-clicks.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-25 15:18                         ` David Kastrup
@ 2004-10-25 15:35                           ` Stefan Monnier
  2004-10-26  9:00                             ` Kim F. Storm
                                               ` (2 more replies)
  0 siblings, 3 replies; 91+ messages in thread
From: Stefan Monnier @ 2004-10-25 15:35 UTC (permalink / raw)
  Cc: emacs-devel

> If the time stamps for the clicks indeed come from the X server, then
> Kim's timed scheme would probably not be very susceptible to system
> load/traffic congestion effects.

The problm with it is that it goes against what we're trying to do, which is
to get Emacs's UI in line with "what non-Emacs users expect".
I.e. such users will just do a simple click and expect it to follow
the link.

Adding a message saying "please keep the button pressed longer if you want
to follow the link" is really not much better than adding a message that
says "use mouse-2 if you want to follow the link".

And if you add to the equation the extra code and conceptual complexity of
using timing-dependent information, I find it ends up a loser.

> After all, we have the same problem with recognizing double-clicks.

Sure.  But users have wanted double-clicks, so we gave it to them.
Users's aren't asking for variable-duration clicks.  OTOH users are quite
used to not being able to move cursor into a link by just left-clicking on
it.  It may annoy them at times, but it seems to annoy them less than having
to use mouse-2.


        Stefan

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-25 15:35                           ` Stefan Monnier
@ 2004-10-26  9:00                             ` Kim F. Storm
  2004-10-26  9:25                               ` David Kastrup
  2004-10-27 10:49                               ` Richard Stallman
  2004-10-27  7:22                             ` Kai Grossjohann
  2004-10-27 10:47                             ` Richard Stallman
  2 siblings, 2 replies; 91+ messages in thread
From: Kim F. Storm @ 2004-10-26  9:00 UTC (permalink / raw)
  Cc: emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> If the time stamps for the clicks indeed come from the X server, then
>> Kim's timed scheme would probably not be very susceptible to system
>> load/traffic congestion effects.
>
> The problm with it is that it goes against what we're trying to do, which is
> to get Emacs's UI in line with "what non-Emacs users expect".
> I.e. such users will just do a simple click and expect it to follow
> the link.

Yes, that's what we are trying to achieve -- the fundamental problem
we discuss here is actually how to recognize when the stuff is a link
and when it is something else which has a mouse-face property.

In the examples given until now, the non-links have the mouse-face
on an overlay -- so maybe to fix would be to only follow link which
have the mouse-face as a text property in the buffer.

If we can safely differentiate between links and non-links I think
a short click should follow the link (double-clicks typically don't
make sense there anyway) and a long click should set point

Appended is a patch which uses get-text-property rather than
get-char-property to ignore overlay mouse-face properties.

The patch also allows you to double click on a link to get the normal
double-click action in the buffer rather than following the link.
To do that, I wait "double-click-time" milliseconds before following
the link -- if any input arrives in that period, I don't follow the
link.  May feel a little "slow", but it's worth a try.


>
> Adding a message saying "please keep the button pressed longer if you want
> to follow the link" is really not much better than adding a message that
> says "use mouse-2 if you want to follow the link".
>
> And if you add to the equation the extra code and conceptual complexity of
> using timing-dependent information, I find it ends up a loser.

I don't really want to add any message there -- if we leave the feature
disabled by default, the users who turn it on doesn't need to be told
how to get the alternative behaviour.

If we turn on the feature by default, there should at least be some
way to disable that message.

>
>> After all, we have the same problem with recognizing double-clicks.
>
> Sure.  But users have wanted double-clicks, so we gave it to them.
> Users's aren't asking for variable-duration clicks.  OTOH users are quite
> used to not being able to move cursor into a link by just left-clicking on
> it.  It may annoy them at times, but it seems to annoy them less than having
> to use mouse-2.

Variable length clicks are a new user interface invention in emacs :-)


Index: mouse.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/mouse.el,v
retrieving revision 1.251
diff -c -r1.251 mouse.el
*** mouse.el	18 Oct 2004 09:29:26 -0000	1.251
--- mouse.el	26 Oct 2004 08:56:24 -0000
***************
*** 48,53 ****
--- 48,81 ----
    :type 'boolean
    :group 'mouse)
  
+ (defcustom mouse-1-click-follows-link 300
+   "Non-nil means that clicking mouse-1 on a link follows the link.
+ This is only done for links which have the mouse-face property.
+ 
+ If value is an positive integer, it specifies the maximum
+ duration in milli-seconds of the mouse-1 click to be recognized
+ as a mouse-2 click.  If the time between pressing and releasing
+ the mouse button is longer, the normal mouse-1 command (typically
+ set point) is performed.
+ 
+ If value is an negative integer, its absolute value specifies the
+ minimum duration in milli-seconds of the mouse-1 click to be
+ recognized as a mouse-2 click.  If the time between pressing and
+ releasing the mouse button is longer, the normal mouse-1 command
+ is performed.
+ 
+ Otherwise, mouse-1 unconditionally follows the link, unless you
+ drag the mouse in the link to run the normal mouse-1 command."
+   :version "21.4"
+   :type '(choice (const :tag "Disabled" nil)
+                  (number :tag "Click time limit" :value 300)
+                  (other :tag "Enabled" t))
+   :group 'mouse)
+ 
  \f
  ;; Provide a mode-specific menu on a mouse button.
  
***************
*** 877,882 ****
--- 905,929 ----
  			 (or end-point
  			     (= (window-start start-window)
  				start-window-start)))
+ 		(if (and mouse-1-click-follows-link
+ 			 (not end-point)
+ 			 (consp event)
+ 			 (= click-count 0)
+ 			 (= (event-click-count event) 1)
+ 			 (not (input-pending-p))
+ 			 ;; Don't want to look at overlays here
+ 			 (get-text-property start-point 'mouse-face)
+ 			 (or (not (integerp mouse-1-click-follows-link))
+ 			     (let ((t0 (posn-timestamp (event-start start-event)))
+ 				   (t1 (posn-timestamp (event-end event))))
+ 			       (and (integerp t0) (integerp t1)
+ 				    (if (> mouse-1-click-follows-link 0)
+ 					(<= (- t1 t0) mouse-1-click-follows-link)
+ 				      (< (- t0 t1) mouse-1-click-follows-link)))))
+ 			 (or (not double-click-time)
+ 			     (sit-for 0 (if (integerp double-click-time)
+ 					    double-click-time 500) t)))
+ 		    (setcar event 'mouse-2))
  		(setq unread-command-events
  		      (cons event unread-command-events)))))
  	(delete-overlay mouse-drag-overlay)))))

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-24 19:59             ` Kim F. Storm
@ 2004-10-26  9:04               ` Richard Stallman
  2004-10-26 17:05                 ` Lennart Borgman
  0 siblings, 1 reply; 91+ messages in thread
From: Richard Stallman @ 2004-10-26  9:04 UTC (permalink / raw)
  Cc: drew.adams, emacs-devel

    > Perhaps the sign of that variable can be used for specifying whether
    > the long or the short duration means following the link?  Positive
    > means longer than given duration, negative means shorter?

Giving the user lots of options is no substitute for good design.
The problem here is to make Emacs behave in a way that users expect
without looking at documentation.  Any solution that involves learning
about an option and setting it is automatically a failure.

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-25  7:22             ` David Kastrup
  2004-10-25 11:47               ` Stefan
@ 2004-10-26  9:05               ` Richard Stallman
  1 sibling, 0 replies; 91+ messages in thread
From: Richard Stallman @ 2004-10-26  9:05 UTC (permalink / raw)
  Cc: emacs-devel, monnier, drew.adams, storm

    The behavior of preview-latex when clicking with mouse-1 on a preview
    image is to simply set point on the image (i.e., the behavior is just
    the default, and preview-latex does not tamper with it).

It would be easy enough to make preview-latex a special case.

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-25  8:31             ` Kim F. Storm
  2004-10-25 10:01               ` David Kastrup
@ 2004-10-26  9:05               ` Richard Stallman
  1 sibling, 0 replies; 91+ messages in thread
From: Richard Stallman @ 2004-10-26  9:05 UTC (permalink / raw)
  Cc: monnier, drew.adams, emacs-devel

    > Sounds like a terrible idea to me.  Working with X11-over-DSL means that
    > timing is rather unreliable.  Same thing with heavy-swapping (as happens
    > when a I do `tla star-merge' :-( ).

    True, but the worst thing that can happen (if you use a positive
    value) is that the click sets the point rather than follows the link

If the timing can be distorted, it can be distorted in either
direction.  However, we don't see a lot of complaints that double
click doesn't work, so maybe it is not a serious problem.

    Hm, true, but at least on X, the timestamps are recorded by the X
    server, so it's not depending on emacs getting any cycles to process
    the clicks.

That seems to imply there is no real problem of this kind.
It was useful to consider the question, though.

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-26  9:00                             ` Kim F. Storm
@ 2004-10-26  9:25                               ` David Kastrup
  2004-10-26 12:23                                 ` Kim F. Storm
  2004-10-27 10:49                               ` Richard Stallman
  1 sibling, 1 reply; 91+ messages in thread
From: David Kastrup @ 2004-10-26  9:25 UTC (permalink / raw)
  Cc: Stefan Monnier, emacs-devel

storm@cua.dk (Kim F. Storm) writes:

> Stefan Monnier <monnier@iro.umontreal.ca> writes:
>
>>> If the time stamps for the clicks indeed come from the X server,
>>> then Kim's timed scheme would probably not be very susceptible to
>>> system load/traffic congestion effects.
>>
>> The problm with it is that it goes against what we're trying to do,
>> which is to get Emacs's UI in line with "what non-Emacs users
>> expect".  I.e. such users will just do a simple click and expect it
>> to follow the link.
>
> Yes, that's what we are trying to achieve -- the fundamental problem
> we discuss here is actually how to recognize when the stuff is a
> link and when it is something else which has a mouse-face property.
>
> In the examples given until now, the non-links have the mouse-face
> on an overlay -- so maybe to fix would be to only follow link which
> have the mouse-face as a text property in the buffer.

It does not make sense to introduce an arbitrary inconsistency because
this would fix a problem with an arbitrary example that just happens
to exist with that sort of implementation by chance instead of
design.  If we can come up with a useful strategy that has a
reasonable chance of not breaking more than it fixes, then
preview-latex will be the one that has to adapt.  But just because
preview-latex is an example where things will break does not mean that
it is the only possible one.

> If we can safely differentiate between links and non-links I think a
> short click should follow the link (double-clicks typically don't
> make sense there anyway) and a long click should set point

Well, I happen to disagree, since following a link is the more time
consuming action, anyway, and people might be tempted to press until
the browser window appears.

In any case, neither option is the behavior that a user would guess
without being explicitly introduced to it.  So we need to turn it off
by default, or give an explanatory message of some kind by default.

> Appended is a patch which uses get-text-property rather than
> get-char-property to ignore overlay mouse-face properties.

I firmly object to such a course.  While we should not let ourselves
be influenced too much by that, with XEmacs there is not even a
distinction between overlays and text properties.  The choice between
the two when using Emacs should depend _exclusively_ on whether you
need the association with the text or the buffer, and not on any
chance side effects introduced to accidentally work with some package.

>> And if you add to the equation the extra code and conceptual
>> complexity of using timing-dependent information, I find it ends up
>> a loser.
>
> I don't really want to add any message there -- if we leave the
> feature disabled by default, the users who turn it on doesn't need
> to be told how to get the alternative behaviour.
>
> If we turn on the feature by default, there should at least be some
> way to disable that message.

Sure.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-26  9:25                               ` David Kastrup
@ 2004-10-26 12:23                                 ` Kim F. Storm
  2004-10-26 18:55                                   ` Drew Adams
  2004-10-27 17:34                                   ` Richard Stallman
  0 siblings, 2 replies; 91+ messages in thread
From: Kim F. Storm @ 2004-10-26 12:23 UTC (permalink / raw)
  Cc: Stefan Monnier, emacs-devel

David Kastrup <dak@gnu.org> writes:

>> If we can safely differentiate between links and non-links I think a
>> short click should follow the link (double-clicks typically don't
>> make sense there anyway) and a long click should set point
>
> Well, I happen to disagree, since following a link is the more time
> consuming action, anyway, and people might be tempted to press until
> the browser window appears.

If you keep the button pressed in emacs, the window NEVER appears (as
it is the up-event which follows the link), so I doubt users do that.

> In any case, neither option is the behavior that a user would guess
> without being explicitly introduced to it.  So we need to turn it off
> by default, or give an explanatory message of some kind by default.

Well, if the "normal" click follows the link (and I claim that the
normal click is the short click), most users will never think there is
a problem, as they don't usually have to set the mouse in the middle
of a link.

They will probably set it next to the link and move the cursor into
the link (that's how it is often done in other applications).

Now, the more advanced users will ask (or find out by themselves) that
a longer click sets the mouse.  That is no different from a lot of
other functionality in emacs, where the defaults suit the majority,
but can be tweaked by the rest).

I really don't think a message is worth the extra code [but if
that's a prerequisite to get this installed, I'll do it].

>
>> Appended is a patch which uses get-text-property rather than
>> get-char-property to ignore overlay mouse-face properties.
>
> I firmly object to such a course.  While we should not let ourselves
> be influenced too much by that, with XEmacs there is not even a
> distinction between overlays and text properties.  The choice between
> the two when using Emacs should depend _exclusively_ on whether you
> need the association with the text or the buffer, and not on any
> chance side effects introduced to accidentally work with some package.

True, so it's the wrong solution.  What is the right solution?

Below is a patch which checks if the "link" has a dont-follow-link
property.  That requires package authors to adapt their code if they
don't want mouse-1 to follow links, but it is a trivial addition...


Index: mouse.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/mouse.el,v
retrieving revision 1.251
diff -c -r1.251 mouse.el
*** mouse.el	18 Oct 2004 09:29:26 -0000	1.251
--- mouse.el	26 Oct 2004 12:25:34 -0000
***************
*** 48,53 ****
--- 48,81 ----
    :type 'boolean
    :group 'mouse)
  
+ (defcustom mouse-1-click-follows-link 300
+   "Non-nil means that clicking mouse-1 on a link follows the link.
+ This is only done for links which have the mouse-face property.
+ 
+ If value is an positive integer, it specifies the maximum
+ duration in milli-seconds of the mouse-1 click to be recognized
+ as a mouse-2 click.  If the time between pressing and releasing
+ the mouse button is longer, the normal mouse-1 command (typically
+ set point) is performed.
+ 
+ If value is an negative integer, its absolute value specifies the
+ minimum duration in milli-seconds of the mouse-1 click to be
+ recognized as a mouse-2 click.  If the time between pressing and
+ releasing the mouse button is longer, the normal mouse-1 command
+ is performed.
+ 
+ Otherwise, mouse-1 unconditionally follows the link, unless you
+ drag the mouse in the link to run the normal mouse-1 command."
+   :version "21.4"
+   :type '(choice (const :tag "Disabled" nil)
+                  (number :tag "Click time limit" :value 300)
+                  (other :tag "Enabled" t))
+   :group 'mouse)
+ 
  \f
  ;; Provide a mode-specific menu on a mouse button.
  
***************
*** 877,882 ****
--- 905,929 ----
  			 (or end-point
  			     (= (window-start start-window)
  				start-window-start)))
+ 		(if (and mouse-1-click-follows-link
+ 			 (not end-point)
+ 			 (consp event)
+ 			 (= click-count 0)
+ 			 (= (event-click-count event) 1)
+ 			 (not (input-pending-p))
+ 			 (get-char-property start-point 'mouse-face)
+ 			 (not (get-char-property start-point 'dont-follow-link))
+ 			 (or (not (integerp mouse-1-click-follows-link))
+ 			     (let ((t0 (posn-timestamp (event-start start-event)))
+ 				   (t1 (posn-timestamp (event-end event))))
+ 			       (and (integerp t0) (integerp t1)
+ 				    (if (> mouse-1-click-follows-link 0)
+ 					(<= (- t1 t0) mouse-1-click-follows-link)
+ 				      (< (- t0 t1) mouse-1-click-follows-link)))))
+ 			 (or (not double-click-time)
+ 			     (sit-for 0 (if (integerp double-click-time)
+ 					    double-click-time 500) t)))
+ 		    (setcar event 'mouse-2))
  		(setq unread-command-events
  		      (cons event unread-command-events)))))
  	(delete-overlay mouse-drag-overlay)))))

--
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-26  9:04               ` Richard Stallman
@ 2004-10-26 17:05                 ` Lennart Borgman
  0 siblings, 0 replies; 91+ messages in thread
From: Lennart Borgman @ 2004-10-26 17:05 UTC (permalink / raw)
  Cc: drew.adams, emacs-devel

----- Original Message ----- 
From: "Richard Stallman" <rms@gnu.org>

: Giving the user lots of options is no substitute for good design.
: The problem here is to make Emacs behave in a way that users expect
: without looking at documentation.  Any solution that involves learning
: about an option and setting it is automatically a failure.

That is a very good point for UI design. This is also why the UI should
behave the way users are acustomed to as far as possible.

- Lennart

^ permalink raw reply	[flat|nested] 91+ messages in thread

* RE: finger-pointer curser as default for mouse-face text
  2004-10-26 12:23                                 ` Kim F. Storm
@ 2004-10-26 18:55                                   ` Drew Adams
  2004-10-26 21:06                                     ` David Kastrup
  2004-10-26 21:54                                     ` Kim F. Storm
  2004-10-27 17:34                                   ` Richard Stallman
  1 sibling, 2 replies; 91+ messages in thread
From: Drew Adams @ 2004-10-26 18:55 UTC (permalink / raw)


1. We can no doubt find a good way to let click mouse-1 be used to follow
links and push action buttons - and still let it be used as it is now
(99.99%). We've discussed several possibilities, and we can discuss more and
settle on a good design. Already, IMO, acceptable approaches have been
discussed, but there is no reason not to scrutinize the issue more before we
make a change. David is right that whatever design we choose should not be
based only on how current code happens to be implemented; it should make
sense as a design, not just as a coding workaround.


2. Default behavior - One of the main reasons to make this fairly major
change to longstanding Emacs behavior is to bring Emacs behavior in line
with what users experience elsewhere. [This is not an argument for aligning
Emacs to every convention existing outside Emacs, but when a convention is
reasonable and fairly compatible, then it can at least be _considered_ for
possible adoption.]

This conventional behavior is especially important for _new_ Emacs users.
It makes sense, if we make this change to Emacs, to make the new behavior
the _default_ behavior. Let experienced Emacs users turn it off, if they
like, but let new Emacs users find it on by default. It would be silly to
require new users to somehow discover how to achieve this conventional
behavior. Emacs lovers often enjoy discovering not-so-obvious Emacs
features, but the standard, simple stuff should be obvious for newbies.

Sometimes we seem to be taking the view that if a candidate change is
recognized as very useful but it isn't 100% pluggable or it interferes with
current behavior or implementation a tiny bit, then the proper course of
action is to add it to Emacs, but turn it off. IMO, whether a feature should
be on or off by default should be determined first by whether or not it is
useful to most users and it might not be discovered by them if off by
default.

An argument for 100% correctness in 100% of contexts is appropriate to
consider, but as a secondary argument - it should generally not be the main
criterion for whether something is on by default. If something is _very_
broken, then it probably shouldn't be added at all. If something is, say,
1/10 broken and cannot easily be fixed, then one could argue for adding it
only as a non-default option, but if functionality and performance are close
to 100%, then the main argument for defaulting should be in terms of
usefulness.

[Yes, there are also arguments for not turning on something that will
interfere with minimal operation (e.g. -nw), and, yes, those arguments can
trump the main argument about useful service to most users. But sometimes
such minimal operation can be cantoned within, say, a command-line option,
so that the default behavior can be different in this case.]


3. Time-delay - Without having tried the time-delay implementation, my guess
is that it would be an acceptable solution. The longer delay should be used
for the less common behavior in Emacs - and for the behavior that is less
common (inexistant?) outside of Emacs.

IOW, the normal, short click behavior of mouse-1 should be to follow a link
(or to click a button); the longer "click" should set point or drag or
whatever within the link text. As far as an action button (or an active
image or image map) is concerned, I see little reason for this exceptional
mouse-1 behavior there; such behavior should be reserved for links - which
is one more reason that the long "click" should _not_ be the link-follow
action.

Again, we should be looking for the best design in the wider context of UI
conventions that have grown up around us - not looking for ways to minimize
impact on experienced Emacs users or on the current Emacs implementation.


4. Modifier-key - I still think that a keyboard modifier would be an
acceptable alternative if, for some reason (or in some contexts), the
time-delay approach had drawbacks. Someone argued that it would be hard to
remember. In that case, that is a further argument that setting point &
dragging within link text must be a rare activity: if it were common, you
would have no problem remembering the key sequence. For instance, if you use
M-mouse-1 often for secondary selection then you have no trouble remembering
it; if you use it rarely, then you might forget it.

Also (slightly off-topic), doesn't it make more sense to use modifier keys
for operations that you might want to _repeat_ by just holding down the
modifier key? What's the point of having, say, S-mouse-1 call up a
font-selection dialog box (mouse-set-font)? There are a limited number of
modifier keys - why would we "waste" them on operations that cannot be
repeated? (Yes, that can be an argument against using a modifier with
mouse-1 for selecting link text - so be it. The latter still makes more
sense to me than calling up a dialog box.)


5. Alternatives - Since we have several alternative ways to achieve the
current mouse-1 behavior within link text, I don't see a good argument for
not moving forward with the change we're discussing. These alternatives
might be slightly less convenient than just clicking mouse-1 for this
relatively rare need (selecting text within a link), but so what? If you can
accomplish this need in any of a number of ways, what's the big pb? So far,
we've considered these acceptable alternatives, the first of which already
exists:

 - use the keyboard (set mark; move point)
 - press mouse-1 a little longer
 - click mouse-1 with a modifier (e.g. C-S-mouse-1)

 Drew

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-26 18:55                                   ` Drew Adams
@ 2004-10-26 21:06                                     ` David Kastrup
  2004-10-26 21:54                                     ` Kim F. Storm
  1 sibling, 0 replies; 91+ messages in thread
From: David Kastrup @ 2004-10-26 21:06 UTC (permalink / raw)
  Cc: emacs-devel

"Drew Adams" <drew.adams@oracle.com> writes:

> 3. Time-delay - Without having tried the time-delay implementation,
> my guess is that it would be an acceptable solution. The longer
> delay should be used for the less common behavior in Emacs - and for
> the behavior that is less common (inexistant?) outside of Emacs.
>
> IOW, the normal, short click behavior of mouse-1 should be to follow
>a link (or to click a button); the longer "click" should set point or
>drag or whatever within the link text. As far as an action button (or
>an active image or image map) is concerned, I see little reason for
>this exceptional mouse-1 behavior there; such behavior should be
>reserved for links - which is one more reason that the long "click"
>should _not_ be the link-follow action.

I have given some reasons.  Another is that if "nothing happens",
people will click longer in order to get the "I really mean it!"
message across.  This "Damn it computer, do what I mean" approach that
makes people figure out themselves how this is done does not work when
the short click follows links.

Some other programs offer you the possibility to stop some action from
actually happening from a click or drag if you press ESC (or C-g?)
before releasing the button.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-26 18:55                                   ` Drew Adams
  2004-10-26 21:06                                     ` David Kastrup
@ 2004-10-26 21:54                                     ` Kim F. Storm
  2004-10-27  2:15                                       ` Luc Teirlinck
  2004-10-27 17:35                                       ` Richard Stallman
  1 sibling, 2 replies; 91+ messages in thread
From: Kim F. Storm @ 2004-10-26 21:54 UTC (permalink / raw)
  Cc: emacs-devel


Good points.  I agree with all of your views.

The default behaviour should be that a "normal" mouse-1 click follows a link.

The problem is how to not break external packages like preview-latex or AUCTex.

But CVS emacs is still far from being released, and I guess that if we
make a clean interface how to inhibit the mapping for specific links,
the package authors will have plenty of time to adapt their code for
CVS emacs.

>  - use the keyboard (set mark; move point)

Make that:  click mouse-1 outside the link, move into the link with the keyboard

>  - press mouse-1 a little longer

As my patch does, and it works nicely!

and you forgot:

- drag mouse-1 inside the link (you may drag it back to the character
  you clicked on, so you don't really mark a region).

>  - click mouse-1 with a modifier (e.g. C-S-mouse-1)

I don't see a need for this.  Better reserve such bindings for
future enhancements.


BTW, I agree that S-mouse-1 wastes a good mouse binding, as you can
easily get the same function from the menu Options > Set font/fontset.

I wish I could use S-mouse-1 to start marking a rectangle in CUA.

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-26 21:54                                     ` Kim F. Storm
@ 2004-10-27  2:15                                       ` Luc Teirlinck
  2004-10-27 12:52                                         ` Kim F. Storm
  2004-10-27 17:35                                       ` Richard Stallman
  1 sibling, 1 reply; 91+ messages in thread
From: Luc Teirlinck @ 2004-10-27  2:15 UTC (permalink / raw)
  Cc: drew.adams, emacs-devel

Kim Storm wrote:

   But CVS emacs is still far from being released,

If we keep going on like this, there _never_ will be another release.

    and I guess that if we make a clean interface how to inhibit the
    mapping for specific links, the package authors will have plenty
    of time to adapt their code for CVS emacs.

It is also a matter of not only documenting the new behavior, but also
changing references to the old behavior everywhere in all manuals,
which may be spread all over the place.  Realistically speaking,
implementing the new behavior will introduce bugs that will need to be
fixed.  Everything combined, plenty of resources will be diverted from
working on the release, assuming we still want to have one.

I have not been following this discussion, as I have had no time to do
so.  I thought the purpose of a feature freeze was exactly that people
would not have to divert time away from working on the release by
worrying about substantive new features and their possible negative effects.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-25 15:35                           ` Stefan Monnier
  2004-10-26  9:00                             ` Kim F. Storm
@ 2004-10-27  7:22                             ` Kai Grossjohann
  2004-10-27  7:35                               ` David Kastrup
  2004-10-27 10:47                             ` Richard Stallman
  2 siblings, 1 reply; 91+ messages in thread
From: Kai Grossjohann @ 2004-10-27  7:22 UTC (permalink / raw)


Stefan Monnier <monnier@iro.umontreal.ca> writes:

> Adding a message saying "please keep the button pressed longer if you want
> to follow the link" is really not much better than adding a message that
> says "use mouse-2 if you want to follow the link".

Both Microsoft Windows and Apple MacOS (including X, I guess) allow
you to keep the button pressed a little longer to rename, instead of
select, a file.

So the "keep it pressed longer" action is a known one.

Keeping the button pressed longer to edit the text where the link is
seems natural.  I like this idea.

Kai

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-27  7:22                             ` Kai Grossjohann
@ 2004-10-27  7:35                               ` David Kastrup
  2004-10-27 12:32                                 ` Kim F. Storm
  2004-10-28  6:24                                 ` Richard Stallman
  0 siblings, 2 replies; 91+ messages in thread
From: David Kastrup @ 2004-10-27  7:35 UTC (permalink / raw)
  Cc: emacs-devel

Kai Grossjohann <kai@emptydomain.de> writes:

> Stefan Monnier <monnier@iro.umontreal.ca> writes:
>
>> Adding a message saying "please keep the button pressed longer if you want
>> to follow the link" is really not much better than adding a message that
>> says "use mouse-2 if you want to follow the link".
>
> Both Microsoft Windows and Apple MacOS (including X, I guess) allow
> you to keep the button pressed a little longer to rename, instead of
> select, a file.
>
> So the "keep it pressed longer" action is a known one.
>
> Keeping the button pressed longer to edit the text where the link is
> seems natural.  I like this idea.

It would appear that the shorter duration click here is the one that
does the "simpler" action, namely selection, whereas the longer click
does the action with more effect.  Also the shorter click does the
action that does not need to be undone if you don't like it.

Anyway: if we really try modelling ourselves after other systems: in
file managers and the like, one usually selects a single item (and
placed point) by a single click, and executes it by a double click.

I think that nobody will complain if a double click on a link will
cause it to execute instead of marking a word or line.  It is indeed
rare that you need to mark a work from inside a link; and if you do,
you can do it by normal dragging marking without much additional
hassle.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-25 15:35                           ` Stefan Monnier
  2004-10-26  9:00                             ` Kim F. Storm
  2004-10-27  7:22                             ` Kai Grossjohann
@ 2004-10-27 10:47                             ` Richard Stallman
  2 siblings, 0 replies; 91+ messages in thread
From: Richard Stallman @ 2004-10-27 10:47 UTC (permalink / raw)
  Cc: emacs-devel

    > After all, we have the same problem with recognizing double-clicks.

    Sure.  But users have wanted double-clicks, so we gave it to them.
    Users's aren't asking for variable-duration clicks.

This may be the best way to give various different users the different
things they want, more or less.  It is impossible to satisfy all the
constraints here.

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-26  9:00                             ` Kim F. Storm
  2004-10-26  9:25                               ` David Kastrup
@ 2004-10-27 10:49                               ` Richard Stallman
  2004-10-27 12:24                                 ` Kim F. Storm
  2004-10-28  2:27                                 ` Miles Bader
  1 sibling, 2 replies; 91+ messages in thread
From: Richard Stallman @ 2004-10-27 10:49 UTC (permalink / raw)
  Cc: monnier, emacs-devel

    I don't really want to add any message there -- if we leave the feature
    disabled by default, the users who turn it on doesn't need to be told
    how to get the alternative behaviour.

What's the point of adding it if it will be disabled by default?
Only for people with two-button mice?  These are not common with
GNU/Linux are they?

I thought the whole point was that beginning users would not know
about Mouse-2 and find Emacs harder to use as a result.  The only
way the feature can address this is if it is on by default.
We're looking for ways to make the default Emacs behavior better;
any options are a secondary matter.

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-27 10:49                               ` Richard Stallman
@ 2004-10-27 12:24                                 ` Kim F. Storm
  2004-10-27 13:03                                   ` Stefan Monnier
  2004-10-27 13:18                                   ` David Kastrup
  2004-10-28  2:27                                 ` Miles Bader
  1 sibling, 2 replies; 91+ messages in thread
From: Kim F. Storm @ 2004-10-27 12:24 UTC (permalink / raw)
  Cc: monnier, emacs-devel

Richard Stallman <rms@gnu.org> writes:

>     I don't really want to add any message there -- if we leave the feature
>     disabled by default, the users who turn it on doesn't need to be told
>     how to get the alternative behaviour.
>
> What's the point of adding it if it will be disabled by default?

Personally, I think it should be enabled by default, but I felt some
general resistance towards this feature building up, so I was just
being defensive :-)

> Only for people with two-button mice?  These are not common with
> GNU/Linux are they?

They are common on laptops (installing GNU/Linux on it didn't seem to
add the missing button :-)


>
> I thought the whole point was that beginning users would not know
> about Mouse-2 and find Emacs harder to use as a result.  The only
> way the feature can address this is if it is on by default.

Agree.

> We're looking for ways to make the default Emacs behavior better;
> any options are a secondary matter.

The problem is to agree on what the behaviour should be...

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-27  7:35                               ` David Kastrup
@ 2004-10-27 12:32                                 ` Kim F. Storm
  2004-10-28  6:24                                 ` Richard Stallman
  1 sibling, 0 replies; 91+ messages in thread
From: Kim F. Storm @ 2004-10-27 12:32 UTC (permalink / raw)
  Cc: Kai Grossjohann, emacs-devel

David Kastrup <dak@gnu.org> writes:

> I think that nobody will complain if a double click on a link will
> cause it to execute instead of marking a word or line.  It is indeed
> rare that you need to mark a work from inside a link; and if you do,
> you can do it by normal dragging marking without much additional
> hassle.

It was a little more complex to implement than the previous methods,
but here is a patch which adds 'double click' support as a user option:

Index: mouse.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/mouse.el,v
retrieving revision 1.251
diff -c -r1.251 mouse.el
*** mouse.el	18 Oct 2004 09:29:26 -0000	1.251
--- mouse.el	27 Oct 2004 12:29:31 -0000
***************
*** 48,53 ****
--- 48,77 ----
    :type 'boolean
    :group 'mouse)
  
+ (defcustom mouse-1-click-follows-link 'double
+   "Non-nil means that clicking mouse-1 on a link follows the link.
+ This is only done for links which have the mouse-face property.
+ 
+ If value is the symbol double, a double click follows the link.
+ 
+ If value is an integer, the time between pressing and releasing
+ the mouse button determines whether to follow the link or perform
+ the normal mouse-1 action (typically set point).  The absolute
+ numeric value specifices the maximum duration of a \"short click\"
+ in milli-seconds.  A positive value means that a short click
+ follows the link, and a longer click performs the normal action.
+ A negative value specifies the opposite behaviour.
+ 
+ Otherwise, a single mouse-1 click unconditionally follows the link.
+ 
+ Note that dragging the mouse never follows the link."
+   :version "21.4"
+   :type '(choice (const :tag "Disabled" nil)
+ 		 (const :tag "Double click" double)
+                  (number :tag "Single click time limit" :value 300)
+                  (other :tag "Single click" t))
+   :group 'mouse)
+ 
  \f
  ;; Provide a mode-specific menu on a mouse button.
  
***************
*** 731,736 ****
--- 755,764 ----
        (run-hooks 'mouse-leave-buffer-hook)
        (mouse-drag-region-1 start-event))))
  
+ (defun mouse-on-link-p (pos)
+   (and (get-char-property pos 'mouse-face)
+        (not (get-char-property pos 'dont-follow-link))))
+ 
  (defun mouse-drag-region-1 (start-event)
    (mouse-minibuffer-check start-event)
    (let* ((echo-keystrokes 0)
***************
*** 746,751 ****
--- 774,780 ----
  		     (nth 3 bounds)
  		   ;; Don't count the mode line.
  		   (1- (nth 3 bounds))))
+ 	 on-link remap-double-click
  	 (click-count (1- (event-click-count start-event))))
      (setq mouse-selection-click-count click-count)
      (setq mouse-selection-click-count-buffer (current-buffer))
***************
*** 755,760 ****
--- 784,796 ----
      (if (< (point) start-point)
  	(goto-char start-point))
      (setq start-point (point))
+     (setq on-link (and mouse-1-click-follows-link
+ 		       (mouse-on-link-p start-point)))
+     (setq remap-double-click (and on-link
+ 				  (eq mouse-1-click-follows-link 'double)
+ 				  (= click-count 1)))
+     (if remap-double-click  ;; Don't expand mouse overlay in links
+ 	(setq click-count 0))
      (let ((range (mouse-start-end start-point start-point click-count)))
        (move-overlay mouse-drag-overlay (car range) (nth 1 range)
  		    (window-buffer start-window))
***************
*** 877,882 ****
--- 913,938 ----
  			 (or end-point
  			     (= (window-start start-window)
  				start-window-start)))
+ 		(if (and on-link
+ 			 (not end-point)
+ 			 (consp event)
+ 			 (or remap-double-click
+ 			     (and
+ 			      (not (eq mouse-1-click-follows-link 'double))
+ 			      (= click-count 0)
+ 			      (= (event-click-count event) 1)
+ 			      (not (input-pending-p))
+ 			      (or (not (integerp mouse-1-click-follows-link))
+ 				  (let ((t0 (posn-timestamp (event-start start-event)))
+ 					(t1 (posn-timestamp (event-end event))))
+ 				    (and (integerp t0) (integerp t1)
+ 					 (if (> mouse-1-click-follows-link 0)
+ 					     (<= (- t1 t0) mouse-1-click-follows-link)
+ 					   (< (- t0 t1) mouse-1-click-follows-link)))))
+ 			      (or (not double-click-time)
+ 				  (sit-for 0 (if (integerp double-click-time)
+ 						 double-click-time 500) t)))))
+ 		    (setcar event 'mouse-2))
  		(setq unread-command-events
  		      (cons event unread-command-events)))))
  	(delete-overlay mouse-drag-overlay)))))

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-27  2:15                                       ` Luc Teirlinck
@ 2004-10-27 12:52                                         ` Kim F. Storm
  2004-10-27 13:02                                           ` Luc Teirlinck
                                                             ` (2 more replies)
  0 siblings, 3 replies; 91+ messages in thread
From: Kim F. Storm @ 2004-10-27 12:52 UTC (permalink / raw)
  Cc: drew.adams, emacs-devel

Luc Teirlinck <teirllm@dms.auburn.edu> writes:

> Kim Storm wrote:
>
>    But CVS emacs is still far from being released,
>
> If we keep going on like this, there _never_ will be another release.

I agree, but I think this is an important issue.

>
>     and I guess that if we make a clean interface how to inhibit the
>     mapping for specific links, the package authors will have plenty
>     of time to adapt their code for CVS emacs.
>
> It is also a matter of not only documenting the new behavior, but also
> changing references to the old behavior everywhere in all manuals,
> which may be spread all over the place.  

This is a general - but user customizable - change in behaviour.

As such, we should need to document the current "standard" behaviour,
and then add a section at an appropriate place which says something
like (need to be elaborated on a little bit):

Whenever you can click with mouse-2 to follow a link, you may also be
able to follow the link by a double click or a short click with
mouse-1.  The actual mouse-1 action that you need to follow a link is
controlled by the user option mouse-1-click-follows-link.

One problem is the tooltips which say "click mouse-2 to ...".  
To fix that requires that we change all places where the tooltips
are created (unless there is some place we can put in a clever
rewrite of the message).

>                                          Realistically speaking,
> implementing the new behavior will introduce bugs that will need to be
> fixed.  Everything combined, plenty of resources will be diverted from
> working on the release, assuming we still want to have one.

I don't think there will be many bugs related to this -- some but not many.

> I have not been following this discussion, as I have had no time to do
> so.  I thought the purpose of a feature freeze was exactly that people
> would not have to divert time away from working on the release by
> worrying about substantive new features and their possible negative effects.

That's a problem of a feature freeze that's in place for more than 1 year.

If you look at the change logs, new features still creap in over time.

Global warming may also be a problem :-)

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-27 12:52                                         ` Kim F. Storm
@ 2004-10-27 13:02                                           ` Luc Teirlinck
  2004-10-27 13:16                                           ` David Kastrup
  2004-10-27 17:29                                           ` finger-pointer curser as default for mouse-face text Drew Adams
  2 siblings, 0 replies; 91+ messages in thread
From: Luc Teirlinck @ 2004-10-27 13:02 UTC (permalink / raw)
  Cc: drew.adams, emacs-devel

Kim Storm wrote:

   As such, we should need to document the current "standard" behaviour,

I thought that there was talk about changing the current standard
behavior, in which case changes all over the manuals and tons of other
places would be required.

   One problem is the tooltips which say "click mouse-2 to ...".  
   To fix that requires that we change all places where the tooltips
   are created (unless there is some place we can put in a clever
   rewrite of the message).

I guess you would need to make the message dependent on the value of
the option.

Sincerely,

Luc.

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-27 12:24                                 ` Kim F. Storm
@ 2004-10-27 13:03                                   ` Stefan Monnier
  2004-10-27 13:18                                   ` David Kastrup
  1 sibling, 0 replies; 91+ messages in thread
From: Stefan Monnier @ 2004-10-27 13:03 UTC (permalink / raw)
  Cc: rms, emacs-devel

> (installing GNU/Linux on it didn't seem to add the missing button :-)

It's because you didn't try hard(ware) enough!


        Stefan

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-27 12:52                                         ` Kim F. Storm
  2004-10-27 13:02                                           ` Luc Teirlinck
@ 2004-10-27 13:16                                           ` David Kastrup
  2004-10-27 14:51                                             ` feature freeze (was: finger-pointer curser as default for mouse-face text) Reiner Steib
  2004-10-27 17:29                                           ` finger-pointer curser as default for mouse-face text Drew Adams
  2 siblings, 1 reply; 91+ messages in thread
From: David Kastrup @ 2004-10-27 13:16 UTC (permalink / raw)
  Cc: Luc Teirlinck, drew.adams, emacs-devel

storm@cua.dk (Kim F. Storm) writes:

> That's a problem of a feature freeze that's in place for more than 1
> year.

IIRC, it was more or less this August, give or take a month or two.
Certainly not a year.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-27 12:24                                 ` Kim F. Storm
  2004-10-27 13:03                                   ` Stefan Monnier
@ 2004-10-27 13:18                                   ` David Kastrup
  1 sibling, 0 replies; 91+ messages in thread
From: David Kastrup @ 2004-10-27 13:18 UTC (permalink / raw)
  Cc: emacs-devel, rms, monnier

storm@cua.dk (Kim F. Storm) writes:

> Richard Stallman <rms@gnu.org> writes:
>
>> Only for people with two-button mice?  These are not common with
>> GNU/Linux are they?
>
> They are common on laptops (installing GNU/Linux on it didn't seem
> to add the missing button :-)

Emulate-3-buttons is offered by X servers as well as gpm and pretty
much required on such systems, not just for Emacs.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 91+ messages in thread

* feature freeze (was: finger-pointer curser as default for mouse-face text)
  2004-10-27 13:16                                           ` David Kastrup
@ 2004-10-27 14:51                                             ` Reiner Steib
  2004-10-27 15:15                                               ` Kim F. Storm
  2004-10-27 15:15                                               ` feature freeze David Kastrup
  0 siblings, 2 replies; 91+ messages in thread
From: Reiner Steib @ 2004-10-27 14:51 UTC (permalink / raw)


On Wed, Oct 27 2004, David Kastrup wrote:

> storm@cua.dk (Kim F. Storm) writes:
>
>> That's a problem of a feature freeze that's in place for more than 1
>> year.
>
> IIRC, it was more or less this August, give or take a month or two.
> Certainly not a year.

It was in May, see e.g.
<URL:http://thread.gmane.org/x5wu3kn0nl.fsf@lola.goethe.zz> or
<URL:http://thread.gmane.org/gmane.emacs.devel/21327>.

Bye, Reiner.
-- 
       ,,,
      (o o)
---ooO-(_)-Ooo---  |  PGP key available  |  http://rsteib.home.pages.de/

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: feature freeze (was: finger-pointer curser as default for mouse-face text)
  2004-10-27 14:51                                             ` feature freeze (was: finger-pointer curser as default for mouse-face text) Reiner Steib
@ 2004-10-27 15:15                                               ` Kim F. Storm
  2004-10-27 15:15                                               ` feature freeze David Kastrup
  1 sibling, 0 replies; 91+ messages in thread
From: Kim F. Storm @ 2004-10-27 15:15 UTC (permalink / raw)


Reiner Steib <reinersteib+gmane@imap.cc> writes:

> On Wed, Oct 27 2004, David Kastrup wrote:
>
>> storm@cua.dk (Kim F. Storm) writes:
>>
>>> That's a problem of a feature freeze that's in place for more than 1
>>> year.
>>
>> IIRC, it was more or less this August, give or take a month or two.
>> Certainly not a year.
>
> It was in May, see e.g.
> <URL:http://thread.gmane.org/x5wu3kn0nl.fsf@lola.goethe.zz> or
> <URL:http://thread.gmane.org/gmane.emacs.devel/21327>.

So with an expected release around May next year, it's 1 year...

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: feature freeze
  2004-10-27 14:51                                             ` feature freeze (was: finger-pointer curser as default for mouse-face text) Reiner Steib
  2004-10-27 15:15                                               ` Kim F. Storm
@ 2004-10-27 15:15                                               ` David Kastrup
  1 sibling, 0 replies; 91+ messages in thread
From: David Kastrup @ 2004-10-27 15:15 UTC (permalink / raw)


Reiner Steib <reinersteib+gmane@imap.cc> writes:

> On Wed, Oct 27 2004, David Kastrup wrote:
>
>> storm@cua.dk (Kim F. Storm) writes:
>>
>>> That's a problem of a feature freeze that's in place for more than 1
>>> year.
>>
>> IIRC, it was more or less this August, give or take a month or two.
>> Certainly not a year.
>
> It was in May, see e.g.
> <URL:http://thread.gmane.org/x5wu3kn0nl.fsf@lola.goethe.zz> or
> <URL:http://thread.gmane.org/gmane.emacs.devel/21327>.

Still quite a short year.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 91+ messages in thread

* RE: finger-pointer curser as default for mouse-face text
  2004-10-27 12:52                                         ` Kim F. Storm
  2004-10-27 13:02                                           ` Luc Teirlinck
  2004-10-27 13:16                                           ` David Kastrup
@ 2004-10-27 17:29                                           ` Drew Adams
  2004-10-28 14:05                                             ` Kim F. Storm
  2 siblings, 1 reply; 91+ messages in thread
From: Drew Adams @ 2004-10-27 17:29 UTC (permalink / raw)
  Cc: Kim F. Storm

-----Original Message-----From: Kim F. Storm
  document the current "standard" behaviour,
  and then add a section at an appropriate place which says something like:

  Whenever you can click with mouse-2 to follow a link, you may also be
  able to follow the link by a double click or a short click with
  mouse-1.  The actual mouse-1 action that you need to follow a link is
  controlled by the user option mouse-1-click-follows-link.

mouse-1 click to follow links or click action buttons, if available, should
become the _standard_ behavior. Instead of introducing mouse-2 as the
standard behavior, and then saying that mouse-1 "may also be" usable as an
alternative in many contexts, we should just introduce mouse-1 clicking (or
not bother to introduce it at all! - the closer Emacs behavior is to what
users are used to, the less explanation we need). We should not mention
mouse-2 in this context.

What about mouse-2? If mouse-1 clicking follows links, there is no reason
for mouse-2 to duplicate this behavior. I think Kim has (for now) left
mouse-2 as an alternative to mouse-1 in his patch: both do the same thing
wrt links. I would prefer that we adopt mouse-1 and drop mouse-2 (except as
an optional replacement for mouse-1 -- one or the other; not both). Let
users (or future Emacs versions) use mouse-2 for something else in this
context - by default, it should probably be `mouse-yank-at-click' in most
contexts.

Any other, optional (customizable) behavior besides
mouse-1-click-to-follow-a-link should be described in a way that does not
confuse new users into thinking that they need to wrestle with such
customization. IOW, we need to make it clear when we're documenting
customization (optional behavior).

For the (new) standard mouse-1 behavior, we should just speak of "click",
not "short click". Documentation of any "long click" behavior needs to be
separated, so users see clearly that they don't _need_ to understand it just
to be able to "point and shoot".

IOW, let's separate out the esoteric stuff from the main message: click
mouse-1 to follow a link or use an action button.

  One problem is the tooltips which say "click mouse-2 to ...".
  To fix that requires that we change all places where the tooltips
  are created (unless there is some place we can put in a clever
  rewrite of the message).

Such messages should ideally be constructed based on dynamic key bindings,
so that they would automatically reflect the appropriate behavior. Isn't it
possible to use, say, `substitute-command-keys' here?

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-26 12:23                                 ` Kim F. Storm
  2004-10-26 18:55                                   ` Drew Adams
@ 2004-10-27 17:34                                   ` Richard Stallman
  1 sibling, 0 replies; 91+ messages in thread
From: Richard Stallman @ 2004-10-27 17:34 UTC (permalink / raw)
  Cc: monnier, emacs-devel

    Well, if the "normal" click follows the link (and I claim that the
    normal click is the short click), most users will never think there is
    a problem, as they don't usually have to set the mouse in the middle
    of a link.

    They will probably set it next to the link and move the cursor into
    the link (that's how it is often done in other applications).

That seems pretty convincing, so I guess it is ok to make this change.

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-26 21:54                                     ` Kim F. Storm
  2004-10-27  2:15                                       ` Luc Teirlinck
@ 2004-10-27 17:35                                       ` Richard Stallman
  2004-11-01 14:40                                         ` Karl Eichwalder
  1 sibling, 1 reply; 91+ messages in thread
From: Richard Stallman @ 2004-10-27 17:35 UTC (permalink / raw)
  Cc: drew.adams, emacs-devel

    BTW, I agree that S-mouse-1 wastes a good mouse binding, as you can
    easily get the same function from the menu Options > Set font/fontset.

It is probably not used all that much, so if it is not important
for compatibility, we could get rid of it.

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-27 10:49                               ` Richard Stallman
  2004-10-27 12:24                                 ` Kim F. Storm
@ 2004-10-28  2:27                                 ` Miles Bader
  1 sibling, 0 replies; 91+ messages in thread
From: Miles Bader @ 2004-10-28  2:27 UTC (permalink / raw)
  Cc: emacs-devel, monnier, Kim F. Storm

Richard Stallman <rms@gnu.org> writes:
> Only for people with two-button mice?  These are not common with
> GNU/Linux are they?

That's what Microsoft uses, so for a while they were _very_ common on
the sort of commodity hardware most people use.

The middle button seems to have come back recently in the form of a
clickable scroll wheel, which most mice seem to have these days.

-Miles
-- 
We live, as we dream -- alone....

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-27  7:35                               ` David Kastrup
  2004-10-27 12:32                                 ` Kim F. Storm
@ 2004-10-28  6:24                                 ` Richard Stallman
  1 sibling, 0 replies; 91+ messages in thread
From: Richard Stallman @ 2004-10-28  6:24 UTC (permalink / raw)
  Cc: kai, emacs-devel

    Anyway: if we really try modelling ourselves after other systems: in
    file managers and the like, one usually selects a single item (and
    placed point) by a single click, and executes it by a double click.

File managers and browsers represent two different UI traditions, so
they provide different models to follow.  Some things in Emacs are
clearly links; it makes no sense for them to act like file managers.

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-27 17:29                                           ` finger-pointer curser as default for mouse-face text Drew Adams
@ 2004-10-28 14:05                                             ` Kim F. Storm
  0 siblings, 0 replies; 91+ messages in thread
From: Kim F. Storm @ 2004-10-28 14:05 UTC (permalink / raw)
  Cc: emacs-devel


[For the busy reader -- see patch to tooltip code at the end.  ++kfs]


"Drew Adams" <drew.adams@oracle.com> writes:

> -----Original Message-----From: Kim F. Storm
>   document the current "standard" behaviour,
>   and then add a section at an appropriate place which says something like:
>
>   Whenever you can click with mouse-2 to follow a link, you may also be
>   able to follow the link by a double click or a short click with
>   mouse-1.  The actual mouse-1 action that you need to follow a link is
>   controlled by the user option mouse-1-click-follows-link.
>
> mouse-1 click to follow links or click action buttons, if available, should
> become the _standard_ behavior. Instead of introducing mouse-2 as the
> standard behavior, and then saying that mouse-1 "may also be" usable as an
> alternative in many contexts, we should just introduce mouse-1 clicking (or
> not bother to introduce it at all! - the closer Emacs behavior is to what
> users are used to, the less explanation we need). We should not mention
> mouse-2 in this context.

Mouse-2 IS the standard behaviour -- Lisp code binds mouse-2, not mouse-1.
Changing that is a HUGE change.  In comparison, the proposed change is a
tiny change which adds a convenient mapping of mouse-1 to mouse-2 in
this specific case.


The text could be rephrased to say:

With the default settings, click mouse-1 to follow a highlighted link.

If you want to set the point rather than follow the link, just keep
the mouse-1 button pressed a little longer (at least 0.35 seconds).

This behaviour is a major change from traditional emacs mouse
behaviour where you use mouse-2 to follow links, while mouse-1
(typically) would set point in the link.

The mouse-2 binding is still the standard binding for following a
link, while the mouse-1 behaviour is customized via the variable
mouse-1-click-follows-link.  For example, you can control the length
of the click, or you can make only a mouse-1 double-click follow
links, while keeping the traditional mouse-1 behaviour.


>
> What about mouse-2? If mouse-1 clicking follows links, there is no reason
> for mouse-2 to duplicate this behavior. I think Kim has (for now) left
> mouse-2 as an alternative to mouse-1 in his patch: both do the same thing
> wrt links. I would prefer that we adopt mouse-1 and drop mouse-2 (except as
> an optional replacement for mouse-1 -- one or the other; not both). Let
> users (or future Emacs versions) use mouse-2 for something else in this
> context - by default, it should probably be `mouse-yank-at-click' in most
> contexts.

I don't think we shall do anything about mouse-2 clicks -- that's the
traditional binding, and the binding you make at the Lisp level.

>   One problem is the tooltips which say "click mouse-2 to ...".
>   To fix that requires that we change all places where the tooltips
>   are created (unless there is some place we can put in a clever
>   rewrite of the message).
>
> Such messages should ideally be constructed based on dynamic key bindings,
> so that they would automatically reflect the appropriate behavior. Isn't it
> possible to use, say, `substitute-command-keys' here?

Here is a patch to the tooltip code to change mouse-2 to mouse-1 on the fly:

*** tooltip.el	01 Sep 2003 17:45:17 +0200	1.34
--- tooltip.el	28 Oct 2004 13:31:16 +0200	
***************
*** 480,486 ****
  (defun tooltip-show-help-function (msg)
    "Function installed as `show-help-function'.
  MSG is either a help string to display, or nil to cancel the display."
!   (let ((previous-help tooltip-help-message))
      (setq tooltip-help-message msg)
      (cond ((null msg)
  	   ;; Cancel display.  This also cancels a delayed tip, if
--- 480,502 ----
  (defun tooltip-show-help-function (msg)
    "Function installed as `show-help-function'.
  MSG is either a help string to display, or nil to cancel the display."
!   (let ((previous-help tooltip-help-message)
! 	mp pos)
!     (if (and mouse-1-click-follows-link
! 	     (stringp msg)
! 	     (save-match-data
! 	       (string-match "^mouse-2" msg))
! 	     (setq mp (mouse-pixel-position))
! 	     (consp (setq pos (cdr mp)))
! 	     (setq pos (posn-at-x-y (car pos) (cdr pos) (car mp)))
! 	     (windowp (posn-window pos)))
! 	(with-current-buffer (window-buffer (posn-window pos))
! 	  (setq lttt (list msg mp pos))
! 	  (if (mouse-on-link-p (posn-point pos))
! 	      (setq msg (concat
! 		    (if (eq mouse-1-click-follows-link 'double)
! 			"double-" "")
! 		    "mouse-1" (substring msg 7))))))
      (setq tooltip-help-message msg)
      (cond ((null msg)
  	   ;; Cancel display.  This also cancels a delayed tip, if

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-27 17:35                                       ` Richard Stallman
@ 2004-11-01 14:40                                         ` Karl Eichwalder
  2004-11-01 15:44                                           ` Stefan
  2004-11-02 14:08                                           ` Richard Stallman
  0 siblings, 2 replies; 91+ messages in thread
From: Karl Eichwalder @ 2004-11-01 14:40 UTC (permalink / raw)


Richard Stallman <rms@gnu.org> writes:

>     BTW, I agree that S-mouse-1 wastes a good mouse binding, as you can
>     easily get the same function from the menu Options > Set font/fontset.
>
> It is probably not used all that much, so if it is not important
> for compatibility, we could get rid of it.

For what's worth, I often use it.  It is somehow important to me because
I run Emacs with teh menu-bar disabled most ot the time.

-- 
http://www.gnu.franken.de/ke/                           |      ,__o
                                                        |    _-\_<,
                                                        |   (*)/'(*)
Key fingerprint = F138 B28F B7ED E0AC 1AB4  AA7F C90A 35C3 E9D0 5D1C

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-11-01 14:40                                         ` Karl Eichwalder
@ 2004-11-01 15:44                                           ` Stefan
  2004-11-02 14:08                                           ` Richard Stallman
  1 sibling, 0 replies; 91+ messages in thread
From: Stefan @ 2004-11-01 15:44 UTC (permalink / raw)
  Cc: emacs-devel

> For what's worth, I often use it.  It is somehow important to me because
> I run Emacs with teh menu-bar disabled most ot the time.

Try C-mouse-3 one of these days ;-)


        Stefan

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-11-01 14:40                                         ` Karl Eichwalder
  2004-11-01 15:44                                           ` Stefan
@ 2004-11-02 14:08                                           ` Richard Stallman
  2004-11-02 18:08                                             ` Karl Eichwalder
  1 sibling, 1 reply; 91+ messages in thread
From: Richard Stallman @ 2004-11-02 14:08 UTC (permalink / raw)
  Cc: emacs-devel

It is interesting to find a user who often specifies faces.
Can you tell us the circumstances where you do that?

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-11-02 14:08                                           ` Richard Stallman
@ 2004-11-02 18:08                                             ` Karl Eichwalder
  2004-11-02 21:51                                               ` Miles Bader
                                                                 ` (2 more replies)
  0 siblings, 3 replies; 91+ messages in thread
From: Karl Eichwalder @ 2004-11-02 18:08 UTC (permalink / raw)
  Cc: emacs-devel

Richard Stallman <rms@gnu.org> writes:

> It is interesting to find a user who often specifies faces.
> Can you tell us the circumstances where you do that?

>From time to time it is necessary to increase the font size: When I want
to demonstrate something to somebody watching my screen, or when I want
to check some accented or foreign characters more closely.

-- 
http://www.gnu.franken.de/ke/                           |      ,__o
                                                        |    _-\_<,
                                                        |   (*)/'(*)
Key fingerprint = F138 B28F B7ED E0AC 1AB4  AA7F C90A 35C3 E9D0 5D1C

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-11-02 18:08                                             ` Karl Eichwalder
@ 2004-11-02 21:51                                               ` Miles Bader
  2004-11-02 23:41                                                 ` Drew Adams
  2004-11-03 17:04                                                 ` Richard Stallman
  2004-11-03  9:11                                               ` Kim F. Storm
  2004-11-03 17:03                                               ` Richard Stallman
  2 siblings, 2 replies; 91+ messages in thread
From: Miles Bader @ 2004-11-02 21:51 UTC (permalink / raw)
  Cc: rms, emacs-devel

On Tue, Nov 02, 2004 at 07:08:34PM +0100, Karl Eichwalder wrote:
> > It is interesting to find a user who often specifies faces.
> > Can you tell us the circumstances where you do that?
> 
> >From time to time it is necessary to increase the font size: When I want
> to demonstrate something to somebody watching my screen, or when I want
> to check some accented or foreign characters more closely.

Something like the following elisp code might be more useful for this.  It
implements the C-+ and C-- (that's control-minus :-) bindings many modern GUI
programs use to grow/shrink the default face.

The main problem with these commands -- and so why I haven't pursued adding
them to the official sources[*] -- is that they don't interact well with a
default face which has been set using customize-face (because the Emacs
face-customization machinery sucks).  However the traditional font-setting
menu _also_ doesn't work if you've customized the `default' face, so I'm
assuming you haven't done that... :-)

[*] Perhaps the benefits of these commands outweigh their drawbacks however
and they _should_ be added to CVS; after all the traditional "set font" menu
has the same problem.  Of course the real solution is to overhaul the
face-setting mechanism to not have the horrible looping problems it has.

-Miles


;;; default-grow.el

(defun increase-default-face-height (&optional steps)
  "Increase the height of the default face by STEPS steps.
Each step multiplies the height by 1.2; a negative number of steps
decreases the height by the same amount."
  (interactive
   (list
    (cond ((eq current-prefix-arg '-) -1)
	  ((numberp current-prefix-arg) current-prefix-arg)
	  ((consp current-prefix-arg) -1)
	  (t 1))))
  (let ((frame (selected-frame)))
    (set-face-attribute 'default frame
			:height (floor
				 (* (face-attribute 'default :height frame)
				    (expt 1.3 steps))))))

(defun decrease-default-face-height (&optional steps)
  "Decrease the height of the default face by STEPS steps.
Each step divides the height by 1.2; a negative number of steps
increases the height by the same amount."
  (interactive
   (list
    (cond ((eq current-prefix-arg '-) -1)
	  ((numberp current-prefix-arg) current-prefix-arg)
	  ((consp current-prefix-arg) -1)
	  (t 1))))
  (increase-default-face-height (- steps)))

(global-set-key [(control =)] 'increase-default-face-height)
(global-set-key [(control +)] 'increase-default-face-height)
(global-set-key [(control -)] 'decrease-default-face-height)


-- 
"Unless there are slaves to do the ugly, horrible, uninteresting work, culture
and contemplation become almost impossible. Human slavery is wrong, insecure,
and demoralizing.  On mechanical slavery, on the slavery of the machine, the
future of the world depends." -Oscar Wilde, "The Soul of Man Under Socialism"

^ permalink raw reply	[flat|nested] 91+ messages in thread

* RE: finger-pointer curser as default for mouse-face text
  2004-11-02 21:51                                               ` Miles Bader
@ 2004-11-02 23:41                                                 ` Drew Adams
  2004-11-02 23:53                                                   ` Stefan
  2004-11-03 17:04                                                 ` Richard Stallman
  1 sibling, 1 reply; 91+ messages in thread
From: Drew Adams @ 2004-11-02 23:41 UTC (permalink / raw)
  Cc: Miles Bader, rms, emacs-devel

[I don't know if this is pertinant to this discussion or not - ignore if
not. (CC'ing the list because this is related to Miles's message -- this is
_not_ a request to consider this feature for inclusion in Emacs.)]

Karl,

I too wrote a command (`doremi-grow-font') that increases or decreases the
font size of the frame by an increment. You could bind it to, say, C-+ (and
bind to C-- a lambda that calls `doremi-grow-font' after flipping the sign
of the increment). Like Miles's code, this lets you, in effect, _zoom_ the
Emacs page (buffer) in and out easily.

However, I also wrote another command, `doremi-font-size', that uses
`doremi-grow-font' to let you increase or decrease the font size
incrementally using the arrow keys or the mouse wheel (like IE browser-text
zooming with the mouse wheel). Command `doremi-font-size' uses a very
general function, `doremi', which you can use to do almost anything
incrementally using the arrow keys or mouse wheel.

See, for discussion, code, and documentation,
http://www.emacswiki.org/cgi-bin/wiki/DoReMi (the font-size changing code is
in library http://www.emacswiki.org/elisp/doremi-frm.el; the general
`doremi' function is in library http://www.emacswiki.org/elisp/doremi.el).

Without going into the details of the rest, here is the code of
`doremi-grow-font', to give you an idea:

(defun doremi-grow-font (&optional increment frame)
  "Increase size of font in FRAME by INCREMENT.
Interactively, INCREMENT is given by the prefix argument.
Optional FRAME parameter defaults to current frame."
  (interactive "p")
  (setq frame (or frame (selected-frame)))
  (let ((fontname (cdr (assq 'font (frame-parameters frame)))))
    (when (query-fontset fontname)
      (setq fontname (nth 2 (assq 'ascii (aref (fontset-info fontname frame)
2)))))
    (let ((xlfd-fields (x-decompose-font-name fontname))
          new-font-name)
      (unless xlfd-fields (error "Cannot decompose font name"))
      (aset xlfd-fields
            xlfd-regexp-pixelsize-subnum
            (number-to-string
             (+ (string-to-number (aref xlfd-fields
xlfd-regexp-pixelsize-subnum))
                increment)))
      ;; Must set point size and width to "*", so frame width will adjust to
new font size
      (aset xlfd-fields xlfd-regexp-pointsize-subnum "*")
      (aset xlfd-fields xlfd-regexp-avgwidth-subnum "*")
      (setq new-font-name (x-compose-font-name xlfd-fields))
      (modify-frame-parameters frame (list (cons 'font new-font-name)))
      ;; Update faces that want a bold or italic version of the default
font.
      (frame-update-faces frame))))

Miles's code looks much simpler, and seems to work just as well. I don't
know what other functional differences there might be.

HTH,

  Drew

-----Original Message-----From: Miles Bader

On Tue, Nov 02, 2004 at 07:08:34PM +0100, Karl Eichwalder wrote:
> From time to time it is necessary to increase the font size: When I want
> to demonstrate something to somebody watching my screen, or when I want
> to check some accented or foreign characters more closely.

Something like the following elisp code might be more useful for this.  It
implements the C-+ and C-- (that's control-minus :-) bindings many modern
GUI
programs use to grow/shrink the default face.

... default-grow.el
<snip>

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-11-02 23:41                                                 ` Drew Adams
@ 2004-11-02 23:53                                                   ` Stefan
  2004-11-03  1:27                                                     ` incrementor-decrementor commands and bindings (was: finger-pointer curser as default for mouse-face text) Drew Adams
                                                                       ` (2 more replies)
  0 siblings, 3 replies; 91+ messages in thread
From: Stefan @ 2004-11-02 23:53 UTC (permalink / raw)
  Cc: Martin Blais, Miles Bader, emacs-devel, rms, Karl Eichwalder

> I too wrote a command (`doremi-grow-font') that increases or decreases the
> font size of the frame by an increment. You could bind it to, say, C-+ (and
> bind to C-- a lambda that calls `doremi-grow-font' after flipping the sign
> of the increment). Like Miles's code, this lets you, in effect, _zoom_ the
> Emacs page (buffer) in and out easily.

BTW, C-+ is OK because it's currently unused, but C-- is already bound and
I've been known to use it, so otherpeople might use it as well.


        Stefan


> -----Original Message-----From: Miles Bader

> On Tue, Nov 02, 2004 at 07:08:34PM +0100, Karl Eichwalder wrote:
>> From time to time it is necessary to increase the font size: When I want
>> to demonstrate something to somebody watching my screen, or when I want
>> to check some accented or foreign characters more closely.

> Something like the following elisp code might be more useful for this.  It
> implements the C-+ and C-- (that's control-minus :-) bindings many modern
> GUI
> programs use to grow/shrink the default face.

> ... default-grow.el
> <snip>



> _______________________________________________
> Emacs-devel mailing list
> Emacs-devel@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-devel

^ permalink raw reply	[flat|nested] 91+ messages in thread

* incrementor-decrementor commands and bindings (was: finger-pointer curser as default for mouse-face text)
  2004-11-02 23:53                                                   ` Stefan
@ 2004-11-03  1:27                                                     ` Drew Adams
  2004-11-03  7:51                                                       ` incrementor-decrementor commands and bindings (was: finger-pointercurser " Stephan Stahl
  2004-11-03  1:34                                                     ` finger-pointer curser as default for mouse-face text Miles Bader
  2004-11-03  9:26                                                     ` Kim F. Storm
  2 siblings, 1 reply; 91+ messages in thread
From: Drew Adams @ 2004-11-03  1:27 UTC (permalink / raw)
  Cc: Martin Blais, Miles Bader, rms, Stefan, Karl Eichwalder

This is starting to veer off-topic, but FWIW, this follows Stefan's last
point.

This was a main motivation behind my creating function `doremi':

I wanted to have several different incrementing/decrementing commands bound
to "repeatable" key sequences -- that is, chords (e.g. with modifiers) that
can be held down to repeat an action. The number of such chord combinations
is limited, however, and many combinations (e.g. the self-inserting chars,
the arrows) are already taken, so I looked for another approach.

I decided to use just the four arrow keys (and/or the mouse-wheel) for _all_
such commands - easy to use and remember. To do that, I have a non-chord
binding for each incrementor-decrementor command to "start it up"; then the
command itself reads the arrow keys and the mouse-wheel to do its job.

For instance, I have these command bindings:

C-x t c  doremi-bg-rgb - change frame background color incrementally
C-x t z  doremi-font-size - zoom: change frame font size incrementally
C-x t w  doremi-frame-width - change frame width incrementally
C-x t h  doremi-frame-height - change frame height incrementally
C-x t x  doremi-frame-horizontally - move frame left/right incrementally
C-x t y  doremi-frame-vertically - move frame up/down incrementally
C-x t b  doremi-buffers - successively cycle among existing buffers
C-x t m  doremi-bookmarks - successively cycle among bookmarks
C-x t t  doremi-color-themes - successively cycle among color themes
C-x t f  doremi-font - successively cycle among fonts, choosing by name
C-x t u  doremi-frame-configs - undo: cycle among recorded frame configs
C-x t .  save-frame-config - add current frame config to the cycle for `C-x
t u'

[ Actually only one of the `C-x t' bindings `w' and `h' is needed. Likewise,
only one of `x' and `y' really needs to be bound. Each of these commands
lets you use all _four_ arrow keys and/or the mouse-wheel to move the frame
in any direction or change any of its dimensions. So, for instance, a single
binding lets you increment and decrement the frame width and frame height.
It's like having 4 (+2 for the wheel) bindings in one. ]

These particular incrementor-decrementor commands might not seem that
interesting, but you might be able to imagine others that you would find
useful. The point is that if each such command had to use a different pair
of key bindings that let you continually hold the keys pressed, you would
soon run out of chord combinations, and you would in any case have
difficulty remembering them all.

Eventually, BTW, I'd like to see users be able (as an option) to use such
incrementor-decrementor commands to change appropriate settings on Customize
pages (you see the change as its made; you can undo it if you like). This is
not appropriate for all settings, by any means, but for some kinds of
settings it could be useful. An example might be changing the default frame
background color a la `doremi-bg-rgb'. The idea is to move more toward
direct manipulation in the UI.

 - Drew


-----Original Message-----From: Stefan

BTW, C-+ is OK because it's currently unused, but C-- is already bound and
I've been known to use it, so otherpeople might use it as well.

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-11-02 23:53                                                   ` Stefan
  2004-11-03  1:27                                                     ` incrementor-decrementor commands and bindings (was: finger-pointer curser as default for mouse-face text) Drew Adams
@ 2004-11-03  1:34                                                     ` Miles Bader
  2004-11-03  9:31                                                       ` Kim F. Storm
  2004-11-03  9:26                                                     ` Kim F. Storm
  2 siblings, 1 reply; 91+ messages in thread
From: Miles Bader @ 2004-11-03  1:34 UTC (permalink / raw)
  Cc: rms, emacs-devel, Karl Eichwalder, Martin Blais, Drew Adams,
	Miles Bader

On Tue, Nov 02, 2004 at 06:53:21PM -0500, Stefan wrote:
> BTW, C-+ is OK because it's currently unused, but C-- is already bound and
> I've been known to use it, so otherpeople might use it as well.

The current Emacs binding for `C--' (negatie-argument) seems pretty
redundant, as there are many other ways of getting the same thing (`M--',
`C-u -', both of which I suspect are more commonly used).  Since a "reduce
font size" binding of `C--' is rather common in other GUI programs
(gtk/gnome, mozilla), I'd say it easily trumps the current Emacs binding.

-Miles
-- 
We are all lying in the gutter, but some of us are looking at the stars.
-Oscar Wilde

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: incrementor-decrementor commands and bindings (was:  finger-pointercurser as default for mouse-face text)
  2004-11-03  1:27                                                     ` incrementor-decrementor commands and bindings (was: finger-pointer curser as default for mouse-face text) Drew Adams
@ 2004-11-03  7:51                                                       ` Stephan Stahl
  2004-11-03 15:26                                                         ` Drew Adams
  0 siblings, 1 reply; 91+ messages in thread
From: Stephan Stahl @ 2004-11-03  7:51 UTC (permalink / raw)
  Cc: rms, emacs-devel, Stefan, Karl Eichwalder, Martin Blais,
	Miles Bader

Hi.

Drew Adams said:

> I decided to use just the four arrow keys (and/or the mouse-wheel) for _all_
> such commands - easy to use and remember. To do that, I have a non-chord
> binding for each incrementor-decrementor command to "start it up"; then the
> command itself reads the arrow keys and the mouse-wheel to do its job.

I really like this idea.  However i think the use of the arrowkeys /
mousewheel should be extended to maybe M-p, M-n.  Those keys should be
availible while not in minibuffer-mode and there they mirror the
behaviour of arrowkeys up / down.  I find it annoying to move the hand
off of the homerow.  Guess that's why i do not use things like C-x
<left> / <right> or <S-up>, <S-down>, <S-left>, <S-right> ....
My two cent :).

Stephan
-- 
Stephan Stahl

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-11-02 18:08                                             ` Karl Eichwalder
  2004-11-02 21:51                                               ` Miles Bader
@ 2004-11-03  9:11                                               ` Kim F. Storm
  2004-11-03 17:03                                               ` Richard Stallman
  2 siblings, 0 replies; 91+ messages in thread
From: Kim F. Storm @ 2004-11-03  9:11 UTC (permalink / raw)
  Cc: rms, emacs-devel

Karl Eichwalder <ke@gnu.franken.de> writes:

> Richard Stallman <rms@gnu.org> writes:
>
>> It is interesting to find a user who often specifies faces.
>> Can you tell us the circumstances where you do that?
>
>>From time to time it is necessary to increase the font size: When I want
> to demonstrate something to somebody watching my screen, or when I want
> to check some accented or foreign characters more closely.

Perhaps we could restrict the current S-mouse-1 binding to only work
on the modeline for example.

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-11-02 23:53                                                   ` Stefan
  2004-11-03  1:27                                                     ` incrementor-decrementor commands and bindings (was: finger-pointer curser as default for mouse-face text) Drew Adams
  2004-11-03  1:34                                                     ` finger-pointer curser as default for mouse-face text Miles Bader
@ 2004-11-03  9:26                                                     ` Kim F. Storm
  2004-11-03 10:20                                                       ` David Kastrup
  2 siblings, 1 reply; 91+ messages in thread
From: Kim F. Storm @ 2004-11-03  9:26 UTC (permalink / raw)
  Cc: rms, emacs-devel, Karl Eichwalder, Martin Blais, Drew Adams,
	Miles Bader

Stefan <monnier@iro.umontreal.ca> writes:

>> I too wrote a command (`doremi-grow-font') that increases or decreases the
>> font size of the frame by an increment. You could bind it to, say, C-+ (and
>> bind to C-- a lambda that calls `doremi-grow-font' after flipping the sign
>> of the increment). Like Miles's code, this lets you, in effect, _zoom_ the
>> Emacs page (buffer) in and out easily.
>
> BTW, C-+ is OK because it's currently unused, but C-- is already bound and
> I've been known to use it, so otherpeople might use it as well.

Perhaps C-M-+ and C-M-- ?

C-M-- is bound to the same command as C-- and M--, so I think
we can steal that binding.


-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-11-03  1:34                                                     ` finger-pointer curser as default for mouse-face text Miles Bader
@ 2004-11-03  9:31                                                       ` Kim F. Storm
  0 siblings, 0 replies; 91+ messages in thread
From: Kim F. Storm @ 2004-11-03  9:31 UTC (permalink / raw)
  Cc: rms, emacs-devel, Stefan, Karl Eichwalder, Martin Blais,
	Drew Adams

Miles Bader <miles@gnu.org> writes:

> On Tue, Nov 02, 2004 at 06:53:21PM -0500, Stefan wrote:
>> BTW, C-+ is OK because it's currently unused, but C-- is already bound and
>> I've been known to use it, so otherpeople might use it as well.
>
> The current Emacs binding for `C--' (negatie-argument) seems pretty
> redundant, as there are many other ways of getting the same thing (`M--',
> `C-u -', both of which I suspect are more commonly used).  Since a "reduce
> font size" binding of `C--' is rather common in other GUI programs
> (gtk/gnome, mozilla), I'd say it easily trumps the current Emacs binding.

And current C-- users will quickly learn to keep away their fingers :-).

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-11-03  9:26                                                     ` Kim F. Storm
@ 2004-11-03 10:20                                                       ` David Kastrup
  0 siblings, 0 replies; 91+ messages in thread
From: David Kastrup @ 2004-11-03 10:20 UTC (permalink / raw)
  Cc: rms, emacs-devel, Stefan, Karl Eichwalder, Martin Blais,
	Drew Adams, Miles Bader

storm@cua.dk (Kim F. Storm) writes:

> Stefan <monnier@iro.umontreal.ca> writes:
>
>>> I too wrote a command (`doremi-grow-font') that increases or decreases the
>>> font size of the frame by an increment. You could bind it to, say, C-+ (and
>>> bind to C-- a lambda that calls `doremi-grow-font' after flipping the sign
>>> of the increment). Like Miles's code, this lets you, in effect, _zoom_ the
>>> Emacs page (buffer) in and out easily.
>>
>> BTW, C-+ is OK because it's currently unused, but C-- is already bound and
>> I've been known to use it, so otherpeople might use it as well.
>
> Perhaps C-M-+ and C-M-- ?
>
> C-M-- is bound to the same command as C-- and M--, so I think
> we can steal that binding.

More often than not, this will switch screen resolutions in the X
server.  While one can circumvent this with ESC C--, this pretty much
defeats the purpose of having a keybinding easy to find.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 91+ messages in thread

* RE: incrementor-decrementor commands and bindings (was: finger-pointercurser as default for mouse-face text)
  2004-11-03  7:51                                                       ` incrementor-decrementor commands and bindings (was: finger-pointercurser " Stephan Stahl
@ 2004-11-03 15:26                                                         ` Drew Adams
  2004-11-04  9:51                                                           ` Richard Stallman
  0 siblings, 1 reply; 91+ messages in thread
From: Drew Adams @ 2004-11-03 15:26 UTC (permalink / raw)
  Cc: rms, emacs-devel, Stefan, Karl Eichwalder, Martin Blais,
	Miles Bader

Good suggestion. And trivial to add, of course.

FYI, two details I didn't mention -

 1. Using the Meta modifier with the arrow keys and/or the mouse wheel
boosts the incrementation (step size), so change is faster.

 2. There are four variables representing (by default) the up & down arrow
keys and their Meta versions. You can change these variables to use, say,
keys `C-n' and `C-p' instead of up & down. Also, for a command (like
`doremi-frame-horizontally') to use the left & right arrows instead of up &
down, it can just bind the up & down variables to the left & right arrow
keys before calling `doremi'.


-----Original Message-----From: Stephan Stahl
> I decided to use just the four arrow keys (and/or the mouse-wheel) for
_all_
> such commands - easy to use and remember. To do that, I have a non-chord
> binding for each incrementor-decrementor command to "start it up"; then
the
> command itself reads the arrow keys and the mouse-wheel to do its job.

I really like this idea.  However i think the use of the arrowkeys /
mousewheel should be extended to maybe M-p, M-n.  Those keys should be
availible while not in minibuffer-mode and there they mirror the
behaviour of arrowkeys up / down.  I find it annoying to move the hand
off of the homerow.  Guess that's why i do not use things like C-x
<left> / <right> or <S-up>, <S-down>, <S-left>, <S-right> ....

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-11-02 18:08                                             ` Karl Eichwalder
  2004-11-02 21:51                                               ` Miles Bader
  2004-11-03  9:11                                               ` Kim F. Storm
@ 2004-11-03 17:03                                               ` Richard Stallman
  2 siblings, 0 replies; 91+ messages in thread
From: Richard Stallman @ 2004-11-03 17:03 UTC (permalink / raw)
  Cc: emacs-devel

    >From time to time it is necessary to increase the font size: When I want
    to demonstrate something to somebody watching my screen, or when I want
    to check some accented or foreign characters more closely.

The question is how common it is for users to use this feature.
Perhaps we should ask them.

However, if we don't have any specific thing we want to do using
S-mouse-1, we may as well leave it alone anyway.

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-11-02 21:51                                               ` Miles Bader
  2004-11-02 23:41                                                 ` Drew Adams
@ 2004-11-03 17:04                                                 ` Richard Stallman
  1 sibling, 0 replies; 91+ messages in thread
From: Richard Stallman @ 2004-11-03 17:04 UTC (permalink / raw)
  Cc: emacs-devel, ke

    The main problem with these commands -- and so why I haven't pursued adding
    them to the official sources[*] -- is that they don't interact well with a
    default face which has been set using customize-face (because the Emacs
    face-customization machinery sucks).

Could you please describe the problem in a clearer, more constructivne
way?

    BTW, C-+ is OK because it's currently unused, but C-- is already bound and
    I've been known to use it, so otherpeople might use it as well.

If someday we make faces more useful than now, it might be worth
redefining C-- this way.  The commands could apply to the region when
transient-mark-mode is non-nil.

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: incrementor-decrementor commands and bindings (was: finger-pointercurser as default for mouse-face text)
  2004-11-03 15:26                                                         ` Drew Adams
@ 2004-11-04  9:51                                                           ` Richard Stallman
  0 siblings, 0 replies; 91+ messages in thread
From: Richard Stallman @ 2004-11-04  9:51 UTC (permalink / raw)
  Cc: martin.blais, monnier, ke, stahl, emacs-devel, miles

Please let's focus on fixing bugs and getting a release ready,
not on discussing plans for new features.

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: finger-pointer curser as default for mouse-face text
  2004-10-17 19:27 Drew Adams
  2004-10-18 11:19 ` Kim F. Storm
  2004-10-18 13:59 ` Richard Stallman
@ 2004-12-07 13:16 ` Per Abrahamsen
  2 siblings, 0 replies; 91+ messages in thread
From: Per Abrahamsen @ 2004-12-07 13:16 UTC (permalink / raw)


Sorry for this very late answer in a dead thread, but I think one
important factoid never came up:

RMS changed mouse-1 in customize buffers to follow links, after
consulting with a "naive user".  The customize buffers are probably
some of the first Emacs buffers with clickable links a new user sees.
Thus, making mouse-1 follow links everywhere would make Emacs more
consistent with itself, not just consistent with other applications.

^ permalink raw reply	[flat|nested] 91+ messages in thread

end of thread, other threads:[~2004-12-07 13:16 UTC | newest]

Thread overview: 91+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <DNEMKBNJBGPAOPIJOOICAEKKCAAA.drew.adams@oracle.com>
2004-10-19  9:04 ` finger-pointer curser as default for mouse-face text Kim F. Storm
2004-10-19 15:31   ` Lennart Borgman
2004-10-19 16:12   ` Drew Adams
2004-10-21 13:56   ` Richard Stallman
2004-10-21 14:47     ` Kim F. Storm
2004-10-21 16:03       ` Lennart Borgman
2004-10-23  4:48       ` Richard Stallman
2004-10-24 12:42         ` Kim F. Storm
2004-10-24 12:59           ` Lennart Borgman
2004-10-24 19:40             ` Kim F. Storm
2004-10-24 20:06               ` Lennart Borgman
2004-10-25 13:13             ` Richard Stallman
2004-10-24 13:10           ` David Kastrup
2004-10-24 19:59             ` Kim F. Storm
2004-10-26  9:04               ` Richard Stallman
2004-10-26 17:05                 ` Lennart Borgman
2004-10-24 22:31           ` Stefan
2004-10-25  7:22             ` David Kastrup
2004-10-25 11:47               ` Stefan
2004-10-25 12:51                 ` David Kastrup
2004-10-25 13:50                   ` Stefan Monnier
2004-10-25 14:52                     ` Ralf Angeli
2004-10-25 15:08                       ` Stefan Monnier
2004-10-25 15:18                         ` David Kastrup
2004-10-25 15:35                           ` Stefan Monnier
2004-10-26  9:00                             ` Kim F. Storm
2004-10-26  9:25                               ` David Kastrup
2004-10-26 12:23                                 ` Kim F. Storm
2004-10-26 18:55                                   ` Drew Adams
2004-10-26 21:06                                     ` David Kastrup
2004-10-26 21:54                                     ` Kim F. Storm
2004-10-27  2:15                                       ` Luc Teirlinck
2004-10-27 12:52                                         ` Kim F. Storm
2004-10-27 13:02                                           ` Luc Teirlinck
2004-10-27 13:16                                           ` David Kastrup
2004-10-27 14:51                                             ` feature freeze (was: finger-pointer curser as default for mouse-face text) Reiner Steib
2004-10-27 15:15                                               ` Kim F. Storm
2004-10-27 15:15                                               ` feature freeze David Kastrup
2004-10-27 17:29                                           ` finger-pointer curser as default for mouse-face text Drew Adams
2004-10-28 14:05                                             ` Kim F. Storm
2004-10-27 17:35                                       ` Richard Stallman
2004-11-01 14:40                                         ` Karl Eichwalder
2004-11-01 15:44                                           ` Stefan
2004-11-02 14:08                                           ` Richard Stallman
2004-11-02 18:08                                             ` Karl Eichwalder
2004-11-02 21:51                                               ` Miles Bader
2004-11-02 23:41                                                 ` Drew Adams
2004-11-02 23:53                                                   ` Stefan
2004-11-03  1:27                                                     ` incrementor-decrementor commands and bindings (was: finger-pointer curser as default for mouse-face text) Drew Adams
2004-11-03  7:51                                                       ` incrementor-decrementor commands and bindings (was: finger-pointercurser " Stephan Stahl
2004-11-03 15:26                                                         ` Drew Adams
2004-11-04  9:51                                                           ` Richard Stallman
2004-11-03  1:34                                                     ` finger-pointer curser as default for mouse-face text Miles Bader
2004-11-03  9:31                                                       ` Kim F. Storm
2004-11-03  9:26                                                     ` Kim F. Storm
2004-11-03 10:20                                                       ` David Kastrup
2004-11-03 17:04                                                 ` Richard Stallman
2004-11-03  9:11                                               ` Kim F. Storm
2004-11-03 17:03                                               ` Richard Stallman
2004-10-27 17:34                                   ` Richard Stallman
2004-10-27 10:49                               ` Richard Stallman
2004-10-27 12:24                                 ` Kim F. Storm
2004-10-27 13:03                                   ` Stefan Monnier
2004-10-27 13:18                                   ` David Kastrup
2004-10-28  2:27                                 ` Miles Bader
2004-10-27  7:22                             ` Kai Grossjohann
2004-10-27  7:35                               ` David Kastrup
2004-10-27 12:32                                 ` Kim F. Storm
2004-10-28  6:24                                 ` Richard Stallman
2004-10-27 10:47                             ` Richard Stallman
2004-10-26  9:05               ` Richard Stallman
2004-10-25  8:31             ` Kim F. Storm
2004-10-25 10:01               ` David Kastrup
2004-10-25 12:32                 ` Kim F. Storm
2004-10-26  9:05               ` Richard Stallman
2004-10-25 13:13           ` Richard Stallman
2004-10-21 14:09   ` David Kastrup
2004-10-21 14:42     ` Kim F. Storm
2004-10-21 15:21       ` David Kastrup
2004-10-21 19:55         ` Kim F. Storm
2004-10-21 20:09           ` Drew Adams
2004-10-21 21:45             ` Stefan Monnier
2004-10-21 22:09               ` David Kastrup
2004-10-22  9:10                 ` Kim F. Storm
2004-10-22 12:45                   ` David Kastrup
2004-10-22 15:03                     ` Kim F. Storm
2004-10-22 15:56                       ` David Kastrup
2004-10-17 19:27 Drew Adams
2004-10-18 11:19 ` Kim F. Storm
2004-10-18 13:59 ` Richard Stallman
2004-12-07 13:16 ` Per Abrahamsen

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).