diff --git a/Cargo.lock b/Cargo.lock index 22f1b33b459f16fc1678e8973d52007ec0f0281e..e187738528ec956c8ae78fc3cb095965b1ffb5b5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -25,11 +25,11 @@ checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" [[package]] name = "ahash" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43bb833f0bf979d8475d38fbf09ed3b8a55e1885fe93ad3f93239fc6a4f17b98" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "getrandom 0.2.2", + "getrandom 0.2.6", "once_cell", "version_check", ] @@ -43,15 +43,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "ansi_term" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" -dependencies = [ - "winapi 0.3.9", -] - [[package]] name = "ansi_term" version = "0.12.1" @@ -81,9 +72,9 @@ checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] name = "arrayvec" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4dc07131ffa69b8072d35f5007352af944213cde02545e2103680baed38fcd" +checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" [[package]] name = "ascii" @@ -124,9 +115,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.3.12" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2bf394cfbbe876f0ac67b13b6ca819f9c9f2fb9ec67223cceb1555fbab1c31a" +checksum = "345fd392ab01f746c717b1357165b76f0b67a60192007b234058c9045fdcf695" dependencies = [ "flate2", "futures-core", @@ -137,16 +128,16 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb877970c7b440ead138f6321a3b5395d6061183af779340b65e20c0fede9146" +checksum = "871f9bb5e0a22eeb7e8cf16641feb87c9dc67032ccf8ff49e772eb9941d3a965" dependencies = [ "async-task", "concurrent-queue", "fastrand", "futures-lite", "once_cell", - "vec-arena", + "slab", ] [[package]] @@ -162,42 +153,40 @@ dependencies = [ [[package]] name = "async-io" -version = "1.3.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9315f8f07556761c3e48fec2e6b276004acf426e6dc068b2c2251854d65ee0fd" +checksum = "e5e18f61464ae81cde0a23e713ae8fd299580c54d697a35820cfd0625b8b0e07" dependencies = [ "concurrent-queue", - "fastrand", "futures-lite", "libc", "log", - "nb-connect", "once_cell", "parking", "polling", - "vec-arena", + "slab", + "socket2", "waker-fn", "winapi 0.3.9", ] [[package]] name = "async-lock" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6a8ea61bf9947a1007c5cada31e647dbc77b103c679858150003ba697ea798b" +checksum = "e97a171d191782fba31bb902b14ad94e24a68145032b7eedf871ab0bc0d077b6" dependencies = [ "event-listener", ] [[package]] name = "async-net" -version = "1.5.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06de475c85affe184648202401d7622afb32f0f74e02192857d0201a16defbe5" +checksum = "5373304df79b9b4395068fb080369ec7178608827306ce4d081cba51cac551df" dependencies = [ "async-io", "blocking", - "fastrand", "futures-lite", ] @@ -212,15 +201,16 @@ dependencies = [ [[package]] name = "async-process" -version = "1.0.2" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef37b86e2fa961bae5a4d212708ea0154f904ce31d1a4a7f47e1bbc33a0c040b" +checksum = "cf2c06e30a24e8c78a3987d07f0930edf76ef35e027e7bdb063fccafdad1f60c" dependencies = [ "async-io", "blocking", "cfg-if 1.0.0", "event-listener", "futures-lite", + "libc", "once_cell", "signal-hook", "winapi 0.3.9", @@ -278,9 +268,9 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.50" +version = "0.1.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b98e84bbb4cbcdd97da190ba0c58a1bb0de2c1fdf67d159e192ed766aeca722" +checksum = "96cf8829f67d2eab0b2dfa42c5d0ef737e0724e4a82b01b3e292456202b19716" dependencies = [ "proc-macro2", "quote", @@ -312,11 +302,11 @@ dependencies = [ [[package]] name = "atomic" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3410529e8288c463bedb5930f82833bc0c90e5d2fe639a56582a4d09220b281" +checksum = "b88d82667eca772c4aa12f0f1348b3ae643424c8876448f3f7bd5787032e234c" dependencies = [ - "autocfg 1.0.1", + "autocfg 1.1.0", ] [[package]] @@ -360,21 +350,24 @@ dependencies = [ [[package]] name = "autocfg" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" +checksum = "0dde43e75fd43e8a1bf86103336bc699aa8d17ad1be60c76c0bdfd4828e19b78" +dependencies = [ + "autocfg 1.1.0", +] [[package]] name = "autocfg" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "axum" -version = "0.5.4" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4af7447fc1214c1f3a1ace861d0216a6c8bb13965b64bbad9650f375b67689a" +checksum = "ab2504b827a8bef941ba3dd64bdffe9cf56ca182908a147edd6189c95fbcae7d" dependencies = [ "async-trait", "axum-core", @@ -386,7 +379,7 @@ dependencies = [ "http", "http-body", "hyper", - "itoa 1.0.1", + "itoa", "matchit", "memchr", "mime", @@ -407,9 +400,9 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bdc19781b16e32f8a7200368a336fa4509d4b72ef15dd4e41df5290855ee1e6" +checksum = "da31c0ed7b4690e2c78fe4b880d21cd7db04a346ebc658b4270251b695437f17" dependencies = [ "async-trait", "bytes", @@ -440,24 +433,24 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.64" +version = "0.3.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e121dee8023ce33ab248d9ce1493df03c3b38a659b240096fcbd7048ff9c31f" +checksum = "11a17d453482a265fd5f8479f2a3f405566e6ca627837aaddb85af8b1ab8ef61" dependencies = [ "addr2line", "cc", "cfg-if 1.0.0", "libc", - "miniz_oxide 0.4.4", + "miniz_oxide 0.5.3", "object", "rustc-demangle", ] [[package]] name = "base-x" -version = "0.2.8" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4521f3e3d031370679b3b140beb36dfe4801b09ac77e30c61941f97df3ef28b" +checksum = "dc19a4937b4fbd3fe3379793130e42060d10627a360f2127802b10b87e7baf74" [[package]] name = "base64" @@ -473,9 +466,9 @@ checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" [[package]] name = "base64ct" -version = "1.0.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0d27fb6b6f1e43147af148af49d49329413ba781aa0d5e10979831c210173b5" +checksum = "dea908e7347a8c64e378c17e30ef880ad73e3b4498346b055c2c00ea342f3179" [[package]] name = "bincode" @@ -495,7 +488,7 @@ dependencies = [ "bitflags", "cexpr", "clang-sys", - "clap 2.33.3", + "clap 2.34.0", "env_logger", "lazy_static", "lazycell", @@ -515,18 +508,6 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" -[[package]] -name = "bitvec" -version = "0.19.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8942c8d352ae1838c9dda0b0ca2ab657696ef2232a20147cf1b30ae1a9cb4321" -dependencies = [ - "funty", - "radium", - "tap", - "wyz", -] - [[package]] name = "block" version = "0.1.6" @@ -553,9 +534,9 @@ dependencies = [ [[package]] name = "blocking" -version = "1.0.2" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e170dbede1f740736619b776d7251cb1b9095c435c34d8ca9f57fcd2f335e9" +checksum = "c6ccb65d468978a086b69884437ded69a90faab3bbe6e67f242173ea728acccc" dependencies = [ "async-channel", "async-task", @@ -582,36 +563,30 @@ dependencies = [ [[package]] name = "bstr" -version = "0.2.15" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a40b47ad93e1a5404e6c18dec46b628214fee441c70f4ab5d6942142cc268a3d" +checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" dependencies = [ "memchr", ] -[[package]] -name = "build_const" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ae4235e6dac0694637c763029ecea1a2ec9e4e06ec2729bd21ba4d9c863eb7" - [[package]] name = "bumpalo" -version = "3.7.0" +version = "3.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c59e7af012c713f529e7a3ee57ce9b31ddd858d4b512923602f74608b009631" +checksum = "37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3" [[package]] name = "bytemuck" -version = "1.5.1" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bed57e2090563b83ba8f83366628ce535a7584c9afa4c9fc0612a03925c6df58" +checksum = "cdead85bdec19c194affaeeb670c0e41fe23de31459efd1c174d049269cf02cc" [[package]] name = "byteorder" -version = "1.4.2" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae44d1a3d5a19df61dd0c8beb138458ac2a53a7ac09eba97d55592540004306b" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" @@ -632,9 +607,9 @@ dependencies = [ [[package]] name = "cache-padded" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "631ae5198c9be5e753e5cc215e1bd73c2b466a3565173db433f52bb9d3e66dba" +checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c" [[package]] name = "castaway" @@ -644,9 +619,9 @@ checksum = "a2698f953def977c68f935bb0dfa959375ad4638570e969e2f1e9f433cbf1af6" [[package]] name = "cc" -version = "1.0.67" +version = "1.0.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c69b077ad434294d3ce9f1f6143a2a4b89a8a2d54ef813d85003a4fd1137fd" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" dependencies = [ "jobserver", ] @@ -657,7 +632,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" dependencies = [ - "nom 7.1.1", + "nom", ] [[package]] @@ -683,7 +658,7 @@ dependencies = [ "postage", "settings", "theme", - "time 0.3.7", + "time 0.3.9", "util", "workspace", ] @@ -697,7 +672,7 @@ dependencies = [ "libc", "num-integer", "num-traits", - "time 0.1.44", + "time 0.1.43", "winapi 0.3.9", ] @@ -718,9 +693,9 @@ dependencies = [ [[package]] name = "clang-sys" -version = "1.1.1" +version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f54d78e30b388d4815220c8dd03fea5656b6c6d32adb59e89061552a102f8da1" +checksum = "5a050e2153c5be08febd6734e29298e844fdb0fa21aeddd63b4eb7baa106c69b" dependencies = [ "glob", "libc", @@ -729,11 +704,11 @@ dependencies = [ [[package]] name = "clap" -version = "2.33.3" +version = "2.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" dependencies = [ - "ansi_term 0.11.0", + "ansi_term", "atty", "bitflags", "strsim 0.8.0", @@ -744,9 +719,9 @@ dependencies = [ [[package]] name = "clap" -version = "3.1.12" +version = "3.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c167e37342afc5f33fd87bbc870cedd020d2a6dffa05d45ccd9241fbdd146db" +checksum = "d2dbdf4bdacb33466e854ce889eee8dfd5729abf7ccd7664d0a2d60cd384440b" dependencies = [ "atty", "bitflags", @@ -761,9 +736,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "3.1.7" +version = "3.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3aab4734e083b809aaf5794e14e756d1c798d2c69c7f7de7a09a2f5214993c1" +checksum = "25320346e922cffe59c0bbc5410c8d8784509efb321488971081313cb1e1a33c" dependencies = [ "heck 0.4.0", "proc-macro-error", @@ -774,9 +749,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "189ddd3b5d32a70b35e7686054371742a937b0d99128e76dde6340210e966669" +checksum = "a37c35f1112dad5e6e0b1adaff798507497a18fceeb30cceb3bae7d1427b9213" dependencies = [ "os_str_bytes", ] @@ -786,10 +761,10 @@ name = "cli" version = "0.1.0" dependencies = [ "anyhow", - "clap 3.1.12", + "clap 3.1.18", "core-foundation", "core-services", - "dirs 3.0.1", + "dirs 3.0.2", "ipc-channel", "plist", "serde", @@ -809,14 +784,14 @@ dependencies = [ "isahc", "lazy_static", "log", - "parking_lot", + "parking_lot 0.11.2", "postage", - "rand 0.8.3", + "rand 0.8.5", "rpc", "smol", "sum_tree", "thiserror", - "time 0.3.7", + "time 0.3.9", "tiny_http", "url", "util", @@ -831,9 +806,9 @@ dependencies = [ [[package]] name = "cmake" -version = "0.1.45" +version = "0.1.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb6210b637171dfba4cda12e579ac6dc73f5165ad56133e5d72ef3131f320855" +checksum = "e8ad8cef104ac57b68b89df3208164d228503abbdce70f6880ffa3d970e7443a" dependencies = [ "cc", ] @@ -877,7 +852,7 @@ dependencies = [ "axum", "axum-extra", "base64 0.13.0", - "clap 3.1.12", + "clap 3.1.18", "client", "collections", "ctor", @@ -893,16 +868,16 @@ dependencies = [ "log", "lsp", "nanoid", - "parking_lot", + "parking_lot 0.11.2", "project", - "rand 0.8.3", + "rand 0.8.5", "reqwest", "rpc", "scrypt", "serde", "serde_json", "settings", - "sha-1 0.9.6", + "sha-1 0.9.8", "sqlx", "theme", "time 0.2.27", @@ -960,9 +935,9 @@ dependencies = [ [[package]] name = "const_fn" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f92cfa0fd5690b3cf8c1ef2cabbd9b7ef22fa53cf5e1f92b05103f6d5d1cf6e7" +checksum = "fbdcdcb6d86f71c5e97409ad45898af11cbc995b4ee8112d59095a28d376c935" [[package]] name = "contacts_panel" @@ -1059,36 +1034,33 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.1.4" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed00c67cb5d0a7d64a44f6ad2668db7e7530311dd53ea79bcd4fb022c64911c8" +checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b" dependencies = [ "libc", ] [[package]] -name = "cpufeatures" -version = "0.2.1" +name = "crc" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469" +checksum = "49fc9a695bca7f35f5f4c15cddc84415f66a74ea78eef08e90c5024f2b540e23" dependencies = [ - "libc", + "crc-catalog", ] [[package]] -name = "crc" -version = "1.8.1" +name = "crc-catalog" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d663548de7f5cca343f1e0a48d14dcfb0e9eb4e079ec58883b7251539fa10aeb" -dependencies = [ - "build_const", -] +checksum = "ccaeedb56da03b09f598226e25e80088cb4cd25f316e6e4df7d695f0feeb1403" [[package]] name = "crc32fast" -version = "1.2.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ "cfg-if 1.0.0", ] @@ -1105,47 +1077,47 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.0" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dca26ee1f8d361640700bde38b2c37d8c22b3ce2d360e1fc1c74ea4b0aa7d775" +checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53" dependencies = [ "cfg-if 1.0.0", - "crossbeam-utils 0.8.2", + "crossbeam-utils 0.8.8", ] [[package]] name = "crossbeam-deque" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9" +checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" dependencies = [ "cfg-if 1.0.0", "crossbeam-epoch", - "crossbeam-utils 0.8.2", + "crossbeam-utils 0.8.8", ] [[package]] name = "crossbeam-epoch" -version = "0.9.2" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d60ab4a8dba064f2fbb5aa270c28da5cf4bbd0e72dae1140a6b0353a779dbe00" +checksum = "1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c" dependencies = [ + "autocfg 1.1.0", "cfg-if 1.0.0", - "crossbeam-utils 0.8.2", + "crossbeam-utils 0.8.8", "lazy_static", - "loom", "memoffset", "scopeguard", ] [[package]] name = "crossbeam-queue" -version = "0.3.1" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f6cb3c7f5b8e51bc3ebb73a2327ad4abdbd119dc13223f14f961d2f38486756" +checksum = "1f25d8400f4a7a5778f0e4e52384a48cbd9b5c495d110786187fc750075277a2" dependencies = [ "cfg-if 1.0.0", - "crossbeam-utils 0.8.2", + "crossbeam-utils 0.8.8", ] [[package]] @@ -1154,21 +1126,19 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" dependencies = [ - "autocfg 1.0.1", + "autocfg 1.1.0", "cfg-if 0.1.10", "lazy_static", ] [[package]] name = "crossbeam-utils" -version = "0.8.2" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bae8f328835f8f5a6ceb6a7842a7f2d0c03692adb5c889347235d59194731fe3" +checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38" dependencies = [ - "autocfg 1.0.1", "cfg-if 1.0.0", "lazy_static", - "loom", ] [[package]] @@ -1183,19 +1153,9 @@ dependencies = [ [[package]] name = "crypto-mac" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4857fd85a0c34b3c3297875b747c1e02e06b6a0ea32dd892d8192b9ce0813ea6" -dependencies = [ - "generic-array", - "subtle", -] - -[[package]] -name = "crypto-mac" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25fab6889090c8133f3deb8f73ba3c65a7f456f66436fc012a1b1e272b1e103e" +checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" dependencies = [ "generic-array", "subtle", @@ -1203,9 +1163,9 @@ dependencies = [ [[package]] name = "ctor" -version = "0.1.20" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e98e2ad1a782e33928b96fc3948e7c355e5af34ba4de7670fe8bac2a3b2006d" +checksum = "f877be4f7c9f246b183111634f75baa039715e3f46ce860677d3b19a69fb229c" dependencies = [ "quote", "syn", @@ -1213,24 +1173,24 @@ dependencies = [ [[package]] name = "curl" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7de97b894edd5b5bcceef8b78d7da9b75b1d2f2f9a910569d0bde3dd31d84939" +checksum = "37d855aeef205b43f65a5001e0997d81f8efca7badad4fad7d897aa7f0d0651f" dependencies = [ "curl-sys", "libc", "openssl-probe", "openssl-sys", "schannel", - "socket2 0.4.0", + "socket2", "winapi 0.3.9", ] [[package]] name = "curl-sys" -version = "0.4.52+curl-7.81.0" +version = "0.4.55+curl-7.83.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14b8c2d1023ea5fded5b7b892e4b8e95f70038a421126a056761a84246a28971" +checksum = "23734ec77368ec583c2e61dd3f0b0e5c98b93abe6d2a004ca06b91dd7e3e2762" dependencies = [ "cc", "libc", @@ -1244,9 +1204,9 @@ dependencies = [ [[package]] name = "data-url" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d33fe99ccedd6e84bc035f1931bb2e6be79739d6242bd895e7311c886c50dc9c" +checksum = "3a30bfce702bcfa94e906ef82421f2c0e61c076ad76030c16ee5d2e9a32fe193" dependencies = [ "matches", ] @@ -1269,7 +1229,7 @@ checksum = "47003dc9f6368a88e85956c3b2573a7e6872746a3e5d762a8885da3a136a0381" dependencies = [ "backtrace", "lazy_static", - "parking_lot", + "parking_lot 0.11.2", "rustc-hash", "serde", "serde_json", @@ -1314,13 +1274,14 @@ checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" dependencies = [ "block-buffer 0.10.2", "crypto-common", + "subtle", ] [[package]] name = "dirs" -version = "3.0.1" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "142995ed02755914747cc6ca76fc7e4583cd18578746716d0508ea6ed558b9ff" +checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309" dependencies = [ "dirs-sys", ] @@ -1346,9 +1307,9 @@ dependencies = [ [[package]] name = "dirs-sys" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03d86534ed367a67548dc68113a0f5db55432fdfbb6e6f9d77704397d95d5780" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" dependencies = [ "libc", "redox_users", @@ -1392,15 +1353,15 @@ dependencies = [ [[package]] name = "dyn-clone" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee2626afccd7561a06cf1367e2950c4718ea04565e20fb5029b6c7d8ad09abcf" +checksum = "21e50f3adc76d6a43f5ed73b698a87d0760ca74617f60f7c3b879003536fdd28" [[package]] name = "easy-parallel" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd4afd79212583ff429b913ad6605242ed7eec277e950b1438f300748f948f4" +checksum = "6907e25393cdcc1f4f3f513d9aac1e840eb1cc341a0fccb01171f7d14d10b946" [[package]] name = "editor" @@ -1422,10 +1383,10 @@ dependencies = [ "log", "lsp", "ordered-float", - "parking_lot", + "parking_lot 0.11.2", "postage", "project", - "rand 0.8.3", + "rand 0.8.5", "rpc", "serde", "settings", @@ -1450,9 +1411,9 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" [[package]] name = "encoding_rs" -version = "0.8.28" +version = "0.8.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80df024fbc5ac80f87dfef0d9f5209a252f2a497f7f42944cff24d8253cac065" +checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" dependencies = [ "cfg-if 1.0.0", ] @@ -1490,9 +1451,9 @@ dependencies = [ [[package]] name = "etagere" -version = "0.2.4" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520d7de540904fd09b11c03a47d50a7ce4ff37d1aa763f454fa60d9088ef8356" +checksum = "6301151a318f367f392c31395beb1cfba5ccd9abc44d1db0db3a4b27b9601c89" dependencies = [ "euclid", "svg_fmt", @@ -1500,18 +1461,18 @@ dependencies = [ [[package]] name = "euclid" -version = "0.22.2" +version = "0.22.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51e5bac4ec41ece6346fd867815a57a221abdf48f4eb931b033789b5b4b6fc70" +checksum = "b52c2ef4a78da0ba68fbe1fd920627411096d2ac478f7f4c9f3a54ba6705bade" dependencies = [ "num-traits", ] [[package]] name = "event-listener" -version = "2.5.1" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7531096570974c3a9dcf9e4b8e1cede1ec26cf5046219fb3b9d897503b9be59" +checksum = "77f3309417938f28bf8228fcff79a4a37103981e3e186d2ccd19c74b38f4eb71" [[package]] name = "expat-sys" @@ -1560,14 +1521,12 @@ checksum = "279fb028e20b3c4c320317955b77c5e0c9701f05a1d309905d6fc702cdc5053e" [[package]] name = "flate2" -version = "1.0.20" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd3aec53de10fe96d7d8c565eb17f2c687bb5518a2ec453b5b1252964526abe0" +checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6" dependencies = [ - "cfg-if 1.0.0", "crc32fast", - "libc", - "miniz_oxide 0.4.4", + "miniz_oxide 0.5.3", ] [[package]] @@ -1614,13 +1573,13 @@ dependencies = [ [[package]] name = "fontdb" -version = "0.5.1" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428948a0f39fb83fe55991d4423e35a793cdbb0322ebe23853f6024124a330d7" +checksum = "e58903f4f8d5b58c7d300908e4ebe5289c1bfdf5587964330f12023b8ff17fd1" dependencies = [ "log", - "memmap2 0.1.0", - "ttf-parser 0.9.0", + "memmap2", + "ttf-parser 0.12.3", ] [[package]] @@ -1675,15 +1634,15 @@ version = "2.0.2" dependencies = [ "bitflags", "fsevent-sys", - "parking_lot", + "parking_lot 0.11.2", "tempdir", ] [[package]] name = "fsevent-sys" -version = "3.0.2" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a29c77f1ca394c3e73a9a5d24cfcabb734682d9634fc398f2204a63c994120" +checksum = "ca6f5e6817058771c10f0eb0f05ddf1e35844266f972004fe8e4b21fda295bd5" dependencies = [ "libc", ] @@ -1710,17 +1669,11 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" -[[package]] -name = "funty" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" - [[package]] name = "futures" -version = "0.3.12" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da9052a1a50244d8d5aa9bf55cbc2fb6f357c86cc52e46c62ed390a7180cf150" +checksum = "f73fe65f54d1e12b726f517d3e2135ca3125a437b6d998caf1962961f7172d9e" dependencies = [ "futures-channel", "futures-core", @@ -1749,15 +1702,26 @@ checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" [[package]] name = "futures-executor" -version = "0.3.12" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9e59fdc009a4b3096bf94f740a0f2424c082521f20a9b08c5c07c48d90fd9b9" +checksum = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6" dependencies = [ "futures-core", "futures-task", "futures-util", ] +[[package]] +name = "futures-intrusive" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62007592ac46aa7c2b6416f7deb9a8a8f63a01e0f1d6e1787d5630170db2b63e" +dependencies = [ + "futures-core", + "lock_api", + "parking_lot 0.11.2", +] + [[package]] name = "futures-io" version = "0.3.21" @@ -1828,24 +1792,11 @@ dependencies = [ "util", ] -[[package]] -name = "generator" -version = "0.6.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cdc09201b2e8ca1b19290cf7e65de2246b8e91fb6874279722189c4de7b94dc" -dependencies = [ - "cc", - "libc", - "log", - "rustc_version", - "winapi 0.3.9", -] - [[package]] name = "generic-array" -version = "0.14.4" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" +checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803" dependencies = [ "typenum", "version_check", @@ -1864,20 +1815,20 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.2" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8" +checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad" dependencies = [ "cfg-if 1.0.0", "libc", - "wasi 0.10.0+wasi-snapshot-preview1", + "wasi 0.10.2+wasi-snapshot-preview1", ] [[package]] name = "gif" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a668f699973d0f573d15749b7002a9ac9e1f9c6b220e7b165601334c173d8de" +checksum = "c3a7187e78088aead22ceedeee99779455b23fc231fe13ec443f99bb71694e5b" dependencies = [ "color_quant", "weezl", @@ -1952,12 +1903,12 @@ dependencies = [ "objc", "ordered-float", "parking", - "parking_lot", + "parking_lot 0.11.2", "pathfinder_color", "pathfinder_geometry", "png", "postage", - "rand 0.8.3", + "rand 0.8.5", "resvg", "seahash", "serde", @@ -1966,7 +1917,7 @@ dependencies = [ "smallvec", "smol", "sum_tree", - "time 0.3.7", + "time 0.3.9", "tiny-skia", "tree-sitter", "usvg", @@ -1998,7 +1949,7 @@ dependencies = [ "indexmap", "slab", "tokio", - "tokio-util 0.7.1", + "tokio-util 0.7.3", "tracing", ] @@ -2059,12 +2010,15 @@ name = "heck" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" +dependencies = [ + "unicode-segmentation", +] [[package]] name = "hermit-abi" -version = "0.1.18" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" dependencies = [ "libc", ] @@ -2076,13 +2030,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] -name = "hmac" -version = "0.10.1" +name = "hkdf" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15" +checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" dependencies = [ - "crypto-mac 0.10.0", - "digest 0.9.0", + "hmac 0.12.1", ] [[package]] @@ -2091,19 +2044,28 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" dependencies = [ - "crypto-mac 0.11.0", + "crypto-mac", "digest 0.9.0", ] +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.3", +] + [[package]] name = "http" -version = "0.2.6" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f4c6746584866f0feabcc69893c5b51beef3831656a968ed7ae254cdc4fd03" +checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" dependencies = [ "bytes", "fnv", - "itoa 1.0.1", + "itoa", ] [[package]] @@ -2117,9 +2079,9 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff4f84919677303da5f147645dbea6b1881f368d03ac84e1dc09031ebd7b2c6" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ "bytes", "http", @@ -2134,9 +2096,9 @@ checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29" [[package]] name = "httparse" -version = "1.7.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6330e8a36bd8c859f3fa6d9382911fbb7147ec39807f63b923933a247240b9ba" +checksum = "496ce29bb5a52785b44e0f7ca2847ae0bb839c9bd28f69acac9b99d461c0c04c" [[package]] name = "httpdate" @@ -2152,9 +2114,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.18" +version = "0.14.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b26ae0a80afebe130861d90abf98e3814a4f28a4c6ffeb5ab8ebb2be311e0ef2" +checksum = "42dc3c131584288d375f2d07f822b0cb012d8c6fb899a5b9fdb3cb7eb9b6004f" dependencies = [ "bytes", "futures-channel", @@ -2165,9 +2127,9 @@ dependencies = [ "http-body", "httparse", "httpdate", - "itoa 1.0.1", + "itoa", "pin-project-lite 0.2.9", - "socket2 0.4.0", + "socket2", "tokio", "tower-service", "tracing", @@ -2212,11 +2174,11 @@ dependencies = [ [[package]] name = "ignore" -version = "0.4.17" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b287fb45c60bb826a0dc68ff08742b9d88a2fea13d6e0c286b3172065aaf878c" +checksum = "713f1b139373f96a2e0ce3ac931cd01ee973c3c5dd7c40c0c2efe96ad2b6751d" dependencies = [ - "crossbeam-utils 0.8.2", + "crossbeam-utils 0.8.8", "globset", "lazy_static", "log", @@ -2253,24 +2215,21 @@ version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6012d540c5baa3589337a98ce73408de9b5a25ec9fc2c6fd6be8f0d39e0ca5a" dependencies = [ - "autocfg 1.0.1", + "autocfg 1.1.0", "hashbrown", ] [[package]] name = "indoc" -version = "1.0.4" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7906a9fababaeacb774f72410e497a1d18de916322e33797bb2cd29baa23c9e" -dependencies = [ - "unindent", -] +checksum = "05a0bd019339e5d968b37855180087b7b9d512c5046fbd244cf8c95687927d6e" [[package]] name = "instant" -version = "0.1.9" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ "cfg-if 1.0.0", ] @@ -2311,13 +2270,13 @@ checksum = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b" [[package]] name = "isahc" -version = "1.7.0" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "437f8808009c031df3c1d532c8fd7e3d73239dfe522ebf0b94b5e34d5d01044b" +checksum = "334e04b4d781f436dc315cb1e7515bd96826426345d498149e4bde36b67f8ee9" dependencies = [ "async-channel", "castaway", - "crossbeam-utils 0.8.2", + "crossbeam-utils 0.8.8", "curl", "curl-sys", "encoding_rs", @@ -2338,24 +2297,18 @@ dependencies = [ [[package]] name = "itertools" -version = "0.10.1" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69ddb889f9d0d08a67338271fa9b62996bc788c7796a5c18cf057420aaed5eaf" +checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" dependencies = [ "either", ] [[package]] name = "itoa" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" - -[[package]] -name = "itoa" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" +checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d" [[package]] name = "jobserver" @@ -2390,9 +2343,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.51" +version = "0.3.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83bdfbace3a0e81a4253f73b49e960b053e396a11012cbd49b9b74d6a2b67062" +checksum = "671a26f820db17c2a2750743f1dd03bafd15b98c9f30c7c2628c024c05d73397" dependencies = [ "wasm-bindgen", ] @@ -2415,11 +2368,11 @@ dependencies = [ [[package]] name = "kurbo" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e30b1df631d23875f230ed3ddd1a88c231f269a04b2044eb6ca87e763b5f4c42" +checksum = "7a53776d271cfb873b17c618af0298445c88afc52837f3e948fa3fafd131f449" dependencies = [ - "arrayvec 0.5.2", + "arrayvec 0.7.2", ] [[package]] @@ -2440,9 +2393,9 @@ dependencies = [ "lazy_static", "log", "lsp", - "parking_lot", + "parking_lot 0.11.2", "postage", - "rand 0.8.3", + "rand 0.8.5", "rpc", "serde", "serde_json", @@ -2475,19 +2428,6 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" -[[package]] -name = "lexical-core" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe" -dependencies = [ - "arrayvec 0.5.2", - "bitflags", - "cfg-if 1.0.0", - "ryu", - "static_assertions", -] - [[package]] name = "libc" version = "0.2.126" @@ -2496,9 +2436,9 @@ checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" [[package]] name = "libloading" -version = "0.7.0" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f84d96438c15fcd6c3f244c8fce01d1e2b9c6b5623e9c711dc9286d8fc92d6a" +checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd" dependencies = [ "cfg-if 1.0.0", "winapi 0.3.9", @@ -2506,15 +2446,15 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702a" +checksum = "33a33a362ce288760ec6a508b94caaec573ae7d3bbbd91b87aa0bad4456839db" [[package]] name = "libnghttp2-sys" -version = "0.1.6+1.43.0" +version = "0.1.7+1.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0af55541a8827e138d59ec9e5877fb6095ece63fb6f4da45e7491b4fbd262855" +checksum = "57ed28aba195b38d5ff02b9170cbff627e336a20925e43b4945390401c5dc93f" dependencies = [ "cc", "libc", @@ -2537,9 +2477,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.3" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de5435b8549c16d423ed0c03dbaafe57cf6c3344744f1242520d59c9d8ecec66" +checksum = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf" dependencies = [ "cc", "libc", @@ -2558,45 +2498,35 @@ dependencies = [ [[package]] name = "lipsum" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ee7271c76a89032dcc7e595c0a739a9c5514eab483deb0e82981fe2098c56a" +checksum = "a8451846f1f337e44486666989fbce40be804da139d5a4477d6b88ece5dc69f4" dependencies = [ - "rand 0.8.3", - "rand_chacha 0.3.0", + "rand 0.8.5", + "rand_chacha 0.3.1", ] [[package]] name = "lock_api" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b" +checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53" dependencies = [ + "autocfg 1.1.0", "scopeguard", ] [[package]] name = "log" -version = "0.4.16" +version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6389c490849ff5bc16be905ae24bc913a9c8892e19b2341dbc175e14c341c2b8" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" dependencies = [ "cfg-if 1.0.0", "serde", "value-bag", ] -[[package]] -name = "loom" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d44c73b4636e497b4917eb21c33539efa3816741a2d3ff26c6316f1b529481a4" -dependencies = [ - "cfg-if 1.0.0", - "generator", - "scoped-tls", -] - [[package]] name = "lsp" version = "0.1.0" @@ -2610,7 +2540,7 @@ dependencies = [ "gpui", "log", "lsp-types", - "parking_lot", + "parking_lot 0.11.2", "postage", "serde", "serde_json", @@ -2621,9 +2551,9 @@ dependencies = [ [[package]] name = "lsp-types" -version = "0.91.0" +version = "0.91.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be7801b458592d0998af808d97f6a85a6057af3aaf2a2a5c3c677702bbeb4ed7" +checksum = "2368312c59425dd133cb9a327afee65be0a633a8ce471d248e2202a48f8f68ae" dependencies = [ "bitflags", "serde", @@ -2641,12 +2571,6 @@ dependencies = [ "libc", ] -[[package]] -name = "maplit" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" - [[package]] name = "matchers" version = "0.1.0" @@ -2658,9 +2582,9 @@ dependencies = [ [[package]] name = "matches" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" +checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" [[package]] name = "matchit" @@ -2676,46 +2600,35 @@ checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" [[package]] name = "md-5" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5a279bb9607f9f53c22d496eade00d138d1bdcccd07d74650387cf94942a15" +checksum = "658646b21e0b72f7866c7038ab086d3d5e1cd6271f060fd37defb241949d0582" dependencies = [ - "block-buffer 0.9.0", - "digest 0.9.0", - "opaque-debug", + "digest 0.10.3", ] [[package]] name = "memchr" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" - -[[package]] -name = "memmap2" -version = "0.1.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b70ca2a6103ac8b665dc150b142ef0e4e89df640c9e6cf295d189c3caebe5a" -dependencies = [ - "libc", -] +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memmap2" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397d1a6d6d0563c0f5462bbdae662cf6c784edf5e828e40c7257f85d82bf56dd" +checksum = "723e3ebdcdc5c023db1df315364573789f8857c11b631a2fdfad7c00f5c046b4" dependencies = [ "libc", ] [[package]] name = "memoffset" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f83fb6581e8ed1f85fd45c116db8405483899489e38406156c25eb743554361d" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" dependencies = [ - "autocfg 1.0.1", + "autocfg 1.1.0", ] [[package]] @@ -2767,7 +2680,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" dependencies = [ "adler", - "autocfg 1.0.1", + "autocfg 1.1.0", +] + +[[package]] +name = "miniz_oxide" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc" +dependencies = [ + "adler", ] [[package]] @@ -2783,7 +2705,7 @@ dependencies = [ "kernel32-sys", "libc", "log", - "miow 0.2.2", + "miow", "net2", "slab", "winapi 0.2.8", @@ -2791,15 +2713,14 @@ dependencies = [ [[package]] name = "mio" -version = "0.7.14" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc" +checksum = "713d550d9b44d89174e066b7a6217ae06234c10cb47819a88290d2b353c31799" dependencies = [ "libc", "log", - "miow 0.3.7", - "ntapi", - "winapi 0.3.9", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys", ] [[package]] @@ -2814,15 +2735,6 @@ dependencies = [ "ws2_32-sys", ] -[[package]] -name = "miow" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" -dependencies = [ - "winapi 0.3.9", -] - [[package]] name = "multimap" version = "0.8.3" @@ -2835,7 +2747,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ffa00dec017b5b1a8b7cf5e2c008bfda1aa7e0697ac1508b491fdf2622fb4d8" dependencies = [ - "rand 0.8.3", + "rand 0.8.5", ] [[package]] @@ -2856,16 +2768,6 @@ dependencies = [ "tempfile", ] -[[package]] -name = "nb-connect" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670361df1bc2399ee1ff50406a0d422587dd3bb0da596e1978fe8e05dabddf4f" -dependencies = [ - "libc", - "socket2 0.3.19", -] - [[package]] name = "net2" version = "0.2.37" @@ -2877,19 +2779,6 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "nom" -version = "6.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7413f999671bd4745a7b624bd370a569fb6bc574b23c83a3c5ed2e453f3d5e2" -dependencies = [ - "bitvec", - "funty", - "lexical-core", - "memchr", - "version_check", -] - [[package]] name = "nom" version = "7.1.1" @@ -2900,22 +2789,13 @@ dependencies = [ "minimal-lexical", ] -[[package]] -name = "ntapi" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" -dependencies = [ - "winapi 0.3.9", -] - [[package]] name = "num-bigint" -version = "0.4.0" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e0d047c1062aa51e256408c560894e5251f08925980e53cf1aa5bd00eec6512" +checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" dependencies = [ - "autocfg 1.0.1", + "autocfg 1.1.0", "num-integer", "num-traits", ] @@ -2926,35 +2806,35 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4547ee5541c18742396ae2c895d0717d0f886d8823b8399cdaf7b07d63ad0480" dependencies = [ - "autocfg 0.1.7", + "autocfg 0.1.8", "byteorder", "lazy_static", "libm", "num-integer", "num-iter", "num-traits", - "rand 0.8.3", + "rand 0.8.5", "smallvec", "zeroize", ] [[package]] name = "num-integer" -version = "0.1.44" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" dependencies = [ - "autocfg 1.0.1", + "autocfg 1.1.0", "num-traits", ] [[package]] name = "num-iter" -version = "0.1.42" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2021c8337a54d21aca0d59a92577a029af9431cb59b909b03252b9c164fad59" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" dependencies = [ - "autocfg 1.0.1", + "autocfg 1.1.0", "num-integer", "num-traits", ] @@ -2965,26 +2845,26 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" dependencies = [ - "autocfg 1.0.1", + "autocfg 1.1.0", "num-integer", "num-traits", ] [[package]] name = "num-traits" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" dependencies = [ - "autocfg 1.0.1", + "autocfg 1.1.0", "libm", ] [[package]] name = "num_cpus" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" +checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" dependencies = [ "hermit-abi", "libc", @@ -2992,9 +2872,9 @@ dependencies = [ [[package]] name = "num_threads" -version = "0.1.3" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97ba99ba6393e2c3734791401b66902d981cb03bf190af674ca69949b6d5fb15" +checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" dependencies = [ "libc", ] @@ -3020,18 +2900,18 @@ dependencies = [ [[package]] name = "object" -version = "0.27.1" +version = "0.28.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" +checksum = "e42c982f2d955fac81dd7e1d0e1426a7d702acd9c98d19ab01083a6a0328c424" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.5.2" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0" +checksum = "7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225" [[package]] name = "opaque-debug" @@ -3067,17 +2947,17 @@ dependencies = [ [[package]] name = "openssl-probe" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28988d872ab76095a6e6ac88d99b54fd267702734fd7ffe610ca27f533ddb95a" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.73" +version = "0.9.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d5fd19fb3e0a8191c1e34935718976a3e70c112ab9a24af6d7cadccd9d90bc0" +checksum = "835363342df5fba8354c5b453325b110ffd54044e588c539cf2f20a8014e4cb1" dependencies = [ - "autocfg 1.0.1", + "autocfg 1.1.0", "cc", "libc", "pkg-config", @@ -3086,18 +2966,18 @@ dependencies = [ [[package]] name = "ordered-float" -version = "2.1.1" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "766f840da25490628d8e63e529cd21c014f6600c6b8517add12a6fa6167a6218" +checksum = "7940cf2ca942593318d07fcf2596cdca60a85c9e7fab408a5e21a4f9dcd40d87" dependencies = [ "num-traits", ] [[package]] name = "os_str_bytes" -version = "6.0.0" +version = "6.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e22443d1643a904602595ba1cd8f7d896afe56d26712531c5ff73a15b2fbf64" +checksum = "21326818e99cfe6ce1e524c2a805c189a99b5ae555a35d19f9a284b427d86afa" [[package]] name = "outline" @@ -3124,13 +3004,23 @@ checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" [[package]] name = "parking_lot" -version = "0.11.2" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core 0.8.5", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ - "instant", "lock_api", - "parking_lot_core", + "parking_lot_core 0.9.3", ] [[package]] @@ -3147,17 +3037,36 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "parking_lot_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall", + "smallvec", + "windows-sys", +] + [[package]] name = "password-hash" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1a5d4e9c205d2c1ae73b84aab6240e98218c0e72e63b50422cfb2d1ca952282" +checksum = "77e0b28ace46c5a396546bcf443bf422b57049617433d8854227352a4a9b24e7" dependencies = [ "base64ct", - "rand_core 0.6.2", + "rand_core 0.6.3", "subtle", ] +[[package]] +name = "paste" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c520e05135d6e763148b6426a837e239041653ba7becd2e538c076c738025fc" + [[package]] name = "pathfinder_color" version = "0.5.0" @@ -3179,11 +3088,11 @@ dependencies = [ [[package]] name = "pathfinder_simd" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b451513912d6b3440e443aa75a73ab22203afedc4a90df8526d008c0f86f7cb3" +checksum = "39fe46acc5503595e5949c17b818714d26fdf9b4920eacf3b2947f0199f4a6ff" dependencies = [ - "rustc_version", + "rustc_version 0.3.3", ] [[package]] @@ -3192,7 +3101,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffa" dependencies = [ - "crypto-mac 0.11.0", + "crypto-mac", ] [[package]] @@ -3218,6 +3127,15 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +[[package]] +name = "pest" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53" +dependencies = [ + "ucd-trie", +] + [[package]] name = "petgraph" version = "0.6.2" @@ -3246,24 +3164,24 @@ dependencies = [ [[package]] name = "pico-args" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d70072c20945e1ab871c472a285fc772aefd4f5407723c206242f2c6f94595d6" +checksum = "db8bcd96cb740d03149cbad5518db9fd87126a10ab519c011893b1754134c468" [[package]] name = "pin-project" -version = "1.0.6" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc174859768806e91ae575187ada95c91a29e96a98dc5d2cd9a1fed039501ba6" +checksum = "58ad3879ad3baf4e44784bc6a718a8698867bb991f8ce24d1bcbe2cfb4c3a75e" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.6" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a490329918e856ed1b083f244e3bfe2d8c4f336407e4ea9e1a9f479ff09049e5" +checksum = "744b6f092ba29c3650faf274db506afd39944f48420f6c86b17cfe0ee1cb36bb" dependencies = [ "proc-macro2", "quote", @@ -3290,9 +3208,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.19" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" +checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" [[package]] name = "plist" @@ -3304,7 +3222,7 @@ dependencies = [ "indexmap", "line-wrap", "serde", - "time 0.3.7", + "time 0.3.9", "xml-rs", ] @@ -3322,22 +3240,22 @@ dependencies = [ [[package]] name = "polling" -version = "2.0.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2a7bc6b2a29e632e45451c941832803a18cce6781db04de8a04696cdca8bde4" +checksum = "685404d509889fade3e86fe3a5803bca2ec09b0c0778d5ada6ec8bf7a8de5259" dependencies = [ - "cfg-if 0.1.10", + "cfg-if 1.0.0", "libc", "log", - "wepoll-sys", + "wepoll-ffi", "winapi 0.3.9", ] [[package]] name = "pollster" -version = "0.2.3" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cce106fd2646acbe31a0e4006f75779d535c26a44f153ada196e9edcfc6d944" +checksum = "5da3b0203fd7ee5720aa0b5e790b591aa5d3f41c3ed2c34a3a393382198af2f7" [[package]] name = "postage" @@ -3357,9 +3275,9 @@ dependencies = [ [[package]] name = "ppv-lite86" -version = "0.2.10" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" +checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" [[package]] name = "proc-macro-error" @@ -3393,11 +3311,11 @@ checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" [[package]] name = "proc-macro2" -version = "1.0.36" +version = "1.0.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" +checksum = "c54b25569025b7fc9651de43004ae593a75ad88543b17178aa5e1b9c4f15f56f" dependencies = [ - "unicode-xid", + "unicode-ident", ] [[package]] @@ -3420,9 +3338,10 @@ dependencies = [ "libc", "log", "lsp", - "parking_lot", + "parking_lot 0.11.2", "postage", - "rand 0.8.3", + "pulldown-cmark", + "rand 0.8.5", "regex", "rocksdb", "rpc", @@ -3559,19 +3478,24 @@ dependencies = [ ] [[package]] -name = "quote" -version = "1.0.9" +name = "pulldown-cmark" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" +checksum = "34f197a544b0c9ab3ae46c359a7ec9cbbb5c7bf97054266fecb7ead794a181d6" dependencies = [ - "proc-macro2", + "bitflags", + "memchr", + "unicase", ] [[package]] -name = "radium" -version = "0.5.3" +name = "quote" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "941ba9d78d8e2f7ce474c015eea4d9c6d25b6a3327f9832ee29a4de27f91bbb8" +checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1" +dependencies = [ + "proc-macro2", +] [[package]] name = "rand" @@ -3596,19 +3520,18 @@ dependencies = [ "libc", "rand_chacha 0.2.2", "rand_core 0.5.1", - "rand_hc 0.2.0", + "rand_hc", ] [[package]] name = "rand" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha 0.3.0", - "rand_core 0.6.2", - "rand_hc 0.3.0", + "rand_chacha 0.3.1", + "rand_core 0.6.3", ] [[package]] @@ -3623,12 +3546,12 @@ dependencies = [ [[package]] name = "rand_chacha" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core 0.6.2", + "rand_core 0.6.3", ] [[package]] @@ -3657,11 +3580,11 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7" +checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" dependencies = [ - "getrandom 0.2.2", + "getrandom 0.2.6", ] [[package]] @@ -3673,22 +3596,13 @@ dependencies = [ "rand_core 0.5.1", ] -[[package]] -name = "rand_hc" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73" -dependencies = [ - "rand_core 0.6.2", -] - [[package]] name = "rayon" -version = "1.5.0" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674" +checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d" dependencies = [ - "autocfg 1.0.1", + "autocfg 1.1.0", "crossbeam-deque", "either", "rayon-core", @@ -3696,14 +3610,13 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.9.0" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a" +checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f" dependencies = [ - "crossbeam-channel 0.5.0", + "crossbeam-channel 0.5.4", "crossbeam-deque", - "crossbeam-utils 0.8.2", - "lazy_static", + "crossbeam-utils 0.8.8", "num_cpus", ] @@ -3724,21 +3637,22 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.2.10" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff" +checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42" dependencies = [ "bitflags", ] [[package]] name = "redox_users" -version = "0.4.0" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ - "getrandom 0.2.2", + "getrandom 0.2.6", "redox_syscall", + "thiserror", ] [[package]] @@ -3778,9 +3692,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.11.9" +version = "0.11.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f242f1488a539a79bac6dbe7c8609ae43b7914b7736210f239a37cccb32525" +checksum = "46a1f7aa4f35e5e8b4160449f51afc758f0ce6454315a9fa7d0d113e958c41eb" dependencies = [ "base64 0.13.0", "bytes", @@ -3814,9 +3728,9 @@ dependencies = [ [[package]] name = "resvg" -version = "0.14.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac9efbe9c239253e11e518352c5f015ec0c69e73658eed153670e853e1b78e40" +checksum = "09697862c5c3f940cbaffef91969c62188b5c8ed385b0aef43a5ff01ddc8000f" dependencies = [ "jpeg-decoder", "log", @@ -3830,9 +3744,9 @@ dependencies = [ [[package]] name = "rgb" -version = "0.8.27" +version = "0.8.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fddb3b23626145d1776addfc307e1a1851f60ef6ca64f376bcb889697144cf0" +checksum = "e74fdc210d8f24a7dbfedc13b04ba5764f5232754ccebfdf5fff1bad791ccbc6" dependencies = [ "bytemuck", ] @@ -3883,10 +3797,10 @@ dependencies = [ "collections", "futures", "gpui", - "parking_lot", + "parking_lot 0.11.2", "prost 0.8.0", "prost-build", - "rand 0.8.3", + "rand 0.8.5", "rsa", "serde", "smol", @@ -3899,9 +3813,9 @@ dependencies = [ [[package]] name = "rsa" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ef841a26fc5d040ced0417c6c6a64ee851f42489df11cdf0218e545b6f8d28" +checksum = "7b0aeddcca1082112a6eeb43bf25fd7820b066aaf6eaef776e19d0a1febe38fe" dependencies = [ "byteorder", "digest 0.9.0", @@ -3911,7 +3825,7 @@ dependencies = [ "num-iter", "num-traits", "pem", - "rand 0.8.3", + "rand 0.8.5", "simple_asn1", "subtle", "zeroize", @@ -3919,9 +3833,9 @@ dependencies = [ [[package]] name = "rust-embed" -version = "6.3.0" +version = "6.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d40377bff8cceee81e28ddb73ac97f5c2856ce5522f0b260b763f434cdfae602" +checksum = "9a17e5ac65b318f397182ae94e532da0ba56b88dd1200b774715d36c4943b1c3" dependencies = [ "rust-embed-impl", "rust-embed-utils", @@ -3943,20 +3857,20 @@ dependencies = [ [[package]] name = "rust-embed-utils" -version = "7.1.0" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad22c7226e4829104deab21df575e995bfbc4adfad13a595e387477f238c1aec" +checksum = "756feca3afcbb1487a1d01f4ecd94cf8ec98ea074c55a69e7136d29fb6166029" dependencies = [ "globset", - "sha2 0.9.5", + "sha2 0.9.9", "walkdir", ] [[package]] name = "rustc-demangle" -version = "0.1.18" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232" +checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" [[package]] name = "rustc-hash" @@ -3970,7 +3884,16 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" dependencies = [ - "semver", + "semver 0.9.0", +] + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", ] [[package]] @@ -4004,9 +3927,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.5" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" +checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695" [[package]] name = "safe_arch" @@ -4025,9 +3948,9 @@ checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" [[package]] name = "salsa20" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c7c5f10864beba947e1a1b43f3ef46c8cc58d1c2ae549fa471713e8ff60787a" +checksum = "ecbd2eb639fd7cab5804a0837fe373cc2172d15437e804c054a9fb885cb923b0" dependencies = [ "cipher", ] @@ -4043,19 +3966,19 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.19" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" +checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" dependencies = [ "lazy_static", - "winapi 0.3.9", + "windows-sys", ] [[package]] name = "schemars" -version = "0.8.8" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6b5a3c80cea1ab61f4260238409510e814e38b4b563c06044edf91e7dc070e3" +checksum = "1847b767a3d62d95cbf3d8a9f0e421cf57a0d8aa4f411d4b16525afb0284d4ed" dependencies = [ "dyn-clone", "schemars_derive", @@ -4065,9 +3988,9 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.8" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41ae4dce13e8614c46ac3c38ef1c0d668b101df6ac39817aebdaa26642ddae9b" +checksum = "af4d7e1b012cb3d9129567661a63755ea4b8a7386d339dc945ae187e403c6743" dependencies = [ "proc-macro2", "quote", @@ -4075,12 +3998,6 @@ dependencies = [ "syn", ] -[[package]] -name = "scoped-tls" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" - [[package]] name = "scoped_threadpool" version = "0.1.9" @@ -4104,7 +4021,7 @@ dependencies = [ "password-hash", "pbkdf2", "salsa20", - "sha2 0.9.5", + "sha2 0.9.9", ] [[package]] @@ -4148,9 +4065,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.4.2" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "525bc1abfda2e1998d152c45cf13e696f76d0a4972310b22fac1658b05df7c87" +checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc" dependencies = [ "bitflags", "core-foundation", @@ -4175,7 +4092,16 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" dependencies = [ - "semver-parser", + "semver-parser 0.7.0", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser 0.10.2", ] [[package]] @@ -4184,20 +4110,29 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" +[[package]] +name = "semver-parser" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" +dependencies = [ + "pest", +] + [[package]] name = "serde" -version = "1.0.125" +version = "1.0.137" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "558dc50e1a5a5fa7112ca2ce4effcb321b0300c0d4ccf0776a9f60cd89031171" +checksum = "61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.125" +version = "1.0.137" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b093b7a2bb58203b5da3056c05b4ec1fed827dcfdb37347a8841695263b3d06d" +checksum = "1f26faba0c3959972377d3b2d306ee9f71faee9714294e41bb777f83f88578be" dependencies = [ "proc-macro2", "quote", @@ -4206,9 +4141,9 @@ dependencies = [ [[package]] name = "serde_derive_internals" -version = "0.25.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dbab34ca63057a1f15280bdf3c39f2b1eb1b54c17e98360e511637aef7418c6" +checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" dependencies = [ "proc-macro2", "quote", @@ -4231,25 +4166,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b7ce2b32a1aed03c558dc61a5cd328f15aff2dbc17daad8fb8af04d2100e15c" dependencies = [ "indexmap", - "itoa 1.0.1", + "itoa", "ryu", "serde", ] [[package]] name = "serde_path_to_error" -version = "0.1.4" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f6109f0506e20f7e0f910e51a0079acf41da8e0694e6442527c4ddf5a2b158" +checksum = "d7868ad3b8196a8a0aea99a8220b124278ee5320a55e4fde97794b6f85b1a377" dependencies = [ "serde", ] [[package]] name = "serde_repr" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98d0516900518c29efa217c298fa1f4e6c6ffc85ae29fd7f4ee48f176e1a9ed5" +checksum = "a2ad84e47328a31223de7fed7a4f5087f2d6ddfe586cf3ca25b7a165bc0a5aed" dependencies = [ "proc-macro2", "quote", @@ -4258,12 +4193,12 @@ dependencies = [ [[package]] name = "serde_urlencoded" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfa57a7f8d9c1d260a549e7224100f6c43d43f9103e06dd8b4095a9b2b43ce9" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ "form_urlencoded", - "itoa 0.4.7", + "itoa", "ryu", "serde", ] @@ -4309,13 +4244,13 @@ dependencies = [ [[package]] name = "sha-1" -version = "0.9.6" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c4cfa741c5832d0ef7fab46cabed29c2aae926db0b11bb2069edd8db5e64e16" +checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" dependencies = [ "block-buffer 0.9.0", "cfg-if 1.0.0", - "cpufeatures 0.1.4", + "cpufeatures", "digest 0.9.0", "opaque-debug", ] @@ -4327,25 +4262,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "028f48d513f9678cda28f6e4064755b3fbb2af6acd672f2c209b62323f7aea0f" dependencies = [ "cfg-if 1.0.0", - "cpufeatures 0.2.1", + "cpufeatures", "digest 0.10.3", ] [[package]] name = "sha1" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" +checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770" +dependencies = [ + "sha1_smol", +] + +[[package]] +name = "sha1_smol" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" [[package]] name = "sha2" -version = "0.9.5" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b362ae5752fd2137731f9fa25fd4d9058af34666ca1966fb969119cc35719f12" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" dependencies = [ "block-buffer 0.9.0", "cfg-if 1.0.0", - "cpufeatures 0.1.4", + "cpufeatures", "digest 0.9.0", "opaque-debug", ] @@ -4357,7 +4301,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676" dependencies = [ "cfg-if 1.0.0", - "cpufeatures 0.2.1", + "cpufeatures", "digest 0.10.3", ] @@ -4372,15 +4316,15 @@ dependencies = [ [[package]] name = "shlex" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42a568c8f2cd051a4d283bd6eb0343ac214c1b0f1ac19f93e1175b2dee38c73d" +checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" [[package]] name = "signal-hook" -version = "0.3.6" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7f3f92a1da3d6b1d32245d0cbcbbab0cfc45996d8df619c42bccfa6d2bbb5f" +checksum = "a253b5e89e2698464fc26b545c9edceb338e18a89effeeecfea192c3025be29d" dependencies = [ "libc", "signal-hook-registry", @@ -4388,9 +4332,9 @@ dependencies = [ [[package]] name = "signal-hook-registry" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f1d0fef1604ba8f7a073c7e701f213e056707210e9020af4528e0101ce11a6" +checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" dependencies = [ "libc", ] @@ -4403,9 +4347,9 @@ checksum = "1ad1d488a557b235fc46dae55512ffbfc429d2482b08b4d9435ab07384ca8aec" [[package]] name = "simple_asn1" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc31e6cf34ad4321d3a2b8f934949b429e314519f753a77962f16c664dca8e13" +checksum = "8eb4ea60fb301dc81dfc113df680571045d375ab7345d171c5dc7d7e13107a80" dependencies = [ "chrono", "num-bigint", @@ -4415,9 +4359,9 @@ dependencies = [ [[package]] name = "simplecss" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "596554e63596d556a0dbd681416342ca61c75f1a45203201e7e77d3fa2fa9014" +checksum = "a11be7c62927d9427e9f40f3444d5499d868648e2edbc4e2116de69e7ec0e89d" dependencies = [ "log", ] @@ -4441,26 +4385,26 @@ checksum = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" [[package]] name = "slab" -version = "0.4.3" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f173ac3d1a7e3b28003f40de0b5ce7fe2710f9b9dc3fc38664cebee46b3b6527" +checksum = "eb703cfe953bccee95685111adeedb76fabe4e97549a58d16f03ea7b9367bb32" [[package]] name = "sluice" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fa0333a60ff2e3474a6775cc611840c2a55610c831dd366503474c02f1a28f5" +checksum = "6d7400c0eff44aa2fcb5e31a5f24ba9716ed90138769e4977a2ba6014ae63eb5" dependencies = [ - "futures-channel", + "async-channel", "futures-core", "futures-io", ] [[package]] name = "smallvec" -version = "1.6.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" +checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" [[package]] name = "smol" @@ -4500,20 +4444,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.3.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" -dependencies = [ - "cfg-if 1.0.0", - "libc", - "winapi 0.3.9", -] - -[[package]] -name = "socket2" -version = "0.4.0" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e3dfc207c526015c632472a77be09cf1b6e46866581aecae5cc38fb4235dea2" +checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" dependencies = [ "libc", "winapi 0.3.9", @@ -4527,22 +4460,20 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" [[package]] name = "sqlformat" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d86e3c77ff882a828346ba401a7ef4b8e440df804491c6064fe8295765de71c" +checksum = "b4b7922be017ee70900be125523f38bdd644f4f06a1b16e8fa5a8ee8c34bffd4" dependencies = [ - "lazy_static", - "maplit", - "nom 6.1.2", - "regex", + "itertools", + "nom", "unicode_categories", ] [[package]] name = "sqlx" -version = "0.5.5" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba82f79b31f30acebf19905bcd8b978f46891b9d0723f578447361a8910b6584" +checksum = "551873805652ba0d912fec5bbb0f8b4cdd96baf8e2ebf5970e5671092966019b" dependencies = [ "sqlx-core", "sqlx-macros", @@ -4550,9 +4481,9 @@ dependencies = [ [[package]] name = "sqlx-core" -version = "0.5.5" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f23af36748ec8ea8d49ef8499839907be41b0b1178a4e82b8cb45d29f531dc9" +checksum = "e48c61941ccf5ddcada342cd59e3e5173b007c509e1e8e990dafc830294d9dc5" dependencies = [ "ahash", "atoi", @@ -4561,31 +4492,33 @@ dependencies = [ "byteorder", "bytes", "crc", - "crossbeam-channel 0.5.0", "crossbeam-queue", - "crossbeam-utils 0.8.2", - "dirs 3.0.1", + "dirs 4.0.0", "either", + "event-listener", "futures-channel", "futures-core", + "futures-intrusive", "futures-util", "hashlink", "hex", - "hmac 0.10.1", - "itoa 0.4.7", + "hkdf", + "hmac 0.12.1", + "indexmap", + "itoa", "libc", "log", "md-5", "memchr", "once_cell", - "parking_lot", + "paste", "percent-encoding", - "rand 0.8.3", + "rand 0.8.5", "rustls", "serde", "serde_json", - "sha-1 0.9.6", - "sha2 0.9.5", + "sha-1 0.10.0", + "sha2 0.10.2", "smallvec", "sqlformat", "sqlx-rt", @@ -4602,18 +4535,17 @@ dependencies = [ [[package]] name = "sqlx-macros" -version = "0.5.5" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47e4a2349d1ffd60a03ca0de3f116ba55d7f406e55a0d84c64a5590866d94c06" +checksum = "bc0fba2b0cae21fc00fe6046f8baa4c7fcb49e379f0f592b04696607f69ed2e1" dependencies = [ "dotenv", "either", - "futures", - "heck 0.3.3", + "heck 0.4.0", "once_cell", "proc-macro2", "quote", - "sha2 0.9.5", + "sha2 0.10.2", "sqlx-core", "sqlx-rt", "syn", @@ -4622,9 +4554,9 @@ dependencies = [ [[package]] name = "sqlx-rt" -version = "0.5.5" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8199b421ecf3493ee9ef3e7bc90c904844cfb2ea7ea2f57347a93f52bfd3e057" +checksum = "4db708cd3e459078f85f39f96a00960bd841f66ee2a669e90bf36907f5a79aae" dependencies = [ "once_cell", "tokio", @@ -4653,7 +4585,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" dependencies = [ "discard", - "rustc_version", + "rustc_version 0.2.3", "stdweb-derive", "stdweb-internal-macros", "stdweb-internal-runtime", @@ -4719,19 +4651,19 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "subtle" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e81da0851ada1f3e9d4312c704aa4f8806f0f9d69faaf8df2f3464b4a9437c2" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "sum_tree" version = "0.1.0" dependencies = [ - "arrayvec 0.7.1", + "arrayvec 0.7.2", "ctor", "env_logger", "log", - "rand 0.8.3", + "rand 0.8.5", ] [[package]] @@ -4771,13 +4703,13 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.91" +version = "1.0.96" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b683b2b825c8eef438b77c36a06dc262294da3d5a5813fac20da149241dcd44d" +checksum = "0748dd251e24453cb8717f0354206b91557e4ec8703673a4b30208f2abaf1ebf" dependencies = [ "proc-macro2", "quote", - "unicode-xid", + "unicode-ident", ] [[package]] @@ -4788,9 +4720,9 @@ checksum = "20518fe4a4c9acf048008599e464deb21beeae3d3578418951a189c235a7a9a8" [[package]] name = "synstructure" -version = "0.12.4" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b834f2d66f734cb897113e34aaff2f1ab4719ca946f9a7358dba8f8064148701" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ "proc-macro2", "quote", @@ -4798,12 +4730,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - [[package]] name = "tempdir" version = "0.3.7" @@ -4830,9 +4756,9 @@ dependencies = [ [[package]] name = "termcolor" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" +checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" dependencies = [ "winapi-util", ] @@ -4842,7 +4768,7 @@ name = "text" version = "0.1.0" dependencies = [ "anyhow", - "arrayvec 0.7.1", + "arrayvec 0.7.2", "clock", "collections", "ctor", @@ -4850,9 +4776,9 @@ dependencies = [ "gpui", "lazy_static", "log", - "parking_lot", + "parking_lot 0.11.2", "postage", - "rand 0.8.3", + "rand 0.8.5", "smallvec", "sum_tree", "util", @@ -4880,7 +4806,7 @@ dependencies = [ "anyhow", "gpui", "indexmap", - "parking_lot", + "parking_lot 0.11.2", "serde", "serde_json", "serde_path_to_error", @@ -4895,7 +4821,7 @@ dependencies = [ "fuzzy", "gpui", "log", - "parking_lot", + "parking_lot 0.11.2", "picker", "postage", "settings", @@ -4906,18 +4832,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.29" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "602eca064b2d83369e2b2f34b09c70b605402801927c65c11071ac911d299b88" +checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.29" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bad553cc2c78e8de258400763a647e80e6d1b31ee237275d756f6836d204494c" +checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" dependencies = [ "proc-macro2", "quote", @@ -4952,12 +4878,11 @@ dependencies = [ [[package]] name = "time" -version = "0.1.44" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" +checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" dependencies = [ "libc", - "wasi 0.10.0+wasi-snapshot-preview1", "winapi 0.3.9", ] @@ -4978,11 +4903,11 @@ dependencies = [ [[package]] name = "time" -version = "0.3.7" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "004cbc98f30fa233c61a38bc77e96a9106e65c88f2d3bef182ae952027e5753d" +checksum = "c2702e08a7a860f005826c6815dcac101b19b5eb330c27fe4a5928fec1d20ddd" dependencies = [ - "itoa 1.0.1", + "itoa", "libc", "num_threads", ] @@ -5039,9 +4964,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.2.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b5220f05bb7de7f3f53c7c065e1199b3172696fe2db9f9c4d8ad9b4ee74c342" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" dependencies = [ "tinyvec_macros", ] @@ -5054,19 +4979,20 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.16.1" +version = "1.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c27a64b625de6d309e8c57716ba93021dccf1b3b5c97edd6d3dd2d2135afc0a" +checksum = "c51a52ed6686dd62c320f9b89299e9dfb46f730c7a48e635c19f21d116cb1439" dependencies = [ "bytes", "libc", "memchr", - "mio 0.7.14", + "mio 0.8.3", "num_cpus", "once_cell", - "parking_lot", + "parking_lot 0.12.1", "pin-project-lite 0.2.9", "signal-hook-registry", + "socket2", "tokio-macros", "winapi 0.3.9", ] @@ -5083,9 +5009,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b557f72f448c511a979e2564e55d74e6c4432fc96ff4f6241bc6bded342643b7" +checksum = "9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484" dependencies = [ "proc-macro2", "quote", @@ -5115,9 +5041,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50145484efff8818b5ccd256697f36863f587da82cf8b409c53adf1e840798e3" +checksum = "df54d54117d6fdc4e4fea40fe1e4e566b3505700e148a6827e59b34b0d2600d9" dependencies = [ "futures-core", "pin-project-lite 0.2.9", @@ -5138,9 +5064,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.6.9" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e99e1983e5d376cd8eb4b66604d2e99e79f5bd988c3055891dcd8c9e2604cc0" +checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" dependencies = [ "bytes", "futures-core", @@ -5152,9 +5078,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0edfdeb067411dba2044da6d1cb2df793dd35add7888d73c16e3381ded401764" +checksum = "cc463cd8deddc3770d20f9852143d50bf6094e640b485cb2e189a2099085ff45" dependencies = [ "bytes", "futures-core", @@ -5166,9 +5092,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.5.8" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" dependencies = [ "serde", ] @@ -5196,7 +5122,7 @@ dependencies = [ "prost-derive 0.9.0", "tokio", "tokio-stream", - "tokio-util 0.6.9", + "tokio-util 0.6.10", "tower", "tower-layer", "tower-service", @@ -5215,10 +5141,10 @@ dependencies = [ "indexmap", "pin-project", "pin-project-lite 0.2.9", - "rand 0.8.3", + "rand 0.8.5", "slab", "tokio", - "tokio-util 0.7.1", + "tokio-util 0.7.3", "tower-layer", "tower-service", "tracing", @@ -5226,9 +5152,9 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.3.0" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79dd37121c38240c4b4fe6520332406218bbf876f2f690fe9e406020189366fd" +checksum = "3c530c8675c1dbf98facee631536fa116b5fb6382d7dd6dc1b118d970eafe3ba" dependencies = [ "bitflags", "bytes", @@ -5326,7 +5252,7 @@ version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4bc28f93baff38037f64e6f43d34cfa1605f27a49c34e8a04c5e78b0babf2596" dependencies = [ - "ansi_term 0.12.1", + "ansi_term", "lazy_static", "matchers", "regex", @@ -5442,9 +5368,9 @@ checksum = "62ddb402ac6c2af6f7a2844243887631c4e94b51585b229fcfddb43958cd55ca" [[package]] name = "ttf-parser" -version = "0.12.0" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85e00391c1f3d171490a3f8bd79999b0002ae38d3da0d6a3a306c754b053d71b" +checksum = "7ae2f58a822f08abdaf668897e96a5656fe72f5a9ce66422423e8849384872e6" [[package]] name = "tungstenite" @@ -5458,8 +5384,8 @@ dependencies = [ "http", "httparse", "log", - "rand 0.8.3", - "sha-1 0.9.6", + "rand 0.8.5", + "sha-1 0.9.8", "thiserror", "url", "utf-8", @@ -5477,7 +5403,7 @@ dependencies = [ "http", "httparse", "log", - "rand 0.8.3", + "rand 0.8.5", "sha-1 0.10.0", "thiserror", "url", @@ -5490,6 +5416,12 @@ version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" +[[package]] +name = "ucd-trie" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" + [[package]] name = "unicase" version = "2.6.0" @@ -5501,12 +5433,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.4" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" -dependencies = [ - "matches", -] +checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" [[package]] name = "unicode-bidi-mirroring" @@ -5516,9 +5445,9 @@ checksum = "56d12260fb92d52f9008be7e4bca09f584780eb2266dc8fecc6a192bec561694" [[package]] name = "unicode-ccc" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28ae07c514c335bbd0251147bb1de333e28ebc8f57d792014f919ed212d119f6" +checksum = "cc2520efa644f8268dce4dcd3050eaa7fc044fca03961e9998ac7e2e92b77cf1" [[package]] name = "unicode-general-category" @@ -5526,6 +5455,12 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f9af028e052a610d99e066b33304625dea9613170a2563314490a4e6ec5cf7f" +[[package]] +name = "unicode-ident" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee" + [[package]] name = "unicode-normalization" version = "0.1.19" @@ -5537,15 +5472,15 @@ dependencies = [ [[package]] name = "unicode-script" -version = "0.5.2" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79bf4d5fc96546fdb73f9827097810bbda93b11a6770ff3a54e1f445d4135787" +checksum = "58dd944fd05f2f0b5c674917aea8a4df6af84f2d8de3fe8d988b95d28fb8fb09" [[package]] name = "unicode-segmentation" -version = "1.7.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0d2e7be6ae3a5fa87eed5fb451aff96f2573d2694942e40543ae0bbe19c796" +checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" [[package]] name = "unicode-vo" @@ -5555,15 +5490,15 @@ checksum = "b1d386ff53b415b7fe27b50bb44679e2cc4660272694b7b6f3326d8480823a94" [[package]] name = "unicode-width" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" +checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" [[package]] name = "unicode-xid" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" +checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04" [[package]] name = "unicode_categories" @@ -5573,9 +5508,9 @@ checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" [[package]] name = "unindent" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514672a55d7380da379785a4d70ca8386c8883ff7eaae877be4d2081cebe73d8" +checksum = "52fee519a3e570f7df377a06a1a7775cdbfb7aa460be7e08de2b1f0e69973a44" [[package]] name = "untrusted" @@ -5598,9 +5533,9 @@ dependencies = [ [[package]] name = "usvg" -version = "0.14.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ffbeb91d06989028c9c5e44d14d78b0cacdec56a613bb146e7a70007b1b6163" +checksum = "ef8352f317d8f9a918ba5154797fb2a93e2730244041cf7d5be35148266adfa5" dependencies = [ "base64 0.13.0", "data-url", @@ -5608,7 +5543,7 @@ dependencies = [ "fontdb", "kurbo", "log", - "memmap2 0.2.2", + "memmap2", "pico-args", "rctree", "roxmltree", @@ -5616,7 +5551,7 @@ dependencies = [ "simplecss", "siphasher", "svgtypes", - "ttf-parser 0.12.0", + "ttf-parser 0.12.3", "unicode-bidi", "unicode-script", "unicode-vo", @@ -5636,7 +5571,7 @@ dependencies = [ "anyhow", "futures", "log", - "rand 0.8.3", + "rand 0.8.5", "serde_json", "tempdir", ] @@ -5647,7 +5582,7 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" dependencies = [ - "getrandom 0.2.2", + "getrandom 0.2.6", ] [[package]] @@ -5658,9 +5593,9 @@ checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "value-bag" -version = "1.0.0-alpha.8" +version = "1.0.0-alpha.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79923f7731dc61ebfba3633098bf3ac533bbd35ccd8c57e7088d9a5eebe0263f" +checksum = "2209b78d1249f7e6f3293657c9779fe31ced465df091bbd433a1cf88e916ec55" dependencies = [ "ctor", "erased-serde", @@ -5672,15 +5607,9 @@ dependencies = [ [[package]] name = "vcpkg" -version = "0.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "025ce40a007e1907e58d5bc1a594def78e5573bb0b1160bc389634e8f12e4faa" - -[[package]] -name = "vec-arena" -version = "1.0.0" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eafc1b9b2dfc6f5529177b62cf806484db55b32dc7c9658a118e11bbeb33061d" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "vec_map" @@ -5690,9 +5619,9 @@ checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] name = "version_check" -version = "0.9.2" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "vim" @@ -5721,9 +5650,9 @@ checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" [[package]] name = "walkdir" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "777182bc735b6424e1a57516d35ed72cb8019d85c8c9bf536dccb3445c1a2f7d" +checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" dependencies = [ "same-file", "winapi 0.3.9", @@ -5748,15 +5677,21 @@ checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" [[package]] name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" +version = "0.10.2+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.74" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54ee1d4ed486f78874278e63e4069fc1ab9f6a18ca492076ffb90c5eb2997fd" +checksum = "27370197c907c55e3f1a9fbe26f44e937fe6451368324e009cba39e139dc08ad" dependencies = [ "cfg-if 1.0.0", "wasm-bindgen-macro", @@ -5764,9 +5699,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.74" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b33f6a0694ccfea53d94db8b2ed1c3a8a4c86dd936b13b9f0a15ec4a451b900" +checksum = "53e04185bfa3a779273da532f5025e33398409573f348985af9a1cbf3774d3f4" dependencies = [ "bumpalo", "lazy_static", @@ -5779,9 +5714,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.24" +version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fba7978c679d53ce2d0ac80c8c175840feb849a161664365d1287b41f2e67f1" +checksum = "6f741de44b75e14c35df886aff5f1eb73aa114fa5d4d00dcd37b5e01259bf3b2" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -5791,9 +5726,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.74" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "088169ca61430fe1e58b8096c24975251700e7b1f6fd91cc9d59b04fb9b18bd4" +checksum = "17cae7ff784d7e83a2fe7611cfe766ecf034111b49deb850a3dc7699c08251f5" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5801,9 +5736,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.74" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be2241542ff3d9f241f5e2cb6dd09b37efe786df8851c54957683a49f0987a97" +checksum = "99ec0dc7a4756fffc231aab1b9f2f578d23cd391390ab27f952ae0c9b3ece20b" dependencies = [ "proc-macro2", "quote", @@ -5814,15 +5749,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.74" +version = "0.2.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7cff876b8f18eed75a66cf49b65e7f967cb354a7aa16003fb55dbfd25b44b4f" +checksum = "d554b7f530dee5964d9a9468d95c1f8b8acae4f282807e7d27d4b03099a46744" [[package]] name = "web-sys" -version = "0.3.51" +version = "0.3.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e828417b379f3df7111d3a2a9e5753706cae29c41f7c4029ee9fd77f3e09e582" +checksum = "7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283" dependencies = [ "js-sys", "wasm-bindgen", @@ -5849,15 +5784,15 @@ dependencies = [ [[package]] name = "weezl" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b77fdfd5a253be4ab714e4ffa3c49caf146b4de743e97510c0656cf90f1e8e" +checksum = "9c97e489d8f836838d497091de568cf16b117486d529ec5579233521065bd5e4" [[package]] -name = "wepoll-sys" -version = "3.0.1" +name = "wepoll-ffi" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcb14dea929042224824779fbc82d9fab8d2e6d3cbc0ac404de8edf489e77ff" +checksum = "d743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fb" dependencies = [ "cc", ] @@ -5875,9 +5810,9 @@ dependencies = [ [[package]] name = "whoami" -version = "1.1.2" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4abacf325c958dfeaf1046931d37f2a901b6dfe0968ee965a29e94c6766b2af6" +checksum = "524b58fa5a20a2fb3014dd6358b70e6579692a56ef6fce928834e488f42f65e8" dependencies = [ "wasm-bindgen", "web-sys", @@ -5926,11 +5861,54 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-sys" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +dependencies = [ + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" + +[[package]] +name = "windows_i686_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" + +[[package]] +name = "windows_i686_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" + [[package]] name = "winreg" -version = "0.7.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" dependencies = [ "winapi 0.3.9", ] @@ -5956,7 +5934,7 @@ dependencies = [ "gpui", "language", "log", - "parking_lot", + "parking_lot 0.11.2", "postage", "project", "serde", @@ -5977,12 +5955,6 @@ dependencies = [ "winapi-build", ] -[[package]] -name = "wyz" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" - [[package]] name = "xml-rs" version = "0.8.4" @@ -6024,7 +5996,7 @@ dependencies = [ "context_menu", "ctor", "diagnostics", - "dirs 3.0.1", + "dirs 3.0.2", "easy-parallel", "editor", "env_logger", @@ -6047,12 +6019,12 @@ dependencies = [ "lsp", "num_cpus", "outline", - "parking_lot", + "parking_lot 0.11.2", "postage", "project", "project_panel", "project_symbols", - "rand 0.8.3", + "rand 0.8.5", "regex", "rpc", "rsa", @@ -6099,9 +6071,9 @@ dependencies = [ [[package]] name = "zeroize_derive" -version = "1.1.0" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2c1e130bebaeab2f23886bf9acbaca14b092408c452543c857f66399cd6dab1" +checksum = "3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17" dependencies = [ "proc-macro2", "quote", @@ -6111,18 +6083,18 @@ dependencies = [ [[package]] name = "zstd" -version = "0.9.0+zstd.1.5.0" +version = "0.9.2+zstd.1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07749a5dc2cb6b36661290245e350f15ec3bbb304e493db54a1d354480522ccd" +checksum = "2390ea1bf6c038c39674f22d95f0564725fc06034a47129179810b2fc58caa54" dependencies = [ "zstd-safe", ] [[package]] name = "zstd-safe" -version = "4.1.1+zstd.1.5.0" +version = "4.1.3+zstd.1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c91c90f2c593b003603e5e0493c837088df4469da25aafff8bce42ba48caf079" +checksum = "e99d81b99fb3c2c2c794e3fe56c305c63d5173a16a46b5850b07c935ffc7db79" dependencies = [ "libc", "zstd-sys", @@ -6130,9 +6102,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "1.6.1+zstd.1.5.0" +version = "1.6.2+zstd.1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "615120c7a2431d16cf1cf979e7fc31ba7a5b5e5707b29c8a99e5dbf8a8392a33" +checksum = "2daf2f248d9ea44454bfcb2516534e8b8ad2fc91bf818a1885495fc42bc8ac9f" dependencies = [ "cc", "libc", diff --git a/assets/keymaps/vim.json b/assets/keymaps/vim.json index c1e5d7db8c576ca388653c0662179046000a260d..6fcd5d3d12590761becc8c33dcbfe9ce1baf7e23 100644 --- a/assets/keymaps/vim.json +++ b/assets/keymaps/vim.json @@ -99,6 +99,7 @@ "context": "Editor && vim_operator == g", "bindings": { "g": "vim::StartOfDocument", + "h": "editor::Hover", "escape": [ "vim::SwitchMode", "Normal" diff --git a/crates/collab/src/integration_tests.rs b/crates/collab/src/integration_tests.rs index d335aabbe460260d880b6b2c2cfda2a9f837bcd1..cf9e7ec8a72e53edcce7cf77452052564fd67982 100644 --- a/crates/collab/src/integration_tests.rs +++ b/crates/collab/src/integration_tests.rs @@ -2281,6 +2281,104 @@ async fn test_document_highlights(cx_a: &mut TestAppContext, cx_b: &mut TestAppC }); } +#[gpui::test(iterations = 10)] +async fn test_lsp_hover(cx_a: &mut TestAppContext, cx_b: &mut TestAppContext) { + cx_a.foreground().forbid_parking(); + let mut server = TestServer::start(cx_a.foreground(), cx_a.background()).await; + let client_a = server.create_client(cx_a, "user_a").await; + let client_b = server.create_client(cx_b, "user_b").await; + server + .make_contacts(vec![(&client_a, cx_a), (&client_b, cx_b)]) + .await; + + client_a + .fs + .insert_tree( + "/root-1", + json!({ + "main.rs": "use std::collections::HashMap;", + }), + ) + .await; + + // Set up a fake language server. + let mut language = Language::new( + LanguageConfig { + name: "Rust".into(), + path_suffixes: vec!["rs".to_string()], + ..Default::default() + }, + Some(tree_sitter_rust::language()), + ); + let mut fake_language_servers = language.set_fake_lsp_adapter(Default::default()); + client_a.language_registry.add(Arc::new(language)); + + let (project_a, worktree_id) = client_a.build_local_project("/root-1", cx_a).await; + let project_b = client_b.build_remote_project(&project_a, cx_a, cx_b).await; + + // Open the file as the guest + let buffer_b = cx_b + .background() + .spawn(project_b.update(cx_b, |p, cx| p.open_buffer((worktree_id, "main.rs"), cx))) + .await + .unwrap(); + + // Request hover information as the guest. + let fake_language_server = fake_language_servers.next().await.unwrap(); + fake_language_server.handle_request::( + |params, _| async move { + assert_eq!( + params + .text_document_position_params + .text_document + .uri + .as_str(), + "file:///root-1/main.rs" + ); + assert_eq!( + params.text_document_position_params.position, + lsp::Position::new(0, 22) + ); + Ok(Some(lsp::Hover { + contents: lsp::HoverContents::Array(vec![ + lsp::MarkedString::String("Test hover content.".to_string()), + lsp::MarkedString::LanguageString(lsp::LanguageString { + language: "Rust".to_string(), + value: "let foo = 42;".to_string(), + }), + ]), + range: Some(lsp::Range::new( + lsp::Position::new(0, 22), + lsp::Position::new(0, 29), + )), + })) + }, + ); + + let hover_info = project_b + .update(cx_b, |p, cx| p.hover(&buffer_b, 22, cx)) + .await + .unwrap() + .unwrap(); + buffer_b.read_with(cx_b, |buffer, _| { + let snapshot = buffer.snapshot(); + assert_eq!(hover_info.range.unwrap().to_offset(&snapshot), 22..29); + assert_eq!( + hover_info.contents, + vec![ + project::HoverBlock { + text: "Test hover content.".to_string(), + language: None, + }, + project::HoverBlock { + text: "let foo = 42;".to_string(), + language: Some("Rust".to_string()), + } + ] + ); + }); +} + #[gpui::test(iterations = 10)] async fn test_project_symbols(cx_a: &mut TestAppContext, cx_b: &mut TestAppContext) { cx_a.foreground().forbid_parking(); diff --git a/crates/collab/src/rpc.rs b/crates/collab/src/rpc.rs index 407911c390c776c30ba75d83bc99a78b1f87ccec..40ce95bce61fb7181fae8f4cd644234281b6cacf 100644 --- a/crates/collab/src/rpc.rs +++ b/crates/collab/src/rpc.rs @@ -150,6 +150,7 @@ impl Server { .add_message_handler(Server::start_language_server) .add_message_handler(Server::update_language_server) .add_message_handler(Server::update_diagnostic_summary) + .add_request_handler(Server::forward_project_request::) .add_request_handler(Server::forward_project_request::) .add_request_handler(Server::forward_project_request::) .add_request_handler(Server::forward_project_request::) diff --git a/crates/editor/src/editor.rs b/crates/editor/src/editor.rs index db287fe65af736f0ed46a5c071fe0b1a75a2efc7..20bc53db377ce25c029cd6cd128a947c89cc5c49 100644 --- a/crates/editor/src/editor.rs +++ b/crates/editor/src/editor.rs @@ -25,7 +25,7 @@ use gpui::{ geometry::vector::{vec2f, Vector2F}, impl_actions, impl_internal_actions, platform::CursorStyle, - text_layout, AppContext, AsyncAppContext, ClipboardItem, Element, ElementBox, Entity, + text_layout, AppContext, AsyncAppContext, Axis, ClipboardItem, Element, ElementBox, Entity, ModelHandle, MutableAppContext, RenderContext, Task, View, ViewContext, ViewHandle, WeakViewHandle, }; @@ -39,7 +39,7 @@ pub use multi_buffer::{ Anchor, AnchorRangeExt, ExcerptId, MultiBuffer, MultiBufferSnapshot, ToOffset, ToPoint, }; use ordered_float::OrderedFloat; -use project::{Project, ProjectTransaction}; +use project::{HoverBlock, Project, ProjectTransaction}; use selections_collection::{resolve_multiple, MutableSelectionsCollection, SelectionsCollection}; use serde::{Deserialize, Serialize}; use settings::Settings; @@ -80,6 +80,11 @@ pub struct Scroll(pub Vector2F); #[derive(Clone, PartialEq)] pub struct Select(pub SelectPhase); +#[derive(Clone, PartialEq)] +pub struct HoverAt { + point: Option, +} + #[derive(Clone, Deserialize, PartialEq)] pub struct Input(pub String); @@ -113,6 +118,11 @@ pub struct ConfirmCodeAction { pub item_ix: Option, } +#[derive(Clone, Default)] +pub struct GoToDefinitionAt { + pub location: Option, +} + actions!( editor, [ @@ -173,10 +183,10 @@ actions!( ToggleComments, SelectLargerSyntaxNode, SelectSmallerSyntaxNode, + GoToDefinition, MoveToEnclosingBracket, UndoSelection, RedoSelection, - GoToDefinition, FindAllReferences, Rename, ConfirmRename, @@ -188,6 +198,7 @@ actions!( ShowCompletions, OpenExcerpts, RestartLanguageServer, + Hover, ] ); @@ -204,7 +215,7 @@ impl_actions!( ] ); -impl_internal_actions!(editor, [Scroll, Select]); +impl_internal_actions!(editor, [Scroll, Select, HoverAt]); enum DocumentHighlightRead {} enum DocumentHighlightWrite {} @@ -291,6 +302,8 @@ pub fn init(cx: &mut MutableAppContext) { cx.add_action(Editor::fold_selected_ranges); cx.add_action(Editor::show_completions); cx.add_action(Editor::toggle_code_actions); + cx.add_action(Editor::hover); + cx.add_action(Editor::hover_at); cx.add_action(Editor::open_excerpts); cx.add_action(Editor::restart_language_server); cx.add_async_action(Editor::confirm_completion); @@ -408,6 +421,7 @@ pub struct Editor { next_completion_id: CompletionId, available_code_actions: Option<(ModelHandle, Arc<[CodeAction]>)>, code_actions_task: Option>, + hover_task: Option>>, document_highlights_task: Option>, pending_rename: Option, searchable: bool, @@ -415,6 +429,40 @@ pub struct Editor { keymap_context_layers: BTreeMap, input_enabled: bool, leader_replica_id: Option, + hover_state: HoverState, +} + +/// Keeps track of the state of the [`HoverPopover`]. +/// Times out the initial delay and the grace period. +pub struct HoverState { + popover: Option, + last_hover: std::time::Instant, + start_grace: std::time::Instant, +} + +impl HoverState { + /// Takes whether the cursor is currently hovering over a symbol, + /// and returns a tuple containing whether there was a recent hover, + /// and whether the hover is still in the grace period. + pub fn determine_state(&mut self, hovering: bool) -> (bool, bool) { + // NOTE: We use some sane defaults, but it might be + // nice to make these values configurable. + let recent_hover = self.last_hover.elapsed() < std::time::Duration::from_millis(500); + if !hovering { + self.last_hover = std::time::Instant::now(); + } + + let in_grace = self.start_grace.elapsed() < std::time::Duration::from_millis(250); + if hovering && !recent_hover { + self.start_grace = std::time::Instant::now(); + } + + return (recent_hover, in_grace); + } + + pub fn close(&mut self) { + self.popover.take(); + } } pub struct EditorSnapshot { @@ -841,6 +889,67 @@ impl CodeActionsMenu { } } +#[derive(Clone)] +pub(crate) struct HoverPopover { + pub project: ModelHandle, + pub hover_point: DisplayPoint, + pub range: Range, + pub contents: Vec, +} + +impl HoverPopover { + fn render( + &self, + style: EditorStyle, + cx: &mut RenderContext, + ) -> (DisplayPoint, ElementBox) { + let element = MouseEventHandler::new::(0, cx, |_, cx| { + let mut flex = Flex::new(Axis::Vertical).scrollable::(1, None, cx); + flex.extend(self.contents.iter().map(|content| { + let project = self.project.read(cx); + if let Some(language) = content + .language + .clone() + .and_then(|language| project.languages().get_language(&language)) + { + let runs = language + .highlight_text(&content.text.as_str().into(), 0..content.text.len()); + + Text::new(content.text.clone(), style.text.clone()) + .with_soft_wrap(true) + .with_highlights( + runs.iter() + .filter_map(|(range, id)| { + id.style(style.theme.syntax.as_ref()) + .map(|style| (range.clone(), style)) + }) + .collect(), + ) + .boxed() + } else { + Text::new(content.text.clone(), style.hover_popover.prose.clone()) + .with_soft_wrap(true) + .contained() + .with_style(style.hover_popover.block_style) + .boxed() + } + })); + flex.contained() + .with_style(style.hover_popover.container) + .boxed() + }) + .with_cursor_style(CursorStyle::Arrow) + .with_padding(Padding { + bottom: 5., + top: 5., + ..Default::default() + }) + .boxed(); + + (self.range.start, element) + } +} + #[derive(Debug)] struct ActiveDiagnosticGroup { primary_range: Range, @@ -998,6 +1107,7 @@ impl Editor { next_completion_id: 0, available_code_actions: Default::default(), code_actions_task: Default::default(), + hover_task: Default::default(), document_highlights_task: Default::default(), pending_rename: Default::default(), searchable: true, @@ -1006,6 +1116,11 @@ impl Editor { keymap_context_layers: Default::default(), input_enabled: true, leader_replica_id: None, + hover_state: HoverState { + popover: None, + last_hover: std::time::Instant::now(), + start_grace: std::time::Instant::now(), + }, }; this.end_selection(cx); @@ -1391,6 +1506,8 @@ impl Editor { } } + self.hide_hover(cx); + if old_cursor_position.to_display_point(&display_map).row() != new_cursor_position.to_display_point(&display_map).row() { @@ -1752,6 +1869,10 @@ impl Editor { return; } + if self.hide_hover(cx) { + return; + } + if self.hide_context_menu(cx).is_some() { return; } @@ -2380,6 +2501,179 @@ impl Editor { })) } + /// Bindable action which uses the most recent selection head to trigger a hover + fn hover(&mut self, _: &Hover, cx: &mut ViewContext) { + let head = self.selections.newest_display(cx).head(); + self.show_hover(head, true, cx); + } + + /// The internal hover action dispatches between `show_hover` or `hide_hover` + /// depending on whether a point to hover over is provided. + fn hover_at(&mut self, action: &HoverAt, cx: &mut ViewContext) { + if let Some(point) = action.point { + self.show_hover(point, false, cx); + } else { + self.hide_hover(cx); + } + } + + /// Hides the type information popup. + /// Triggered by the `Hover` action when the cursor is not over a symbol or when the + /// selecitons changed. + fn hide_hover(&mut self, cx: &mut ViewContext) -> bool { + // consistently keep track of state to make handoff smooth + self.hover_state.determine_state(false); + + let mut did_hide = false; + + // only notify the context once + if self.hover_state.popover.is_some() { + self.hover_state.popover = None; + did_hide = true; + cx.notify(); + } + + self.clear_background_highlights::(cx); + + self.hover_task = None; + + did_hide + } + + /// Queries the LSP and shows type info and documentation + /// about the symbol the mouse is currently hovering over. + /// Triggered by the `Hover` action when the cursor may be over a symbol. + fn show_hover( + &mut self, + point: DisplayPoint, + ignore_timeout: bool, + cx: &mut ViewContext, + ) { + if self.pending_rename.is_some() { + return; + } + + if let Some(hover) = &self.hover_state.popover { + if hover.hover_point == point { + // Hover triggered from same location as last time. Don't show again. + return; + } + } + + let snapshot = self.snapshot(cx); + let (buffer, buffer_position) = if let Some(output) = self + .buffer + .read(cx) + .text_anchor_for_position(point.to_point(&snapshot.display_snapshot), cx) + { + output + } else { + return; + }; + + let project = if let Some(project) = self.project.clone() { + project + } else { + return; + }; + + // query the LSP for hover info + let hover_request = project.update(cx, |project, cx| { + project.hover(&buffer, buffer_position.clone(), cx) + }); + + let buffer_snapshot = buffer.read(cx).snapshot(); + + let task = cx.spawn_weak(|this, mut cx| { + async move { + // Construct new hover popover from hover request + let hover_popover = hover_request.await.ok().flatten().and_then(|hover_result| { + if hover_result.contents.is_empty() { + return None; + } + + let range = if let Some(range) = hover_result.range { + let offset_range = range.to_offset(&buffer_snapshot); + if !offset_range + .contains(&point.to_offset(&snapshot.display_snapshot, Bias::Left)) + { + return None; + } + + offset_range + .start + .to_display_point(&snapshot.display_snapshot) + ..offset_range + .end + .to_display_point(&snapshot.display_snapshot) + } else { + point..point + }; + + Some(HoverPopover { + project: project.clone(), + hover_point: point, + range, + contents: hover_result.contents, + }) + }); + + if let Some(this) = this.upgrade(&cx) { + this.update(&mut cx, |this, cx| { + // this was trickier than expected, trying to do a couple things: + // + // 1. if you hover over a symbol, there should be a slight delay + // before the popover shows + // 2. if you move to another symbol when the popover is showing, + // the popover should switch right away, and you should + // not have to wait for it to come up again + let (recent_hover, in_grace) = + this.hover_state.determine_state(hover_popover.is_some()); + let smooth_handoff = + this.hover_state.popover.is_some() && hover_popover.is_some(); + let visible = this.hover_state.popover.is_some() || hover_popover.is_some(); + + // `smooth_handoff` and `in_grace` determine whether to switch right away. + // `recent_hover` will activate the handoff after the initial delay. + // `ignore_timeout` is set when the user manually sent the hover action. + if (ignore_timeout || smooth_handoff || !recent_hover || in_grace) + && visible + { + // Highlight the selected symbol using a background highlight + if let Some(display_range) = + hover_popover.as_ref().map(|popover| popover.range.clone()) + { + let start = snapshot.display_snapshot.buffer_snapshot.anchor_after( + display_range + .start + .to_offset(&snapshot.display_snapshot, Bias::Right), + ); + let end = snapshot.display_snapshot.buffer_snapshot.anchor_before( + display_range + .end + .to_offset(&snapshot.display_snapshot, Bias::Left), + ); + + this.highlight_background::( + vec![start..end], + |theme| theme.editor.hover_popover.highlight, + cx, + ); + } + + this.hover_state.popover = hover_popover; + cx.notify(); + } + }); + } + Ok::<_, anyhow::Error>(()) + } + .log_err() + }); + + self.hover_task = Some(task); + } + async fn open_project_transaction( this: ViewHandle, workspace: ViewHandle, @@ -2626,6 +2920,10 @@ impl Editor { .map(|menu| menu.render(cursor_position, style, cx)) } + pub(crate) fn hover_popover(&self) -> Option { + self.hover_state.popover.clone() + } + fn show_context_menu(&mut self, menu: ContextMenu, cx: &mut ViewContext) { if !matches!(menu, ContextMenu::Completions(_)) { self.completion_tasks.clear(); @@ -4706,7 +5004,6 @@ impl Editor { // Position the selection in the rename editor so that it matches the current selection. this.show_local_selections = false; let rename_editor = cx.add_view(|cx| { - println!("Rename editor created."); let mut editor = Editor::single_line(None, cx); if let Some(old_highlight_id) = old_highlight_id { editor.override_text_style = diff --git a/crates/editor/src/element.rs b/crates/editor/src/element.rs index 771bc1049c5131db9d9e7c59386693685f46f864..594c047d5b3e1119c775b43b90309209d2b92ef1 100644 --- a/crates/editor/src/element.rs +++ b/crates/editor/src/element.rs @@ -5,7 +5,7 @@ use super::{ }; use crate::{ display_map::{DisplaySnapshot, TransformBlock}, - EditorStyle, + EditorStyle, HoverAt, }; use clock::ReplicaId; use collections::{BTreeMap, HashMap}; @@ -102,6 +102,7 @@ impl EditorElement { fn mouse_down( &self, position: Vector2F, + _: bool, alt: bool, shift: bool, mut click_count: usize, @@ -121,7 +122,7 @@ impl EditorElement { if shift && alt { cx.dispatch_action(Select(SelectPhase::BeginColumnar { position, - overshoot, + overshoot: overshoot.column(), })); } else if shift { cx.dispatch_action(Select(SelectPhase::Extend { @@ -190,7 +191,7 @@ impl EditorElement { cx.dispatch_action(Select(SelectPhase::Update { position, - overshoot, + overshoot: overshoot.column(), scroll_position: (snapshot.scroll_position() + scroll_delta) .clamp(Vector2F::zero(), layout.scroll_max), })); @@ -349,6 +350,7 @@ impl EditorElement { bounds: RectF, visible_bounds: RectF, layout: &mut LayoutState, + paint: &mut PaintState, cx: &mut PaintContext, ) { let view = self.view(cx.app); @@ -490,7 +492,7 @@ impl EditorElement { let mut list_origin = content_origin + vec2f(x, y); let list_height = context_menu.size().y(); - if list_origin.y() + list_height > bounds.lower_left().y() { + if list_origin.y() + list_height > bounds.max_y() { list_origin.set_y(list_origin.y() - layout.line_height - list_height); } @@ -503,6 +505,38 @@ impl EditorElement { cx.scene.pop_stacking_context(); } + if let Some((position, hover_popover)) = layout.hover.as_mut() { + cx.scene.push_stacking_context(None); + + // This is safe because we check on layout whether the required row is available + let hovered_row_layout = &layout.line_layouts[(position.row() - start_row) as usize]; + let size = hover_popover.size(); + let x = hovered_row_layout.x_for_index(position.column() as usize) - scroll_left; + let y = position.row() as f32 * layout.line_height - scroll_top - size.y(); + let mut popover_origin = content_origin + vec2f(x, y); + + if popover_origin.y() < 0.0 { + popover_origin.set_y(popover_origin.y() + layout.line_height + size.y()); + } + + let x_out_of_bounds = bounds.max_x() - (popover_origin.x() + size.x()); + if x_out_of_bounds < 0.0 { + popover_origin.set_x(popover_origin.x() + x_out_of_bounds); + } + + hover_popover.paint( + popover_origin, + RectF::from_points(Vector2F::zero(), vec2f(f32::MAX, f32::MAX)), // Let content bleed outside of editor + cx, + ); + + paint.hover_bounds = Some( + RectF::new(popover_origin, hover_popover.size()).dilate(Vector2F::new(0., 5.)), + ); + + cx.scene.pop_stacking_context(); + } + cx.scene.pop_layer(); } @@ -1076,6 +1110,7 @@ impl Element for EditorElement { let mut context_menu = None; let mut code_actions_indicator = None; + let mut hover = None; cx.render(&self.view.upgrade(cx).unwrap(), |view, cx| { let newest_selection_head = view .selections @@ -1083,8 +1118,8 @@ impl Element for EditorElement { .head() .to_display_point(&snapshot); + let style = view.style(cx); if (start_row..end_row).contains(&newest_selection_head.row()) { - let style = view.style(cx); if view.context_menu_visible() { context_menu = view.render_context_menu(newest_selection_head, style.clone(), cx); @@ -1094,6 +1129,17 @@ impl Element for EditorElement { .render_code_actions_indicator(&style, cx) .map(|indicator| (newest_selection_head.row(), indicator)); } + + hover = view.hover_popover().and_then(|hover| { + let (point, rendered) = hover.render(style.clone(), cx); + if point.row() >= snapshot.scroll_position().y() as u32 { + if line_layouts.len() > (point.row() - start_row) as usize { + return Some((point, rendered)); + } + } + + None + }); }); if let Some((_, context_menu)) = context_menu.as_mut() { @@ -1116,6 +1162,19 @@ impl Element for EditorElement { ); } + if let Some((_, hover)) = hover.as_mut() { + hover.layout( + SizeConstraint { + min: Vector2F::zero(), + max: vec2f( + (120. * em_width).min(size.x()), + (size.y() - line_height) * 1. / 2., + ), + }, + cx, + ); + } + let blocks = self.layout_blocks( start_row..end_row, &snapshot, @@ -1152,6 +1211,7 @@ impl Element for EditorElement { selections, context_menu, code_actions_indicator, + hover, }, ) } @@ -1171,11 +1231,18 @@ impl Element for EditorElement { layout.text_size, ); + let mut paint_state = PaintState { + bounds, + gutter_bounds, + text_bounds, + hover_bounds: None, + }; + self.paint_background(gutter_bounds, text_bounds, layout, cx); if layout.gutter_size.x() > 0. { self.paint_gutter(gutter_bounds, visible_bounds, layout, cx); } - self.paint_text(text_bounds, visible_bounds, layout, cx); + self.paint_text(text_bounds, visible_bounds, layout, &mut paint_state, cx); if !layout.blocks.is_empty() { cx.scene.push_layer(Some(bounds)); @@ -1185,11 +1252,7 @@ impl Element for EditorElement { cx.scene.pop_layer(); - PaintState { - bounds, - gutter_bounds, - text_bounds, - } + paint_state } fn dispatch_event( @@ -1213,6 +1276,12 @@ impl Element for EditorElement { } } + if let Some((_, hover)) = &mut layout.hover { + if hover.dispatch_event(event, cx) { + return true; + } + } + for (_, block) in &mut layout.blocks { if block.dispatch_event(event, cx) { return true; @@ -1222,11 +1291,21 @@ impl Element for EditorElement { match event { Event::LeftMouseDown { position, + cmd, alt, shift, click_count, .. - } => self.mouse_down(*position, *alt, *shift, *click_count, layout, paint, cx), + } => self.mouse_down( + *position, + *cmd, + *alt, + *shift, + *click_count, + layout, + paint, + cx, + ), Event::LeftMouseUp { position, .. } => self.mouse_up(*position, cx), Event::LeftMouseDragged { position } => { self.mouse_dragged(*position, layout, paint, cx) @@ -1237,6 +1316,29 @@ impl Element for EditorElement { precise, } => self.scroll(*position, *delta, *precise, layout, paint, cx), Event::KeyDown { input, .. } => self.key_down(input.as_deref(), cx), + Event::MouseMoved { position, .. } => { + if paint + .hover_bounds + .map_or(false, |hover_bounds| hover_bounds.contains_point(*position)) + { + return false; + } + + let point = if paint.text_bounds.contains_point(*position) { + let (point, overshoot) = + paint.point_for_position(&self.snapshot(cx), layout, *position); + if overshoot.is_zero() { + Some(point) + } else { + None + } + } else { + None + }; + + cx.dispatch_action(HoverAt { point }); + true + } _ => false, } } @@ -1275,6 +1377,7 @@ pub struct LayoutState { selections: Vec<(ReplicaId, Vec)>, context_menu: Option<(DisplayPoint, ElementBox)>, code_actions_indicator: Option<(u32, ElementBox)>, + hover: Option<(DisplayPoint, ElementBox)>, } fn layout_line( @@ -1312,19 +1415,24 @@ pub struct PaintState { bounds: RectF, gutter_bounds: RectF, text_bounds: RectF, + hover_bounds: Option, } impl PaintState { + /// Returns two display points. The first is the nearest valid + /// position in the current buffer and the second is the distance to the + /// nearest valid position if there was overshoot. fn point_for_position( &self, snapshot: &EditorSnapshot, layout: &LayoutState, position: Vector2F, - ) -> (DisplayPoint, u32) { + ) -> (DisplayPoint, DisplayPoint) { let scroll_position = snapshot.scroll_position(); let position = position - self.text_bounds.origin(); let y = position.y().max(0.0).min(layout.size.y()); let row = ((y / layout.line_height) + scroll_position.y()) as u32; + let row_overshoot = row.saturating_sub(snapshot.max_point().row()); let row = cmp::min(row, snapshot.max_point().row()); let line = &layout.line_layouts[(row - scroll_position.y() as u32) as usize]; let x = position.x() + (scroll_position.x() * layout.em_width); @@ -1336,9 +1444,12 @@ impl PaintState { } else { 0 }; - let overshoot = (0f32.max(x - line.width()) / layout.em_advance) as u32; + let column_overshoot = (0f32.max(x - line.width()) / layout.em_advance) as u32; - (DisplayPoint::new(row, column), overshoot) + ( + DisplayPoint::new(row, column), + DisplayPoint::new(row_overshoot, column_overshoot), + ) } } diff --git a/crates/editor/src/selections_collection.rs b/crates/editor/src/selections_collection.rs index 7041062133666a645c3ff18212af2945c918937e..f99384bd799b70b72edf6b0fffb0d8fca79255b4 100644 --- a/crates/editor/src/selections_collection.rs +++ b/crates/editor/src/selections_collection.rs @@ -195,6 +195,14 @@ impl SelectionsCollection { resolve(self.newest_anchor(), &self.buffer(cx)) } + pub fn newest_display(&self, cx: &mut MutableAppContext) -> Selection { + let display_map = self.display_map(cx); + let selection = self + .newest_anchor() + .map(|point| point.to_display_point(&display_map)); + selection + } + pub fn oldest_anchor(&self) -> &Selection { self.disjoint .iter() diff --git a/crates/gpui/src/elements/flex.rs b/crates/gpui/src/elements/flex.rs index 8d1fb37a08b0afafdb3ea2671bb14d9bdb7e4317..82a6299d10d07537cca26e179902e2b5b9af4f84 100644 --- a/crates/gpui/src/elements/flex.rs +++ b/crates/gpui/src/elements/flex.rs @@ -319,6 +319,17 @@ impl Element for Flex { } } } + + if !handled { + if let &Event::MouseMoved { position, .. } = event { + // If this is a scrollable flex, and the mouse is over it, eat the scroll event to prevent + // propogating it to the element below. + if self.scroll_state.is_some() && bounds.contains_point(position) { + handled = true; + } + } + } + handled } diff --git a/crates/gpui/src/presenter.rs b/crates/gpui/src/presenter.rs index 720e9e90b5ad314af5f7a9b8eace771538ec6213..eb7f3514443a0cffcb661ab3d2815e15531a0648 100644 --- a/crates/gpui/src/presenter.rs +++ b/crates/gpui/src/presenter.rs @@ -160,7 +160,12 @@ impl Presenter { if cx.window_is_active(self.window_id) { if let Some(event) = self.last_mouse_moved_event.clone() { - self.dispatch_event(event, cx) + let mut invalidated_views = Vec::new(); + self.handle_hover_events(&event, &mut invalidated_views, cx); + + for view_id in invalidated_views { + cx.notify_view(self.window_id, view_id); + } } } } else { @@ -222,8 +227,6 @@ impl Presenter { pub fn dispatch_event(&mut self, event: Event, cx: &mut MutableAppContext) { if let Some(root_view_id) = cx.root_view_id(self.window_id) { let mut invalidated_views = Vec::new(); - let mut hovered_regions = Vec::new(); - let mut unhovered_regions = Vec::new(); let mut mouse_down_out_handlers = Vec::new(); let mut mouse_down_region = None; let mut clicked_region = None; @@ -288,46 +291,8 @@ impl Presenter { } } } - Event::MouseMoved { - position, - left_mouse_down, - } => { + Event::MouseMoved { .. } => { self.last_mouse_moved_event = Some(event.clone()); - - if !left_mouse_down { - let mut style_to_assign = CursorStyle::Arrow; - for region in self.cursor_regions.iter().rev() { - if region.bounds.contains_point(position) { - style_to_assign = region.style; - break; - } - } - cx.platform().set_cursor_style(style_to_assign); - - let mut hover_depth = None; - for (region, depth) in self.mouse_regions.iter().rev() { - if region.bounds.contains_point(position) - && hover_depth.map_or(true, |hover_depth| hover_depth == *depth) - { - hover_depth = Some(*depth); - if let Some(region_id) = region.id() { - if !self.hovered_region_ids.contains(®ion_id) { - invalidated_views.push(region.view_id); - hovered_regions.push((region.clone(), position)); - self.hovered_region_ids.insert(region_id); - } - } - } else { - if let Some(region_id) = region.id() { - if self.hovered_region_ids.contains(®ion_id) { - invalidated_views.push(region.view_id); - unhovered_regions.push((region.clone(), position)); - self.hovered_region_ids.remove(®ion_id); - } - } - } - } - } } Event::LeftMouseDragged { position } => { if let Some((clicked_region, prev_drag_position)) = self @@ -348,25 +313,8 @@ impl Presenter { _ => {} } - let mut event_cx = self.build_event_context(cx); - let mut handled = false; - for (unhovered_region, position) in unhovered_regions { - handled = true; - if let Some(hover_callback) = unhovered_region.hover { - event_cx.with_current_view(unhovered_region.view_id, |event_cx| { - hover_callback(position, false, event_cx); - }) - } - } - - for (hovered_region, position) in hovered_regions { - handled = true; - if let Some(hover_callback) = hovered_region.hover { - event_cx.with_current_view(hovered_region.view_id, |event_cx| { - hover_callback(position, true, event_cx); - }) - } - } + let (mut handled, mut event_cx) = + self.handle_hover_events(&event, &mut invalidated_views, cx); for (handler, view_id, position) in mouse_down_out_handlers { event_cx.with_current_view(view_id, |event_cx| handler(position, event_cx)) @@ -439,6 +387,80 @@ impl Presenter { } } + fn handle_hover_events<'a>( + &'a mut self, + event: &Event, + invalidated_views: &mut Vec, + cx: &'a mut MutableAppContext, + ) -> (bool, EventContext<'a>) { + let mut unhovered_regions = Vec::new(); + let mut hovered_regions = Vec::new(); + + if let Event::MouseMoved { + position, + left_mouse_down, + } = event + { + if !left_mouse_down { + let mut style_to_assign = CursorStyle::Arrow; + for region in self.cursor_regions.iter().rev() { + if region.bounds.contains_point(*position) { + style_to_assign = region.style; + break; + } + } + cx.platform().set_cursor_style(style_to_assign); + + let mut hover_depth = None; + for (region, depth) in self.mouse_regions.iter().rev() { + if region.bounds.contains_point(*position) + && hover_depth.map_or(true, |hover_depth| hover_depth == *depth) + { + hover_depth = Some(*depth); + if let Some(region_id) = region.id() { + if !self.hovered_region_ids.contains(®ion_id) { + invalidated_views.push(region.view_id); + hovered_regions.push((region.clone(), position)); + self.hovered_region_ids.insert(region_id); + } + } + } else { + if let Some(region_id) = region.id() { + if self.hovered_region_ids.contains(®ion_id) { + invalidated_views.push(region.view_id); + unhovered_regions.push((region.clone(), position)); + self.hovered_region_ids.remove(®ion_id); + } + } + } + } + } + } + + let mut event_cx = self.build_event_context(cx); + let mut handled = false; + + for (unhovered_region, position) in unhovered_regions { + handled = true; + if let Some(hover_callback) = unhovered_region.hover { + event_cx.with_current_view(unhovered_region.view_id, |event_cx| { + hover_callback(*position, false, event_cx); + }) + } + } + + for (hovered_region, position) in hovered_regions { + handled = true; + if let Some(hover_callback) = hovered_region.hover { + event_cx.with_current_view(hovered_region.view_id, |event_cx| { + hover_callback(*position, true, event_cx); + }) + } + } + + (handled, event_cx) + } + pub fn build_event_context<'a>( &'a mut self, cx: &'a mut MutableAppContext, diff --git a/crates/language/src/language.rs b/crates/language/src/language.rs index f13088f99750c52f82ace0de7a58210bd1f81f23..fbc8182d30f5c8f483e801093f5db7c70a52c783 100644 --- a/crates/language/src/language.rs +++ b/crates/language/src/language.rs @@ -236,7 +236,7 @@ impl LanguageRegistry { self.languages .read() .iter() - .find(|language| language.name().as_ref() == name) + .find(|language| language.name().to_lowercase() == name.to_lowercase()) .cloned() } diff --git a/crates/lsp/src/lsp.rs b/crates/lsp/src/lsp.rs index d5af202516c4134d02213bcb7841422edcaa1606..d22a59e48f60a26954de684113433637c2e59750 100644 --- a/crates/lsp/src/lsp.rs +++ b/crates/lsp/src/lsp.rs @@ -296,6 +296,10 @@ impl LanguageServer { prepare_support: Some(true), ..Default::default() }), + hover: Some(HoverClientCapabilities { + content_format: Some(vec![MarkupKind::Markdown]), + ..Default::default() + }), ..Default::default() }), experimental: Some(json!({ diff --git a/crates/project/Cargo.toml b/crates/project/Cargo.toml index 1fb989ee9c401fa618b9664964deeedc8d0122d3..04597c0a3af1c6f4cedd3bdce92ba75eaf057475 100644 --- a/crates/project/Cargo.toml +++ b/crates/project/Cargo.toml @@ -38,6 +38,7 @@ libc = "0.2" log = { version = "0.4.16", features = ["kv_unstable_serde"] } parking_lot = "0.11.1" postage = { version = "0.4.1", features = ["futures-traits"] } +pulldown-cmark = { version = "0.9.1", default-features = false } rand = "0.8.3" regex = "1.5" serde = { version = "1.0", features = ["derive", "rc"] } diff --git a/crates/project/src/lsp_command.rs b/crates/project/src/lsp_command.rs index 1e86bb271965b7062652146d964b81ff651e6099..0a5a4946df0087b06254135299e57376a43b8d69 100644 --- a/crates/project/src/lsp_command.rs +++ b/crates/project/src/lsp_command.rs @@ -1,4 +1,4 @@ -use crate::{DocumentHighlight, Location, Project, ProjectTransaction}; +use crate::{DocumentHighlight, Hover, HoverBlock, Location, Project, ProjectTransaction}; use anyhow::{anyhow, Result}; use async_trait::async_trait; use client::{proto, PeerId}; @@ -9,6 +9,7 @@ use language::{ range_from_lsp, Anchor, Bias, Buffer, PointUtf16, ToPointUtf16, }; use lsp::{DocumentHighlightKind, ServerCapabilities}; +use pulldown_cmark::{CodeBlockKind, Event, Options, Parser, Tag}; use std::{cmp::Reverse, ops::Range, path::Path}; #[async_trait(?Send)] @@ -80,6 +81,10 @@ pub(crate) struct GetDocumentHighlights { pub position: PointUtf16, } +pub(crate) struct GetHover { + pub position: PointUtf16, +} + #[async_trait(?Send)] impl LspCommand for PrepareRename { type Response = Option>; @@ -794,3 +799,220 @@ impl LspCommand for GetDocumentHighlights { message.buffer_id } } + +#[async_trait(?Send)] +impl LspCommand for GetHover { + type Response = Option; + type LspRequest = lsp::request::HoverRequest; + type ProtoRequest = proto::GetHover; + + fn to_lsp(&self, path: &Path, _: &AppContext) -> lsp::HoverParams { + lsp::HoverParams { + text_document_position_params: lsp::TextDocumentPositionParams { + text_document: lsp::TextDocumentIdentifier { + uri: lsp::Url::from_file_path(path).unwrap(), + }, + position: point_to_lsp(self.position), + }, + work_done_progress_params: Default::default(), + } + } + + async fn response_from_lsp( + self, + message: Option, + _: ModelHandle, + buffer: ModelHandle, + mut cx: AsyncAppContext, + ) -> Result { + Ok(message.and_then(|hover| { + let range = hover.range.map(|range| { + cx.read(|cx| { + let buffer = buffer.read(cx); + let token_start = + buffer.clip_point_utf16(point_from_lsp(range.start), Bias::Left); + let token_end = buffer.clip_point_utf16(point_from_lsp(range.end), Bias::Left); + buffer.anchor_after(token_start)..buffer.anchor_before(token_end) + }) + }); + + let contents = cx.read(|_| match hover.contents { + lsp::HoverContents::Scalar(marked_string) => { + HoverBlock::try_new(marked_string).map(|contents| vec![contents]) + } + lsp::HoverContents::Array(marked_strings) => { + let content: Vec = marked_strings + .into_iter() + .filter_map(|marked_string| HoverBlock::try_new(marked_string)) + .collect(); + if content.is_empty() { + None + } else { + Some(content) + } + } + lsp::HoverContents::Markup(markup_content) => { + let mut contents = Vec::new(); + let mut language = None; + let mut current_text = String::new(); + for event in Parser::new_ext(&markup_content.value, Options::all()) { + match event { + Event::SoftBreak => { + current_text.push(' '); + } + Event::Text(text) | Event::Code(text) => { + current_text.push_str(&text.to_string()); + } + Event::Start(Tag::CodeBlock(CodeBlockKind::Fenced(new_language))) => { + if !current_text.is_empty() { + let text = std::mem::replace(&mut current_text, String::new()); + contents.push(HoverBlock { text, language }); + } + + language = if new_language.is_empty() { + None + } else { + Some(new_language.to_string()) + }; + } + Event::End(Tag::CodeBlock(_)) + | Event::End(Tag::Paragraph) + | Event::End(Tag::Heading(_, _, _)) + | Event::End(Tag::BlockQuote) + | Event::HardBreak => { + if !current_text.is_empty() { + let text = std::mem::replace(&mut current_text, String::new()); + contents.push(HoverBlock { text, language }); + current_text.clear(); + } + language = None; + } + _ => {} + } + } + + if !current_text.is_empty() { + contents.push(HoverBlock { + text: current_text, + language, + }); + } + + if contents.is_empty() { + None + } else { + Some(contents) + } + } + }); + + contents.map(|contents| Hover { contents, range }) + })) + } + + fn to_proto(&self, project_id: u64, buffer: &Buffer) -> Self::ProtoRequest { + proto::GetHover { + project_id, + buffer_id: buffer.remote_id(), + position: Some(language::proto::serialize_anchor( + &buffer.anchor_before(self.position), + )), + version: serialize_version(&buffer.version), + } + } + + async fn from_proto( + message: Self::ProtoRequest, + _: ModelHandle, + buffer: ModelHandle, + mut cx: AsyncAppContext, + ) -> Result { + let position = message + .position + .and_then(deserialize_anchor) + .ok_or_else(|| anyhow!("invalid position"))?; + buffer + .update(&mut cx, |buffer, _| { + buffer.wait_for_version(deserialize_version(message.version)) + }) + .await; + Ok(Self { + position: buffer.read_with(&cx, |buffer, _| position.to_point_utf16(buffer)), + }) + } + + fn response_to_proto( + response: Self::Response, + _: &mut Project, + _: PeerId, + _: &clock::Global, + _: &AppContext, + ) -> proto::GetHoverResponse { + if let Some(response) = response { + let (start, end) = if let Some(range) = response.range { + ( + Some(language::proto::serialize_anchor(&range.start)), + Some(language::proto::serialize_anchor(&range.end)), + ) + } else { + (None, None) + }; + + let contents = response + .contents + .into_iter() + .map(|block| proto::HoverBlock { + text: block.text, + language: block.language, + }) + .collect(); + + proto::GetHoverResponse { + start, + end, + contents, + } + } else { + proto::GetHoverResponse { + start: None, + end: None, + contents: Vec::new(), + } + } + } + + async fn response_from_proto( + self, + message: proto::GetHoverResponse, + _: ModelHandle, + _: ModelHandle, + _: AsyncAppContext, + ) -> Result { + println!("Response from proto"); + let range = if let (Some(start), Some(end)) = (message.start, message.end) { + language::proto::deserialize_anchor(start) + .and_then(|start| language::proto::deserialize_anchor(end).map(|end| start..end)) + } else { + None + }; + + let contents: Vec<_> = message + .contents + .into_iter() + .map(|block| HoverBlock { + text: block.text, + language: block.language, + }) + .collect(); + + Ok(if contents.is_empty() { + None + } else { + Some(Hover { contents, range }) + }) + } + + fn buffer_id_from_proto(message: &Self::ProtoRequest) -> u64 { + message.buffer_id + } +} diff --git a/crates/project/src/project.rs b/crates/project/src/project.rs index 1e622f71a07317bab61d9aec972854cf15acdf42..35bf4f2723ffb22668e1e2c0e08fe98aa4c13305 100644 --- a/crates/project/src/project.rs +++ b/crates/project/src/project.rs @@ -23,7 +23,10 @@ use language::{ LanguageRegistry, LanguageServerName, LocalFile, LspAdapter, OffsetRangeExt, Operation, Patch, PointUtf16, TextBufferSnapshot, ToOffset, ToPointUtf16, Transaction, }; -use lsp::{DiagnosticSeverity, DiagnosticTag, DocumentHighlightKind, LanguageServer}; +use lsp::{ + DiagnosticSeverity, DiagnosticTag, DocumentHighlightKind, LanguageServer, LanguageString, + MarkedString, +}; use lsp_command::*; use parking_lot::Mutex; use postage::stream::Stream; @@ -223,6 +226,38 @@ pub struct Symbol { pub signature: [u8; 32], } +#[derive(Clone, Debug, PartialEq)] +pub struct HoverBlock { + pub text: String, + pub language: Option, +} + +impl HoverBlock { + fn try_new(marked_string: MarkedString) -> Option { + let result = match marked_string { + MarkedString::LanguageString(LanguageString { language, value }) => HoverBlock { + text: value, + language: Some(language), + }, + MarkedString::String(text) => HoverBlock { + text, + language: None, + }, + }; + if result.text.is_empty() { + None + } else { + Some(result) + } + } +} + +#[derive(Debug)] +pub struct Hover { + pub contents: Vec, + pub range: Option>, +} + #[derive(Default)] pub struct ProjectTransaction(pub HashMap, language::Transaction>); @@ -314,6 +349,7 @@ impl Project { client.add_model_request_handler(Self::handle_format_buffers); client.add_model_request_handler(Self::handle_get_code_actions); client.add_model_request_handler(Self::handle_get_completions); + client.add_model_request_handler(Self::handle_lsp_command::); client.add_model_request_handler(Self::handle_lsp_command::); client.add_model_request_handler(Self::handle_lsp_command::); client.add_model_request_handler(Self::handle_lsp_command::); @@ -2912,6 +2948,16 @@ impl Project { } } + pub fn hover( + &self, + buffer: &ModelHandle, + position: T, + cx: &mut ModelContext, + ) -> Task>> { + let position = position.to_point_utf16(buffer.read(cx)); + self.request_lsp(buffer.clone(), GetHover { position }, cx) + } + pub fn completions( &self, source_buffer_handle: &ModelHandle, diff --git a/crates/rpc/proto/zed.proto b/crates/rpc/proto/zed.proto index 8e86d880cd425e0f8a41304319b282fc3645263b..60778bea32b254a74fa54f6eb9fa0c86a380346d 100644 --- a/crates/rpc/proto/zed.proto +++ b/crates/rpc/proto/zed.proto @@ -66,41 +66,43 @@ message Envelope { ApplyCompletionAdditionalEditsResponse apply_completion_additional_edits_response = 56; GetCodeActions get_code_actions = 57; GetCodeActionsResponse get_code_actions_response = 58; - ApplyCodeAction apply_code_action = 59; - ApplyCodeActionResponse apply_code_action_response = 60; - PrepareRename prepare_rename = 61; - PrepareRenameResponse prepare_rename_response = 62; - PerformRename perform_rename = 63; - PerformRenameResponse perform_rename_response = 64; - SearchProject search_project = 65; - SearchProjectResponse search_project_response = 66; - - GetChannels get_channels = 67; - GetChannelsResponse get_channels_response = 68; - JoinChannel join_channel = 69; - JoinChannelResponse join_channel_response = 70; - LeaveChannel leave_channel = 71; - SendChannelMessage send_channel_message = 72; - SendChannelMessageResponse send_channel_message_response = 73; - ChannelMessageSent channel_message_sent = 74; - GetChannelMessages get_channel_messages = 75; - GetChannelMessagesResponse get_channel_messages_response = 76; - - UpdateContacts update_contacts = 77; - UpdateInviteInfo update_invite_info = 78; - ShowContacts show_contacts = 79; - - GetUsers get_users = 80; - FuzzySearchUsers fuzzy_search_users = 81; - UsersResponse users_response = 82; - RequestContact request_contact = 83; - RespondToContactRequest respond_to_contact_request = 84; - RemoveContact remove_contact = 85; - - Follow follow = 86; - FollowResponse follow_response = 87; - UpdateFollowers update_followers = 88; - Unfollow unfollow = 89; + GetHover get_hover = 59; + GetHoverResponse get_hover_response = 60; + ApplyCodeAction apply_code_action = 61; + ApplyCodeActionResponse apply_code_action_response = 62; + PrepareRename prepare_rename = 63; + PrepareRenameResponse prepare_rename_response = 64; + PerformRename perform_rename = 65; + PerformRenameResponse perform_rename_response = 66; + SearchProject search_project = 67; + SearchProjectResponse search_project_response = 68; + + GetChannels get_channels = 69; + GetChannelsResponse get_channels_response = 70; + JoinChannel join_channel = 71; + JoinChannelResponse join_channel_response = 72; + LeaveChannel leave_channel = 73; + SendChannelMessage send_channel_message = 74; + SendChannelMessageResponse send_channel_message_response = 75; + ChannelMessageSent channel_message_sent = 76; + GetChannelMessages get_channel_messages = 77; + GetChannelMessagesResponse get_channel_messages_response = 78; + + UpdateContacts update_contacts = 79; + UpdateInviteInfo update_invite_info = 80; + ShowContacts show_contacts = 81; + + GetUsers get_users = 82; + FuzzySearchUsers fuzzy_search_users = 83; + UsersResponse users_response = 84; + RequestContact request_contact = 85; + RespondToContactRequest respond_to_contact_request = 86; + RemoveContact remove_contact = 87; + + Follow follow = 88; + FollowResponse follow_response = 89; + UpdateFollowers update_followers = 90; + Unfollow unfollow = 91; } } @@ -426,6 +428,24 @@ message GetCodeActionsResponse { repeated VectorClockEntry version = 2; } +message GetHover { + uint64 project_id = 1; + uint64 buffer_id = 2; + Anchor position = 3; + repeated VectorClockEntry version = 5; +} + +message GetHoverResponse { + optional Anchor start = 1; + optional Anchor end = 2; + repeated HoverBlock contents = 3; +} + +message HoverBlock { + string text = 1; + optional string language = 2; +} + message ApplyCodeAction { uint64 project_id = 1; uint64 buffer_id = 2; diff --git a/crates/rpc/src/proto.rs b/crates/rpc/src/proto.rs index 0fcb2eaea3b77410ab102123cbb4290901a6523f..6343c05ceac42b2c1733065faa90c90ffcd1294f 100644 --- a/crates/rpc/src/proto.rs +++ b/crates/rpc/src/proto.rs @@ -99,6 +99,8 @@ messages!( (GetChannelsResponse, Foreground), (GetCodeActions, Background), (GetCodeActionsResponse, Background), + (GetHover, Background), + (GetHoverResponse, Background), (GetCompletions, Background), (GetCompletionsResponse, Background), (GetDefinition, Background), @@ -175,6 +177,7 @@ request_messages!( (GetChannelMessages, GetChannelMessagesResponse), (GetChannels, GetChannelsResponse), (GetCodeActions, GetCodeActionsResponse), + (GetHover, GetHoverResponse), (GetCompletions, GetCompletionsResponse), (GetDefinition, GetDefinitionResponse), (GetDocumentHighlights, GetDocumentHighlightsResponse), @@ -221,6 +224,7 @@ entity_messages!( GetCompletions, GetDefinition, GetDocumentHighlights, + GetHover, GetReferences, GetProjectSymbols, JoinProject, diff --git a/crates/theme/src/theme.rs b/crates/theme/src/theme.rs index 2fa867b02dc15ddf3870b670a57ef1ad7b2c8cb3..58bf70eae8fa9ad5de035cf7543f3b65d6d8993b 100644 --- a/crates/theme/src/theme.rs +++ b/crates/theme/src/theme.rs @@ -452,6 +452,7 @@ pub struct Editor { pub autocomplete: AutocompleteStyle, pub code_actions_indicator: Color, pub unnecessary_code_fade: f32, + pub hover_popover: HoverPopover, } #[derive(Clone, Deserialize, Default)] @@ -630,3 +631,11 @@ impl<'de> Deserialize<'de> for SyntaxTheme { Ok(result) } } + +#[derive(Clone, Deserialize, Default)] +pub struct HoverPopover { + pub container: ContainerStyle, + pub block_style: ContainerStyle, + pub prose: TextStyle, + pub highlight: Color, +} diff --git a/styles/src/styleTree/chatPanel.ts b/styles/src/styleTree/chatPanel.ts index 778cd6758480b337a9f3dd8d87caa0ad822687cc..693d464b398ef189b3919689bd12027c40f2055e 100644 --- a/styles/src/styleTree/chatPanel.ts +++ b/styles/src/styleTree/chatPanel.ts @@ -4,9 +4,10 @@ import { backgroundColor, border, player, - shadow, + modalShadow, text, - TextColor + TextColor, + popoverShadow } from "./components"; export default function chatPanel(theme: Theme) { @@ -69,7 +70,7 @@ export default function chatPanel(theme: Theme) { cornerRadius: 6, padding: 4, border: border(theme, "primary"), - shadow: shadow(theme), + shadow: popoverShadow(theme), }, }, signInPrompt: text(theme, "sans", "secondary", { underline: true }), diff --git a/styles/src/styleTree/components.ts b/styles/src/styleTree/components.ts index 2a265377508e81738a105af8a44ea3baf1c096c7..214c255e4b97e4581e572ef2777a4ec6661efaa5 100644 --- a/styles/src/styleTree/components.ts +++ b/styles/src/styleTree/components.ts @@ -1,4 +1,5 @@ import chroma from "chroma-js"; +import { isIPv4 } from "net"; import Theme, { BackgroundColorSet } from "../themes/common/theme"; import { fontFamilies, fontSizes, FontWeight } from "../tokens"; import { Color } from "../utils/color"; @@ -84,10 +85,18 @@ export function backgroundColor( return theme.backgroundColor[name][state || "base"].value; } -export function shadow(theme: Theme) { +export function modalShadow(theme: Theme) { return { blur: 16, - color: chroma("black").alpha(theme.shadowAlpha.value).hex(), + color: theme.shadow.value, offset: [0, 2], }; } + +export function popoverShadow(theme: Theme) { + return { + blur: 4, + color: theme.shadow.value, + offset: [1, 2], + }; +} diff --git a/styles/src/styleTree/contextMenu.ts b/styles/src/styleTree/contextMenu.ts index eeade2d050aab7d96b266307c72e1d76534af452..f6197930d49530e4dd463225f3c07a094a85368a 100644 --- a/styles/src/styleTree/contextMenu.ts +++ b/styles/src/styleTree/contextMenu.ts @@ -1,12 +1,12 @@ import Theme from "../themes/common/theme"; -import { backgroundColor, border, borderColor, shadow, text } from "./components"; +import { backgroundColor, border, borderColor, popoverShadow, text } from "./components"; export default function contextMenu(theme: Theme) { return { background: backgroundColor(theme, 300, "base"), cornerRadius: 6, padding: 6, - shadow: shadow(theme), + shadow: popoverShadow(theme), border: border(theme, "primary"), item: { padding: { left: 4, right: 4, top: 2, bottom: 2 }, diff --git a/styles/src/styleTree/editor.ts b/styles/src/styleTree/editor.ts index 3edd205f9a4008d978b2b44e5ab3e289bb82ebbc..14e7f9449fa1b321d88870a34a037cccbaeefbb5 100644 --- a/styles/src/styleTree/editor.ts +++ b/styles/src/styleTree/editor.ts @@ -4,9 +4,11 @@ import { border, iconColor, player, + popoverShadow, text, TextColor } from "./components"; +import hoverPopover from "./hoverPopover"; export default function editor(theme: Theme) { const autocompleteItem = { @@ -80,6 +82,7 @@ export default function editor(theme: Theme) { cornerRadius: 8, padding: 4, border: border(theme, "secondary"), + shadow: popoverShadow(theme), item: autocompleteItem, hoveredItem: { ...autocompleteItem, @@ -143,6 +146,7 @@ export default function editor(theme: Theme) { invalidHintDiagnostic: diagnostic(theme, "muted"), invalidInformationDiagnostic: diagnostic(theme, "muted"), invalidWarningDiagnostic: diagnostic(theme, "muted"), + hover_popover: hoverPopover(theme), syntax, }; } diff --git a/styles/src/styleTree/hoverPopover.ts b/styles/src/styleTree/hoverPopover.ts new file mode 100644 index 0000000000000000000000000000000000000000..38b47630e2f24ce01f74de40b36c390c58b827af --- /dev/null +++ b/styles/src/styleTree/hoverPopover.ts @@ -0,0 +1,27 @@ +import Theme from "../themes/common/theme"; +import { backgroundColor, border, popoverShadow, text } from "./components"; + +export default function HoverPopover(theme: Theme) { + return { + container: { + background: backgroundColor(theme, "on500"), + cornerRadius: 8, + padding: { + left: 8, + right: 8, + top: 4, + bottom: 4 + }, + shadow: popoverShadow(theme), + border: border(theme, "primary"), + margin: { + left: -8, + }, + }, + block_style: { + padding: { top: 4 }, + }, + prose: text(theme, "sans", "primary", { "size": "sm" }), + highlight: theme.editor.highlight.occurrence.value, + } +} \ No newline at end of file diff --git a/styles/src/styleTree/picker.ts b/styles/src/styleTree/picker.ts index adb53458d3457e5e1e38776016c7e58a8da5bdca..b3ff654e348458a9be5c7be7c833309a343719a7 100644 --- a/styles/src/styleTree/picker.ts +++ b/styles/src/styleTree/picker.ts @@ -1,5 +1,5 @@ import Theme from "../themes/common/theme"; -import { backgroundColor, border, player, shadow, text } from "./components"; +import { backgroundColor, border, player, modalShadow, text } from "./components"; export default function picker(theme: Theme) { return { @@ -48,6 +48,6 @@ export default function picker(theme: Theme) { top: 7, }, }, - shadow: shadow(theme), + shadow: modalShadow(theme), }; } diff --git a/styles/src/styleTree/tooltip.ts b/styles/src/styleTree/tooltip.ts index bfceae168eaeb3e09997f4a6e6d064422dc04b21..c395b9ff3d398ee867cb77422b859013278bee39 100644 --- a/styles/src/styleTree/tooltip.ts +++ b/styles/src/styleTree/tooltip.ts @@ -1,5 +1,5 @@ import Theme from "../themes/common/theme"; -import { backgroundColor, border, shadow, text } from "./components"; +import { backgroundColor, border, popoverShadow, text } from "./components"; export default function tooltip(theme: Theme) { return { @@ -7,7 +7,7 @@ export default function tooltip(theme: Theme) { border: border(theme, "secondary"), padding: { top: 4, bottom: 4, left: 8, right: 8 }, margin: { top: 6, left: 6 }, - shadow: shadow(theme), + shadow: popoverShadow(theme), cornerRadius: 6, text: text(theme, "sans", "secondary", { size: "xs", weight: "bold" }), keystroke: { diff --git a/styles/src/styleTree/workspace.ts b/styles/src/styleTree/workspace.ts index 261656e62abf9fd6fbf2e5d082d4fc354f5bb1cb..17c51bad4cf9343f883888a8bcb7083f7d2363dc 100644 --- a/styles/src/styleTree/workspace.ts +++ b/styles/src/styleTree/workspace.ts @@ -1,6 +1,6 @@ import Theme from "../themes/common/theme"; import { withOpacity } from "../utils/color"; -import { backgroundColor, border, iconColor, shadow, text } from "./components"; +import { backgroundColor, border, iconColor, modalShadow, text } from "./components"; import statusBar from "./statusBar"; export function workspaceBackground(theme: Theme) { @@ -164,7 +164,7 @@ export default function workspace(theme: Theme) { cornerRadius: 6, padding: 12, border: border(theme, "primary"), - shadow: shadow(theme), + shadow: modalShadow(theme), }, notifications: { width: 380, diff --git a/styles/src/themes/common/base16.ts b/styles/src/themes/common/base16.ts index ded4384c02bc1b8eac3ff40a8d0b0cce9a550c35..0bdf455be3a79b435d1dc2b5c2a9d5edcfbfefe2 100644 --- a/styles/src/themes/common/base16.ts +++ b/styles/src/themes/common/base16.ts @@ -14,7 +14,6 @@ export function createTheme( name: string, isLight: boolean, ramps: { [rampName: string]: Scale }, - blend?: number ): Theme { if (isLight) { for (var rampName in ramps) { @@ -25,100 +24,99 @@ export function createTheme( ramps.neutral = ramps.neutral.domain([0, 7]); } - if (blend === undefined) { - blend = isLight ? 0.12 : 0.24; - } + let blend = isLight ? 0.12 : 0.24; - function rampColor(ramp: Scale, index: number): ColorToken { + function sample(ramp: Scale, index: number): ColorToken { return color(ramp(index).hex()); } + const darkest = color(ramps.neutral(isLight ? 7 : 0).hex()); const backgroundColor = { // Title bar 100: { - base: rampColor(ramps.neutral, 1.25), - hovered: rampColor(ramps.neutral, 1.5), - active: rampColor(ramps.neutral, 1.75), + base: sample(ramps.neutral, 1.25), + hovered: sample(ramps.neutral, 1.5), + active: sample(ramps.neutral, 1.75), }, // Midground (panels, etc) 300: { - base: rampColor(ramps.neutral, 1), - hovered: rampColor(ramps.neutral, 1.25), - active: rampColor(ramps.neutral, 1.5), + base: sample(ramps.neutral, 1), + hovered: sample(ramps.neutral, 1.25), + active: sample(ramps.neutral, 1.5), }, // Editor 500: { - base: rampColor(ramps.neutral, 0), - hovered: rampColor(ramps.neutral, 0.25), - active: rampColor(ramps.neutral, 0.5), + base: sample(ramps.neutral, 0), + hovered: sample(ramps.neutral, 0.25), + active: sample(ramps.neutral, 0.5), }, on300: { - base: rampColor(ramps.neutral, 0), - hovered: rampColor(ramps.neutral, 0.25), - active: rampColor(ramps.neutral, 0.5), + base: sample(ramps.neutral, 0), + hovered: sample(ramps.neutral, 0.25), + active: sample(ramps.neutral, 0.5), }, on500: { - base: rampColor(ramps.neutral, 1.25), - hovered: rampColor(ramps.neutral, 1.5), - active: rampColor(ramps.neutral, 1.75), + base: sample(ramps.neutral, 1.25), + hovered: sample(ramps.neutral, 1.5), + active: sample(ramps.neutral, 1.75), }, ok: { - base: withOpacity(rampColor(ramps.green, 0.5), 0.15), - hovered: withOpacity(rampColor(ramps.green, 0.5), 0.2), - active: withOpacity(rampColor(ramps.green, 0.5), 0.25), + base: withOpacity(sample(ramps.green, 0.5), 0.15), + hovered: withOpacity(sample(ramps.green, 0.5), 0.2), + active: withOpacity(sample(ramps.green, 0.5), 0.25), }, error: { - base: withOpacity(rampColor(ramps.red, 0.5), 0.15), - hovered: withOpacity(rampColor(ramps.red, 0.5), 0.2), - active: withOpacity(rampColor(ramps.red, 0.5), 0.25), + base: withOpacity(sample(ramps.red, 0.5), 0.15), + hovered: withOpacity(sample(ramps.red, 0.5), 0.2), + active: withOpacity(sample(ramps.red, 0.5), 0.25), }, warning: { - base: withOpacity(rampColor(ramps.yellow, 0.5), 0.15), - hovered: withOpacity(rampColor(ramps.yellow, 0.5), 0.2), - active: withOpacity(rampColor(ramps.yellow, 0.5), 0.25), + base: withOpacity(sample(ramps.yellow, 0.5), 0.15), + hovered: withOpacity(sample(ramps.yellow, 0.5), 0.2), + active: withOpacity(sample(ramps.yellow, 0.5), 0.25), }, info: { - base: withOpacity(rampColor(ramps.blue, 0.5), 0.15), - hovered: withOpacity(rampColor(ramps.blue, 0.5), 0.2), - active: withOpacity(rampColor(ramps.blue, 0.5), 0.25), + base: withOpacity(sample(ramps.blue, 0.5), 0.15), + hovered: withOpacity(sample(ramps.blue, 0.5), 0.2), + active: withOpacity(sample(ramps.blue, 0.5), 0.25), }, }; const borderColor = { - primary: rampColor(ramps.neutral, isLight ? 1.5 : 0), - secondary: rampColor(ramps.neutral, isLight ? 1.25 : 1), - muted: rampColor(ramps.neutral, isLight ? 1 : 3), - active: rampColor(ramps.neutral, isLight ? 4 : 3), - onMedia: withOpacity(rampColor(ramps.neutral, 0), 0.1), - ok: withOpacity(rampColor(ramps.green, 0.5), 0.15), - error: withOpacity(rampColor(ramps.red, 0.5), 0.15), - warning: withOpacity(rampColor(ramps.yellow, 0.5), 0.15), - info: withOpacity(rampColor(ramps.blue, 0.5), 0.15), + primary: sample(ramps.neutral, isLight ? 1.5 : 0), + secondary: sample(ramps.neutral, isLight ? 1.25 : 1), + muted: sample(ramps.neutral, isLight ? 1 : 3), + active: sample(ramps.neutral, isLight ? 4 : 3), + onMedia: withOpacity(darkest, 0.1), + ok: withOpacity(sample(ramps.green, 0.5), 0.15), + error: withOpacity(sample(ramps.red, 0.5), 0.15), + warning: withOpacity(sample(ramps.yellow, 0.5), 0.15), + info: withOpacity(sample(ramps.blue, 0.5), 0.15), }; const textColor = { - primary: rampColor(ramps.neutral, 6), - secondary: rampColor(ramps.neutral, 5), - muted: rampColor(ramps.neutral, 5), - placeholder: rampColor(ramps.neutral, 4), - active: rampColor(ramps.neutral, 7), - feature: rampColor(ramps.blue, 0.5), - ok: rampColor(ramps.green, 0.5), - error: rampColor(ramps.red, 0.5), - warning: rampColor(ramps.yellow, 0.5), - info: rampColor(ramps.blue, 0.5), - onMedia: rampColor(ramps.neutral, isLight ? 0 : 7), + primary: sample(ramps.neutral, 6), + secondary: sample(ramps.neutral, 5), + muted: sample(ramps.neutral, 5), + placeholder: sample(ramps.neutral, 4), + active: sample(ramps.neutral, 7), + feature: sample(ramps.blue, 0.5), + ok: sample(ramps.green, 0.5), + error: sample(ramps.red, 0.5), + warning: sample(ramps.yellow, 0.5), + info: sample(ramps.blue, 0.5), + onMedia: darkest, }; const player = { - 1: buildPlayer(rampColor(ramps.blue, 0.5)), - 2: buildPlayer(rampColor(ramps.green, 0.5)), - 3: buildPlayer(rampColor(ramps.magenta, 0.5)), - 4: buildPlayer(rampColor(ramps.orange, 0.5)), - 5: buildPlayer(rampColor(ramps.violet, 0.5)), - 6: buildPlayer(rampColor(ramps.cyan, 0.5)), - 7: buildPlayer(rampColor(ramps.red, 0.5)), - 8: buildPlayer(rampColor(ramps.yellow, 0.5)), + 1: buildPlayer(sample(ramps.blue, 0.5)), + 2: buildPlayer(sample(ramps.green, 0.5)), + 3: buildPlayer(sample(ramps.magenta, 0.5)), + 4: buildPlayer(sample(ramps.orange, 0.5)), + 5: buildPlayer(sample(ramps.violet, 0.5)), + 6: buildPlayer(sample(ramps.cyan, 0.5)), + 7: buildPlayer(sample(ramps.red, 0.5)), + 8: buildPlayer(sample(ramps.yellow, 0.5)), }; const editor = { @@ -126,16 +124,16 @@ export function createTheme( indent_guide: borderColor.muted, indent_guide_active: borderColor.secondary, line: { - active: rampColor(ramps.neutral, 1), - highlighted: rampColor(ramps.neutral, 1.25), // TODO: Where is this used? + active: sample(ramps.neutral, 1), + highlighted: sample(ramps.neutral, 1.25), // TODO: Where is this used? }, highlight: { selection: player[1].selectionColor, - occurrence: withOpacity(rampColor(ramps.neutral, 3.5), blend), - activeOccurrence: withOpacity(rampColor(ramps.neutral, 3.5), blend * 2), // TODO: Not hooked up - https://github.com/zed-industries/zed/issues/751 + occurrence: withOpacity(sample(ramps.neutral, 3.5), blend), + activeOccurrence: withOpacity(sample(ramps.neutral, 3.5), blend * 2), // TODO: Not hooked up - https://github.com/zed-industries/zed/issues/751 matchingBracket: backgroundColor[500].active, // TODO: Not hooked up - match: rampColor(ramps.violet, 0.15), - activeMatch: withOpacity(rampColor(ramps.violet, 0.4), blend * 2), // TODO: Not hooked up - https://github.com/zed-industries/zed/issues/751 + match: sample(ramps.violet, 0.15), + activeMatch: withOpacity(sample(ramps.violet, 0.4), blend * 2), // TODO: Not hooked up - https://github.com/zed-industries/zed/issues/751 related: backgroundColor[500].hovered, }, gutter: { @@ -146,59 +144,59 @@ export function createTheme( const syntax: Syntax = { primary: { - color: rampColor(ramps.neutral, 7), + color: sample(ramps.neutral, 7), weight: fontWeights.normal, }, comment: { - color: rampColor(ramps.neutral, 5), + color: sample(ramps.neutral, 5), weight: fontWeights.normal, }, punctuation: { - color: rampColor(ramps.neutral, 6), + color: sample(ramps.neutral, 6), weight: fontWeights.normal, }, constant: { - color: rampColor(ramps.neutral, 4), + color: sample(ramps.neutral, 4), weight: fontWeights.normal, }, keyword: { - color: rampColor(ramps.blue, 0.5), + color: sample(ramps.blue, 0.5), weight: fontWeights.normal, }, function: { - color: rampColor(ramps.yellow, 0.5), + color: sample(ramps.yellow, 0.5), weight: fontWeights.normal, }, type: { - color: rampColor(ramps.cyan, 0.5), + color: sample(ramps.cyan, 0.5), weight: fontWeights.normal, }, variant: { - color: rampColor(ramps.blue, 0.5), + color: sample(ramps.blue, 0.5), weight: fontWeights.normal, }, property: { - color: rampColor(ramps.blue, 0.5), + color: sample(ramps.blue, 0.5), weight: fontWeights.normal, }, enum: { - color: rampColor(ramps.orange, 0.5), + color: sample(ramps.orange, 0.5), weight: fontWeights.normal, }, operator: { - color: rampColor(ramps.orange, 0.5), + color: sample(ramps.orange, 0.5), weight: fontWeights.normal, }, string: { - color: rampColor(ramps.orange, 0.5), + color: sample(ramps.orange, 0.5), weight: fontWeights.normal, }, number: { - color: rampColor(ramps.green, 0.5), + color: sample(ramps.green, 0.5), weight: fontWeights.normal, }, boolean: { - color: rampColor(ramps.green, 0.5), + color: sample(ramps.green, 0.5), weight: fontWeights.normal, }, predictive: { @@ -206,7 +204,7 @@ export function createTheme( weight: fontWeights.normal, }, title: { - color: rampColor(ramps.yellow, 0.5), + color: sample(ramps.yellow, 0.5), weight: fontWeights.bold, }, emphasis: { @@ -218,21 +216,20 @@ export function createTheme( weight: fontWeights.bold, }, linkUri: { - color: rampColor(ramps.green, 0.5), + color: sample(ramps.green, 0.5), weight: fontWeights.normal, underline: true, }, linkText: { - color: rampColor(ramps.orange, 0.5), + color: sample(ramps.orange, 0.5), weight: fontWeights.normal, italic: true, }, }; - const shadowAlpha: NumberToken = { - value: blend, - type: "number", - }; + const shadow = withOpacity( + color(ramps.neutral(isLight ? 7 : 0).darken().hex()), + blend); return { name, @@ -243,6 +240,6 @@ export function createTheme( editor, syntax, player, - shadowAlpha, + shadow, }; } diff --git a/styles/src/themes/common/theme.ts b/styles/src/themes/common/theme.ts index 5f32844cc7114a075318f964242dc3720512a1af..fe47ce8153375ab3048008545e6ad79801d1d3ae 100644 --- a/styles/src/themes/common/theme.ts +++ b/styles/src/themes/common/theme.ts @@ -153,6 +153,6 @@ export default interface Theme { 6: Player; 7: Player; 8: Player; - }; - shadowAlpha: NumberToken; + }, + shadow: ColorToken; }