Commit Graph

3027 Commits

Author SHA1 Message Date
Mikayla Maki
b2fa511acd GPUI change proposals 2022-07-06 17:52:20 -07:00
Mikayla Maki
778cfd94d8 Added basic selections 2022-07-06 17:37:12 -07:00
Keith Simmons
c139f1e6b6 combine branches of events in from_native 2022-07-06 16:59:58 -07:00
Keith Simmons
bcb553f233 Combine platform mouse events to use common MouseEvent struct and remove MouseDragged event in favor of MouseMoved 2022-07-06 16:37:56 -07:00
Max Brunsfeld
70cf6b4041 Give nav buttons a background on hover 2022-07-06 16:33:44 -07:00
Max Brunsfeld
4e8dbbfd4b Add test for pane nav history covering notification of pane's toolbar 2022-07-06 16:29:11 -07:00
Max Brunsfeld
a378ec49ec Enable and disable nav buttons based on pane's navigation stack
Also, make the `NavHistory` type private to the `workspace` crate.
Expose only the `ItemNavHistory` type, via a method on Pane called
`nav_history_for_item`.
2022-07-06 15:46:43 -07:00
Keith Simmons
686e57373b pull event data out into individual Event structs 2022-07-06 15:36:42 -07:00
Max Brunsfeld
7e5cf6669f Add forward and backward navigation buttons to toolbar 2022-07-06 14:05:24 -07:00
Mikayla Maki
cba5b4ac11 Began working on selections, refactored colors 2022-07-06 13:44:30 -07:00
Keith Simmons
2d126c7c5c add terminal modal which can be displayed and dismissed while preserving the terminal state 2022-07-06 13:20:54 -07:00
Max Brunsfeld
bbe325930f 0.45 2022-07-06 11:32:21 -07:00
Max Brunsfeld
a858b3fda9 Treat window deactivation as a focus change for the purpose of autosave 2022-07-06 11:20:29 -07:00
Max Brunsfeld
00d1c2e56f
Merge pull request #1291 from zed-industries/fix-autosave-on-close
Fix autosave when closing a tab
2022-07-06 10:54:44 -07:00
Antonio Scandurra
2c1906d710 Normalize line endings when parsing completions
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-07-06 19:32:45 +02:00
Antonio Scandurra
d3db700db4 Fix panic on paste when editing with auto-indent
Instead of accepting text as it's input by the user, we will read it
out of the edit operation after it gets sanitized by the buffer.
2022-07-06 19:00:11 +02:00
Antonio Scandurra
ab4931da65 Prevent autosave for deleted files 2022-07-06 17:25:33 +02:00
Antonio Scandurra
9286893177 Save item when closing it if autosave on focus change is enabled 2022-07-06 17:04:41 +02:00
Antonio Scandurra
5e00df6267 Move autosave tests down into Workspace 2022-07-06 16:55:05 +02:00
Antonio Scandurra
b937c1acec Move autosave logic up into Workspace and Pane 2022-07-06 16:33:22 +02:00
Antonio Scandurra
980730a4e1 Report whether a view was focused or blurred when observing focus 2022-07-06 15:53:40 +02:00
Antonio Scandurra
573dd29882 v0.44.1 2022-07-06 12:42:41 +02:00
Antonio Scandurra
13c9b1778b Replace lone carriage returns with newlines 2022-07-06 11:00:56 +02:00
Antonio Scandurra
113eb9b94f Don't slice midway through multi-byte char when detecting line ending 2022-07-06 10:21:30 +02:00
Max Brunsfeld
5e2306d0e0 0.44 2022-07-05 17:37:04 -07:00
Max Brunsfeld
77d688b4fb
Merge pull request #1287 from zed-industries/handle-carriage-returns-in-edits
Fix crash when pasting text with CRLF line endings
2022-07-05 17:35:38 -07:00
Max Brunsfeld
7e9beaf4bb Strip carriage returns from all text in text::Buffer
* Moving the logic from Rope to text::Buffer makes it easier
  to keep the Rope in sync with the fragment tree.
* Removing carriage return characters is lossier, but is much
  simpler than incrementally maintaining the invariant that
  there are no carriage returns followed by newlines. We may
  want to do something smarter in the future.

Co-authored-by: Keith Simmons <keith@zed.dev>
2022-07-05 17:25:09 -07:00
Mikayla Maki
4d88088ca4
Merge pull request #1286 from zed-industries/grid-renderer
Switch from line-and-character renderer to a direct grid renderer
2022-07-05 17:16:00 -07:00
Mikayla Maki
03cbb94057 changed renderer 2022-07-05 17:10:01 -07:00
Keith Simmons
ed52f8a8a3 WIP making paste better 2022-07-05 16:52:56 -07:00
Keith Simmons
58e57d0150
Merge pull request #1271 from zed-industries/matching-bracket-highlights
Highlight matching bracket when newest selection head is on a bracket
2022-07-05 16:51:46 -07:00
Keith Simmons
229bc94ac3 remove partial edit from normal.rs 2022-07-05 16:48:12 -07:00
Keith Simmons
956dd0c2bc fix error with reverse range marked text ranges 2022-07-05 16:44:45 -07:00
Keith Simmons
1f3dc2f534 highlight both brackets, only when empty selection, and add test 2022-07-05 15:19:05 -07:00
Mikayla Maki
342d38a9fb Working on grid rendering 2022-07-05 15:10:34 -07:00
Mikayla Maki
e14b3db68a
Merge pull request #1285 from zed-industries/fix-terminal-backspace
Set up basic enviroment variables
2022-07-05 15:08:16 -07:00
Mikayla Maki
b4dc92dddc Set up basic enviroment variables 2022-07-05 15:02:58 -07:00
Max Brunsfeld
116fa92e84 Change Buffer constructors to construct the History internally 2022-07-05 14:51:52 -07:00
Max Brunsfeld
1add2d270e
Merge pull request #1282 from zed-industries/context-menu-below-project-panel-entries
Select the last worktree root when right-clicking below all project panel entries
2022-07-05 13:33:50 -07:00
Max Brunsfeld
4aa19c1a7f Select the last root when right-clicking below all project panel entries 2022-07-05 13:21:41 -07:00
Max Brunsfeld
8048758990 Add application menu item to open default key bindings 2022-07-05 12:41:38 -07:00
Max Brunsfeld
ea1f6d6e00 0.43 2022-07-05 10:46:22 -07:00
Antonio Scandurra
f1ffcb626a Fix panics in database tests 2022-07-05 17:59:40 +02:00
Antonio Scandurra
f09d265054 Remove non-determinism from autosave after delay 2022-07-05 17:54:54 +02:00
Antonio Scandurra
a5c39acf4c Always finish previous autosave before starting a new one 2022-07-05 17:51:01 +02:00
Antonio Scandurra
ebf4bae173 Add unit test for autosave 2022-07-05 17:51:01 +02:00
Antonio Scandurra
d43e8b270a Add unit test for ViewContext::observe_window_activation 2022-07-05 17:51:01 +02:00
Antonio Scandurra
885172f4dd Honor Autosave setting in Editor 2022-07-05 17:51:01 +02:00
Antonio Scandurra
d589017a80 Add ViewContext::observe_window_activation 2022-07-05 17:51:01 +02:00
Antonio Scandurra
7a6010e7dc Fix unsafe memory access when converting entity handles 2022-07-05 17:50:57 +02:00
Antonio Scandurra
4b533c339d Introduce a new, language-overridable Autosave setting 2022-07-05 09:25:22 +02:00
Antonio Scandurra
eac76df0ac Transmit new line ending when buffer is reloaded 2022-07-05 08:01:14 +02:00
Max Brunsfeld
6f49f4a9cf Recalculate Metal layer's drawable size when window's scale factor changes 2022-07-04 15:14:08 -07:00
Max Brunsfeld
f82dda9981
Merge pull request #1276 from zed-industries/handle-carriage-returns
Handle files with CRLF (windows-style) line endings
2022-07-04 13:40:28 -07:00
Max Brunsfeld
c1b886b0ce Normalize line endings consistently between fake and real FS 2022-07-04 13:00:12 -07:00
Max Brunsfeld
9804c683c0 Rename NewlineStyle -> LineEnding 2022-07-04 12:47:40 -07:00
Max Brunsfeld
0ba12eab22 Handle a file's line endings changing on disk 2022-07-04 12:30:28 -07:00
Max Brunsfeld
b0efa4f5c1 Move project tests into their own file 2022-07-04 12:00:15 -07:00
Max Brunsfeld
771a834d84 Delete the autoclosing bracket when deleting the opening bracket 2022-07-04 10:46:35 -07:00
Antonio Scandurra
d80ecb6f98 Ignore carriage returns when reloading buffer 2022-07-04 17:40:35 +02:00
Antonio Scandurra
3480b50920 Detect buffer newline style and honor it when saving 2022-07-04 17:40:26 +02:00
Antonio Scandurra
f9bad2d81d Replace \r and \r\n with \n when indexing text into the rope 2022-07-04 15:37:40 +02:00
Antonio Scandurra
9a6092dd1b Support hitting enter on numpad 2022-07-04 10:01:56 +02:00
Antonio Scandurra
d3b9eca791 Merge branch 'main' into user-timeline 2022-07-04 09:23:16 +02:00
Antonio Scandurra
0b2452f666
Merge pull request #1265 from zed-industries/worktree-performance
Fix problems that arise when large numbers of files change on disk
2022-07-04 09:19:18 +02:00
Antonio Scandurra
aca757a02d Don't poll snapshot if processing events unless user manually changed fs 2022-07-04 08:10:31 +02:00
Keith Simmons
9b36e3d009 Highlight matching bracket when newest selection head is on a bracket 2022-07-01 15:06:16 -07:00
Mikayla Maki
6f5cef1456
Merge pull request #1269 from zed-industries/terminal-fr
Update terminal to use the editor's cursor rendering and fix a couple bugs
2022-07-01 14:59:23 -07:00
Mikayla Maki
6ac5cc0d2a Fixed cursor positioning bugs in multi-byte charcters. Still have at least one though :/ 2022-07-01 14:53:19 -07:00
Mikayla Maki
62939322d3 rendering cursor correctly 2022-07-01 13:03:26 -07:00
Mikayla Maki
f4ac694ad8 Fixed debug offset I added to terminal 2022-07-01 11:48:50 -07:00
Mikayla Maki
ce60a9a50a Cleaned up debugging code 2022-07-01 11:39:43 -07:00
Mikayla Maki
8e4c54ab61 Checkpointing after some debugging 2022-07-01 11:38:12 -07:00
Keith Simmons
1572fef1c4
Merge pull request #1266 from zed-industries/fix-zombie-ra
Fix Zombie Language Servers
2022-07-01 10:20:27 -07:00
Antonio Scandurra
cf05738f68 Remove redundant calls to poll_snapshot 2022-07-01 14:40:39 +02:00
Antonio Scandurra
a42399bcf3 Grab latest snapshot when invoking LocalWorktree::poll_snapshot 2022-07-01 14:36:51 +02:00
Antonio Scandurra
833aa726d5 🎨 2022-07-01 14:11:21 +02:00
Antonio Scandurra
4d3c708387 Add simulate_random_delay to every implemented method in FakeDb 2022-07-01 12:05:29 +02:00
Antonio Scandurra
d36a4888db Ensure worktrees have been sent before responding with definitions
Changing the frequency at which we update worktrees highlighted a
problem in the randomized tests that was causing clients to receive
a definition to a worktree *before* observing the registration of
the worktree itself. This was most likely caused by #1224 because
the scenario that pull request enabled was the following:

