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

Method smart_indent_event

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

Source from the content-addressed store, hash-verified

1339 return "break"
1340
1341 def smart_indent_event(self, event):
1342 # if intraline selection:
1343 # delete it
1344 # elif multiline selection:
1345 # do indent-region
1346 # else:
1347 # indent one level
1348 text = self.text
1349 first, last = self.get_selection_indices()
1350 text.undo_block_start()
1351 try:
1352 if first and last:
1353 if index2line(first) != index2line(last):
1354 return self.fregion.indent_region_event(event)
1355 text.delete(first, last)
1356 text.mark_set("insert", first)
1357 prefix = text.get("insert linestart", "insert")
1358 raw, effective = get_line_indent(prefix, self.tabwidth)
1359 if raw == len(prefix):
1360 # only whitespace to the left
1361 self.reindent_to(effective + self.indentwidth)
1362 else:
1363 # tab to the next 'stop' within or to right of line's text:
1364 if self.usetabs:
1365 pad = '\t'
1366 else:
1367 effective = len(prefix.expandtabs(self.tabwidth))
1368 n = self.indentwidth
1369 pad = ' ' * (n - effective % n)
1370 text.insert("insert", pad, self.user_input_insert_tags)
1371 text.see("insert")
1372 return "break"
1373 finally:
1374 text.undo_block_stop()
1375
1376 def newline_and_indent_event(self, event):
1377 """Insert a newline and indentation after Enter keypress event.

Callers 1

Calls 13

get_selection_indicesMethod · 0.95
reindent_toMethod · 0.95
index2lineFunction · 0.85
indent_region_eventMethod · 0.80
get_line_indentFunction · 0.70
undo_block_startMethod · 0.45
deleteMethod · 0.45
mark_setMethod · 0.45
getMethod · 0.45
expandtabsMethod · 0.45
insertMethod · 0.45
seeMethod · 0.45

Tested by

no test coverage detected