(self, event)
| 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. |
no test coverage detected