- Guest requests a definition pointing to a non-existant worktree
- Server forwards the request to the host
- Host sends an `UpdateProject` message
- Host sends a response to the definition request
- Server observes the `UpdateProject` message and tries to acquire
  the store
- Given that we're waiting, the server goes ahead to process the
  response for the definition request, responding *before*
  `UpdateProject` is forwarded
- Server finally forwards `UpdateProject` to the guest

This commit ensures that, after forwarding a project request and getting a
response, we acquire a lock to the store again to ensure the project still
exists. This has the effect of ordering the forwarded request *after* any
message that was received prior to the response and for which we are still
waiting to acquire a lock to the store.
2022-07-01 11:45:30 +02:00
Mikayla Maki
ae836e1465 Fixed a major bug and now use the same cursor paint logic as the editor 2022-06-30 20:43:51 -07:00
Mikayla Maki
64d3dc32d2
Update terminal.rs
Whoopsies
2022-06-30 20:30:52 -07:00
Mikayla Maki
04e802874d
Merge pull request #1267 from zed-industries/terminal-fr
This pull request is small and doesn't include many changes to any existing functionality. In the interest of removing blockers ASAP, I will merge.
2022-06-30 20:12:08 -07:00
Mikayla Maki
bcf5351e64 Refactored and commented code to be my expressive 2022-06-30 20:02:16 -07:00
Mikayla Maki
092284b062 Fully functional background colors :D 2022-06-30 19:21:42 -07:00
Keith Simmons
ebe733a393 Restart language server using original root path rather than the path of the buffer restarted from 2022-06-30 19:11:21 -07:00
Max Brunsfeld
8a105bf12f WIP - try representing snapshots_to_send as a watch 2022-06-30 18:04:31 -07:00
Keith Simmons
832cc3dd19 Clear language server id for all worktrees when stopping a language server 2022-06-30 17:50:30 -07:00
Keith Simmons
6b50dda28a Fix failing test due to change in stop_language_server function 2022-06-30 17:40:50 -07:00
Keith Simmons
38ca4aab31 add assertion to test_definition ensuring no new language servers are created 2022-06-30 17:24:32 -07:00
Keith Simmons
37b75132b7 Minor comment change 2022-06-30 17:18:28 -07:00
Keith Simmons
f495185a4e add a comment explaining the three language server collections on project 2022-06-30 17:09:23 -07:00
Keith Simmons
5e7651e92e Kill starting servers as well as currently running ones 2022-06-30 17:00:29 -07:00
Keith Simmons
db05e32389 Prevent creating extra language server instances if there already exists one for that workspace 2022-06-30 16:46:26 -07:00
Max Brunsfeld
5fdbc38f46 Don't update worktrees' snapshots in the middle of processing fs events 2022-06-30 15:46:31 -07:00
Max Brunsfeld
b81135e10b Stop waiting for snapshot updates when disconnected from host 2022-06-30 15:07:40 -07:00
Max Brunsfeld
c5351a1276 Ensure that usernames, user ids, and client ids match in random collaboration test
This makes the logs easier to interpret
2022-06-30 14:51:22 -07:00
Keith Simmons
66486870aa Fix vim editor focus selection issues, cancel vim operators on escape and unbound keys 2022-06-30 12:36:02 -07:00
Mikayla Maki
2ee57c1512
Merge pull request #1255 from zed-industries/terminal-fr
WIP: Terminal
2022-06-30 11:30:28 -07:00
Antonio Scandurra
4ee8ee5a06 Ensure newer snapshots are always detected in wait_for_snapshot 2022-06-30 18:04:19 +02:00
Antonio Scandurra
484af8c7c4 Split worktree updates when a peer joins an already-shared project 2022-06-30 16:49:56 +02:00
Antonio Scandurra
845c79ee05 Respond to join project request before sharing project completes
This ensures the guest doesn't observe a huge delay when joining.
2022-06-30 14:29:06 +02:00
Antonio Scandurra
09bb3ddeb8 Split worktree updates and only send 256 entries at a time 2022-06-30 14:06:41 +02:00
Antonio Scandurra
5df0a6a425 Coalesce as many fs events as possible before processing them 2022-06-30 10:20:46 +02:00
Antonio Scandurra
b96962005e Keep looking for a newer snapshot before broadcasting it 2022-06-30 09:54:14 +02:00
Mikayla Maki
06107afdd4 Added background colors and matched the cursor color 2022-06-29 18:50:08 -07:00
Mikayla Maki
5bc0acd88c Directly qualified function makes cargo happy 2022-06-29 18:34:02 -07:00
Mikayla Maki
ab5247c62e Actually correctly flag tests 2022-06-29 18:31:52 -07:00
Mikayla Maki
75a4556244 Fixed unused import 2022-06-29 18:29:36 -07:00
Mikayla Maki
cde11fe4e7 Support for all 24 bits of colors 2022-06-29 18:27:27 -07:00
Max Brunsfeld
336d69fc61 Update contacts panel test to reflect new RPC message flow 2022-06-29 17:58:18 -07:00
Max Brunsfeld
b5d862abfe Only send one UpdateProject msg when changing project's online status 2022-06-29 17:58:02 -07:00
Max Brunsfeld
ae61a24ad3 Show LSP status and auto update status in one status bar indicator 2022-06-29 16:54:01 -07:00
Mikayla Maki
1c038b81ab Finished current working directory stuff 2022-06-29 16:22:05 -07:00
Max Brunsfeld
87124b959d
Merge pull request #1257 from zed-industries/vscode-pane-bindings
Adjust pane, tab, panel management bindings to match VS Code
2022-06-29 15:49:25 -07:00
Max Brunsfeld
67414deb82 Add split actions to the application menu 2022-06-29 15:40:32 -07:00
Max Brunsfeld
581c9af395 Adjust pane, tab, panel management bindings to match VS Code 2022-06-29 15:33:46 -07:00
Mikayla Maki
bc728c160d Properly fixed the issues with the grid :D 2022-06-29 13:19:25 -07:00
Mikayla Maki
93dfc63f1c Added a test with max, cludged a fix for resizing 2022-06-29 13:07:44 -07:00
Keith Simmons
c9d23dba6c Update command palette filter from vim mode more proactively 2022-06-29 11:58:12 -07:00
Mikayla Maki
ff44ddc077 Fixed warnings 😓 2022-06-29 09:38:02 -07:00
Antonio Scandurra
5eaa45363d Order by total duration in Db::get_top_users_activity_summary
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-06-29 18:28:43 +02:00
Antonio Scandurra
7bae759a02 Send extension counts when metadata changes
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-06-29 17:58:11 +02:00
Antonio Scandurra
d1cdacdf14 Skip ignored entries when recording worktree extensions
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-06-29 17:00:16 +02:00
Antonio Scandurra
639cd71a3b Record worktree extensions every 5 minutes
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-06-29 16:58:19 +02:00
Antonio Scandurra
f9e0fec396 Maintain extension counts on local worktrees
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-06-29 16:38:24 +02:00
Antonio Scandurra
09f4262fd4 Don't share a project unless it's online and we're allowing a request 2022-06-29 15:16:55 +02:00
Antonio Scandurra
e3cfc7b3ce Register project activity for offline projects as well 2022-06-29 14:55:04 +02:00
Antonio Scandurra
a52de770b1 Increase coalesce threshold in Db::get_user_activity_timeline 2022-06-29 14:26:02 +02:00
Mikayla Maki
db95c0d0e1 Removed dead clear code 2022-06-28 18:45:26 -07:00
Mikayla Maki
e3834409dd Fixed focus issues with scrolling and input 2022-06-28 18:28:13 -07:00
Mikayla Maki
38ed70d5cc Added theme support 2022-06-28 17:07:18 -07:00
Mikayla Maki
f28fb5797f Fixed scrolling and cursor location 2022-06-28 15:45:27 -07:00
Mikayla Maki
24d671ed3f First bits of polish 2022-06-28 15:45:27 -07:00
Mikayla Maki
2b1fa07e89 Working on selection 2022-06-28 15:45:27 -07:00
Mikayla Maki
9e55c60b6a working on selection and scrolling in terminals 2022-06-28 15:45:27 -07:00
Mikayla Maki
f58a15bbb1 Removed final stuff from theme.rs 2022-06-28 15:45:27 -07:00
Mikayla Maki
31bc758f35 Forgot to commit last night 2022-06-28 15:45:27 -07:00
Mikayla Maki
b36bf0c56d Finally on solid conceptual ground, able to move ahead confidently with Alacritty code 2022-06-28 15:45:27 -07:00
Max Brunsfeld
14d7375149 Add rest API for user activity timeline 2022-06-28 15:40:48 -07:00
Max Brunsfeld
1d10e45282 🎨 Tweak some names dealing with user activity
* Rename `project_activity_summary` to `top_users_activity_summary`
to make clearer the distinction between it and the per-user summary.
* Rename `user_activity_summary` to `user_activity_timeline`, since
its output is structured a bit differently than the courser-grained
"summary" returned by the top-user query.
* Rename `ActivityDuration` -> `ActivityPeriod`
2022-06-28 15:37:56 -07:00
Antonio Scandurra
5cc5e15f4d Implement Db::summarize_user_activity
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-06-28 15:11:34 -07:00
Max Brunsfeld
806da0e9ba 0.42.0 2022-06-28 14:33:19 -07:00
Keith Simmons
26215a0d6e
Merge pull request #1254 from zed-industries/command-palette-filter
Command palette filter
2022-06-28 14:31:21 -07:00
Max Brunsfeld
fc3ec6966b
Merge pull request #1235 from zed-industries/diagnostics-in-hidden-worktrees
Allow diagnostics to be published for hidden worktrees
2022-06-28 14:29:41 -07:00
Max Brunsfeld
8fe6809932 Exclude hidden worktrees from project's diagnostic summaries 2022-06-28 14:23:24 -07:00
Keith Simmons
cea7d3f5a2 add test for filter 2022-06-28 13:45:34 -07:00
Keith Simmons
f6292437fa Add command palette filter global and update it when vim mode is enabled/disabled 2022-06-28 13:35:43 -07:00
Max Brunsfeld
f05e94d0de Allow diagnostics to be published for hidden worktrees 2022-06-28 13:31:04 -07:00
Max Brunsfeld
fae1cc36d6 In most languages, use prev non-empty line as basis for preserving indent 2022-06-28 12:21:54 -07:00
Antonio Scandurra
431d71fe92 v0.41.0 2022-06-28 11:21:06 +02:00
Antonio Scandurra
a53de67e6f
Merge pull request #1247 from zed-industries/ignore-non-created-progress-tokens
Ignore tokens that were not created via `WorkDoneProgressCreate`
2022-06-28 10:14:42 +02:00
Antonio Scandurra
6cf9514e00
Merge pull request #1246 from zed-industries/python-autoindent
Fix Python auto-indent using new auto-indent features
2022-06-28 10:14:22 +02:00
Antonio Scandurra
ca1d0a6e59 Ignore tokens that were not created via WorkDoneProgressCreate
With the new version of rust-analyzer, we were seeing stray `WorkDoneProgress::End`
messages that create an imbalance in the `pending_diagnostic_updates` that never
resolves. This was causing the diagnostic status bar item to never update because
we wouldn't emit `DiskBasedDiagnosticsStarted` nor `DiskBasedDiagnosticsFinished`.

