Commit Graph
478 Commits
Author SHA1 Message Date
Julia 6633c0b328 Perform initial file load git diff async 2022-09-29 13:16:02 -04:00
Julia 6825b6077a Properly invalidate when async git diff completes 2022-09-29 13:16:02 -04:00
Julia 9c82954877 Changed diffs to be async and dropped git delay 2022-09-29 13:16:02 -04:00
JuliaandMikayla Maki c4da8c46f7 Disable unnecessary libgit2 cargo features
Co-Authored-By: Mikayla Maki <mikayla@zed.dev>
2022-09-29 13:16:02 -04:00
Julia b9d84df127 Track buffer row divergence while iterating through diff lines
This allows for offsetting head row index of deleted lines to normalize
into buffer row space
2022-09-29 13:16:02 -04:00
Julia 446bf88655 Use row range while building buffer range during diff line iteration 2022-09-29 13:16:02 -04:00
Julia 03b6f3e0bf Reorganize for for purely file level invalidation 2022-09-29 13:16:02 -04:00
Julia e72e132ce2 Clear out commented code & once again perform full file diff on update 2022-09-29 13:16:02 -04:00
Julia c1249a3d84 Handle deletions more robustly and correctly 2022-09-29 13:16:02 -04:00
Julia 96917a8007 Small clean 2022-09-29 13:16:02 -04:00
Julia 2f7283fd13 buffer_divergence doesn't seem to be a concept that needs to be tracked 2022-09-29 13:16:02 -04:00
Julia e0ea932fa7 Checkpoint preparing for a more organized approach to incremental diff 2022-09-29 13:16:02 -04:00
Julia 4b2040a7ca Move diff logic back into BufferDiff::update 2022-09-29 13:16:02 -04:00
JuliaandMax Brunsfeld a2e8fc79d9 Switch head range from row range to byte offset range
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-09-29 13:16:02 -04:00
JuliaandMax Brunsfeld 61ff24edc8 Move cloneable diff state into new snapshot type
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-09-29 13:16:02 -04:00
Julia a86e93d46f Checkpoint on incremental diff sumtree shenanigans 2022-09-29 13:16:02 -04:00
JuliaandMax Brunsfeld 883d5b7a08 Update git gutter status after debounced delay
Co-authored-by: Max Brunsfeld <max@zed.com>
2022-09-29 13:16:02 -04:00
Julia fdda2abb78 Correct start/end of git diff hunks 2022-09-29 13:16:02 -04:00
JuliaandMax Brunsfeld 55ca02351c Start painting some sort of hunk info, it's wrong but it's close
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-09-29 13:16:01 -04:00
ForLoveOfCats 2a14af4cde Load a file's head text on file load just to get started 2022-09-29 13:16:01 -04:00
Max Brunsfeld 0777af1dd3 Fix crash when querying for enclosing brackets at EOF 2022-09-02 10:23:46 -07:00
Mikayla Maki ebae991cb2 Finished terminal search 2022-09-01 13:45:46 -07:00
Max Brunsfeld d4bbf21650 Merge pull request #1559 from zed-industries/language-injection
Add language injection support
2022-08-30 11:54:00 -07:00
Max Brunsfeld a38c6015db Fix bugs in SyntaxMap::interpolate found by the randomized test 2022-08-29 16:52:58 -07:00
Max Brunsfeld 1746ec573a Check invariants after interpolating tree in random syntax map test 2022-08-29 16:16:11 -07:00
Max Brunsfeld 74a2b093ab Start work on randomized test for SyntaxMap, fix discovered bugs 2022-08-25 17:49:39 -07:00
Max Brunsfeld 1f12186e3c Update to latest tree-sitter commit
This is needed for https://github.com/tree-sitter/tree-sitter/pull/1845
2022-08-25 10:58:46 -07:00
Max Brunsfeld 61b70b7e2d Fix re-parsing when buffer's language has changed 2022-08-24 15:32:42 -07:00
Max Brunsfeld 015b6c4a31 Fix test about auto-indent with no indent query 2022-08-24 15:29:07 -07:00
Max Brunsfeld b3f4c73264 Clean up some of buffer's syntax-related methods 2022-08-24 15:11:26 -07:00
Max Brunsfeld 3245e4f8d7 Fix out-of-range panic when requesting outline items at EOF 2022-08-24 15:10:53 -07:00
Max Brunsfeld 587175d0ea Update syntax map's interpolated version when a parse completes 2022-08-24 15:09:10 -07:00
Max Brunsfeld ced45cbb0a Use SyntaxMap in Buffer 2022-08-24 13:00:27 -07:00
Max Brunsfeld 9113c94371 Add SyntaxMap methods for running queries and combining their results 2022-08-23 14:26:09 -07:00
Max Brunsfeld 71e17a54ae Fix case where layers were processed linearly when reparsing 2022-08-23 09:38:03 -07:00
Antonio Scandurra f0d35ccc50 Move operation serialization off the main thread 2022-08-23 16:34:25 +02:00
Antonio Scandurra 954695f5fe Stream buffer ops in the background when creating buffer for peers 2022-08-23 16:05:56 +02:00
Antonio Scandurra ec48ffc9da Simplify proto::Buffer to express its fields in terms of operations 2022-08-23 12:40:20 +02:00
Max Brunsfeld ae9e1338f6 Fix more bugs in syntax map interpolation 2022-08-22 17:52:14 -07:00
Max Brunsfeld 58fda5ac1c Test more editing patterns of SyntaxMap, fix bugs 2022-08-22 15:36:58 -07:00
Max Brunsfeld e8548e7732 Restructure handling of changed regions when reparsing 2022-08-21 11:39:02 -07:00
Max Brunsfeld 5209e2d68c Fix off-by-one in handling edits, start on more edit unit tests 2022-08-21 11:37:17 -07:00
Max Brunsfeld 02f8705f2e Start work on handling edits in the SyntaxMap 2022-08-21 11:37:10 -07:00
Max Brunsfeld f6a817a0f3 Start work on a SyntaxMap data structure 2022-08-21 11:37:10 -07:00
Antonio Scandurra 9c9bf07e40 Create buffers for remote collaborators out of band
Previously, we would use `Project::serialize_buffer_for_peer` and
`Project::deserialize_buffer` respectively in the host and in the
guest to create a new buffer or just send its ID if the host thought
the buffer had already been sent.

