iterm2 2.29__tar.gz → 2.30__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 (66) hide show
  1. {iterm2-2.29 → iterm2-2.30}/PKG-INFO +1 -1
  2. {iterm2-2.29 → iterm2-2.30}/iterm2/_version.py +1 -1
  3. {iterm2-2.29 → iterm2-2.30}/iterm2/selection.py +4 -3
  4. {iterm2-2.29 → iterm2-2.30}/iterm2.egg-info/PKG-INFO +1 -1
  5. {iterm2-2.29 → iterm2-2.30}/iterm2.egg-info/SOURCES.txt +1 -0
  6. iterm2-2.30/tests/test_selection.py +52 -0
  7. {iterm2-2.29 → iterm2-2.30}/MANIFEST.in +0 -0
  8. {iterm2-2.29 → iterm2-2.30}/README.rst +0 -0
  9. {iterm2-2.29 → iterm2-2.30}/iterm2/__init__.py +0 -0
  10. {iterm2-2.29 → iterm2-2.30}/iterm2/alert.py +0 -0
  11. {iterm2-2.29 → iterm2-2.30}/iterm2/api_pb2.py +0 -0
  12. {iterm2-2.29 → iterm2-2.30}/iterm2/api_pb2.pyi +0 -0
  13. {iterm2-2.29 → iterm2-2.30}/iterm2/app.py +0 -0
  14. {iterm2-2.29 → iterm2-2.30}/iterm2/arrangement.py +0 -0
  15. {iterm2-2.29 → iterm2-2.30}/iterm2/auth.py +0 -0
  16. {iterm2-2.29 → iterm2-2.30}/iterm2/binding.py +0 -0
  17. {iterm2-2.29 → iterm2-2.30}/iterm2/broadcast.py +0 -0
  18. {iterm2-2.29 → iterm2-2.30}/iterm2/capabilities.py +0 -0
  19. {iterm2-2.29 → iterm2-2.30}/iterm2/color.py +0 -0
  20. {iterm2-2.29 → iterm2-2.30}/iterm2/colorpresets.py +0 -0
  21. {iterm2-2.29 → iterm2-2.30}/iterm2/connection.py +0 -0
  22. {iterm2-2.29 → iterm2-2.30}/iterm2/customcontrol.py +0 -0
  23. {iterm2-2.29 → iterm2-2.30}/iterm2/filepanel.py +0 -0
  24. {iterm2-2.29 → iterm2-2.30}/iterm2/focus.py +0 -0
  25. {iterm2-2.29 → iterm2-2.30}/iterm2/keyboard.py +0 -0
  26. {iterm2-2.29 → iterm2-2.30}/iterm2/lifecycle.py +0 -0
  27. {iterm2-2.29 → iterm2-2.30}/iterm2/mainmenu.py +0 -0
  28. {iterm2-2.29 → iterm2-2.30}/iterm2/notifications.py +0 -0
  29. {iterm2-2.29 → iterm2-2.30}/iterm2/preferences.py +0 -0
  30. {iterm2-2.29 → iterm2-2.30}/iterm2/profile.py +0 -0
  31. {iterm2-2.29 → iterm2-2.30}/iterm2/prompt.py +0 -0
  32. {iterm2-2.29 → iterm2-2.30}/iterm2/py.typed +0 -0
  33. {iterm2-2.29 → iterm2-2.30}/iterm2/registration.py +0 -0
  34. {iterm2-2.29 → iterm2-2.30}/iterm2/rpc.py +0 -0
  35. {iterm2-2.29 → iterm2-2.30}/iterm2/screen.py +0 -0
  36. {iterm2-2.29 → iterm2-2.30}/iterm2/session.py +0 -0
  37. {iterm2-2.29 → iterm2-2.30}/iterm2/statusbar.py +0 -0
  38. {iterm2-2.29 → iterm2-2.30}/iterm2/tab.py +0 -0
  39. {iterm2-2.29 → iterm2-2.30}/iterm2/tabgroup.py +0 -0
  40. {iterm2-2.29 → iterm2-2.30}/iterm2/tmux.py +0 -0
  41. {iterm2-2.29 → iterm2-2.30}/iterm2/tool.py +0 -0
  42. {iterm2-2.29 → iterm2-2.30}/iterm2/transaction.py +0 -0
  43. {iterm2-2.29 → iterm2-2.30}/iterm2/triggers.py +0 -0
  44. {iterm2-2.29 → iterm2-2.30}/iterm2/util.py +0 -0
  45. {iterm2-2.29 → iterm2-2.30}/iterm2/variables.py +0 -0
  46. {iterm2-2.29 → iterm2-2.30}/iterm2/window.py +0 -0
  47. {iterm2-2.29 → iterm2-2.30}/iterm2.egg-info/dependency_links.txt +0 -0
  48. {iterm2-2.29 → iterm2-2.30}/iterm2.egg-info/not-zip-safe +0 -0
  49. {iterm2-2.29 → iterm2-2.30}/iterm2.egg-info/requires.txt +0 -0
  50. {iterm2-2.29 → iterm2-2.30}/iterm2.egg-info/top_level.txt +0 -0
  51. {iterm2-2.29 → iterm2-2.30}/setup.cfg +0 -0
  52. {iterm2-2.29 → iterm2-2.30}/setup.py +0 -0
  53. {iterm2-2.29 → iterm2-2.30}/tests/test_auth.py +0 -0
  54. {iterm2-2.29 → iterm2-2.30}/tests/test_binding.py +0 -0
  55. {iterm2-2.29 → iterm2-2.30}/tests/test_color.py +0 -0
  56. {iterm2-2.29 → iterm2-2.30}/tests/test_connection.py +0 -0
  57. {iterm2-2.29 → iterm2-2.30}/tests/test_context_menu.py +0 -0
  58. {iterm2-2.29 → iterm2-2.30}/tests/test_floating_panes.py +0 -0
  59. {iterm2-2.29 → iterm2-2.30}/tests/test_init.py +0 -0
  60. {iterm2-2.29 → iterm2-2.30}/tests/test_mainmenu.py +0 -0
  61. {iterm2-2.29 → iterm2-2.30}/tests/test_profile.py +0 -0
  62. {iterm2-2.29 → iterm2-2.30}/tests/test_registration.py +0 -0
  63. {iterm2-2.29 → iterm2-2.30}/tests/test_session.py +0 -0
  64. {iterm2-2.29 → iterm2-2.30}/tests/test_triggers.py +0 -0
  65. {iterm2-2.29 → iterm2-2.30}/tests/test_util.py +0 -0
  66. {iterm2-2.29 → iterm2-2.30}/tests/test_window.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iterm2
