[Openmcl-devel] How do I move the cursor in a window under program control?

Arthur Cater arthur.cater at ucd.ie
Fri Oct 17 08:19:53 PDT 2014


Hi Ron,

This may not be relevant to your issue but just in case it is I offer it up.

I'm just upgrading from ccl1.7 to ccl1.10 and I find my "clickable" contrib doesn't
work any more, most obviously because gui::compute-temporary-attributes has changed,
and gui::set-temporary-character-attributes no longer exists. (My reward for
tinkering with unexported functions I guess. Must have gsoh!) My code had also
redefined hi::handle-hemlock-event and hi::stream-write-char and hi::stream-write-string.
I had recently been noticing other things about clickable and so I suspect maybe it hadn't
worked properly since 1.6.

I noticed along the way that ordinary use of the editor was acting strangely.
Putting the cursor somewhere in a file and typing text put the new text at the
top of the file, while maintaining cursor position.

If you're using my clickable contrib then maybe I'm to blame. If (as is likely) you're not
then maybe other hacks to hemlock that you privately use are running foul of these
(...temporary-attributes) or other changes inside hemlock. Point is, there have been
changes to hemlock's internals.

But you most likely thought of that. Just in case ...

Arthur

On Oct 17, 2014, at 2:51 AM, Ron Garret wrote:

> This is really driving me nuts.  If I do this:
> 
> 
> (setf b (hi:hemlock-view-buffer (ed)))
> 
> (let ((hi::*current-buffer* b))
>  (hi:insert-string (hi:buffer-point b)
> "baz
> bar
> bing
> "))
> 
> (hi:move-mark (hi:buffer-point b) (hi:buffer-start-mark b))
> 
> (let ((hi::*current-buffer* b)) (hi:insert-character (hi:buffer-point b) #\X))
> 
> 
> The X gets inserted at the start of the buffer just as I would expect, but if I then click on the window the cursor is still at the end of the buffer, and if I type a character, that gets inserted at the end of the buffer.
> 
> (If I then call the last line again, I get another X at the beginning of the buffer, and the “bar” and “bing” lines disappear!)
> 
> So clearly moving the buffer point around is not the same as moving the cursor around.  How do I move the cursor???
> 
> rg
> 
> 
> On Oct 5, 2014, at 7:58 AM, Ron Garret <ron at flownet.com> wrote:
> 
>> This appears to be a regression.  It works properly even without my patch in 1.8 but doesn’t work in 1.10.  Apparently the problem is caused by some change deep in the GUI code because the code for editor-execute-expression-command and move-mark have not changed AFAICT.
>> 
>> I’ve opened a ticket.
>> 
>> On Oct 4, 2014, at 5:51 PM, Ron Garret <ron at flownet.com> wrote:
>> 
>>> I want to move the cursor in the top listener to the end of the buffer.  It seems like this should work but it doesn’t.
>>> 
>>> (in-package :hemlock-interface)
>>> (setf b (gui::hemlock-buffer (#/topListener gui::hemlock-listener-document)))
>>> (move-mark (buffer-point b) (buffer-end-mark b))
>>> 
>>> What I’m really trying to accomplish is to insure that the bottom of the top listener is visible after doing an eval-region in an editor window.  This is supposed to happen automatically, but it has never worked.  I had a patch that fixed this, but the patch stopped working in version 1.10.
>>> 
>>> Thanks,
>>> rg
>>> 
>>> _______________________________________________
>>> Openmcl-devel mailing list
>>> Openmcl-devel at clozure.com
>>> https://lists.clozure.com/mailman/listinfo/openmcl-devel
>> 
>> _______________________________________________
>> Openmcl-devel mailing list
>> Openmcl-devel at clozure.com
>> https://lists.clozure.com/mailman/listinfo/openmcl-devel
> 
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> https://lists.clozure.com/mailman/listinfo/openmcl-devel




More information about the Openmcl-devel mailing list