MCPcopy Index your code
hub / github.com/python/cpython / home_callback

Method home_callback

Lib/idlelib/editor.py:336–377  ·  view source on GitHub ↗
(self, event)

Source from the content-addressed store, hash-verified

334 return "break"
335
336 def home_callback(self, event):
337 if (event.state & 4) != 0 and event.keysym == "Home":
338 # state&4==Control. If <Control-Home>, use the Tk binding.
339 return None
340 if self.text.index("iomark") and \
341 self.text.compare("iomark", "<=", "insert lineend") and \
342 self.text.compare("insert linestart", "<=", "iomark"):
343 # In Shell on input line, go to just after prompt
344 insertpt = int(self.text.index("iomark").split(".")[1])
345 else:
346 line = self.text.get("insert linestart", "insert lineend")
347 for insertpt in range(len(line)):
348 if line[insertpt] not in (' ','\t'):
349 break
350 else:
351 insertpt=len(line)
352 lineat = int(self.text.index("insert").split('.')[1])
353 if insertpt == lineat:
354 insertpt = 0
355 dest = "insert linestart+"+str(insertpt)+"c"
356 if (event.state&1) == 0:
357 # shift was not pressed
358 self.text.tag_remove("sel", "1.0", "end")
359 else:
360 if not self.text.index("sel.first"):
361 # there was no previous selection
362 self.text.mark_set("my_anchor", "insert")
363 else:
364 if self.text.compare(self.text.index("sel.first"), "<",
365 self.text.index("insert")):
366 self.text.mark_set("my_anchor", "sel.first") # extend back
367 else:
368 self.text.mark_set("my_anchor", "sel.last") # extend forward
369 first = self.text.index(dest)
370 last = self.text.index("my_anchor")
371 if self.text.compare(first,">",last):
372 first,last = last,first
373 self.text.tag_remove("sel", "1.0", "end")
374 self.text.tag_add("sel", first, last)
375 self.text.mark_set("insert", dest)
376 self.text.see("insert")
377 return "break"
378
379 def set_status_bar(self):
380 self.status_bar = self.MultiStatusBar(self.top)

Callers

nothing calls this directly

Calls 9

strFunction · 0.85
tag_addMethod · 0.80
indexMethod · 0.45
compareMethod · 0.45
splitMethod · 0.45
getMethod · 0.45
tag_removeMethod · 0.45
mark_setMethod · 0.45
seeMethod · 0.45

Tested by

no test coverage detected