4 ###$ event <<expand-word>>
11 '<<expand-word>>': ['<Alt-slash>'],
15 '<<expand-word>>': ['<Meta-slash>'],
20 ('E_xpand word', '<<expand-word>>'),
24 wordchars
= string
.letters
+ string
.digits
+ "_"
26 def __init__(self
, editwin
):
27 self
.text
= editwin
.text
28 self
.text
.wordlist
= None # XXX what is this?
31 def expand_word_event(self
, event
):
32 curinsert
= self
.text
.index("insert")
33 curline
= self
.text
.get("insert linestart", "insert lineend")
35 words
= self
.getwords()
38 words
, index
, insert
, line
= self
.state
39 if insert
!= curinsert
or line
!= curline
:
40 words
= self
.getwords()
45 word
= self
.getprevword()
46 self
.text
.delete("insert - %d chars" % len(word
), "insert")
47 newword
= words
[index
]
48 index
= (index
+ 1) % len(words
)
50 self
.text
.bell() # Warn we cycled around
51 self
.text
.insert("insert", newword
)
52 curinsert
= self
.text
.index("insert")
53 curline
= self
.text
.get("insert linestart", "insert lineend")
54 self
.state
= words
, index
, curinsert
, curline
58 word
= self
.getprevword()
61 before
= self
.text
.get("1.0", "insert wordstart")
62 wbefore
= re
.findall(r
"\b" + word
+ r
"\w+\b", before
)
64 after
= self
.text
.get("insert wordend", "end")
65 wafter
= re
.findall(r
"\b" + word
+ r
"\w+\b", after
)
67 if not wbefore
and not wafter
:
71 # search backwards through words before
78 # search onwards through words after
87 def getprevword(self
):
88 line
= self
.text
.get("insert linestart", "insert")
90 while i
> 0 and line
[i
-1] in self
.wordchars
: