eric6/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleFixer.py

changeset 7628
f904d0eef264
parent 7610
df7025fe26a3
child 7639
422fd05e9c91
equal deleted inserted replaced
7626:7f643d41464e 7628:f904d0eef264
469 469
470 @param line line number of the issue (integer) 470 @param line line number of the issue (integer)
471 @param pos position inside line (integer) 471 @param pos position inside line (integer)
472 @param logical logical line structure 472 @param logical logical line structure
473 @return flag indicating a change was done (boolean) 473 @return flag indicating a change was done (boolean)
474 """ 474 @exception ValueError raised to indicate a bad 'logical' parameter
475 assert logical 475 """
476 if not logical:
477 raise ValueError("Bad value for 'logical' parameter.")
478
476 ls, _, original = logical 479 ls, _, original = logical
477 480
478 rewrapper = IndentationWrapper(original) 481 rewrapper = IndentationWrapper(original)
479 valid_indents = rewrapper.pep8Expected() 482 valid_indents = rewrapper.pep8Expected()
480 if not rewrapper.rel_indent: 483 if not rewrapper.rel_indent:
2137 if want < 0: 2140 if want < 0:
2138 # Still no luck -- leave it alone. 2141 # Still no luck -- leave it alone.
2139 want = have 2142 want = have
2140 else: 2143 else:
2141 want = 0 2144 want = 0
2142 assert want >= 0
2143 have2want[have] = want 2145 have2want[have] = want
2144 diff = want - have 2146 diff = want - have
2145 if diff == 0 or have == 0: 2147 if diff == 0 or have == 0:
2146 after.extend(lines[thisstmt:nextstmt]) 2148 after.extend(lines[thisstmt:nextstmt])
2147 else: 2149 else:
2300 fill = self.lines[end_line - 1][end:start] 2302 fill = self.lines[end_line - 1][end:start]
2301 logical.append(fill) 2303 logical.append(fill)
2302 logical.append(text) 2304 logical.append(text)
2303 previous = t 2305 previous = t
2304 logical_line = ''.join(logical) 2306 logical_line = ''.join(logical)
2305 assert logical_line.lstrip() == logical_line
2306 assert logical_line.rstrip() == logical_line
2307 return logical_line 2307 return logical_line
2308 2308
2309 def pep8Expected(self): 2309 def pep8Expected(self):
2310 """ 2310 """
2311 Public method to replicate logic in pycodestyle.py, to know what level 2311 Public method to replicate logic in pycodestyle.py, to know what level
2463 indent_chances[indent[depth]] = True 2463 indent_chances[indent[depth]] = True
2464 for idx in range(row, -1, -1): 2464 for idx in range(row, -1, -1):
2465 if parens[idx]: 2465 if parens[idx]:
2466 parens[idx] -= 1 2466 parens[idx] -= 1
2467 break 2467 break
2468 assert len(indent) == depth + 1
2469 if start[1] not in indent_chances: 2468 if start[1] not in indent_chances:
2470 indent_chances[start[1]] = text 2469 indent_chances[start[1]] = text
2471 2470
2472 last_token_multiline = (start[0] != end[0]) 2471 last_token_multiline = (start[0] != end[0])
2473 2472
2575 newNext = "" 2574 newNext = ""
2576 return True, newText, newNext 2575 return True, newText, newNext
2577 2576
2578 indent = self.__getIndent(self.__text) 2577 indent = self.__getIndent(self.__text)
2579 source = self.__text[len(indent):] 2578 source = self.__text[len(indent):]
2580 assert source.lstrip() == source
2581 sio = StringIO(source) 2579 sio = StringIO(source)
2582 2580
2583 # Check for multi line string. 2581 # Check for multi line string.
2584 try: 2582 try:
2585 tokens = list(tokenize.generate_tokens(sio.readline)) 2583 tokens = list(tokenize.generate_tokens(sio.readline))
2807 candidates.append( 2805 candidates.append(
2808 indent + second.strip() + self.__eol + 2806 indent + second.strip() + self.__eol +
2809 indent + first.strip() + self.__eol) 2807 indent + first.strip() + self.__eol)
2810 elif tokenType == tokenize.OP and tokenString != '=': 2808 elif tokenType == tokenize.OP and tokenString != '=':
2811 # Don't break on '=' after keyword as this violates PEP 8. 2809 # Don't break on '=' after keyword as this violates PEP 8.
2812
2813 assert tokenType != tokenize.INDENT
2814
2815 offset = tkn[2][1] + 1 2810 offset = tkn[2][1] + 1
2816 first = source[:offset] 2811 first = source[:offset]
2817 2812
2818 secondIndent = indent 2813 secondIndent = indent
2819 if first.rstrip().endswith('('): 2814 if first.rstrip().endswith('('):

eric ide

mercurial