Commit Graph
31406 Commits
Author SHA1 Message Date
Max BrunsfeldandNathan Sobo 4436301fa3 Coalesce followed view updates only within one frame
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-03-22 17:03:24 -07:00
Max BrunsfeldandNathan Sobo b920b865c4 Combine updates from multiple view events when updating followers
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-03-22 16:22:42 -07:00
Keith Simmons 8bf564ecf7 Add editor lifetime events 2022-03-22 16:14:32 -07:00
Keith Simmons 8d4deb8693 Add editor selection utilities
Also improved test that was failing during above to use marker text approach as a drive by
2022-03-22 16:08:22 -07:00
Max Brunsfeld 5d1658e1f1 Don't represent editor's scroll top anchor as an option
Use Anchor::min as the special value representing a scroll top of zero
2022-03-22 13:32:25 -07:00
Max Brunsfeld 421b170515 Use env_logger when running the app in a terminal 2022-03-22 13:32:25 -07:00
Max Brunsfeld a0d18fc007 Allow customizing the pane's following border width in the theme 2022-03-22 13:32:25 -07:00
Max Brunsfeld 76cf065588 Make UpdateBuffer a foreground message 2022-03-22 13:32:25 -07:00
Keith Simmons 3e22400212 Remove results from movement function return values, and move editor test utilities to test file 2022-03-22 10:55:03 -07:00
Antonio ScandurraandNathan Sobo 13c6ca7adb Ensure leader updates don't change the active pane of followers
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-03-22 16:44:59 +01:00
Antonio ScandurraandNathan Sobo 43eeb11192 Don't trigger observations with notifications emitted prior to observing
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-03-22 16:28:11 +01:00
Antonio ScandurraandNathan Sobo 8d901860f2 Don't trigger global subscriptions with events emitted prior to subscribing
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-03-22 16:14:21 +01:00
Antonio ScandurraandNathan Sobo cd00947e17 Don't trigger subscriptions with events emitted prior to subscribing
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-03-22 15:57:30 +01:00
Antonio Scandurra b6dd7c1662 WIP 2022-03-22 13:35:37 +01:00
Antonio Scandurra 8ac8e39983 Bump protocol version 2022-03-22 13:19:07 +01:00
Antonio Scandurra cbf7584ad3 Merge branch 'main' into follow 2022-03-22 11:20:55 +01:00
Antonio Scandurra 2fea8a3cda Stop following when leader disconnects 2022-03-22 11:16:04 +01:00
Antonio Scandurra e3bd33a549 Forget last pane's leader when such pane is removed
This is just a memory optimization and doesn't cause any observable
change in behavior.
2022-03-22 11:06:52 +01:00
Antonio Scandurra 1b6236e3db Reflect leader's view state when recycling existing local editors 2022-03-22 10:51:17 +01:00
Antonio Scandurra 6e16603070 Always render local selections on top of remote ones 2022-03-22 10:31:28 +01:00
Antonio Scandurra fa960c0e43 Follow last collaborator or the next one via cmd-alt-shift-f 2022-03-22 10:16:58 +01:00
Antonio Scandurra 3f03d2b641 Stop following when activating a different item on the follower pane 2022-03-22 09:42:37 +01:00
Antonio Scandurra 0de3f0980f Automatically unfollow when editing, scrolling or changing selections 2022-03-22 09:17:01 +01:00
Max Brunsfeld 0cc1f68b61 WIP - Start work on unfollowing automatically 2022-03-21 21:52:28 -07:00
Max Brunsfeld 8c5e1610b1 Always mirror the leader's selections when following 2022-03-21 21:47:29 -07:00
Nathan Sobo 3b5830d041 Make boundary-finding methods wrap across newlines
This requires word and subword methods to explicitly acknowledge that they want to stop at newlines, which I think actually increases clarity. It makes the boundary finding method more general and useful for external callers such as the forthcoming vim crate.
2022-03-21 21:25:02 -06:00
Nathan Sobo 47496eda80 Improve DisplayPoint Debug impl 2022-03-21 21:07:56 -06:00
Nathan Sobo ba73ef8861 Implement next_subword_end 2022-03-21 20:02:08 -06:00
acad71b1f5 WIP: Start on previous_subword_start
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
Co-Authored-By: Keith Simmons <keith@the-simmons.net>
2022-03-21 19:53:01 -06:00
Max Brunsfeld c9aa130958 Show borders around avatars and panes to indicate following state 2022-03-21 15:12:15 -07:00
Nathan Sobo 37420a1dd0 Extract logic for scanning over character boundaries 2022-03-21 16:01:22 -06:00
Nathan Sobo ffb280f963 Make multi-byte and surrounding_word tests more readable
Just merge multi-byte tests into the main word movement tests
2022-03-21 15:41:42 -06:00
Nathan SoboandKeith Simmons ce4280c12f Remove CharKind::Newline
This is just a character, and so it seems clearer to refer to it specifically when we want to know if a character is a newline. There was only one case where we relied on Newline being different from Whitespace, and we special-cased that instance. Changing this actually makes us match the behavior of VS Code when double-clicking runs of multiple newlines.

