3  f0@s|dZddlZddlmZmZmZddljZddZ GdddZ dd Z d d Z d d Z edkrxddlmZeddddS)z'Define SearchEngine for search dialogs.N) StringVar BooleanVarTclErrorcCst|dst||_|jS)zReturn the singleton SearchEngine instance for the process. The single SearchEngine saves settings between dialog instances. If there is not a SearchEngine already, make one. _searchengine)hasattr SearchEnginer)rootr 9/opt/alt/python36/lib64/python3.6/idlelib/searchengine.pygets  r c@seZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZd$ddZd%ddZd&dd Zd'd!d"ZdS)(rzr5r4r r r r rs  ( rcCsn|j|}|sdSd}|j\}}xF||krh||krh|}||krH|d}|j||}|sZP|j\}}q$W|S)a&Search backwards and return an re match object or None. This is done by searching forwards until there is no match. Prog: compiled re object with a search method returning a match. Chars: line of text, without \n. Col: stop index for the search; the limit for match.end(). Nr#)r?span)r,rCr.rDfoundijr r r rFs   rFc CsTy|jd}|jd}Wntk r4d}}YnX|sD|jd}|sL|}||fS)zFReturn tuple of 'line.col' indexes from selection or insert mark. z sel.firstzsel.lastNinsert)rGr)r6r9r:r r r r2s  r2cCstt|jd\}}||fS)z8Return (line, col) tuple of ints from 'line.col' string.rE)rHrIrJ)rGr<r.r r r r3sr3__main__)mainz#idlelib.idle_test.test_searchenginer") verbosity)rOrZtkinterrrrZtkinter.messageboxZ messageboxr1r rrFr2r3rLZunittestrVr r r r s  .