This commit fixes the above situation by only acknowledging progress report for tokens
that have explicitly been created via the `WorkDoneProgressCreate` request, as stated
by the protocol.

In addition to that, we are replacing the `pending_diagnostic_updates: isize` with
a `has_pending_diagnostic_updates: bool`. We added it at some point to prevent a similar
issue where we would observe begin/end reports in a seemingly random order, which would cause
us to permanently display a `checking...` message in the status bar. I believe this commit
fixes that as well because the `isize` was just a less general solution for the same
underlying issue. As the protocol states: "the token provided in the create request should
only be used once (e.g. only one begin, many report and one end notification should be sent
to it)."
2022-06-28 10:08:43 +02:00
Antonio Scandurra
c127eb56ce
Merge pull request #1241 from zed-industries/reopen-closed-item
Introduce `pane::ReopenClosedItem` bound to `cmd-shift-t`
2022-06-28 08:09:03 +02:00
Antonio Scandurra
57f34c6992 💄 2022-06-28 08:04:39 +02:00
Max Brunsfeld
929615964d Add new indentation features to support Python 2022-06-27 22:34:14 -07:00
Keith Simmons
1eb8351440 add hover popover setting 2022-06-27 16:21:22 -07:00
Keith Simmons
a477733bcb Address hover panic and add hint to install go when language server failed to install 2022-06-27 15:48:15 -07:00
Keith Simmons
bc82d98ae5
Merge pull request #1237 from zed-industries/jump-to-definition
Mouse jump to definition
2022-06-27 15:20:07 -07:00
Max Brunsfeld
095f18d661 Upgrade Tree-sitter, Tree-sitter-python 2022-06-27 15:12:31 -07:00
Keith Simmons
f73af85218 bump protocol version and fix panic from storing display points instead of anchors 2022-06-27 15:10:36 -07:00
Keith Simmons
a0577f5f46 Fix usage of existing definitions 2022-06-27 10:07:44 -07:00
Antonio Scandurra
c6e7ae528f Add test for reopening closed items 2022-06-27 17:59:25 +02:00
Antonio Scandurra
0652542f60 Introduce pane::ReopenClosedItem bound to cmd-shift-t 2022-06-27 17:44:33 +02:00
Antonio Scandurra
7bfd7093b1 Don't stop scanning directory if reading one of the children errors 2022-06-27 08:40:37 +02:00
Keith Simmons
a8ea1048cf Change mouse cursor when link is visible 2022-06-24 21:55:57 -07:00
Keith Simmons
a190eb0537 fix rebase merge error 2022-06-24 15:11:57 -07:00
Keith Simmons
92ab107fc9 working jump to definition with tests 2022-06-24 15:09:31 -07:00
Keith Simmons
848445455d Working underline based on symbol origin 2022-06-24 15:05:35 -07:00
Keith Simmons
4286a9b564 wip 2022-06-24 15:03:24 -07:00
Keith Simmons
f78b55f92d wip 2022-06-24 15:03:24 -07:00
Nathan Sobo
4da3005b5c Allow users with no invites to be fetched from the API 2022-06-24 09:57:52 -06:00
Antonio Scandurra
b0eb692760 WIP 2022-06-24 17:21:58 +02:00
Antonio Scandurra
9fcebe783c
Merge pull request #1236 from zed-industries/reduce-server-memory-footprint
Reduce memory footprint on server
2022-06-24 09:34:04 +02:00
Antonio Scandurra
fc5517b6be Gather metrics only when /metrics endpoint is retrieved 2022-06-24 09:28:52 +02:00
Antonio Scandurra
a04adbcac1 Don't trace message payload 2022-06-24 09:27:22 +02:00
Max Brunsfeld
4f643baeee 0.40.0 2022-06-23 13:29:32 -07:00
Max Brunsfeld
c91451a1b2
Merge pull request #1234 from zed-industries/fix-editor-cloning
Clone fold and selection state correctly when splitting an editor
2022-06-23 13:27:40 -07:00
Max Brunsfeld
fb2a7787a1 Clone fold and selection state correctly when splitting an editor 2022-06-23 13:15:50 -07:00
Keith Simmons
755636d10e Use NonZeroU32 to ensure settings tabsize cannot be zero 2022-06-23 12:55:38 -07:00
Max Brunsfeld
1720933597
Merge pull request #1228 from zed-industries/python
Add Python support
2022-06-23 11:25:18 -07:00
Max Brunsfeld
dc056fc46f Treat .pyi files as Python 2022-06-23 11:14:11 -07:00
Max Brunsfeld
4d4db6ec4b Syntax-highlight Python project symbols and completions 2022-06-23 11:14:01 -07:00
Max Brunsfeld
981e53784d Upgrade tree-sitter-python for error recovery improvement 2022-06-23 11:13:30 -07:00
Antonio Scandurra
555847449b Use BTreeMap in Server so we release memory when maps are cleared
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-06-23 18:02:17 +02:00
Antonio Scandurra
2cb8a3ccfb Don't override top-level settings with language defaults
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-06-23 16:40:57 +02:00
Antonio Scandurra
90102f22fd Improve testing of window edit state 2022-06-23 14:41:47 +02:00
Antonio Scandurra
a21dbdd0d6 Update window edited status when pane item is removed 2022-06-23 14:28:10 +02:00
Antonio Scandurra
2dae0ddcdb Add test to verify closing window via the mouse 2022-06-23 14:18:53 +02:00
Antonio Scandurra
d9b5357234 Always prevent window from closing and manually invoke Workspace::close
This ensures we ask the user to save their state if there are unsaved
changes.
2022-06-23 11:44:14 +02:00
Antonio Scandurra
06033d7fa9 Introduce ViewContext::on_window_should_close
This is a new callback that can be used to interrupt closing the window
when the user has unsaved changes.
2022-06-23 11:43:19 +02:00
Antonio Scandurra
ca8ddcdeec Set window's edited = true when there are unsaved changes 2022-06-23 10:59:50 +02:00
Antonio Scandurra
01349e1d42 Fix panic when Text contained carriage returns 2022-06-23 10:21:21 +02:00
Max Brunsfeld
11f73bfa4e Integrate pyright language server 2022-06-22 16:58:19 -07:00
Max Brunsfeld
c0dbd8f9b9 Add python outline and bracket queries 2022-06-22 16:28:09 -07:00
Max Brunsfeld
074caa09c2 Make python indent query more general
Upgrade Tree-sitter for a query bugfix that I found while
writing this indent query.
2022-06-22 16:18:52 -07:00
Max Brunsfeld
4cb68b2966 Prioritize keepalive pings over incoming message handling in Peer 2022-06-22 14:44:05 -07:00
Max Brunsfeld
36f8c68099 Remove redundant run_until_parked call in Foreground::advance_clock 2022-06-22 14:43:21 -07:00
Max Brunsfeld
a14b626927 Enable env log in peer tests 2022-06-22 14:42:20 -07:00
Antonio Scandurra
2d8ffbdfa2 Don't wait for host's worktree updates if they disconnected
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-06-22 19:45:55 +02:00
Antonio Scandurra
48ff443d10 Remove stray log statement when contacts are updated
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-06-22 19:40:52 +02:00
Antonio Scandurra
f2d134917e Remove non-determinism from Peer caused by smol's timeout helper 2022-06-22 18:39:12 +02:00
Antonio Scandurra
071d940a88 Ensure receive timeout is triggered before waiting on disconnection 2022-06-22 18:02:42 +02:00
Antonio Scandurra
9b521d6097 Use Arc<Deterministic> to understand which await points are parking 2022-06-22 17:39:34 +02:00
Antonio Scandurra
62521531a6 💄 2022-06-22 15:06:22 +02:00
Antonio Scandurra
fb2590d913 Use a FuturesUnordered to process foreground messages
This prevents deadlocks when e.g., client A performs a request to client B and
client B performs a request to client A. If both clients stop processing further
messages until their respective request completes, they won't have a chance to
respond to the other client's request and cause a deadlock.

