src/eric7/QScintilla/TypingCompleters/CompleterRuby.py

branch
eric7
changeset 9221
bf71ee032bb4
parent 9209
b99e7fd55fd3
child 9413
80c06d472826
--- a/src/eric7/QScintilla/TypingCompleters/CompleterRuby.py	Wed Jul 13 11:16:20 2022 +0200
+++ b/src/eric7/QScintilla/TypingCompleters/CompleterRuby.py	Wed Jul 13 14:55:47 2022 +0200
@@ -20,117 +20,112 @@
     """
     Class implementing typing completer for Ruby.
     """
+
     def __init__(self, editor, parent=None):
         """
         Constructor
-        
+
         @param editor reference to the editor object (QScintilla.Editor)
         @param parent reference to the parent object (QObject)
         """
         super().__init__(editor, parent)
-        
+
         self.__beginRX = re.compile(r"""^=begin """)
         self.__beginNlRX = re.compile(r"""^=begin\r?\n""")
         self.__hereRX = re.compile(r"""<<-?['"]?(\w*)['"]?\r?\n""")
-        
+
         self.readSettings()
-    
+
     def readSettings(self):
         """
         Public slot called to reread the configuration parameters.
         """
         self.setEnabled(Preferences.getEditorTyping("Ruby/EnabledTypingAids"))
         self.__insertClosingBrace = Preferences.getEditorTyping(
-            "Ruby/InsertClosingBrace")
-        self.__indentBrace = Preferences.getEditorTyping(
-            "Ruby/IndentBrace")
-        self.__skipBrace = Preferences.getEditorTyping(
-            "Ruby/SkipBrace")
-        self.__insertQuote = Preferences.getEditorTyping(
-            "Ruby/InsertQuote")
-        self.__insertBlank = Preferences.getEditorTyping(
-            "Ruby/InsertBlank")
-        self.__insertHereDoc = Preferences.getEditorTyping(
-            "Ruby/InsertHereDoc")
-        self.__insertInlineDoc = Preferences.getEditorTyping(
-            "Ruby/InsertInlineDoc")
+            "Ruby/InsertClosingBrace"
+        )
+        self.__indentBrace = Preferences.getEditorTyping("Ruby/IndentBrace")
+        self.__skipBrace = Preferences.getEditorTyping("Ruby/SkipBrace")
+        self.__insertQuote = Preferences.getEditorTyping("Ruby/InsertQuote")
+        self.__insertBlank = Preferences.getEditorTyping("Ruby/InsertBlank")
+        self.__insertHereDoc = Preferences.getEditorTyping("Ruby/InsertHereDoc")
+        self.__insertInlineDoc = Preferences.getEditorTyping("Ruby/InsertInlineDoc")
 
     def charAdded(self, charNumber):
         """
         Public slot called to handle the user entering a character.
-        
+
         @param charNumber value of the character entered (integer)
         """
         char = chr(charNumber)
-        if char not in ['(', ')', '{', '}', '[', ']', ',', "'", '"',
-                        '\n', ' ']:
+        if char not in ["(", ")", "{", "}", "[", "]", ",", "'", '"', "\n", " "]:
             return  # take the short route
-        
+
         line, col = self.editor.getCursorPosition()
-        
+
         if (
-            self.__inComment(line, col) or
-            self.__inDoubleQuotedString() or
-            self.__inSingleQuotedString() or
-            self.__inHereDocument() or
-            self.__inInlineDocument()
+            self.__inComment(line, col)
+            or self.__inDoubleQuotedString()
+            or self.__inSingleQuotedString()
+            or self.__inHereDocument()
+            or self.__inInlineDocument()
         ):
             return
-        
+
         # open parenthesis
         # insert closing parenthesis and self
-        if char == '(':
+        if char == "(":
             txt = self.editor.text(line)[:col]
             if self.__insertClosingBrace:
-                self.editor.insert(')')
-        
+                self.editor.insert(")")
+
         # closing parenthesis
         # skip matching closing parenthesis
