src/eric7/QScintilla/TypingCompleters/CompleterToml.py

Sun, 04 May 2025 16:38:04 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 04 May 2025 16:38:04 +0200
branch
eric7
changeset 11260
67773a953b64
parent 11090
f5f5f5803935
permissions
-rw-r--r--

Encapsulated the Cooperation (shared editing) code in the Cooperation package in order to extract it as a plug-in.

7281
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
11090
f5f5f5803935 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
3 # Copyright (c) 2019 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
7281
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
10201
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
7 Module implementing a typing completer for TOML.
7281
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import re
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
8318
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
12 from PyQt6.Qsci import QsciScintilla
7281
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
14 from eric7 import Preferences
7281
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
16 from .CompleterBase import CompleterBase
7281
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 class CompleterYaml(CompleterBase):
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 """
10201
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
21 Class implementing typing completer for TOML.
7281
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
23
7281
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 def __init__(self, editor, parent=None):
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 """
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
27
7281
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 @param editor reference to the editor object
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 @type QScintilla.Editor
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 @param parent reference to the parent object
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 @type QObject
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
33 super().__init__(editor, parent)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
34
10201
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
35 self.__autoIndentationRe = re.compile(r"(?:\(|\[|{)(\s*)\r?\n")
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
36 self.__trailingBlankRe = re.compile(r"(?:[=:,])(\s*)\r?\n")
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
37
7281
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 self.readSettings()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
39
7281
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 def readSettings(self):
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 """
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 Public slot called to reread the configuration parameters.
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 """
10201
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
44 self.setEnabled(Preferences.getEditorTyping("Toml/EnabledTypingAids"))
7281
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 self.__insertClosingBrace = Preferences.getEditorTyping(
10201
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
46 "Toml/InsertClosingBrace"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
47 )
10201
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
48 self.__skipBrace = Preferences.getEditorTyping("Toml/SkipBrace")
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
49 self.__insertQuote = Preferences.getEditorTyping("Toml/InsertQuote")
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
50 self.__autoIndentation = Preferences.getEditorTyping("Toml/AutoIndentation")
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
51 self.__colonDetection = Preferences.getEditorTyping("Toml/ColonDetection")
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
52 self.__insertBlankEqual = Preferences.getEditorTyping("Toml/InsertBlankEqual")
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
53 self.__insertBlankColon = Preferences.getEditorTyping("Toml/InsertBlankColon")
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
54 self.__insertBlankComma = Preferences.getEditorTyping("Toml/InsertBlankComma")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
55
7281
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 def charAdded(self, charNumber):
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 """
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 Public slot called to handle the user entering a character.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
59
7281
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 @param charNumber value of the character entered
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 @type int
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 """
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 char = chr(charNumber)
10201
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
64 if char not in ["{", "}", "[", "]", "(", ")", "'", '"', "=", ":", ",", "\n"]:
7281
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 return # take the short route
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
66
7281
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 line, col = self.editor.getCursorPosition()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
68
7281
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 if self.__inComment(line, col):
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
71
10201
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
72 # open parenthesis
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
73 # insert closing parenthesis
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
74 if char == "(" and self.__insertClosingBrace:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
75 self.editor.insert(")")
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
76
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
77 # open curly bracket
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
78 # insert closing bracket
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
79 if char == "{" and self.__insertClosingBrace:
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
80 self.editor.insert("}")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
81
7281
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 # open bracket
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 # insert closing bracket
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
84 elif char == "[" and self.__insertClosingBrace:
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
85 self.editor.insert("]")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
86
7281
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 # closing parenthesis
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 # skip matching closing parenthesis
10201
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
89 elif char in [")", "}", "]"]:
7281
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 txt = self.editor.text(line)
8222
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
91 if col < len(txt) and char == txt[col] and self.__skipBrace:
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
92 self.editor.setSelection(line, col, line, col + 1)
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
93 self.editor.removeSelectedText()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
94
7281
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 # colon
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 # 1. skip colon if not last character
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 # 2. insert blank if last character
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
98 elif char == ":":
7281
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 text = self.editor.text(line)
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 if col < len(text) and char == text[col]:
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 if self.__colonDetection:
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 self.editor.setSelection(line, col, line, col + 1)
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 self.editor.removeSelectedText()
8222
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
104 elif self.__insertBlankColon and col == len(text.rstrip()):
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
105 self.editor.insert(" ")
7281
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 self.editor.setCursorPosition(line, col + 1)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
107
10201
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
108 # equal sign or comma
8222
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
109 # insert blank
10201
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
110 elif (char == "=" and self.__insertBlankEqual) or (
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
111 char == "," and self.__insertBlankComma
8228
772103b14c18 Applied some more code simplifications suggested by the new Simplify checker (Y114: use logical or for multiple if).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8222
diff changeset
112 ):
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
113 self.editor.insert(" ")
8222
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
114 self.editor.setCursorPosition(line, col + 1)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
115
7281
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 # double quote
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 # insert double quote
8222
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
118 elif char == '"' and self.__insertQuote:
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
119 self.editor.insert('"')
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
120
10201
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
121 # single quote
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
122 # insert single quote
8222
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
123 elif char == "'" and self.__insertQuote:
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
124 self.editor.insert("'")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
125
7281
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 # new line
10201
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
127 elif char == "\n":
8222
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
128 txt = self.editor.text(line - 1)
10201
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
129 if self.__autoIndentation and self.__autoIndentationRe.search(txt):
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
130 # indent after line ending with auto indentation character
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
131 match = self.__autoIndentationRe.search(txt)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
132 if match is not None:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
133 startBlanks = match.start(1)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
134 endBlanks = match.end(1)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
135 if startBlanks != -1 and startBlanks != endBlanks:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
136 # previous line ends with whitespace, e.g. caused by
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
137 # blank insertion above
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
138 self.editor.setSelection(
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
139 line - 1, startBlanks, line - 1, endBlanks
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
140 )
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
141 self.editor.removeSelectedText()
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
142
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
143 self.editor.indent(line)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
144 self.editor.setCursorPosition(line, 0)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
145 self.editor.editorCommand(QsciScintilla.SCI_VCHOME)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
146
10201
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
147 elif (
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
148 self.__insertBlankColon
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
149 or self.__insertBlankComma
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
150 or self.__insertBlankEqual
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
151 ) and self.__trailingBlankRe.search(txt):
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
152 # remove blank at end of line inserted by blank insertion above
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
153 match = self.__trailingBlankRe.search(txt)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
154 if match is not None:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
155 startBlanks = match.start(1)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
156 endBlanks = match.end(1)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
157 if startBlanks != -1 and startBlanks != endBlanks:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
158 self.editor.setSelection(
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
159 line - 1, startBlanks, line - 1, endBlanks
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
160 )
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
161 self.editor.removeSelectedText()
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
162
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
163 self.editor.setCursorPosition(line, 0)
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10162
diff changeset
164 self.editor.editorCommand(QsciScintilla.SCI_VCHOME)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
165
7281
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 def __inComment(self, line, col):
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 """
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 Private method to check, if the cursor is inside a comment.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
169
7281
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 @param line current line
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 @type int
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 @param col current position within line
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 @type int
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 @return flag indicating, if the cursor is inside a comment
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 @rtype bool
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 """
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 txt = self.editor.text(line)
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 if col == len(txt):
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 col -= 1
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 while col >= 0:
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 if txt[col] == "#":
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 return True
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 col -= 1
8087ef6df2e4 Editor: added a typing aid for YAML.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 return False
9493
aeaa6bf49831 Changed typing completer imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
185
aeaa6bf49831 Changed typing completer imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
186
aeaa6bf49831 Changed typing completer imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
187 def createCompleter(editor, parent=None):
aeaa6bf49831 Changed typing completer imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
188 """
aeaa6bf49831 Changed typing completer imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
189 Function to instantiate a typing completer object.
aeaa6bf49831 Changed typing completer imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
190
aeaa6bf49831 Changed typing completer imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
191 @param editor reference to the editor object
aeaa6bf49831 Changed typing completer imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
192 @type QScintilla.Editor
aeaa6bf49831 Changed typing completer imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
193 @param parent reference to the parent object (defaults to None)
aeaa6bf49831 Changed typing completer imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
194 @type QObject (optional)
aeaa6bf49831 Changed typing completer imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
195 @return reference to the instantiated typing completer object
aeaa6bf49831 Changed typing completer imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
196 @rtype CompleterYaml
aeaa6bf49831 Changed typing completer imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
197 """
aeaa6bf49831 Changed typing completer imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
198 return CompleterYaml(editor, parent=parent)

eric ide

mercurial