pyqt-code-editor 0.0.50__tar.gz → 0.0.52__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 (84) hide show
  1. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/PKG-INFO +1 -1
  2. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/__init__.py +1 -1
  3. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/mixins/auto_pair.py +5 -0
  4. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/mixins/highlight_matching_brackets.py +1 -1
  5. pyqt_code_editor-0.0.52/pyqt_code_editor/mixins/merge_undo_actions.py +32 -0
  6. pyqt_code_editor-0.0.50/pyqt_code_editor/mixins/merge_undo_actions.py +0 -12
  7. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/COPYING +0 -0
  8. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyproject.toml +0 -0
  9. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/_settings.py +0 -0
  10. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/app.py +0 -0
  11. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/code_editors/__init__.py +0 -0
  12. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/code_editors/code_editors.py +0 -0
  13. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/code_editors/languages/__init__.py +0 -0
  14. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/code_editors/languages/generic.py +0 -0
  15. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/code_editors/languages/javascript.py +0 -0
  16. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/code_editors/languages/markdown.py +0 -0
  17. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/code_editors/languages/python.py +0 -0
  18. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/code_editors/languages/text.py +0 -0
  19. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/components/__init__.py +0 -0
  20. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/components/editor_panel.py +0 -0
  21. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/components/find_in_files.py +0 -0
  22. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/components/jupyter_console.py +0 -0
  23. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/components/project_explorer.py +0 -0
  24. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/components/settings_panel.py +0 -0
  25. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/components/sigmund.py +0 -0
  26. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/components/workspace_explorer.py +0 -0
  27. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/environment_manager.py +0 -0
  28. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/mixins/__init__.py +0 -0
  29. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/mixins/auto_indent.py +0 -0
  30. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/mixins/base.py +0 -0
  31. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/mixins/check.py +0 -0
  32. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/mixins/comment.py +0 -0
  33. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/mixins/complete.py +0 -0
  34. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/mixins/execute.py +0 -0
  35. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/mixins/file_link.py +0 -0
  36. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/mixins/line_number.py +0 -0
  37. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/mixins/python_auto_indent.py +0 -0
  38. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/mixins/search_replace.py +0 -0
  39. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/mixins/shortcuts.py +0 -0
  40. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/mixins/smart_backspace_delete.py +0 -0
  41. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/mixins/symbols.py +0 -0
  42. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/mixins/theme.py +0 -0
  43. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/mixins/widgets/__init__.py +0 -0
  44. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/mixins/zoom.py +0 -0
  45. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/sigmund-analyst.png +0 -0
  46. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/signal_router.py +0 -0
  47. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/syntax_highlighters/__init__.py +0 -0
  48. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/syntax_highlighters/languages/__init__.py +0 -0
  49. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/syntax_highlighters/languages/generic.py +0 -0
  50. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/syntax_highlighters/languages/python.py +0 -0
  51. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/syntax_highlighters/syntax_highlighter.py +0 -0
  52. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/themes.py +0 -0
  53. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/utils/__init__.py +0 -0
  54. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/utils/languages/__init__.py +0 -0
  55. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/utils/languages/python/__init__.py +0 -0
  56. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/utils/languages/python/_auto_indent.py +0 -0
  57. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/utils/languages/python/_extract_cells.py +0 -0
  58. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/utils/languages/python/_mask_str_in_code.py +0 -0
  59. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/watchdog.py +0 -0
  60. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/widgets/__init__.py +0 -0
  61. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/widgets/calltip_widget.py +0 -0
  62. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/widgets/completion_popup.py +0 -0
  63. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/widgets/dock.py +0 -0
  64. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/widgets/quick_open_dialog.py +0 -0
  65. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/widgets/quick_open_file_dialog.py +0 -0
  66. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/widgets/quick_symbol_dialog.py +0 -0
  67. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/widgets/search_replace_frame.py +0 -0
  68. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/widgets/tab_splitter.py +0 -0
  69. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/widgets/tabbed_editor.py +0 -0
  70. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/worker/__init__.py +0 -0
  71. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/worker/languages/__init__.py +0 -0
  72. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/worker/languages/generic.py +0 -0
  73. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/worker/languages/python.py +0 -0
  74. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/worker/manager.py +0 -0
  75. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/worker/process.py +0 -0
  76. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/worker/providers/__init__.py +0 -0
  77. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/worker/providers/codestral.py +0 -0
  78. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/worker/providers/jedi.py +0 -0
  79. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/worker/providers/ruff.py +0 -0
  80. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/worker/providers/sigmund.py +0 -0
  81. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/worker/providers/symbol.py +0 -0
  82. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/worker/providers/tree_sitter.py +0 -0
  83. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/pyqt_code_editor/worker/settings.py +0 -0
  84. {pyqt_code_editor-0.0.50 → pyqt_code_editor-0.0.52}/readme.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyqt_code_editor