This arrangement ensures we will attempt to process earlier messages first, but fall
back to processing messages arrived later in the spirit of making progress.
2022-06-22 15:04:17 +02:00
Antonio Scandurra
6eb3e72c36 Add test demonstrating hang when peers wait on each other's response 2022-06-22 14:41:14 +02:00
Antonio Scandurra
2f09a4af16 Update project metadata when releasing a worktree's weak handle
When a project was getting unshared, we would remove invisible worktrees
from the project's state without notifying the server, which was causing
the randomized tests to fail.

This commit calls `Project::remove_worktree` when a worktree's handle gets
released. Doing so ensures that we update both our local metadata database
as well as the state on the server.
2022-06-22 10:26:10 +02:00
Max Brunsfeld
34351c0a51 Start work on Python support 2022-06-21 17:04:54 -07:00
Keith Simmons
484e98c0bb
Merge pull request #1216 from zed-industries/hover-context-menu-fix
Don't trigger hover popover action when mouse is over context menu
2022-06-21 13:43:24 -07:00
Keith Simmons
19feb627d8
Add comment linking to long term plan 2022-06-21 12:38:27 -07:00
Max Brunsfeld
dc8d5f4ae3
Merge pull request #1217 from zed-industries/fix-lsp-statuses-for-guests
Report running language servers when sharing project for the first time
2022-06-21 11:50:58 -07:00
Antonio Scandurra
83f38aa1ba
Merge pull request #1215 from zed-industries/suggest-upgrade-on-reconnect
Show upgrade required message when reconnecting after a protocol change
2022-06-21 20:41:36 +02:00
Antonio Scandurra
69aa3d848e Report running language servers when sharing project for the first time
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-06-21 20:39:54 +02:00
Max Brunsfeld
e9d19457d6 Add failing test for replication of lsp statuses
Co-authored-by: Antonio Scandurra <me@as-cii.com>
2022-06-21 11:27:08 -07:00
Keith Simmons
057a7ec989 Don't trigger hover popover action when mouse is over context menu 2022-06-21 11:23:25 -07:00
Max Brunsfeld
30d75620f1 Fix error when worktree has no file extensions
Co-authored-by: Antonio Scandurra <me@as-cii.com>
2022-06-21 11:02:13 -07:00
Keith Simmons
fb881b2eda hide hover on editor blur 2022-06-21 10:37:59 -07:00
Max Brunsfeld
6a2c5e0dc1 Show upgrade required message when reconnecting after a protocol change
Co-authored-by: Antonio Scandurra <me@as-cii.com>
2022-06-21 10:26:34 -07:00
Antonio Scandurra
db77601aa2 Expose project metadata via GET /project_metadata 2022-06-21 18:06:31 +02:00
Antonio Scandurra
ebaf3224fd Exclude staff from activity recording 2022-06-21 16:07:59 +02:00
Antonio Scandurra
c90e8c08a6 Accept a datetime range when querying project activity 2022-06-21 14:03:10 +02:00
Antonio Scandurra
95a629d200 Unregister project from db when user disconnects or manually does so 2022-06-21 10:37:34 +02:00
Antonio Scandurra
7acebc4eb8 Register projects in the database and record worktree extensions 2022-06-21 10:29:26 +02:00
Max Brunsfeld
44160869eb Add an API that returns the most active users and the projects where they've been active 2022-06-20 19:46:37 -07:00
Antonio Scandurra
0e20782b53 Highlight files ending in mdx as Markdown
This is clearly a stopgap solution but it'll make our life easier
while hacking on zed.dev.
2022-06-20 15:53:45 +02:00
Antonio Scandurra
d425d9fa64 Allow wrapping selected text with ' in Rust 2022-06-20 11:56:46 +02:00
Antonio Scandurra
6040429f93 Auto-close ' for TypeScript and don't do so for Rust 2022-06-20 11:55:40 +02:00
Antonio Scandurra
d5efae609e Respect close in language configuration when autoclosing bracket 2022-06-20 11:50:44 +02:00
Antonio Scandurra
d6c630f8eb Add missing auto-close brackets from various languages 2022-06-20 11:38:12 +02:00
Antonio Scandurra
137a3996a1 Replace "Remove Folder from Project" label with "Remove from Project` 2022-06-20 10:53:26 +02:00
Max Brunsfeld
71534d4412 Avoid holding a strong project handle in an on_click callback 2022-06-17 15:41:48 -07:00
Max Brunsfeld
6359535c52 v0.39.0 2022-06-17 14:22:49 -07:00
Antonio Scandurra
a35d7c5e15 Use BOOL instead of Rust booleans in handle_key_equivalent 2022-06-17 17:19:18 +02:00
Antonio Scandurra
8f6d081de8 Override performKeyEquivalent to handle key events
This lets us bypass the application menu and invoke the event handler
in Zed first. If that doesn't handle the event, the application menu
item corresponding to the shortcut will be actioned. Prior to this
commit the opposite would happen, which would dramatically limit the
throughput at which we could handle events.
2022-06-17 17:12:56 +02:00
Antonio Scandurra
607903eed5 Return true in the Window::on_event callback if event was handled 2022-06-17 17:09:16 +02:00
Antonio Scandurra
ae2273b40a
Merge pull request #1204 from zed-industries/accurate-is-dirty
Determine `Buffer::is_dirty` based on the rope's fingerprint
2022-06-17 16:08:07 +02:00
Antonio Scandurra
4f215a77cd Don't compute fingerprint for every text summary 2022-06-17 15:15:27 +02:00
Antonio Scandurra
5654684d30 Fix editor tests after changing the semantics of is_dirty 2022-06-17 12:57:40 +02:00
Antonio Scandurra
052222c91c Bump protocol version 2022-06-17 12:39:59 +02:00
Antonio Scandurra
6f7a893ec9 Determine Buffer::is_dirty based on the rope's fingerprint 2022-06-17 12:38:25 +02:00
Antonio Scandurra
c31a233aad Introduce a new fingerprint field to TextSummary
This is calculated in `Rope` and uses the `bromberg_sl2` homomorphic
hash function to determine the fingerprint of a single chunk and
compose each chunk fingerprint into a single fingerprint for the entire
rope that is equivalent to hashing all the rope's bytes at once.
2022-06-17 12:12:37 +02:00
Max Brunsfeld
21ecbce9b8 Add a Zed > Preferences submenu with prefs, bindings, theme 2022-06-16 17:50:44 -07:00
Max Brunsfeld
2c61bc2b1f Always use capital letters when rendering a keystroke 2022-06-16 17:48:10 -07:00
Max Brunsfeld
a3b17ffd15 Allow creating application menus with submenus 2022-06-16 17:47:39 -07:00
Max Brunsfeld
216a275ef2 Disable auto-indent entirely for markdown 2022-06-16 14:20:09 -07:00
Max Brunsfeld
dd7b874039 Return focus to the workspace center on escape 2022-06-16 11:30:02 -07:00
Antonio Scandurra
cef85f5d84
Merge pull request #1198 from zed-industries/keyboard-toggle-search-options
Toggle search options via the keyboard
2022-06-16 14:49:37 +02:00
Antonio Scandurra
88d8696414 Display tooltip for select prev/next match buttons 2022-06-16 14:37:33 +02:00
Antonio Scandurra
649185da9c Allow toggling search options via the command palette 2022-06-16 14:28:37 +02:00
Antonio Scandurra
29e57c8e3c Toggle project search options via the keyboard 2022-06-16 14:18:45 +02:00
Antonio Scandurra
d0d6c27ae9 Don't select next match when toggling buffer search option 2022-06-16 14:06:47 +02:00
Antonio Scandurra
a835dcefa2 Toggle buffer search options via the keyboard 2022-06-16 13:44:00 +02:00
Antonio Scandurra
dc75b70724 Use word boundaries instead of syntax to infer completion edit ranges 2022-06-16 11:27:22 +02:00
Antonio Scandurra
35889add40 Add failing test for wrong typescript completion 2022-06-16 11:26:35 +02:00
Antonio Scandurra
edd758eb67 Cap context menu's width to cover at most 70% of the window 2022-06-16 10:40:12 +02:00
Antonio Scandurra
e09a6890f3 Remove unnecessary dependencies from lsp_status crate 2022-06-16 10:02:23 +02:00
Antonio Scandurra
4e4210ac39 Open a buffer for every language server error when clicking on status 2022-06-16 10:00:29 +02:00
Antonio Scandurra
d02bc2f9f8 Add tooltip for project diagnostics 2022-06-15 17:12:47 +02:00
Antonio Scandurra
516bd13474 Add tooltip to follow collaborators 2022-06-15 17:08:39 +02:00
Antonio Scandurra
8a146e49ca Use a different fit mode for tooltips 2022-06-15 16:45:04 +02:00
Antonio Scandurra
f2a48c6b02 Add tooltips for sidebar buttons 2022-06-15 13:50:04 +02:00
Antonio Scandurra
4750727586 Autoscroll to newest selection when adding it via the cursor 2022-06-15 13:21:01 +02:00
Antonio Scandurra
da1eb91935 Replace pane::Split action with Split{Left,Up,Right,Down}
This allows us to show them in the command palette.
2022-06-15 13:06:59 +02:00
Antonio Scandurra
7a81983c62 Fix surrounding text with bracket pairs with multiple selections
This was probably a regression that was introduced with the new batched
`Buffer::edit` API and was caused by providing selection ranges in a
non-ordered fashion (we were passing all the starts first and then all the
ends).

