pyqt-code-editor 0.0.10__tar.gz → 0.0.12__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/PKG-INFO +1 -1
  2. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/__init__.py +1 -1
  3. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/components/find_in_files.py +3 -3
  4. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/components/project_explorer.py +5 -0
  5. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/mixins/base.py +24 -4
  6. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/mixins/complete.py +2 -0
  7. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/COPYING +0 -0
  8. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyproject.toml +0 -0
  9. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/_settings.py +0 -0
  10. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/app.py +0 -0
  11. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/code_editors/__init__.py +0 -0
  12. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/code_editors/code_editors.py +0 -0
  13. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/code_editors/languages/__init__.py +0 -0
  14. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/code_editors/languages/generic.py +0 -0
  15. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/code_editors/languages/markdown.py +0 -0
  16. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/code_editors/languages/python.py +0 -0
  17. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/code_editors/languages/text.py +0 -0
  18. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/components/__init__.py +0 -0
  19. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/components/editor_panel.py +0 -0
  20. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/components/jupyter_console.py +0 -0
  21. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/components/settings_panel.py +0 -0
  22. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/components/sigmund.py +0 -0
  23. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/components/workspace_explorer.py +0 -0
  24. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/mixins/__init__.py +0 -0
  25. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/mixins/auto_indent.py +0 -0
  26. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/mixins/auto_pair.py +0 -0
  27. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/mixins/check.py +0 -0
  28. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/mixins/comment.py +0 -0
  29. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/mixins/execute.py +0 -0
  30. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/mixins/file_link.py +0 -0
  31. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/mixins/line_number.py +0 -0
  32. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/mixins/python_auto_indent.py +0 -0
  33. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/mixins/search_replace.py +0 -0
  34. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/mixins/shortcuts.py +0 -0
  35. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/mixins/smart_backspace_delete.py +0 -0
  36. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/mixins/symbols.py +0 -0
  37. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/mixins/theme.py +0 -0
  38. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/mixins/widgets/__init__.py +0 -0
  39. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/mixins/zoom.py +0 -0
  40. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/python_utils.py +0 -0
  41. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/signal_router.py +0 -0
  42. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/syntax_highlighters/__init__.py +0 -0
  43. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/syntax_highlighters/languages/__init__.py +0 -0
  44. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/syntax_highlighters/languages/generic.py +0 -0
  45. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/syntax_highlighters/languages/python.py +0 -0
  46. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/syntax_highlighters/syntax_highlighter.py +0 -0
  47. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/themes.py +0 -0
  48. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/utils.py +0 -0
  49. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/watchdog.py +0 -0
  50. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/widgets/__init__.py +0 -0
  51. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/widgets/calltip_widget.py +0 -0
  52. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/widgets/completion_popup.py +0 -0
  53. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/widgets/dock.py +0 -0
  54. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/widgets/quick_open_dialog.py +0 -0
  55. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/widgets/quick_open_file_dialog.py +0 -0
  56. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/widgets/quick_symbol_dialog.py +0 -0
  57. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/widgets/search_replace_frame.py +0 -0
  58. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/widgets/tab_splitter.py +0 -0
  59. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/widgets/tabbed_editor.py +0 -0
  60. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/worker/__init__.py +0 -0
  61. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/worker/languages/__init__.py +0 -0
  62. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/worker/languages/generic.py +0 -0
  63. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/worker/languages/python.py +0 -0
  64. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/worker/manager.py +0 -0
  65. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/worker/process.py +0 -0
  66. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/worker/providers/__init__.py +0 -0
  67. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/worker/providers/codestral.py +0 -0
  68. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/worker/providers/jedi.py +0 -0
  69. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/worker/providers/ruff.py +0 -0
  70. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/worker/providers/sigmund.py +0 -0
  71. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/worker/providers/symbol.py +0 -0
  72. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/pyqt_code_editor/worker/settings.py +0 -0
  73. {pyqt_code_editor-0.0.10 → pyqt_code_editor-0.0.12}/readme.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyqt_code_editor
