Line Numbers in Text Editor

Peter Brigham MD pmbrig at gmail.com
Sat Jun 26 08:29:22 EDT 2010


On Jun 25, 2010, at 7:37 PM, Alex Tweedly wrote:

> The straightforward answer is using formattedText ..... but the  
> deeper question is what line numbering you want for the lines when  
> there is line-wrapping happening. For instance, if it is something  
> like a source code editor, then the line numbers (IMHO) should be  
> independent of the size of window currenty in use.
>
> For example,  if I have the following text
>
> 1   My first line
> 2 this is a very long line of text that is going to be wrapped in a  
> moment when I make the window narrow.
> 3 third line.
>
> Then when the window becomes narrow, do I *want*
>
> 1   My first line
> 2  this is a very long line of text that is going to be wrapped
> 3  in a moment when I make the window narrow.
> 4  third line.
>
> or do I want something like
>
> 1   My first line
> 2   this is a very long line of text that is going to be wrapped
> 2a  in a moment when I make the window narrow.
> 3   third line.
>
> It really depends on whether you are numbering the lines of the  
> window or the lines of the underlying text (or source code, or  
> whatever); quite often, I suspect, it should be the latter. And in  
> that case I don't know of any quick or easy way to figure out how  
> the numbering should be done :-(
>
> -- Alex.

In the latter case, the easiest way to approach the problem is to  
place the line numbers into the field itself with a tab delimiter.  
It's easy to get something like:

> 1   My first line
> 2   this is a very long line of text that is going to be wrapped
> in a moment when I make the window narrow. <--------
> 3   third line.

(If you need the "2a" option, not so easy.)

Then script around the problem of fetching text from the field by  
something like:

    function getlinetext lineNbrStart, lineNbrEnd
       set the itemdelimiter to tab
       repeat with n = lineNbrStart to lineNbrEnd
          put (item 2 of line n of fld "text") & cr after textList
       end repeat
       return char 1 to -2 of textList
    end getlinetext

This doesn't avoid messiness in what happens when the user selects  
text in the field, but could be useful in some contexts, eg, a list  
field. The Rev IDE script editor uses two fields and doesn't try to  
sort out line wrapping -- the script field is dontwrap = true.

If the rumors about a major revamping of the field object are true,  
maybe we can have built-in functions that give both the clickLine and  
the "formattedClickLine" -- ie, the line marked by the arrow in the  
example above would be clickline = 2, formattedclickline = 3

-- Peter

Peter M. Brigham
pmbrig at gmail.com
http://home.comcast.net/~pmbrig





More information about the use-livecode mailing list