With this commit we are adding a unit test to verify the behavior of
`Editor::surround_with_bracket_pair` and changing the order in which
we pass edit ranges to respect the selection order.
2022-06-15 11:48:21 +02:00
Antonio Scandurra
197a4342d0 Fix tests 2022-06-15 11:16:26 +02:00
Antonio Scandurra
a85f9e74b1 Harvest the latest metrics when /metrics is requested
Now that we track active projects, if nothing happens to the store
during the activity timeout we would still serve some old metrics
that may not account for the staleness of a project.

This commit changes it so that we grab a mutable reference to the store
before serving the metrics, which has the side effect of updating
all the metrics.
2022-06-15 10:54:51 +02:00
Antonio Scandurra
e373e05d27 🎨 2022-06-15 10:42:37 +02:00
Antonio Scandurra
3a1d0dd692 Track active projects in metrics
An active project is defined as a project where there has been at
least a buffer edit, a join request/response, or a follow update
in the last minute.
2022-06-15 10:33:20 +02:00
Antonio Scandurra
6d93a41f40 Exclude admins from collected metrics 2022-06-14 16:26:00 +02:00
Antonio Scandurra
f89977ba41 Bump protocol version 2022-06-14 15:21:37 +02:00
Antonio Scandurra
68093342e7 Broadcast only visible worktree root names 2022-06-14 15:15:23 +02:00
Antonio Scandurra
cfbd8b94d1 Prevent setting files from showing up in project and contacts panels 2022-06-14 14:47:16 +02:00
Antonio Scandurra
5dd28b7e57 🎨 2022-06-14 14:03:25 +02:00
Antonio Scandurra
a5a4246e6c Attempt to open new entry only if it is a file 2022-06-14 14:01:49 +02:00
Antonio Scandurra
572e295854 Open files in project panel using enter instead of right 2022-06-14 13:56:56 +02:00
Antonio Scandurra
146e2b5089 Open files when creating them in project panel 2022-06-14 13:49:47 +02:00
Antonio Scandurra
76da93d260
Merge branch 'main' into users-api 2022-06-14 11:14:16 +02:00
Antonio Scandurra
49d7b4bc12 Allow specifying query, limit and page when hitting /api/users
This is needed to introduce pagination and search in our admin panel.
2022-06-13 17:30:01 +02:00
Antonio Scandurra
fe1a861bf3 Expose a new POST /api/bulk_users API to create many users at once
This API will accept a vector of JSON entries containing the GitHub login,
the email address and the invite count. If that user already exist, the
invite count will be updated to the new one.
2022-06-13 15:18:18 +02:00
Antonio Scandurra
b1e8e81513
Merge pull request #1172 from zed-industries/more-logs
Add more logging to `collab` to better understand user behavior
2022-06-13 09:22:37 +02:00
Antonio Scandurra
502625c570 Exclude ignored files from the logged extension count 2022-06-13 09:16:16 +02:00
Antonio Scandurra
dcdc6311df Don't retain message payloads in span, just log the payload instead 2022-06-13 09:06:58 +02:00
Antonio Scandurra
3b8388dcdd Log extension counts when worktree is updated 2022-06-13 08:57:21 +02:00
Max Brunsfeld
1bc2bc0e95
Merge pull request #1171 from zed-industries/prompt-save-before-quit
Prompt to save changes before quitting the app
2022-06-10 17:32:57 -07:00
Max Brunsfeld
b9eb875bf4 Prompt to save changes before quitting the app 2022-06-10 17:26:33 -07:00
Max Brunsfeld
e2935100db Move prometheus annotations from deployment to pod spec 2022-06-10 14:32:36 -07:00
Max Brunsfeld
2311534c3c Add DataDog OpenMetrics annotations to collab k8s deployment
Co-authored-by: Antonio Scandurra <me@as-cii.com>
2022-06-10 13:35:52 -07:00
Max Brunsfeld
2e6fa889ea Add OpenMetrics endpoint exposing the basic RPC store metrics as guages
Co-authored-by: Antonio Scandurra <me@as-cii.com>
2022-06-10 13:32:56 -07:00
Max Brunsfeld
4032e517f9 v0.38.0 2022-06-10 10:19:21 -07:00
Antonio Scandurra
63fdf1398a WIP: Start adding more logs 2022-06-10 18:17:02 +02:00
Antonio Scandurra
f91fb48a4c Simplify EditorElement::layout_blocks 2022-06-10 13:57:43 +02:00
Antonio Scandurra
666ea61dbc Introduce a new BlockStyle field for blocks
This new field allows blocks to specify how they want to be laid out:

