PHP 8.2.30
Preview: AutoExpand.py Size: 2.42 KB
//opt/alt/python33/lib64/python3.3/idlelib/AutoExpand.py

import string
import re

###$ event <<expand-word>>
###$ win <Alt-slash>
###$ unix <Alt-slash>

class AutoExpand:

    menudefs = [
        ('edit', [
            ('E_xpand Word', '<<expand-word>>'),
         ]),
    ]

    wordchars = string.ascii_letters + string.digits + "_"

    def __init__(self, editwin):
        self.text = editwin.text
        self.state = None

    def expand_word_event(self, event):
        curinsert = self.text.index("insert")
        curline = self.text.get("insert linestart", "insert lineend")
        if not self.state:
            words = self.getwords()
            index = 0
        else:
            words, index, insert, line = self.state
            if insert != curinsert or line != curline:
                words = self.getwords()
                index = 0
        if not words:
            self.text.bell()
            return "break"
        word = self.getprevword()
        self.text.delete("insert - %d chars" % len(word), "insert")
        newword = words[index]
        index = (index + 1) % len(words)
        if index == 0:
            self.text.bell()            # Warn we cycled around
        self.text.insert("insert", newword)
        curinsert = self.text.index("insert")
        curline = self.text.get("insert linestart", "insert lineend")
        self.state = words, index, curinsert, curline
        return "break"

    def getwords(self):
        word = self.getprevword()
        if not word:
            return []
        before = self.text.get("1.0", "insert wordstart")
        wbefore = re.findall(r"\b" + word + r"\w+\b", before)
        del before
        after = self.text.get("insert wordend", "end")
        wafter = re.findall(r"\b" + word + r"\w+\b", after)
        del after
        if not wbefore and not wafter:
            return []
        words = []
        dict = {}
        # search backwards through words before
        wbefore.reverse()
        for w in wbefore:
            if dict.get(w):
                continue
            words.append(w)
            dict[w] = w
        # search onwards through words after
        for w in wafter:
            if dict.get(w):
                continue
            words.append(w)
            dict[w] = w
        words.append(word)
        return words

    def getprevword(self):
        line = self.text.get("insert linestart", "insert")
        i = len(line)
        while i > 0 and line[i-1] in self.wordchars:
            i = i-1
        return line[i:]

Directory Contents

Dirs: 3 × Files: 72

Name Size Perms Modified Actions
Icons DIR
- drwxr-xr-x 2024-05-23 07:03:28
Edit Download
idle_test DIR
- drwxr-xr-x 2024-05-23 07:03:28
Edit Download
- drwxr-xr-x 2024-05-23 07:03:28
Edit Download
6.42 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
8.87 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
17.26 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
2.42 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
3.35 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
5.79 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
5.76 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
55.07 KB lrw-r--r-- 2017-09-19 07:32:02
Edit Download
6.22 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
8.16 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
10.22 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
2.72 KB lrw-r--r-- 2017-09-19 07:32:02
Edit Download
1.70 KB lrw-r--r-- 2017-09-19 07:32:02
Edit Download
7.35 KB lrw-r--r-- 2017-09-19 07:32:02
Edit Download
2.46 KB lrw-r--r-- 2017-09-19 07:32:02
Edit Download
51.61 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
28.64 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
6.57 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
4.21 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
1.82 KB lrw-r--r-- 2017-09-19 07:32:02
Edit Download
15.98 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
665 B lrw-r--r-- 2024-04-17 16:58:17
Edit Download
1.28 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
64.75 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
3.56 KB lrw-r--r-- 2017-09-19 07:32:02
Edit Download
3.72 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
7.00 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
4.01 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
11.71 KB lrw-r--r-- 2017-09-19 07:32:02
Edit Download
10.08 KB lrw-r--r-- 2017-09-19 07:32:02
Edit Download
10.31 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
400 B lrw-r--r-- 2024-04-17 16:58:17
Edit Download
671 B lrw-r--r-- 2017-09-19 07:32:02
Edit Download
4.02 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
23 B lrw-r--r-- 2024-04-17 16:58:17
Edit Download
19.40 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
12.14 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
7.00 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
17.12 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
783 B lrw-r--r-- 2024-04-17 16:58:17
Edit Download
33.61 KB lrw-r--r-- 2017-09-19 07:32:02
Edit Download
3.66 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
4.29 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
6.47 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
2.81 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
2.60 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
18.96 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
56.52 KB lrwxr-xr-x 2024-04-17 16:58:17
Edit Download
2.44 KB lrw-r--r-- 2017-09-19 07:32:02
Edit Download
11.75 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
964 B lrw-r--r-- 2024-04-17 16:58:17
Edit Download
5.69 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
20.46 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
1.03 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
13.37 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
7.88 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
3.90 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
1.97 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
5.06 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
7.37 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
3.48 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
17.74 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
3.46 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
8.28 KB lrw-r--r-- 2017-09-19 07:32:02
Edit Download
2.67 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
14.86 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
10.06 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
4.37 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
2.41 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
1.28 KB lrw-r--r-- 2024-04-17 16:58:17
Edit Download
37 B lrw-r--r-- 2024-04-17 16:58:17
Edit Download
109 B lrw-r--r-- 2024-04-17 16:58:17
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).