/cc @as-cii

Co-Authored-By: Keith Simmons <keith@the-simmons.net>
2022-03-21 15:17:32 -06:00
Nathan SoboandKeith Simmons 61b61e070f Clarify word movement function names and improve test coverage
Co-Authored-By: Keith Simmons <keith@the-simmons.net>
2022-03-21 15:17:25 -06:00
Max BrunsfeldandAntonio Scandurra 18848bd463 Match the leader's last selection when unfollowing
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2022-03-21 14:04:55 -07:00
Max BrunsfeldandAntonio Scandurra 3cfde9b2e6 Avoid infinite loop when collaborators follow each other
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2022-03-21 11:47:00 -07:00
Antonio Scandurra 995149babe 💄 2022-03-21 18:16:06 +01:00
Nate Butler 6d1b231818 Update Zed fonts to 1.2.1 2022-03-21 12:11:31 -04:00
Antonio Scandurra 9300c2add6 Allow unfollowing of leaders by clicking on their avatar 2022-03-21 17:10:23 +01:00
Antonio Scandurra 5e249ad324 Implement Workspace::unfollow
This also changes the structure of the follow state back to be per-pane. This
is because we can't share the same view state across different panes for
a couple of reasons:

- Rendering the same view in N different panes is almost always not something
that we want due to global state such as focus.
- If we allowed it and a user followed the same person in two different panes,
there would be no way of unfollowing in one pane without also unfollowing in
the other.
2022-03-21 16:55:18 +01:00
Antonio Scandurra f04e08eb4b Hide cursor both locally and remotely when following 2022-03-21 15:16:56 +01:00
Nathan Sobo 6a987cedcc Pass project entry id to Pane when opening a project items
This fixes an oversight where we were failing to associate project items with their project entry ids, which broke the logic that prevented the same project entry from being opened twice in the same pane.
2022-03-20 08:54:20 -06:00
Antonio Scandurra 0ddc5453c0 Unset follower's scroll anchor when editor is scrolled all the way up 2022-03-19 10:50:23 +01:00
Max Brunsfeld 2163cacb0c Handle view updates when following
Basic following now works. Editors' scroll positions
are their only replicated view state.
2022-03-18 15:56:57 -07:00
Max Brunsfeld 0be1a81fbb Allow clicking a titlebar avatar to initiate following 2022-03-18 13:37:07 -07:00
Max Brunsfeld 395d11d98b Allow FollowableItem::to_state_message to return None
This way, we can avoid a panic if we don't handle certain cases,
like a non-singleton editor.
2022-03-18 13:36:05 -07:00
Max Brunsfeld 9d50d10dee 🎨 client
Forgot to push this yesterday night.
2022-03-18 13:03:43 -07:00
Max BrunsfeldandAntonio Scandurra 70e323e4dc Start work on updating editors's scroll positions when following
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2022-03-18 12:56:20 -07:00
Max BrunsfeldandAntonio Scandurra a1e22c5feb Rename FollowedItem -> FollowableItem
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2022-03-18 10:12:51 -07:00
Antonio Scandurra f80a5578ec WIP 2022-03-18 18:07:03 +01:00