- If `Fixed` they can take up all the width they want and they will impact
the scroll width of the editor. This is useful for diagnostic messages and
allows scrolling the editor further to the right to visualize the entire message.
- If `Flex` they can extend all the way to the scroll width without impacting it
any further. This is useful for the rename editor that we insert as a block
decoration when hitting `F2`.
- If `Sticky`, they will be as wide as the editor element and won't participate
in the horizontal scrolling of the editor. This is useful for headers in general,
where we want e.g. the filename and the jump button to always be visible
independently of how much the user has scrolled to the right.
2022-06-10 13:47:40 +02:00
Keith Simmons
02f0fee6ae Always delay hover display 2022-06-09 18:08:23 -07:00
Keith Simmons
e21d1b1acb Merge fix 2022-06-09 17:07:32 -07:00
Keith Simmons
3cec157335 fix compile error in EditorLspTestContext 2022-06-09 17:03:45 -07:00
Keith Simmons
8378590d57 Test fixes 2022-06-09 17:03:45 -07:00
Keith Simmons
93158bfcff Fix delayed lsp request 2022-06-09 17:03:45 -07:00
Keith Simmons
722023e347 test and build fixes 2022-06-09 17:03:45 -07:00
Keith Simmons
dddfc7beae Add hover test and tweak dismiss logic 2022-06-09 17:03:45 -07:00