-        elif char in [')', '}', ']']:
+        elif char in [")", "}", "]"]:
             txt = self.editor.text(line)
             if col < len(txt) and char == txt[col] and self.__skipBrace:
                 self.editor.setSelection(line, col, line, col + 1)
                 self.editor.removeSelectedText()
-        
+
         # space
         # complete inline documentation
-        elif char == ' ':
+        elif char == " ":
             txt = self.editor.text(line)[:col]
             if self.__insertInlineDoc and self.__beginRX.fullmatch(txt):
-                self.editor.insert('=end')
-        
+                self.editor.insert("=end")
+
         # comma
         # insert blank
-        elif char == ',' and self.__insertBlank:
-            self.editor.insert(' ')
+        elif char == "," and self.__insertBlank:
+            self.editor.insert(" ")
             self.editor.setCursorPosition(line, col + 1)
-        
+
         # open curly brace
         # insert closing brace
-        elif char == '{' and self.__insertClosingBrace:
-            self.editor.insert('}')
-        
+        elif char == "{" and self.__insertClosingBrace:
+            self.editor.insert("}")
+
         # open bracket
         # insert closing bracket
-        elif char == '[' and self.__insertClosingBrace:
-            self.editor.insert(']')
-        
+        elif char == "[" and self.__insertClosingBrace:
+            self.editor.insert("]")
+
         # double quote
         # insert double quote
         elif char == '"' and self.__insertQuote:
             self.editor.insert('"')
-        
+
         # quote
         # insert quote
-        elif char == '\'' and self.__insertQuote:
-            self.editor.insert('\'')
-        
+        elif char == "'" and self.__insertQuote:
+            self.editor.insert("'")
+
         # new line
         # indent to opening brace, complete inline documentation
-        elif char == '\n':
+        elif char == "\n":
             txt = self.editor.text(line - 1)
             if self.__insertInlineDoc and self.__beginNlRX.fullmatch(txt):
-                self.editor.insert('=end')
+                self.editor.insert("=end")
             elif self.__insertHereDoc and self.__hereRX.fullmatch(txt):
                 self.editor.insert(self.__hereRX.fullmatch(txt).group(1))
             elif self.__indentBrace and re.search(":\r?\n", txt) is None:
@@ -155,14 +150,13 @@
                             closeCount = len(re.findall(r"[)}\]]", txt2))
                             index -= 1
                         if openCount > closeCount and lastOpenIndex > col:
-                            self.editor.insert(' ' * (lastOpenIndex - col + 1))
-                            self.editor.setCursorPosition(line,
-                                                          lastOpenIndex + 1)
-    
+                            self.editor.insert(" " * (lastOpenIndex - col + 1))
+                            self.editor.setCursorPosition(line, lastOpenIndex + 1)
+
     def __inComment(self, line, col):
         """
         Private method to check, if the cursor is inside a comment.
-        
+
         @param line current line (integer)
         @param col current position within line (integer)
         @return flag indicating, if the cursor is inside a comment (boolean)
@@ -175,40 +169,40 @@
                 return True
             col -= 1
         return False
-    
+
     def __inDoubleQuotedString(self):
         """
         Private method to check, if the cursor is within a double quoted
         string.
-        
+
         @return flag indicating, if the cursor is inside a double
             quoted string (boolean)
         """
         return self.editor.currentStyle() == QsciLexerRuby.DoubleQuotedString
-    
+
     def __inSingleQuotedString(self):
         """
         Private method to check, if the cursor is within a single quoted
         string.
-        
+
         @return flag indicating, if the cursor is inside a single
             quoted string (boolean)
         """
         return self.editor.currentStyle() == QsciLexerRuby.SingleQuotedString
-    
+
     def __inHereDocument(self):
         """
         Private method to check, if the cursor is within a here document.
-        
+
         @return flag indicating, if the cursor is inside a here document
             (boolean)
         """
         return self.editor.currentStyle() == QsciLexerRuby.HereDocument
-    
+
     def __inInlineDocument(self):
         """
         Private method to check, if the cursor is within an inline document.
-        
+
         @return flag indicating, if the cursor is inside an inline document
             (boolean)
         """

eric ide

mercurial