3
- Version: 0.0.10
3
+ Version: 0.0.12
4
4
  Summary: Fully featured code-editor widgets for PyQt
5
5
  Keywords: code editor,pyqt,ide
6
6
  Author-email: Sebastiaan Mathôt <s.mathot@cogsci.nl>
@@ -2,4 +2,4 @@
2
2
 
3
3
  from ._settings import settings
4
4
 
5
- __version__ = '0.0.10'
5
+ __version__ = '0.0.12'
@@ -1,10 +1,10 @@
1
1
  import os
2
2
  import multiprocessing
3
3
  from qtpy.QtWidgets import QDockWidget, QWidget, QVBoxLayout, QHBoxLayout, \
4
- QLabel, QLineEdit, QCheckBox, QPushButton, QTreeWidget, QTreeWidgetItem, \
5
- QAbstractItemView, QShortcut
4
+ QLineEdit, QCheckBox, QPushButton, QTreeWidget, QTreeWidgetItem, \
5
+ QAbstractItemView
6
6
  from qtpy.QtCore import Qt, QTimer, Signal
7
- from qtpy.QtGui import QKeySequence
7
+
8
8
 
9
9
  def search_in_files_worker(files, search_text, case_sensitive, whole_word, regex, output_queue):
10
10
  """
@@ -118,6 +118,11 @@ class GitignoreFilterProxyModel(QSortFilterProxyModel):
118
118
  return True
119
119
  if not self.root_folder:
120
120
  return True
121
+ # Always keep directories. We need to be able to look inside them
122
+ # because their children might be re-included by negated patterns in
123
+ # .gitignore.
124
+ if source_model.isDir(index):
125
+ return True
121
126
  # Ignore explicitly ignored folders
122
127
  path_parts = Path(abs_path).parts
123
128
  if any(ignored in path_parts for ignored in settings.ignored_folders):
@@ -128,12 +128,32 @@ class Base:
128
128
  self.modified = modified
129
129
  self.modification_changed.emit(self, modified)
130
130
 
131
- def jump_to_line(self, line_number=0):
132
- cursor = self.textCursor()
131
+ def jump_to_line(self, line_number: int = 0):
132
+ """
133
+ Jump to a specific line (0-based) in the QPlainTextEdit,
134
+ centre it in the viewport and select the whole line.
135
+ """
136
+ # Sanity-check the requested line number
137
+ if line_number < 0:
138
+ line_number = 0
139
+ max_line = self.document().blockCount() - 1
140
+ line_number = min(line_number, max_line)
141
+
142
+ cursor = QTextCursor(self.document())
143
+
144
+ # Move to the requested line
133
145
  cursor.movePosition(QTextCursor.Start)
134
- cursor.movePosition(QTextCursor.Down, QTextCursor.MoveAnchor, line_number)
146
+ cursor.movePosition(QTextCursor.NextBlock, QTextCursor.MoveAnchor,
147
+ line_number - 1)
148
+
149
+ # Select the whole line for visibility
150
+ cursor.select(QTextCursor.LineUnderCursor)
151
+
152
+ # Apply the cursor to the editor
135
153
  self.setTextCursor(cursor)
136
- self.ensureCursorVisible()
154
+
155
+ # Scroll so the line sits roughly in the middle of the viewport
156
+ self.centerCursor()
137
157
 
138
158
  def update_theme(self):
139
159
  """Mixins can implement this to update the theme in response to font changes
@@ -70,6 +70,8 @@ class Complete:
70
70
  pos = self.textCursor().position()
71
71
  if self._cm_paren_prefix is None or pos >= len(self._cm_paren_prefix):
72
72
  self._update_paren_prefix_cache()
73
+ if pos >= len(self._cm_paren_prefix):
74
+ return False
73
75
  return self._cm_paren_prefix[pos] > 0
74
76
 
75
77
  def _is_navigation_key(self, event):