summaryrefslogtreecommitdiff
path: root/support
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-01-22 03:01:36 +0000
committerNorbert Preining <norbert@preining.info>2023-01-22 03:01:36 +0000
commit328cc6eb536476a95a84cd7de863b32cabc41b0e (patch)
tree6ce563a6c5075adedee625e648ab6e1fd86a0052 /support
parent94c0d48361932b4beca57cc5609d26a46270dfeb (diff)
CTAN sync 202301220301
Diffstat (limited to 'support')
-rw-r--r--support/texlab/CHANGELOG.md18
-rw-r--r--support/texlab/Cargo.lock186
-rw-r--r--support/texlab/Cargo.toml20
-rw-r--r--support/texlab/src/db/diagnostics.rs1
-rw-r--r--support/texlab/src/db/discovery.rs14
-rw-r--r--support/texlab/src/db/document.rs44
-rw-r--r--support/texlab/src/db/parse.rs8
-rw-r--r--support/texlab/src/db/workspace.rs49
-rw-r--r--support/texlab/src/features/build.rs20
-rw-r--r--support/texlab/src/features/folding.rs4
-rw-r--r--support/texlab/src/features/formatting.rs2
-rw-r--r--support/texlab/src/features/reference/entry.rs5
-rw-r--r--support/texlab/src/features/rename/entry.rs2
-rw-r--r--support/texlab/src/server.rs10
-rw-r--r--support/texlab/src/tests/fixture.rs4
-rw-r--r--support/texlab/src/tests/snapshots/texlab__tests__issues__issue_707.snap2
-rw-r--r--support/texlab/src/tests/text_document/completion.rs24
-rw-r--r--support/texlab/src/tests/text_document/snapshots/texlab__tests__text_document__completion__project_resolution_import.snap (renamed from support/texlab/src/tests/text_document/snapshots/texlab__tests__text_document__completion__project_resolution.snap)0
-rw-r--r--support/texlab/src/tests/text_document/snapshots/texlab__tests__text_document__completion__project_resolution_texlabroot.snap61
-rw-r--r--support/texlab/src/util/cursor.rs2
-rw-r--r--support/texlab/texlab.18
-rw-r--r--support/texlab/texlab.pdfbin26341 -> 26548 bytes
22 files changed, 291 insertions, 193 deletions
diff --git a/support/texlab/CHANGELOG.md b/support/texlab/CHANGELOG.md
index 5b12294b3e..823998dc84 100644
--- a/support/texlab/CHANGELOG.md
+++ b/support/texlab/CHANGELOG.md
@@ -5,6 +5,24 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [5.1.0] - 2023-01-21
+
+### Added
+
+- Allow manually overriding the root directory using a `texlabroot`/`.texlabroot` marker file.
+ See the wiki for more information.
+ ([#826](https://github.com/latex-lsp/texlab/issues/826), [#838](https://github.com/latex-lsp/texlab/pull/838))
+
+### Deprecated
+
+- Deprecate `texlab.rootDirectory` setting in favor of `.texlabroot` files
+
+### Fixed
+
+- Do not use `.git`, `.chktexrc`, `.latexmkrc` files/directories to determine the root directory
+ ([#826](https://github.com/latex-lsp/texlab/issues/826))
+- Fix building documents without an explicit root directory ([#837](https://github.com/latex-lsp/texlab/issues/837))
+
## [5.0.0] - 2022-12-29
### Changed
diff --git a/support/texlab/Cargo.lock b/support/texlab/Cargo.lock
index 7f205d9514..532a369b42 100644
--- a/support/texlab/Cargo.lock
+++ b/support/texlab/Cargo.lock
@@ -45,15 +45,15 @@ dependencies = [
[[package]]
name = "anyhow"
-version = "1.0.67"
+version = "1.0.68"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7724808837b77f4b4de9d283820f9d98bcf496d5692934b857a2399d31ff22e6"
+checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61"
[[package]]
name = "arc-swap"
-version = "1.5.1"
+version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "983cd8b9d4b02a6dc6ffa557262eb5858a27a0038ffffe21a0f133eaa819a164"
+checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6"
[[package]]
name = "assert_unordered"
@@ -104,18 +104,19 @@ dependencies = [
[[package]]
name = "bstr"
-version = "0.2.17"
+version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223"
+checksum = "b45ea9b00a7b3f2988e9a65ad3917e62123c38dba709b666506207be96d1790b"
dependencies = [
"memchr",
+ "serde",
]
[[package]]
name = "bumpalo"
-version = "3.11.1"
+version = "3.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba"
+checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
[[package]]
name = "cast"
@@ -186,13 +187,13 @@ dependencies = [
[[package]]
name = "clap"
-version = "4.0.29"
+version = "4.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4d63b9e9c07271b9957ad22c173bae2a4d9a81127680962039296abcd2f8251d"
+checksum = "4ec7a4128863c188deefe750ac1d1dfe66c236909f845af04beed823638dc1b2"
dependencies = [
"bitflags",
"clap_derive",
- "clap_lex 0.3.0",
+ "clap_lex 0.3.1",
"is-terminal",
"once_cell",
"strsim",
@@ -201,9 +202,9 @@ dependencies = [
[[package]]
name = "clap_derive"
-version = "4.0.21"
+version = "4.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0177313f9f02afc995627906bbd8967e2be069f5261954222dac78290c2b9014"
+checksum = "684a277d672e91966334af371f1a7b5833f9aa00b07c84e92fbce95e00208ce8"
dependencies = [
"heck",
"proc-macro-error",
@@ -223,24 +224,23 @@ dependencies = [
[[package]]
name = "clap_lex"
-version = "0.3.0"
+version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d4198f73e42b4936b35b5bb248d81d2b595ecb170da0bac7655c54eedfa8da8"
+checksum = "783fe232adfca04f90f56201b26d79682d4cd2625e0bc7290b95123afe558ade"
dependencies = [
"os_str_bytes",
]
[[package]]
name = "console"
-version = "0.15.2"
+version = "0.15.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c050367d967ced717c04b65d8c619d863ef9292ce0c5760028655a2fb298718c"
+checksum = "c3d79fbe8970a77e3e34151cc13d3b3e248aa0faaecb9f6091fa07ebefe5ad60"
dependencies = [
"encode_unicode",
"lazy_static",
"libc",
- "terminal_size",
- "winapi",
+ "windows-sys",
]
[[package]]
@@ -620,9 +620,9 @@ dependencies = [
[[package]]
name = "globset"
-version = "0.4.9"
+version = "0.4.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0a1e17342619edbc21a964c2afbeb6c820c6a2560032872f397bb97ea127bd0a"
+checksum = "029d74589adefde59de1a0c4f4732695c32805624aec7b68d91503d4dba79afc"
dependencies = [
"aho-corasick",
"bstr",
@@ -753,9 +753,9 @@ dependencies = [
[[package]]
name = "insta"
-version = "1.23.0"
+version = "1.26.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e48b08a091dfe5b09a6a9688c468fdd5b4396e92ce09e2eb932f0884b02788a4"
+checksum = "f6f0f08b46e4379744de2ab67aa8f7de3ffd1da3e275adc41fcc82053ede46ff"
dependencies = [
"console",
"globset",
@@ -780,9 +780,9 @@ dependencies = [
[[package]]
name = "io-lifetimes"
-version = "1.0.3"
+version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63c"
+checksum = "e7d6c6f8c91b4b9ed43484ad1a938e393caf35960fce7f82a040497207bd8e9e"
dependencies = [
"libc",
"windows-sys",
@@ -790,9 +790,9 @@ dependencies = [
[[package]]
name = "is-terminal"
-version = "0.4.1"
+version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "927609f78c2913a6f6ac3c27a4fe87f43e2a35367c0c4b0f8265e8f49a104330"
+checksum = "28dfb6c8100ccc63462345b67d1bbc3679177c75ee4bf59bf29c8b1d110b8189"
dependencies = [
"hermit-abi 0.2.6",
"io-lifetimes",
@@ -874,9 +874,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
-version = "0.2.138"
+version = "0.2.139"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8"
+checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79"
[[package]]
name = "linked-hash-map"
@@ -934,9 +934,9 @@ dependencies = [
[[package]]
name = "lsp-server"
-version = "0.6.0"
+version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f70570c1c29cf6654029b8fe201a5507c153f0d85be6f234d471d756bc36775a"
+checksum = "68a9b4c78d1c3f35c5864c90e9633377b5f374a4a4983ac64c30b8ae898f9305"
dependencies = [
"crossbeam-channel",
"log",
@@ -1050,19 +1050,19 @@ dependencies = [
[[package]]
name = "num_cpus"
-version = "1.14.0"
+version = "1.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f6058e64324c71e02bc2b150e4f3bc8286db6c83092132ffa3f6b1eab0f9def5"
+checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
dependencies = [
- "hermit-abi 0.1.19",
+ "hermit-abi 0.2.6",
"libc",
]
[[package]]
name = "once_cell"
-version = "1.16.0"
+version = "1.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860"
+checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66"
[[package]]
name = "oorandom"
@@ -1088,9 +1088,9 @@ dependencies = [
[[package]]
name = "parking_lot_core"
-version = "0.9.5"
+version = "0.9.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ff9f3fef3968a3ec5945535ed654cb38ff72d7495a25619e2247fb15a2ed9ba"
+checksum = "ba1ef8814b5c993410bb3adfad7a5ed269563e4a2f90c41f5d85be7fb47133bf"
dependencies = [
"cfg-if",
"libc",
@@ -1107,9 +1107,9 @@ checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
[[package]]
name = "pest"
-version = "2.5.1"
+version = "2.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc8bed3549e0f9b0a2a78bf7c0018237a2cdf085eecbbc048e52612438e4e9d0"
+checksum = "4257b4a04d91f7e9e6290be5d3da4804dd5784fafde3a497d73eb2b4a158c30a"
dependencies = [
"thiserror",
"ucd-trie",
@@ -1117,9 +1117,9 @@ dependencies = [
[[package]]
name = "pest_derive"
-version = "2.5.1"
+version = "2.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cdc078600d06ff90d4ed238f0119d84ab5d43dbaad278b0e33a8820293b32344"
+checksum = "241cda393b0cdd65e62e07e12454f1f25d57017dcc514b1514cd3c4645e3a0a6"
dependencies = [
"pest",
"pest_generator",
@@ -1127,9 +1127,9 @@ dependencies = [
[[package]]
name = "pest_generator"
-version = "2.5.1"
+version = "2.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "28a1af60b1c4148bb269006a750cff8e2ea36aff34d2d96cf7be0b14d1bed23c"
+checksum = "46b53634d8c8196302953c74d5352f33d0c512a9499bd2ce468fc9f4128fa27c"
dependencies = [
"pest",
"pest_meta",
@@ -1140,13 +1140,13 @@ dependencies = [
[[package]]
name = "pest_meta"
-version = "2.5.1"
+version = "2.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fec8605d59fc2ae0c6c1aefc0c7c7a9769732017c0ce07f7a9cfffa7b4404f20"
+checksum = "0ef4f1332a8d4678b41966bb4cc1d0676880e84183a1ecc3f4b69f03e99c7a51"
dependencies = [
"once_cell",
"pest",
- "sha1",
+ "sha2",
]
[[package]]
@@ -1261,18 +1261,18 @@ dependencies = [
[[package]]
name = "proc-macro2"
-version = "1.0.48"
+version = "1.0.50"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e9d89e5dba24725ae5678020bf8f1357a9aa7ff10736b551adbcd3f8d17d766f"
+checksum = "6ef7d57beacfaf2d8aee5937dab7b7f28de3cb8b1828479bb5de2a7106f2bae2"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
-version = "1.0.22"
+version = "1.0.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "556d0f47a940e895261e77dc200d5eadfc6ef644c179c6f5edfc105e3a2292c8"
+checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b"
dependencies = [
"proc-macro2",
]
@@ -1336,9 +1336,9 @@ dependencies = [
[[package]]
name = "regex"
-version = "1.7.0"
+version = "1.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a"
+checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733"
dependencies = [
"aho-corasick",
"memchr",
@@ -1381,9 +1381,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
[[package]]
name = "rustix"
-version = "0.36.5"
+version = "0.36.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a3807b5d10909833d3e9acd1eb5fb988f79376ff10fce42937de71a449c4c588"
+checksum = "d4fdebc4b395b7fbb9ab11e462e20ed9051e7b16e42d24042c776eca0ac81b03"
dependencies = [
"bitflags",
"errno",
@@ -1395,9 +1395,9 @@ dependencies = [
[[package]]
name = "rustversion"
-version = "1.0.9"
+version = "1.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "97477e48b4cf8603ad5f7aaf897467cf42ab4218a38ef76fb14c2d6773a6d6a8"
+checksum = "5583e89e108996506031660fe09baa5011b9dd0341b89029313006d1fb508d70"
[[package]]
name = "ryu"
@@ -1452,18 +1452,18 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
[[package]]
name = "serde"
-version = "1.0.151"
+version = "1.0.152"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "97fed41fc1a24994d044e6db6935e69511a1153b52c15eb42493b26fa87feba0"
+checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.151"
+version = "1.0.152"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "255abe9a125a985c05190d687b320c12f9b1f0b99445e608c21ba0782c719ad8"
+checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e"
dependencies = [
"proc-macro2",
"quote",
@@ -1472,9 +1472,9 @@ dependencies = [
[[package]]
name = "serde_json"
-version = "1.0.90"
+version = "1.0.91"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8778cc0b528968fe72abec38b5db5a20a70d148116cd9325d2bc5f5180ca3faf"
+checksum = "877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883"
dependencies = [
"itoa",
"ryu",
@@ -1512,10 +1512,10 @@ dependencies = [
]
[[package]]
-name = "sha1"
-version = "0.10.5"
+name = "sha2"
+version = "0.10.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3"
+checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0"
dependencies = [
"cfg-if",
"cpufeatures",
@@ -1597,9 +1597,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "1.0.106"
+version = "1.0.107"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09ee3a69cd2c7e06684677e5629b3878b253af05e4714964204279c6bc02cf0b"
+checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5"
dependencies = [
"proc-macro2",
"quote",
@@ -1622,31 +1622,21 @@ dependencies = [
[[package]]
name = "termcolor"
-version = "1.1.3"
+version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
+checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6"
dependencies = [
"winapi-util",
]
[[package]]
-name = "terminal_size"
-version = "0.1.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df"
-dependencies = [
- "libc",
- "winapi",
-]
-
-[[package]]
name = "texlab"
-version = "5.0.0"
+version = "5.1.0"
dependencies = [
"anyhow",
"assert_unordered",
"chrono",
- "clap 4.0.29",
+ "clap 4.1.1",
"criterion",
"crossbeam-channel",
"dashmap",
@@ -1787,9 +1777,9 @@ checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81"
[[package]]
name = "unicode-bidi"
-version = "0.3.8"
+version = "0.3.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992"
+checksum = "d54675592c1dbefd78cbd98db9bacd89886e1ca50692a0692baefffdeb92dd58"
[[package]]
name = "unicode-case-mapping"
@@ -1971,45 +1961,45 @@ dependencies = [
[[package]]
name = "windows_aarch64_gnullvm"
-version = "0.42.0"
+version = "0.42.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e"
+checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608"
[[package]]
name = "windows_aarch64_msvc"
-version = "0.42.0"
+version = "0.42.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4"
+checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7"
[[package]]
name = "windows_i686_gnu"
-version = "0.42.0"
+version = "0.42.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7"
+checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640"
[[package]]
name = "windows_i686_msvc"
-version = "0.42.0"
+version = "0.42.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246"
+checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605"
[[package]]
name = "windows_x86_64_gnu"
-version = "0.42.0"
+version = "0.42.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed"
+checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45"
[[package]]
name = "windows_x86_64_gnullvm"
-version = "0.42.0"
+version = "0.42.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028"
+checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463"
[[package]]
name = "windows_x86_64_msvc"
-version = "0.42.0"
+version = "0.42.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5"
+checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd"
[[package]]
name = "yaml-rust"
diff --git a/support/texlab/Cargo.toml b/support/texlab/Cargo.toml
index 62e487b394..480f16aa94 100644
--- a/support/texlab/Cargo.toml
+++ b/support/texlab/Cargo.toml
@@ -1,7 +1,7 @@
[package]
name = "texlab"
description = "LaTeX Language Server"
-version = "5.0.0"
+version = "5.1.0"
license = "GPL-3.0"
readme = "README.md"
authors = [
@@ -9,7 +9,7 @@ authors = [
"Patrick Förster <patrick.foerster@outlook.de>",
]
edition = "2021"
-rust-version = "1.60"
+rust-version = "1.64"
homepage = "https://github.com/latex-lsp/texlab"
repository = "https://github.com/latex-lsp/texlab"
documentation = "https://github.com/latex-lsp/texlab"
@@ -34,9 +34,9 @@ test = false
doctest = false
[dependencies]
-anyhow = "1.0.66"
+anyhow = "1.0.68"
chrono = { version = "0.4.23", default-features = false, features = ["std"] }
-clap = { version = "4.0.29", features = ["derive"] }
+clap = { version = "4.0.32", features = ["derive"] }
crossbeam-channel = "0.5.6"
dashmap = "5.4.0"
dirs = "4.0.0"
@@ -51,15 +51,15 @@ isocountry = "0.3.2"
itertools = "0.10.5"
log = "0.4.17"
logos = "0.12.1"
-lsp-server = "0.6.0"
+lsp-server = "0.7.0"
lsp-types = { version = "0.93.2", features = ["proposed"] }
notify = "5.0.0"
-once_cell = "1.16.0"
-regex = "1.7.0"
+once_cell = "1.17.0"
+regex = "1.7.1"
rowan = "0.15.10"
rustc-hash = "1.1.0"
-serde = "1.0.151"
-serde_json = "1.0.90"
+serde = "1.0.152"
+serde_json = "1.0.91"
serde_millis = "0.1.1"
serde_regex = "1.1.0"
serde_repr = "0.1.10"
@@ -80,7 +80,7 @@ package = "salsa-2022"
assert_unordered = "0.3.5"
criterion = { version = "0.4.0" }
env_logger = "0.10.0"
-insta = { version = "1.23.0", features = ["glob", "redactions", "json"] }
+insta = { version = "1.26.0", features = ["glob", "redactions", "json"] }
jod-thread = "0.1.2"
[profile.release]
diff --git a/support/texlab/src/db/diagnostics.rs b/support/texlab/src/db/diagnostics.rs
index 9b6691b873..81ed24fd2e 100644
--- a/support/texlab/src/db/diagnostics.rs
+++ b/support/texlab/src/db/diagnostics.rs
@@ -116,6 +116,7 @@ pub fn collect(db: &dyn Db, workspace: Workspace) -> FxHashMap<Document, Vec<Dia
.extend(diagnostics.clone());
});
}
+ Language::TexlabRoot | Language::Tectonic => {}
}
}
diff --git a/support/texlab/src/db/discovery.rs b/support/texlab/src/db/discovery.rs
index 0e1ec314f7..5986fcd888 100644
--- a/support/texlab/src/db/discovery.rs
+++ b/support/texlab/src/db/discovery.rs
@@ -226,12 +226,16 @@ fn discover_parents(db: &mut dyn Db, workspace: Workspace) -> bool {
.flatten()
.filter(|entry| entry.file_type().map_or(false, |ty| ty.is_file()))
.map(|entry| entry.path())
- .filter(|path| Language::from_path(&path) == Some(Language::Tex))
{
- if workspace.lookup_path(db, &path).is_none() {
- changed |= workspace
- .load(db, &path, Language::Tex, Owner::Server)
- .is_some();
+ if let Some(language) = Language::from_path(&path) {
+ let can_be_parent = matches!(
+ language,
+ Language::Tex | Language::TexlabRoot | Language::Tectonic
+ );
+
+ if can_be_parent && workspace.lookup_path(db, &path).is_none() {
+ changed |= workspace.load(db, &path, language, Owner::Server).is_some();
+ }
}
}
diff --git a/support/texlab/src/db/document.rs b/support/texlab/src/db/document.rs
index 186bd06ab3..4ee23a2230 100644
--- a/support/texlab/src/db/document.rs
+++ b/support/texlab/src/db/document.rs
@@ -1,7 +1,4 @@
-use std::{
- ffi::OsStr,
- path::{Path, PathBuf},
-};
+use std::path::{Path, PathBuf};
use lsp_types::Url;
use rowan::{TextRange, TextSize};
@@ -9,7 +6,7 @@ use rowan::{TextRange, TextSize};
use crate::{
db::{
diagnostics::Diagnostic,
- parse::{BibDocumentData, LogDocumentData, TexDocumentData},
+ parse::{BibDocumentData, LogDocumentData, TectonicData, TexDocumentData, TexlabRootData},
},
parser::{parse_bibtex, parse_build_log, parse_latex},
util::line_index::LineIndex,
@@ -49,14 +46,6 @@ impl Location {
let uri = self.uri(db).join(path).ok()?;
Some(Location::new(db, uri))
}
-
- pub fn into_dir(self, db: &dyn Db) -> Location {
- if self.uri(db).path().ends_with("/") {
- self.join(db, ".").unwrap()
- } else {
- self
- }
- }
}
#[salsa::input]
@@ -84,17 +73,23 @@ pub enum Language {
Tex,
Bib,
Log,
+ TexlabRoot,
+ Tectonic,
}
impl Language {
pub fn from_path(path: &Path) -> Option<Self> {
- path.extension()
- .and_then(OsStr::to_str)
- .and_then(Self::from_extension)
- }
+ let name = path.file_name()?;
+ if name.eq_ignore_ascii_case(".texlabroot") || name.eq_ignore_ascii_case("texlabroot") {
+ return Some(Self::TexlabRoot);
+ }
+
+ if name.eq_ignore_ascii_case("Tectonic.toml") {
+ return Some(Self::Tectonic);
+ }
- pub fn from_extension(extension: &str) -> Option<Self> {
- match extension.to_lowercase().as_str() {
+ let extname = path.extension()?.to_str()?;
+ match extname.to_lowercase().as_str() {
"tex" | "sty" | "cls" | "def" | "lco" | "aux" | "rnw" => Some(Self::Tex),
"bib" | "bibtex" => Some(Self::Bib),
"log" => Some(Self::Log),
@@ -106,6 +101,7 @@ impl Language {
match id {
"tex" | "latex" => Some(Self::Tex),
"bib" | "bibtex" => Some(Self::Bib),
+ "texlabroot" => Some(Self::TexlabRoot),
_ => None,
}
}
@@ -136,7 +132,7 @@ impl Document {
}
pub fn directory(self, db: &dyn Db) -> Location {
- self.location(db).into_dir(db)
+ self.location(db).join(db, ".").unwrap()
}
pub fn ancestor_dirs<'db>(self, db: &'db dyn Db) -> impl Iterator<Item = &'db Path> + 'db {
@@ -167,6 +163,14 @@ impl Document {
let data = LogDocumentData::new(db, parse_build_log(text));
DocumentData::Log(data)
}
+ Language::TexlabRoot => {
+ let data = TexlabRootData;
+ DocumentData::TexlabRoot(data)
+ }
+ Language::Tectonic => {
+ let data = TectonicData;
+ DocumentData::Tectonic(data)
+ }
}
}
diff --git a/support/texlab/src/db/parse.rs b/support/texlab/src/db/parse.rs
index d532c536a3..7187135d52 100644
--- a/support/texlab/src/db/parse.rs
+++ b/support/texlab/src/db/parse.rs
@@ -41,10 +41,18 @@ pub struct LogDocumentData {
}
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Hash)]
+pub struct TexlabRootData;
+
+#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Hash)]
+pub struct TectonicData;
+
+#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Hash)]
pub enum DocumentData {
Tex(TexDocumentData),
Bib(BibDocumentData),
Log(LogDocumentData),
+ TexlabRoot(TexlabRootData),
+ Tectonic(TectonicData),
}
impl DocumentData {
diff --git a/support/texlab/src/db/workspace.rs b/support/texlab/src/db/workspace.rs
index b8bdb27f1f..0fb9745b12 100644
--- a/support/texlab/src/db/workspace.rs
+++ b/support/texlab/src/db/workspace.rs
@@ -11,7 +11,6 @@ use rustc_hash::FxHashSet;
use crate::{
db::document::{Document, Location},
distro::FileNameDB,
- util::HOME_DIR,
Db, Options,
};
@@ -154,49 +153,31 @@ impl Workspace {
}
}
-const SPECIAL_ENTRIES: &[&str] = &[
- ".git",
- "Tectonic.toml",
- ".latexmkrc",
- "latexmkrc",
- ".chktexrc",
- "chktexrc",
-];
-
#[salsa::tracked]
impl Workspace {
#[salsa::tracked]
pub fn working_dir(self, db: &dyn Db, base_dir: Location) -> Location {
- let mut path = self
+ if let Some(dir) = self
.options(db)
.root_directory
.as_deref()
.and_then(|path| path.to_str())
- .or_else(|| {
- for dir in base_dir
- .path(db)
- .as_deref()?
- .ancestors()
- .skip(1)
- .filter(|path| Some(*path) != HOME_DIR.as_deref())
- {
- for name in SPECIAL_ENTRIES {
- if dir.join(name).exists() {
- return Some(dir.to_str()?);
- }
- }
- }
-
- None
- })
- .unwrap_or(".")
- .to_string();
-
- if !path.ends_with(".") {
- path.push('/');
+ .and_then(|path| base_dir.join(db, path))
+ {
+ return dir;
}
- base_dir.join(db, &path).unwrap_or(base_dir)
+ self.documents(db)
+ .iter()
+ .filter(|doc| matches!(doc.language(db), Language::TexlabRoot | Language::Tectonic))
+ .filter_map(|doc| doc.location(db).join(db, "."))
+ .find(|root_dir| {
+ base_dir
+ .uri(db)
+ .as_str()
+ .starts_with(root_dir.uri(db).as_str())
+ })
+ .unwrap_or(base_dir)
}
#[salsa::tracked]
diff --git a/support/texlab/src/features/build.rs b/support/texlab/src/features/build.rs
index 645f1e8e0e..69c3a7825c 100644
--- a/support/texlab/src/features/build.rs
+++ b/support/texlab/src/features/build.rs
@@ -104,12 +104,17 @@ impl Command {
.stdin(Stdio::null())
.stdout(Stdio::piped())
.stderr(Stdio::piped())
- .current_dir(self.working_dir)
+ .current_dir(&self.working_dir)
.spawn()
{
Ok(process) => process,
- Err(_) => {
- log::error!("Failed to spawn process: {:?}", self.executable);
+ Err(why) => {
+ log::error!(
+ "Failed to spawn process {:?} in directory {}: {}",
+ self.executable,
+ self.working_dir.display(),
+ why
+ );
return BuildStatus::FAILURE;
}
};
@@ -127,7 +132,7 @@ impl Command {
.recv(&line_receiver, |line| match line {
Ok(message) => {
let params = LogMessageParams { message, typ };
- client.send_notification::<LogMessage>(params).unwrap();
+ let _ = client.send_notification::<LogMessage>(params);
false
}
Err(_) => true,
@@ -170,9 +175,10 @@ fn track_output(
);
thread::spawn(move || {
- for line in reader.lines() {
- sender.send(line.unwrap()).unwrap();
- }
+ let _ = reader
+ .lines()
+ .flatten()
+ .try_for_each(|line| sender.send(line));
})
}
diff --git a/support/texlab/src/features/folding.rs b/support/texlab/src/features/folding.rs
index ea26121f3f..153b839f57 100644
--- a/support/texlab/src/features/folding.rs
+++ b/support/texlab/src/features/folding.rs
@@ -43,7 +43,9 @@ pub fn find_all(db: &dyn Db, uri: &Url) -> Option<Vec<FoldingRange>> {
.map(|node| create_range(line_index.line_col_lsp_range(node.text_range())))
.collect()
}
- DocumentData::Log(_) => return None,
+ DocumentData::Log(_) | DocumentData::TexlabRoot(_) | DocumentData::Tectonic(_) => {
+ return None;
+ }
};
Some(foldings)
diff --git a/support/texlab/src/features/formatting.rs b/support/texlab/src/features/formatting.rs
index 66375bd576..09737777fd 100644
--- a/support/texlab/src/features/formatting.rs
+++ b/support/texlab/src/features/formatting.rs
@@ -26,6 +26,6 @@ pub fn format_source_code(
BibtexFormatter::Texlab => format_bibtex_internal(db, document, options),
BibtexFormatter::Latexindent => format_with_latexindent(db, document),
},
- Language::Log => None,
+ Language::Log | Language::TexlabRoot | Language::Tectonic => None,
}
}
diff --git a/support/texlab/src/features/reference/entry.rs b/support/texlab/src/features/reference/entry.rs
index 3dfa10da5b..0c8f374cb7 100644
--- a/support/texlab/src/features/reference/entry.rs
+++ b/support/texlab/src/features/reference/entry.rs
@@ -47,7 +47,10 @@ pub(super) fn find_all_references(
results.push(ReferenceResult { document, range });
});
}
- DocumentData::Bib(_) | DocumentData::Log(_) => {}
+ DocumentData::Bib(_)
+ | DocumentData::Log(_)
+ | DocumentData::TexlabRoot(_)
+ | DocumentData::Tectonic(_) => {}
};
}
diff --git a/support/texlab/src/features/rename/entry.rs b/support/texlab/src/features/rename/entry.rs
index 79ee25ac71..67c0388f4f 100644
--- a/support/texlab/src/features/rename/entry.rs
+++ b/support/texlab/src/features/rename/entry.rs
@@ -58,7 +58,7 @@ pub(super) fn rename(context: &CursorContext<Params>) -> Option<RenameResult> {
.collect();
changes.insert(document, edits);
}
- DocumentData::Log(_) => {}
+ DocumentData::Log(_) | DocumentData::TexlabRoot(_) | DocumentData::Tectonic(_) => {}
}
}
diff --git a/support/texlab/src/server.rs b/support/texlab/src/server.rs
index 93b35c69c6..fe6f75e74a 100644
--- a/support/texlab/src/server.rs
+++ b/support/texlab/src/server.rs
@@ -678,9 +678,7 @@ impl Server {
let client = self.client.clone();
self.build_internal(uri, move |status| {
let result = BuildResult { status };
- client
- .send_response(lsp_server::Response::new_ok(id, result))
- .unwrap();
+ let _ = client.send_response(lsp_server::Response::new_ok(id, result));
})?;
Ok(())
@@ -710,7 +708,7 @@ impl Server {
let status = compiler.run();
if forward_search_after {
- sender.send(InternalMessage::ForwardSearch(uri)).unwrap();
+ let _ = sender.send(InternalMessage::ForwardSearch(uri));
}
drop(guard);
@@ -727,9 +725,7 @@ impl Server {
let client = self.client.clone();
self.forward_search_internal(uri, Some(params.position), move |status| {
let result = ForwardSearchResult { status };
- client
- .send_response(lsp_server::Response::new_ok(id, result))
- .unwrap();
+ let _ = client.send_response(lsp_server::Response::new_ok(id, result));
})?;
Ok(())
diff --git a/support/texlab/src/tests/fixture.rs b/support/texlab/src/tests/fixture.rs
index b837a9f5b0..fb2a6e6d69 100644
--- a/support/texlab/src/tests/fixture.rs
+++ b/support/texlab/src/tests/fixture.rs
@@ -15,7 +15,9 @@ enum Line<'a> {
}
fn parse_line(line: &str) -> Line {
- if let Some(name) = line.strip_prefix("%TEX ") {
+ if let Some(name) = line.strip_prefix("%ROOT ") {
+ Line::File(name, "texlabroot")
+ } else if let Some(name) = line.strip_prefix("%TEX ") {
Line::File(name, "latex")
} else if let Some(name) = line.strip_prefix("%BIB ") {
Line::File(name, "bibtex")
diff --git a/support/texlab/src/tests/snapshots/texlab__tests__issues__issue_707.snap b/support/texlab/src/tests/snapshots/texlab__tests__issues__issue_707.snap
index 1397a08fc0..38e15f8103 100644
--- a/support/texlab/src/tests/snapshots/texlab__tests__issues__issue_707.snap
+++ b/support/texlab/src/tests/snapshots/texlab__tests__issues__issue_707.snap
@@ -1,6 +1,6 @@
---
source: src/tests/issues.rs
-expression: "serde_json::from_value::<Option<Options>>(serde_json::json!({}))?.unwrap_or_default()"
+expression: "serde_json::from_value::<Option<Options>>(serde_json::json!({})).unwrap().unwrap_or_default()"
---
Options {
root_directory: None,
diff --git a/support/texlab/src/tests/text_document/completion.rs b/support/texlab/src/tests/text_document/completion.rs
index d4f256cdfb..7524eb2017 100644
--- a/support/texlab/src/tests/text_document/completion.rs
+++ b/support/texlab/src/tests/text_document/completion.rs
@@ -791,7 +791,7 @@ fn test_user_environment() {
}
#[test]
-fn test_project_resolution() {
+fn test_project_resolution_import() {
assert_items!(complete(
r#"
%TEX main.tex
@@ -810,3 +810,25 @@ fn test_project_resolution() {
"#
));
}
+
+#[test]
+fn test_project_resolution_texlabroot() {
+ assert_items!(complete(
+ r#"
+%TEX src/main.tex
+%SRC \documentclass{article}
+%SRC \include{src/foo}
+%SRC \lipsu
+%CUR ^
+%1.1 ^^^^^
+
+%TEX src/foo.tex
+%SRC \include{src/bar}
+
+%TEX src/bar.tex
+%SRC \usepackage{lipsum}
+
+%ROOT .texlabroot
+"#
+ ));
+}
diff --git a/support/texlab/src/tests/text_document/snapshots/texlab__tests__text_document__completion__project_resolution.snap b/support/texlab/src/tests/text_document/snapshots/texlab__tests__text_document__completion__project_resolution_import.snap
index 5ee9c3c207..5ee9c3c207 100644
--- a/support/texlab/src/tests/text_document/snapshots/texlab__tests__text_document__completion__project_resolution.snap
+++ b/support/texlab/src/tests/text_document/snapshots/texlab__tests__text_document__completion__project_resolution_import.snap
diff --git a/support/texlab/src/tests/text_document/snapshots/texlab__tests__text_document__completion__project_resolution_texlabroot.snap b/support/texlab/src/tests/text_document/snapshots/texlab__tests__text_document__completion__project_resolution_texlabroot.snap
new file mode 100644
index 0000000000..ecf093e33c
--- /dev/null
+++ b/support/texlab/src/tests/text_document/snapshots/texlab__tests__text_document__completion__project_resolution_texlabroot.snap
@@ -0,0 +1,61 @@
+---
+source: src/tests/text_document/completion.rs
+expression: "complete(r#\"\n%TEX src/main.tex\n%SRC \\documentclass{article}\n%SRC \\include{src/foo}\n%SRC \\lipsu\n%CUR ^\n%1.1 ^^^^^\n\n%TEX src/foo.tex\n%SRC \\include{src/bar}\n\n%TEX src/bar.tex\n%SRC \\usepackage{lipsum}\n\n%ROOT .texlabroot\n\"#)"
+---
+[
+ {
+ "detail": "lipsum.sty",
+ "kind": 1,
+ "label": "lipsum",
+ "preselect": false,
+ "sortText": "[sortText]",
+ "textEdit": {
+ "range": "[range]",
+ "newText": "lipsum"
+ }
+ },
+ {
+ "detail": "lipsum.sty",
+ "kind": 1,
+ "label": "lipsumexp",
+ "preselect": false,
+ "sortText": "[sortText]",
+ "textEdit": {
+ "range": "[range]",
+ "newText": "lipsumexp"
+ }
+ },
+ {
+ "detail": "lipsum.sty",
+ "kind": 1,
+ "label": "LipsumPar",
+ "preselect": false,
+ "sortText": "[sortText]",
+ "textEdit": {
+ "range": "[range]",
+ "newText": "LipsumPar"
+ }
+ },
+ {
+ "detail": "lipsum.sty",
+ "kind": 1,
+ "label": "LipsumProtect",
+ "preselect": false,
+ "sortText": "[sortText]",
+ "textEdit": {
+ "range": "[range]",
+ "newText": "LipsumProtect"
+ }
+ },
+ {
+ "detail": "lipsum.sty",
+ "kind": 1,
+ "label": "LipsumRestoreAll",
+ "preselect": false,
+ "sortText": "[sortText]",
+ "textEdit": {
+ "range": "[range]",
+ "newText": "LipsumRestoreAll"
+ }
+ }
+]
diff --git a/support/texlab/src/util/cursor.rs b/support/texlab/src/util/cursor.rs
index 5c3758ef46..63579c433c 100644
--- a/support/texlab/src/util/cursor.rs
+++ b/support/texlab/src/util/cursor.rs
@@ -151,7 +151,7 @@ impl<'db, T> CursorContext<'db, T> {
let right = root.token_at_offset(offset).right_biased();
Cursor::new_bib(left, right)
}
- DocumentData::Log(_) => None,
+ DocumentData::Log(_) | DocumentData::TexlabRoot(_) | DocumentData::Tectonic(_) => None,
};
Some(Self {
diff --git a/support/texlab/texlab.1 b/support/texlab/texlab.1
index 25dd817248..edbd84b65c 100644
--- a/support/texlab/texlab.1
+++ b/support/texlab/texlab.1
@@ -1,7 +1,7 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
-.TH TEXLAB "1" "December 2022" "texlab 5.0.0" "User Commands"
+.TH TEXLAB "1" "January 2023" "texlab 5.1.0" "User Commands"
.SH NAME
-texlab \- manual page for texlab 5.0.0
+texlab \- manual page for texlab 5.1.0
.SH SYNOPSIS
.B texlab
[\fI\,OPTIONS\/\fR]
@@ -19,7 +19,7 @@ No output printed to stderr
Write the logging output to FILE
.TP
\fB\-h\fR, \fB\-\-help\fR
-Print help information
+Print help
.TP
\fB\-V\fR, \fB\-\-version\fR
-Print version information
+Print version
diff --git a/support/texlab/texlab.pdf b/support/texlab/texlab.pdf
index b4749920ec..cebcaf4269 100644
--- a/support/texlab/texlab.pdf
+++ b/support/texlab/texlab.pdf
Binary files differ