3
- Version: 0.0.50
3
+ Version: 0.0.52
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.50'
5
+ __version__ = '0.0.52'
@@ -39,6 +39,11 @@ class AutoPair:
39
39
  selected_text = cursor.selectedText()
40
40
  doc_text = self.toPlainText()
41
41
  doc_len = len(doc_text)
42
+ # If the old cursor position is beyond the length of the document, then
43
+ # we don't need to do anything.
44
+ if old_pos >= doc_len:
45
+ super().keyPressEvent(event)
46
+ return
42
47
  # Get character before cursor
43
48
  if old_pos > 0:
44
49
  char_before = doc_text[old_pos - 1]
@@ -83,7 +83,7 @@ class HighlightMatchingBrackets:
83
83
 
84
84
  # Create yellow background format
85
85
  fmt = QTextCharFormat()
86
- fmt.setBackground(QColor(255, 255, 0, 100)) # Yellow with some transparency
86
+ fmt.setBackground(QColor(255, 255, 0, 50)) # Yellow with some transparency
87
87
 
88
88
  selection = QTextEdit.ExtraSelection()
89
89
  selection.cursor = cursor
@@ -0,0 +1,32 @@
1
+ from qtpy.QtCore import Qt
2
+ from qtpy.QtGui import QTextCursor
3
+
4
+
5
+ class MergeUndoActions:
6
+ """Ensures that all changes made as part of a key press result in a
7
+ single edit block for undo purposes. This class should be the first
8
+ mixin of the list.
9
+ """
10
+ def keyPressEvent(self, event):
11
+ # Navigation keys that should NOT be wrapped in edit blocks. This
12
+ # causes a specific issue with the cursor jumping to the start of a
13
+ # line when navigating vertically.
14
+ navigation_keys = {
15
+ Qt.Key.Key_Up, Qt.Key.Key_Down,
16
+ Qt.Key.Key_Left, Qt.Key.Key_Right,
17
+ Qt.Key.Key_Home, Qt.Key.Key_End,
18
+ Qt.Key.Key_PageUp, Qt.Key.Key_PageDown
19
+ }
20
+ is_navigation = (event.key() in navigation_keys and
21
+ not (event.modifiers() & Qt.KeyboardModifier.ShiftModifier))
22
+ if is_navigation:
23
+ super().keyPressEvent(event)
24
+ return
25
+ # Wrap all other keys (editing operations) in a single edit block to
26
+ # unify changes into a single undo action
27
+ cursor = QTextCursor(self.document())
28
+ cursor.beginEditBlock()
29
+ try:
30
+ super().keyPressEvent(event)
31
+ finally:
32
+ cursor.endEditBlock()
@@ -1,12 +0,0 @@
1
- class MergeUndoActions:
2
- """Ensures that all changes made as part of a key press result in a
3
- single edit block for undo purposes. This class should be the first
4
- mixin of the list.
5
- """
6
- def keyPressEvent(self, event):
7
- cursor = self.textCursor()
8
- cursor.beginEditBlock()
9
- try:
10
- super().keyPressEvent(event)
11
- finally:
12
- cursor.endEditBlock()