mirror of
https://github.com/python/cpython.git
synced 2025-08-01 07:33:08 +00:00
Home / Control-A toggles between left margin and end of leading white
space. Patch 1196903 Jeff Shute. M idlelib/PyShell.py M idlelib/EditorWindow.py M idlelib/NEWS.txt
This commit is contained in:
parent
ef1e58b6f3
commit
93cdae5f81
3 changed files with 48 additions and 11 deletions
|
@ -153,6 +153,7 @@ class EditorWindow(object):
|
|||
text.bind("<Right>", self.move_at_edge_if_selection(1))
|
||||
text.bind("<<del-word-left>>", self.del_word_left)
|
||||
text.bind("<<del-word-right>>", self.del_word_right)
|
||||
text.bind("<<beginning-of-line>>", self.home_callback)
|
||||
|
||||
if flist:
|
||||
flist.inversedict[self] = key
|
||||
|
@ -281,6 +282,50 @@ class EditorWindow(object):
|
|||
self.flist.new(dirname)
|
||||
return "break"
|
||||
|
||||
def home_callback(self, event):
|
||||
if (event.state & 12) != 0 and event.keysym == "Home":
|
||||
# state&1==shift, state&4==control, state&8==alt
|
||||
return # <Modifier-Home>; fall back to class binding
|
||||
|
||||
if self.text.index("iomark") and \
|
||||
self.text.compare("iomark", "<=", "insert lineend") and \
|
||||
self.text.compare("insert linestart", "<=", "iomark"):
|
||||
insertpt = int(self.text.index("iomark").split(".")[1])
|
||||
else:
|
||||
line = self.text.get("insert linestart", "insert lineend")
|
||||
for insertpt in xrange(len(line)):
|
||||
if line[insertpt] not in (' ','\t'):
|
||||
break
|
||||
else:
|
||||
insertpt=len(line)
|
||||
|
||||
lineat = int(self.text.index("insert").split('.')[1])
|
||||
|
||||
if insertpt == lineat:
|
||||
insertpt = 0
|
||||
|
||||
dest = "insert linestart+"+str(insertpt)+"c"
|
||||
|
||||
if (event.state&1) == 0:
|
||||
# shift not pressed
|
||||
self.text.tag_remove("sel", "1.0", "end")
|
||||
else:
|
||||
if not self.text.index("sel.first"):
|
||||
self.text.mark_set("anchor","insert")
|
||||
|
||||
first = self.text.index(dest)
|
||||
last = self.text.index("anchor")
|
||||
|
||||
if self.text.compare(first,">",last):
|
||||
first,last = last,first
|
||||
|
||||
self.text.tag_remove("sel", "1.0", "end")
|
||||
self.text.tag_add("sel", first, last)
|
||||
|
||||
self.text.mark_set("insert", dest)
|
||||
self.text.see("insert")
|
||||
return "break"
|
||||
|
||||
def set_status_bar(self):
|
||||
self.status_bar = self.MultiStatusBar(self.top)
|
||||
if macosxSupport.runningAsOSXApp():
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue