本文整理汇总了Python中pyqode.core.api.TextHelper.is_comment_or_string方法的典型用法代码示例。如果您正苦于以下问题:Python TextHelper.is_comment_or_string方法的具体用法?Python TextHelper.is_comment_or_string怎么用?Python TextHelper.is_comment_or_string使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pyqode.core.api.TextHelper
的用法示例。
在下文中一共展示了TextHelper.is_comment_or_string方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: PyAutoIndentMode
# 需要导入模块: from pyqode.core.api import TextHelper [as 别名]
# 或者: from pyqode.core.api.TextHelper import is_comment_or_string [as 别名]
class PyAutoIndentMode(AutoIndentMode):
""" Automatically indents text, respecting the PEP8 conventions.
Customised :class:`pyqode.core.modes.AutoIndentMode` for python
that tries its best to follow the pep8 indentation guidelines.
"""
def __init__(self):
super(PyAutoIndentMode, self).__init__()
self._helper = None
def on_install(self, editor):
super(PyAutoIndentMode, self).on_install(editor)
self._helper = TextHelper(editor)
def _get_indent(self, cursor):
ln, column = self._helper.cursor_position()
fullline = self._get_full_line(cursor)
line = fullline[:column]
pre, post = AutoIndentMode._get_indent(self, cursor)
if self._at_block_start(cursor, line):
return pre, post
# return pressed in comments
c2 = QTextCursor(cursor)
if c2.atBlockEnd():
c2.movePosition(c2.Left)
if (self._helper.is_comment_or_string(
c2, formats=['comment', 'docstring']) or
fullline.endswith('"""')):
if line.strip().startswith("#") and column != len(fullline):
post += '# '
return pre, post
# between parens
elif self._between_paren(cursor, column):
return self._handle_indent_between_paren(
column, line, (pre, post), cursor)
else:
lastword = self._get_last_word(cursor)
lastwordu = self._get_last_word_unstripped(cursor)
in_string_def, char = self._is_in_string_def(fullline, column)
if in_string_def:
post, pre = self._handle_indent_inside_string(
char, cursor, fullline, post)
elif (fullline.rstrip().endswith(":") and
lastword.rstrip().endswith(':') and
self._at_block_end(cursor, fullline)):
post = self._handle_new_scope_indentation(
cursor, fullline)
elif line.endswith("\\"):
# if user typed \ and press enter -> indent is always
# one level higher
post += self.editor.tab_length * " "
elif (fullline.endswith((')', '}', ']')) and
lastword.endswith((')', '}', ']'))):
post = self._handle_indent_after_paren(cursor, post)
elif ("\\" not in fullline and "#" not in fullline and
not self._at_block_end(cursor, fullline)):
post, pre = self._handle_indent_in_statement(
fullline, lastwordu, post, pre)
elif ((self._at_block_end(cursor, fullline) and
fullline.strip().startswith('return ')) or
lastword == "pass"):
post = post[:-self.editor.tab_length]
return pre, post
@staticmethod
def _is_in_string_def(full_line, column):
count = 0
char = "'"
for i in range(len(full_line)):
if full_line[i] == "'" or full_line[i] == '"':
count += 1
if full_line[i] == '"' and i < column:
char = '"'
count_after_col = 0
for i in range(column, len(full_line)):
if full_line[i] == "'" or full_line[i] == '"':
count_after_col += 1
return count % 2 == 0 and count_after_col % 2 == 1, char
@staticmethod
def _is_paren_open(paren):
return (paren.character == "(" or paren.character == "["
or paren.character == '{')
@staticmethod
def _is_paren_closed(paren):
return (paren.character == ")" or paren.character == "]"
or paren.character == '}')
@staticmethod
def _get_full_line(tc):
tc2 = QTextCursor(tc)
tc2.select(QTextCursor.LineUnderCursor)
full_line = tc2.selectedText()
return full_line
def _parens_count_for_block(self, col, block):
open_p = []
closed_p = []
#.........这里部分代码省略.........