mirror of
https://github.com/python/cpython.git
synced 2025-08-30 13:38:43 +00:00
Better indentation after first line of string continuation.
IDLEfork Patch 681992, Noam Raphael
This commit is contained in:
parent
6b34789046
commit
b61602c968
3 changed files with 20 additions and 5 deletions
|
@ -1078,8 +1078,12 @@ class EditorWindow(object):
|
||||||
c = y.get_continuation_type()
|
c = y.get_continuation_type()
|
||||||
if c != PyParse.C_NONE:
|
if c != PyParse.C_NONE:
|
||||||
# The current stmt hasn't ended yet.
|
# The current stmt hasn't ended yet.
|
||||||
if c == PyParse.C_STRING:
|
if c == PyParse.C_STRING_FIRST_LINE:
|
||||||
# inside a string; just mimic the current indent
|
# after the first line of a string; do not indent at all
|
||||||
|
pass
|
||||||
|
elif c == PyParse.C_STRING_NEXT_LINES:
|
||||||
|
# inside a string which started before this line;
|
||||||
|
# just mimic the current indent
|
||||||
text.insert("insert", indent)
|
text.insert("insert", indent)
|
||||||
elif c == PyParse.C_BRACKET:
|
elif c == PyParse.C_BRACKET:
|
||||||
# line up with the first (if any) element of the
|
# line up with the first (if any) element of the
|
||||||
|
|
|
@ -3,6 +3,9 @@ What's New in IDLE 1.2a0?
|
||||||
|
|
||||||
*Release date: XX-XXX-2005*
|
*Release date: XX-XXX-2005*
|
||||||
|
|
||||||
|
- Better indentation after first line of string continuation.
|
||||||
|
IDLEfork Patch 681992, Noam Raphael
|
||||||
|
|
||||||
- Fixed CodeContext alignment problem, following suggestion from Tal Einat.
|
- Fixed CodeContext alignment problem, following suggestion from Tal Einat.
|
||||||
|
|
||||||
- Increased performance in CodeContext extension Patch 936169 Noam Raphael
|
- Increased performance in CodeContext extension Patch 936169 Noam Raphael
|
||||||
|
|
|
@ -2,7 +2,8 @@ import re
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
# Reason last stmt is continued (or C_NONE if it's not).
|
# Reason last stmt is continued (or C_NONE if it's not).
|
||||||
C_NONE, C_BACKSLASH, C_STRING, C_BRACKET = range(4)
|
(C_NONE, C_BACKSLASH, C_STRING_FIRST_LINE,
|
||||||
|
C_STRING_NEXT_LINES, C_BRACKET) = range(5)
|
||||||
|
|
||||||
if 0: # for throwaway debugging output
|
if 0: # for throwaway debugging output
|
||||||
def dump(*stuff):
|
def dump(*stuff):
|
||||||
|
@ -281,6 +282,7 @@ class Parser:
|
||||||
quote = ch
|
quote = ch
|
||||||
if str[i-1:i+2] == quote * 3:
|
if str[i-1:i+2] == quote * 3:
|
||||||
quote = quote * 3
|
quote = quote * 3
|
||||||
|
firstlno = lno
|
||||||
w = len(quote) - 1
|
w = len(quote) - 1
|
||||||
i = i+w
|
i = i+w
|
||||||
while i < n:
|
while i < n:
|
||||||
|
@ -315,7 +317,12 @@ class Parser:
|
||||||
else:
|
else:
|
||||||
# didn't break out of the loop, so we're still
|
# didn't break out of the loop, so we're still
|
||||||
# inside a string
|
# inside a string
|
||||||
continuation = C_STRING
|
if (lno - 1) == firstlno:
|
||||||
|
# before the previous \n in str, we were in the first
|
||||||
|
# line of the string
|
||||||
|
continuation = C_STRING_FIRST_LINE
|
||||||
|
else:
|
||||||
|
continuation = C_STRING_NEXT_LINES
|
||||||
continue # with outer loop
|
continue # with outer loop
|
||||||
|
|
||||||
if ch == '#':
|
if ch == '#':
|
||||||
|
@ -335,7 +342,8 @@ class Parser:
|
||||||
# The last stmt may be continued for all 3 reasons.
|
# The last stmt may be continued for all 3 reasons.
|
||||||
# String continuation takes precedence over bracket
|
# String continuation takes precedence over bracket
|
||||||
# continuation, which beats backslash continuation.
|
# continuation, which beats backslash continuation.
|
||||||
if continuation != C_STRING and level > 0:
|
if (continuation != C_STRING_FIRST_LINE
|
||||||
|
and continuation != C_STRING_NEXT_LINES and level > 0):
|
||||||
continuation = C_BRACKET
|
continuation = C_BRACKET
|
||||||
self.continuation = continuation
|
self.continuation = continuation
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue