Cool, thanks for the solutions! On Apr 11, 1:51 pm, Kendall Conrad <[email protected]> wrote: > Here's two AppleScript scripts that I wrote for this type of thing. I > think I made it after a discussion here actually. I have it set with > cmd+return / cmd+shift+return. It handles cases for JavaDoc (/**), > open curly, colon, and by default will just move down a line with the > correct indentation. One benefit is it allows you to execute it no > matter where you're at on the current line. It just looks at the end > of the current line to determine what to do. > > The second script is similar except it will create a new line above > the current one with correct indentation and can be executed from > anywhere on the current line. I made these to mimic vim's o and O > commands, though I added extras for o to have some extra output. > > Hope these help. They're not automatic, but I have found them very > helpful in coding. > > -Kendall > > (* > Author: Kendall Conrad of Angelwatt.com > Name: Smart Newline > Created: 2010-01-23 > Description: Based on the current line it will generate different > text for the context. It knows about indentation, code doc syntax, > function starts > *) > 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 > > -- 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 > > -- Check if inside a code doc > if (leng - wleng) ≥ 1 then > if (characters (wleng + 1) through (wleng + 2) of line > lineNum as > string) is equal to "* " then > set selection to return & white & "* " > select insertion point after line (lineNum + 1) > return > end if > end if > > -- Check for code block {} > if (leng - wleng) ≥ 1 then > if (character -1 of line lineNum as string) is equal to "{" > then > set selection to return & white & tab & return & > white & "}" > select insertion point after line (lineNum + 1) > return > end if > end if > > -- Check for code block : (Python) > if (leng - wleng) ≥ 1 then > if (character -1 of line lineNum as string) is equal to ":" > then > set selection to return & white & tab > select insertion point after line (lineNum + 1) > return > end if > end if > > -- Default: Insert a return plus the white space > set selection to return & white > select insertion point after selection > end tell > > ----------------------------- > > (* > Author: Kendall Conrad of Angelwatt.com > Name: OpenLineUp > Created: 2010-01-18 > Description: Creates a new line above the line currently on at > appropriate indent level > *) > tell application "BBEdit" to tell front window > activate > set lineNum to startLine of selection > set leng to length of line lineNum > -- Move cursor to start of line > if leng > 0 then > select insertion point before (character 1 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 > -- Insert a return plus the white space > set selection to white & return > select insertion point before (character -1 of selection) > end tell > > On Apr 11, 2:24 pm, Robert Rollins <[email protected]> wrote: > > > Hi all! I recently started checking out BBEdit as an alternative > > development platform to Eclipse and TextMate, and so far I like it a > > lot. But there's one thing I'm really missing: syntax aware ("smart") > > auto-indent. > > > When a PHP programmer types an open curly bracket (or a Python > > programmer types a colon) then presses Return, the expectation is that > > the cursor will appear indented one tab further to the right than the > > above line. However, BBEdit's auto-indent brings the cursor to the > > same level as the previous line, regardless of the contents of the > > above line. This requires an additional TAB press to bring the code > > into the proper indentation level when starting a deeper block. > > > Is there any way, via an addon to BBEdit, or other such device, to > > make auto-indent more syntax aware?
-- You received this message because you are subscribed to the "BBEdit Talk" discussion group on Google Groups. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at <http://groups.google.com/group/bbedit?hl=en> 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>
