Find Replace in Script Editor with cr
Sean Cole (Pi)
sean at pidigital.co.uk
Wed Apr 7 11:46:25 EDT 2021
FFS Alex,
I HAVE created a plugin! I was JUST trying to ask, can I insert a cr using
the replace field of the Find Replace ONLY.
I flipping already know how LC works for most other things. I dont need
explanations on how to suck effing eggs. Just answer the sodding question.
Answer nothing but this PLEASE.
This is why I end up getting mad! I even just explained this in my last
post. Why are you all unable to READ!!!!!!! ???????
Sean
PS
Morons. I'm offended by your
On Wed, 7 Apr 2021 at 15:07, Alex Tweedly via use-livecode <
use-livecode at lists.runrev.com> wrote:
> Hi Sean,
>
> I'm struggling a bit to understand how you intend to use this.
>
> You give an example of
>
> > *if* field "Level" begins with "Director" and field "UserDisplay" is not
> > empty and field "UserDisplay" is not "All Agents" and the label of button
> > "Status" is "All Sales"*then*
> > *put* pidbQueryDatabase( "SELECT * FROM QGNew where UserID = '" & (fld
> > "UserID" of card 17 stack "QGv3") \
> > & "' AND DealerID = '" & (fld "DealerID" of card 1 stack "QGv3") \
> > & "' AND Status LIKE '%" & ("Sale") \
> > & "%' OR UserID = '" & (fld "UserID" of card 17 stack "QGv3") \
> > & "' AND DealerID = '" & (fld "DealerID" of card 1 stack "QGv3") \
> > & "' AND Status LIKE '%" & ("Connect") \
> > & "%'") into tMsg
> BUT - that's no longer correct code; you need to add the "end if" after it.
>
> I don't see how any find/replace is going to do that successfully.
>
> You could tweak the script editor to allow some token to imply inserting
> a linefeed - but you'd still need to find the relevant end of statement
> and insert the 'end if' that you need.
>
>
> So (unless I'm missing something) you will finish up doing a scripted
> solution. Also, I do believe you will want to have the ease of use of
> using the find/replace panel to select only those lines which are to be
> modified (otherwise you are likely to pull in a number of cases you
> don't want).
>
> If it were me, I'd follow a process like :
>
> 1. identify the lines to be changed (parentheses for readability)
>
> find/replace (put then) ---> (put /*change*/ then)
>
> 2. use a plugin / frontscript to allow some weird key to trigger the
> changes.
>
> Sample plugin (with thanks to Jacque for the outline)
>
> > on preOpenStack
> > if the long name of this stack is among the lines of the
> > frontscripts then
> > put "---> passing" after msg
> > pass preOpenStack
> > else
> > insert the script of this stack onto front
> > end if
> > end preOpenStack
> >
> > on commandKeyDown whichKey ---- from Jacqueline Landman Gay
> > if ("editor field" is not in the name of the target and "script" is
> > not in the name of the target) \
> > or the shiftkey is not down
> > then pass commandKeyDown
> >
> > local tSel, tNewSel
> > if whichKey = "+" then
> > select text of the target
> > put the selection into tSel
> > repeat for each line L in tSel
> > if L contains "then /*change*/ put" then
> > replace "then /*change*/ put" with "then " & CR & "put" in L
> > replace ("& " & quote) with ("\" & CR & " & " & quote) in L
> > put CR & "end if" after L
> > end if
> > put L &CR after tNewSel
> > end repeat
> > set the text of the target to tNewSel
> > select empty
> > else
> > pass commandKeyDown
> > end if
> > setEditorDirty
> > end commandKeyDown
> >
> > private command setEditorDirty
> > type space
> > delete char (word 4 of the selectedchunk) of the target
> > end setEditorDirty
> >
>
>
> 3. ??? the srcipt editor has lost the "coloization" of the script. There
> is (or used to be) some way to restore that for the entire script - but
> I can't remember it. Hitting 'TAB' does it for the current handler but
> not for the whole script.
>
>
> So, I apologize - I've got carried away and provided a "creative"
> solution that is outside the remit of your question. So sue me :-)
>
> But since I had just finished reading Andre's book on plugins and
> development tools, this seemed like a good opportunity to try out
> creating a plugin.
>
> Alex.
>
> On 07/04/2021 06:16, Sean Cole (Pi) via use-livecode wrote:
> > Hi all,
> > So, the semicolon example was only given as an oversimplification because
> > most of you didn't read the original post properly, jumped to the
> > wrong conclusion and then offered irrelevant answers. But then, the
> > oversimplification gathered the same results of people jumping to the
> wrong
> > conclusion by not reading the posts correctly. (It wasn't helped by my /n
> > \n typo that was jumped on and assumed to be where I was going wrong. It
> is
> > the paradox of this forum. Make it comprehensive, people get lost and
> lose
> > the point and give the wrong answer. Make it simple and they read more
> into
> > it and then equally get it wrong.
> >
> > The code I deal with on a daily basis is infinitely more complex than a
> > simple - put the script of someThing into tscript; replace “;” with “;” &
> > cr in script; Set the script of someThing to tscript - and can do that
> kind
> > of thing in my sleep (as I often do, but infinitely more complex).
> >
> > So, I KNOW all of these SCRIPTING techniques. I'm not interested! I can
> do
> > that. NOT A PROBLEM :)
> >
> > BUT IN THE FIND/REPLACE PANEL !!!??
> >
> > Can I use a return character (or a wildcard, escaped, coded form) in the
> > REPLACE field OF THE PANEL. - A simple question.
> >
> > You CAN use RegEx in the FIND Field. In there you can SEARCH for \n ((I
> got
> > it right this time)) which refers to a line feed (or new line). BUT, you
> > CANNOT, it seems, as best I can find or from the comments made, use \n to
> > replace or insert a line feed.
> >
> > In my scripts (the several thousands of them) there are NO (zero, none)
> > semicolons used to separate commands. It was used ONLY to help give you a
> > simpler idea of what I was trying to achieve without having to use too
> much
> > detail. But this kind of dialogue on a forum filled with 'clever' people
> > trying to demonstrate how clever they are means they often miss the point
> > and give answers that do not fulfil the remit! Or just answer a simple
> > ruddy question.
> >
> > Here, then, is a 'Real World' example of what I am facing. There are many
> > variants and not my only issue, but a useful example, sample,
> demonstration.
> >
> >
> > *[code]if* field "Level" begins with "Director" and field "UserDisplay"
> is
> > not empty and field "UserDisplay" is not "All Agents" and the label of
> > button "Status" is "All Sales" *then* *put* pidbQueryDatabase( "SELECT *
> > FROM QGNew where UserID = '" & (fld "UserID" of card 17 stack "QGv3") &
> "'
> > AND DealerID = '" & (fld "DealerID" of card 1 stack "QGv3") & "' AND
> Status
> > LIKE '%" & ("Sale") & "%' OR UserID = '" & (fld "UserID" of card 17 stack
> > "QGv3") & "' AND DealerID = '" & (fld "DealerID" of card 1 stack "QGv3")
> & "'
> > AND Status LIKE '%" & ("Connect") & "%'") into tMsg
> > [/code]
> > That is all on a single line of a script in one of many thousand buttons.
> > In and of itself is not so much a problem as it is just difficult for me
> to
> > plough through when working out what the script is doing. In this button
> > alone there are 32 lines similar in nature to this.
> >
> > To make it easier for me to go through, as I arrive at each button to
> > simplify and correlate and combine into much more elegant code in the
> card
> > script, I would like to be able, IN THE FIND REPLACE PANEL, not by code
> or
> > porting or anything else, just to search and replace (& ") with (\ cr &
> ")
> > (parenthesis used here just to wrap the strings), and (then put) with
> (then
> > cr put). Hence, it will look a bit more like this:
> >
> > [code]
> > *if* field "Level" begins with "Director" and field "UserDisplay" is not
> > empty and field "UserDisplay" is not "All Agents" and the label of button
> > "Status" is "All Sales" *then*
> > *put* pidbQueryDatabase( "SELECT * FROM QGNew where UserID = '" & (fld
> > "UserID" of card 17 stack "QGv3") \
> > & "' AND DealerID = '" & (fld "DealerID" of card 1 stack "QGv3") \
> > & "' AND Status LIKE '%" & ("Sale") \
> > & "%' OR UserID = '" & (fld "UserID" of card 17 stack "QGv3") \
> > & "' AND DealerID = '" & (fld "DealerID" of card 1 stack "QGv3") \
> > & "' AND Status LIKE '%" & ("Connect") \
> > & "%'") into tMsg
> > [/code]
> >
> > Ideally I'd want it even better than this eventually. But key to doing
> just
> > this for now was being able to use a return character in the replace
> field
> > of the find/replace panel.
> >
> > My original question was 'Just wondering if there is a way of replacing
> > using cr in the find/replace panel of the script editor.'
> >
> > A simple Yes or No would have been sufficient. Even better, a yes with a
> > 'just use this form : x,y,z' as a sample. I just hoped someone had found
> a
> > simple method, especially as the guides and documentation are so woefully
> > out of date and incomplete. Something more than 'the meaning of life =
> 42'
> > and less than 'measuring gravity = the complete works of Sir Isaac
> Newton',
> > as long as it actually answers the question asked :)
> >
> > (And please don't go into the simplification of the SQL requests, the
> 'if'
> > condition or any other poop. I'm FULLY aware of this to the nth degree
> and
> > is why I'm going through this poop-show of a stack. Over 10 years of
> > poor/bad/dirty coding that now needs cleaning and refactoring without
> > rebuilding from the ground up. I'm just working my way through and have
> > managed 6 of the 801 cards)
> >
> > Stats for this behemoth:
> > Number of stacks = 109
> > Total number of cards = 801
> > Total number of controls = 82579
> > Total number of buttons = 19124
> > Total Number of fields = 33484
> > Total number of groups = 12152
> > Total number of graphics = 14359
> > Total number of images = 3282
> > Total Lines of code = 360036
> >
> > :-)
> > Sean
> >
> > On Tue, 6 Apr 2021 at 23:42, doc hawk via use-livecode <
> > use-livecode at lists.runrev.com> wrote:
> >
> >> sean slipped
> >>
> >>> For instance, suppose I have multiple commands on one line separated
> by ;
> >>> and I want to search for semicolon and replace with semicolon followed
> by
> >>> return character to drop the remaining script onto a new line.
> >> put the script of someThing into tscript
> >> replace “;” with “;” & cr in script
> >> Set the script of someTHing to tscript
> >> _______________________________________________
> >> use-livecode mailing list
> >> use-livecode at lists.runrev.com
> >> Please visit this url to subscribe, unsubscribe and manage your
> >> subscription preferences:
> >> http://lists.runrev.com/mailman/listinfo/use-livecode
> >>
> > _______________________________________________
> > use-livecode mailing list
> > use-livecode at lists.runrev.com
> > Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> > http://lists.runrev.com/mailman/listinfo/use-livecode
>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
>
More information about the use-livecode
mailing list