These methods would be called as part of other methods, such as
`Project::open_buffer_by_id` or `Project::open_buffer_for_symbol`.
However, if any of the tasks driving the futures that eventually
called `Project::deserialize_buffer` were dropped after the host
responded with the buffer state but (crucially) before the guest
deserialized it and registered it, there could be a situation where
the host thought the guest had the buffer (thus sending them just the
buffer id) and the guest would wait indefinitely.

Given how crucial this interaction is, this commit switches to creating
remote buffers for peers out of band. The host will push buffers to guests,
who will always refer to buffers via IDs and wait for the host to send them,
as opposed to including the buffer's payload as part of some other operation.
2022-08-17 11:55:36 +02:00
Antonio Scandurra ab236a6008 Fix divergence bug in undo/redo
As part of #1405, we changed the way we performed undo and redo to
support combining transactions that were not temporally adjacent for
IME purposes.

We introduced a bug with that release that caused divergence
when performing undo: the bug was caused by only changing the visibility
of fragments whose insertion id was contained in the undo operation. However,
an undo operation also affects deletions which we were mistakenly not
considering. Randomized tests caught this but I guess we didn't run enough
of them.
2022-08-17 11:30:04 +02:00
K Simmons 9aa3f2d777 clippy fixes for focus change 2022-08-10 16:51:01 -07:00
ForLoveOfCatsandMikayla 8ba2f77148 One big cleanup pass of clippy lints
Co-authored-by: Mikayla <mikayla@zed.dev>
2022-08-10 16:51:01 -07:00
Julia 8115c1ab24 Merge pull request #1451 from zed-industries/tab-auto-indent
Auto-indent on tab for cursors left of the suggested indent level
2022-08-02 15:52:12 -04:00
Antonio Scandurra 71128d2ee6 Compute diffs based on characters rather than lines
Previously, a change on a given line would cause that whole line to be
replaced. In turn, this caused anchors on that line to go to the start
of that line because they would lie inside of a deleted region after applying
the diff.

By switching to a character-wise diff, we perform smaller edits to the buffer
which stabilizes anchor positions.
2022-08-02 16:52:37 +02:00