omz:forum

    • Register
    • Login
    • Search
    • Recent
    • Popular

    Welcome!

    This is the community forum for my apps Pythonista and Editorial.

    For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.


    Find text in console

    Pythonista
    4
    46
    16757
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Matteo
      Matteo @cvp last edited by Matteo

      @cvp Yes! you are right, sorry, two buttons on console line! You created a second button at left of input line, Thank you again!

      cvp 1 Reply Last reply Reply Quote 0
      • cvp
        cvp @Matteo last edited by

        @Matteo said:

        two buttons on console line

        Do you see two buttons on the console line?

        Matteo 1 Reply Last reply Reply Quote 0
        • Matteo
          Matteo @cvp last edited by

          @cvp no no, I badly explained myself sorry, I meant I see your button search at left, at right I see the built-in recall command icons and the execute command is the return key of keyboard, yes sorry. I'm excited...

          cvp 1 Reply Last reply Reply Quote 0
          • cvp
            cvp @Matteo last edited by

            @Matteo 👍

            Matteo 1 Reply Last reply Reply Quote 0
            • Matteo
              Matteo @cvp last edited by

              Hi @cvp, thanks again for your code, it helps me a lot! I tried to change it in order to clear highlighting of the text before each touch of the "Find" button, because if I search different words, the console becomes too colored and I can't understand where the last word is selected.

              If you want and have time, can you show me how to change your code in order to remove all highlighting before each touch of your "Find" user key?

              Thanks
              Bye

              cvp 1 Reply Last reply Reply Quote 0
              • cvp
                cvp @Matteo last edited by cvp

                @Matteo that is strange, because when you tap the find button, I remove all colored buttons before to create new ones, thus no overlap of multiple searches.
                Did you change something?
                I just retry and there is no problem...

                Could you post your code if not exactly mine

                Matteo 1 Reply Last reply Reply Quote 0
                • Matteo
                  Matteo @cvp last edited by

                  @cvp Hi thanks for reply, with Pythonista I use (v.3.1 301016) on ios 10.3.3 I have different behavior from you , that is when I touch Find key , the previous highligtings can't disappear (text become red and more red...). Maybe it is due to different objc implementation of new version of Pythonista.

                  I will try again , if I will notice some different behavior I will let you know.

                  Thank you
                  Regards

                  cvp 1 Reply Last reply Reply Quote 0
                  • cvp
                    cvp @Matteo last edited by

                    @Matteo ok. I use Pythonista last beta on iOS 13.3.

                    Matteo 1 Reply Last reply Reply Quote 0
                    • Matteo
                      Matteo @cvp last edited by Matteo

                      @cvp Hi, sorry I'm feel very unskilled, no objc problem, I must use Python3, no Python2...

                      Problem solved!

                      Sorry I ask you :when you touch built-in key Clear in console do you have the clear of full console content and the color red of last highligthed text?

                      Thanks

                      cvp 1 Reply Last reply Reply Quote 0
                      • cvp
                        cvp last edited by

                        @Matteo I thought about this problem of python 2 or 3 overnight and I wanted to check this morning because I "remove SUIButton_PY3 objects" ... Great that you found it

                        1 Reply Last reply Reply Quote 0
                        • cvp
                          cvp @Matteo last edited by cvp

                          @Matteo said:

                          clear of full console content and the color red of last highligthed text?

                          You're right, that's a problem. My script does not know when you tap the clear button thus it is not able to also clear the couloured buttons. I'll try to find something but not promised

                          temporarily, you would have to clear manually the console line then tap the 🔍 button, colorful buttons will be removed

                          Edit: if you have cleared the console, tap only the 🔍 button, even without clearing the search text, all highlighted words will disappear

                          Matteo 1 Reply Last reply Reply Quote 1
                          • Matteo
                            Matteo @cvp last edited by

                            @cvp You are right, to clear all I can use your Search button with empty text, perfect.

                            Many thanks for your help!

                            Regards

                            cvp 2 Replies Last reply Reply Quote 0
                            • cvp
                              cvp @Matteo last edited by

                              @Matteo And, if you tap the standard clear button, you can, after, tap the search button even without clearing the searched text. As the console is cleared, there is no occurrence to find, thus all highlighted will be removed

                              1 Reply Last reply Reply Quote 1
                              • cvp
                                cvp @Matteo last edited by

                                @Matteo small update if you want a case insensitive search

                                				for m in re.finditer('(?i)'+txt, t): 
                                
                                Matteo 1 Reply Last reply Reply Quote 0
                                • Matteo
                                  Matteo @cvp last edited by Matteo

                                  Hi @cvp , nice, yes no need to clear the search text field! And thanks also for insensitive search!

                                  Sorry if I ask you something else, answer only if it's something that interests you too: is it possible to have a second version of your script that can search text with python Regex? I think a second script for only Regex would be simpler than adding a setting flag (that user could change by executing a script associated to another custom user key) that allows user to switch from regex to simple text and viceversa with your original script.

                                  For example, if I have the console output with a lot of text data and I want to select all text (numbers) after word value: , I'd like to use the regex pattern (?<=value: )(.*) in order to highlight all after word value: (to the new row/line).

                                  Do you think it is possible? I ask you this because, although it is something that would help me a lot, I can't understand how to enable Regex searching by taking inspiration from your update about insensitive search.

                                  Thanks
                                  Bye

                                  cvp 1 Reply Last reply Reply Quote 0
                                  • cvp
                                    cvp @Matteo last edited by cvp

                                    @Matteo these lines can find both texts or regex patterns:

                                    				for m in re.finditer(txt, t):
                                    					st,en =m.span()
                                    					p1 = tv.positionFromPosition_offset_(tv.beginningOfDocument(), st)
                                    					p2 = tv.positionFromPosition_offset_(tv.beginningOfDocument(), en) 
                                    

                                    Please, note that if you type a text, it is case sensitive (back)

                                    And you don't need two different search buttons

                                    Note also that the regex you gave as example needs a space after value:

                                    Matteo 1 Reply Last reply Reply Quote 2
                                    • Matteo
                                      Matteo @cvp last edited by

                                      @cvp Wonderful!

                                      I can't understand how it is possible to have regex mode by modifying the code from

                                      st,end=m.span()
                                      ...
                                      p2 = tv.positionFromPosition_offset_(tv.beginningOfDocument(), st+len(txt))
                                      

                                      to

                                      st,en =m.span()
                                      ...
                                      p2 = tv.positionFromPosition_offset_(tv.beginningOfDocument(), en)
                                      

                                      Magic of programming and of those who know how to use this magic ...

                                      Thank you very much!
                                      Regards

                                      cvp 2 Replies Last reply Reply Quote 0
                                      • cvp
                                        cvp @Matteo last edited by

                                        @Matteo no real magic. 1st version was ok but only for a text. 2nd version really uses start and end of search

                                        1 Reply Last reply Reply Quote 0
                                        • cvp
                                          cvp @Matteo last edited by cvp

                                          @Matteo if you want to use different colors to search different words, you can use the regex | and modify the script as

                                          
                                          					if '|' not in txt:
                                          						l.background_color = (1,0,0,0.2)
                                          					else:
                                          						# search multiple strings
                                          						wrds = txt.split('|')
                                          						idx = wrds.index(t[st:en])
                                          						cols = [(1,0,0,0.2), (0,1,0,0.2), (0,0,1,0.2), (1,1,0,0.2), (1,0,1,0.2), (0,1,1,0.2)]
                                          						col = cols[idx % len(cols)]
                                          						l.background_color = col
                                          
                                          

                                          Obviously, you can put the cols initialization outside the loop but, here, it is only to show only one group of modified lines

                                          Matteo 1 Reply Last reply Reply Quote 1
                                          • Matteo
                                            Matteo @cvp last edited by

                                            @cvp Thank you, very nice and useful!

                                            As a curiosity, maybe I didn't understand before: do you know if the highlighted text with your script can be also copied in clipboard or it is impossible due to limits of OMTextView?

                                            If it is impossible to copy the highlighted text in Pythonista clipboard, do you know if a script exists that can write (in background, that is during Pythonista usage), in an external text file, the full output of the console, and the external file updates itself after each output print in console?

                                            Thank you for your interest :-)
                                            Bye

                                            cvp 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Powered by NodeBB Forums | Contributors