coclass 'jpp' 
lr_z_ =: 3 : '5!:5 < ''y''' 
pD_z_ =:  1!:2&2 
findline =: 3 : 0 
NB. ft =. WinText_jqtide_ 
NB. fs =. WinSelect_jqtide_ 
'ft fs' =.  {:"1 wd 'sm get term;' 
fs =. 0 ". fs 
ft =. 7 u: ft ,LF 
NB. If a single value is selected, take the whole line; otherwise the selected 
region 
if. 1 < # ~. fs do. 
8 u:  (-~/\ fs) (];.0~ ,.)~ ft 
else. 
pD fs =.  <: {.fs 
pD _50 {. ft 
8 u: (LF taketo&.|. fs {. ft) , LF taketo fs }. ft 
end. 
) 
execM =: 3 : 0 

pD@:lr y 
". y 

)
my userkey entry

F12;1;Macro exec;execM_jpp_@findline_jpp_ 0

This mostly solves everything except for one exception that is perhaps a bug in 
sm get term

if you type or paste say (such that it is at the end of the term)

4 + 4

and move the cursor one character over, it works fine when F12 pressed.


If you leave cursor at the end, the selected text will parse as empty.  Either 
appending LF to term text, or setting select index to 1 (done above with <:) 
less does not change this result.

another error occurs if the last line is selected.

debug console prints are left in to show that the term text includes the full 
last line when the cursor is moved, but does not include the last line when 
cursor is not moved from end, or last line selected.

----- Original Message -----
From: 'Pascal Jasmin' via Beta <[email protected]>
To: "[email protected]" <[email protected]>
Cc: 
Sent: Friday, July 24, 2015 10:35 AM
Subject: Re: [Jbeta] finddissectline_dissect_, WinSelect_jqtide_ 'sm get term; '

a fix I think,

(0 ". fs), # 7 u: ft [ 'ft fs' =.  {:"1 wd 'sm get term;' 
94727 94727 94767 


if you rerun the line by bringing up the last line ctrl-shift up, so cursor is 
at the end

  (0 ". fs), # 7 u: ft [ 'ft fs' =.  {:"1 wd 'sm get term;' 
94897 94897 94897

it seems like once they get synched they stay synched.  I'm unsure how I got 
the first result to be 40 off the total... possibly had the cursor early in the 
line.

On another note, J has had ctrl-E for a long time.  Would defining selection as 
the current line if 0 items selected make sense to everyone else, and then a 


'sm get termselected;' would return selected or line.  Though I guess we can 
get it to work properly with unicode.



----- Original Message -----
From: Henry Rich <[email protected]>
To: [email protected]
Cc: 
Sent: Friday, July 24, 2015 8:09 AM
Subject: Re: [Jbeta] finddissectline_dissect_, WinSelect_jqtide_ 'sm get term; '

The problem appears to be caused by display of UTF-8, such as boxes. 
Here is a display from a fresh session; on each line the cursor was at 
the end of the line when ENTER was pressed, so that select should be the 
same as the length of the term window:

The 3 numbers are (start of selection),(end of selection),(length of 
term window text)

    (0 ". fs), #ft [ 'ft fs' =.  {:"1 wd 'sm get term;'
54 54 54
    (0 ". fs), #ft [ 'ft fs' =.  {:"1 wd 'sm get term;'
118 118 118
    (0 ". fs), #ft [ 'ft fs' =.  {:"1 wd 'sm get term;'
185 185 185
    <1
┌─┐
│1│
└─┘
    (0 ". fs), #ft [ 'ft fs' =.  {:"1 wd 'sm get term;'
270 270 286

select has fallen 16 characters behind.  16 is exactly the number of 
extra bytes added in converting the 8 boxing characters to UTF-8.

Henry Rich

On 7/24/2015 12:29 AM, 'Pascal Jasmin' via Beta wrote:
> from
> finddissectline_dissect_
>
> there appears to be some magic with
>
> WinSelect_jqtide_
> WinText_jqtide_
>
> but accessing these seem to get stale quickly.  ie. doesn't grow despite more 
> getting added to console
>
> this line does update a new "winselect" but it seems out of sync
>
> (400 (i.@[ + -~) 0 {.@". fs) {ft [ 'ft fs' =.  {:"1 wd 'sm get term;'
> should print the last 400 characters, but
>
>    (0 ". fs), #ft [ 'ft fs' =.  {:"1 wd 'sm get term;'
> 94123 94123 160296
>
>    (0 ". fs), #ft [ 'ft fs' =.  {:"1 wd 'sm get term;'
> 94238 94238 160370
>
>    (0 ". fs), #ft [ 'ft fs' =.  {:"1 wd 'sm get term;'
> 94312 94312 160444
>    (0 ". fs), #ft [ 'ft fs' =.  {:"1 wd 'sm get term;'
> 94386 94386 160518
>
>
> the last select value is well below the character count.  These are 4 
> successive calls.  Select does not go up by a consistent amount and neither 
> does Textcount, though in the last 2 calls there is a consistent 76 increase 
> in select and 72 increase in Text
>
> If I were to guess what is happening, for the large discrepancies, is any 
> output from 1!:2 does not update fs.
>
> I can point out that finddissectline_dissect_ as a user key breaks fairly 
> quickly after starting jqt.  Though it does work on startup.
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm


>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to