I know the old script doesn't work and isn't suppose to for what you 
wanted, which is why I wrote the new one, which works very differently.

You didn't describe what happened with the new script so I can't say what 
happened. You'll need to give more information and try messing with the 
script. Can't magically know what's wrong.

~aw




On Saturday, January 23, 2016 at 8:11:55 AM UTC-5, Vlad Ghitulescu wrote:
>
> Hello 
>
>
> and thanks for the quick reply **BUT** it doesn't work. 
>
> I had this script of yours: 
>
> -- 
> (* 
>    Author: Kendall Conrad of Angelwatt.com 
>    Name: Smart Newline 
>    Created: 2010-01-23 
>    Updated: 2012-04-21 
>    Description: Based on the current line it will generate different 
> text for the context. It knows about indentation, code doc syntax, 
> function starts, lists, HTML li 
> *) 
> tell application "BBEdit" to tell front window 
>         activate 
>         set lineNum to startLine of selection 
>         set leng to length of line lineNum 
>         -- Move cursor to end of line 
>         if leng > 0 then 
>                 select insertion point after (character (leng) of line 
> lineNum) 
>         end if 
>          
>         -- Find leading whitespace 
>         set theResult to find "(^[\\s]*)" options {search mode:grep} 
> searching 
> in line (lineNum) 
>         -- Set text to the white space found 
>         set white to "" 
>         if found of theResult then 
>                 set white to found text of theResult 
>         end if 
>         set wleng to length of white 
>          
>         -- Define a tab based on user settings 
>         set aTab to tab 
>         if expand tabs then 
>                 set spaceTab to "" 
>                 repeat tab width times 
>                         set spaceTab to spaceTab & space 
>                 end repeat 
>                 set aTab to spaceTab 
>         end if 
>          
>         -- Are we starting a code doc? 
>         if (leng - wleng) ≥ 3 then 
>                 if (characters (wleng + 1) through (wleng + 3) of line 
> lineNum as 
> string) is equal to "/**" then 
>                         set selection to return & white & " * " & return & 
> white & " */" 
>                         select insertion point after line (lineNum + 1) 
>                         return 
>                 end if 
>         end if 
>          
>         -- Are we starting a code doc? 
>         if (leng - wleng) ≥ 2 then 
>                 if (characters (wleng + 1) through (wleng + 2) of line 
> lineNum as 
> string) is equal to "/*" then 
>                         set selection to return & white & " * " & return & 
> white & " */" 
>                         select insertion point after line (lineNum + 1) 
>                         return 
>                 end if 
>         end if 
>          
>         -- Check for lists 
>         set theResult to find "^\\s*[\\*#>\\+\\-]+([\\w ]*)" options 
> {search 
> mode:grep} searching in (line lineNum) 
>         if found of theResult then 
>                 set preFind to find "[\\*#>\\+\\-]+" options {search 
> mode:grep} 
> searching in (line lineNum) 
>                 set _char to found text of preFind 
>                 set selection to return & white & _char & " " 
>                 select insertion point after line (lineNum + 1) 
>                 return 
>         end if 
>          
>         -- Check for numbered list: (1. goes to 2.), (2.5 goes to 2.6) 
>         set theResult to find "^\\s*([\\d]+\\.)" options {search 
> mode:grep} 
> searching in (line lineNum) 
>         if found of theResult then 
>                 set preNum to "" 
>                 set preNumResult to find "([\\d]+\\.)+\\d" options {search 
> mode:grep} 
> searching in (line lineNum) 
>                 if found of preNumResult then 
>                         set preNum to characters 1 thru -2 of (found text 
> of preNumResult) 
>                 end if 
>                 set numResult to find "[\\d]+\\. " options {search 
> mode:grep} 
> searching in (line lineNum) 
>                 if found of numResult then 
>                         set nextNum to ((characters 1 thru -3 of (found 
> text of numResult)) 
> as text) + 1 
>                         set selection to return & white & preNum & nextNum 
> & ". " 
>                         select insertion point after line (lineNum + 1) 
>                         return 
>                 end if 
>         end if 
>          
>         -- Check for <li 
>         if (leng - wleng) > 2 and (characters (wleng + 1) through (wleng + 
> 3) 
> of line lineNum as string) is equal to "<li" then 
>                 -- Capture the whole li tag including attributes 
>                 set liResult to find "<li[^>]*>" options {search 
> mode:grep} searching 
> in (line lineNum) 
>                 if found of liResult then 
>                         set selection to return & white & (found text of 
> liResult) & "</li>" 
>                 else 
>                         -- just use a plain li tag 
>                         set selection to return & white & "<li></li>" 
>                 end if 
>                 select (insertion point before character -5 of line 
> (lineNum + 1)) 
>                 return 
>         end if 
>          
>         -- Check for code block ({}); 
>         if (leng - wleng) > 1 and (characters -2 thru -1 of line lineNum 
> as 
> string) is equal to "({" then 
>                 set selection to return & white & aTab & return & white & 
> "});" 
>                 select insertion point after line (lineNum + 1) 
>                 return 
>         end if 
>          
>         -- Check for code block {} 
>         if (leng - wleng) ≥ 1 and (character -1 of line lineNum as string) 
> is 
> equal to "{" then 
>                 set selection to return & white & aTab & return & white & 
> "}" 
>                 select insertion point after line (lineNum + 1) 
>                 return 
>         end if 
>          
>         -- Check for code block (); 
>         if (leng - wleng) ≥ 1 and (character -1 of line lineNum as string) 
> is 
> equal to "(" then 
>                 set selection to return & white & aTab & return & white & 
> ");" 
>                 select insertion point after line (lineNum + 1) 
>                 return 
>         end if 
>          
>         -- Check for code block : (Python) 
>         if (leng - wleng) ≥ 1 and (character -1 of line lineNum as string) 
> is 
> equal to ":" then 
>                 set selection to return & white & aTab 
>                 select insertion point after line (lineNum + 1) 
>                 return 
>         end if 
>          
>         -- Default: Insert a return plus the white space 
>         set selection to return & white 
>         select insertion point after selection 
> end tell 
> -- 
>
> that I've started with a KeyboardMaestro-macro (living in the KBM-Macros 
> for BBEdit) triggered by CMD-Return. 
>
> I replaced the above script with the new one and… nothing worked 
> anymore: nor the previous *Smart Newline*, neither the new *Smart 
> Prefixed Newline*. 
>
> What went wrong? 
>
>
> Regards, 
> Vlad 
>
>
>
>
> On 23 Jan 2016, at 0:20, Kendall Conrad wrote: 
>
> > What you wanted was a bit different than what Smart Newlines was for, 
> > but 
> > it was easy enough to create a modified version. I only did a small 
> > amount 
> > of testing, but seemed OK. 
> > 
> > (* 
> > Author: Kendall Conrad of Angelwatt.com 
> > Name: Smart Prefixed Newline 
> > Created: 2016-01-22 
> > Updated: 2016-01-22 
> > Description: Starts new line with the same line prefix as the current 
> > line and keeps the text 
> >   from the current cursor position to the end of the line 
> > *) 
> > tell application "BBEdit" to tell front window 
> > activate 
> > set lineNum to startLine of selection 
> > set leng to length of line lineNum 
> > -- Find leading whitespace 
> > set theResult to find "(^[\\s]*)" options {search mode:grep} searching 
> > in line (lineNum) 
> > -- Set text to the white space found 
> > set white to "" 
> > if found of theResult then 
> >     set white to found text of theResult 
> > end if 
> > set wleng to length of white 
> > 
> > -- Define a tab based on user settings 
> > set aTab to tab 
> > if expand tabs then 
> >     set spaceTab to "" 
> >     repeat tab width times 
> >         set spaceTab to spaceTab & space 
> >     end repeat 
> >     set aTab to spaceTab 
> > end if 
> > 
> > -- Check for list style lines 
> > set theResult to find "^\\s*[\\*#>\\+\\-]+([\\w ]*)" options {search 
> > mode:grep} searching in (line lineNum) 
> > if found of theResult then 
> >     set preFind to find "[\\*#>\\+\\-]+" options {search mode:grep} 
> > searching in (line lineNum) 
> >     set _char to found text of preFind 
> >     set selection to return & white & _char 
> >     select insertion point after selection 
> >     return 
> > end if 
> > 
> > -- Default: Insert a return plus the white space 
> > set selection to return & white 
> > select insertion point after selection 
> > end tell 
> > 
> > 
> > ~aw 
> > 
> > 
> > 
> > 
> > On Tuesday, January 19, 2016 at 8:58:34 AM UTC-5, Vlad Ghitulescu 
> > wrote: 
> >> 
> >> Hello! 
> >> 
> >> 
> >> While testing MailMate as an alternative to Apple's Mail.app I edit 
> >> my 
> >> mails now in BBEdit. 
> >> That brings all the joy BBEdit makes :-)… and a question. 
> >> 
> >> Replying to an email generates first text like this: 
> >> 
> >> --- 
> >>> Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam 
> >>> nonumy eirmod 
> >>> tempor invidunt ut labore et dolore magna aliquyam erat, sed diam 
> >> --- 
> >> 
> >> When I put the cursor let's say in the first line, between *(…) 
> >> amet,* 
> >> and * consetetur (…)* and press ENTER, the cited text looks like 
> >> this: 
> >> 
> >> --- 
> >>> Lorem ipsum dolor sit amet, 
> >> consetetur sadipscing elitr, sed diam nonumy 
> >>> eirmod 
> >>> tempor invidunt ut labore et dolore magna aliquyam erat, sed diam 
> >> --- 
> >> 
> >> instead of what I would like: 
> >> 
> >> --- 
> >>> Lorem ipsum dolor sit amet, 
> >>> consetetur sadipscing elitr, sed diam nonumy 
> >>> eirmod 
> >>> tempor invidunt ut labore et dolore magna aliquyam erat, sed diam 
> >> --- 
> >> 
> >> that is, the citation mark *> * is not continued. 
> >> 
> >> I'm using already the Smart Newline - script 
> >> (
> http://www.angelwatt.com/words/2011/04/11/bbedit-smart-newline-open-line/), 
>
> >> 
> >> but it doesn't do it's magic here. 
> >> 
> >> Do you have an idea, how could I convince the citation mark to *jump* 
> >> on 
> >> the next line when inserting something in the middle of a line? 
> >> 
> >> Thanks! 
> >> 
> >> 
> >> Regards, 
> >> Vlad 
> >> 
> >> 
> >> 
> > 
> > -- 
> > This is the BBEdit Talk public discussion group. If you have a 
> > feature request or would like to report a problem, please email 
> > "[email protected] <javascript:>" rather than posting to the group. 
> > Follow @bbedit on Twitter: <http://www.twitter.com/bbedit> 
> > 
> > --- 
> > You received this message because you are subscribed to the Google 
> > Groups "BBEdit Talk" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> > an email to [email protected] <javascript:>. 
> > To post to this group, send email to [email protected] 
> <javascript:>. 
>

-- 
This is the BBEdit Talk public discussion group. If you have a 
feature request or would like to report a problem, please email
"[email protected]" rather than posting to the group.
Follow @bbedit on Twitter: <http://www.twitter.com/bbedit>

--- 
You received this message because you are subscribed to the Google Groups 
"BBEdit Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].

Reply via email to