3
- Version: 2.29
3
+ Version: 2.30
4
4
  Summary: Python interface to iTerm2's scripting API
5
5
  Home-page: http://github.com/gnachman/iTerm2
6
6
  Author: George Nachman
@@ -1,3 +1,3 @@
1
1
  """Gives the module version."""
2
2
 
3
- __version__ = "2.29"
3
+ __version__ = "2.30"
@@ -290,11 +290,11 @@ class Selection:
290
290
  indexes |= indexes_to_add
291
291
 
292
292
  # In multipart windowed ranges, add connectors for the endpoint
293
- # of all but the last # range. Each enumerated range is on its
293
+ # of all but the last range. Each enumerated range is on its
294
294
  # own line.
295
295
  if (
296
296
  outer.windowed_coord_range.hasWindow
297
- and outer_range.end == outer.windowed_coord_range.coordRange.end
297
+ and outer_range.end != outer.windowed_coord_range.coordRange.end
298
298
  and the_range.length > 0
299
299
  ):
300
300
  connectors |= {the_range.max}
@@ -328,13 +328,14 @@ class Selection:
328
328
 
329
329
  sorted_ranges = sorted(all_ranges, key=range_key)
330
330
  for idx, sorted_range in enumerate(sorted_ranges):
331
+ # Make the end exclusive, as connectors are, before finding its index.
332
+ sorted_range.end.x += 1
331
333
  end_index = (
332
334
  sorted_range.start.x
333
335
  + sorted_range.start.y * width
334
336
  + sorted_range.length(width)
335
337
  )
336
338
  eol = (end_index not in connectors) and idx + 1 < len(sorted_ranges)
337
- sorted_range.end.x += 1
338
339
  stop = await callback(WindowedCoordRange(sorted_range), eol)
339
340
  if stop:
340
341
  break
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iterm2
3
- Version: 2.29
3
+ Version: 2.30
4
4
  Summary: Python interface to iTerm2's scripting API
5
5
  Home-page: http://github.com/gnachman/iTerm2
6
6
  Author: George Nachman
@@ -57,6 +57,7 @@ tests/test_init.py
57
57
  tests/test_mainmenu.py
58
58
  tests/test_profile.py
59
59
  tests/test_registration.py
60
+ tests/test_selection.py
60
61
  tests/test_session.py
61
62
  tests/test_triggers.py
62
63
  tests/test_util.py
@@ -0,0 +1,52 @@
1
+ """Tests for iterm2.selection."""
2
+
3
+ import asyncio
4
+
5
+ from iterm2.selection import Selection, SelectionMode, SubSelection
6
+ from iterm2.util import CoordRange, Point, Range, WindowedCoordRange
7
+
8
+
9
+ def test_windowed_lines_are_joined_but_end_with_a_newline():
10
+ """Like iTerm2, each line of a windowed selection but the last is connected."""
11
+ windowed = SubSelection(
12
+ WindowedCoordRange(CoordRange(Point(12, 0), Point(15, 2)), Range(10, 10)),
13
+ SelectionMode.CHARACTER,
14
+ False,
15
+ )
16
+ later = SubSelection(
17
+ WindowedCoordRange(CoordRange(Point(0, 5), Point(4, 5))),
18
+ SelectionMode.CHARACTER,
19
+ False,
20
+ )
21
+ eols = []
22
+
23
+ async def callback(_coord_range, eol):
24
+ eols.append(eol)
25
+ return False
26
+
27
+ asyncio.run(Selection([windowed, later]).async_enumerate_ranges(80, callback))
28
+
29
+ assert eols == [False, False, True, False]
30
+
31
+
32
+ def test_connected_sub_selection_is_joined_to_the_next():
33
+ """A connected sub-selection gets no newline after it."""
34
+ first = SubSelection(
35
+ WindowedCoordRange(CoordRange(Point(0, 0), Point(5, 0))),
36
+ SelectionMode.CHARACTER,
37
+ True,
38
+ )
39
+ second = SubSelection(
40
+ WindowedCoordRange(CoordRange(Point(0, 1), Point(5, 1))),
41
+ SelectionMode.CHARACTER,
42
+ False,
43
+ )
44
+ eols = []
45
+
46
+ async def callback(_coord_range, eol):
47
+ eols.append(eol)
48
+ return False
49
+
50
+ asyncio.run(Selection([first, second]).async_enumerate_ranges(80, callback))
51
+
52
+ assert eols == [False, False]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes