Mark-
Not to beat a dead horse, but this script, based on one by Chris Stone
at http://groups.google.com/group/bbedit/browse_thread/thread/1018c40d7e2c9ef,
is much simpler than the one that depended on regular expressions.  To
include the line with "HELLO" remove the "-1"  from the -select-
statement.

Steve

-------------------------------------------------
tell application "BBEdit"
tell text of front text window
set topAnchor to startLine of selection
set bottomAnchor to startLine of (first line whose contents contains
"HELLO")
select (lines (topAnchor + 1) thru (bottomAnchor - 1))
end tell
end tell
---------------------------------------------------------------------


On Mar 16, 1:45 pm, Simdude <[email protected]> wrote:
> Looks great! Thank you again. I forgot BBedit was recordable.
> Definitely one of the nicer, real Mac apps out there. I find I've been
> using it for even non-programming work thanks to Hog Bays Quckcursor.
> Sort of a "Edit in BBedit" program that works with any text field.
>
> Mark
>
> On Mar 15, 1:04 pm, Steve Samuels <[email protected]> wrote:
>
> > To automate the process somewhat, here's an AppleScript that will
> > prompt for the search string. I've provided two versions of the
> > search, one that excludes, one that includes the line; just comment
> > out the one you want.   You will probably have to remove line breaks
> > in the "find" statement  that are inserted by Google Mail. If you put
> > this in BBEdit's Scripts folder, you can assign it a keyboard in the
> > Window /Palette/Scripts menu. (By the way, I started writing this
> > script by recording a simple search.)
>
> > Steve
> > _______________________________________
> > (* Search up to Line Containing Specified Text
> > *)
> > tell application "BBEdit"
> >         set _searchto to the text returned of (display dialog "Enter search
> > string" default answer "")
> >         set _sstring to "(?s).+?(?=((?-s)^.*" & _searchto & ".*$))" 
> > --exclude
> > line with search text
> >         -- set _sstring to "(?s).+?((?-s)^.*" & _searchto & ".*$)"  --
> > include  the line
> >         open find window
> >         find _sstring searching in text 1 of front document options {search
> > mode:grep, starting at top:false, wrap around:true, backwards:false,
> > case sensitive:false, match words:false, extend selection:false} with
> > selecting match
> > end tell
> > _________________________________________
>
> > On Mar 14, 2:40 pm, Simdude <[email protected]> wrote:
>
> > > Thanks again Steve. Actually, I wanted to perform an operation within
> > > a selection to mimic what vi can do by specifying a range. i.e. do a
> > > search and replace but only in a certain range. While it appears you
> > > can't directly do this in BBedit, your tip will allow me to first
> > > create a selection region, and then I can operation on that region.
>
> > > thanks!
>
> > > On Mar 13, 10:39 am, Steve Samuels <[email protected]> wrote:
>
> > > > Mark, your original question was how to select  all text from the
> > > > cursor up to the _line_ that
> > > > contains specified text. Here are solutions.
>
> > > > Exclude the line from the selection: (?s).+?(?=((?-s)^.*HELLO.*$))
> > > > Include the line in the selection:   (?s).+?((?-s)^.*HELLO.*$)
>
> > > > These will fail if the current line contains the text.
>
> > > > Steve
>
> > > > On Mar 10, 5:39 pm, Steve Samuels <[email protected]> wrote:
>
> > > > > You are welcome, Mark. To give you a head start, with manual
> > > > > references:
>
> > > > > "(?s)" extends the search over line endings (p. 188)
>
> > > > > ".+?HELLO" searches text up through the first occurrence of HELLO 
> > > > > (non-
> > > > > greedy matching, p. 177)
>
> > > > > "(?=HELLO)" says to search up to "HELLO" but not include "HELLO" in
> > > > > the found text (positive lookahead, pp. 187,190).
>
> > > > > Parentheses around "HELLO" are a stylistic choice and don't affect
> > > > > this search, though they might be important in other, more complicated
> > > > > searches.
>
> > > > > Steve
>
> > > > > On Mar 10, 2:49 pm, Simdude <[email protected]> wrote:
>
> > > > > > Wow. Thanks Steve. I have to give this a try as soon as I get home.
> > > > > > And I guess it's time to dig into the BBedit docs some more!
>
> > > > > > On Mar 10, 2:35 pm, Steve Samuels <[email protected]> wrote:
>
> > > > > > > Searching for  "(?s).+?(HELLO)" will select all text from the 
> > > > > > > cursor
> > > > > > > up through the first "HELLO" and "(?s).+?(?=HELLO)" will select 
> > > > > > > all
> > > > > > > text up to first "HELLO">.
>
> > > > > > > Steve
>
> > > > > > > On Mar 10, 8:35 am, Simdude <[email protected]> wrote:
>
> > > > > > > > Thanks Chris. I did know about the selection operations but 
> > > > > > > > when you
> > > > > > > > have to do this repeatedly in a file, it's not as efficient. 
> > > > > > > > Scripting
> > > > > > > > is probably a better option but I'll have to improve my 
> > > > > > > > Applescript
> > > > > > > > skills to be able to do this faster.
>
> > > > > > > > For any Barebones guys, adding something like to to a future 
> > > > > > > > BBedit
> > > > > > > > would be a killer feature. With the help of some books, I've 
> > > > > > > > used vi
> > > > > > > > to rearrange sections of large documents by using commands like 
> > > > > > > > this
> > > > > > > > to find and move sections.  The problem is while you can do 
> > > > > > > > this with
> > > > > > > > a single line in vi, it can take 30 minutes to figure out what 
> > > > > > > > to type
> > > > > > > > in that line!
>
> > > > > > > > Mark
>
> > > > > > > > On Mar 9, 5:26 pm, Christopher Stone 
> > > > > > > > <[email protected]>
> > > > > > > > wrote:
>
> > > > > > > > > On Mar 09, 2011, at 10:28, Simdude wrote:> Is there a way in 
> > > > > > > > > BBedit to operate on ranges of data? For example, when I use 
> > > > > > > > > vi, if I want to do a search and replace on all text from my 
> > > > > > > > > current cursor to the line that contains "HELLO", I would do 
> > > > > > > > > this:
>
> > > > > > > > > > :.,/HELLO/ s/this/that/g
>
> > > > > > > > > > Can BBedit do this sort of range stuff?
>
> > > > > > > > > ______________________________________________________________________
>
> > > > > > > > > Hey Mark,
>
> > > > > > > > > Not directly.  But you can script that kind of search, or you 
> > > > > > > > > can find/replace in the current selection.  So you could find 
> > > > > > > > > + 'extend selection' to select your range and then 
> > > > > > > > > find/replace *within* the range.
>
> > > > > > > > > --
> > > > > > > > > Best Regards,
> > > > > > > > > Chris- Hide quoted text -
>
> > - Show quoted text -

-- 
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>

Reply via email to