Re: [code] [scinterm] Re: Sync Curses Cursor for tmux Copy Mode

From: Mitchell <>
Date: Fri, 18 Aug 2017 21:44:55 -0400 (EDT)

Hi Chad,

On Fri, 18 Aug 2017, wrote:

> Hi Mitchell,
> On Wed, Aug 16, 2017 at 10:19:56PM -0400, Mitchell wrote:
>> Hi Chad,
>> On Mon, 14 Aug 2017, wrote:
>>> Hi Mitchell,
>>> On Mon, Aug 14, 2017 at 02:44:55PM -0400, Mitchell wrote:
>>>> Hi Chad,
>>>> On Sun, 13 Aug 2017, wrote:
>>>>> Hi Textadept Users!
>>>>> One bit of functionality I miss from Vim is the seamless transition from
>>>>> Vim to tmux copy mode. The tmux cursor starts at the current position of
>>>>> the Vim cursor. In textadept-curses, the tmux cursor always starts at
>>>>> the bottom-left corner of the screen.
>>>>> I dug into this issue a bit and it's caused by Scintilla drawing the
>>>>> caret as a single, inverted-color character and hiding the terminal
>>>>> cursor. Tmux copy mode starts from the position of the terminal cursor.
>>>>> A workaround in the patch below is to move the terminal cursor to the
>>>>> current position of the Scintilla caret after painting is finished. This
>>>>> works for screen and tmux including for split views. However it doesn't
>>>>> work for the command entry cursor.
>>>>> Any chance we can get this patch cleaned up and merged upstream?
>>>>> [snip]
>>>> I think Scinterm[1] is a more appropriate place to put this patch, perhaps in the `NoutRefresh()` function[2]. A potential benefit is that since Textadept's command entry is a Scintilla window, the cursor should be updated on paint.
>>>> If you want to take a stab at it, go for it. Otherwise I'll see what I can do when I have some time.
>>>> Cheers,
>>>> Mitchell
>>>> [1]:
>>>> [2]:
>>> You are a magician! Moving the patch to the scinterm `NoutRefresh()`
>>> function fixed the command entry issue, simplified the code, and will
>>> add the functionality for other ScintillaTerm clients.
>>> One issue however is that textadept redraws all panes on refresh. If the
>>> cursor isn't in the last drawn pane, then the physical cursor ends in
>>> the wrong spot. This can be remedied by explicitly drawing the
>>> `focused_view` again last. I'm not sure this approach is good however.
>> The `ScintillaTerm` class inherits a Scintilla field called `hasFocus`. You can conditionally move the cursor if `hasFocus` is true. Since only one Scintilla window should have focus at a time (assuming the container application handles this, and hopefully Textadept does...), the draw order should not matter.
>> Cheers,
>> Mitchell
> That worked great! Now no changes are required in textadept.
> What do you think about this patch?

Thanks, I've applied something similar[1]. The next Textadept nightly build will have this update.



You are subscribed to
To change subscription settings, send an e-mail to
To unsubscribe, send an e-mail to
Received on Fri 18 Aug 2017 - 21:44:55 EDT

This archive was generated by hypermail 2.2.0 : Sat 19 Aug 2017 - 06:44:28 EDT